From d2239e5711466087e0e4d9002d6a46b4cbb7a410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Fri, 12 Jun 2026 11:25:21 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=90=8C=E6=A7=BD=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/produce/pojo/vo/MesMacToolUseVO.java | 10 ++++++++++ .../desk/produce/mapper/MacToolUseMapper.xml | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMacToolUseVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMacToolUseVO.java index 8aaa5dc30..32a97526e 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMacToolUseVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMacToolUseVO.java @@ -24,6 +24,9 @@ public class MesMacToolUseVO { @Schema(description = "车间订单号") private String woCode; + @Schema(description = "流程卡号") + private String cardNo; + @Schema(description = "物料号") private String partCode; @@ -51,4 +54,11 @@ public class MesMacToolUseVO { @Schema(description = "挂次号") private String hangNum; + @Schema(description = "工序号") + private String orders; + + @Schema(description = "工序名称") + private String ppsName; + + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml index e9cf85bda..30b4c02dc 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml @@ -129,6 +129,9 @@ + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/WorkPlanItemServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/WorkPlanItemServiceImpl.java index 0f64c17d3..f6822c2c5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/WorkPlanItemServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/WorkPlanItemServiceImpl.java @@ -3,9 +3,13 @@ */ package org.springblade.desk.quality.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; 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.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.jsonwebtoken.lang.Collections; import jakarta.annotation.Resource; @@ -13,14 +17,17 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; 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.core.tool.api.R; +import org.springblade.desk.basic.service.ICraftAbilityService; import org.springblade.desk.basic.util.IdUtil; +import org.springblade.desk.produce.mapper.WorkOrderMapper; import org.springblade.desk.produce.mapper.WorkPlanMapper; +import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkPlan; -import org.springblade.desk.quality.constant.InspectionItemConst; +import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; +import org.springblade.desk.produce.service.IMacToolUseService; import org.springblade.desk.quality.excel.WorkPlanItemExcel; import org.springblade.desk.quality.mapper.WorkPlanItemMapper; import org.springblade.desk.quality.pojo.entity.InspectionItem; @@ -35,13 +42,14 @@ import org.springblade.desk.quality.service.*; import org.springblade.desk.quality.wrapper.InspectionItemWrapper; import org.springblade.desk.quality.wrapper.StandardWrapper; import org.springblade.desk.quality.wrapper.WorkPlanItemWrapper; +import org.springblade.scheduling.pojo.entity.CraftAbilityEntity; import org.springblade.system.feign.IDictClient; import org.springblade.system.feign.IUserClient; +import org.springblade.system.pojo.entity.Dict; import org.springblade.system.pojo.entity.UserInfo; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -73,6 +81,13 @@ public class WorkPlanItemServiceImpl extends BaseServiceImpl selectWorkPlanItemPage(IPage page, WorkPlanItemVO workPlanItem) { @@ -277,8 +292,93 @@ public class WorkPlanItemServiceImpl extends BaseServiceImpl listVO = baseMapper.listShareByWpiId(wpiId); for (WorkPlanItemVO vo : listVO) { setVOValue(vo); + vo.setCheckName("工序检验"); + } + List itemVOS = listShareBySameSlot(wpiId); + if (CollectionUtils.isNotEmpty(itemVOS)) { + for (WorkPlanItemVO vo : itemVOS) { + setVOValue(vo); + vo.setCheckName("同槽订单"); + } } return listVO; } + /** + * 同槽订单共享查询 + * + * @param wpiId + * @return + */ + private List listShareBySameSlot(Long wpiId) { + WorkPlanItem workPlanItem = this.getById(wpiId); + if (workPlanItem == null) { + return null; + } + WorkPlan workPlan = workPlanMapper.selectById(workPlanItem.getWpId()); + if (workPlan == null) { + return null; + } + if (workPlan != null && workPlan.getFrontWpId() != null) { + Long currentFrontWpId = workPlan.getFrontWpId(); + //(A→B→A) + int maxIterations = 100; + int iterations = 0; + while (Objects.nonNull(currentFrontWpId) && iterations < maxIterations) { + WorkPlan frontWorkPlan = workPlanMapper.selectById(currentFrontWpId); + if (BeanUtil.isEmpty(frontWorkPlan)) { + break; + } + // 关键工序 + if (StrUtil.isNotEmpty(frontWorkPlan.getCruxProcess()) && "1".equals(frontWorkPlan.getCruxProcess().trim())) { + workPlan = frontWorkPlan; + break; + } + currentFrontWpId = frontWorkPlan.getFrontWpId(); + iterations++; + } + } + if (null != workPlan) { + String partCode = null; + if (workPlan.getCaId() != null) { + CraftAbilityEntity craftAbility = craftAbilityService.getById(workPlan.getCaId()); + Map dictMap = getProcessCapabilityTypeMap(); + String wxLimitName = dictMap.get(craftAbility.getWxLimit()); + boolean checkCaType = !StringUtils.isEmpty(wxLimitName) && (wxLimitName.contains("镀金") || wxLimitName.contains("镀银")); + WorkOrder workOrder = workOrderMapper.selectById(workPlan.getWoId()); + if (workOrder == null) { + return null; + } + if (checkCaType) { + partCode = workOrder.getPartCode(); + } + } + List list = macToolUseService.listSlotInfo(workPlan); + if (CollectionUtils.isNotEmpty(list)) { + List collect = list.stream().filter(vo -> !vo.getWpId().equals(workPlanItem.getWpId())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(collect)) { + List wpIds = collect.stream().map(vo -> vo.getWpId()).collect(Collectors.toList()); + List itemVOS = baseMapper.listShareBySameSlot(wpIds, "镀后检验", partCode, "厚度检测"); + return itemVOS; + } + } + } + return null; + } + + /** + * 查询工艺能力类型 + * + * @return + */ + private Map getProcessCapabilityTypeMap() { + Map dictMap = new HashMap<>(); + R> RProcessCapabilityType = dictClient.getList("ProcessCapabilityType"); + if (RProcessCapabilityType.isSuccess()) { + List dictList = RProcessCapabilityType.getData(); + dictMap = dictList.stream().collect(Collectors.toMap(Dict::getDictKey, Dict::getDictValue, (oldVal, newVal) -> oldVal)); + } + return dictMap; + } + } From 9c99b9974b03cd34867c7b4a30382aeb83b20c7b Mon Sep 17 00:00:00 2001 From: maxiangong <298222784@qq.com> Date: Fri, 12 Jun 2026 14:34:48 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E8=B4=A8=E9=87=8F?= =?UTF-8?q?=E6=A3=80=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WorkPlanItemServiceImpl.java | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/WorkPlanItemServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/WorkPlanItemServiceImpl.java index f6822c2c5..e6a9c6230 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/WorkPlanItemServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/WorkPlanItemServiceImpl.java @@ -290,9 +290,11 @@ public class WorkPlanItemServiceImpl extends BaseServiceImpl listShareVOByWpiId(Long wpiId) { List listVO = baseMapper.listShareByWpiId(wpiId); - for (WorkPlanItemVO vo : listVO) { - setVOValue(vo); - vo.setCheckName("工序检验"); + if (CollectionUtils.isNotEmpty(listVO)) { + for (WorkPlanItemVO vo : listVO) { + setVOValue(vo); + vo.setCheckName("工序检验"); + } } List itemVOS = listShareBySameSlot(wpiId); if (CollectionUtils.isNotEmpty(itemVOS)) { @@ -313,10 +315,12 @@ public class WorkPlanItemServiceImpl extends BaseServiceImpl listShareBySameSlot(Long wpiId) { WorkPlanItem workPlanItem = this.getById(wpiId); if (workPlanItem == null) { + log.info("WorkPlanItem查询失败"); return null; } WorkPlan workPlan = workPlanMapper.selectById(workPlanItem.getWpId()); if (workPlan == null) { + log.info("workPlan查询失败"); return null; } if (workPlan != null && workPlan.getFrontWpId() != null) { @@ -342,15 +346,19 @@ public class WorkPlanItemServiceImpl extends BaseServiceImpl dictMap = getProcessCapabilityTypeMap(); - String wxLimitName = dictMap.get(craftAbility.getWxLimit()); - boolean checkCaType = !StringUtils.isEmpty(wxLimitName) && (wxLimitName.contains("镀金") || wxLimitName.contains("镀银")); - WorkOrder workOrder = workOrderMapper.selectById(workPlan.getWoId()); - if (workOrder == null) { - return null; - } - if (checkCaType) { - partCode = workOrder.getPartCode(); + if (craftAbility != null) { + Map dictMap = getProcessCapabilityTypeMap(); + String wxLimitName = dictMap.get(craftAbility.getWxLimit()); + boolean checkCaType = !StringUtils.isEmpty(wxLimitName) && (wxLimitName.contains("镀金") || wxLimitName.contains("镀银")); + log.info("checkCaType:" + checkCaType); + WorkOrder workOrder = workOrderMapper.selectById(workPlan.getWoId()); + if (workOrder == null) { + log.info("workOrder查询失败"); + return null; + } + if (checkCaType) { + partCode = workOrder.getPartCode(); + } } } List list = macToolUseService.listSlotInfo(workPlan);