保存工艺参数工步

tags/yfai-pcn-ext-v2.3
王杰 8 months ago
parent 40f8d63189
commit a431455f9f

@ -7,7 +7,6 @@ public interface IMesEquipmentLogService {
void saveEquipmentLogToRedis(ActorMessage actorMessage); void saveEquipmentLogToRedis(ActorMessage actorMessage);
void saveEquipmentLogDetails(String organizeCode); void saveEquipmentLogDetails(String organizeCode);
void updateValue(EquipLogMqttMsg equipLogMqttMsg); void updateValue(EquipLogMqttMsg equipLogMqttMsg);

@ -1,19 +1,21 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base; 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.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.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.mqtt.EquipLogMqttMsg;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.util.CommonConstWords; 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.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; 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.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.MesEquipmentLogDetailRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentLogRepository; import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentLogRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentRecordRepository; 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.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -36,8 +37,9 @@ import javax.annotation.Resource;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.Query; import javax.persistence.Query;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.StringJoiner;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
@ -75,38 +77,41 @@ public class MesEquipmentLogService implements IMesEquipmentLogService {
// 获取设备变量属性 // 获取设备变量属性
List<MesEquipmentVariable> equipmentVariableList = mesEquipmentExtService.getEquipmentVariableList(actorMessage.getOrganizeCode(), actorMessage.getEquipmentCode(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue()); List<MesEquipmentVariable> equipmentVariableList = mesEquipmentExtService.getEquipmentVariableList(actorMessage.getOrganizeCode(), actorMessage.getEquipmentCode(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue());
// 获取变量ID集合 // 获取变量ID集合
List<Long> equipVariableIdList = equipmentVariableList.stream().filter(o -> null != o).map(MesEquipmentVariable::getId).collect(Collectors.toList()); Map<Long, MesEquipmentVariable> 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<MesEquipmentLog> equipmentLogList = mesEquipmentLogExtService.getEquipmentLogList(actorMessage.getOrganizeCode(), actorMessage.getEquipId()); List<MesEquipVariableCollectContext> 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()); equipmentLogList = CollectionUtils.isEmpty(equipmentLogList) ? null : equipmentLogList.stream().filter(o -> equipVariableMap.containsKey(o.getEquipVariableId())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(equipmentLogList)) {
LOGGER.info("需要保存的工艺参数信息: list ={}", 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(); MesEquipmentRecord mesEquipmentRecord =new MesEquipmentRecord();
BeanUtils.copyProperties(actorMessage, mesEquipmentRecord); BeanUtils.copyProperties(actorMessage, mesEquipmentRecord);
mesEquipmentRecord.setRecordStatus(MesExtEnumUtil.RECORD_STATUS.RECORD_STATUS_10.getValue()); mesEquipmentRecord.setRecordStatus(MesExtEnumUtil.RECORD_STATUS.RECORD_STATUS_10.getValue());
mesEquipmentRecord.setId(recordId); mesEquipmentRecord.setId(snowflakeIdMaker.nextId());
ConvertBean.serviceModelInitialize(mesEquipmentRecord, actorMessage.getUserName()); ConvertBean.serviceModelInitialize(mesEquipmentRecord, actorMessage.getUserName());
String key = getKey(mesEquipmentRecord); String key = getKey(mesEquipmentRecord);
LOGGER.info("key ={}", key); equipmentLogList.forEach(equipLog -> redisMesPcn.putList(key, equipLog));
// todo 目前没有适合的方法,需要优化一下
equipmentLogList.forEach(equipLog -> {
redisMesPcn.putList(key, equipLog);
});
/* MesEq
redisMesPcn.putObject()*/
mesEquipmentRecordRepository.save(mesEquipmentRecord); 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){ 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){ private String getVariableKey(String equipId, String keyType){
@ -115,17 +120,21 @@ public class MesEquipmentLogService implements IMesEquipmentLogService {
@Override @Override
public void saveEquipmentLogDetails(String organizeCode) { public void saveEquipmentLogDetails(String organizeCode) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.RECORD_STATUS.RECORD_STATUS_10.getValue(), "recordStatus", ddlPackBean); 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); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"createDatetime"}, ddlPackBean);
List<MesEquipmentRecord> mesEquipmentRecords = mesEquipmentRecordRepository.findByHqlTopWhere(ddlPackBean, 10); List<MesEquipmentRecord> mesEquipmentRecords = mesEquipmentRecordRepository.findByHqlTopWhere(ddlPackBean, 10);
if (CollectionUtils.isEmpty(mesEquipmentRecords)) {
LOGGER.info("没有设备记录需要同步"); LOGGER.info("保存工艺参数job --- 读取到设备记录信息[{}]条 ---", CollectionUtils.isEmpty(mesEquipmentRecords) ? MesPcnExtConstWords.ZERO : mesEquipmentRecords.size());
}
LOGGER.info("读取设备记录信息【{}】条", mesEquipmentRecords.size()); if (CollectionUtils.isEmpty(mesEquipmentRecords)) return;
for (MesEquipmentRecord mesEquipmentRecord : mesEquipmentRecords) { for (MesEquipmentRecord mesEquipmentRecord : mesEquipmentRecords) {
if (null == mesEquipmentRecord) continue;
saveEquipmentLogDetail(mesEquipmentRecord); saveEquipmentLogDetail(mesEquipmentRecord);
} }
} }
private void saveEquipmentLogDetail(MesEquipmentRecord mesEquipmentRecord) { private void saveEquipmentLogDetail(MesEquipmentRecord mesEquipmentRecord) {

@ -32,7 +32,7 @@ import java.util.stream.Collectors;
* @Author : zxw * @Author : zxw
**/ **/
@Slf4j @Slf4j
@Service @Service("mesVariableWhenFinishedReadStepService")
public class MesVariableWhenFinishedReadStepService extends BaseStepService { public class MesVariableWhenFinishedReadStepService extends BaseStepService {
@Autowired @Autowired

Loading…
Cancel
Save