tags/yfai-pcn-ext-v1.0
王杰 1 year ago
parent 533ce6588b
commit 1563133d19

@ -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());

@ -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<String, List<MesProductData>> productDataMap = findProductData(organizeCode, limit);
List<MesProductData> 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<String, List<MesProductData>> 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<String, List<MesProductData>> getProductDataMapByPs(List<MesProductData> productDataList) {
return CollectionUtils.isEmpty(productDataList) ? null :
productDataList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProductSn()))).collect(Collectors.groupingBy(MesProductData::getProductSn));
}
private Map<String, List<MesProductData>> getProductDataMapBySn(List<MesProductData> 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<String, List<MesProductData>> findProductData(String organizeCode, Integer limit) {
private List<MesProductData> 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<MesProductData> 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<String, List<MesProductData>> productDataMap, Boolean flag) {
for (Map.Entry<String, List<MesProductData>> 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<MesProductData> 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());

@ -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;

Loading…
Cancel
Save