From 10e86f91d60bd7e1c343553935231eaa46174afe Mon Sep 17 00:00:00 2001 From: liweidong-hj Date: Wed, 18 Mar 2026 10:00:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E8=89=BA=E4=BF=AE=E6=94=B9=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/dashboard/pojo/vo/DsPartTreeVO.java | 5 +- .../desk/dashboard/mapper/DsPartMapper.java | 2 + .../mapper/DsPartRelationMapper.java | 6 +- .../desk/dashboard/mapper/PartMapper.xml | 9 +++ .../dashboard/mapper/PartRelationMapper.xml | 46 +++++++++--- .../service/IDsPartRelationService.java | 5 +- .../dashboard/service/IDsPartService.java | 12 ++++ .../service/IDsPartVersionService.java | 8 +++ .../impl/DsPartRelationServiceImpl.java | 4 +- .../service/impl/DsPartServiceImpl.java | 57 ++++++++++++--- .../impl/DsPartsVersionServiceImpl.java | 71 ++++++++++++++++++- .../service/impl/DsTaskingServiceImpl.java | 30 ++++---- .../desk/iot/mapper/EpLineElectricMapper.xml | 3 +- 13 files changed, 216 insertions(+), 42 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartTreeVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartTreeVO.java index 5349b3d3..ce6f723b 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartTreeVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartTreeVO.java @@ -24,6 +24,7 @@ * Author: Chill Zhuang (bladejava@qq.com) */ package org.springblade.desk.dashboard.pojo.vo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.ArrayList; import java.util.List; @@ -39,6 +40,7 @@ public class DsPartTreeVO { private String partCode; private String partName; private String docLink; + private Double quota; private List children; /** @@ -49,10 +51,11 @@ public class DsPartTreeVO { } - public DsPartTreeVO(String partCode, String partName, String docLink) { + public DsPartTreeVO(String partCode, String partName, String docLink,Double quota) { this(); this.partCode = partCode; this.partName = partName; this.docLink = docLink; + this.quota = quota; } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java index 2ff60108..6095ff0f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java @@ -151,4 +151,6 @@ public interface DsPartMapper extends BaseMapper { List selectPartByDate(@Param("startDate") Date startDate,@Param("endDate") Date endDate); List selectDsPartSub(@Param("partCode") String partCode); + + List selectListPartByCodeLike(@Param("zPartCode") String zPartCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java index d2b42638..3ae4c87b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java @@ -63,5 +63,9 @@ public interface DsPartRelationMapper extends BaseMapper { List selectDsPartRelationByPartId(@Param("partId")Long partId); - List selectDsPartRelationByPartCodeAndChildPartCode(@Param("bPartCode")String bPartCode, @Param("zPartCode")String zPartCode); + List selectDsPartRelationByPartCodeAndChildPartCode(@Param("bPartCode")String bPartCode, + @Param("zPartCode")String zPartCode, + @Param("bPartVersion")String bPartVersion, + @Param("zPartVersion") String zPartVersion, + @Param("zPartIdList")List zPartIdList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml index d0385381..b4064681 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml @@ -388,6 +388,15 @@ src.MATERIAL, src.PLATE_CODE, src.SIN_TER_TYPE FROM TOOL_MES.DS_PART_SUB src where src.PART_CODE = #{partCode} + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml index 50977c24..15aed665 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml @@ -36,25 +36,49 @@ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java index 22c6b879..92e59235 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java @@ -70,7 +70,10 @@ public interface IDsPartRelationService extends BaseService selectDsPartRelationByPartCodeAndChildPartCode(String bPartCode, String zPartCode); + List selectDsPartRelationByPartCodeAndChildPartCode + (String bPartCode, String zPartCode, String bPartVersion, String zPartVersion,List zPartId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java index 8ec92025..01a5b1ab 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java @@ -240,4 +240,16 @@ public interface IDsPartService extends BaseService { List selectDsPartSub(String partCode); List selectDsPartVersionByIds(List idList); + + /** + * 根据 零件号 b号 工艺级别 版本号 查询零件工艺信息 + * 版本号为空查最新版本 + * 工艺级别为空返回二级工艺 + * @param partCode 零件号 + * @param roamNo B号 + * @param rank 工艺级别 + * @param partVersion 版本号 + * @return + */ + boolean selectPartCraft(String partCode,String roamNo,String rank,String partVersion); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartVersionService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartVersionService.java index bea2d201..0921427e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartVersionService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartVersionService.java @@ -26,6 +26,7 @@ package org.springblade.desk.dashboard.service; import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; import java.util.List; @@ -66,4 +67,11 @@ public interface IDsPartVersionService extends BaseService * @return */ DsPartVersionEntity selectByPartCodeAndPartVersion(String partCode, String partVersion); + + /** + * 获取零件的最新版本号 + * @param dsPartList + * @return + */ + List selectListByPartCode(List dsPartList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java index b0f63701..7fef9de9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java @@ -74,8 +74,8 @@ public class DsPartRelationServiceImpl extends BaseServiceImpl selectDsPartRelationByPartCodeAndChildPartCode(String bPartCode, String zPartCode) { - return partRelationMapper.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode); + public List selectDsPartRelationByPartCodeAndChildPartCode(String bPartCode, String zPartCode ,String bPartVersion, String zPartVersion,List zPartIdList) { + return partRelationMapper.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode,bPartVersion,zPartVersion,zPartIdList); } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java index 9a981690..147cd8e5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java @@ -284,11 +284,34 @@ public class DsPartServiceImpl extends BaseServiceImpl sinteringPart(String bPartCode, String zPartCode) { if (!StringUtils.isEmpty(bPartCode) && !StringUtils.isEmpty(zPartCode)) { - return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode); + List partVersionEntityList = partVersionService.selectByPartCode(bPartCode); + Optional maxEntity = partVersionEntityList.stream() + .filter(entity -> entity.getPartVersion() != null) + .max(Comparator.comparing(DsPartVersionEntity::getPartVersion)); + + if (maxEntity.isPresent()) { + String bPartVersion = maxEntity.get().getPartVersion(); + return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode,bPartVersion,null,null); + } + } if (!StringUtils.isEmpty(zPartCode)) { - return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(null, zPartCode); + //模糊查询零件 + List dsPartList = dsPartMapper.selectListPartByCodeLike(zPartCode); + //获取这些零件的最新版本号 + List partVersionEntityList = partVersionService.selectListByPartCode(dsPartList); + + // 提取零件ID列表 + List zPartIdList = partVersionEntityList.stream() + .map(DsPartVersionEntity::getPartId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + + return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(null, null,null,null,zPartIdList); + + } return new ArrayList<>(); @@ -297,14 +320,21 @@ public class DsPartServiceImpl extends BaseServiceImpl getPartTreeList(String partCode) { - // 1. 联表查询所有相关关系 - List relations = dsPartMapper.selectPartRelations(partCode); - if (relations.isEmpty()) { - return new ArrayList<>(); + List partVersionEntityList = partVersionService.selectByPartCode(partCode); + Optional maxEntity = partVersionEntityList.stream() + .filter(entity -> entity.getPartVersion() != null) + .max(Comparator.comparing(DsPartVersionEntity::getPartVersion)); + + if (maxEntity.isPresent()) { + String bPartVersion = maxEntity.get().getPartVersion(); + List partBomVOList = partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(partCode, null, bPartVersion, null, null); + + // 2. 构建树形结构 + return buildTreeFromRelations(partBomVOList); + } - // 2. 构建树形结构 - return buildTreeFromRelations(relations); + return new ArrayList<>(); } @Override @@ -407,7 +437,8 @@ public class DsPartServiceImpl extends BaseServiceImpl selectDsPartVersionByIds(List idList) { return dsPartMapper.selectDsPartVersionByIds(idList); } + + @Override + public boolean selectPartCraft(String partCode, String roamNo, String rank, String partVersion) { + return false; + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartsVersionServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartsVersionServiceImpl.java index b201d61b..d353a7f4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartsVersionServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartsVersionServiceImpl.java @@ -27,6 +27,8 @@ package org.springblade.desk.dashboard.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.desk.dashboard.excel.DsSimilarPartsExcel; @@ -43,8 +45,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 相似零件表 服务实现类 @@ -52,6 +54,7 @@ import java.util.List; * @author BladeX * @since 2025-11-21 */ +@Slf4j @Service public class DsPartsVersionServiceImpl extends BaseServiceImpl implements IDsPartVersionService { @@ -77,4 +80,68 @@ public class DsPartsVersionServiceImpl extends BaseServiceImpl selectListByPartCode(List dsPartList) { + // 提取零件ID列表 + List partIds = dsPartList.stream() + .map(DsPartEntity::getId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + if (partIds.isEmpty()) { + return Collections.emptyList(); + } + + // 查询零件版本号 + List partVersionEntityList = partVersionMapper.selectByPartIds(partIds); + + // 2. 按partCode分组,每组内按版本号转Integer降序排序,取最大值 + Map partCodeToMaxVersionMap = partVersionEntityList.stream() + // 过滤无效数据:partCode为空 或 版本号非数字的记录 + .filter(entity -> isValidPartVersionEntity(entity)) + // 分组并保留每组内版本号最大的记录 + .collect(Collectors.toMap( + DsPartVersionEntity::getPartCode, + entity -> entity, + // 合并规则:版本号转Integer后比较,保留更大的 + (existingEntity, newEntity) -> { + int existingVersion = Integer.parseInt(existingEntity.getPartVersion().trim()); + int newVersion = Integer.parseInt(newEntity.getPartVersion().trim()); + return newVersion > existingVersion ? newEntity : existingEntity; + } + )); + + // 3. 将Map的值转为指定返回类型 List + List resultList = new ArrayList<>(partCodeToMaxVersionMap.values()); + + return resultList; + } + + /** + * 校验实体有效性:确保partCode非空 + 版本号可转为Integer + */ + private static boolean isValidPartVersionEntity(DsPartVersionEntity entity) { + if (entity == null) { + return false; + } + // 校验partCode非空 + if (StringUtils.isBlank(entity.getPartCode())) { + log.warn("零件版本实体partCode为空,过滤该记录"); + return false; + } + // 校验版本号非空且可转为Integer + String versionStr = entity.getPartVersion(); + if (StringUtils.isBlank(versionStr)) { + log.warn("零件编码{}的版本号为空,过滤该记录", entity.getPartCode()); + return false; + } + try { + Integer.parseInt(versionStr.trim()); + return true; + } catch (NumberFormatException e) { + log.warn("零件编码{}的版本号{}非有效数字,过滤该记录", entity.getPartCode(), versionStr); + return false; + } + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java index 0e497aaa..d9c583da 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java @@ -525,9 +525,11 @@ public class DsTaskingServiceImpl extends BaseServiceImpl idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(idList)) { List dsPartEntityList = partService.selectDsPartVersionByIds(idList); -// for (DsPartVersionVO dsPartVersionVO : dsPartEntityList) { + for (DsPartVersionVO dsPartVersionVO : dsPartEntityList) { // dsPartVersionVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVersionVO.getUpdateUser())).getData().getUser().getName()); -// } + DsPartVersionEntity partVersionEntity = partVersionService.selectByPartId(dsPartVersionVO.getId()); + dsPartVersionVO.setPartVersion(partVersionEntity.getPartVersion()); + } dsTaskingVO.setChildren(dsPartEntityList); } } @@ -712,9 +714,9 @@ public class DsTaskingServiceImpl extends BaseServiceImpl dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), rank); - if(CollectionUtils.isEmpty(dsCraftVOList)){ - throw new ServiceException("零件工艺信息有误 请检查该零件是否有工艺信息"); - } +// if(CollectionUtils.isEmpty(dsCraftVOList)){ +// throw new ServiceException("零件工艺信息有误 请检查该零件是否有工艺信息"); +// } if (!CollectionUtils.isEmpty(dsCraftVOList)) { for (DsCraftVO craftVO : dsCraftVOList) { @@ -1447,20 +1449,24 @@ public class DsTaskingServiceImpl extends BaseServiceImpl taskingList = taskingMapper.selectOldMesTasking(startTime, endTime); if (CollectionUtils.isEmpty(taskingList)) { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.xml index e19103c6..ae834db2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.xml @@ -24,13 +24,12 @@ SELECT * FROM ( SELECT - ID, DEVICE_ID, WORK_SLOT, ELECTRIC, CREATE_TIME, PUSH_DATA - FROM EP_LINE_ELECTRIC + FROM P_RB_EP_LINE_ELECTRIC WHERE DEVICE_ID = #{deviceCode} AND WORK_SLOT = #{batchNo} AND CREATE_TIME BETWEEN #{startDate}