diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentLogService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentLogService.java index c9901ee..0e8990c 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentLogService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEquipmentLogService.java @@ -7,7 +7,6 @@ public interface IMesEquipmentLogService { void saveEquipmentLogToRedis(ActorMessage actorMessage); - void saveEquipmentLogDetails(String organizeCode); void updateValue(EquipLogMqttMsg equipLogMqttMsg); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java index bb6eb59..70aece6 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java @@ -1,19 +1,21 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentLogService; -import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ActorMessage; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.equiplog.MesEquipmentLogExtService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ActorMessage; import cn.estsh.i3plus.ext.mes.pcn.pojo.mqtt.EquipLogMqttMsg; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.i3plus.platform.common.util.MesPcnConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; 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.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLog; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLogDetail; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentRecord; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentLogDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentLogRepository; import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentRecordRepository; @@ -27,7 +29,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; @@ -36,8 +37,9 @@ import javax.annotation.Resource; import javax.persistence.EntityManager; import javax.persistence.Query; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; +import java.util.Map; +import java.util.StringJoiner; import java.util.stream.Collectors; @Slf4j @@ -75,38 +77,41 @@ public class MesEquipmentLogService implements IMesEquipmentLogService { // 获取设备变量属性 List equipmentVariableList = mesEquipmentExtService.getEquipmentVariableList(actorMessage.getOrganizeCode(), actorMessage.getEquipmentCode(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue()); // 获取变量ID集合 - List equipVariableIdList = equipmentVariableList.stream().filter(o -> null != o).map(MesEquipmentVariable::getId).collect(Collectors.toList()); + Map equipVariableMap = CollectionUtils.isEmpty(equipmentVariableList) ? null : equipmentVariableList.stream().filter(o -> null != o).collect(Collectors.toMap(MesEquipmentVariable::getId, o -> o)); + if (CollectionUtils.isEmpty(equipVariableMap)) { + log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- 获取工艺参数未查询到工艺参数完成类型的设备数据变量", actorMessage.getOrganizeCode(), actorMessage.getWorkCenterCode(), actorMessage.getWorkCellCode(), "mesVariableWhenFinishedReadStepService"); + return; + } + // 获取设备数据采集信息 - List equipmentLogList = mesEquipmentLogExtService.getEquipmentLogList(actorMessage.getOrganizeCode(), actorMessage.getEquipId()); + List equipmentLogList = mesEquipmentLogExtService.getEquipmentLogCollectList(actorMessage.getOrganizeCode(), actorMessage.getEquipId(), MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.FALSE.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue()); // 筛选出该设备中设备变量属性对应的数据采集信息 - equipmentLogList = equipmentLogList.stream().filter(mesEquipmentLog -> equipVariableIdList.contains(mesEquipmentLog.getEquipVariableId())).collect(Collectors.toList()); - - LOGGER.info("需要保存的工艺参数信息: list ={}", equipmentLogList); + equipmentLogList = CollectionUtils.isEmpty(equipmentLogList) ? null : equipmentLogList.stream().filter(o -> equipVariableMap.containsKey(o.getEquipVariableId())).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(equipmentLogList)) { + log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- 获取工艺参数未查询到设备LOG", actorMessage.getOrganizeCode(), actorMessage.getWorkCenterCode(), actorMessage.getWorkCellCode(), "mesVariableWhenFinishedReadStepService"); + return; + } - Long recordId = snowflakeIdMaker.nextId(); + equipmentLogList.forEach(o -> BeanUtils.copyProperties(equipVariableMap.get(o.getEquipVariableId()), o)); MesEquipmentRecord mesEquipmentRecord =new MesEquipmentRecord(); BeanUtils.copyProperties(actorMessage, mesEquipmentRecord); mesEquipmentRecord.setRecordStatus(MesExtEnumUtil.RECORD_STATUS.RECORD_STATUS_10.getValue()); - mesEquipmentRecord.setId(recordId); - + mesEquipmentRecord.setId(snowflakeIdMaker.nextId()); ConvertBean.serviceModelInitialize(mesEquipmentRecord, actorMessage.getUserName()); String key = getKey(mesEquipmentRecord); - LOGGER.info("key ={}", key); - // todo 目前没有适合的方法,需要优化一下 - equipmentLogList.forEach(equipLog -> { - - redisMesPcn.putList(key, equipLog); - }); - /* MesEq - redisMesPcn.putObject()*/ + equipmentLogList.forEach(equipLog -> redisMesPcn.putList(key, equipLog)); + mesEquipmentRecordRepository.save(mesEquipmentRecord); - LOGGER.info("产线【{}】,工位【{}】,设备【{}】下,保存rediskey【{}】和记录成功", mesEquipmentRecord.getWorkCenterCode(),mesEquipmentRecord.getWorkCellCode(),mesEquipmentRecord.getEquipmentCode(),key); + + log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- KEY:{} --- 工艺参数:{}", + actorMessage.getOrganizeCode(), actorMessage.getWorkCenterCode(), actorMessage.getWorkCellCode(), "mesVariableWhenFinishedReadStepService", key, JSONObject.toJSONString(equipmentLogList)); + } private String getKey(MesEquipmentRecord mesEquipmentRecord){ - return mesEquipmentRecord.getOrganizeCode() + ":" + mesEquipmentRecord.getWorkCenterCode() + ":" + mesEquipmentRecord.getWorkCellCode() + ":" + mesEquipmentRecord.getEquipmentCode () + ":" + mesEquipmentRecord.getId(); + return new StringJoiner(MesPcnExtConstWords.COLON).add(mesEquipmentRecord.getOrganizeCode()).add(mesEquipmentRecord.getWorkCenterCode()).add(mesEquipmentRecord.getWorkCellCode()).add(mesEquipmentRecord.getEquipmentCode()).add(mesEquipmentRecord.getId().toString()).toString(); } private String getVariableKey(String equipId, String keyType){ @@ -115,17 +120,21 @@ public class MesEquipmentLogService implements IMesEquipmentLogService { @Override public void saveEquipmentLogDetails(String organizeCode) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.RECORD_STATUS.RECORD_STATUS_10.getValue(), "recordStatus", ddlPackBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"createDatetime"}, ddlPackBean); List mesEquipmentRecords = mesEquipmentRecordRepository.findByHqlTopWhere(ddlPackBean, 10); - if (CollectionUtils.isEmpty(mesEquipmentRecords)) { - LOGGER.info("没有设备记录需要同步"); - } - LOGGER.info("读取设备记录信息【{}】条", mesEquipmentRecords.size()); + + LOGGER.info("保存工艺参数job --- 读取到设备记录信息[{}]条 ---", CollectionUtils.isEmpty(mesEquipmentRecords) ? MesPcnExtConstWords.ZERO : mesEquipmentRecords.size()); + + if (CollectionUtils.isEmpty(mesEquipmentRecords)) return; + for (MesEquipmentRecord mesEquipmentRecord : mesEquipmentRecords) { + if (null == mesEquipmentRecord) continue; saveEquipmentLogDetail(mesEquipmentRecord); } + } private void saveEquipmentLogDetail(MesEquipmentRecord mesEquipmentRecord) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesVariableWhenFinishedReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesVariableWhenFinishedReadStepService.java index 70704ef..d97a50d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesVariableWhenFinishedReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesVariableWhenFinishedReadStepService.java @@ -32,7 +32,7 @@ import java.util.stream.Collectors; * @Author : zxw **/ @Slf4j -@Service +@Service("mesVariableWhenFinishedReadStepService") public class MesVariableWhenFinishedReadStepService extends BaseStepService { @Autowired