From d81ecf72301e409f182095df7af9fada97775b12 Mon Sep 17 00:00:00 2001 From: maxiangong <298222784@qq.com> Date: Fri, 12 Jun 2026 13:41:05 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E8=B4=A8=E9=87=8F=E6=A3=80?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/quality/pojo/vo/WorkPlanItemVO.java | 3 + .../controller/InspectionTaskController.java | 1 + .../quality/mapper/WorkPlanItemMapper.java | 2 + .../quality/mapper/WorkPlanItemMapper.xml | 51 +++++++++ .../service/impl/WorkPlanItemServiceImpl.java | 108 +++++++++++++++++- 5 files changed, 161 insertions(+), 4 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/WorkPlanItemVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/WorkPlanItemVO.java index d26a9482c..9ecc9856d 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/WorkPlanItemVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/WorkPlanItemVO.java @@ -90,6 +90,9 @@ public class WorkPlanItemVO extends WorkPlanItem { @Schema(description = "检查结果") private String checkResultValue; + @Schema(description = "检验名称") + private String checkName; + public String getCoatingTypeValue(){ return coatTypeMap.get(getCoatingType()); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java index 4033f17aa..e9597edc5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java @@ -749,6 +749,7 @@ public class InspectionTaskController extends BladeController { List list = new ArrayList<>(); if (null != workPlan) { list = macToolUseService.listSlotInfo(workPlan); + list = list.stream().filter(vo -> !vo.getWpId().equals(detail.getWpId())).collect(Collectors.toList()); if (null != listSheet && listSheet.size() > 0) { list.forEach(one -> { one.setIsShow("1"); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/WorkPlanItemMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/WorkPlanItemMapper.java index ab3d61d1f..3d93e7fc2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/WorkPlanItemMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/WorkPlanItemMapper.java @@ -43,4 +43,6 @@ public interface WorkPlanItemMapper extends BaseMapper { List listByWoIdNotNG(Long woId); List listShareByWpiId(Long wpiId); + + List listShareBySameSlot(List wpIds, String psName, String partCode, String itemName); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/WorkPlanItemMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/WorkPlanItemMapper.xml index 64ac57640..3bd590586 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/WorkPlanItemMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/WorkPlanItemMapper.xml @@ -91,4 +91,55 @@ WHERE a.is_deleted = 0 AND a.SOURCE_TYPE = 1 + + 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; + } + }