From 1563133d19221a2c059c009b1b2c2da74e1780f6 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Fri, 23 Feb 2024 11:31:00 +0800 Subject: [PATCH] jx pcn --- .../busi/jx/JxProdBusiStrategyCommonService.java | 1 + .../job/jx/JxRestoreProductDataService.java | 55 ++++++++++++++-------- .../mes/pcn/pojo/bean/SxWorkCellLineOffRecord.java | 7 +++ 3 files changed, 44 insertions(+), 19 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyCommonService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyCommonService.java index 980c477..32bdaee 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyCommonService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyCommonService.java @@ -961,6 +961,7 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi record.setWorkCellCode(params.getWorkCellCode()); record.setWorkTime(params.getWorkCenterExtDb().getWorkTime()); record.setShiftCode(params.getWorkCenterExtDb().getShiftCode()); + record.setSerialNumber(params.getSerialNumber()); record.setProductSn(params.getProductSn()); record.setWorkOrderNo(params.getOrderModel().getOrderNo()); record.setPartNo(params.getOrderModel().getPartNo()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/jx/JxRestoreProductDataService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/jx/JxRestoreProductDataService.java index b3c44af..e661006 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/jx/JxRestoreProductDataService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/jx/JxRestoreProductDataService.java @@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j; 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.List; import java.util.Map; @@ -42,50 +43,66 @@ public class JxRestoreProductDataService implements IJxRestoreProductDataService Integer limit = paramMap.containsKey(MesPcnExtConstWords.LIMIT) ? (Integer) paramMap.get(MesPcnExtConstWords.LIMIT) : 100; - Map> productDataMap = findProductData(organizeCode, limit); + List productDataList = findProductDataList(organizeCode, limit); - if (CollectionUtils.isEmpty(productDataMap)) return; + log.info("工厂{} RESTORE PRODUCT DATA JOB --- EXEC --- PRODUCT DATA SIZE:[{}]", organizeCode, CollectionUtils.isEmpty(productDataList) ? 0 : productDataList.size()); - for (Map.Entry> entry : productDataMap.entrySet()) { + if (CollectionUtils.isEmpty(productDataList)) return; - if (null == entry) continue; + doRestoreProductData(organizeCode, getProductDataMapByPs(productDataList), true); - SxWorkCellLineOffRecord workCellLineOffRecord = getWorkCellLineOffRecord(organizeCode, entry.getKey()); + doRestoreProductData(organizeCode, getProductDataMapBySn(productDataList), false); - Integer count = doRestoreProductData(entry.getValue(), workCellLineOffRecord); - - log.info("工厂{} RESTORE PRODUCT DATA JOB --- EXEC --- PRODUCT SN:{} --- COMPLETED:[{}] --- UNCOMPLETE:[{}]", organizeCode, entry.getKey(), count, entry.getValue().size()); + } - } + private Map> getProductDataMapByPs(List productDataList) { + return CollectionUtils.isEmpty(productDataList) ? null : + productDataList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProductSn()))).collect(Collectors.groupingBy(MesProductData::getProductSn)); + } + private Map> getProductDataMapBySn(List productDataList) { + return CollectionUtils.isEmpty(productDataList) ? null : + productDataList.stream().filter(o -> (null != o && StringUtils.isEmpty(o.getProductSn()) && !StringUtils.isEmpty(o.getSerialNumber()))).collect(Collectors.groupingBy(MesProductData::getSerialNumber)); } - private Map> findProductData(String organizeCode, Integer limit) { + private List findProductDataList(String organizeCode, Integer limit) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getNumberSmallerEqualPack(0, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, packBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesPcnExtConstWords.SYSTEM_SYNC_STATUS}, packBean); - List productDataList = productDataRepository.findByHqlTopWhere(packBean, limit); - - log.info("工厂{} RESTORE PRODUCT DATA JOB --- EXEC --- PRODUCT DATA SIZE:[{}]", organizeCode, CollectionUtils.isEmpty(productDataList) ? 0 : productDataList.size()); - - return CollectionUtils.isEmpty(productDataList) ? null : - productDataList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesProductData::getProductSn)); + return productDataRepository.findByHqlTopWhere(packBean, limit); } - private SxWorkCellLineOffRecord getWorkCellLineOffRecord(String organizeCode, String productSn) { + private SxWorkCellLineOffRecord getWorkCellLineOffRecord(String organizeCode, String sn, Boolean flag) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(productSn, MesPcnExtConstWords.PRODUCT_SN, packBean); + if (flag) DdlPreparedPack.getStringEqualPack(sn, MesPcnExtConstWords.PRODUCT_SN, packBean); + else DdlPreparedPack.getStringEqualPack(sn, MesPcnExtConstWords.SERIAL_NUMBER, packBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesPcnExtConstWords.CREATE_DATE_TIME}, packBean); return workCellLineOffRecordRepository.getByProperty(packBean); } + private void doRestoreProductData(String organizeCode, Map> productDataMap, Boolean flag) { + + for (Map.Entry> entry : productDataMap.entrySet()) { + + if (null == entry) continue; + + SxWorkCellLineOffRecord workCellLineOffRecord = getWorkCellLineOffRecord(organizeCode, entry.getKey(), flag); + + Integer count = doRestoreProductData(entry.getValue(), workCellLineOffRecord); + + log.info("工厂{} RESTORE PRODUCT DATA JOB --- EXEC --- SN:{} --- {} --- QTY:[{}] --- COMPLETED:[{}]", organizeCode, entry.getKey(), flag ? "产品条码" : "过程条码", entry.getValue().size(), count); + + } + } + private Integer doRestoreProductData(List productDataList, SxWorkCellLineOffRecord workCellLineOffRecord) { Integer count = 0; if (null != workCellLineOffRecord) count = productDataList.size(); for (MesProductData productData : productDataList) { if (null == productData) continue; - if (count == 0) productData.setSystemSyncStatus(productData.getSystemSyncStatus() > 0 ? 0 : productData.getSystemSyncStatus() - 1); + if (count == 0) productData.setSystemSyncStatus(productData.getSystemSyncStatus() - 1); else { + productData.setProductSn(workCellLineOffRecord.getProductSn()); productData.setOrderNo(workCellLineOffRecord.getWorkOrderNo()); productData.setPartNo(workCellLineOffRecord.getPartNo()); productData.setPartDesc(workCellLineOffRecord.getPartNameRdd()); diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/bean/SxWorkCellLineOffRecord.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/bean/SxWorkCellLineOffRecord.java index 8438263..3dc3aa8 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/bean/SxWorkCellLineOffRecord.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/bean/SxWorkCellLineOffRecord.java @@ -27,6 +27,9 @@ import java.io.Serializable; @EqualsAndHashCode(callSuper = true) @Table(name = "SX_WORK_CELL_LINE_OFF_RECORD", indexes = { @Index(columnList = "SYSTEM_SYNC_STATUS"), + @Index(columnList = "SERIAL_NUMBER"), + @Index(columnList = "PRODUCT_SN"), + @Index(columnList = "WORK_ORDER_NO"), @Index(columnList = "WORK_CENTER_CODE") }) @Api("松下工位下线记录") @@ -50,6 +53,10 @@ public class SxWorkCellLineOffRecord extends BaseBean implements Serializable { @ApiParam("作业时间") private String workTime; + @Column(name = "SERIAL_NUMBER") + @ApiParam("产品条码") + private String serialNumber; + @Column(name = "PRODUCT_SN") @ApiParam("产品条码") private String productSn;