设备点检

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

@ -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.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.pojo.mes.bean.MesEquipmentLog; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLog;
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;
@ -30,6 +31,10 @@ public interface IMesEquipmentLogExtService {
@ApiOperation(value = "验证设备通信质量") @ApiOperation(value = "验证设备通信质量")
Boolean checkEquipQuality(Integer quality); Boolean checkEquipQuality(Integer quality);
@ApiOperation(value = "根据设备ID,是否常变值状态,变量类型查询设备ID分表采集数据")
List<MesEquipVariableCollectContext> getEquipmentLogCollectList(String organizeCode, Integer equipId, Integer needNewValue, Integer variableType);
@ApiOperation(value = "根据设备ID,是否常变值状态,设备数据变量ID集合,变量类型 查询设备ID分表采集数据")
List<MesEquipVariableCollectContext> getEquipmentLogCollectList(String organizeCode, Integer equipId, Integer needNewValue, Integer variableType, List<Long> equipVariableIdList);
} }

@ -15,4 +15,10 @@ public interface IMesEquipmentLogDao {
@ApiOperation(value = "根据设备ID, 设备LOG表ID集合修改设备日志表的数据状态") @ApiOperation(value = "根据设备ID, 设备LOG表ID集合修改设备日志表的数据状态")
void updateEquipVariableStatus(String organizeCode, Integer equipId, Map<Long, String> equipmentLogIdMap, Integer equipVariableStatus); void updateEquipVariableStatus(String organizeCode, Integer equipId, Map<Long, String> equipmentLogIdMap, Integer equipVariableStatus);
@ApiOperation(value = "根据设备ID, 变量类型, 数据变量ID集合查询设备日志表")
List<MesEquipVariableCollectContext> queryMesEquipmentLog(String organizeCode, Integer equipId, Integer variableType, List<Long> equipVariableIdList);
@ApiOperation(value = "根据设备ID, 变量类型查询设备日志表")
List<MesEquipVariableCollectContext> queryMesEquipmentLog(String organizeCode, Integer equipId, Integer variableType);
} }

@ -109,4 +109,72 @@ public class MesEquipmentLogDao implements IMesEquipmentLogDao {
return equipVariableCollectContextList; return equipVariableCollectContextList;
} }
@Override
public List<MesEquipVariableCollectContext> queryMesEquipmentLog(String organizeCode, Integer equipId, Integer variableType, List<Long> 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<MesEquipVariableCollectContext> 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<MesEquipVariableCollectContext> backEquipVariableCollectContextList(List list) {
if (CollectionUtils.isEmpty(list)) return null;
List<MesEquipVariableCollectContext> 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;
}
} }

@ -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.api.busi.spot.IMesSpotCheckOrderService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; 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.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.MesEquipmentSpotCheckModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSpotCheckOrderModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSpotCheckOrderModel;
import cn.estsh.i3plus.icloud.core.sdk.ICoreUtilCloud; import cn.estsh.i3plus.icloud.core.sdk.ICoreUtilCloud;
@ -196,11 +197,11 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService {
} }
//根据设备代码获取EQUIP_ID //根据设备代码获取EQUIP_ID
MesEquipment mesEquipment = mesEquipmentExtService.getMesEquipment(org, model.getSpotCheckOrder().getEquipCode()); MesEquipment mesEquipment = mesEquipmentExtService.getMesEquipment(org, model.getSpotCheckOrder().getEquipCode());
Map<Long, List<MesEquipmentLog>> setMap = null; Map<Long, List<MesEquipVariableCollectContext>> setMap = null;
//实际值地址数据Map //实际值地址数据Map
Map<Long, List<MesEquipmentLog>> realMap = null; Map<Long, List<MesEquipVariableCollectContext>> realMap = null;
//获取实际值值设备数据 //获取实际值值设备数据
List<MesEquipmentLog> realEquipmentLogList = new ArrayList<>(); List<MesEquipVariableCollectContext> realEquipmentLogList = new ArrayList<>();
if(!Objects.isNull(mesEquipment) && !StringUtils.isEmpty(mesEquipment.getEquipId())){ if(!Objects.isNull(mesEquipment) && !StringUtils.isEmpty(mesEquipment.getEquipId())){
//获取设定值设备变量ID //获取设定值设备变量ID
List<Long> setEquipVariableIdList = List<Long> 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()); model.getOrderResultList().stream().filter(k -> k.getSpotCheckItemType() == MesExtEnumUtil.SPOT_CHECK_ITEM_TYPE.AUTO.getValue()).map(MesSpotCheckOrderResult::getRealEquipVariableId).collect(Collectors.toList());
//获取设定值设备数据 //获取设定值设备数据
List<MesEquipmentLog> setEquipmentLogList = new ArrayList<>(); List<MesEquipVariableCollectContext> setEquipmentLogList = new ArrayList<>();
for (List<Long> tmp : ListUtils.partition(setEquipVariableIdList, MesCommonConstant.MAX_PAGER_SIZE)) { for (List<Long> 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 //设定值地址数据Map
setMap = setEquipmentLogList.stream().collect(Collectors.groupingBy(MesEquipmentLog::getEquipVariableId)); setMap = setEquipmentLogList.stream().collect(Collectors.groupingBy(MesEquipVariableCollectContext::getEquipVariableId));
for (List<Long> tmp : ListUtils.partition(realEquipVariableIdList, MesCommonConstant.MAX_PAGER_SIZE)) { for (List<Long> 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 //实际值地址数据Map
realMap = realEquipmentLogList.stream().collect(Collectors.groupingBy(MesEquipmentLog::getEquipVariableId)); realMap = realEquipmentLogList.stream().collect(Collectors.groupingBy(MesEquipVariableCollectContext::getEquipVariableId));
} }
for (MesSpotCheckOrderResult result : model.getOrderResultList()) { for (MesSpotCheckOrderResult result : model.getOrderResultList()) {

@ -135,4 +135,44 @@ public class MesEquipmentLogExtService implements IMesEquipmentLogExtService {
} }
@Override
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public List<MesEquipVariableCollectContext> getEquipmentLogCollectList(String organizeCode, Integer equipId, Integer needNewValue, Integer variableType) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || StringUtils.isEmpty(variableType)) return null;
List<MesEquipVariableCollectContext> equipVariableCollectContextList = equipmentLogDao.queryMesEquipmentLog(organizeCode, equipId, variableType);
return filterEquipVariableCollectContextList(equipVariableCollectContextList, needNewValue);
}
@Override
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public List<MesEquipVariableCollectContext> getEquipmentLogCollectList(String organizeCode, Integer equipId, Integer needNewValue, Integer variableType, List<Long> equipVariableIdList) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipId) || CollectionUtils.isEmpty(equipVariableIdList) || StringUtils.isEmpty(variableType)) return null;
List<MesEquipVariableCollectContext> equipVariableCollectContextList = equipmentLogDao.queryMesEquipmentLog(organizeCode, equipId, variableType, equipVariableIdList);
return filterEquipVariableCollectContextList(equipVariableCollectContextList, needNewValue);
}
private List<MesEquipVariableCollectContext> filterEquipVariableCollectContextList(List<MesEquipVariableCollectContext> 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;
}
} }

@ -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(equipVariableValue)) this.equipVariableValue = (String) equipVariableValue;
if (!StringUtils.isEmpty(equipVariableStatus)) this.equipVariableStatus = (Integer) equipVariableStatus; if (!StringUtils.isEmpty(equipVariableStatus)) this.equipVariableStatus = (Integer) equipVariableStatus;
if (!StringUtils.isEmpty(quality)) this.quality = (Integer) quality; if (!StringUtils.isEmpty(quality)) this.quality = (Integer) quality;
if (!StringUtils.isEmpty(modifyDatetime)) this.writeDatetime = (String) modifyDatetime; if (!StringUtils.isEmpty(modifyDatetime)) this.writeDatetime = (String) modifyDatetime;
if (!StringUtils.isEmpty(id)) this.equipmentLogId = Long.valueOf(id.toString()); if (!StringUtils.isEmpty(id)) this.equipmentLogId = Long.valueOf(id.toString());
this.messageSource = MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ.getValue(); this.messageSource = MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ.getValue();
return this;
} }
public MesEquipVariableCollectContext isConsume() { public MesEquipVariableCollectContext isConsume() {

Loading…
Cancel
Save