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 1b53c4d..543c89a 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 @@ -7,30 +7,34 @@ 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.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.bean.*; import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentLogDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentLogRepository; import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentRecordRepository; import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.util.ImppRedis; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; 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; import javax.annotation.Resource; +import javax.persistence.EntityManager; +import javax.persistence.Query; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -60,6 +64,12 @@ public class MesEquipmentLogService implements IMesEquipmentLogService { @Resource(name = "redisMesPcn") private ImppRedis redisMesPcn; + @Autowired + private EntityManager entityManager; + + @Autowired + private JdbcTemplate jdbcTemplate; + @Override public void saveEquipmentLogToRedis(ActorMessage actorMessage) { // 获取设备变量属性 @@ -99,6 +109,10 @@ public class MesEquipmentLogService implements IMesEquipmentLogService { return mesEquipmentRecord.getOrganizeCode() + ":" + mesEquipmentRecord.getWorkCenterCode() + ":" + mesEquipmentRecord.getWorkCellCode() + ":" + mesEquipmentRecord.getEquipmentCode () + ":" + mesEquipmentRecord.getId(); } + private String getVariableKey(String equipId, String keyType){ + return "PCN" + ":"+ keyType + ":" + equipId; + } + @Override public void saveEquipmentLogDetails(String organizeCode) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); @@ -160,41 +174,134 @@ public class MesEquipmentLogService implements IMesEquipmentLogService { log.info("== equipLogMqttMsg ==> messageArrived ,异步处理开始 消息内容: {}", equipLogMqttMsg); - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getStringEqualPack(equipLogMqttMsg.getKey(), "tagName", ddlPackBean); - DdlPreparedPack.getNumEqualPack(Integer.valueOf(equipLogMqttMsg.getPTCode()), "equipId", ddlPackBean); - - log.info("== mesEquipmentVariable查询开始"); - MesEquipmentVariable mesEquipmentVariable = equipmentVariableRepository.getByProperty(ddlPackBean); - log.info("== mesEquipmentVariable查询结束"); - + /** + * 获取点位信息 + */ + MesEquipmentVariable mesEquipmentVariable = getMesEquipmentVariable(equipLogMqttMsg); if (mesEquipmentVariable == null) { - LOGGER.info("tagAddress 不存在【{}】", equipLogMqttMsg.getTagAddress()); + return; + } + // 获取设备点位数据 + MesEquipmentLog equipmentLog = getMesEquipmentLog(equipLogMqttMsg, mesEquipmentVariable); + if (equipmentLog == null) { + return; } - log.info("== MesEquipmentLog查询开始"); - MesEquipmentLog equipmentLog = mesEquipmentLogExtService.queryMesEquipmentLog(mesEquipmentVariable.getOrganizeCode(), Integer.valueOf(equipLogMqttMsg.getPTCode()), mesEquipmentVariable.getId()); - log.info("== MesEquipmentLog查询结束"); + // 更新设备点位数据 + updateEquipmentLog(equipLogMqttMsg, mesEquipmentVariable, equipmentLog); + + + MesEquipmentLogDetail mesEquipmentLogDetail = new MesEquipmentLogDetail(); + BeanUtils.copyProperties(equipmentLog, mesEquipmentLogDetail); + ConvertBean.serviceModelInitialize(mesEquipmentLogDetail, "mqtt"); + log.info("== mesEquipmentLogDetail新增开始"); + saveLogDetail(mesEquipmentLogDetail); + //mesEquipmentLogDetailRepository.insert(mesEquipmentLogDetail); + log.info("== mesEquipmentLogDetail新增结束"); + log.info("== equipLogMqttMsg ==> messageArrived ,异步处理结束 消息内容: {}", equipLogMqttMsg); - /*ConvertBean.serviceModelUpdate(equipmentLog, "mqtt"); - equipmentLog.setEquipVariableValue(equipLogMqttMsg.getValue()); - equipmentLog.setEquipVariableStatus(MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getEquipVariableStatus()); - mesEquipmentLogRepository.update(equipmentLog);*/ + } + private void updateEquipmentLog(EquipLogMqttMsg equipLogMqttMsg, MesEquipmentVariable mesEquipmentVariable, MesEquipmentLog equipmentLog) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesEquipmentVariable.getOrganizeCode()); DdlPreparedPack.getNumEqualPack(equipmentLog.getEquipId(), MesPcnExtConstWords.EQUIP_ID, packBean); DdlPreparedPack.getNumEqualPack(equipmentLog.getEquipVariableId(), MesPcnExtConstWords.EQUIP_VARIABLE_ID, packBean); log.info("== MesEquipmentLog修改开始"); - mesEquipmentLogRepository.updateByProperties(new String[]{MesPcnExtConstWords.EQUIP_VARIABLE_STATUS,"equipVariableValue"}, new Object[]{MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getValue(),equipLogMqttMsg.getValue() }, packBean); + mesEquipmentLogRepository.updateByProperties(new String[]{MesPcnExtConstWords.EQUIP_VARIABLE_STATUS,"equipVariableValue"}, new Object[]{MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getValue(), equipLogMqttMsg.getValue() }, packBean); log.info("== MesEquipmentLog修改结束"); + } + private MesEquipmentVariable getMesEquipmentVariable(EquipLogMqttMsg equipLogMqttMsg) { + String variableKey = getVariableKey(equipLogMqttMsg.getPTCode(), "MES_EQUIPMENT_VARIABLE"); + Object obj = redisMesPcn.getHash(variableKey, equipLogMqttMsg.getKey()); + MesEquipmentVariable mesEquipmentVariable = new MesEquipmentVariable(); + if (obj == null) { + log.info("== mesEquipmentVariable查询开始"); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getStringEqualPack(equipLogMqttMsg.getKey(), "tagName", ddlPackBean); + DdlPreparedPack.getNumEqualPack(Integer.valueOf(equipLogMqttMsg.getPTCode()), "equipId", ddlPackBean); + mesEquipmentVariable = equipmentVariableRepository.getByProperty(ddlPackBean); + log.info("== mesEquipmentVariable查询结束"); + if (mesEquipmentVariable == null) { + LOGGER.info("tagAddress 不存在【{}】", equipLogMqttMsg.getTagAddress()); + return null; + } + redisMesPcn.putHash(variableKey, equipLogMqttMsg.getKey(), mesEquipmentVariable); + } else { + mesEquipmentVariable = (MesEquipmentVariable) obj; + } - MesEquipmentLogDetail mesEquipmentLogDetail = new MesEquipmentLogDetail(); - BeanUtils.copyProperties(equipmentLog, mesEquipmentLogDetail); - ConvertBean.serviceModelInitialize(mesEquipmentLogDetail, "mqtt"); - log.info("== mesEquipmentLogDetail新增开始"); - mesEquipmentLogDetailRepository.insert(mesEquipmentLogDetail); - log.info("== mesEquipmentLogDetail新增结束"); - log.info("== equipLogMqttMsg ==> messageArrived ,异步处理结束 消息内容: {}", equipLogMqttMsg); + return mesEquipmentVariable; + } + + private MesEquipmentLog getMesEquipmentLog(EquipLogMqttMsg equipLogMqttMsg, MesEquipmentVariable mesEquipmentVariable) { + String variableKey = getVariableKey(equipLogMqttMsg.getPTCode(), "MES_EQUIPMENT_LOG"); + Object obj = redisMesPcn.getHash(variableKey, equipLogMqttMsg.getKey()); + MesEquipmentLog equipmentLog = new MesEquipmentLog(); + if (obj == null) { + log.info("== MesEquipmentLog查询开始"); + equipmentLog = mesEquipmentLogExtService.queryMesEquipmentLog(mesEquipmentVariable.getOrganizeCode(), Integer.valueOf(equipLogMqttMsg.getPTCode()), mesEquipmentVariable.getId()); + log.info("== MesEquipmentLog查询结束"); + if (equipmentLog == null) { + LOGGER.info("log信息不存在 不存在【{}】", equipLogMqttMsg.getTagAddress()); + return null; + } + redisMesPcn.putHash(variableKey, equipLogMqttMsg.getKey(), equipmentLog); + } else { + equipmentLog = (MesEquipmentLog) obj; + } + return equipmentLog; + } + + public void saveLogDetail(MesEquipmentLogDetail mesEquipmentLogDetail) { + Long id = snowflakeIdMaker.nextId(); + String sql = getSql(mesEquipmentLogDetail.getEquipId()); + + Query query = entityManager.createNativeQuery(sql); + query.setParameter("organize_code", mesEquipmentLogDetail.getOrganizeCode()); + query.setParameter("is_valid", CommonEnumUtil.IS_VAILD.VAILD.getValue()); + query.setParameter("is_deleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + query.setParameter("id", id); + query.setParameter("equip_variable_id", mesEquipmentLogDetail.getEquipVariableId()); + query.setParameter("equip_variable_name", mesEquipmentLogDetail.getEquipVariableName()); + query.setParameter("equip_variable_desc", mesEquipmentLogDetail.getEquipVariableDesc()); + query.setParameter("read_write_flag", mesEquipmentLogDetail.getReadWriteFlag()); + query.setParameter("data_type", mesEquipmentLogDetail.getDataType()); + query.setParameter("equip_variable_value", mesEquipmentLogDetail.getEquipVariableValue()); + query.setParameter("equip_id", mesEquipmentLogDetail.getEquipId()); + query.setParameter("equipment_code", mesEquipmentLogDetail.getEquipmentCode()); + query.setParameter("work_center_code", mesEquipmentLogDetail.getWorkCenterCode()); + query.setParameter("work_cell_code", mesEquipmentLogDetail.getWorkCellCode()); + query.setParameter("process_code", mesEquipmentLogDetail.getProcessCode()); + query.setParameter("craft_code", mesEquipmentLogDetail.getCraftCode()); + query.setParameter("mould_record_id", mesEquipmentLogDetail.getMouldRecordId()); + query.setParameter("extend", mesEquipmentLogDetail.getExtend()); + query.setParameter("quality", mesEquipmentLogDetail.getQuality()); + query.setParameter("create_date_time", mesEquipmentLogDetail.getCreateDatetime()); + query.setParameter("create_user", mesEquipmentLogDetail.getCreateUser()); + query.setParameter("is_deleted", mesEquipmentLogDetail.getIsDeleted()); + query.setParameter("is_valid", mesEquipmentLogDetail.getIsValid()); + query.setParameter("modify_date_time", mesEquipmentLogDetail.getCreateDatetime()); + query.setParameter("organize_code", mesEquipmentLogDetail.getOrganizeCode()); + query.setParameter("modify_user", mesEquipmentLogDetail.getModifyUser()); + query.setParameter("system_sync_status", mesEquipmentLogDetail.getSystemSyncStatus()); + query.setParameter("remark", mesEquipmentLogDetail.getRemark()); + query.setParameter("description", mesEquipmentLogDetail.getDescription()); + query.setParameter("system_sync_date_time", mesEquipmentLogDetail.getSystemSyncDatetime()); + + query.executeUpdate(); + + } + private String getSql(Integer equipId) { + String sql = "insert INTO mes_equipment_log_detail_" + equipId + + "( id, equip_variable_id, equip_variable_name, equip_variable_desc, read_write_flag, data_type, equip_variable_value," + + " equip_id, equipment_code, work_center_code, work_cell_code, process_code, craft_code, mould_record_id, extend, quality, " + + "create_date_time, create_user, is_deleted, is_valid, modify_date_time, modify_user, organize_code, system_sync_status, remark," + + " description, system_sync_date_time) VALUES " + + "(:id, :equip_variable_id, :equip_variable_name, :equip_variable_desc, :read_write_flag, :data_type, :equip_variable_value, :equip_id, :equipment_code, " + + ":work_center_code, :work_cell_code, :process_code, :craft_code, " + + ":mould_record_id, :extend, :quality, :create_date_time, :create_user, :is_deleted, :is_valid, :modify_date_time, :modify_user" + + ", :organize_code, :system_sync_status, :remark, :description, :system_sync_date_time)"; + return sql; } }