设备日志明细分表

tags/yfai-pcn-ext-v2.3
王杰 7 months ago
parent 2ef09dee56
commit fdf8c283e8

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

@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipLogDispatchContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipLogDispatchContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLog; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLog;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentRecord;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -13,15 +14,6 @@ import java.util.Map;
public interface IMesEquipmentLogExtService { public interface IMesEquipmentLogExtService {
@ApiOperation(value = "根据设备ID 查询设备ID分表所有采集数据")
List<MesEquipmentLog> getEquipmentLogList(String organizeCode, Integer equipId);
@ApiOperation(value = "根据设备ID,是否常变值状态,设备数据变量ID集合 查询设备ID分表采集数据")
List<MesEquipmentLog> getEquipmentLogList(String organizeCode, Integer equipId, Integer needNewValue, List<Long> equipVariableIdList);
@ApiOperation(value = "根据设备ID 查询设备ID分表所有采集数据")
MesEquipmentLog queryMesEquipmentLog(String organizeCode, Integer equipId, Long equipVariableId);
@ApiOperation(value = "根据设备ID,设备LOG表ID集合 修改设备ID分表采集数据的状态") @ApiOperation(value = "根据设备ID,设备LOG表ID集合 修改设备ID分表采集数据的状态")
void updateEquipmentLogList(String organizeCode, Integer equipId, Map<Long, String> equipmentLogIdMap); void updateEquipmentLogList(String organizeCode, Integer equipId, Map<Long, String> equipmentLogIdMap);
@ -37,4 +29,6 @@ public interface IMesEquipmentLogExtService {
@ApiOperation(value = "根据设备ID,是否常变值状态,设备数据变量ID集合,变量类型 查询设备ID分表采集数据") @ApiOperation(value = "根据设备ID,是否常变值状态,设备数据变量ID集合,变量类型 查询设备ID分表采集数据")
List<MesEquipVariableCollectContext> getEquipmentLogCollectList(String organizeCode, Integer equipId, Integer needNewValue, Integer variableType, List<Long> equipVariableIdList); List<MesEquipVariableCollectContext> getEquipmentLogCollectList(String organizeCode, Integer equipId, Integer needNewValue, Integer variableType, List<Long> equipVariableIdList);
@ApiOperation(value = "根据设备ID, 批量写入设备LOG明细数据")
void insertBatchEquipmentLogDetail(String organizeCode, Integer equipId, String userInfo, MesEquipmentRecord mesEquipmentRecord, List<MesEquipmentLog> equipmentLogList);
} }

@ -1,21 +1,18 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi; package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipmentLogExtService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob.MesReportNoSortJob;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob.MesReportNoSortJob;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob.MesReportWorkByPreDayJob; import cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob.MesReportWorkByPreDayJob;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.test.TestService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.test.TestService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesShift;
import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.bean.rework.MesReworkTask;
import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesShiftRepository; import cn.estsh.i3plus.pojo.mes.repository.MesShiftRepository;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ResultBean;
@ -33,8 +30,7 @@ import java.util.stream.Collectors;
@RestController @RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/test") @RequestMapping(MesCommonConstant.MES_YANFEN + "/test")
public class TestController { public class TestController {
@Autowired
private IMesEquipmentLogExtService mesEquipmentLogExtService;
@Autowired @Autowired
private MesReportNoSortJob mesReportNoSortJob; private MesReportNoSortJob mesReportNoSortJob;
@ -54,19 +50,6 @@ public class TestController {
@Autowired @Autowired
private TestService testService; private TestService testService;
@GetMapping("/equipment/log/query")
@ApiOperation(value = "查询设备交互")
public ResultBean queryReworkTaskByPager(String organizeCode, Integer equipId) {
try {
List<MesEquipmentLog> equipmentLogList = mesEquipmentLogExtService.getEquipmentLogList(organizeCode, equipId);
return ResultBean.success("查询成功").setResultList(equipmentLogList);
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/reportWorkByPreDayJob") @GetMapping("/reportWorkByPreDayJob")
@ApiOperation(value = "查询设备交互") @ApiOperation(value = "查询设备交互")
public ResultBean queryReworkTaskByPager(String organizeCode) { public ResultBean queryReworkTaskByPager(String organizeCode) {

@ -1,6 +1,8 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.dao; package cn.estsh.i3plus.ext.mes.pcn.apiservice.dao;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLog;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentRecord;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -21,4 +23,6 @@ public interface IMesEquipmentLogDao {
@ApiOperation(value = "根据设备ID, 变量类型查询设备日志表") @ApiOperation(value = "根据设备ID, 变量类型查询设备日志表")
List<MesEquipVariableCollectContext> queryMesEquipmentLog(String organizeCode, Integer equipId, Integer variableType); List<MesEquipVariableCollectContext> queryMesEquipmentLog(String organizeCode, Integer equipId, Integer variableType);
@ApiOperation(value = "根据设备ID, 批量写入设备LOG明细数据")
void insertBatchEquipmentLogDetail(String organizeCode, Integer equipId, String userInfo, MesEquipmentRecord mesEquipmentRecord, List<MesEquipmentLog> equipmentLogList);
} }

@ -5,6 +5,8 @@ import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesEquipmentLogDao;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLog;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentRecord;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -186,4 +188,106 @@ public class MesEquipmentLogDao implements IMesEquipmentLogDao {
return equipVariableCollectContextList; return equipVariableCollectContextList;
} }
@Override
public void insertBatchEquipmentLogDetail(String organizeCode, Integer equipId, String userInfo, MesEquipmentRecord mesEquipmentRecord, List<MesEquipmentLog> equipmentLogList) {
StringBuffer builder = new StringBuffer();
for (MesEquipmentLog equipmentLog : equipmentLogList) {
if (null == equipmentLog) continue;
}
// StringBuffer builder = new StringBuffer();
//
// builder.append(" insert into mes_work_cell_scan_monitor_log_");
// if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) builder.append(resultBean.getOrganizeCode().toLowerCase()).append(MesPcnExtConstWords.E_UNDERLINE);
// 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();
}
} }

@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob;
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.util.MesPcnExtConstWords;
import cn.estsh.impp.framework.boot.init.ApplicationProperties; import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
@ -11,6 +12,7 @@ import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
/** /**
* @author wangjie * @author wangjie
@ -26,6 +28,9 @@ public class MesSaveVariableJob extends BaseMesScheduleJob {
@Autowired @Autowired
private IMesEquipmentLogService mesEquipmentLogService; private IMesEquipmentLogService mesEquipmentLogService;
//默认批量一次性最大写800条数据
private static final Integer DEFAULT_QTY = 800;
public MesSaveVariableJob() { public MesSaveVariableJob() {
super(MesSaveVariableJob.class, "保存工艺参数job"); super(MesSaveVariableJob.class, "保存工艺参数job");
} }
@ -33,24 +38,26 @@ public class MesSaveVariableJob extends BaseMesScheduleJob {
@Override @Override
public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) { public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) {
log.info("保存工艺参数job -- START "); log.info("保存工艺参数JOB --- START ");
/*String jobParam = this.getJobParam(); String jobParam = this.getJobParam();
JSONObject jsonObject= JSONUtil.parseObj(jobParam);*/ JSONObject params= JSONUtil.parseObj(jobParam);
String organizeCode = "CK01"; String organizeCode = (null == params || !params.containsKey(MesPcnExtConstWords.ORGANIZE_CODE)) ? null : params.get(MesPcnExtConstWords.ORGANIZE_CODE).toString();
Integer qty = (null == params || !params.containsKey(MesPcnExtConstWords.QTY)) ? DEFAULT_QTY : Integer.valueOf(params.get(MesPcnExtConstWords.QTY).toString());
qty = qty.compareTo(DEFAULT_QTY) > 0 ? DEFAULT_QTY : qty;
if (null == organizeCode){ if (StringUtils.isEmpty(organizeCode)){
log.error("请添加需要报工的工厂代码!"); log.info("保存工艺参数JOB --- ERROR --- JOB未配置工厂参数");
return; return;
} }
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
mesEquipmentLogService.saveEquipmentLogDetails(organizeCode); mesEquipmentLogService.saveEquipmentLogDetails(organizeCode, MesPcnExtConstWords.JOB, qty);
long endTime = System.currentTimeMillis(); long endTime = System.currentTimeMillis();
log.info("保存工艺参数job --- END --- 耗时: {} ms", endTime - startTime); log.info("保存工艺参数JOB --- END --- 耗时: {} ms", endTime - startTime);
} }

@ -36,10 +36,7 @@ import org.springframework.util.StringUtils;
import javax.annotation.Resource; 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.*;
import java.util.List;
import java.util.Map;
import java.util.StringJoiner;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
@ -52,17 +49,17 @@ public class MesEquipmentLogService implements IMesEquipmentLogService {
private MesEquipmentVariableRepository equipmentVariableRepository; private MesEquipmentVariableRepository equipmentVariableRepository;
@Autowired @Autowired
private MesEquipmentLogExtService mesEquipmentLogExtService; private MesEquipmentLogExtService equipmentLogExtService;
@Autowired
private MesEquipmentExtService mesEquipmentExtService;
@Autowired
private MesEquipmentLogDetailRepository mesEquipmentLogDetailRepository;
@Autowired @Autowired
private MesEquipmentLogRepository mesEquipmentLogRepository; private MesEquipmentExtService equipmentExtService;
@Autowired @Autowired
private MesEquipmentRecordRepository mesEquipmentRecordRepository; private MesEquipmentRecordRepository mesEquipmentRecordRepository;
@Autowired @Autowired
private SnowflakeIdMaker snowflakeIdMaker; private SnowflakeIdMaker snowflakeIdMaker;
@Resource(name = "redisMesPcn") @Resource(name = "redisMesPcn")
private ImppRedis redisMesPcn; private ImppRedis redisMesPcn;
@ -75,7 +72,7 @@ public class MesEquipmentLogService implements IMesEquipmentLogService {
@Override @Override
public void saveEquipmentLogToRedis(ActorMessage actorMessage) { public void saveEquipmentLogToRedis(ActorMessage actorMessage) {
// 获取设备变量属性 // 获取设备变量属性
List<MesEquipmentVariable> equipmentVariableList = mesEquipmentExtService.getEquipmentVariableList(actorMessage.getOrganizeCode(), actorMessage.getEquipmentCode(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue()); List<MesEquipmentVariable> equipmentVariableList = equipmentExtService.getEquipmentVariableList(actorMessage.getOrganizeCode(), actorMessage.getEquipmentCode(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue());
// 获取变量ID集合 // 获取变量ID集合
Map<Long, MesEquipmentVariable> equipVariableMap = CollectionUtils.isEmpty(equipmentVariableList) ? null : equipmentVariableList.stream().filter(o -> null != o).collect(Collectors.toMap(MesEquipmentVariable::getId, o -> o)); 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)) { if (CollectionUtils.isEmpty(equipVariableMap)) {
@ -84,7 +81,7 @@ public class MesEquipmentLogService implements IMesEquipmentLogService {
} }
// 获取设备数据采集信息 // 获取设备数据采集信息
List<MesEquipVariableCollectContext> equipmentLogList = mesEquipmentLogExtService.getEquipmentLogCollectList(actorMessage.getOrganizeCode(), actorMessage.getEquipId(), MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.FALSE.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue()); List<MesEquipVariableCollectContext> equipmentLogList = equipmentLogExtService.getEquipmentLogCollectList(actorMessage.getOrganizeCode(), actorMessage.getEquipId(), MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.FALSE.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue());
// 筛选出该设备中设备变量属性对应的数据采集信息 // 筛选出该设备中设备变量属性对应的数据采集信息
equipmentLogList = CollectionUtils.isEmpty(equipmentLogList) ? null : equipmentLogList.stream().filter(o -> equipVariableMap.containsKey(o.getEquipVariableId())).collect(Collectors.toList()); equipmentLogList = CollectionUtils.isEmpty(equipmentLogList) ? null : equipmentLogList.stream().filter(o -> equipVariableMap.containsKey(o.getEquipVariableId())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(equipmentLogList)) { if (CollectionUtils.isEmpty(equipmentLogList)) {
@ -119,37 +116,44 @@ public class MesEquipmentLogService implements IMesEquipmentLogService {
} }
@Override @Override
public void saveEquipmentLogDetails(String organizeCode) { public void saveEquipmentLogDetails(String organizeCode, String userInfo, Integer qty) {
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(), MesPcnExtConstWords.RECORD_STATUS, 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[]{MesPcnExtConstWords.CREATE_DATE_TIME}, ddlPackBean);
List<MesEquipmentRecord> mesEquipmentRecords = mesEquipmentRecordRepository.findByHqlTopWhere(ddlPackBean, 10); List<MesEquipmentRecord> mesEquipmentRecords = mesEquipmentRecordRepository.findByHqlTopWhere(ddlPackBean, 10);
LOGGER.info("保存工艺参数job --- 读取到设备记录信息[{}]条 ---", CollectionUtils.isEmpty(mesEquipmentRecords) ? MesPcnExtConstWords.ZERO : mesEquipmentRecords.size()); LOGGER.info("保存工艺参数JOB --- 读取到设备记录信息[{}]条 ---", CollectionUtils.isEmpty(mesEquipmentRecords) ? MesPcnExtConstWords.ZERO : mesEquipmentRecords.size());
if (CollectionUtils.isEmpty(mesEquipmentRecords)) return; if (CollectionUtils.isEmpty(mesEquipmentRecords)) return;
for (MesEquipmentRecord mesEquipmentRecord : mesEquipmentRecords) { for (MesEquipmentRecord mesEquipmentRecord : mesEquipmentRecords) {
if (null == mesEquipmentRecord) continue; if (null == mesEquipmentRecord) continue;
saveEquipmentLogDetail(mesEquipmentRecord); saveEquipmentLogDetail(organizeCode, userInfo, qty, mesEquipmentRecord);
} }
} }
private void saveEquipmentLogDetail(MesEquipmentRecord mesEquipmentRecord) { private void saveEquipmentLogDetail(String organizeCode, String userInfo, Integer qty, MesEquipmentRecord mesEquipmentRecord) {
String key = getKey(mesEquipmentRecord); String key = getKey(mesEquipmentRecord);
List<MesEquipmentLog> equipmentLogList = (List<MesEquipmentLog>)redisMesPcn.getList(key, 0, -1); List<MesEquipmentLog> equipmentLogList = (List<MesEquipmentLog>)redisMesPcn.getList(key, 0, -1);
if (CollectionUtils.isEmpty(equipmentLogList)) {
// 修改状态 // 修改状态
mesEquipmentRecord.setRecordStatus(MesExtEnumUtil.RECORD_STATUS.RECORD_STATUS_20.getValue()); mesEquipmentRecord.setRecordStatus(CollectionUtils.isEmpty(equipmentLogList) ? MesExtEnumUtil.RECORD_STATUS.RECORD_STATUS_20.getValue() : MesExtEnumUtil.RECORD_STATUS.RECORD_STATUS_30.getValue());
mesEquipmentRecordRepository.save(mesEquipmentRecord); ConvertBean.serviceModelUpdate(mesEquipmentRecord, userInfo);
// 删除key mesEquipmentRecordRepository.save(mesEquipmentRecord);
redisMesPcn.deleteKey(key); // 删除key
return; redisMesPcn.deleteKey(key);
}
List<MesEquipmentLogDetail> mesEquipmentLogDetails = new ArrayList<>(); if (CollectionUtils.isEmpty(equipmentLogList)) return;
Optional<MesEquipmentLog> optional = equipmentLogList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getEquipId()))).findFirst();
if (null == optional || !optional.isPresent()) return;
insertBatchEquipmentLogDetail(organizeCode, optional.get().getEquipId(), userInfo, qty, mesEquipmentRecord, equipmentLogList);
for (MesEquipmentLog mesEquipmentLog : equipmentLogList) { for (MesEquipmentLog mesEquipmentLog : equipmentLogList) {
MesEquipmentLogDetail mesEquipmentLogDetail = new MesEquipmentLogDetail(); MesEquipmentLogDetail mesEquipmentLogDetail = new MesEquipmentLogDetail();
@ -163,20 +167,29 @@ public class MesEquipmentLogService implements IMesEquipmentLogService {
mesEquipmentLogDetail.setCreateUser(null); mesEquipmentLogDetail.setCreateUser(null);
mesEquipmentLogDetail.setOrgEquipId(mesEquipmentLogDetail.getOrganizeCode()+"_"+mesEquipmentLogDetail.getEquipId()); mesEquipmentLogDetail.setOrgEquipId(mesEquipmentLogDetail.getOrganizeCode()+"_"+mesEquipmentLogDetail.getEquipId());
String jsonStr = mesEquipmentRecord.getProduceSnJson(); if (!StringUtils.isEmpty(mesEquipmentRecord.getProduceSnJson())) mesEquipmentLogDetail.setExtend(mesEquipmentRecord.getProduceSnJson());
if (!StringUtils.isEmpty(jsonStr)) {
mesEquipmentLogDetail.setExtend(mesEquipmentRecord.getProduceSnJson());
}
ConvertBean.serviceModelInitialize(mesEquipmentLogDetail, "job"); ConvertBean.serviceModelInitialize(mesEquipmentLogDetail, "job");
mesEquipmentLogDetails.add(mesEquipmentLogDetail); mesEquipmentLogDetails.add(mesEquipmentLogDetail);
} }
mesEquipmentLogDetailRepository.saveAll(mesEquipmentLogDetails);
// 修改状态 }
mesEquipmentRecord.setRecordStatus(MesExtEnumUtil.RECORD_STATUS.RECORD_STATUS_20.getValue());
mesEquipmentRecordRepository.save(mesEquipmentRecord); private void insertBatchEquipmentLogDetail(String organizeCode, Integer equipId, String userInfo, Integer qty, MesEquipmentRecord mesEquipmentRecord, List<MesEquipmentLog> equipmentLogList) {
// 删除key
redisMesPcn.deleteKey(key); if (CollectionUtils.isEmpty(equipmentLogList)) return;
if (qty.compareTo(equipmentLogList.size()) >= 0) {
equipmentLogExtService.insertBatchEquipmentLogDetail(organizeCode, equipId, userInfo, mesEquipmentRecord, equipmentLogList);
equipmentLogList = null;
} else {
List<MesEquipmentLog> handleList = equipmentLogList.subList(0, qty);
equipmentLogExtService.insertBatchEquipmentLogDetail(organizeCode, equipId, userInfo, mesEquipmentRecord, handleList);
equipmentLogList = equipmentLogList.subList(qty, equipmentLogList.size());
}
insertBatchEquipmentLogDetail(organizeCode, equipId, userInfo, qty, mesEquipmentRecord, equipmentLogList);
} }
@Override @Override
@ -191,12 +204,12 @@ public class MesEquipmentLogService implements IMesEquipmentLogService {
if (mesEquipmentVariable == null) { if (mesEquipmentVariable == null) {
return; return;
} }
// 获取设备点位数据 // 获取设备点位数据 //TODO 暂不使用此代码块 使用需要调整代码 此表已不支持shardingsphere配置
MesEquipmentLog equipmentLog = getMesEquipmentLog(equipLogMqttMsg, mesEquipmentVariable); MesEquipmentLog equipmentLog = getMesEquipmentLog(equipLogMqttMsg, mesEquipmentVariable);
if (equipmentLog == null) { if (equipmentLog == null) {
return; return;
} }
// 更新设备点位数据 // 更新设备点位数据 //TODO 暂不使用此代码块 使用需要调整代码 此表已不支持shardingsphere配置
updateEquipmentLog(equipLogMqttMsg, mesEquipmentVariable, equipmentLog); updateEquipmentLog(equipLogMqttMsg, mesEquipmentVariable, equipmentLog);
@ -213,12 +226,12 @@ public class MesEquipmentLogService implements IMesEquipmentLogService {
} }
private void updateEquipmentLog(EquipLogMqttMsg equipLogMqttMsg, MesEquipmentVariable mesEquipmentVariable, MesEquipmentLog equipmentLog) { private void updateEquipmentLog(EquipLogMqttMsg equipLogMqttMsg, MesEquipmentVariable mesEquipmentVariable, MesEquipmentLog equipmentLog) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesEquipmentVariable.getOrganizeCode()); // DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesEquipmentVariable.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(equipmentLog.getEquipId(), MesPcnExtConstWords.EQUIP_ID, packBean); // DdlPreparedPack.getNumEqualPack(equipmentLog.getEquipId(), MesPcnExtConstWords.EQUIP_ID, packBean);
DdlPreparedPack.getNumEqualPack(equipmentLog.getEquipVariableId(), MesPcnExtConstWords.EQUIP_VARIABLE_ID, packBean); // DdlPreparedPack.getNumEqualPack(equipmentLog.getEquipVariableId(), MesPcnExtConstWords.EQUIP_VARIABLE_ID, packBean);
log.info("== MesEquipmentLog修改开始"); // 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修改结束"); // log.info("== MesEquipmentLog修改结束");
} }
private MesEquipmentVariable getMesEquipmentVariable(EquipLogMqttMsg equipLogMqttMsg) { private MesEquipmentVariable getMesEquipmentVariable(EquipLogMqttMsg equipLogMqttMsg) {
@ -245,22 +258,23 @@ public class MesEquipmentLogService implements IMesEquipmentLogService {
} }
private MesEquipmentLog getMesEquipmentLog(EquipLogMqttMsg equipLogMqttMsg, MesEquipmentVariable mesEquipmentVariable) { private MesEquipmentLog getMesEquipmentLog(EquipLogMqttMsg equipLogMqttMsg, MesEquipmentVariable mesEquipmentVariable) {
String variableKey = getVariableKey(equipLogMqttMsg.getPTCode(), "MES_EQUIPMENT_LOG"); // String variableKey = getVariableKey(equipLogMqttMsg.getPTCode(), "MES_EQUIPMENT_LOG");
Object obj = redisMesPcn.getHash(variableKey, equipLogMqttMsg.getKey()); // Object obj = redisMesPcn.getHash(variableKey, equipLogMqttMsg.getKey());
MesEquipmentLog equipmentLog = new MesEquipmentLog(); // MesEquipmentLog equipmentLog = new MesEquipmentLog();
if (obj == null) { // if (obj == null) {
log.info("== MesEquipmentLog查询开始"); // log.info("== MesEquipmentLog查询开始");
equipmentLog = mesEquipmentLogExtService.queryMesEquipmentLog(mesEquipmentVariable.getOrganizeCode(), Integer.valueOf(equipLogMqttMsg.getPTCode()), mesEquipmentVariable.getId()); // equipmentLog = mesEquipmentLogExtService.queryMesEquipmentLog(mesEquipmentVariable.getOrganizeCode(), Integer.valueOf(equipLogMqttMsg.getPTCode()), mesEquipmentVariable.getId());
log.info("== MesEquipmentLog查询结束"); // log.info("== MesEquipmentLog查询结束");
if (equipmentLog == null) { // if (equipmentLog == null) {
LOGGER.info("log信息不存在 不存在【{}】", equipLogMqttMsg.getTagAddress()); // LOGGER.info("log信息不存在 不存在【{}】", equipLogMqttMsg.getTagAddress());
return null; // return null;
} // }
redisMesPcn.putHash(variableKey, equipLogMqttMsg.getKey(), equipmentLog); // redisMesPcn.putHash(variableKey, equipLogMqttMsg.getKey(), equipmentLog);
} else { // } else {
equipmentLog = (MesEquipmentLog) obj; // equipmentLog = (MesEquipmentLog) obj;
} // }
return equipmentLog; // return equipmentLog;
return null;
} }
public void saveLogDetail(MesEquipmentLogDetail mesEquipmentLogDetail) { public void saveLogDetail(MesEquipmentLogDetail mesEquipmentLogDetail) {

@ -6,13 +6,10 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipLogDispatchContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipLogDispatchContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCfgCollectContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCfgCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLog; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLog;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentRecord;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg;
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentLogRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -34,40 +31,9 @@ import java.util.stream.Collectors;
public class MesEquipmentLogExtService implements IMesEquipmentLogExtService { public class MesEquipmentLogExtService implements IMesEquipmentLogExtService {
@Autowired @Autowired
private MesEquipmentLogRepository equipmentLogRepository;
@Autowired
private IMesEquipmentLogDao equipmentLogDao; private IMesEquipmentLogDao equipmentLogDao;
@Override @Override
public List<MesEquipmentLog> getEquipmentLogList(String organizeCode, Integer equipId) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId)) return null;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(equipId, MesPcnExtConstWords.EQUIP_ID, packBean);
return equipmentLogRepository.findByHqlWhere(packBean);
}
@Override
public List<MesEquipmentLog> getEquipmentLogList(String organizeCode, Integer equipId, Integer needNewValue, List<Long> equipVariableIdList) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || CollectionUtils.isEmpty(equipVariableIdList)) return null;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(equipId, MesPcnExtConstWords.EQUIP_ID, packBean);
if (!CollectionUtils.isEmpty(equipVariableIdList) && equipVariableIdList.size() == 1) DdlPreparedPack.getNumEqualPack(equipVariableIdList.get(0), MesPcnExtConstWords.EQUIP_VARIABLE_ID, packBean);
else DdlPreparedPack.getInPackList(equipVariableIdList, MesPcnExtConstWords.EQUIP_VARIABLE_ID, packBean);
if (!StringUtils.isEmpty(needNewValue) && MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getValue() == needNewValue) DdlPreparedPack.getNegativeNumEqualPack(MesPcnExtConstWords.ZERO, MesPcnExtConstWords.EQUIP_VARIABLE_STATUS, packBean);
return equipmentLogRepository.findByHqlWhere(packBean);
}
@Override
public MesEquipmentLog queryMesEquipmentLog(String organizeCode, Integer equipId, Long equipVariableId) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getStringEqualPack(organizeCode, MesPcnExtConstWords.ORGANIZE_CODE, ddlPackBean);
DdlPreparedPack.getNumEqualPack(equipId, MesPcnExtConstWords.EQUIP_ID, ddlPackBean);
DdlPreparedPack.getNumEqualPack(equipVariableId, MesPcnExtConstWords.EQUIP_VARIABLE_ID, ddlPackBean);
return equipmentLogRepository.getByProperty(ddlPackBean);
}
@Override
public void updateEquipmentLogList(String organizeCode, Integer equipId, Map<Long, String> equipmentLogIdMap) { public void updateEquipmentLogList(String organizeCode, Integer equipId, Map<Long, String> equipmentLogIdMap) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || CollectionUtils.isEmpty(equipmentLogIdMap)) return; if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || CollectionUtils.isEmpty(equipmentLogIdMap)) return;
equipmentLogDao.updateEquipVariableStatus(organizeCode, equipId, equipmentLogIdMap, MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.FALSE.getEquipVariableStatus()); equipmentLogDao.updateEquipVariableStatus(organizeCode, equipId, equipmentLogIdMap, MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.FALSE.getEquipVariableStatus());
@ -175,4 +141,9 @@ public class MesEquipmentLogExtService implements IMesEquipmentLogExtService {
} }
@Override
public void insertBatchEquipmentLogDetail(String organizeCode, Integer equipId, String userInfo, MesEquipmentRecord mesEquipmentRecord, List<MesEquipmentLog> equipmentLogList) {
equipmentLogDao.insertBatchEquipmentLogDetail(organizeCode, equipId, userInfo, mesEquipmentRecord, equipmentLogList);
}
} }

@ -195,6 +195,10 @@ public class MesPcnExtConstWords {
public static final String MESSAGE_TYPE = "messageType"; public static final String MESSAGE_TYPE = "messageType";
// 工厂_工作中心 // 工厂_工作中心
public static final String ORG_WORK_CODE = "orgWorkCode"; public static final String ORG_WORK_CODE = "orgWorkCode";
// JOB
public static final String JOB = "JOB";
// 记录状态
public static final String RECORD_STATUS = "recordStatus";
// 时间格式 // 时间格式
public static final String DATE_FORMAT_SSS = "yyyy-MM-dd HH:mm:ss.SSS"; public static final String DATE_FORMAT_SSS = "yyyy-MM-dd HH:mm:ss.SSS";

Loading…
Cancel
Save