diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/PlanUpdateToQty.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/PlanUpdateToQty.java new file mode 100644 index 000000000..c5694d16f --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/PlanUpdateToQty.java @@ -0,0 +1,30 @@ +package org.springblade.job.processor.produce; + +import jakarta.annotation.Resource; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.produce.feign.IDisTaskingClient; +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; + +/** + * 修改生产计划交付数量 + * + * @author litao + */ +@Component +@Data +@Slf4j +public class PlanUpdateToQty implements BasicProcessor { + + @Resource + private IDisTaskingClient client; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + log.info("修改生产计划交付数量开始"); + return new ProcessResult(client.planUpdateToQty()); + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java index 7e479377f..e7f3e660f 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java @@ -22,6 +22,7 @@ public interface IDisTaskingClient { String RB_TRANSFER_ORDER = API_PREFIX + "/rbTransferOrder"; String UN_BIND_EC = API_PREFIX + "/unBindEc"; String SAVE_WORK_ORDER_RUN = API_PREFIX + "/saveWorkOrderRun"; + String PLAN_UPDATE_TO_QTY = API_PREFIX + "/planUpdateToQty"; /** @@ -51,4 +52,10 @@ public interface IDisTaskingClient { */ @GetMapping(SAVE_WORK_ORDER_RUN) boolean saveWorkOrderRun(@RequestParam String woId); + + /** + * 修改生产计划交付数量 + */ + @GetMapping(PLAN_UPDATE_TO_QTY) + boolean planUpdateToQty(); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java index 04787f2d3..a095a5939 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java @@ -49,7 +49,8 @@ public interface IErpDataProduceClient { String CREATE_MOLD_PLAN = API_PREFIX + "/createMoldPlan"; String RETURN_HANDOVER_RECORD = API_PREFIX + "/returnHandoverRecord"; String RETURN_OEM_ERP_BY_WXNO = API_PREFIX + "/returnOemErpByWxno"; - + String SELECT_MAX_WOTOTQTY_BY_WONO = API_PREFIX + "/selectMaxWototqtyByWono"; + String SELECT_MAX_WOCLSTOTQTY_BY_WONO = API_PREFIX + "/selectMaxWoclstotqtyByWono"; /** * 缺件申报-通过零件号获取批次号 @@ -237,4 +238,10 @@ public interface IErpDataProduceClient { @GetMapping(RETURN_OEM_ERP_BY_WXNO) R returnOemErpByWxno(@RequestParam(value = "hrCode") String wxNo); + + @GetMapping(SELECT_MAX_WOTOTQTY_BY_WONO) + R selectMaxWototqtyByWono(String code); + + @GetMapping(SELECT_MAX_WOCLSTOTQTY_BY_WONO) + R selectMaxWoclstotqtyByWono(String code); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java index 0d4e89f38..6adf77bda 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java @@ -133,4 +133,14 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient { return R.fail("获取数据失败"); } + @Override + public R selectMaxWototqtyByWono(String code) { + return R.fail("获取数据失败"); + } + + @Override + public R selectMaxWoclstotqtyByWono(String code) { + return R.fail("获取数据失败"); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldPlanMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldPlanMapper.java index fe6d69b19..fde72db6b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldPlanMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldPlanMapper.java @@ -63,4 +63,12 @@ public interface YieldPlanMapper extends BaseMapper { * @return */ void updateByNewlevdateMax(String newlevdateMax, String code); + + List selectNeedSyncPoCodes(); + + void updateWithWo(String code, Double woTotqty); + + void updateWithWocls(String code, Double woclsTotqty); + + void updateOnlyCheckTime(String code); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldPlanMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldPlanMapper.xml index c04c2abf2..a36075d6e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldPlanMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldPlanMapper.xml @@ -94,6 +94,14 @@ and DICT_KEY = '1' + UPDATE BLADE_DICT SET DICT_VALUE = #{newlevdateMax} @@ -104,4 +112,13 @@ and DICT_KEY = '1' + + UPDATE MES_YIELD_PLAN SET DELIVERY_QTY = #{woTotqty}, CHECK_TOTQTY_TIME = SYSDATE WHERE YP_CODE = #{code} + + + UPDATE MES_YIELD_PLAN SET DELIVERY_QTY = #{woTotqty}, CHECK_TOTQTY_TIME = SYSDATE, STATUS = 10015, CHECK_CLOSE_TIME = SYSDATE WHERE YP_CODE = #{code} + + + UPDATE MES_YIELD_PLAN SET CHECK_TOTQTY_TIME = SYSDATE WHERE YP_CODE = #{code} + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java index cc8c2cddf..139bb0d96 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java @@ -103,4 +103,15 @@ public interface IYieldPlanService extends BaseService { * */ void updateByNewlevdateMax(String newlevdateMax, String code); + + /** + * 获取需要同步的订单号 + */ + List selectNeedSyncPoCodes(); + + void updateWithWo(String code, Double woTotqty); + + void updateWithWocls(String code, Double woclsTotqty); + + void updateOnlyCheckTime(String code); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java index 25f8e90b1..13bd852d2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java @@ -284,4 +284,24 @@ public class YieldPlanServiceImpl extends BaseServiceImpl selectNeedSyncPoCodes() { + return baseMapper.selectNeedSyncPoCodes(); + } + + @Override + public void updateWithWo(String code, Double woTotqty) { + baseMapper.updateWithWo(code, woTotqty); + } + + @Override + public void updateWithWocls(String code, Double woclsTotqty) { + baseMapper.updateWithWocls(code, woclsTotqty); + } + + @Override + public void updateOnlyCheckTime(String code) { + baseMapper.updateOnlyCheckTime(code); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java index 7e204021e..8d8ac16d8 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java @@ -54,4 +54,9 @@ public class DisTaskingClient implements IDisTaskingClient { return true; } + @Override + public boolean planUpdateToQty() { + return workOrderService.planUpdateToQty(); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java index 897d4449c..db39d6baa 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java @@ -296,4 +296,9 @@ public interface IWorkOrderService extends BaseService { * 生产运行记录 */ void addPrWorkOrderRun(String woId); + + /** + * 修改生产计划交付数量 + */ + boolean planUpdateToQty(); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index 2050a8bd3..fc730f4d4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -42,7 +42,6 @@ import org.springblade.desk.efficiency.enums.BsSalaryStandardEnum; import org.springblade.desk.efficiency.pojo.entity.BsSalaryStandardEntity; import org.springblade.desk.efficiency.service.IBsSalaryStandardService; import org.springblade.desk.efficiency.util.BsSalaryUtil; -import org.springblade.desk.energy.util.DateTime; import org.springblade.desk.energy.util.HttpRequestService; import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO; import org.springblade.desk.logistics.pojo.vo.AllocationMessVO; @@ -50,9 +49,9 @@ import org.springblade.desk.order.mapper.YieldOrderMapper; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.desk.order.service.IYieldOrderService; +import org.springblade.desk.order.service.IYieldPlanService; import org.springblade.desk.produce.mapper.PlateAroundMapper; import org.springblade.desk.produce.mapper.WorkOrderMapper; -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.enums.ProcessCycleEnum; @@ -70,7 +69,6 @@ import org.springblade.erpdata.feign.IErpDataProduceClient; import org.springblade.scheduling.pojo.entity.QualityGradeEntity; import org.springblade.scheduling.pojo.entity.WorkOrderEntity; import org.springblade.scheduling.pojo.entity.WorkPlanEntity; -import org.springblade.scheduling.pojo.entity.YieldOrderEntity; import org.springblade.system.cache.DictCache; import org.springblade.system.cache.UserCache; import org.springblade.system.feign.IDictClient; @@ -114,12 +112,6 @@ public class WorkOrderServiceImpl extends BaseServiceImpl poCodeList = yieldPlanService.selectNeedSyncPoCodes(); + if (CollectionUtils.isEmpty(poCodeList)) { + log.error("没有需要同步的计划单"); + return false; + } + for (String code : poCodeList) { + try { + this.processSinglePlan(code); + successCount++; + } catch (Exception e) { + failCount++; + log.error("同步计划单失败,poCode:{}", code, e); + } + } + log.info("同步计划单总数量完成,成功:{}条,失败:{}条", successCount, failCount); + return true; + } + + private void processSinglePlan(String code) { + // 第一步:查询t_wo表 + Double woTotqty = erpDataProduceClient.selectMaxWototqtyByWono(code).getData(); + + if (woTotqty != null) { + // 存在WO记录,更新数量和检查时间 + yieldPlanService.updateWithWo(code, woTotqty); + return; + } + + // 第二步:查询t_wocls表 + Double woclsTotqty = erpDataProduceClient.selectMaxWoclstotqtyByWono(code).getData(); + + if (woclsTotqty != null) { + // 存在已关闭WO记录,更新数量、检查时间并关闭状态 + yieldPlanService.updateWithWocls(code, woclsTotqty); + return; + } + + // 第三步:两个表都没有记录,仅更新检查时间 + yieldPlanService.updateOnlyCheckTime(code); + } + @Override public void launchTest(Map data, BladeUser user) throws Exception { // 提取参数 diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java index ff4727f85..293717555 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java @@ -142,5 +142,15 @@ public class ErpDataProduceClient implements IErpDataProduceClient { return R.data(erpDataProduceService.returnOemErpByWxno(wxNo)); } + @Override + public R selectMaxWototqtyByWono(String code) { + return R.data(erpDataProduceService.selectMaxWototqtyByWono(code)); + } + + @Override + public R selectMaxWoclstotqtyByWono(String code) { + return R.data(erpDataProduceService.selectMaxWoclstotqtyByWono(code)); + } + } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java index 040123803..2168c4ea7 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java @@ -40,4 +40,8 @@ public interface ErpDataProduceMapper extends Mapper { List loadReworkNoProcess(); List> trialItemList(List nameList); + + Double selectMaxWototqtyByWono(String code); + + Double selectMaxWoclstotqtyByWono(String code); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml index 249f95ee8..fecf77d31 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml @@ -186,4 +186,10 @@ + + diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java index f0ff48239..8dd53faf7 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java @@ -66,4 +66,8 @@ public interface IErpDataProduceService { String returnHandoverRecord(String hrCode, String partCode, String batchNo); String returnOemErpByWxno(String wxNo); + + Double selectMaxWototqtyByWono(String code); + + Double selectMaxWoclstotqtyByWono(String code); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java index e3e570b83..510809bec 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java @@ -579,4 +579,14 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService { } return excflag; } + + @Override + public Double selectMaxWototqtyByWono(String code) { + return erpDataProduceMapper.selectMaxWototqtyByWono(code); + } + + @Override + public Double selectMaxWoclstotqtyByWono(String code) { + return erpDataProduceMapper.selectMaxWoclstotqtyByWono(code); + } }