From 383cee5937b1f10e800ca30743a78a96c34d5123 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期四, 14 八月 2025 22:21:28 +0800 Subject: [PATCH] art: 生产订单同步任务,同时插入物料基本信息 --- src/main/java/org/jeecg/modules/lsw/service/ILswMaterialService.java | 14 +++++-- src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncCreationJob.java | 10 +++++ src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialServiceImpl.java | 48 +++++++++++++++++++++-- src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncUpdateJob.java | 9 ++++ 4 files changed, 72 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialService.java b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialService.java index 60166c3..ab49739 100644 --- a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialService.java +++ b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialService.java @@ -3,11 +3,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.lsw.entity.LswMaterial; -import org.jeecg.modules.lsw.entity.LswMaterialInventory; +import org.jeecg.modules.mes.entity.MesProductionOrder; +import org.jeecg.modules.sap.dto.OrderBomDTO; import javax.servlet.http.HttpServletRequest; -import java.io.Serializable; -import java.util.Collection; import java.util.List; import java.util.Map; @@ -35,5 +34,12 @@ * @return */ LswMaterial queryByMaterialNumber(String materialNumber); - + + /** + * 鎵归噺淇濆瓨鐗╂枡鍩烘湰淇℃伅 + * @param orderMap + * @param orderBomDTOList + * @return + */ + boolean saveOrUpdateMaterial(Map<String, MesProductionOrder> orderMap, List<OrderBomDTO> orderBomDTOList); } diff --git a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialServiceImpl.java b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialServiceImpl.java index 2808281..35b111b 100644 --- a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialServiceImpl.java +++ b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialServiceImpl.java @@ -13,16 +13,17 @@ import org.jeecg.modules.lsw.mapper.LswMaterialInventoryMapper; import org.jeecg.modules.lsw.mapper.LswMaterialMapper; import org.jeecg.modules.lsw.service.ILswMaterialService; +import org.jeecg.modules.mes.entity.MesProductionOrder; +import org.jeecg.modules.pms.entity.PmsProcessBillMaterials; +import org.jeecg.modules.sap.dto.OrderBomDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import java.io.Serializable; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * @Description: 绾胯竟搴撶墿鏂欎俊鎭� @@ -64,7 +65,7 @@ @Transactional(rollbackFor = Exception.class) public boolean editMaterial(LswMaterial lswMaterial) { LswMaterial entity = this.getBaseMapper().selectById(lswMaterial.getId()); - if(entity == null) { + if (entity == null) { throw new JeecgBootException("瑕佺紪杈戠殑鏁版嵁涓嶅瓨鍦紒"); } entity.setMaterialCategory(lswMaterial.getMaterialCategory()); @@ -84,4 +85,41 @@ return list.get(0); } + @Override + @Transactional(rollbackFor = Exception.class) + public boolean saveOrUpdateMaterial(Map<String, MesProductionOrder> orderMap, List<OrderBomDTO> orderBomDTOList) { + List<LswMaterial> addList = new ArrayList<>(); + for (Map.Entry<String, MesProductionOrder> entry : orderMap.entrySet()) { + MesProductionOrder order = entry.getValue(); + LswMaterial material = queryByMaterialNumber(order.getMaterialNumber()); + if (material == null) { + //鏂板鐗╂枡 + material = new LswMaterial(); + material.setMaterialStatus(CommonConstant.STATUS_1); + material.setMaterialNumber(order.getMaterialNumber()); + material.setMaterialName(order.getMaterialName()); + material.setMaterialUnit(order.getProductionUnit()); + material.setDelFlag(CommonConstant.DEL_FLAG_0); + addList.add(material); + } + } + for (OrderBomDTO bomDTO : orderBomDTOList) { + LswMaterial material = queryByMaterialNumber(bomDTO.getMATNR()); + if (material == null) { + //鏂板鐗╂枡 + material = new LswMaterial(); + material.setMaterialStatus(CommonConstant.STATUS_1); + material.setMaterialNumber(bomDTO.getMATNR()); + material.setMaterialName(bomDTO.getMAKTX()); + material.setMaterialUnit(bomDTO.getMEINS()); + material.setDelFlag(CommonConstant.DEL_FLAG_0); + addList.add(material); + } + } + if (CollectionUtil.isEmpty(addList)) { + super.saveBatch(addList); + } + return true; + } + } 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 d81111b..42bd30d 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,7 @@ package org.jeecg.modules.mes.job; import lombok.extern.slf4j.Slf4j; +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; @@ -87,6 +88,8 @@ private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; + @Autowired + private ILswMaterialService lswMaterialService; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { @@ -144,12 +147,19 @@ log.error("杩斿洖绫诲瀷閿欒锛� class:{}", result == null ? null : result.getClass()); return; } + //璁㈠崟BOM鏁版嵁澶勭悊 List<OrderBomDTO> orderBomDTOList = (List<OrderBomDTO>) result; b = processBillMaterialsService.saveOrUpdateOrderBom(orderMap, orderBomDTOList); 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"))) { diff --git a/src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncUpdateJob.java b/src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncUpdateJob.java index 6a7f780..24ad443 100644 --- a/src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncUpdateJob.java +++ b/src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncUpdateJob.java @@ -1,6 +1,7 @@ package org.jeecg.modules.mes.job; import lombok.extern.slf4j.Slf4j; +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; @@ -87,6 +88,8 @@ private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; + @Autowired + private ILswMaterialService lswMaterialService; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { @@ -150,6 +153,12 @@ 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"))) { -- Gitblit v1.9.3