diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEquipmentLogExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEquipmentLogExtService.java index 9125dfb..2ba0cc5 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEquipmentLogExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEquipmentLogExtService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; 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.MesEquipVariableCollectContext; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLog; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg; @@ -30,6 +31,10 @@ public interface IMesEquipmentLogExtService { @ApiOperation(value = "验证设备通信质量") Boolean checkEquipQuality(Integer quality); + @ApiOperation(value = "根据设备ID,是否常变值状态,变量类型查询设备ID分表采集数据") + List getEquipmentLogCollectList(String organizeCode, Integer equipId, Integer needNewValue, Integer variableType); + @ApiOperation(value = "根据设备ID,是否常变值状态,设备数据变量ID集合,变量类型 查询设备ID分表采集数据") + List getEquipmentLogCollectList(String organizeCode, Integer equipId, Integer needNewValue, Integer variableType, List equipVariableIdList); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesEquipmentLogDao.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesEquipmentLogDao.java index e936df1..61b7c8b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesEquipmentLogDao.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesEquipmentLogDao.java @@ -15,4 +15,10 @@ public interface IMesEquipmentLogDao { @ApiOperation(value = "根据设备ID, 设备LOG表ID集合修改设备日志表的数据状态") void updateEquipVariableStatus(String organizeCode, Integer equipId, Map equipmentLogIdMap, Integer equipVariableStatus); + @ApiOperation(value = "根据设备ID, 变量类型, 数据变量ID集合查询设备日志表") + List queryMesEquipmentLog(String organizeCode, Integer equipId, Integer variableType, List equipVariableIdList); + + @ApiOperation(value = "根据设备ID, 变量类型查询设备日志表") + List queryMesEquipmentLog(String organizeCode, Integer equipId, Integer variableType); + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java index b29695d..903a1c4 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesEquipmentLogDao.java @@ -109,4 +109,72 @@ public class MesEquipmentLogDao implements IMesEquipmentLogDao { return equipVariableCollectContextList; } + @Override + public List queryMesEquipmentLog(String organizeCode, Integer equipId, Integer variableType, List equipVariableIdList) { + + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || StringUtils.isEmpty(variableType) || CollectionUtils.isEmpty(equipVariableIdList)) return null; + + equipVariableIdList = equipVariableIdList.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); + + StringBuffer builder = new StringBuffer(); + + builder.append(" select e.equip_variable_id, e.equip_variable_value, e.equip_variable_status, e.quality, e.modify_date_time, e.id "); + builder.append(" from mes_equipment_log_"); + builder.append(equipId); + builder.append(" e where e.organize_code = :organizeCode and e.variable_type = :variableType "); + if (equipVariableIdList.size() == 1) builder.append(" and e.equip_variable_id = :equipVariableId "); + else builder.append(" and e.equip_variable_id in (:equipVariableId) "); + + Query query = entityManager.createNativeQuery(builder.toString()); + query.setParameter(MesPcnExtConstWords.ORGANIZE_CODE, organizeCode); + query.setParameter(MesPcnExtConstWords.VARIABLE_TYPE, variableType); + if (equipVariableIdList.size() == 1) query.setParameter(MesPcnExtConstWords.EQUIP_VARIABLE_ID, equipVariableIdList.get(0)); + else query.setParameter(MesPcnExtConstWords.EQUIP_VARIABLE_ID, equipVariableIdList); + List list = query.getResultList(); + + return backEquipVariableCollectContextList(list); + } + + @Override + public List queryMesEquipmentLog(String organizeCode, Integer equipId, Integer variableType) { + + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || StringUtils.isEmpty(variableType)) return null; + + StringBuffer builder = new StringBuffer(); + + builder.append(" select e.equip_variable_id, e.equip_variable_value, e.equip_variable_status, e.quality, e.modify_date_time, e.id "); + builder.append(" from mes_equipment_log_"); + builder.append(equipId); + builder.append(" e where e.organize_code = :organizeCode and e.variable_type = :variableType "); + + Query query = entityManager.createNativeQuery(builder.toString()); + query.setParameter(MesPcnExtConstWords.ORGANIZE_CODE, organizeCode); + query.setParameter(MesPcnExtConstWords.VARIABLE_TYPE, variableType); + List list = query.getResultList(); + + return backEquipVariableCollectContextList(list); + + } + + private List backEquipVariableCollectContextList(List list) { + + if (CollectionUtils.isEmpty(list)) return null; + + List equipVariableCollectContextList = new ArrayList<>(); + + for (Object equipmentLog : list) { + + if (null == equipmentLog) continue; + + Object[] equipmentLogArr = (Object[]) equipmentLog; + + if (null == equipmentLogArr || equipmentLogArr.length != 6 || StringUtils.isEmpty(equipmentLogArr[0])) continue; + + equipVariableCollectContextList.add(new MesEquipVariableCollectContext(Long.valueOf(equipmentLogArr[0].toString())).copyValue(equipmentLogArr[1], equipmentLogArr[2], equipmentLogArr[3], equipmentLogArr[4], equipmentLogArr[5])); + + } + + return equipVariableCollectContextList; + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java index 0bb540d..f1eda93 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java @@ -5,6 +5,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipmentLogExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.spot.IMesSpotCheckOrderService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesEquipmentSpotCheckModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSpotCheckOrderModel; import cn.estsh.i3plus.icloud.core.sdk.ICoreUtilCloud; @@ -196,11 +197,11 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService { } //根据设备代码获取EQUIP_ID MesEquipment mesEquipment = mesEquipmentExtService.getMesEquipment(org, model.getSpotCheckOrder().getEquipCode()); - Map> setMap = null; + Map> setMap = null; //实际值地址数据Map - Map> realMap = null; + Map> realMap = null; //获取实际值值设备数据 - List realEquipmentLogList = new ArrayList<>(); + List realEquipmentLogList = new ArrayList<>(); if(!Objects.isNull(mesEquipment) && !StringUtils.isEmpty(mesEquipment.getEquipId())){ //获取设定值设备变量ID List setEquipVariableIdList = @@ -211,18 +212,18 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService { model.getOrderResultList().stream().filter(k -> k.getSpotCheckItemType() == MesExtEnumUtil.SPOT_CHECK_ITEM_TYPE.AUTO.getValue()).map(MesSpotCheckOrderResult::getRealEquipVariableId).collect(Collectors.toList()); //获取设定值设备数据 - List setEquipmentLogList = new ArrayList<>(); + List setEquipmentLogList = new ArrayList<>(); for (List tmp : ListUtils.partition(setEquipVariableIdList, MesCommonConstant.MAX_PAGER_SIZE)) { - setEquipmentLogList.addAll(mesEquipmentLogExtService.getEquipmentLogList(org,mesEquipment.getEquipId(),MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getValue(),tmp)); + setEquipmentLogList.addAll(mesEquipmentLogExtService.getEquipmentLogCollectList(org, mesEquipment.getEquipId(), MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue(), tmp)); } //设定值地址数据Map - setMap = setEquipmentLogList.stream().collect(Collectors.groupingBy(MesEquipmentLog::getEquipVariableId)); + setMap = setEquipmentLogList.stream().collect(Collectors.groupingBy(MesEquipVariableCollectContext::getEquipVariableId)); for (List tmp : ListUtils.partition(realEquipVariableIdList, MesCommonConstant.MAX_PAGER_SIZE)) { - realEquipmentLogList.addAll(mesEquipmentLogExtService.getEquipmentLogList(org,mesEquipment.getEquipId(),MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getValue(),tmp)); + realEquipmentLogList.addAll(mesEquipmentLogExtService.getEquipmentLogCollectList(org,mesEquipment.getEquipId(), MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue(), tmp)); } //实际值地址数据Map - realMap = realEquipmentLogList.stream().collect(Collectors.groupingBy(MesEquipmentLog::getEquipVariableId)); + realMap = realEquipmentLogList.stream().collect(Collectors.groupingBy(MesEquipVariableCollectContext::getEquipVariableId)); } for (MesSpotCheckOrderResult result : model.getOrderResultList()) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesEquipmentLogExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesEquipmentLogExtService.java index 0281584..3daf5f5 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesEquipmentLogExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesEquipmentLogExtService.java @@ -135,4 +135,44 @@ public class MesEquipmentLogExtService implements IMesEquipmentLogExtService { } + @Override + @Transactional(propagation = Propagation.NOT_SUPPORTED) + public List getEquipmentLogCollectList(String organizeCode, Integer equipId, Integer needNewValue, Integer variableType) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || StringUtils.isEmpty(variableType)) return null; + List equipVariableCollectContextList = equipmentLogDao.queryMesEquipmentLog(organizeCode, equipId, variableType); + return filterEquipVariableCollectContextList(equipVariableCollectContextList, needNewValue); + } + + @Override + @Transactional(propagation = Propagation.NOT_SUPPORTED) + public List getEquipmentLogCollectList(String organizeCode, Integer equipId, Integer needNewValue, Integer variableType, List equipVariableIdList) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || CollectionUtils.isEmpty(equipVariableIdList) || StringUtils.isEmpty(variableType)) return null; + List equipVariableCollectContextList = equipmentLogDao.queryMesEquipmentLog(organizeCode, equipId, variableType, equipVariableIdList); + return filterEquipVariableCollectContextList(equipVariableCollectContextList, needNewValue); + } + + private List filterEquipVariableCollectContextList(List equipVariableCollectContextList, Integer needNewValue) { + + if (CollectionUtils.isEmpty(equipVariableCollectContextList)) return equipVariableCollectContextList; + + equipVariableCollectContextList = equipVariableCollectContextList.stream().filter(o -> (null != o && matchQualityAndNeedNewValue(o, needNewValue))).collect(Collectors.toList()); + + return equipVariableCollectContextList; + + } + + private Boolean matchQualityAndNeedNewValue(MesEquipVariableCollectContext equipVariableCollectContext, Integer needNewValue) { + + if (StringUtils.isEmpty(equipVariableCollectContext.getEquipVariableValue())) return false; + + if (!checkEquipQuality(equipVariableCollectContext.getQuality())) return false; + + if (StringUtils.isEmpty(needNewValue) || needNewValue.compareTo(MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.FALSE.getValue()) == 0) return true; + + if (!StringUtils.isEmpty(equipVariableCollectContext.getEquipVariableStatus()) && equipVariableCollectContext.getEquipVariableStatus().compareTo(MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getEquipVariableStatus()) == 0) return true; + + return false; + + } + } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java index 6ca7c3b..4fc95c9 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java @@ -111,13 +111,14 @@ public class MesEquipVariableCollectContext implements Serializable { } //读取信息赋值 - public void copyValue(Object equipVariableValue, Object equipVariableStatus, Object quality, Object modifyDatetime, Object id) { + public MesEquipVariableCollectContext copyValue(Object equipVariableValue, Object equipVariableStatus, Object quality, Object modifyDatetime, Object id) { if (!StringUtils.isEmpty(equipVariableValue)) this.equipVariableValue = (String) equipVariableValue; if (!StringUtils.isEmpty(equipVariableStatus)) this.equipVariableStatus = (Integer) equipVariableStatus; if (!StringUtils.isEmpty(quality)) this.quality = (Integer) quality; if (!StringUtils.isEmpty(modifyDatetime)) this.writeDatetime = (String) modifyDatetime; if (!StringUtils.isEmpty(id)) this.equipmentLogId = Long.valueOf(id.toString()); this.messageSource = MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ.getValue(); + return this; } public MesEquipVariableCollectContext isConsume() {