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-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/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..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
@@ -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) {
@@ -275,10 +290,103 @@ public class WorkPlanItemServiceImpl extends BaseServiceImpl listShareVOByWpiId(Long wpiId) {
List listVO = baseMapper.listShareByWpiId(wpiId);
- for (WorkPlanItemVO vo : listVO) {
- setVOValue(vo);
+ if (CollectionUtils.isNotEmpty(listVO)) {
+ 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) {
+ 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) {
+ 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());
+ 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);
+ 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;
+ }
+
}