From 402de6f23b92987eb9db8a739e8d6b4a6dcc6ec4 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Mon, 18 Nov 2024 19:31:32 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=BB=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/MesWorkOrderOfflineRestoreService.java | 99 ++++++++++++++++++++-- 1 file changed, 91 insertions(+), 8 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreService.java index 618b3d9..169e483 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderOfflineRestoreService.java @@ -2,18 +2,28 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.job; import cn.estsh.i3plus.ext.mes.pcn.api.job.IMesWorkOrderOfflineRestoreService; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderAssembly; import cn.estsh.i3plus.pojo.mes.bean.offline.MesWorkOrderAssemblyOffline; +import cn.estsh.i3plus.pojo.mes.bean.offline.MesWorkOrderOffline; import cn.estsh.i3plus.pojo.mes.bean.offline.MesWorkOrderOfflineRestoreRecord; +import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderAssemblyRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository; import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderAssemblyOfflineRepository; import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderOfflineRepository; import cn.estsh.i3plus.pojo.mes.repository.offline.MesWorkOrderOfflineRestoreRecordRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import java.util.*; import java.util.stream.Collectors; @@ -31,6 +41,12 @@ public class MesWorkOrderOfflineRestoreService implements IMesWorkOrderOfflineRe @Autowired private MesWorkOrderOfflineRestoreRecordRepository workOrderOfflineRestoreRecordRepository; + @Autowired + private MesWorkOrderAssemblyRepository workOrderAssemblyRepository; + + @Autowired + private MesWorkOrderRepository workOrderRepository; + @Override public void doRestoreWorkOrderOfflineData(Map paramMap) { @@ -42,17 +58,70 @@ public class MesWorkOrderOfflineRestoreService implements IMesWorkOrderOfflineRe if (CollectionUtils.isEmpty(workOrderAssemblyOfflineMap)) return; - Map workOrderOfflineRestoreRecordMap = getWorkOrderOfflineRestoreRecordMap(organizeCode, new ArrayList<>(workOrderAssemblyOfflineMap.keySet())); + List workOrderNoList = new ArrayList<>(workOrderAssemblyOfflineMap.keySet()); - for (Map.Entry> entry : workOrderAssemblyOfflineMap.entrySet()) { - - if (null == entry) continue; + Map workOrderOfflineRestoreRecordMap = getWorkOrderOfflineRestoreRecordMap(organizeCode, workOrderNoList); - List workOrderAssemblyOfflineList = entry.getValue(); + Map workOrderOfflineMap = getWorkOrderOfflineMap(organizeCode, workOrderNoList); + String now = TimeTool.getNowTime(true); + for (Map.Entry> entry : workOrderAssemblyOfflineMap.entrySet()) { + if (null == entry) continue; + MesWorkOrderOfflineRestoreRecord workOrderOfflineRestoreRecord = CollectionUtils.isEmpty(workOrderOfflineRestoreRecordMap) ? null : workOrderOfflineRestoreRecordMap.get(entry.getKey()); + + for (MesWorkOrderAssemblyOffline workOrderAssemblyOffline : entry.getValue()) { + if (null == workOrderAssemblyOffline) continue; + MesWorkOrderAssembly workOrderAssembly = new MesWorkOrderAssembly(); + BeanUtils.copyProperties(workOrderAssemblyOffline, workOrderAssembly, MesPcnExtConstWords.ID); + workOrderAssembly.setModifyDatetime(now); + workOrderAssembly.setModifyUser(MesPcnExtConstWords.JOB); + workOrderAssembly.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + workOrderAssemblyRepository.insert(workOrderAssembly); + + workOrderAssemblyOffline.setSystemSyncDatetime(now); + workOrderAssemblyOffline.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + workOrderAssemblyOfflineRepository.updateNoSync(workOrderAssemblyOffline); + + if (null == workOrderOfflineRestoreRecord) { + workOrderOfflineRestoreRecord = new MesWorkOrderOfflineRestoreRecord(); + workOrderOfflineRestoreRecord.setOrganizeCode(organizeCode); + workOrderOfflineRestoreRecord.setWorkOrderNo(workOrderAssemblyOffline.getWorkOrderNo()); + workOrderOfflineRestoreRecord.setCustPartNo(workOrderAssemblyOffline.getCustPartNo()); + workOrderOfflineRestoreRecord.setWorkCenterCode(workOrderAssemblyOffline.getWorkCenterCode()); + } + } + + if (StringUtils.isEmpty(workOrderOfflineRestoreRecord.getWorkOrderId()) && !CollectionUtils.isEmpty(workOrderOfflineMap) && workOrderOfflineMap.containsKey(entry.getKey())) { + + MesWorkOrderOffline workOrderOffline = workOrderOfflineMap.get(entry.getKey()); + + MesWorkOrder workOrder = new MesWorkOrder(); + BeanUtils.copyProperties(workOrderOffline, workOrder, MesPcnExtConstWords.ID); + workOrder.setUnCompleteQty(new Double(0)); + workOrder.setScrapPartQty(new Double(0)); + workOrder.setSuspiciousPartQty(new Double(0)); + workOrder.setDisassemblyQty(new Double(0)); + workOrder.setReportedQty(new Double(0)); + workOrder.setCompleteQty(new Double(1)); + workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); + workOrder.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); + workOrder.setModifyDatetime(now); + workOrder.setModifyUser(MesPcnExtConstWords.JOB); + workOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + workOrder = workOrderRepository.insert(workOrder); + + workOrderOffline.setSystemSyncDatetime(now); + workOrderOffline.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + workOrderOfflineRepository.updateNoSync(workOrderOffline); + + workOrderOfflineRestoreRecord.setWorkOrderId(workOrder.getId().toString()); + workOrderOfflineRestoreRecord.setCustSn(workOrder.getCustSn()); + workOrderOfflineRestoreRecord.setPartNo(workOrder.getPartNo()); + + } @@ -68,11 +137,10 @@ public class MesWorkOrderOfflineRestoreService implements IMesWorkOrderOfflineRe DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.SYSTEM_SYNC_STATUS, packBean); List workOrderAssemblyOfflineList = workOrderAssemblyOfflineRepository.findByHqlTopWhere(packBean, qty); if (CollectionUtils.isEmpty(workOrderAssemblyOfflineList)) log.info("补录离线生产数据JOB --- 当前没有需要补录的工单装配件离线数据 ---"); - return CollectionUtils.isEmpty(workOrderAssemblyOfflineList) ? null : - workOrderAssemblyOfflineList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkOrderAssemblyOffline::getWorkOrderNo)); + return workOrderAssemblyOfflineList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkOrderAssemblyOffline::getWorkOrderNo)); } - //离线工单补录记录表 + //查询离线工单补录记录 private Map getWorkOrderOfflineRestoreRecordMap(String organizeCode, List workOrderNoList) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean); @@ -85,4 +153,19 @@ public class MesWorkOrderOfflineRestoreService implements IMesWorkOrderOfflineRe return workOrderOfflineRestoreRecordMap; } + //查询离线工单 + private Map getWorkOrderOfflineMap(String organizeCode, List workOrderNoList) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.SYSTEM_SYNC_STATUS, packBean); + List workOrderOfflineList = workOrderOfflineRepository.findByHqlWhere(packBean); + if (CollectionUtils.isEmpty(workOrderOfflineList)) return null; + workOrderOfflineList = workOrderOfflineList.stream().filter(o -> null != o). + collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesWorkOrderOffline::getWorkOrderNo))), ArrayList::new)); + Map workOrderOfflineMap = workOrderOfflineList.stream().filter(o -> null != o).collect(Collectors.toMap(MesWorkOrderOffline::getWorkOrderNo, o -> o)); + log.info("补录离线生产数据JOB --- 查询到未补录过的生产工单包含: {} ---", workOrderOfflineMap.keySet().toString()); + return workOrderOfflineMap; + + } + }