diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesWorkCellScanMonitorLogDao.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesWorkCellScanMonitorLogDao.java new file mode 100644 index 0000000..219503c --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesWorkCellScanMonitorLogDao.java @@ -0,0 +1,21 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.dao; + +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesScanMonitorContext; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import io.swagger.annotations.ApiOperation; + +import java.util.List; + +public interface IMesWorkCellScanMonitorLogDao { + + @ApiOperation(value = "写入工位扫描监控信息") + void insertWorkCellScanMonitorLog(StationResultBean resultBean, MesScanMonitorContext scanMonitorContext); + + @ApiOperation(value = "修改工位扫描监控信息") + Integer updateWorkCellScanMonitorLog(String organizeCode, String workCenterCode, String workCellCode, Long mouldRecordId); + + @ApiOperation(value = "修改工位扫描监控信息") + Integer updateWorkCellScanMonitorLog(String organizeCode, String workCenterCode, String userInfo, Long mouldRecordId, List productionPsOutContextList); + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesWorkCellScanMonitorLogDao.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesWorkCellScanMonitorLogDao.java new file mode 100644 index 0000000..ed78dea --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesWorkCellScanMonitorLogDao.java @@ -0,0 +1,167 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.daoimpl; + + +import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesWorkCellScanMonitorLogDao; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesScanMonitorContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.List; +import java.util.StringJoiner; +import java.util.stream.Collectors; + +@Service +public class MesWorkCellScanMonitorLogDao implements IMesWorkCellScanMonitorLogDao { + + @Autowired + private EntityManager entityManager; + + @Autowired + private SnowflakeIdMaker snowflakeIdMaker; + + @Override + public void insertWorkCellScanMonitorLog(StationResultBean resultBean, MesScanMonitorContext scanMonitorContext) { + + if (null == resultBean || null == scanMonitorContext) return; + + StringBuffer builder = new StringBuffer(); + + builder.append(" insert into mes_work_cell_scan_monitor_"); + builder.append(resultBean.getWorkCenterCode().toLowerCase()); + builder.append("( id, organize_code, is_valid, is_deleted, create_user, create_date_time, modify_user, modify_date_time,"); + builder.append("( description, remark, system_sync_date_time, system_sync_status,"); + builder.append(" area_code, work_center_code, work_cell_code, equipment_code, equipment_name, process_code, process_name, craft_code, craft_name,"); + builder.append(" mould_record_id, scan_info, work_order_no, serial_number, product_sn, cust_sn, part_no, part_name,"); + builder.append(" step_code, log_type, message, message_type, deal_status, org_work_code)"); + builder.append(" values ( :id , :organizeCode , :isValid , :isDeleted , :createUser , :createDatetime , :modifyUser , :modifyDatetime ,"); + builder.append(" :description , :remark , :systemSyncDatetime , :systemSyncStatus ,"); + builder.append(" :areaCode , :workCenterCode , :workCellCode , :equipmentCode , :equipmentName , :processCode , :processName , :craftCode , :craftName ,"); + builder.append(" :mouldRecordId , :scanInfo , :workOrderNo , :serialNumber , :productSn , :custSn , :partNo , :partName ,"); + builder.append(" :stepCode , :logType , :message , :messageType , :dealStatus , :orgWorkCode )"); + + Query insert = entityManager.createNativeQuery(builder.toString()); + + insert.setParameter(MesPcnExtConstWords.ID, snowflakeIdMaker.nextId()); + insert.setParameter(MesPcnExtConstWords.ORGANIZE_CODE, resultBean.getOrganizeCode()); + insert.setParameter(MesPcnExtConstWords.IS_VALID, CommonEnumUtil.IS_VAILD.VAILD.getValue()); + insert.setParameter(MesPcnExtConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + insert.setParameter(MesPcnExtConstWords.CREATE_USER, resultBean.getUserInfo()); + insert.setParameter(MesPcnExtConstWords.CREATE_DATE_TIME, TimeTool.getNowTime(true)); + insert.setParameter(MesPcnExtConstWords.MODIFY_USER, resultBean.getUserInfo()); + insert.setParameter(MesPcnExtConstWords.MODIFY_DATE_TIME, TimeTool.getNowTime(true)); + insert.setParameter(MesPcnExtConstWords.DESCRIPTION, null); + insert.setParameter(MesPcnExtConstWords.REMARK, null); + insert.setParameter(MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, null); + insert.setParameter(MesPcnExtConstWords.AREA_CODE, resultBean.getAreaCode()); + insert.setParameter(MesPcnExtConstWords.WORK_CENTER_CODE, resultBean.getWorkCenterCode()); + insert.setParameter(MesPcnExtConstWords.WORK_CELL_CODE, resultBean.getWorkCellCode()); + insert.setParameter(MesPcnExtConstWords.EQUIPMENT_CODE, scanMonitorContext.getEquipmentCode()); + insert.setParameter(MesPcnExtConstWords.EQUIPMENT_NAME, scanMonitorContext.getEquipmentName()); + insert.setParameter(MesPcnExtConstWords.PROCESS_CODE, scanMonitorContext.getProcessCode()); + insert.setParameter(MesPcnExtConstWords.PROCESS_NAME, scanMonitorContext.getProcessName()); + insert.setParameter(MesPcnExtConstWords.CRAFT_CODE, scanMonitorContext.getCraftCode()); + insert.setParameter(MesPcnExtConstWords.CRAFT_NAME, scanMonitorContext.getCraftName()); + insert.setParameter(MesPcnExtConstWords.MOULD_RECORD_ID, scanMonitorContext.getMouldRecordId()); + insert.setParameter(MesPcnExtConstWords.SCAN_INFO, resultBean.getScanInfo()); + insert.setParameter(MesPcnExtConstWords.WORK_ORDER_NO, null); + insert.setParameter(MesPcnExtConstWords.SERIAL_NUMBER, null); + insert.setParameter(MesPcnExtConstWords.PRODUCT_SN, null); + insert.setParameter(MesPcnExtConstWords.CUST_SN, null); + insert.setParameter(MesPcnExtConstWords.PART_NO, null); + insert.setParameter(MesPcnExtConstWords.PART_NAME, null); + insert.setParameter(MesPcnExtConstWords.STEP_CODE, resultBean.getStepCode()); + insert.setParameter(MesPcnExtConstWords.LOG_TYPE, resultBean.getLogType()); + insert.setParameter(MesPcnExtConstWords.MESSAGE, resultBean.getMessage()); + insert.setParameter(MesPcnExtConstWords.MESSAGE_TYPE, MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_MESSAGE_TYPE.codeOfValue(resultBean.getDataType())); + insert.setParameter(MesPcnExtConstWords.ORG_WORK_CODE, new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(resultBean.getOrganizeCode()).add(resultBean.getWorkCenterCode()).toString()); + //存在开模ID的记录延迟同步 + if (!StringUtils.isEmpty(scanMonitorContext.getMouldRecordId())) { + insert.setParameter(MesPcnExtConstWords.SYSTEM_SYNC_STATUS, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + insert.setParameter(MesPcnExtConstWords.DEAL_STATUS, MesExtEnumUtil.MES_LOG_DEAL_STATUS.UNDEAL.getValue()); + } else { + insert.setParameter(MesPcnExtConstWords.SYSTEM_SYNC_STATUS, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + insert.setParameter(MesPcnExtConstWords.DEAL_STATUS, MesExtEnumUtil.MES_LOG_DEAL_STATUS.DEAL_SUCCESS.getValue()); + } + + insert.executeUpdate(); + } + + @Override + public Integer updateWorkCellScanMonitorLog(String organizeCode, String workCenterCode, String workCellCode, Long mouldRecordId) { + + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode) || StringUtils.isEmpty(workCellCode)) return MesPcnExtConstWords.ZERO; + + StringBuffer builder = new StringBuffer(); + + builder.append(" update mes_work_cell_scan_monitor_"); + builder.append(workCenterCode.toLowerCase()); + builder.append(" set system_sync_status = :systemSyncStatus , deal_status = :dealStatus1 "); + builder.append(" where organize_code = :organizeCode and deal_status = :dealStatus2 and work_cell_code = :workCellCode "); + if (!StringUtils.isEmpty(mouldRecordId)) builder.append(" and mould_record_id != :mouldRecordId "); + + Query update = entityManager.createNativeQuery(builder.toString()); + + update.setParameter(MesPcnExtConstWords.SYSTEM_SYNC_STATUS, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + update.setParameter("dealStatus1", MesExtEnumUtil.MES_LOG_DEAL_STATUS.DEAL_SUCCESS.getValue()); + + update.setParameter(MesPcnExtConstWords.ORGANIZE_CODE, organizeCode); + update.setParameter("dealStatus2", MesExtEnumUtil.MES_LOG_DEAL_STATUS.UNDEAL.getValue()); + update.setParameter(MesPcnExtConstWords.WORK_CELL_CODE, workCellCode); + if (!StringUtils.isEmpty(mouldRecordId)) update.setParameter(MesPcnExtConstWords.MOULD_RECORD_ID, mouldRecordId); + + return update.executeUpdate(); + } + + @Override + public Integer updateWorkCellScanMonitorLog(String organizeCode, String workCenterCode, String userInfo, Long mouldRecordId, List productionPsOutContextList) { + + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode) || StringUtils.isEmpty(mouldRecordId) || CollectionUtils.isEmpty(productionPsOutContextList)) return MesPcnExtConstWords.ZERO; + + String workOrderNo = productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkOrderNo()))).map(MesProductionPsOutContext::getWorkOrderNo).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)); + String serialNumber = productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getSerialNumber()))).map(MesProductionPsOutContext::getSerialNumber).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)); + String productSn = productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProductSn()))).map(MesProductionPsOutContext::getProductSn).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)); + String custSn = productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCustSn()))).map(MesProductionPsOutContext::getCustSn).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)); + String partNo = productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()))).map(MesProductionPsOutContext::getPartNo).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)); + String partName = productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartName()))).map(MesProductionPsOutContext::getPartName).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)); + + StringBuffer builder = new StringBuffer(); + + builder.append(" update mes_work_cell_scan_monitor_"); + builder.append(workCenterCode.toLowerCase()); + builder.append(" set work_order_no = :workOrderNo , serial_number = :serialNumber , product_sn = :productSn , cust_sn = :custSn , part_no = :partNo , part_name = :partName ,"); + builder.append(" modify_user = :modifyUser , modify_date_time = :modifyDatetime , system_sync_status = :systemSyncStatus , deal_status = :dealStatus1 "); + builder.append(" where organize_code = :organizeCode and mould_record_id = :mouldRecordId "); + + Query update = entityManager.createNativeQuery(builder.toString()); + + update.setParameter(MesPcnExtConstWords.WORK_ORDER_NO, workOrderNo); + update.setParameter(MesPcnExtConstWords.SERIAL_NUMBER, serialNumber); + update.setParameter(MesPcnExtConstWords.PRODUCT_SN, productSn); + update.setParameter(MesPcnExtConstWords.CUST_SN, custSn); + update.setParameter(MesPcnExtConstWords.PART_NO, partNo); + update.setParameter(MesPcnExtConstWords.PART_NAME, partName); + update.setParameter(MesPcnExtConstWords.MODIFY_USER, userInfo); + update.setParameter(MesPcnExtConstWords.MODIFY_DATE_TIME, TimeTool.getNowTime(true)); + update.setParameter(MesPcnExtConstWords.SYSTEM_SYNC_STATUS, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + update.setParameter(MesPcnExtConstWords.DEAL_STATUS, MesExtEnumUtil.MES_LOG_DEAL_STATUS.DEAL_SUCCESS.getValue()); + + update.setParameter(MesPcnExtConstWords.ORGANIZE_CODE, organizeCode); + update.setParameter(MesPcnExtConstWords.MOULD_RECORD_ID, mouldRecordId); + + return update.executeUpdate(); + + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java index 29f8d73..8890000 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java @@ -257,7 +257,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService partInspection = createPartInspection(model, MesExtEnumUtil.PART_INSPECTION_STATUS.QUALIFIED.getValue(), org); if (model.getOptType() != null && model.getOptType() == 2) { - partInspection .setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + partInspection.setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); } partInspectionRepository.save(partInspection); @@ -360,6 +360,11 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService if (StringUtils.isEmpty(model.getPartInspection())) { partInspection = createPartInspection(model, MesExtEnumUtil.PART_INSPECTION_STATUS.FAIL.getValue(), org); + + if (model.getOptType() != null && model.getOptType() == 2) { + partInspection.setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + } + model.setPartInspection(partInspectionRepository.save(partInspection)); List defectTypeNoExitList = new ArrayList<>(); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java index fad1d30..a283d0a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java @@ -201,6 +201,8 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService { resultModel.getMesProduceSnList().forEach(mesProduceSn -> { mesProduceSn.setWorkCenterCode(workCenterCode); + mesProduceSn.setPrintCount(MesPcnExtConstWords.ONE); + mesProduceSn.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue()); mesProduceSn.setFid(UUID.randomUUID().toString()); //保存条码 mesProduceSnRDao.insert(mesProduceSn); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesWorkCellScanMonitorLogExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesWorkCellScanMonitorLogExtService.java index 26e90d1..d348667 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesWorkCellScanMonitorLogExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesWorkCellScanMonitorLogExtService.java @@ -2,23 +2,15 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.equiplog; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesWorkCellScanMonitorLogDao; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesScanMonitorContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.swslog.ISwsWriteDbLogService; -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.enumutil.MesPcnEnumUtil; -import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesWcEquipment; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCellScanMonitorLog; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; -import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellScanMonitorLogRepository; -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; @@ -26,10 +18,8 @@ import org.springframework.util.StringUtils; import java.util.List; import java.util.Map; -import java.util.StringJoiner; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.stream.Collectors; @Slf4j @Service @@ -42,7 +32,7 @@ public class MesWorkCellScanMonitorLogExtService implements ISwsWriteDbLogServic private IMesEquipmentExtService equipmentExtService; @Autowired - private MesWorkCellScanMonitorLogRepository workCellScanMonitorLogRepository; + private IMesWorkCellScanMonitorLogDao workCellScanMonitorLogDao; private final static Map> cellMsg2RepeatMap = new ConcurrentHashMap(); @@ -54,36 +44,18 @@ public class MesWorkCellScanMonitorLogExtService implements ISwsWriteDbLogServic if (checkRepeat(resultBean, scanMonitorContext)) return; - MesWorkCellScanMonitorLog workCellScanMonitorLog = new MesWorkCellScanMonitorLog(); + if (null == scanMonitorContext) scanMonitorContext = new MesScanMonitorContext(); - if (null != scanMonitorContext) BeanUtils.copyProperties(scanMonitorContext, workCellScanMonitorLog); - else log.info("工厂{}生产线{}工位{}: MesWorkCellScanMonitorLogExtService --- 上下文当前不存在工位扫描监控信息 --- {}", resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getWorkCellCode(), resultBean.toWriteDbString()); - - BeanUtils.copyProperties(resultBean, workCellScanMonitorLog); - - workCellScanMonitorLog.setMessageType(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_MESSAGE_TYPE.codeOfValue(resultBean.getDataType())); - - workCellScanMonitorLog.setOrgWorkCode(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(workCellScanMonitorLog.getOrganizeCode()).add(workCellScanMonitorLog.getWorkCenterCode()).toString()); - - if (StringUtils.isEmpty(workCellScanMonitorLog.getEquipmentCode())) { + if (StringUtils.isEmpty(scanMonitorContext.getEquipmentCode())) { MesWcEquipment wcEquipment = equipmentExtService.getWcEquipment(resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getWorkCellCode()); - workCellScanMonitorLog.setEquipmentCode(null != wcEquipment ? wcEquipment.getEquipmentCode() : null); - workCellScanMonitorLog.setEquipmentName(null != wcEquipment ? wcEquipment.getEquipmentName() : null); + scanMonitorContext.setEquipmentCode(null != wcEquipment ? wcEquipment.getEquipmentCode() : null); + scanMonitorContext.setEquipmentName(null != wcEquipment ? wcEquipment.getEquipmentName() : null); } - ConvertBean.serviceModelInitialize(workCellScanMonitorLog, resultBean.getUserInfo()); - workCellScanMonitorLog.setCreateDatetime(resultBean.getCreateDatetime()); - - //存在开模ID的记录延迟同步 - if (!StringUtils.isEmpty(workCellScanMonitorLog.getMouldRecordId())) { - workCellScanMonitorLog.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); - workCellScanMonitorLog.setDealStatus(MesExtEnumUtil.MES_LOG_DEAL_STATUS.UNDEAL.getValue()); - } else { - workCellScanMonitorLog.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); - workCellScanMonitorLog.setDealStatus(MesExtEnumUtil.MES_LOG_DEAL_STATUS.DEAL_SUCCESS.getValue()); - } + if (null == scanMonitorContext) + log.info("工厂{}生产线{}工位{}: MesWorkCellScanMonitorLogExtService --- 上下文当前不存在工位扫描监控信息 --- {}", resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getWorkCellCode(), resultBean.toWriteDbString()); - workCellScanMonitorLogRepository.insert(workCellScanMonitorLog); + workCellScanMonitorLogDao.insertWorkCellScanMonitorLog(resultBean, scanMonitorContext); } @@ -91,22 +63,15 @@ public class MesWorkCellScanMonitorLogExtService implements ISwsWriteDbLogServic initCellMsg2RepeatMap(resultBean); - Long mouldRecordId = null != scanMonitorContext ? scanMonitorContext.getMouldRecordId() : null; + Long mouldRecordId = (null != scanMonitorContext && !StringUtils.isEmpty(scanMonitorContext.getMouldRecordId())) ? scanMonitorContext.getMouldRecordId() : null; String mouldRecordIdStr = !StringUtils.isEmpty(mouldRecordId) ? mouldRecordId.toString() : MesPcnExtConstWords.EMPTY; if (!cellMsg2RepeatMap.get(resultBean.getClientInfo()).get(0).equals(mouldRecordIdStr)) { cellMsg2RepeatMap.get(resultBean.getClientInfo()).clear(); cellMsg2RepeatMap.get(resultBean.getClientInfo()).add(0, mouldRecordIdStr); - //补偿数据 - DdlPackBean packBean = DdlPackBean.getDdlPackBean(resultBean.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(resultBean.getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean); - DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.MES_LOG_DEAL_STATUS.UNDEAL.getValue(), MesPcnExtConstWords.DEAL_STATUS, packBean); - if (!StringUtils.isEmpty(mouldRecordId)) DdlPreparedPack.getNumNOEqualPack(mouldRecordId, MesPcnExtConstWords.MOULD_RECORD_ID, packBean); - int count = workCellScanMonitorLogRepository.updateByPropertiesNoSync( - new String[]{MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.DEAL_STATUS}, - new Object[]{CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesExtEnumUtil.MES_LOG_DEAL_STATUS.DEAL_SUCCESS.getValue()}, - packBean); + //补偿数据: 将工位排除当前开模ID的未处理的的数据改成已处理,未同步 + Integer count = workCellScanMonitorLogDao.updateWorkCellScanMonitorLog(resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getWorkCellCode(), mouldRecordId); log.info("工厂{}生产线{}工位{}: MesWorkCellScanMonitorLogExtService --- 补偿同步条数:{} ---", resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getWorkCellCode(), count); @@ -155,23 +120,7 @@ public class MesWorkCellScanMonitorLogExtService implements ISwsWriteDbLogServic List productionPsOutContextList = resultBean.getResultList(); - String workOrderNo = productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkOrderNo()))).map(MesProductionPsOutContext::getWorkOrderNo).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)); - String serialNumber = productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getSerialNumber()))).map(MesProductionPsOutContext::getSerialNumber).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)); - String productSn = productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProductSn()))).map(MesProductionPsOutContext::getProductSn).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)); - String custSn = productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCustSn()))).map(MesProductionPsOutContext::getCustSn).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)); - String partNo = productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()))).map(MesProductionPsOutContext::getPartNo).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)); - String partName = productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartName()))).map(MesProductionPsOutContext::getPartName).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)); - - DdlPackBean packBean = DdlPackBean.getDdlPackBean(resultBean.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(resultBean.getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean); - DdlPreparedPack.getNumEqualPack(Long.valueOf(resultBean.getScanInfo()), MesPcnExtConstWords.MOULD_RECORD_ID, packBean); - - workCellScanMonitorLogRepository.updateByProperties( - new String[]{MesPcnExtConstWords.WORK_ORDER_NO, MesPcnExtConstWords.SERIAL_NUMBER, MesPcnExtConstWords.PRODUCT_SN, MesPcnExtConstWords.CUST_SN, - MesPcnExtConstWords.PART_NO, MesPcnExtConstWords.PART_NAME, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.DEAL_STATUS}, - new Object[]{workOrderNo, serialNumber, productSn, custSn, - partNo, partName, TimeTool.getNowTime(true), resultBean.getUserInfo(), MesExtEnumUtil.MES_LOG_DEAL_STATUS.DEAL_SUCCESS.getValue()}, - packBean); + workCellScanMonitorLogDao.updateWorkCellScanMonitorLog(resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getUserInfo(), Long.valueOf(resultBean.getScanInfo()), productionPsOutContextList); } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index 9919565..c993c6b 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -63,6 +63,10 @@ public class MesPcnExtConstWords { public static final String USER_NAME = "userName"; // 修改人 public static final String MODIFY_USER = "modifyUser"; + // 描述 + public static final String DESCRIPTION = "description"; + // 备注 + public static final String REMARK = "remark"; // 修改人 public static final String USER_INFO = "userInfo"; // 同步标志 @@ -111,8 +115,12 @@ public class MesPcnExtConstWords { public static final String SHIFT_GROUP_NAME = "shiftGroupName"; // 工序代码 public static final String PROCESS_CODE = "processCode"; + // 工序名称 + public static final String PROCESS_NAME = "processName"; // 工艺代码 public static final String CRAFT_CODE = "craftCode"; + // 工艺名称 + public static final String CRAFT_NAME = "craftName"; // 生产工单号 public static final String WORK_ORDER_NO = "workOrderNo"; // 数据来源 @@ -199,10 +207,6 @@ public class MesPcnExtConstWords { public static final String PACKAGE_TYPE_CODE = "packageTypeCode"; //零件生产组代码 public static final String PART_PROD_GROUP_CODE = "partProdGroupCode"; - //描述 - public static final String DESCRIPTION = "description"; - //描述 - public static final String REMARK = "remark"; //状态 public static final String STATUS = "status"; //上线时间 @@ -215,6 +219,12 @@ public class MesPcnExtConstWords { // 客制化条码长度:通用 public static final Integer CUSTOMER_SN_LENGTH_GM = 58; + // 日志类型 + public static final String LOG_TYPE = "logType"; + // 信息类型 + public static final String MESSAGE_TYPE = "messageType"; + // 工厂_工作中心 + public static final String ORG_WORK_CODE = "orgWorkCode"; // 时间格式 public static final String DATE_FORMAT_SSS = "yyyy-MM-dd HH:mm:ss.SSS";