From d4a7b1faad635b4817891185a4f471595db2eece Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期一, 15 九月 2025 19:33:49 +0800 Subject: [PATCH] art: 生产订单SAP同步 --- src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncCreationJob.java | 59 +++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 39 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncCreationJob.java b/src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncCreationJob.java index 086a7b1..3a274ef 100644 --- a/src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncCreationJob.java +++ b/src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncCreationJob.java @@ -1,6 +1,8 @@ package org.jeecg.modules.mes.job; import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.modules.lsw.service.ILswMaterialService; import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.util.ThrowableUtil; import org.jeecg.modules.mes.entity.MesProductionOrder; @@ -14,6 +16,7 @@ import org.jeecg.modules.sap.dto.OrderBomDTO; import org.jeecg.modules.sap.dto.OrderProcessDTO; import org.jeecg.modules.sap.dto.ProductionOrderDTO; +import org.jeecg.modules.sap.request.ProductionOrderSyncRequest; import org.jeecg.modules.sap.service.OrderBomSync; import org.jeecg.modules.sap.service.OrderProcessSync; import org.jeecg.modules.sap.service.ProductionOrderSync; @@ -21,6 +24,7 @@ import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.time.LocalDateTime; @@ -32,7 +36,8 @@ @Slf4j public class ProductionOrderSyncCreationJob implements Job { //宸ュ巶缂栫爜(鏂扮伀鐐� 2301) - private static final String FACTORY_CODE = "2301"; + @Value("${xhj.factoryCode:2301}") + private String FACTORY_CODE; /** * 璁㈠崟绫诲瀷 * 鏍囧噯鐢熶骇璁㈠崟 Z001 @@ -41,7 +46,8 @@ * 璇曞埗鐢熶骇璁㈠崟(鏂扮伀鐐�) Z011 * 鎷嗛浂鐢熶骇璁㈠崟(鏂扮伀鐐�) 2012 */ - private static final String ORDER_TYPE_CODE = "Z001"; + @Value("${xhj.orderType:Z001}") + private String ORDER_TYPE_CODE; /** * 鐢熶骇璋冨害鍛� * 001 涓�鍒嗗巶璋冨害鍛� @@ -56,19 +62,16 @@ * 010 鍏巶璋冨害鍛� * 012 鍏垎鍘傝皟搴﹀憳 */ - private static final String PRODUCTION_MANAGER = "010"; + @Value("${xhj.productionManager:012}") + private String PRODUCTION_MANAGER; /** * 鐢熶骇璁㈠崟鐘舵�侊紝瀹為檯涓婏紝鍙湁REL鐘舵�佺殑宸ュ崟鎵嶅彲浠ヨ繘琛屾搷浣� * CRTD 鏂板缓 * REL 涓嬭揪 * TECO 鍏抽棴 */ - private static final String ORDER_STATUS = "REL"; - - /** - * 璇锋眰鎴愬姛缂栫爜 - */ - private static final String SUCCESS_CODE = "S"; + @Value("${xhj.orderStatus:REL}") + private String ORDER_STATUS; @Autowired private ProductionOrderSync productionOrderSync; @@ -86,6 +89,8 @@ private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; + @Autowired + private ILswMaterialService lswMaterialService; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { @@ -100,23 +105,30 @@ //鑾峰彇涓婃鍚屾鏃堕棿 String lastSyncDateLow = productionOrderService.getLastSyncCreateDate(); String lastSyncDateHigh = null; - if(lastSyncDateLow != null) { + if (lastSyncDateLow != null) { lastSyncDateHigh = DateUtils.format(new Date(), "yyyyMMdd"); - if(lastSyncDateLow.equals(lastSyncDateHigh)) { + if (lastSyncDateLow.equals(lastSyncDateHigh)) { lastSyncDateHigh = null; } } + ProductionOrderSyncRequest request = new ProductionOrderSyncRequest(); + request.setFactoryCode(FACTORY_CODE); + request.setOrderTypeCode(ORDER_TYPE_CODE); + request.setProductionManager(PRODUCTION_MANAGER); + request.setOrderStatus(ORDER_STATUS); + request.setCreateTimeLow(lastSyncDateLow); + request.setCreateTimeHigh(lastSyncDateHigh); try { //璋冪敤SAP鎺ュ彛鑾峰彇鐢熶骇璁㈠崟 - Map<String, Object> productionOrderMap = productionOrderSync.syncProductionOrder(FACTORY_CODE, ORDER_TYPE_CODE, PRODUCTION_MANAGER, ORDER_STATUS, lastSyncDateLow, lastSyncDateHigh, null, null); - if (productionOrderMap == null || !SUCCESS_CODE.equals(productionOrderMap.get("ztype"))) { + Map<String, Object> productionOrderMap = productionOrderSync.syncProductionOrder(request); + if (productionOrderMap == null || !CommonConstant.SAP_SUCCESS_CODE.equals(productionOrderMap.get("ztype"))) { log.error("鏈悓姝ュ埌璁㈠崟淇℃伅锛佹棩鏈燂細{}", LocalDateTime.now()); return; } //璋冪敤鎴愬姛锛岃幏鍙栬繑鍥炴暟鎹� Object result = productionOrderMap.get("result"); boolean b = result instanceof List; - if(!b) { + if (!b) { log.error("杩斿洖绫诲瀷閿欒锛� class:{}", result == null ? null : result.getClass()); return; } @@ -125,39 +137,46 @@ String orderCodes = String.join(",", orderMap.keySet()); //璁㈠崟BOM鍚屾 Map<String, Object> orderBomMap = orderBomSync.syncOrderBom(FACTORY_CODE, orderCodes); - if (orderBomMap == null || !SUCCESS_CODE.equals(orderBomMap.get("ztype"))) { + if (orderBomMap == null || !CommonConstant.SAP_SUCCESS_CODE.equals(orderBomMap.get("ztype"))) { log.error("鏈悓姝ュ埌璁㈠崟BOM淇℃伅锛佹棩鏈燂細{}", LocalDateTime.now()); return; } //璋冪敤鎴愬姛锛岃幏鍙栬繑鍥炴暟鎹� result = orderBomMap.get("result"); b = result instanceof List; - if(!b) { + if (!b) { log.error("杩斿洖绫诲瀷閿欒锛� class:{}", result == null ? null : result.getClass()); return; } + //璁㈠崟BOM鏁版嵁澶勭悊 List<OrderBomDTO> orderBomDTOList = (List<OrderBomDTO>) result; b = processBillMaterialsService.saveOrUpdateOrderBom(orderMap, orderBomDTOList); - if(!b) { + if (!b) { log.error("淇濆瓨璁㈠崟BOM澶辫触锛屾棩鏈燂細{}", LocalDateTime.now()); + return; + } + //鐗╂枡鏁版嵁澶勭悊 + b = lswMaterialService.saveOrUpdateMaterial(orderMap, orderBomDTOList); + if (!b) { + log.error("淇濆瓨鐗╂枡澶辫触锛屾棩鏈燂細{}", LocalDateTime.now()); return; } //璁㈠崟宸ュ簭鍚屾 Map<String, Object> orderProcessMap = orderProcessSync.syncOrderProcess(FACTORY_CODE, orderCodes); - if (orderBomMap == null || !SUCCESS_CODE.equals(orderProcessMap.get("ztype"))) { + if (orderBomMap == null || !CommonConstant.SAP_SUCCESS_CODE.equals(orderProcessMap.get("ztype"))) { log.error("鏈悓姝ュ埌璁㈠崟宸ュ簭淇℃伅锛佹棩鏈燂細{}", LocalDateTime.now()); return; } //璋冪敤鎴愬姛锛岃幏鍙栬繑鍥炴暟鎹� result = orderProcessMap.get("result"); b = result instanceof List; - if(!b) { + if (!b) { log.error("杩斿洖绫诲瀷閿欒锛� class:{}", result == null ? null : result.getClass()); return; } List<OrderProcessDTO> orderProcessDTOList = (List<OrderProcessDTO>) result; b = materialProcessService.saveOrUpdateOrderProcess(orderMap, orderProcessDTOList); - if(!b) { + if (!b) { log.error("淇濆瓨璁㈠崟宸ュ簭澶辫触锛屾棩鏈燂細{}", LocalDateTime.now()); } quartzLog.setIsSuccess(0); -- Gitblit v1.9.3