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