From 83168956907f1484cff2e01aff59b769a6426794 Mon Sep 17 00:00:00 2001 From: liweidong-hj Date: Wed, 18 Mar 2026 17:33:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BE=9B=E5=B7=A5=E8=89=BA=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/entity/DsTaskingEntity.java | 10 +- .../pojo/enums/PartCraftStatusEnum.java | 32 ++++ .../desk/dashboard/pojo/vo/PartCraftVO.java | 28 ++++ .../controller/DsPartController.java | 14 ++ .../desk/dashboard/mapper/CraftMapper.xml | 11 ++ .../desk/dashboard/mapper/DsCraftMapper.java | 4 + .../mapper/PrReworkProcessMapper.java | 11 +- .../dashboard/mapper/ReworkProcessMapper.xml | 8 + .../dashboard/service/IDsCraftService.java | 15 ++ .../dashboard/service/IDsPartService.java | 24 ++- .../service/IPrReworkProcessService.java | 10 ++ .../service/impl/DsCraftServiceImpl.java | 10 ++ .../service/impl/DsPartServiceImpl.java | 148 +++++++++++++++++- .../service/impl/DsTaskingServiceImpl.java | 20 +-- .../impl/PrReworkProcessServiceImpl.java | 7 +- 15 files changed, 328 insertions(+), 24 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/enums/PartCraftStatusEnum.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/PartCraftVO.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskingEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskingEntity.java index a0789fdb..950ad9a2 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskingEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskingEntity.java @@ -160,11 +160,11 @@ public class DsTaskingEntity extends BaseEntity { @Schema(description = "工艺完成时间") private Date craftTime; - /** - * 工艺级别 - */ - @Schema(description = "工艺级别") - private String rank; +// /** +// * 工艺级别 +// */ +// @Schema(description = "工艺级别") +// private String rank; /** diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/enums/PartCraftStatusEnum.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/enums/PartCraftStatusEnum.java new file mode 100644 index 00000000..22dc754d --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/enums/PartCraftStatusEnum.java @@ -0,0 +1,32 @@ +package org.springblade.desk.dashboard.pojo.enums; + +/** + * @author: liweidong + * @create: 2026-03-18 + */ +public enum PartCraftStatusEnum { + SUCCESS("0", "查询成功"), + PART_CODE_EMPTY("-6", "partCode不能为空"), + ROAM_NO_EMPTY("-7", "roamNo不能为空"), + PART_NOT_EXIST("-1", "零件信息为空"), + PART_EXPIRED("-2", "零件超期"), + NO_CRAFT_INFO("-3", "没有工艺信息,创建维护任务"), + NO_PROCEDURE_INFO("-4", "没有工序信息"), + NO_CRAFT_RANK_INFO("-5", "没有工艺等级信息"); + + private final String code; + private final String msg; + + PartCraftStatusEnum(String code, String msg) { + this.code = code; + this.msg = msg; + } + + public String getCode() { + return code; + } + + public String getMsg() { + return msg; + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/PartCraftVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/PartCraftVO.java new file mode 100644 index 00000000..2b250d9f --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/PartCraftVO.java @@ -0,0 +1,28 @@ +package org.springblade.desk.dashboard.pojo.vo; + +import lombok.Data; +import org.springblade.desk.dashboard.pojo.entity.DsCraftEntity; + + +@Data +public class PartCraftVO { + + + private String code; + + private DsCraftEntity craft; + + + public static PartCraftVO build(String code, DsCraftEntity craft) { + PartCraftVO vo = new PartCraftVO(); + vo.setCode(code); + vo.setCraft(craft); + return vo; + } + + public static PartCraftVO build(String code) { + PartCraftVO vo = new PartCraftVO(); + vo.setCode(code); + return vo; + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartController.java index 6211bad6..5c78154d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartController.java @@ -262,5 +262,19 @@ public class DsPartController extends BladeController { } + /** + * 测试接口 + */ + @GetMapping("/test") + public R test(@RequestParam String partCode, + @RequestParam String roamNo, + @RequestParam String rank, + @RequestParam String partVersion) { + + return R.data(dsPartService.selectPartCraft(partCode,roamNo,rank,partVersion)); + } + + + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml index 24b85bbe..6d8d2556 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml @@ -86,5 +86,16 @@ resultType="org.springblade.desk.dashboard.pojo.entity.DsCraftEntity"> select * from P_RB_SYNC_CRAFT where PART_ID = #{oldMesPartId} + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java index 23edd3eb..62f21014 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java @@ -83,4 +83,8 @@ public interface DsCraftMapper extends BaseMapper { DsCraftEntity selectDsCraftByPartCodeAndVersion(@Param("partCode")Long partCode,@Param("partVersion")String partVersion); List selectOldMesCraftByOldMesPartId(@Param("oldMesPartId") Long oldMesPartId); + + List selectDsCraftByPartIdAndRoamNo(@Param("partId") Long partId,@Param("roamNo") String roamNo); + + DsCraftEntity selectDscraftByReworkOrder(@Param("changeNo") String changeNo); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PrReworkProcessMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PrReworkProcessMapper.java index 75931eaf..eb64af32 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PrReworkProcessMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PrReworkProcessMapper.java @@ -60,7 +60,12 @@ public interface PrReworkProcessMapper extends BaseMapper */ List exportPrReworkProcess(@Param("ew") Wrapper queryWrapper); - List selectPrReworkProcess(@Param("reworkOrder")String reworkOrder, - @Param("partCode")String partCode, - @Param("batchNo")String batchNo); + List selectPrReworkProcess(@Param("reworkOrder") String reworkOrder, + @Param("partCode") String partCode, + @Param("batchNo") String batchNo); + + List selectPrReworkProcessReworkNo(@Param("reworkOrder") String reworkOrder, + @Param("partCode") String partCode, + @Param("batchNo") String batchNo, + @Param("reworkNo") String reworkNo); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ReworkProcessMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ReworkProcessMapper.xml index 215614cf..7739d0fc 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ReworkProcessMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ReworkProcessMapper.xml @@ -52,5 +52,13 @@ and PART_CODE = #{partCode} and BATCH_NO = #{batchNo} + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java index acc10646..3bb3705c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java @@ -191,4 +191,19 @@ public interface IDsCraftService extends BaseService { * @return */ List selectOldMesCraftByOldMesPartId(Long oldMesPartId); + + /** + * 根据零件ID和B号查询工艺 + * @param partId + * @param roamNo + * @return + */ + List selectDsCraftByPartIdAndRoamNo(Long partId, String roamNo); + + /** + * 获取返工工艺 + * @param changeNo + * @return + */ + DsCraftEntity getReworkCraft(String changeNo); } 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 01a5b1ab..6374de1c 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 @@ -29,9 +29,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import org.springblade.desk.dashboard.excel.DsPartExcel; -import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; -import org.springblade.desk.dashboard.pojo.entity.DsPartSub; -import org.springblade.desk.dashboard.pojo.entity.DsProcessProjectEntity; +import org.springblade.desk.dashboard.pojo.entity.*; import org.springblade.desk.dashboard.pojo.vo.*; import java.util.List; @@ -251,5 +249,23 @@ public interface IDsPartService extends BaseService { * @param partVersion 版本号 * @return */ - boolean selectPartCraft(String partCode,String roamNo,String rank,String partVersion); + PartCraftVO selectPartCraft(String partCode, String roamNo, String rank, String partVersion); + + + /** + * 根据 零件号 返工单号 查询零件工艺信息 + * @param partCode 零件号 + * @param reworkOrder 返工单号 + * @param batchNo 批次号 + * @param reworkNo 路线编号 + * @return + */ + List selectReworkPartCraft(String partCode, String reworkOrder,String batchNo,String reworkNo); + + /** + * 获取零件最新版本号 + * @param partCode + * @return + */ + DsPartVersionEntity getNewPartVersion(String partCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IPrReworkProcessService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IPrReworkProcessService.java index ceda52ed..2e8e2df1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IPrReworkProcessService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IPrReworkProcessService.java @@ -71,4 +71,14 @@ public interface IPrReworkProcessService extends BaseService selectPrReworkProcess(String reworkOrder, String partCode, String batchNo); JSONArray treeProcess(ReworkProcessDTO prReworkProcess); + + /** + * 获取返工工序 + * @param reworkOrder + * @param partCode + * @param batchNo + * @param reworkNo + * @return + */ + List selectPrReworkProcess(String reworkOrder, String partCode, String batchNo,String reworkNo); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java index 1ece1de8..e1757aa2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java @@ -357,4 +357,14 @@ public class DsCraftServiceImpl extends BaseServiceImpl selectDsCraftByPartIdAndRoamNo(Long partId, String roamNo) { + return craftMapper.selectDsCraftByPartIdAndRoamNo(partId,roamNo); + } + + @Override + public DsCraftEntity getReworkCraft(String changeNo) { + return craftMapper.selectDscraftByReworkOrder(changeNo); + } } 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 147cd8e5..868aa236 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 @@ -1,9 +1,11 @@ package org.springblade.desk.dashboard.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.extern.slf4j.Slf4j; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; @@ -13,6 +15,7 @@ import org.springblade.desk.dashboard.constant.TaskingConstant; import org.springblade.desk.dashboard.excel.DsPartExcel; import org.springblade.desk.dashboard.mapper.DsPartMapper; import org.springblade.desk.dashboard.pojo.entity.*; +import org.springblade.desk.dashboard.pojo.enums.PartCraftStatusEnum; import org.springblade.desk.dashboard.pojo.vo.*; import org.springblade.desk.dashboard.service.*; import org.springblade.desk.dashboard.utils.DateUtils; @@ -40,6 +43,7 @@ import java.util.stream.Collectors; * @author BladeX * @since 2025-11-12 */ +@Slf4j @Service public class DsPartServiceImpl extends BaseServiceImpl implements IDsPartService { @@ -85,6 +89,9 @@ public class DsPartServiceImpl extends BaseServiceImpl selectDsPartPage(IPage page, DsPartVO dsPart) { @@ -574,7 +581,144 @@ public class DsPartServiceImpl extends BaseServiceImpl dsCraftList = craftService.selectDsCraftByPartIdAndRoamNo(partEntity.getId(), roamNo); + + // 5. 如果没有工艺,创建维护任务并返回null + if (CollectionUtils.isEmpty(dsCraftList)) { + createMaintainTask(partEntity, partVersionEntity); + return PartCraftVO.build(PartCraftStatusEnum.NO_CRAFT_INFO.getCode()); + } + + // 6. 按优先级查询工艺 + DsCraftEntity craftByRank = selectCraftByPriority(dsCraftList, rank); + if (craftByRank == null) { + return PartCraftVO.build(PartCraftStatusEnum.NO_CRAFT_RANK_INFO.getCode()); + } + + // 7. 查询工序 + List processEntities = processService.selectDsProcessByCraftId(craftByRank.getId()); + if (CollectionUtils.isEmpty(processEntities)) { + return PartCraftVO.build(PartCraftStatusEnum.NO_PROCEDURE_INFO.getCode()); + } + + // 8. 返回工艺 + return PartCraftVO.build(PartCraftStatusEnum.SUCCESS.getCode(),craftByRank); + + } + + @Override + public List selectReworkPartCraft(String partCode, String reworkOrder,String batchNo,String reworkNo) { + if (StringUtils.isEmpty(partCode) || StringUtils.isEmpty(reworkOrder) || StringUtils.isEmpty(batchNo) || StringUtils.isEmpty(reworkNo) ) { + return null; + } + // 1.查询返工工艺 + DsCraftEntity craftEntity = craftService.getReworkCraft(reworkOrder); + if (Objects.isNull(craftEntity)) { + return null; + } + + // 2.查询返工工序 + List reworkProcessEntityList = prReworkProcessService.selectPrReworkProcess(reworkOrder, partCode, batchNo,reworkNo); + if(CollectionUtils.isEmpty(reworkProcessEntityList)){ + return null; + } + + return reworkProcessEntityList; } + + @Override + public DsPartVersionEntity getNewPartVersion(String partCode) { + if (StringUtils.isEmpty(partCode)) { + List partVersionEntityList = partVersionService.selectByPartCode(partCode); + Optional maxEntity = partVersionEntityList.stream() + .filter(entity -> entity.getPartVersion() != null) + .max(Comparator.comparing(DsPartVersionEntity::getPartVersion)); + + if (maxEntity.isPresent()) { + return maxEntity.get(); + } + } + return null; + } + + /** + * 创建维护任务 + */ + private void createMaintainTask(DsPartEntity partEntity, DsPartVersionEntity partVersionEntity) { + DsTaskingEntity dsTaskingEntity = new DsTaskingEntity(); + dsTaskingEntity.setPartCode(partEntity.getPartCode()); + dsTaskingEntity.setPartName(partEntity.getPartName()); + dsTaskingEntity.setTaskStatus(TaskingConstant.TASK_STATUS_WAIT); + dsTaskingEntity.setTaskType(TaskingConstant.MAINTAIN_TASK); + if (partVersionEntity != null) { + dsTaskingEntity.setVersion(partVersionEntity.getPartVersion()); + } + boolean taskingSave = taskingService.save(dsTaskingEntity); + if (!taskingSave) { + log.error("创建维护任务失败,零件编码:{}", partEntity.getPartCode()); + } + } + + /** + * 根据优先级选择工艺 + * 优先级规则:指定级别 > 未指定时按 2级→1级→3级 + */ + private DsCraftEntity selectCraftByPriority(List craftList, String rank) { + if (!StringUtils.isEmpty(rank)) { + // 指定了工艺级别,直接返回对应级别工艺 + return getCraftByRank(craftList, rank); + } + + // 未指定级别,按 2级→1级→3级 优先级查询 + String[] priorityRanks = {"2", "1", "3"}; + for (String priorityRank : priorityRanks) { + DsCraftEntity craft = getCraftByRank(craftList, priorityRank); + if (craft != null) { + return craft; + } + } + + return null; + } + + /** + * 从工艺列表中筛选指定级别的工艺 + */ + private DsCraftEntity getCraftByRank(List craftList, String rank) { + if (CollectionUtils.isEmpty(craftList) || StringUtils.isEmpty(rank)) { + return null; + } + return craftList.stream() + .filter(craft -> rank.equals(craft.getRank())) + .findFirst() + .orElse(null); + } + + + + } 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 d9c583da..342ea7b6 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 @@ -322,14 +322,14 @@ public class DsTaskingServiceImpl extends BaseServiceImpl selectPrReworkProcess(String reworkOrder, String partCode, String batchNo) { - return reworkProcessMapper.selectPrReworkProcess(reworkOrder,partCode,batchNo); + return reworkProcessMapper.selectPrReworkProcess(reworkOrder, reworkOrder,partCode); } @Override @@ -76,4 +76,9 @@ public class PrReworkProcessServiceImpl extends BaseServiceImpl selectPrReworkProcess(String reworkOrder, String partCode, String batchNo, String reworkNo) { + return reworkProcessMapper.selectPrReworkProcessReworkNo(reworkOrder,partCode,batchNo,reworkNo); + } + }