From 1e46396fff27d8181b6d60a87587339db79deb69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=BE=E7=BF=94?= Date: Thu, 28 May 2026 17:04:45 +0800 Subject: [PATCH 01/14] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/service/impl/FmProjectMilestoneServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java index 5a3942c4f..eabc8b02e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java @@ -337,7 +337,7 @@ public class FmProjectMilestoneServiceImpl extends BaseServiceImpl Date: Thu, 28 May 2026 17:17:20 +0800 Subject: [PATCH 02/14] =?UTF-8?q?=E7=94=B5=E5=AD=90=E6=A1=A3=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/produce/mapper/WorkPlanMapper.xml | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) 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 badf5c11b..bc5418bee 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 @@ -294,17 +294,33 @@ From a759e85e1415fa6e0fe4c39bbc5347e6e07a8460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=BE=E7=BF=94?= Date: Thu, 28 May 2026 17:29:25 +0800 Subject: [PATCH 03/14] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/entity/FmProjectMilestoneEntity.java | 2 ++ .../impl/FmProjectMilestoneServiceImpl.java | 14 +++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/pojo/entity/FmProjectMilestoneEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/pojo/entity/FmProjectMilestoneEntity.java index e608b3865..0b6bf19a8 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/pojo/entity/FmProjectMilestoneEntity.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/pojo/entity/FmProjectMilestoneEntity.java @@ -83,6 +83,8 @@ public class FmProjectMilestoneEntity extends BaseEntity { */ @Schema(description = "里程碑负责人") private String milestoneMan; + @Schema(description = "里程碑负责人ID ") + private String milestoneManId; /** * 里程碑输出物 */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java index eabc8b02e..e284dd635 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java @@ -248,7 +248,7 @@ public class FmProjectMilestoneServiceImpl extends BaseServiceImpl Date: Thu, 28 May 2026 17:56:49 +0800 Subject: [PATCH 04/14] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/service/impl/FmProjectMilestoneServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java index e284dd635..94aab553b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java @@ -367,7 +367,7 @@ public class FmProjectMilestoneServiceImpl extends BaseServiceImpl Date: Thu, 28 May 2026 18:17:47 +0800 Subject: [PATCH 05/14] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FmProjectMilestoneServiceImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java index 94aab553b..6039c83ba 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java @@ -101,19 +101,19 @@ public class FmProjectMilestoneServiceImpl extends BaseServiceImpl Date: Thu, 28 May 2026 18:33:31 +0800 Subject: [PATCH 06/14] =?UTF-8?q?=E6=A0=B8=E6=9F=A5=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/process/pojo/entity/FmProjectMilestoneEntity.java | 3 +++ .../service/impl/FmProjectMilestoneServiceImpl.java | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/pojo/entity/FmProjectMilestoneEntity.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/pojo/entity/FmProjectMilestoneEntity.java index 0b6bf19a8..1d2f20d83 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/pojo/entity/FmProjectMilestoneEntity.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/pojo/entity/FmProjectMilestoneEntity.java @@ -150,6 +150,9 @@ public class FmProjectMilestoneEntity extends BaseEntity { */ @Schema(description = "核查人") private String checkMan; + + @Schema(description = "核查人ID") + private String checkManId; /** * 核查时间 */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java index 6039c83ba..d9e8eedd6 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java @@ -121,7 +121,12 @@ public class FmProjectMilestoneServiceImpl extends BaseServiceImpl userR1 = userClient.userInfoById(entity.getNextApproverId()); + if (!userR1.isSuccess() || BeanUtil.isEmpty(userR1.getData())) { + throw new RuntimeException("当前里程碑的核查人不存在"); + } + fmProjectMilestone.setCheckMan(userR1.getData().getRealName()); + fmProjectMilestone.setCheckManId(entity.getNextApproverId().toString()); // 如果核查通过,需要流转到核准节点 if (FmProjectMilestoneEntity.CHECK_RESULT_OK.equals(fmProjectMilestone.getCheckResult())) { From cfaa8d4ce4e593d6fda5d774c3e09029a8b27b85 Mon Sep 17 00:00:00 2001 From: maxiangong <298222784@qq.com> Date: Fri, 29 May 2026 09:45:47 +0800 Subject: [PATCH 07/14] =?UTF-8?q?=E7=94=B5=E5=AD=90=E6=A1=A3=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/InspectionTaskServiceImpl.java | 510 +++++++++++++++--- 1 file changed, 433 insertions(+), 77 deletions(-) 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 a1bb23f70..80cf88b7d 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 @@ -36,6 +36,7 @@ import org.springblade.desk.basic.util.IdUtil; import org.springblade.desk.basic.util.StatusCountMap; import org.springblade.desk.dashboard.pojo.entity.*; import org.springblade.desk.dashboard.service.IBsProcessSetService; +import org.springblade.desk.dashboard.service.IBsTeamSetService; import org.springblade.desk.dashboard.service.IDsPartService; import org.springblade.desk.dashboard.service.IDsPartVersionService; import org.springblade.desk.device.pojo.entity.EquipmentEntity; @@ -52,6 +53,7 @@ import org.springblade.desk.produce.mapper.WorkPlanMapper; import org.springblade.desk.produce.pojo.dto.*; import org.springblade.desk.produce.pojo.entity.*; import org.springblade.desk.produce.pojo.vo.MakeRecExpandVO; +import org.springblade.desk.produce.pojo.vo.ProduceMonitorFileSlotVO; import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; import org.springblade.desk.produce.pojo.vo.WorkPlanExpandVO; import org.springblade.desk.produce.service.*; @@ -68,7 +70,6 @@ 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; import org.springblade.system.pojo.entity.User; @@ -161,6 +162,14 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl dsRbFilePreserveSlotList = new ArrayList<>(); + List dsRbFilePreserveSlotList = new ArrayList<>(); if (WorkPlan.PRINT_TYPE_PROCESS.equals(prWorkPlan.getPrintType())) { // 同槽信息(从设备,工装使用记录获取) - List slotVOList = null; - //zxh 20250626 增加固溶工序同炉数据 - if ("固溶".equals(prWorkPlan.getPpsName())) { - slotVOList = workPlanMapper.listSlotInfoGr(prWorkPlan.getId(), Boolean.FALSE); - } else { - slotVOList = workPlanMapper.listSlotInfoList(prWorkPlan.getId(), Boolean.TRUE); - if (slotVOList == null || slotVOList.size() == 0) { - slotVOList = workPlanMapper.listSlotInfoList(prWorkPlan.getId(), Boolean.FALSE); - } - } + List slotVOList = macToolUseService.listSlotInfo(prWorkPlan); if (CollectionUtils.isNotEmpty(slotVOList)) { for (ProduceMonitorSlotListVO slot : slotVOList) { JSONObject slotJson = new JSONObject(); @@ -902,107 +903,87 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl buildDsRbFilePreserveSlotList(WorkPlanExpandVO workPlan) { - List dsRbFilePreserveSlotList = new ArrayList<>(); - QueryWrapper qwteam = new QueryWrapper<>(); - qwteam.eq("TS_ID", workPlan.getMakeTeam()); - List teamList = centerTeamService.list(qwteam); - CenterTeam bsCenterTeam = null; - if (teamList != null && teamList.size() > 0) { - bsCenterTeam = teamList.get(0); - } - if (bsCenterTeam != null && bsCenterTeam.getWcId() != null) { + private List buildDsRbFilePreserveSlotList(WorkPlanExpandVO workPlan) { + List qcProduceRunsList; + List dsRbFilePreserveSlotList = new ArrayList<>(); + BsTeamSetEntity bsTeamSet = bsTeamSetService.getById(workPlan.getMakeTeam()); + if (bsTeamSet != null) { MacToolUse prMacToolUse; List preserveSlotList; - List qcProduceRunsList; - MesQcProduceRunEntity boxInfo = new MesQcProduceRunEntity(); + MesQcProduceRunEntity boxInfo; + // 根据电子档案维护组装数据(上线前) 分槽 - List dataByWpIdAndIndexList = workPlanMapper.getDataByWpIdAndIndexList(workPlan.getId(), "1"); - if (dataByWpIdAndIndexList != null && dataByWpIdAndIndexList.size() > 0) { + List dataByWpIdAndIndexList = macToolUseService.getDataByWpIdAndIndexList(workPlan.getId(), "1"); + if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(dataByWpIdAndIndexList)) { for (MacToolUse prMacToolUseItem : dataByWpIdAndIndexList) { if (prMacToolUseItem != null && prMacToolUseItem.getId() != null) { // 获取模板数据 preserveSlotList = mesRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUseItem.getRfpId())); - qcProduceRunsList = workPlanMapper.listPrByWpIdIndexAndMtnCode(workPlan.getId(), 1, prMacToolUseItem.getMtnCode()); + qcProduceRunsList = qcProduceRunService.listPrByWpIdIndexAndMtnCode(dataByWpIdAndIndexList.stream().map(MacToolUse::getMtnCode).toList(), prMacToolUseItem.getMtnCode()); // 烘箱信息(从设备,工装使用记录获取) - List runs = workPlanMapper.getBoxInfoByWpIdMtnCodeList(workPlan.getId()); - if (runs != null && runs.size() > 0) { - boxInfo = runs.get(0); - } - if (StringUtils.isNotBlank(boxInfo.getInDate())) { + boxInfo = macToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getId()); + if (boxInfo.getInDate() != null) { qcProduceRunsList.add(boxInfo); } - - if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) { - + if (qcProduceRunsList != null && !qcProduceRunsList.isEmpty()) { // 2025-07-23 线上迁移修改删除了日志打印 // cdl 20250218 修改分槽同一槽号连续出现 - this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, - dsRbFilePreserveSlotList, prMacToolUseItem); + this.setRbFilePreserveDateNew(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList, prMacToolUseItem); } } } } + // 根据电子档案维护组装数据(自动) - prMacToolUse = workPlanMapper.getDataByWpIdAndIndex(workPlan.getId(), "2"); + prMacToolUse = macToolUseService.getDataByWpIdAndIndex(workPlan.getId(), "2"); if (prMacToolUse != null && prMacToolUse.getId() != null) { - - List dsRbFilePreserveList = null; - if (workPlan.getPpsId() != null) { - BsProcessSetEntity process = processSetService.getById(workPlan.getPpsId()); - if ("喷砂".equals(process.getName()) || "涂色标".equals(process.getName())) { - dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(null, - workPlan.getPpsId(), "0"); - } else { - dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(bsCenterTeam.getWcId(), - workPlan.getPpsId(), "0"); - } + // 获取模板数据 + List dsRbFilePreserveList; + BsProcessSetEntity processSet = bsProcessSetService.getById(workPlan.getPpsId()); + if (workPlan.getPpsId() != null && ("喷砂".equals(processSet.getName()) || "涂色标".equals(processSet.getName()))) { + dsRbFilePreserveList = proReTemplateService.getDataByWcIdAndPpsId(null, workPlan.getPpsId(), Boolean.TRUE); + } else { + dsRbFilePreserveList = proReTemplateService.getDataByWcIdAndPpsId(bsTeamSet.getWcId(), workPlan.getPpsId(), Boolean.TRUE); } + if (dsRbFilePreserveList != null && !dsRbFilePreserveList.isEmpty()) { + preserveSlotList = mesRbFilePreserveSlotService.getByRfpId(dsRbFilePreserveList.get(0).getId()); + qcProduceRunsList = qcProduceRunService.listPrByWpIdIndex(workPlan.getId(), 2, Boolean.TRUE); - //sql不对 - if (dsRbFilePreserveList != null && dsRbFilePreserveList.size() > 0) { - //00000000000000 - preserveSlotList = workPlanMapper.getByRfpId(dsRbFilePreserveList.get(0).getId()); - qcProduceRunsList = workPlanMapper.listPrByWpIdIndex(workPlan.getId(), 2, Boolean.TRUE); - List runs = workPlanMapper.getBoxInfoByWpIdMtnCodeList(workPlan.getId()); - if (runs != null && runs.size() > 0) { - boxInfo = runs.get(0); - } // 烘箱信息(从设备,工装使用记录获取) - if (qcProduceRunsList != null && qcProduceRunsList.size() > 0 && StringUtils.isNotBlank(boxInfo.getInDate())) { + boxInfo = macToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getId()); + if (qcProduceRunsList != null && !qcProduceRunsList.isEmpty() && boxInfo.getInDate() != null) { qcProduceRunsList.add(boxInfo); } - if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) { + if (qcProduceRunsList != null && !qcProduceRunsList.isEmpty()) { // cdl 20250218 修改分槽同一槽号连续出现 - this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, - dsRbFilePreserveSlotList, prMacToolUse); + this.setRbFilePreserveDateNew(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList, prMacToolUse); } } + // 获取额外面积数据 +// BsAdditionalMess dataByMtuCode = bsAdditionalMessDao.getDataByOneData(prMacToolUse.getMtnCode(), BsAdditionalMess.TYPE_ONE); +// workPlan.setBsAdditionalMess(dataByMtuCode); } + + // 根据电子档案维护组装数据(线下) //zxh 20250117 解决单工序绑定两个手动记录只显示一个问题 - List prMacToolUseList = workPlanMapper.getDataByWpIdAndIndexList(workPlan.getId(), "3"); - if (prMacToolUseList != null && prMacToolUseList.size() > 0) { + List prMacToolUseList = macToolUseService.getDataByWpIdAndIndexList(workPlan.getId(), "3"); + if (prMacToolUseList != null && !prMacToolUseList.isEmpty()) { for (MacToolUse prMacToolUseSd : prMacToolUseList) { if (prMacToolUseSd != null && prMacToolUseSd.getId() != null) { // 获取模板数据 - preserveSlotList = workPlanMapper.getByRfpId(Long.valueOf(prMacToolUseSd.getRfpId())); - qcProduceRunsList = workPlanMapper.listPrByWpIdIndexAndMtnCode(workPlan.getId(), 3, prMacToolUseSd.getMtnCode()); + preserveSlotList = mesRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUseSd.getRfpId())); + qcProduceRunsList = qcProduceRunService.listPrByWpIdIndexAndMtnCode(prMacToolUseList.stream().map(MacToolUse::getMtnCode).toList(), prMacToolUseSd.getMtnCode()); // 烘箱信息(从设备,工装使用记录获取) - List runs = workPlanMapper.getBoxInfoByWpIdMtnCodeList(workPlan.getId()); - if (runs != null && runs.size() > 0) { - boxInfo = runs.get(0); - } - - if (StringUtils.isNotBlank(boxInfo.getInDate())) { + boxInfo = macToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getId()); + if (boxInfo.getInDate() != null) { qcProduceRunsList.add(boxInfo); } - if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) { + if (qcProduceRunsList != null && !qcProduceRunsList.isEmpty()) { // cdl 20250218 修改分槽同一槽号连续出现 - this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, - dsRbFilePreserveSlotList, prMacToolUseSd); + this.setRbFilePreserveDateNew(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList, prMacToolUseSd); } } } @@ -1011,6 +992,381 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl preserveSlotList, List qcProduceRunsList, WorkPlan workPlan, List dsRbFilePreserveSlotList, MacToolUse prMacToolUse) { + List dsRbFilePreserveDetailList = null; + ProduceMonitorFileSlotVO newDsRbFilePreserveSlot = null; + MesRbFilePreserveDetailEntity newDsRbFilePreserveDetail = null; + + Map preserveSlotMap = preserveSlotList.stream().collect(Collectors.toMap(MesRbFilePreserveSlotEntity::getSlotName, java.util.function.Function.identity())); + List temporaryList = new ArrayList<>(); + for (MesQcProduceRunEntity qcProduceRun : qcProduceRunsList) { + // 根据维护的电子档案的槽号找寻对应生产追溯的的数据 + if (StringUtils.isBlank(qcProduceRun.getWorkSlot())) { + continue; + } + MesRbFilePreserveSlotEntity dsRbFilePreserveSlot = preserveSlotMap.get(qcProduceRun.getWorkSlot().trim()); + + if ("水膜连续性检查".equals(qcProduceRun.getWorkSlot().trim())) { + qcProduceRun.setQualified("1"); + } + + // cdl 20250218 修改分槽同一槽号连续出现 + this.setTemplateData(dsRbFilePreserveSlot, qcProduceRun, newDsRbFilePreserveSlot, dsRbFilePreserveDetailList, newDsRbFilePreserveDetail, workPlan, temporaryList, prMacToolUse); + } + + // 判断是不是自动线并且有水墨连续性 + MacToolUse macToolUse = macToolUseService.getHangNumIsNull(workPlan.getId()); + if (macToolUse != null && macToolUse.getId() != null) { + List smSlotList = preserveSlotList.stream().filter(i -> i.getSlotName().contains("水膜连续性")).toList(); + for (MesRbFilePreserveSlotEntity dsRbFilePreserveSlot : smSlotList) { + if (dsRbFilePreserveSlot.getSlotName().contains("水膜连续性")) { + MesQcProduceRunEntity qcProduceRun = new MesQcProduceRunEntity(); + qcProduceRun.setQualified("1"); + // cdl 20250218 修改分槽同一槽号连续出现 + this.setTemplateData(dsRbFilePreserveSlot, qcProduceRun, newDsRbFilePreserveSlot, dsRbFilePreserveDetailList, newDsRbFilePreserveDetail, workPlan, temporaryList, prMacToolUse); + } + } + } + dsRbFilePreserveSlotList.addAll(temporaryList.stream().sorted(Comparator.comparing(ProduceMonitorFileSlotVO::getSlotIndex)).toList()); + } + + private void setTemplateData(MesRbFilePreserveSlotEntity dsRbFilePreserveSlot, MesQcProduceRunEntity qcProduceRun, ProduceMonitorFileSlotVO newDsRbFilePreserveSlot, List dsRbFilePreserveDetailList, MesRbFilePreserveDetailEntity newDsRbFilePreserveDetail, WorkPlan workPlan, List temporaryList, MacToolUse prMacToolUse) { + if (dsRbFilePreserveSlot != null && dsRbFilePreserveSlot.getId() != null) { + // Date转String + + // 装入槽子对应的信息 + newDsRbFilePreserveSlot = new ProduceMonitorFileSlotVO(); + newDsRbFilePreserveSlot.setRfpsType(dsRbFilePreserveSlot.getRfpsType()); + newDsRbFilePreserveSlot.setInsertIndex(dsRbFilePreserveSlot.getInsertIndex()); + newDsRbFilePreserveSlot.setSlotName(dsRbFilePreserveSlot.getSlotName()); + newDsRbFilePreserveSlot.setSlotIndex(dsRbFilePreserveSlot.getSlotIndex()); + + List preserveDetailList = mesRbFilePreserveDetailService.getByRfpsId(dsRbFilePreserveSlot.getId()); + if (!preserveDetailList.isEmpty()) { + dsRbFilePreserveDetailList = new ArrayList<>(); + for (int i = 0; i < preserveDetailList.size(); i++) { + MesRbFilePreserveDetailEntity dsRbFilePreserveDetail = preserveDetailList.get(i); + Short rfpsType = 0; + if (dsRbFilePreserveDetail != null && dsRbFilePreserveDetail.getRfpsId() != null) { + rfpsType = mesRbFilePreserveSlotService.getById(dsRbFilePreserveDetail.getRfpsId()).getRfpsType(); + } + newDsRbFilePreserveDetail = new MesRbFilePreserveDetailEntity(); + newDsRbFilePreserveDetail.setDetailName(dsRbFilePreserveDetail.getDetailName()); + newDsRbFilePreserveDetail.setDetailIndex(dsRbFilePreserveDetail.getDetailIndex()); + // 工艺要求 + newDsRbFilePreserveDetail.setAsk(dsRbFilePreserveDetail.getAsk()); + newDsRbFilePreserveDetail.setParamName(dsRbFilePreserveDetail.getParamName()); + if (i == 0) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getInDate()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getOutDate()); + } + if (rfpsType == 1) { // 模板一 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } + } else if (rfpsType == 2) { // 模板二 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } + } else if (rfpsType == 3) { // 模板三 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } + } else if (rfpsType == 4) { // 模板四 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } + } else if (rfpsType == 5 || rfpsType == 22) { // 模板五 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } + } else if (rfpsType == 6) { // 模板六 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } + } else if (rfpsType == 7) { // 模板七 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } + } else if (rfpsType == 8) { // 模板八 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } + } else if (rfpsType == 9) { // 模板九 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } + } else if (rfpsType == 10) { // 模板十 + if (i == 0) { + newDsRbFilePreserveDetail.setQualified(qcProduceRun.getQualified()); + } + } else if (rfpsType == 11) { // 模板十一 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } + } else if (rfpsType == 12) { // 模板十二 + if (i == 0) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataThree()); + } + } else if (rfpsType == 13) { // 模板十三 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight()); + } else if (i == 8) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine()); + } else if (i == 9) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen()); + } + } else if (rfpsType == 14) { // 模板十四 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwo()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 8) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 9) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight()); + } else if (i == 10) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine()); + } else if (i == 11) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen()); + } + } else if (rfpsType == 15) { // 模板十五 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataFour()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 8) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 9) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight()); + } else if (i == 10) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine()); + } else if (i == 11) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen()); + } else if (i == 12) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEleven()); + } else if (i == 13) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwelve()); + } + } else if (rfpsType == 16) { // 模板十六 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwo()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 8) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 9) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight()); + } else if (i == 10) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine()); + } else if (i == 11) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen()); + } else if (i == 12) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEleven()); + } else if (i == 13) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwelve()); + } else if (i == 14) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThirteen()); + } else if (i == 15) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFourteen()); + } + } else if (rfpsType == 17) { // 模板十七 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwo()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } + } else if (rfpsType == 18) { // 模板十八 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } + } else if (rfpsType == 19) { // 模板十九 //zxh 20250519 新增模板19和模板20 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataEight()); + } else if (i == 8) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine()); + } else if (i == 9) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen()); + } else if (i == 10) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEleven()); + } else if (i == 11) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwelve()); + } + } else if (rfpsType == 20) { // 模板二十 + if (i == 0) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getInDate()); + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getInDate()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getInDate()); + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getInDate()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getOutDate()); + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getOutDate()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getOutDate()); + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getOutDate()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight()); + } + } else if (rfpsType == 21) { // 模板十三 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight()); + } else if (i == 8) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine()); + } + } + String detailName = dsRbFilePreserveDetail.getDetailName(); + if (detailName != null) { + if (detailName.contains("温度")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getTempSlot()); + } else if (detailName.contains("电导率")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getEleRate()); + } else if (detailName.contains("电流") && !(detailName.contains("壳体") || detailName.contains("插针"))) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getEleStream()); + } else if (detailName.contains("链速")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getVSpeed()); + } else if (detailName.contains("镍离子")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getNiValue()); + } else if (detailName.contains("pH值")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getPhValue()); + } + //zxh 20250604 新增软起时间和工作电压 + else if (detailName.contains("软起时间")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getSoftWorkTime()); + } else if (detailName.contains("工作电压")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getVoltage()); + } else if (detailName.contains("初始电压")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getStartVol()); + } + + } + dsRbFilePreserveDetailList.add(newDsRbFilePreserveDetail); + } + newDsRbFilePreserveSlot.setChildrenList(dsRbFilePreserveDetailList); + } + temporaryList.add(newDsRbFilePreserveSlot); + } + } + private List getCheckListNotNG(Long woId, List wpList, Boolean eleOrPrint) { List checkList = new ArrayList<>(); //组装检测项集合 From 07811ca3352309d3cf515c49764b51456eef6956 Mon Sep 17 00:00:00 2001 From: zangzhipeng Date: Fri, 29 May 2026 10:00:39 +0800 Subject: [PATCH 08/14] =?UTF-8?q?=E5=A4=96=E5=8D=8F=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=94=B6=E5=9B=9E=E7=9A=84=E5=BD=93=E5=89=8D=E5=B7=A5=E5=BA=8F?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oem/controller/OemOrderController.java | 6 ++--- .../service/impl/WorkOrderRunServiceImpl.java | 22 ++++++++++++++++++- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java index 5f2611a35..62a133add 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java @@ -83,12 +83,12 @@ public class OemOrderController extends BladeController { } /** - * 协订单收回 + * 外协订单收回 */ @PostMapping("/oemTakeBack") @ApiOperationSupport(order = 2) - @Operation(summary = "协订单收回", description = "") - @ApiLog("协订单 收回") + @Operation(summary = "外协订单收回", description = "") + @ApiLog("外协订单 收回") public R oemTakeBack(@Valid @RequestBody OemTakeBack oemTakeBack) { return workOrderRunService.oemTakeBack(oemTakeBack); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java index f48d54875..a8ec495b7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java @@ -134,6 +134,10 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl workPlans) { - return workPlans.stream() + WorkPlan firstInternalPlan = workPlans.stream() .filter(plan -> "0".equals(plan.getOem()) && plan.getStatus() == 1) .min(Comparator.comparing(WorkPlan::getOrders)) .orElse(null); + if (firstInternalPlan == null) { + return null; + } + Long frontWpId = firstInternalPlan.getFrontWpId(); + return workPlans.stream() + .filter(plan -> plan.getId().equals(frontWpId)) + .findFirst() + .orElse(null); } private void executeBusinessLogic(YieldOrder yieldOrder, WorkOrder workOrder, WorkOrderRun workOrderRun, @@ -593,6 +609,10 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl Date: Fri, 29 May 2026 10:10:30 +0800 Subject: [PATCH 09/14] =?UTF-8?q?=E7=94=B5=E5=AD=90=E6=A1=A3=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/springblade/desk/util/PriceMatcher.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/util/PriceMatcher.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/util/PriceMatcher.java index 82f3f4be5..aaa6c1348 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/util/PriceMatcher.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/util/PriceMatcher.java @@ -1,5 +1,7 @@ package org.springblade.desk.util; +import com.alibaba.excel.util.StringUtils; + import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashSet; @@ -45,6 +47,9 @@ public class PriceMatcher { * 判断备注是否包含目标价格 */ private static boolean containsPrice(String remark, BigDecimal targetPrice) { + if(StringUtils.isEmpty(remark)){ + return false; + } // 正则表达式匹配价格范围或单价 // 匹配如:350.01-360、467.5、100.5-200.8 String regex = "(\\d+(?:\\.\\d+)?)(?:-(\\d+(?:\\.\\d+)?))?"; From 72bb608170e3df67c69908e0ec7e6fa58a2ff7b2 Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Fri, 29 May 2026 10:19:05 +0800 Subject: [PATCH 10/14] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/AutoCheckMeasuringToolProcessor.java | 43 ++++++++ .../device/feign/ErpMeaToolTaskClient.java | 30 ++++++ .../pojo/entity/MeasuringUpkeepEntity.java | 62 +++++++++-- .../erpdata/feign/IErpDataWmsClient.java | 38 +++++++ .../feign/IErpDataWmsClientFallback.java | 26 +++++ .../pojo/vo/MeasuringToolMaintainVO.java | 26 +++++ .../erpdata/pojo/vo/PurchaseTrackVO.java | 49 +++++++++ .../wms/pojo/entity/StBuyOrder.java | 41 +++++++ .../feign/ErpMeaToolTaskClientImpl.java | 27 +++++ .../device/mapper/MeasuringUpkeepMapper.java | 14 ++- .../device/mapper/MeasuringUpkeepMapper.xml | 34 +++++- .../service/IMeasuringUpkeepService.java | 2 + .../impl/MeasuringUpkeepServiceImpl.java | 53 +++++++++- .../erpdata/feign/ErpDataWmsClient.java | 23 ++++ .../erpdata/mapper/ErpDataWmsMapper.java | 7 ++ .../erpdata/mapper/ErpDataWmsMapper.xml | 25 +++++ .../erpdata/service/IErpDataWmsService.java | 10 ++ .../service/impl/ErpDataWmsServiceImpl.java | 100 ++++++++++++++++++ .../wms/controller/StBuyOrderController.java | 7 +- .../controller/StMoldApplyForController.java | 1 - .../controller/StWmsRequestController.java | 22 ++-- .../wms/service/IStBuyOrderService.java | 2 + .../wms/service/IStWmsRequestService.java | 4 + .../service/impl/StBuyOrderServiceImpl.java | 25 +++++ .../service/impl/StWmsRequestServiceImpl.java | 69 +++++++++--- 25 files changed, 697 insertions(+), 43 deletions(-) create mode 100644 blade-ops/blade-job/src/main/java/org/springblade/job/processor/wms/AutoCheckMeasuringToolProcessor.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/ErpMeaToolTaskClient.java create mode 100644 blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/MeasuringToolMaintainVO.java create mode 100644 blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/PurchaseTrackVO.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/device/feign/ErpMeaToolTaskClientImpl.java diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/wms/AutoCheckMeasuringToolProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/wms/AutoCheckMeasuringToolProcessor.java new file mode 100644 index 000000000..0af6ca723 --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/wms/AutoCheckMeasuringToolProcessor.java @@ -0,0 +1,43 @@ +package org.springblade.job.processor.wms; + +import jakarta.annotation.Resource; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.device.feign.ErpMeaToolTaskClient; +import org.springblade.wms.feign.WmsTaskClient; +import org.springframework.stereotype.Component; +import tech.powerjob.worker.core.processor.ProcessResult; +import tech.powerjob.worker.core.processor.TaskContext; +import tech.powerjob.worker.core.processor.sdk.BasicProcessor; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName AutoCheckMeasuringToolProcessor + * @description: + * @autor: WuSiYu + * @create 2026-05-27 10:27 + **/ + +@Component +@Data +@Slf4j +public class AutoCheckMeasuringToolProcessor implements BasicProcessor { + + @Resource + ErpMeaToolTaskClient erpMeaToolTaskClient; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + log.info("开始执行量具自动检定"); + try { + // 调用远程服务执行量具检定逻辑 + erpMeaToolTaskClient.autoCheckMeasuringTool(); + log.info("===== 量具自动检定完成 ====="); + return new ProcessResult(result); + } catch (Exception e) { + log.error("===== 量具自动检定异常 =====", e); + return new ProcessResult(false, e.getMessage()); + } + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/ErpMeaToolTaskClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/ErpMeaToolTaskClient.java new file mode 100644 index 000000000..c6023dea3 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/ErpMeaToolTaskClient.java @@ -0,0 +1,30 @@ +package org.springblade.desk.device.feign; + +import org.springblade.core.launch.constant.AppConstant; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName ErpMeaToolTaskClient + * @description: + * @autor: WuSiYu + * @create 2026-05-28 14:38 + **/ +@FeignClient( + value = AppConstant.APPLICATION_DESK_NAME +) +public interface ErpMeaToolTaskClient { + + String API_PREFIX = "/feign/client/erp-task"; + + String AUTO_CHECK_MEASURING_TOOL = API_PREFIX + "/autoCheckMeasuringTool"; + + + /** + * 同步量具数据 + */ + @GetMapping(AUTO_CHECK_MEASURING_TOOL) + void autoCheckMeasuringTool(); +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/entity/MeasuringUpkeepEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/entity/MeasuringUpkeepEntity.java index 080913a1c..94bd8ab8f 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/entity/MeasuringUpkeepEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/entity/MeasuringUpkeepEntity.java @@ -1,17 +1,13 @@ package org.springblade.desk.device.pojo.entity; -import lombok.Data; -import io.swagger.v3.oas.annotations.media.Schema; import com.baomidou.mybatisplus.annotation.TableName; - -import java.math.BigDecimal; -import java.util.Date; - +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; -import org.springblade.core.tenant.mp.TenantEntity; import java.io.Serial; +import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -54,7 +50,42 @@ public class MeasuringUpkeepEntity extends BaseEntity { * 审批状态;-1 */ @Schema(description = "审批状态;-1") - private Short approvalStatus; + private Short approvalStaus; + /** + * 物料编号 + */ + @Schema(description = "物料编号") + private String goodsCode; + /** + * 库房编号 + */ + @Schema(description = "库房编号") + private String shCode; + /** + * 库位号 + */ + @Schema(description = "库位号") + private String location; + /** + * 生产标识 + */ + @Schema(description = "生产标识") + private String quantityLevel; + /** + * 检定数量 + */ + @Schema(description = "检定数量") + private Double checkQty; + /** + * 检定确认时间 + */ + @Schema(description = "检定确认时间") + private Date checkTime; + /** + * 检定标记 + */ + @Schema(description = "检定标记") + private Integer checkFlag; /** * 库存物料 */ @@ -69,6 +100,21 @@ public class MeasuringUpkeepEntity extends BaseEntity { */ public static Integer CURSTATUS_YSQ = 1; + /** + * 检定标记 - 未检查 + */ + public static Integer CHECK_FLAG_UNCHECKED = 0; + + /** + * 检定标记 - 检验合格 + */ + public static Integer CHECK_FLAG_PASS = 1; + + /** + * 检定标记 - 检验不合格 + */ + public static Integer CHECK_FLAG_FAIL = 2; + public static Map curStatusMap = new HashMap<>(3); static { diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java index 65a1abf09..1c875b747 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java @@ -3,6 +3,8 @@ package org.springblade.erpdata.feign; import org.springblade.common.constant.LauncherConstant; import org.springblade.common.exception.BusinessException; import org.springblade.core.tool.api.R; +import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO; +import org.springblade.erpdata.pojo.vo.PurchaseTrackVO; import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; import org.springblade.wms.pojo.entity.StRealtimeStock; import org.springframework.cloud.openfeign.FeignClient; @@ -32,12 +34,20 @@ public interface IErpDataWmsClient { String SEND_ERP_BUY_REQUEST = API_PREFIX + "/sendErpBuyRequest"; + String CREATE_OR_REPLACE = API_PREFIX + "/createOrReplace"; + String CREATE_MOLD_PLAN = API_PREFIX + "/createMoldPlan"; String DELETE_MOLD_PLAN = API_PREFIX + "/deleteMoldPlan"; + String SEND_ERP_MAINTENANCE = API_PREFIX + "/sendErpMaintenance"; + String GET_GOODS_EXT_STATUS = API_PREFIX + "/getGoodsExtStatus"; + String GET_BUY_ORDER_STATUS = API_PREFIX + "/getBuyOrderStatus"; + + String GET_MAINTEN_STATUS = API_PREFIX + "/getMaintenStatus"; + /** * 到期送检发送erp */ @@ -50,6 +60,14 @@ public interface IErpDataWmsClient { @PostMapping(SEND_ERP_BUY_REQUEST) R sendErpBuyRequest(@RequestParam("extraBill")String extraBill, @RequestParam("qty")Double qty, @RequestParam("ldapName")String ldapName) throws BusinessException; + /** + * 仓库提请修改erp + */ + @PostMapping(CREATE_OR_REPLACE) + R createOrReplace(@RequestParam("extraBill")String extraBill, @RequestParam("goodsCode")String goodsCode, @RequestParam("flag")String flag, + @RequestParam("qty")Double qty, @RequestParam("amount")Double amount) throws BusinessException; + + /** * 工装计划申报发送erp */ @@ -64,10 +82,30 @@ public interface IErpDataWmsClient { @PostMapping(DELETE_MOLD_PLAN) R deleteMoldPlan(@RequestParam("erpWoCode")String erpWoCode) throws BusinessException; + /** + * 量具保养发送erp + */ + @PostMapping(SEND_ERP_MAINTENANCE) + R sendErpMaintenance(@RequestParam("goodsCode")String goodsCode, @RequestParam("shCode")String shCode, @RequestParam("location")String location, + @RequestParam("needDate") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date needDate, + @RequestParam("flag")String flag ,@RequestParam("checkQty")Double checkQty, @RequestParam("quantityLevel")String quantityLevel) throws BusinessException; + /** * 物料状态监控同步 */ @PostMapping(GET_GOODS_EXT_STATUS) R getGoodsExtStatus(@RequestParam("goodsCode")String goodsCode); + /** + * 采购跟踪 + */ + @PostMapping(GET_BUY_ORDER_STATUS) + R getBuyOrderStatus(@RequestParam("extraBill")String extraBill); + + /** + * 量具检定 + */ + @PostMapping(GET_MAINTEN_STATUS) + R getMaintenStatus(@RequestParam("goodsCode")String goodsCode, @RequestParam("shCode")String shCode, + @RequestParam("location")String location, @RequestParam("createTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date createTime); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java index daa5fafce..3c8a59b41 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java @@ -1,6 +1,8 @@ package org.springblade.erpdata.feign; import org.springblade.core.tool.api.R; +import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO; +import org.springblade.erpdata.pojo.vo.PurchaseTrackVO; import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; import org.springblade.wms.pojo.entity.StRealtimeStock; import org.springframework.format.annotation.DateTimeFormat; @@ -30,6 +32,12 @@ public class IErpDataWmsClientFallback implements IErpDataWmsClient{ return R.fail("获取数据失败"); } + @Override + public R createOrReplace(@RequestParam("extraBill")String extraBill, @RequestParam("goodsCode")String goodsCode, @RequestParam("flag")String flag, + @RequestParam("qty")Double qty, @RequestParam("amount")Double amount) { + return R.fail("获取数据失败"); + } + @Override public R createMoldPlan(@RequestParam(value = "partCode", required = false)String partCode, @RequestParam("moCode")String moCode, @RequestParam("plantype")String plantype, @RequestParam("quantity")Double quantity, @RequestParam("needDate") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date needDate, @RequestParam("level")String level, @RequestParam("keeper")String keeper, @RequestParam("createMan")String createMan, @@ -42,9 +50,27 @@ public class IErpDataWmsClientFallback implements IErpDataWmsClient{ return R.fail("获取数据失败"); } + @Override + public R sendErpMaintenance(@RequestParam("goodsCode")String goodsCode, @RequestParam("shCode")String shCode, @RequestParam("location")String location, + @RequestParam("needDate") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date needDate, + @RequestParam("flag")String flag ,@RequestParam("checkQty")Double checkQty, @RequestParam("quantityLevel")String quantityLevel) { + return R.fail("获取数据失败"); + } + @Override public R getGoodsExtStatus(@RequestParam("goodsCode")String goodsCode) { return R.fail("获取数据失败"); } + @Override + public R getBuyOrderStatus(@RequestParam("extraBill")String extraBill) { + return R.fail("获取数据失败"); + } + + @Override + public R getMaintenStatus(@RequestParam("goodsCode")String goodsCode, @RequestParam("shCode")String shCode, + @RequestParam("location")String location, @RequestParam("createTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date createTime) { + return R.fail("获取数据失败"); + } + } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/MeasuringToolMaintainVO.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/MeasuringToolMaintainVO.java new file mode 100644 index 000000000..9e26f45e0 --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/MeasuringToolMaintainVO.java @@ -0,0 +1,26 @@ +package org.springblade.erpdata.pojo.vo; + +import lombok.Data; + +import java.util.Date; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName MeasuringToolMaintainVO + * @description: + * @autor: WuSiYu + * @create 2026-05-26 21:24 + **/ +@Data +public class MeasuringToolMaintainVO { + + /** + * 检定标记 + */ + private String chkflag; + /** + * 检定标记检定日期 + */ + private Date chkdate; +} diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/PurchaseTrackVO.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/PurchaseTrackVO.java new file mode 100644 index 000000000..d6419080b --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/PurchaseTrackVO.java @@ -0,0 +1,49 @@ +package org.springblade.erpdata.pojo.vo; + +import lombok.Data; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName PurchaseTrackVO + * @description: + * @autor: WuSiYu + * @create 2026-05-25 16:15 + **/ +@Data +public class PurchaseTrackVO { + + /** + * 额外号 + */ + private String orderno; + /** + * 负责人账号 + */ + private String relctrler; + + /** + * 负责人名称 + */ + private String relctrlerName; + + /** + * 需求状态 + */ + private Short reqstat; + + /** + * 采购申请单号(RPNO) + */ + private String rpno; + + /** + * 采购人账号 + */ + private String purcode; + + /** + * 采购人名称 + */ + private String purcodeName; +} diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StBuyOrder.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StBuyOrder.java index 5ab6edd5b..2737412ed 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StBuyOrder.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StBuyOrder.java @@ -165,6 +165,33 @@ public class StBuyOrder extends TenantEntity { @Schema(description = "二级审批时间") private Date approvalTime2; + /** + * 采购部计划员ID + */ + @Schema(description = "采购部计划员ID") + private Long planBuyMan; + + /** + * 采购部计划员名称 + */ + @Schema(description = "采购部计划员名称") + private String planBuyManName; + + /** + * 需求状态 + */ + @Schema(description = "需求状态") + private Short needStatus; + + /** + * erp采购单号 + */ + @Schema(description = "erp采购单号") + private String erpBuyCode; + + @TableField(exist = false) + private String buyManName; + @TableField(exist = false) private String declareManName; @@ -237,5 +264,19 @@ public class StBuyOrder extends TenantEntity { */ public static final short APPROVAL_STATUS_SECOND_UNPASS = 4; + /** + * 需求状态 0等候;1计划确认;2已生成定单;4未生成定单;5已做批料;6未批准;7需求取消;8车间取消;9车间批准;10车间未批 + */ + public static Short NEED_STATUS_WAIT = 0; // 等候 + public static Short NEED_STATUS_PLAN_CONFIRM = 1; // 计划确认 + public static Short NEED_STATUS_ORDER_GENERATED = 2; // 已生成定单 + public static Short NEED_STATUS_ORDER_NOT_GENERATED = 4; // 未生成定单 + public static Short NEED_STATUS_BATCH_MADE = 5; // 已做批料 + public static Short NEED_STATUS_NOT_APPROVED = 6; // 未批准 + public static Short NEED_STATUS_REQUIRE_CANCEL = 7; // 需求取消 + public static Short NEED_STATUS_WORKSHOP_CANCEL = 8; // 车间取消 + public static Short NEED_STATUS_WORKSHOP_APPROVE = 9; // 车间批准 + public static Short NEED_STATUS_WORKSHOP_NOT_APPROVE = 10;// 车间未批 + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/feign/ErpMeaToolTaskClientImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/feign/ErpMeaToolTaskClientImpl.java new file mode 100644 index 000000000..6c9395dca --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/feign/ErpMeaToolTaskClientImpl.java @@ -0,0 +1,27 @@ +package org.springblade.desk.device.feign; + +import io.swagger.v3.oas.annotations.Hidden; +import jakarta.annotation.Resource; +import org.springblade.desk.device.service.IMeasuringUpkeepService; +import org.springframework.web.bind.annotation.RestController; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName ErpMeaToolTaskClientImpl + * @description: + * @autor: WuSiYu + * @create 2026-05-28 14:33 + **/ +@RestController +@Hidden +public class ErpMeaToolTaskClientImpl implements ErpMeaToolTaskClient { + + @Resource + private IMeasuringUpkeepService measuringUpkeepService; + + @Override + public void autoCheckMeasuringTool() { + measuringUpkeepService.autoCheckMeasuringTool(); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.java index e1e43cd46..92d00c0f5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.java @@ -1,14 +1,15 @@ package org.springblade.desk.device.mapper; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity; import org.springblade.desk.device.pojo.excel.MeasuringUpkeepExcel; import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery; import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.apache.ibatis.annotations.Param; import org.springblade.desk.device.pojo.vo.ToolingLibraryVO; +import org.springblade.wms.pojo.vo.StRealtimeStockVO; import java.util.List; @@ -46,4 +47,9 @@ public interface MeasuringUpkeepMapper extends BaseMapper */ List exportMeasuringUpkeep(@Param("ew") Wrapper queryWrapper); + StRealtimeStockVO getStockById(Long id); + + void updateStock(Long id, Double checkQty); + + void updateStockById(Long miId, Double checkQty); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.xml index 720fbc8e6..b2523fad2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.xml @@ -92,6 +92,7 @@ + @@ -176,7 +177,7 @@ and (toolingLibrary.muStatus == null or toolingLibrary.muStatus == '') and (toolingLibrary.goodsName == null or toolingLibrary.goodsName == '') and (toolingLibrary.piNo == null or toolingLibrary.piNo == '')"> - AND st.sum_num >= 270 + AND st.stay_maintain_num >= 270 @@ -210,4 +211,35 @@ FROM MES_MEASURING_UPKEEP ${ew.customSqlSegment} + + + + UPDATE st_realtime_stock + SET occupy_quantity = occupy_quantity + #{checkQty}, + is_measure_maintenance = 1, + update_time = NOW() + WHERE id = #{id} + + + + UPDATE st_realtime_stock + SET STAY_MAINTAIN_NUM = 0, + is_measure_maintenance = 0, + occupy_quantity = occupy_quantity - #{checkQty}, + update_time = NOW() + WHERE id = #{id} + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IMeasuringUpkeepService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IMeasuringUpkeepService.java index f6846eb8c..4714b40d1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IMeasuringUpkeepService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IMeasuringUpkeepService.java @@ -58,4 +58,6 @@ public interface IMeasuringUpkeepService extends BaseService ids); + + void autoCheckMeasuringTool(); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/MeasuringUpkeepServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/MeasuringUpkeepServiceImpl.java index a329a8b21..d9a997209 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/MeasuringUpkeepServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/MeasuringUpkeepServiceImpl.java @@ -2,9 +2,12 @@ package org.springblade.desk.device.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.springblade.common.exception.BusinessException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; @@ -16,6 +19,9 @@ import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery; import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO; import org.springblade.desk.device.pojo.vo.ToolingLibraryVO; import org.springblade.desk.device.service.IMeasuringUpkeepService; +import org.springblade.erpdata.feign.IErpDataWmsClient; +import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO; +import org.springblade.wms.pojo.vo.StRealtimeStockVO; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -51,6 +57,9 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl selectMeasuringUpkeepPage(IPage page, MeasuringUpkeepQuery measuringUpkeep) { // return page.setRecords(baseMapper.selectMeasuringUpkeepPage(page, measuringUpkeep)); @@ -135,15 +144,57 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl { MeasuringUpkeepEntity entity = new MeasuringUpkeepEntity(); entity.setMiId(id); - entity.setStatus(MeasuringUpkeepEntity.CURSTATUS_NEW); + StRealtimeStockVO stock = baseMapper.getStockById(id); + entity.setCheckFlag(0); entity.setMmCode(nextCode(1)); + entity.setGoodsCode(stock.getGoodsCode()); + entity.setShCode(stock.getShCode()); + entity.setLocation(stock.getLocation()); + entity.setCheckQty(stock.getQuantity()); + entity.setQuantityLevel("0"); entity.setCreateMan(AuthUtil.getUser() != null ? AuthUtil.getUser().getUserId() : 1); list.add(entity); + + try { + erpDataWmsClient.sendErpMaintenance(entity.getGoodsCode(),entity.getShCode(),entity.getLocation(), + new Date(),"0",entity.getCheckQty(), "0"); + } catch (BusinessException e) { + throw new RuntimeException("量具保养发送ERP失败:" + e.getMessage()); + } + + baseMapper.updateStock(id, entity.getCheckQty()); }); return R.status(this.saveBatch(list)); } + @Override + public void autoCheckMeasuringTool() { + try { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_deleted", 0); + queryWrapper.eq("check_flag", MeasuringUpkeepEntity.CHECK_FLAG_UNCHECKED); + queryWrapper.orderByDesc("create_time"); + List list = baseMapper.selectList(queryWrapper); + + for (MeasuringUpkeepEntity entity : list) { + MeasuringToolMaintainVO maintainVO = erpDataWmsClient.getMaintenStatus(entity.getGoodsCode(),entity.getShCode(), + entity.getLocation(),entity.getCreateTime()).getData(); + entity.setCheckFlag(Integer.valueOf(maintainVO.getChkflag())); + entity.setCheckTime(maintainVO.getChkdate()); + + if (entity.getCheckFlag() == 1) { + baseMapper.updateStockById(entity.getMiId(), entity.getCheckQty()); + } + } + + log.info("===== 量具保养检验状态定时更新完成 =====", list.size()); + } catch (Exception e) { + log.info("===== 量具保养检验状态定时更新异常 =====", e); + } + } + /** * 构建请求体 */ diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java index ea60dbc7c..2cb8b02c7 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java @@ -5,6 +5,8 @@ import lombok.AllArgsConstructor; import org.springblade.common.exception.BusinessException; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; +import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO; +import org.springblade.erpdata.pojo.vo.PurchaseTrackVO; import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; import org.springblade.erpdata.service.IErpDataWmsService; import org.springblade.wms.pojo.entity.StRealtimeStock; @@ -37,6 +39,11 @@ public class ErpDataWmsClient implements IErpDataWmsClient{ return R.data(erpDataWmsService.sendErpBuyRequest(extraBill, qty, ldapName)); } + @Override + public R createOrReplace(String extraBill, String goodsCode, String flag, Double qty, Double amount) throws BusinessException { + return R.data(erpDataWmsService.createOrReplace(extraBill, goodsCode, flag, qty, amount)); + } + @Override public R createMoldPlan(String partCode, String moCode, String plantype, Double quantity, Date needDate, String level, String keeper, String createMan, String memo, String urgentType, String erpWoCode) throws BusinessException { @@ -49,8 +56,24 @@ public class ErpDataWmsClient implements IErpDataWmsClient{ return R.data(erpDataWmsService.deleteMoldPlan(erpWoCode)); } + @Override + public R sendErpMaintenance(String goodsCode, String shCode, String location, Date needDate, + String flag ,Double checkQty, String quantityLevel) throws BusinessException { + return R.data(erpDataWmsService.sendErpMaintenance(goodsCode, shCode, location, needDate, flag, checkQty, quantityLevel)); + } + @Override public R getGoodsExtStatus(String goodsCode) { return R.data(erpDataWmsService.getGoodsExtStatus(goodsCode)); } + + @Override + public R getBuyOrderStatus(String extraBill) { + return R.data(erpDataWmsService.getBuyOrderStatus(extraBill)); + } + + @Override + public R getMaintenStatus(String goodsCode, String shCode, String location, Date createTime) { + return R.data(erpDataWmsService.getMaintenStatus(goodsCode, shCode, location, createTime)); + } } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java index 1597fbb5c..14931cd68 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java @@ -1,8 +1,12 @@ package org.springblade.erpdata.mapper; import com.baomidou.mybatisplus.core.mapper.Mapper; +import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO; +import org.springblade.erpdata.pojo.vo.PurchaseTrackVO; import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; +import java.util.Date; + /** * @version 1.0 * @program: jonhon-mes-svr @@ -16,4 +20,7 @@ public interface ErpDataWmsMapper extends Mapper { StGoodsExtStatusVO getGoodsExtStatus(String goodsCode); + PurchaseTrackVO getBuyOrderStatus(String extraBill); + + MeasuringToolMaintainVO getMaintenStatus(String goodsCode, String shCode, String location, Date createTime); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml index f4889411f..367940889 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml @@ -11,4 +11,29 @@ WHERE prtno = #{goodsCode} + + + diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java index 81fc1509f..76f732480 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java @@ -1,6 +1,8 @@ package org.springblade.erpdata.service; import org.springblade.common.exception.BusinessException; +import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO; +import org.springblade.erpdata.pojo.vo.PurchaseTrackVO; import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; import org.springblade.wms.pojo.entity.StRealtimeStock; @@ -26,4 +28,12 @@ public interface IErpDataWmsService { String deleteMoldPlan(String erpWoCode) throws BusinessException; StGoodsExtStatusVO getGoodsExtStatus(String goodsCode); + + String createOrReplace(String extraBill, String goodsCode, String flag, Double qty, Double amount) throws BusinessException; + + PurchaseTrackVO getBuyOrderStatus(String extraBill); + + String sendErpMaintenance(String goodsCode, String shCode, String location, Date needDate, String flag, Double checkQty, String quantityLevel) throws BusinessException; + + MeasuringToolMaintainVO getMaintenStatus(String goodsCode, String shCode, String location, Date createTime); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java index 6bba80b45..3af57fa64 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java @@ -6,6 +6,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springblade.common.exception.BusinessException; import org.springblade.erpdata.mapper.ErpDataWmsMapper; +import org.springblade.erpdata.pojo.vo.MeasuringToolMaintainVO; +import org.springblade.erpdata.pojo.vo.PurchaseTrackVO; import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; import org.springblade.erpdata.service.IErpDataWmsService; import org.springblade.wms.pojo.entity.StRealtimeStock; @@ -125,6 +127,47 @@ public class ErpDataWmsServiceImpl implements IErpDataWmsService { return excflag; } + @Override + public String createOrReplace(String extraBill, String goodsCode, String flag, Double qty, Double amount) throws BusinessException { + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 指定存储过程名(包含 DB Link) + .withProcedureName("dba_mgr.pro_rbmesinvdeptoutchg") + // 关闭元数据访问(DBLink 必须加) + .withoutProcedureColumnMetaDataAccess() + // 显式声明参数(顺序必须和存储过程一致) + .declareParameters( + new SqlParameter("v_wono", Types.VARCHAR), // IN + new SqlParameter("v_prtno", Types.VARCHAR), // IN + new SqlParameter("v_flag", Types.VARCHAR), // IN + new SqlParameter("v_reqqty", Types.DOUBLE), // IN + new SqlParameter("v_amount", Types.DOUBLE), // IN + new SqlOutParameter("v_excnote", Types.VARCHAR),// OUT + new SqlOutParameter("v_excflag", Types.VARCHAR) // OUT + ); + + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_wono", extraBill == null ? "" : extraBill); + inParams.put("v_prtno", goodsCode == null ? "" : goodsCode); + inParams.put("v_flag", flag == null ? "" : flag); + inParams.put("v_reqqty", qty == null ? 0D : qty); + inParams.put("v_amount", amount == null ? 0D : amount); + + // 3. 执行并获取结果 Map + Map resultMap = jdbcCall.execute(inParams); + + // 4. 提取输出参数 + String excflag = (String) resultMap.get("v_excflag"); + String excnote = (String) resultMap.get("v_excnote"); + + // 5. 业务判断 + if ("0".equals(excflag)) { + throw new BusinessException("申报信息修改或删除erp失败!" + excnote); + } + + return excflag; + } + @Override public String createMoldPlan(String partCode, String moCode, String plantype, Double quantity, Date needDate, String level, String keeper, String createMan, String memo, String urgentType, String erpWoCode) throws BusinessException{ @@ -215,9 +258,66 @@ public class ErpDataWmsServiceImpl implements IErpDataWmsService { return excflag; } + @Override + public String sendErpMaintenance(String goodsCode, String shCode, String location, Date needDate, + String flag ,Double checkQty, String quantityLevel) throws BusinessException { + // 1. 创建存储过程调用 + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 存储过程名 + DBLink + .withProcedureName("dba_mgr.pro_rbmestoolchkmtn") + // 关闭元数据(DBLink必须加) + .withoutProcedureColumnMetaDataAccess() + // 声明参数:顺序必须和存储过程一致! + .declareParameters( + new SqlParameter("v_prtno", Types.VARCHAR), + new SqlParameter("v_warno", Types.VARCHAR), + new SqlParameter("v_warlocno", Types.VARCHAR), + new SqlParameter("v_applydate", Types.DATE), + new SqlParameter("v_typeflag", Types.VARCHAR), + new SqlParameter("v_chkqty", Types.DOUBLE), + new SqlParameter("v_prtlotno", Types.VARCHAR), + new SqlOutParameter("v_excnote", Types.VARCHAR), + new SqlOutParameter("v_excflag", Types.VARCHAR) + ); + + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_prtno", goodsCode); + inParams.put("v_warno", shCode); + inParams.put("v_warlocno", location); + inParams.put("v_applydate", needDate); + inParams.put("v_typeflag", flag); + inParams.put("v_chkqty", checkQty); + inParams.put("v_prtlotno", quantityLevel); + + // 3. 执行存储过程 + Map resultMap = jdbcCall.execute(inParams); + + // 4. 获取输出参数 + String excflag = (String) resultMap.get("v_excflag"); + String excnote = (String) resultMap.get("v_excnote"); + + // 5. 业务判断 + if ("0".equals(excflag)) { + throw new BusinessException("量具保养发送失败! " + excnote); + } + + return excflag; + } + @Override public StGoodsExtStatusVO getGoodsExtStatus(String goodsCode){ return erpDataWmsMapper.getGoodsExtStatus(goodsCode); } + @Override + public PurchaseTrackVO getBuyOrderStatus(String extraBill) { + return erpDataWmsMapper.getBuyOrderStatus(extraBill); + } + + @Override + public MeasuringToolMaintainVO getMaintenStatus(String goodsCode, String shCode, String location, Date createTime) { + return erpDataWmsMapper.getMaintenStatus(goodsCode, shCode, location, createTime); + } + } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StBuyOrderController.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StBuyOrderController.java index 3d461d90a..b427ed86d 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StBuyOrderController.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StBuyOrderController.java @@ -56,9 +56,10 @@ public class StBuyOrderController extends BladeController { @ApiOperationSupport(order = 1) @ApiLog("采购申请单 详情") @Operation(summary = "详情", description = "传入stBuyOrder") - public R detail(StBuyOrder stBuyOrder) { - StBuyOrder detail = stBuyOrderService.getOne(Condition.getQueryWrapper(stBuyOrder)); - return R.data(StBuyOrderWrapper.build().entityVO(detail)); + public R detail(StBuyOrder stBuyOrder) { +// StBuyOrder detail = stBuyOrderService.getOne(Condition.getQueryWrapper(stBuyOrder)); + StBuyOrder detail = stBuyOrderService.getDetail(stBuyOrder.getId()); + return R.data(detail); } /** * 采购申请单 分页 diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StMoldApplyForController.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StMoldApplyForController.java index d61c358a9..769fa4725 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StMoldApplyForController.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StMoldApplyForController.java @@ -22,7 +22,6 @@ import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.wms.excel.StMoldApplyForExcel; import org.springblade.wms.pojo.dto.StMoldApplyForDTO; -import org.springblade.wms.pojo.entity.StBuyOrder; import org.springblade.wms.pojo.entity.StMoldApplyFor; import org.springblade.wms.pojo.vo.StMoldApplyForVO; import org.springblade.wms.service.IStMoldApplyForService; diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StWmsRequestController.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StWmsRequestController.java index a4ec0e099..1540d1cca 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StWmsRequestController.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StWmsRequestController.java @@ -100,16 +100,16 @@ public class StWmsRequestController extends BladeController { return R.status(stWmsRequestService.save(stWmsRequest)); } -// /** -// * 仓库提请记录 修改 -// */ -// @PostMapping("/update") -// @ApiOperationSupport(order = 5) -// @ApiLog("仓库提请记录 修改") -// @Operation(summary = "修改", description = "传入stWmsRequest") -// public R update(@Valid @RequestBody StWmsRequest stWmsRequest) { -// return R.status(stWmsRequestService.updateByErp(stWmsRequest)); -// } + /** + * 仓库提请记录 修改 + */ + @PostMapping("/update") + @ApiOperationSupport(order = 5) + @ApiLog("仓库提请记录 修改") + @Operation(summary = "修改", description = "传入stWmsRequest") + public R update(@Valid @RequestBody StWmsRequest stWmsRequest) { + return R.status(stWmsRequestService.updateByErp(stWmsRequest)); + } /** * 仓库提请提交 @@ -158,7 +158,7 @@ public class StWmsRequestController extends BladeController { @ApiLog("仓库提请记录 删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { - return R.status(stWmsRequestService.deleteLogic(Func.toLongList(ids))); + return R.status(stWmsRequestService.deleteByErp(Func.toLongList(ids))); } /** diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStBuyOrderService.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStBuyOrderService.java index 7bff69252..8add626e2 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStBuyOrderService.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStBuyOrderService.java @@ -60,6 +60,8 @@ public interface IStBuyOrderService extends BaseService { Long buyOrderApplyFor(String goodsCode, Double buyQty, Long userId, Date buyDate, Long checkUserId, Date checkDate) throws Exception; + StBuyOrder getDetail(Long id); + // JSONObject otherPlanDetail(Long id, String prtno); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStWmsRequestService.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStWmsRequestService.java index ef93000dd..56def773f 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStWmsRequestService.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStWmsRequestService.java @@ -45,5 +45,9 @@ public interface IStWmsRequestService extends BaseService { void approvalRequest(Long id, Short approvalResult, BladeUser user); void batchSaveOrEdit(List stWmsRequestList, BladeUser user); + + boolean updateByErp(StWmsRequest stWmsRequest); + + boolean deleteByErp(List longList); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java index cd5b573ae..ac2a4f7f8 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java @@ -13,6 +13,8 @@ import org.springblade.core.secure.BladeUser; import org.springblade.core.tool.api.R; import org.springblade.desk.common.feign.IMesApprovalRecordClient; import org.springblade.desk.common.pojo.entity.MesApprovalRecordEntity; +import org.springblade.erpdata.feign.IErpDataWmsClient; +import org.springblade.erpdata.pojo.vo.PurchaseTrackVO; import org.springblade.system.feign.ISysClient; import org.springblade.system.feign.IUserClient; import org.springblade.system.pojo.entity.User; @@ -54,6 +56,8 @@ public class StBuyOrderServiceImpl extends BaseServiceImpl selectStBuyOrderPage(IPage page, StBuyOrderVO stBuyOrder) { @@ -374,6 +378,27 @@ public class StBuyOrderServiceImpl extends BaseServiceImpl userList = userClient.listByNameNolike(purchaseTrackVO.getRelctrlerName()); + buyOrder.setPlanBuyMan(userList.get(0).getId()); + buyOrder.setPlanBuyManName(purchaseTrackVO.getRelctrlerName()); + List users = userClient.listByNameNolike(purchaseTrackVO.getPurcodeName()); + buyOrder.setBuyMan(users.get(0).getId()); + buyOrder.setBuyManName(purchaseTrackVO.getPurcodeName()); + + this.updateById(buyOrder); + return buyOrder; + } + // @Override // public JSONObject otherPlanDetail(Long boId, String goodsCode) { //// JSONObject o = (JSONObject) prPlateGoodsRecordWebService.listByRecordDetail(boId,goodsCode); diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StWmsRequestServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StWmsRequestServiceImpl.java index 5ba7f3ab1..b509dd873 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StWmsRequestServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StWmsRequestServiceImpl.java @@ -1,5 +1,6 @@ package org.springblade.wms.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; @@ -24,7 +25,6 @@ import org.springblade.wms.pojo.entity.StGoods; import org.springblade.wms.pojo.entity.StWmsRequest; import org.springblade.wms.pojo.vo.StWmsRequestVO; import org.springblade.wms.service.IStBuyOrderService; -import org.springblade.wms.service.IStGoodsService; import org.springblade.wms.service.IStWmsRequestService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -225,19 +225,60 @@ public class StWmsRequestServiceImpl extends BaseServiceImpl deleteIds){ + if (CollUtil.isNotEmpty(deleteIds)) { + for (Long id : deleteIds) { + StWmsRequest stWmsRequest = this.getById(id); + StBuyOrder stBuyOrder = stBuyOrderService.getById(stWmsRequest.getBoId()); + StGoods goods = stGoodsMapper.selectById(stBuyOrder.getGoodsId()); + if (stWmsRequest == null) continue; + try { + erpDataWmsClient.createOrReplace( + stBuyOrder.getExtraBill(), + goods.getGoodsCode(), + "1", + stWmsRequest.getRequestQty(), + 0.0); + } catch (BusinessException e) { + throw new RuntimeException("删除模具计划失败:" + e.getMessage()); + } + + Double afterQty = stBuyOrder.getDrawQuantity() - stWmsRequest.getRequestQty(); + stBuyOrder.setDrawQuantity(afterQty); + stBuyOrder.setSurDrawQty(stBuyOrder.getBuyQty() - afterQty); + stBuyOrderService.updateById(stBuyOrder); + + } + } + return this.deleteLogic(deleteIds); + } @Override public List exportStWmsRequest(Wrapper queryWrapper) { From 61fcfa25c4576531c0f1c57a094b9fea9db890d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=BE=E7=BF=94?= Date: Fri, 29 May 2026 10:20:01 +0800 Subject: [PATCH 11/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FmProjectApplicationServiceImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectApplicationServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectApplicationServiceImpl.java index e29089c9e..cdad78168 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectApplicationServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectApplicationServiceImpl.java @@ -208,11 +208,11 @@ public class FmProjectApplicationServiceImpl extends BaseServiceImpl stoneList = fmProjectApplication.getStoneList(); if(CollectionUtils.isNotEmpty(stoneList)){ From f3c7a46b7db77f9e8f67793eb26c6e6880db4fc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Fri, 29 May 2026 10:25:05 +0800 Subject: [PATCH 12/14] =?UTF-8?q?=E5=A4=96=E5=8D=8F=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8F=90=E4=BA=A4erp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erpdata/feign/IErpDataOemClient.java | 20 +- .../feign/IErpDataOemClientFallback.java | 4 +- .../produce/mapper/WorkOrderRunMapper.java | 4 + .../produce/mapper/WorkOrderRunMapper.xml | 6 + .../service/impl/WorkOrderRunServiceImpl.java | 88 ++++++- .../erpdata/feign/ErpDataOemClientImpl.java | 8 +- .../erpdata/service/IErpDataOemService.java | 10 +- .../service/impl/ErpDataOemServiceImpl.java | 240 ++++++++---------- 8 files changed, 219 insertions(+), 161 deletions(-) diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java index 7fe7606cc..ddc96503b 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java @@ -62,16 +62,12 @@ public interface IErpDataOemClient { * @param v_pedate 计划完成时间 yyyy-MM-dd HH:mm:ss * @param v_woporqty 下达数量 * @param v_pricetype 加工类型 - * @param v_excnote 返回结果 OUT游标参数,非必填 - * @param v_excflag 返回状态 OUT游标参数,非必填 - * @param v_old_wono 老系统生成的外协订单号 OUT游标参数,非必填 */ @GetMapping(FULL_ORDER_OUTSOURCING) - R fullOrderOutsourcing(@RequestParam("v_prtno") String v_prtno, @RequestParam("v_prtlotno") String v_prtlotno, @RequestParam("v_splcode") String v_splcode, + R fullOrderOutsourcing(@RequestParam("v_prtno") String v_prtno, @RequestParam("v_prtlotno") String v_prtlotno, @RequestParam("v_splcode") String v_splcode, @RequestParam("v_splycode") String v_splycode, @RequestParam("v_seqcc") String v_seqcc, @RequestParam("v_sono") String v_sono, - @RequestParam("v_planner") String v_planner, @RequestParam("v_pedate") String v_pedate, @RequestParam("v_woporqty") Long v_woporqty, - @RequestParam("v_pricetype") String v_pricetype, @RequestParam(value = "v_excnote", defaultValue = "", required = false) String v_excnote, @RequestParam(value = "v_excflag", defaultValue = "", required = false) String v_excflag, - @RequestParam(value = "v_old_wono", defaultValue = "", required = false) String v_old_wono); + @RequestParam("v_planner") String v_planner, @RequestParam("v_pedate") String v_pedate, @RequestParam("v_woporqty") Double v_woporqty, + @RequestParam(value = "v_pricetype", required = false) String v_pricetype); /** @@ -94,16 +90,12 @@ public interface IErpDataOemClient { * @param v_roam_no B号 * @param v_craft_no C号 * @param v_craft_id 零件工艺ID - * @param v_old_wono 老系统生成的外协订单号 OUT游标参数,非必填 - * @param v_excnote 返回结果 OUT游标参数,非必填 - * @param v_excflag 返回状态 OUT游标参数,非必填 */ @GetMapping(COLLABORATIVE_OUTSOURCING) - R collaborativeOutsourcing(@RequestParam("v_prtno") String v_prtno, @RequestParam("v_prtlotno") String v_prtlotno, @RequestParam("v_woreqdat") String v_woreqdat, - @RequestParam("v_woporqty") Long v_woporqty, @RequestParam(value = "v_usedeptcode", required = false) String v_usedeptcode, @RequestParam(value = "v_usedept", required = false) String v_usedept, + R collaborativeOutsourcing(@RequestParam("v_prtno") String v_prtno, @RequestParam("v_prtlotno") String v_prtlotno, @RequestParam("v_woreqdat") String v_woreqdat, + @RequestParam("v_woporqty") Double v_woporqty, @RequestParam(value = "v_usedeptcode", required = false) String v_usedeptcode, @RequestParam(value = "v_usedept", required = false) String v_usedept, @RequestParam("v_splcode") String v_splcode, @RequestParam("v_splycode") String v_splycode, @RequestParam("v_kdofplat") String v_kdofplat, @RequestParam("v_wono") String v_wono, @RequestParam("v_sono") String v_sono, @RequestParam("v_mtnman") String v_mtnman, @RequestParam("v_planner") String v_planner, @RequestParam("v_yardman") String v_yardman, @RequestParam("v_roam_no") String v_roam_no, @RequestParam("v_craft_no") String v_craft_no, - @RequestParam("v_craft_id") Long v_craft_id, @RequestParam(value = "v_old_wono", defaultValue = "", required = false) String v_old_wono, @RequestParam(value = "v_excnote", defaultValue = "", required = false) String v_excnote, - @RequestParam(value = "v_excflag", defaultValue = "", required = false) String v_excflag); + @RequestParam("v_craft_id") Long v_craft_id); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java index da5723554..3b92cf4fe 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java @@ -27,12 +27,12 @@ public class IErpDataOemClientFallback implements IErpDataOemClient { } @Override - public R fullOrderOutsourcing(String v_prtno, String v_prtlotno, String v_splcode, String v_splycode, String v_seqcc, String v_sono, String v_planner, String v_pedate, Long v_woporqty, String v_pricetype, String v_excnote, String v_excflag, String v_old_wono) { + public R fullOrderOutsourcing(String v_prtno, String v_prtlotno, String v_splcode, String v_splycode, String v_seqcc, String v_sono, String v_planner, String v_pedate, Double v_woporqty, String v_pricetype) { return R.fail("协作外协订单接收 失败"); } @Override - public R collaborativeOutsourcing(String v_prtno, String v_prtlotno, String v_woreqdat, Long v_woporqty, String v_usedeptcode, String v_usedept, String v_splcode, String v_splycode, String v_kdofplat, String v_wono, String v_sono, String v_mtnman, String v_planner, String v_yardman, String v_roam_no, String v_craft_no, Long v_craft_id, String v_old_wono, String v_excnote, String v_excflag) { + public R collaborativeOutsourcing(String v_prtno, String v_prtlotno, String v_woreqdat, Double v_woporqty, String v_usedeptcode, String v_usedept, String v_splcode, String v_splycode, String v_kdofplat, String v_wono, String v_sono, String v_mtnman, String v_planner, String v_yardman, String v_roam_no, String v_craft_no, Long v_craft_id) { return R.fail("整单外协订单接收 失败"); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.java index 83fc35307..54cdb36b9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.java @@ -12,6 +12,7 @@ import org.springblade.desk.oem.pojo.vo.OemOrderVO; import org.springblade.desk.produce.pojo.entity.WorkOrderRun; import java.util.List; +import java.util.Map; /** * 车间订单运行记录表 Mapper 接口 @@ -47,4 +48,7 @@ public interface WorkOrderRunMapper extends BaseMapper { */ List selectOemApproval(IPage page, @Param("query") OemApprovalQuery query); + Map selectRoamAndCraftNoByCraftId(Long craftId); + + Map selectRoamAndCraftNoByPartCode(String partCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml index f5ba6c869..0bdab46ca 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml @@ -389,4 +389,10 @@ + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java index a8ec495b7..cd3b42ce8 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java @@ -1,5 +1,6 @@ package org.springblade.desk.produce.service.impl; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.annotation.Resource; @@ -337,8 +338,7 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl() - .eq(WorkPlan::getId, wp.getNextWpId())); + WorkPlan nextWp = workPlanMapper.selectOne(new LambdaQueryWrapper().eq(WorkPlan::getId, wp.getNextWpId())); workOrderRun.setInCustomer(nextWp.getOcId()); } else { workOrderRun.setInCustomer(wp.getOcId()); @@ -346,6 +346,52 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl processSets = processSetMapper.selectByIds(wpList.stream().filter(workPlan -> oem.getId().equals(workPlan.getOcId())).map(WorkPlan::getPpsId).collect(Collectors.toList())); + String ppsName = processSets.stream().map(BsProcessSetEntity::getName).collect(Collectors.joining(",")); + // 获取wpList最大的计划结束时间 + LocalDateTime maxPlanEndTime = wpList.stream().map(WorkPlan::getPlanEndTime).max(LocalDateTime::compareTo).orElse(null); + if (maxPlanEndTime == null) { + maxPlanEndTime = LocalDateTime.now(); + } + wxWoCode = erpDataOemClient.fullOrderOutsourcing(yo.getPartCode(), yo.getProductIdent(), wo.getBatchNo(), oem != null ? oem.getCode() : "", ppsName, yo.getYoCode(), + planner != null ? planner.getName() : "", maxPlanEndTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), wo.getMakeQty(), "").getData(); + } else { + User user = UserCache.getUser(workOrderRun.getCreateUser()); + User dispatcher = UserCache.getUser(wo.getDispatcher()); + String roamNo = null; + String craftNo = null; + Long craftId = yo.getCraftId(); + // 返工单号 + if (craftId != null && wo.getReworkCode() == null) { + Map craftInfo = baseMapper.selectRoamAndCraftNoByCraftId(craftId); + roamNo = craftInfo.get("roamNo"); + craftNo = craftInfo.get("craftNo"); + if (roamNo == null) { + craftInfo = baseMapper.selectRoamAndCraftNoByPartCode(yo.getPartCode()); + roamNo = craftInfo.get("roamNo"); + craftNo = craftInfo.get("craftNo"); + } + } else if (StringUtils.isNotBlank(wo.getReworkCode())) { + roamNo = wo.getReworkCode(); + craftNo = "返修"; + craftId = Long.valueOf(wo.getReworkNo()); + } + String format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault()).format(yo.getDemandDate().toInstant()); + wxWoCode = erpDataOemClient.collaborativeOutsourcing(yo.getPartCode(), yo.getProductIdent(), format, wo.getMakeQty(), yo.getUseDeptCode(), yo.getUseDept(), + wo.getBatchNo(), oem != null ? oem.getCode() : "", yo.getPlate(), yo.getYpCode(), yo.getYoCode(), user != null ? user.getName() : "", + planner != null ? planner.getName() : "", dispatcher != null ? dispatcher.getName() : "", roamNo, craftNo, craftId).getData(); + } + // 赋值wx号,erp返回 + workOrderRun.setWoCode(wxWoCode); + if (StringUtils.isNotBlank(wxWoCode)) { + updateWorkPlanAndOrderStatus(wo, wxWoCode); + } } else { //转厂内业务 WorkPlan nextWorkPlan; @@ -477,6 +523,44 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl fullOrderOutsourcing(String v_prtno, String v_prtlotno, String v_splcode, String v_splycode, String v_seqcc, String v_sono, String v_planner, String v_pedate, Double v_woporqty, String v_pricetype) { Date pedate = DateUtil.parse(v_pedate, "yyyy-MM-dd HH:mm:ss"); - return erpDataOemService.fullOrderOutsourcing(v_prtno, v_prtlotno, v_splcode, v_splycode, v_seqcc, v_sono, v_planner, pedate, v_woporqty, v_pricetype, v_excnote, v_excflag, v_old_wono); + return R.data(erpDataOemService.fullOrderOutsourcing(v_prtno, v_prtlotno, v_splcode, v_splycode, v_seqcc, v_sono, v_planner, pedate, v_woporqty, v_pricetype)); } @Override - public R collaborativeOutsourcing(String v_prtno, String v_prtlotno, String v_woreqdat, Long v_woporqty, String v_usedeptcode, String v_usedept, String v_splcode, String v_splycode, String v_kdofplat, String v_wono, String v_sono, String v_mtnman, String v_planner, String v_yardman, String v_roam_no, String v_craft_no, Long v_craft_id, String v_old_wono, String v_excnote, String v_excflag) { + public R collaborativeOutsourcing(String v_prtno, String v_prtlotno, String v_woreqdat, Double v_woporqty, String v_usedeptcode, String v_usedept, String v_splcode, String v_splycode, String v_kdofplat, String v_wono, String v_sono, String v_mtnman, String v_planner, String v_yardman, String v_roam_no, String v_craft_no, Long v_craft_id) { Date woreqdat = DateUtil.parse(v_woreqdat, "yyyy-MM-dd HH:mm:ss"); - return erpDataOemService.collaborativeOutsourcing(v_prtno, v_prtlotno, woreqdat, v_woporqty, v_usedeptcode, v_usedept, v_splcode, v_splycode, v_kdofplat, v_wono, v_sono, v_mtnman, v_planner, v_yardman, v_roam_no, v_craft_no, v_craft_id, v_old_wono, v_excnote, v_excflag); + return R.data(erpDataOemService.collaborativeOutsourcing(v_prtno, v_prtlotno, woreqdat, v_woporqty, v_usedeptcode, v_usedept, v_splcode, v_splycode, v_kdofplat, v_wono, v_sono, v_mtnman, v_planner, v_yardman, v_roam_no, v_craft_no, v_craft_id)); } } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataOemService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataOemService.java index 8539933a5..1e05a2ef8 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataOemService.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataOemService.java @@ -45,11 +45,8 @@ public interface IErpDataOemService { * @param v_pedate 计划完成时间 * @param v_woporqty 下达数量 * @param v_pricetype 加工类型 - * @param v_excnote 返回结果 - * @param v_excflag 返回状态 - * @param v_old_wono 老系统生成的外协订单号 */ - R fullOrderOutsourcing(String v_prtno, String v_prtlotno, String v_splcode, String v_splycode, String v_seqcc, String v_sono, String v_planner, Date v_pedate, Long v_woporqty, String v_pricetype, String v_excnote, String v_excflag, String v_old_wono); + String fullOrderOutsourcing(String v_prtno, String v_prtlotno, String v_splcode, String v_splycode, String v_seqcc, String v_sono, String v_planner, Date v_pedate, Double v_woporqty, String v_pricetype); /** * 整单外协订单接收 @@ -71,9 +68,6 @@ public interface IErpDataOemService { * @param v_roam_no B号 * @param v_craft_no C号 * @param v_craft_id 零件工艺ID - * @param v_old_wono 老系统生成的外协订单号 - * @param v_excnote 返回结果 - * @param v_excflag 返回状态 */ - R collaborativeOutsourcing(String v_prtno, String v_prtlotno, Date v_woreqdat, Long v_woporqty, String v_usedeptcode, String v_usedept, String v_splcode, String v_splycode, String v_kdofplat, String v_wono, String v_sono, String v_mtnman, String v_planner, String v_yardman, String v_roam_no, String v_craft_no, Long v_craft_id, String v_old_wono, String v_excnote, String v_excflag); + String collaborativeOutsourcing(String v_prtno, String v_prtlotno, Date v_woreqdat, Double v_woporqty, String v_usedeptcode, String v_usedept, String v_splcode, String v_splycode, String v_kdofplat, String v_wono, String v_sono, String v_mtnman, String v_planner, String v_yardman, String v_roam_no, String v_craft_no, Long v_craft_id); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataOemServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataOemServiceImpl.java index ca134f144..b5c96266a 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataOemServiceImpl.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataOemServiceImpl.java @@ -4,12 +4,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import oracle.jdbc.internal.OracleTypes; +import org.apache.commons.lang3.StringUtils; import org.springblade.core.tool.api.R; import org.springblade.desk.oem.pojo.request.PriceSheetQuery; import org.springblade.desk.oem.pojo.vo.PriceSheetVO; import org.springblade.erpdata.mapper.ErpDataOemMapper; import org.springblade.erpdata.mapper.ErpDataProduceMapper; import org.springblade.erpdata.service.IErpDataOemService; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.SqlOutParameter; +import org.springframework.jdbc.core.SqlParameter; +import org.springframework.jdbc.core.simple.SimpleJdbcCall; import org.springframework.stereotype.Service; import javax.sql.DataSource; @@ -33,6 +38,8 @@ public class ErpDataOemServiceImpl implements IErpDataOemService { private final ErpDataOemMapper erpDataOemMapper; + private final JdbcTemplate jdbcTemplate; + @Override public void closeErpOrder(String woCode, String memo) { log.info("关闭erp外协订单 - 单号:{},备注:{}", woCode, memo); @@ -62,140 +69,111 @@ public class ErpDataOemServiceImpl implements IErpDataOemService { } @Override - public R fullOrderOutsourcing(String v_prtno, String v_prtlotno, String v_splcode, String v_splycode, String v_seqcc, String v_sono, String v_planner, Date v_pedate, Long v_woporqty, String v_pricetype, String v_excnote, String v_excflag, String v_old_wono) { - Map result = new HashMap<>(); - String sql = "{call dba_mgr.pro_rbwxgensc(" + - "v_prtno => ?, " + - "v_prtlotno => ?, " + - "v_splcode => ?, " + - "v_splycode => ?, " + - "v_seqcc => ?, " + - "v_sono => ?, " + - "v_planner => ?, " + - "v_pedate => ?, " + - "v_woporqty => ?, " + - "v_pricetype => ?, " + - "v_excnote => ?, " + - "v_excflag => ?, " + - "v_old_wono => ?)}"; - try (Connection conn = dataSource.getConnection(); - CallableStatement cs = conn.prepareCall(sql)) { - - // 设置输入参数 - cs.setString(1, v_prtno); - cs.setString(2, v_prtlotno); - cs.setString(3, v_splcode); - cs.setString(4, v_splycode); - cs.setString(5, v_seqcc); - cs.setString(6, v_sono); - cs.setString(7, v_planner); - cs.setDate(8, new java.sql.Date(v_pedate.getTime())); - cs.setLong(9, v_woporqty); - cs.setString(10, v_pricetype); - - // 注册游标OUT参数 - cs.registerOutParameter(11, OracleTypes.CURSOR); - cs.registerOutParameter(12, OracleTypes.CURSOR); - cs.registerOutParameter(13, OracleTypes.CURSOR); - log.debug("协作外协订单接收存储过程输入参数: v_prtno={}, v_prtlotno={}, v_splcode={}, v_splycode={}, v_seqcc={}, " + - "v_sono={}, v_planner={}, v_pedate={}, v_woporqty={}, v_pricetype={}, " + - "v_excnote={}, v_excflag={}, v_old_wono={}", - v_prtno, v_prtlotno, v_splcode, v_splycode, v_seqcc, - v_sono, v_planner, v_pedate, v_woporqty, v_pricetype, - v_excnote, v_excflag, v_old_wono); - // 执行 - cs.execute(); - - // 获取结果 - List> excnote = convertResultSetToList((ResultSet) cs.getObject(11)); - List> excflag = convertResultSetToList((ResultSet) cs.getObject(12)); - List> oldWoNo = convertResultSetToList((ResultSet) cs.getObject(13)); - result.put("result", oldWoNo); - log.info("协作外协订单接收成功 - {}", result); - } catch (Exception e) { - log.error("协作外协订单接收失败", e); - return R.fail("协作外协订单接收失败"); - } - return R.data(result); + public String fullOrderOutsourcing(String v_prtno, String v_prtlotno, String v_splcode, String v_splycode, String v_seqcc, String v_sono, + String v_planner, Date v_pedate, Double v_woporqty, String v_pricetype) { + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 指定存储过程名(包含 DB Link) + .withProcedureName("dba_mgr.pro_rbwxgensc") + // 建议关闭元数据访问(通过 DB Link 访问时可避免权限/性能问题) + .withoutProcedureColumnMetaDataAccess() + // 显式声明参数 + .declareParameters( + new SqlParameter("v_prtno", Types.VARCHAR), // IN + new SqlParameter("v_prtlotno", Types.VARCHAR), // IN + new SqlParameter("v_splcode", Types.VARCHAR), // IN + new SqlParameter("v_splycode", Types.VARCHAR), // IN + new SqlParameter("v_seqcc", Types.VARCHAR), // IN + new SqlParameter("v_sono", Types.VARCHAR), // IN + new SqlParameter("v_planner", Types.VARCHAR), // IN + new SqlParameter("v_pedate", Types.DATE), // IN + new SqlParameter("v_woporqty", Types.DOUBLE), // IN + new SqlParameter("v_pricetype", Types.VARCHAR), // IN + new SqlOutParameter("v_excnote", Types.VARCHAR),// OUT + new SqlOutParameter("v_excflag", Types.VARCHAR), // OUT + new SqlOutParameter("v_old_wono", Types.VARCHAR) // OUT + ); + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_prtno", v_prtno); + inParams.put("v_prtlotno", v_prtlotno); + inParams.put("v_splcode", v_splcode); + inParams.put("v_splycode", v_splycode); + inParams.put("v_seqcc", v_seqcc); + inParams.put("v_sono", v_sono); + inParams.put("v_planner", v_planner); + inParams.put("v_pedate", v_pedate); + inParams.put("v_woporqty", v_woporqty); + inParams.put("v_pricetype", v_pricetype); + + + // 3. 执行并获取结果 Map + Map resultMap = jdbcCall.execute(inParams); + + // 4. 提取输出参数 + String excflag = (String) resultMap.get("v_excflag"); + String excnote = (String) resultMap.get("v_excnote"); + String oldWono = (String) resultMap.get("v_old_wono"); + return oldWono; } @Override - public R collaborativeOutsourcing(String v_prtno, String v_prtlotno, Date v_woreqdat, Long v_woporqty, String v_usedeptcode, String v_usedept, String v_splcode, String v_splycode, String v_kdofplat, String v_wono, String v_sono, String v_mtnman, String v_planner, String v_yardman, String v_roam_no, String v_craft_no, Long v_craft_id, String v_old_wono, String v_excnote, String v_excflag) { - Map result = new HashMap<>(); - - // SQL语句,注意nvl函数的处理 - String sql = "{call dba_mgr.pro_rbwxgen(" + - "v_prtno => ?, " + - "v_prtlotno => ?, " + - "v_woreqdat => ?, " + - "v_woporqty => ?, " + - "nvl(v_usedeptcode, v_usedept) => ?, " + // 注意:Java端需要处理这个逻辑 - "v_splcode => ?, " + - "v_splycode => ?, " + - "v_kdofplat => ?, " + - "v_wono => ?, " + - "v_sono => ?, " + - "v_mtnman => ?, " + - "v_planner => ?, " + - "v_yardman => ?, " + - "v_roam_no => ?, " + - "v_craft_no => ?, " + - "v_craft_id => ?, " + - "v_old_wono => ?, " + - "v_excnote => ?, " + - "v_excflag => ?) }"; // 返回游标3 - - try (Connection conn = dataSource.getConnection(); - CallableStatement cs = conn.prepareCall(sql)) { - - // 设置输入参数 - cs.setString(1, v_prtno); - cs.setString(2, v_prtlotno); - cs.setDate(3, v_woreqdat != null ? new java.sql.Date(v_woreqdat.getTime()) : null); - cs.setLong(4, v_woporqty); - - // 处理 nvl(v_usedeptcode, v_usedept) - String deptValue = v_usedeptcode != null ? v_usedeptcode : v_usedept; - cs.setString(5, deptValue); - - cs.setString(6, v_splcode); - cs.setString(7, v_splycode); - cs.setString(8, v_kdofplat); - cs.setString(9, v_wono); - cs.setString(10, v_sono); - cs.setString(11, v_mtnman); - cs.setString(12, v_planner); - cs.setString(13, v_yardman); - cs.setString(14, v_roam_no); - cs.setString(15, v_craft_no); - cs.setLong(16, v_craft_id); - - // 注册游标OUT参数 - cs.registerOutParameter(17, OracleTypes.CURSOR); // cursor1 - cs.registerOutParameter(18, OracleTypes.CURSOR); // cursor2 - cs.registerOutParameter(19, OracleTypes.CURSOR); // cursor3 - log.debug("外协工单生成存储过程输入参数: v_prtno={}, v_prtlotno={}, v_woreqdat={}, v_woporqty={}, " + - "v_usedeptcode={}, v_usedept={}, v_splcode={}, v_splycode={}, v_kdofplat={}, " + - "v_wono={}, v_sono={}, v_mtnman={}, v_planner={}, v_yardman={}, v_roam_no={}, " + - "v_craft_no={}, v_craft_id={}, v_old_wono={}, v_excnote={}, v_excflag={}, deptValue={}", - v_prtno, v_prtlotno, v_woreqdat, v_woporqty, - v_usedeptcode, v_usedept, v_splcode, v_splycode, v_kdofplat, - v_wono, v_sono, v_mtnman, v_planner, v_yardman, v_roam_no, - v_craft_no, v_craft_id, v_old_wono, v_excnote, v_excflag, deptValue); - // 执行存储过程 - cs.execute(); - - // 获取游标结果 - List> oldWoNo = convertResultSetToList((ResultSet) cs.getObject(17)); - List> excnote = convertResultSetToList((ResultSet) cs.getObject(18)); - List> excflag = convertResultSetToList((ResultSet) cs.getObject(19)); - result.put("result", oldWoNo); - log.info("整单外协订单接收成功 - {}", result); - } catch (Exception e) { - log.error("整单外协订单接收失败", e); - return R.fail("整单外协订单接收失败"); - } - return R.data(result); + public String collaborativeOutsourcing(String v_prtno, String v_prtlotno, Date v_woreqdat, Double v_woporqty, String v_usedeptcode, + String v_usedept, String v_splcode, String v_splycode, String v_kdofplat, String v_wono, + String v_sono, String v_mtnman, String v_planner, String v_yardman, String v_roam_no, String v_craft_no, Long v_craft_id) { + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 指定存储过程名(包含 DB Link) + .withProcedureName("dba_mgr.pro_rbwxgen") + // 建议关闭元数据访问(通过 DB Link 访问时可避免权限/性能问题) + .withoutProcedureColumnMetaDataAccess() + // 显式声明参数 + .declareParameters( + new SqlParameter("v_prtno", Types.VARCHAR), // IN + new SqlParameter("v_prtlotno", Types.VARCHAR), // IN + new SqlParameter("v_woreqdat", Types.DATE), // IN + new SqlParameter("v_woporqty", Types.DOUBLE), // IN + new SqlParameter("v_usedept", Types.VARCHAR), // IN + new SqlParameter("v_splcode", Types.VARCHAR), // IN + new SqlParameter("v_splycode", Types.VARCHAR), // IN + new SqlParameter("v_kdofplat", Types.VARCHAR), // IN + new SqlParameter("v_wono", Types.VARCHAR), // IN + new SqlParameter("v_sono", Types.VARCHAR), // IN + new SqlParameter("v_mtnman", Types.VARCHAR), // IN + new SqlParameter("v_planner", Types.VARCHAR), // IN + new SqlParameter("v_yardman", Types.VARCHAR), // IN + new SqlParameter("v_roam_no", Types.VARCHAR), // IN + new SqlParameter("v_craft_no", Types.VARCHAR), // IN + new SqlParameter("v_craft_id", Types.BIGINT), // IN + new SqlOutParameter("v_excnote", Types.VARCHAR),// OUT + new SqlOutParameter("v_excflag", Types.VARCHAR), // OUT + new SqlOutParameter("v_old_wono", Types.VARCHAR) // OUT + ); + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_prtno", v_prtno); + inParams.put("v_prtlotno", v_prtlotno); + inParams.put("v_woreqdat", v_woreqdat); + inParams.put("v_woporqty", v_woporqty); + inParams.put("v_usedept", v_usedeptcode != null ? v_usedeptcode : v_usedept); + inParams.put("v_splcode", v_splcode); + inParams.put("v_splycode", v_planner); + inParams.put("v_kdofplat", v_kdofplat); + inParams.put("v_wono", v_wono); + inParams.put("v_sono", v_sono); + inParams.put("v_mtnman", v_mtnman); + inParams.put("v_planner", v_planner); + inParams.put("v_yardman", v_yardman); + inParams.put("v_roam_no", v_roam_no); + inParams.put("v_craft_no", v_craft_no); + inParams.put("v_craft_id", v_craft_id); + + // 3. 执行并获取结果 Map + Map resultMap = jdbcCall.execute(inParams); + + // 4. 提取输出参数 + String excflag = (String) resultMap.get("v_excflag"); + String excnote = (String) resultMap.get("v_excnote"); + String oldWono = (String) resultMap.get("v_old_wono"); + return oldWono; } /** From 7345cce032476bed014b66f2c7ae03eeb3f0cd33 Mon Sep 17 00:00:00 2001 From: sunjianxi <839419401@qq.com> Date: Fri, 29 May 2026 10:29:07 +0800 Subject: [PATCH 13/14] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9-sjx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WorkOrderServiceImpl.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java index a4637b9bd..a75653fb6 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java @@ -611,8 +611,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpllambdaQuery().in(EquipAbilityEntity::getWorkCenterId, craft.getWorkCenterId()).eq(EquipAbilityEntity::getCraftId, craft.getCaId()).eq(EquipAbilityEntity::getProcessId,craft.getPpsId())); } if (CollectionUtils.isEmpty(equipAbilityList)) { - errorInfo.append("作业中心:" + workCenterMap.get(craft.getWorkCenterId()) + ",工艺:" + craftAbilityMap.get(craft.getCaId()) + ",工序:" + processMap.get(craft.getPpsId()) + ",未匹配到对应的设备能力;"); -// order.setErrorInfo("作业中心:" + workCenterMap.get(craft.getWorkCenterId()) + ",工艺:" + craftAbilityMap.get(craft.getCaId()) + ",工序:" + processMap.get(craft.getPpsId()) + ",未匹配到对应的设备能力"); + errorInfo.append("作业中心:" + workCenterMap.get(craft.getWorkCenterId()) + ",工艺能力:" + craftAbilityMap.get(craft.getCaId()) + ",工序:" + processMap.get(craft.getPpsId()) + ",未匹配到对应的设备能力;"); +// order.setErrorInfo("作业中心:" + workCenterMap.get(craft.getWorkCenterId()) + ",工艺能力:" + craftAbilityMap.get(craft.getCaId()) + ",工序:" + processMap.get(craft.getPpsId()) + ",未匹配到对应的设备能力"); // order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode()); // yieldOrderService.updateById(order); isSchecuding = false; @@ -653,7 +653,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl 0){ order.setErrorInfo(errorInfo.toString()); order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode()); + order.setUpdateTime(new Date()); yieldOrderService.updateById(order); } continue; @@ -1039,7 +1040,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl Date: Fri, 29 May 2026 10:32:29 +0800 Subject: [PATCH 14/14] =?UTF-8?q?=E7=94=B5=E5=AD=90=E6=A1=A3=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/quality/service/impl/InspectionTaskServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 80cf88b7d..cdb16a37f 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 @@ -732,7 +732,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl