diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataCheckerSealClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataCheckerSealClient.java new file mode 100644 index 000000000..6d5427ec6 --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataCheckerSealClient.java @@ -0,0 +1,21 @@ +package org.springblade.erpdata.feign; + +import org.springblade.common.constant.LauncherConstant; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@FeignClient( + value = LauncherConstant.APPLICATION_ERP_DATA_NAME, + fallback = IErpDataCheckerSealClientFallback.class +) +public interface IErpDataCheckerSealClient { + + String API_PREFIX = "/feign/erpdata/checkerseal"; + + String GET_CHECK_MAN_BY_NEW_ERP_MES = API_PREFIX + "/getCheckManByNewErpMes"; + + @GetMapping(GET_CHECK_MAN_BY_NEW_ERP_MES) + String getCheckManByNewErpMes(@RequestParam("userName") String userName); + +} diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataCheckerSealClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataCheckerSealClientFallback.java new file mode 100644 index 000000000..ae5f02f65 --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataCheckerSealClientFallback.java @@ -0,0 +1,13 @@ +package org.springblade.erpdata.feign; + +import org.springframework.stereotype.Component; + +@Component +public class IErpDataCheckerSealClientFallback implements IErpDataCheckerSealClient{ + + @Override + public String getCheckManByNewErpMes(String userName) { + return null; + } + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java index 72e71d0aa..ec54d0f96 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java @@ -64,7 +64,7 @@ public interface WorkPlanMapper extends BaseMapper { MacToolUse getHangNumIsNull(Long wpId); MacToolUse getDataByWpIdAndIndex(Long wpId, String numberIndex); // List getDataByWcIdAndPpsId(Long wcId, Long ppsId,boolean aTrue); - List getDataByWcIdAndPpsId(Long wcId, Long ppsId, boolean aTrue); + List getDataByWcIdAndPpsId(Long wcId, Long ppsId, String line); List getByRfpId(Long rfpId); // MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long wpId); @@ -80,7 +80,6 @@ public interface WorkPlanMapper extends BaseMapper { List listByPartCodeNew(String partCode, Short indexNum); List findByPartCodeAndMemoMes(String partCode, String memo); DsPartSub getByPartCodeAndSubCodeMes(String partCode, String subCode); - String getCheckManByNewErpMes(String userName); List listByWpiIdMes(Long wpiId); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml index 3f6855026..badf5c11b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml @@ -162,10 +162,6 @@ select * from MES_WORK_ORDER a inner join MES_YIELD_ORDER b on a.YO_ID = b.ID where b.PART_CODE= #{partCode} and b.YP_CODE = #{memo} - - diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index 66766221e..1bc7ba655 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -64,6 +64,7 @@ import org.springblade.desk.quality.pojo.entity.*; import org.springblade.desk.quality.pojo.vo.WorkPlanItemVO; import org.springblade.desk.quality.service.*; import org.springblade.desk.util.date.DateUtils; +import org.springblade.erpdata.feign.IErpDataCheckerSealClient; import org.springblade.erpdata.feign.IErpDataLogisticsClient; import org.springblade.erpdata.feign.IErpDataProduceClient; import org.springblade.scheduling.pojo.entity.QualityGradeEntity; @@ -204,6 +205,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl selectWorkOrderPage(IPage page, WorkOrderDTO workOrder) { return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder)); @@ -2824,7 +2828,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl itemDetails = itemDetailMap.get(planItem.getId()); String checkManByNewErp = null; try { - checkManByNewErp = workPlanMapper.getCheckManByNewErpMes(planItem.getCheckUserAccount()); + checkManByNewErp = erpDataCheckerSealClient.getCheckManByNewErpMes(planItem.getCheckUserRealName()); } catch (Exception e) { // DB Link 等异常降级,避免阻塞 PDF 生成 } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java index abf47e504..a1bb23f70 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java @@ -67,6 +67,7 @@ import org.springblade.desk.quality.pojo.request.InspectionTaskStartNew; import org.springblade.desk.quality.pojo.vo.*; import org.springblade.desk.quality.service.*; import org.springblade.desk.quality.wrapper.InspectionTaskListWrapper; +import org.springblade.erpdata.feign.IErpDataCheckerSealClient; import org.springblade.scheduling.pojo.entity.WorkPlanEntity; import org.springblade.system.feign.IDictClient; import org.springblade.system.feign.IUserClient; @@ -77,6 +78,8 @@ import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; @@ -154,6 +157,10 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl checkList = this.getCheckListNotNG(woId, wpList, true); - modelJson1.put("checkList", checkList); - jsonObj.put("modelThree", modelJson1); + modelThree.put("checkList", checkList); + jsonObj.put("modelThree", modelThree); } - List modelTwoList = this.buildModelTwo(wo, yo, dsPart, wpList, planList); - jsonObj.put("modelTwo", modelTwoList); + List modelTwo = this.buildModelTwo(wo, yo, dsPart, wpList, planList); + jsonObj.put("modelTwo", modelTwo); if (moduleList.get(2)) { // 镀后入库记录 @@ -708,12 +715,19 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl basList = feiBaSetService.listByIds(bas); List cardList = mesEquipmentCardService.listByIds(cards); // 设备编号 - String gj = StringUtils.join(rackList.stream().filter(j -> j.getRsType() != null).map(j -> j.getRsType()).collect(Collectors.toList()), "'、'"); - String fb = StringUtils.join(basList.stream().filter(j -> j.getFsType() != null).map(j -> j.getFsType()).collect(Collectors.toList()), "、"); + String gj = StringUtils.join(rackList.stream().filter(j -> j.getRsCode() != null).map(j -> j.getRsCode()).collect(Collectors.toList()), "'、'"); + String fb = StringUtils.join(basList.stream().filter(j -> j.getFsCode() != null).map(j -> j.getFsCode()).collect(Collectors.toList()), "、"); String eq = StringUtils.join(cardList.stream().filter(j -> j.getDeviceCode() != null).map(j -> j.getDeviceCode()).collect(Collectors.toList()), "、"); modelTwo.put("gjCode", gj); modelTwo.put("fbCode", fb); @@ -832,7 +859,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl getCheckListNotNG(Long woId, List wpList, Boolean eleOrPrint) { List checkList = new ArrayList<>(); //组装检测项集合 + Map ccMap = new LinkedHashMap<>(); + JSONObject cc; List piLst = workPlanItemService.listByWoIdNotNG(woId); Map workPlanMap = wpList.stream() .collect(Collectors.toMap( WorkPlanExpandVO::getId, Function.identity() )); + Map> piMap = new LinkedHashMap<>(); + List lst; if (CollectionUtils.isNotEmpty(piLst)) { for (WorkPlanItemVO pi : piLst) { + lst = piMap.get(pi.getItemCode()); WorkPlanExpandVO workPlan = workPlanMap.get(pi.getWpId()); String testOrder = workPlan.getOrders() + "-" + pi.getItemCode(); - JSONObject checkDetail = new JSONObject(); - checkDetail.put("testOrders", testOrder); - checkDetail.put("checkName", pi.getCheckUserRealName()); - if (StringUtils.isNotEmpty(pi.getCheckUserAccount())) { - String checkManByNewErp = workPlanMapper.getCheckManByNewErpMes(pi.getCheckUserAccount()); - if (eleOrPrint) { - checkDetail.put("imgUrl", checkManByNewErp); + if (CollectionUtils.isEmpty(lst)) { + lst = new ArrayList<>(); + piMap.put(testOrder, lst); + cc = new JSONObject(); + cc.put("testOrders", testOrder); + if (pi.getCheckQty() != null && pi.getCheckQty() > 0) { + cc.put("checkQty", pi.getCheckQty()); + } + if (pi.getTestQty() != null && pi.getTestQty() > 0) { + cc.put("testQty", pi.getTestQty()); } else { - if (checkManByNewErp != null && checkManByNewErp.indexOf("base64,") > 0) { - String checkManByNewErpSubString = checkManByNewErp.substring(checkManByNewErp.indexOf("base64,") + 7); - checkDetail.put("imgUrl", checkManByNewErpSubString); + cc.put("testQty", ""); + } + cc.put("checkResult", WorkPlanItem.checkResultMap.get(pi.getCheckResult())); + if (StringUtils.isNotEmpty(pi.getCheckUserRealName())) { + String checkManByNewErp = null; + try { + checkManByNewErp = erpDataCheckerSealClient.getCheckManByNewErpMes(pi.getCheckUserRealName()); + } catch (Exception e) { + // DB Link 等异常降级,避免阻塞 PDF 生成 + } + cc.put("checkName", pi.getCheckUserRealName()); + if (eleOrPrint) { + cc.put("imgUrl", checkManByNewErp); + } else { + if (checkManByNewErp != null && checkManByNewErp.indexOf("base64,") > 0) { + String checkManByNewErpSubString = checkManByNewErp.substring(checkManByNewErp.indexOf("base64,") + 7); + cc.put("imgUrl", checkManByNewErpSubString); + } + } + if (pi.getCheckDate() != null) { + cc.put("checkDate", pi.getCheckDate().toLocalDate().toString()); + } else { + cc.put("checkDate", ""); + } + } + ccMap.put(testOrder, cc); + } + if ("厚度检测".equals(pi.getItemName())) { + for (int i = 0; i < 3; i++) { + lst.add(this.buildCCC(pi.getItemName(), pi.getStandardName(), pi.getCheckValue(), pi.getId(), null, pi.getCreateTime())); + } + } + lst.add(this.buildCCC(pi.getItemName(), pi.getStandardName(), pi.getCheckValue(), pi.getId(), null, pi.getCreateTime())); + List idLst; + for (Map.Entry entry : ccMap.entrySet()) { + cc = ccMap.get(entry.getKey()); + if (cc != null) { + lst = piMap.get(cc.get("testOrders")); + lst = lst.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() + -> new TreeSet<>(Comparator.comparing(i -> (Date) i.get("createTime")))), ArrayList::new)); + if (lst != null && lst.size() > 0) { + for (JSONObject ccc : lst) { + idLst = workPlanItemDetailService.listVOByWorkPlanItemId((Long) ccc.get("wpiId")); + if (idLst != null && idLst.size() > 0) { + lst = new ArrayList<>(); + for (WorkPlanItemDetailVO itemDetail : idLst) { + if ("厚度检测".equals(ccc.get("testName"))) { + cc.put("deviceCode", itemDetail.getGaugeValue8()); + lst.add(this.buildCCC((String) ccc.get("testName"), (String) ccc.get("trialStandard"), itemDetail.getGaugeValueNotNUll(), null, itemDetail.getGaugeValue8(), (Date) ccc.get("createTime"))); + } else if (itemDetail.getMtId() != null) { + lst.add(this.buildCCC((String) ccc.get("testName"), itemDetail.getRuleSize(), + itemDetail.getGaugeValue1(), (Long) ccc.get("wpiId"), itemDetail.getTools(), (Date) ccc.get("createTime"))); + cc.put("deviceCode", itemDetail.getTools()); + if (cc.get("trialStandard") != null) { + cc.put("trialStandard", (String) cc.get("trialStandard") + ';' + itemDetail.getRuleSize()); + } else { + cc.put("trialStandard", itemDetail.getRuleSize()); + } + if (cc.get("checkResult") != null) { + cc.put("checkResult", cc.get("checkResult")); + } else { + cc.put("checkResult", itemDetail.getGaugeValue1()); + } + } + } + } + cc.put("cccList", lst); + checkList.add(cc); + break; + } } } } - checkList.add(checkDetail); } } return checkList; } + private JSONObject buildCCC(String testName, String trialStandard, String checkValue, Long wpiId, String tools, Date createTime) { + JSONObject ccc = new JSONObject(); + ccc.put("testName", testName); + ccc.put("trialStandard", trialStandard); + ccc.put("checkValue", checkValue); + ccc.put("wpiId", wpiId); + ccc.put("emTools", tools); + ccc.put("createTime", createTime); + return ccc; + } + public void getNewProcess(List wpList, JSONObject jsonObj, List modelFlag) { if (wpList == null || wpList.size() == 0) { return; @@ -1246,10 +1358,10 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl user = userClient.userInfoById(pi.getCheckUserId()); - String userName = user.getData().getAccount(); + String userName = user.getData().getRealName(); if (null != user && user.getData() != null) { cc.setCheckName(user.getData().getRealName()); } //zxh 20250212 从nerp获取检验员印章 - String checkManByNewErp = workPlanMapper.getCheckManByNewErpMes(userName); + String checkManByNewErp = erpDataCheckerSealClient.getCheckManByNewErpMes(userName); if (eleOrPrint) { diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataCheckerSealClient.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataCheckerSealClient.java new file mode 100644 index 000000000..0bbef1816 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataCheckerSealClient.java @@ -0,0 +1,22 @@ +package org.springblade.erpdata.feign; + +import io.swagger.v3.oas.annotations.Hidden; +import jakarta.annotation.Resource; +import lombok.AllArgsConstructor; +import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.erpdata.service.IErpDataCheckerSealService; +import org.springframework.web.bind.annotation.RestController; + +@NonDS +@Hidden +@RestController +@AllArgsConstructor +public class ErpDataCheckerSealClient implements IErpDataCheckerSealClient { + + @Resource + private final IErpDataCheckerSealService erpDataCheckerSealService; + @Override + public String getCheckManByNewErpMes(String userName) { + return erpDataCheckerSealService.getCheckManByNewErpMes(userName); + } +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataCheckerSealMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataCheckerSealMapper.java new file mode 100644 index 000000000..26146ad49 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataCheckerSealMapper.java @@ -0,0 +1,9 @@ +package org.springblade.erpdata.mapper; + +import com.baomidou.mybatisplus.core.mapper.Mapper; + +public interface ErpDataCheckerSealMapper extends Mapper { + + String getCheckManByNewErpMes(String userName); + +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataCheckerSealMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataCheckerSealMapper.xml new file mode 100644 index 000000000..b22339b26 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataCheckerSealMapper.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataCheckerSealService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataCheckerSealService.java new file mode 100644 index 000000000..f9254101f --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataCheckerSealService.java @@ -0,0 +1,7 @@ +package org.springblade.erpdata.service; + +public interface IErpDataCheckerSealService { + + String getCheckManByNewErpMes(String userName); + +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataCheckerSealServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataCheckerSealServiceImpl.java new file mode 100644 index 000000000..c8ad2166d --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataCheckerSealServiceImpl.java @@ -0,0 +1,21 @@ +package org.springblade.erpdata.service.impl; + +import jakarta.annotation.Resource; +import lombok.AllArgsConstructor; +import org.springblade.erpdata.mapper.ErpDataCheckerSealMapper; +import org.springblade.erpdata.service.IErpDataCheckerSealService; +import org.springframework.stereotype.Service; + +@Service +@AllArgsConstructor +public class ErpDataCheckerSealServiceImpl implements IErpDataCheckerSealService { + + + @Resource + private final ErpDataCheckerSealMapper erpDataCheckerSealMapper; + + @Override + public String getCheckManByNewErpMes(String userName) { + return erpDataCheckerSealMapper.getCheckManByNewErpMes(userName); + } +}