tags/yfai-pcn-ext-v2.3
王杰 6 months ago
parent 649d66e90f
commit 402de6f23b

@ -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<String, String> paramMap) {
@ -42,17 +58,70 @@ public class MesWorkOrderOfflineRestoreService implements IMesWorkOrderOfflineRe
if (CollectionUtils.isEmpty(workOrderAssemblyOfflineMap)) return;
Map<String, MesWorkOrderOfflineRestoreRecord> workOrderOfflineRestoreRecordMap = getWorkOrderOfflineRestoreRecordMap(organizeCode, new ArrayList<>(workOrderAssemblyOfflineMap.keySet()));
List<String> workOrderNoList = new ArrayList<>(workOrderAssemblyOfflineMap.keySet());
for (Map.Entry<String, List<MesWorkOrderAssemblyOffline>> entry : workOrderAssemblyOfflineMap.entrySet()) {
if (null == entry) continue;
Map<String, MesWorkOrderOfflineRestoreRecord> workOrderOfflineRestoreRecordMap = getWorkOrderOfflineRestoreRecordMap(organizeCode, workOrderNoList);
List<MesWorkOrderAssemblyOffline> workOrderAssemblyOfflineList = entry.getValue();
Map<String, MesWorkOrderOffline> workOrderOfflineMap = getWorkOrderOfflineMap(organizeCode, workOrderNoList);
String now = TimeTool.getNowTime(true);
for (Map.Entry<String, List<MesWorkOrderAssemblyOffline>> 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<MesWorkOrderAssemblyOffline> 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<String, MesWorkOrderOfflineRestoreRecord> getWorkOrderOfflineRestoreRecordMap(String organizeCode, List<String> 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<String, MesWorkOrderOffline> getWorkOrderOfflineMap(String organizeCode, List<String> 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<MesWorkOrderOffline> 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<String, MesWorkOrderOffline> workOrderOfflineMap = workOrderOfflineList.stream().filter(o -> null != o).collect(Collectors.toMap(MesWorkOrderOffline::getWorkOrderNo, o -> o));
log.info("补录离线生产数据JOB --- 查询到未补录过的生产工单包含: {} ---", workOrderOfflineMap.keySet().toString());
return workOrderOfflineMap;
}
}

Loading…
Cancel
Save