设备日志

tags/yfai-mes-ext-v1.0
王杰 10 months ago
parent b2a5acf45b
commit 46a24a8e61

@ -6,21 +6,44 @@ import cn.estsh.i3plus.ext.mes.pojo.model.report.MesWorkCellScanMonitorCondition
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesWorkCellScanMonitorLogModel;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipment;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLogDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesWcEquipment;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCellScanMonitorLog;
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentLogDetailRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWcEquipmentRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellScanMonitorLogRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class MesWorkCellMonitorLogService implements IMesWorkCellScanMonitorLogService {
@Autowired
private MesWcEquipmentRepository equipmentRepository;
private MesWcEquipmentRepository wcEquipmentRepository;
@Autowired
private MesEquipmentRepository equipmentRepository;
@Autowired
private MesEquipmentLogDetailRepository equipmentLogDetailRepository;
@Autowired
private MesWorkCellScanMonitorLogRepository workCellScanMonitorLogRepository;
@Override
public List<MesWorkCellScanMonitorLogModel> queryWorkCellScanMonitorLogList(MesWorkCellScanMonitorConditionModel conditionModel) {
@ -29,14 +52,34 @@ public class MesWorkCellMonitorLogService implements IMesWorkCellScanMonitorLogS
List<MesWorkCellScanMonitorConditionModel> conditionModelList = getConditionModelList(conditionModel, wcEquipmentList);
return null;
List<MesWorkCellScanMonitorLogModel> resultList = new ArrayList<>();
for (MesWorkCellScanMonitorConditionModel item : conditionModelList) {
List<MesWorkCellScanMonitorLogModel> itemList = getWorkCellScanMonitorLogList(item);
if (!CollectionUtils.isEmpty(itemList)) resultList.addAll(itemList);
}
if (!CollectionUtils.isEmpty(resultList)) {
if (conditionModel.getAscOrDesc().compareTo(CommonEnumUtil.ASC_OR_DESC.ASC.getValue()) == 0)
resultList = resultList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCreateDatetime()))).sorted(Comparator.comparing(MesWorkCellScanMonitorLogModel::getCreateDatetime)).collect(Collectors.toList());
else
resultList = resultList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCreateDatetime()))).sorted(Comparator.comparing(MesWorkCellScanMonitorLogModel::getCreateDatetime).reversed()).collect(Collectors.toList());
}
return (CollectionUtils.isEmpty(resultList) || conditionModel.getLimit().compareTo(resultList.size()) > 0) ? resultList : resultList.subList(0, conditionModel.getLimit());
}
private List<MesWcEquipment> beforeCheckCondition(MesWorkCellScanMonitorConditionModel conditionModel) {
if (StringUtils.isEmpty(conditionModel.getWorkCellCode()) && StringUtils.isEmpty(conditionModel.getEquipmentCode())) MesException.throwBusiException("请输入工位代码或者设备代码进行查询!");
if (StringUtils.isEmpty(conditionModel.getLimit())) MesException.throwBusiException("请输入查询数据量后进行查询!");
if (StringUtils.isEmpty(conditionModel.getCreateDatetimeStart()) || StringUtils.isEmpty(conditionModel.getCreateDatetimeEnd())) MesException.throwBusiException("请输入时间查询条件后进行查询!");
if (StringUtils.isEmpty(conditionModel.getWorkCellCode()) && StringUtils.isEmpty(conditionModel.getEquipmentCode())) MesException.throwBusiException("请输入工位代码或者设备代码后进行查询!");
if (!StringUtils.isEmpty(conditionModel.getWorkCellCode()) && StringUtils.isEmpty(conditionModel.getWorkCenterCode())) MesException.throwBusiException("查询参数异常,工位[%s]未携带生产线查询条件!");
if (!StringUtils.isEmpty(conditionModel.getWorkCellCode()) && StringUtils.isEmpty(conditionModel.getWorkCenterCode())) MesException.throwBusiException("查询参数异常,工位[%s]未携带生产线查询条件!", conditionModel.getWorkCellCode());
if (!StringUtils.isEmpty(conditionModel.getEquipmentCode()) && StringUtils.isEmpty(conditionModel.getEquipId())) MesException.throwBusiException("查询参数异常,设备[%s]未携带生产线查询条件!", conditionModel.getEquipmentCode());
List<MesWcEquipment> wcEquipmentList = getEquipmentList(conditionModel);
if (!StringUtils.isEmpty(conditionModel.getWorkCellCode()) && !StringUtils.isEmpty(conditionModel.getEquipmentCode()) &&
@ -56,12 +99,110 @@ public class MesWorkCellMonitorLogService implements IMesWorkCellScanMonitorLogS
DdlPreparedPack.getStringEqualPack(conditionModel.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringEqualPack(conditionModel.getWorkCellCode(), MesExtConstWords.WORK_CELL_CODE, packBean);
DdlPreparedPack.getStringEqualPack(conditionModel.getEquipmentCode(), MesExtConstWords.EQUIPMENT_CODE, packBean);
return equipmentRepository.findByHqlWhere(packBean);
return wcEquipmentRepository.findByHqlWhere(packBean);
}
private Integer getEquipId(String organizeCode, String equipmentCode) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(equipmentCode, MesExtConstWords.EQUIPMENT_CODE, packBean);
MesEquipment equipment = equipmentRepository.getByProperty(packBean);
if (null == equipment || StringUtils.isEmpty(equipment.getEquipId())) MesException.throwBusiException("请检查设备[%s]信息的有效性", equipmentCode);
return equipment.getEquipId();
}
private List<MesWorkCellScanMonitorConditionModel> getConditionModelList(MesWorkCellScanMonitorConditionModel conditionModel, List<MesWcEquipment> wcEquipmentList) {
return null;
List<MesWorkCellScanMonitorConditionModel> conditionModelList = new ArrayList<>();
List<String> logTypes = StringUtils.isEmpty(conditionModel.getLogTypes()) ? MesEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.collectValues() : Arrays.asList(conditionModel.getLogTypes().split(MesExtConstWords.COMMA));
List<String> monitorLogTypes = logTypes.stream().filter(o -> (null != o && !o.equals(MesEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.EQU.getValueStr()))).collect(Collectors.toList());
for (MesWcEquipment wcEquipment : wcEquipmentList) {
if (null == wcEquipment) continue;
if (logTypes.contains(MesEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.EQU.getValueStr())) {
MesWorkCellScanMonitorConditionModel equConditionModel = new MesWorkCellScanMonitorConditionModel().flag(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()).copy(conditionModel).location(wcEquipment);
if (StringUtils.isEmpty(conditionModel.getEquipId())) equConditionModel.equipId(getEquipId(conditionModel.getOrganizeCode(), wcEquipment.getEquipmentCode()));
conditionModelList.add(equConditionModel);
}
if (!CollectionUtils.isEmpty(monitorLogTypes)){
conditionModelList.add(new MesWorkCellScanMonitorConditionModel().
flag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).copy(conditionModel).location(wcEquipment).logTypeList(MesEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.collectMonitorValues(monitorLogTypes)));
}
}
return conditionModelList;
}
private List<MesWorkCellScanMonitorLogModel> getWorkCellScanMonitorLogList(MesWorkCellScanMonitorConditionModel conditionModel) {
if (conditionModel.getFlag().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) return findWorkCellScanMonitorLogList(conditionModel);
else return findEquipmentLogDetailList(conditionModel);
}
private List<MesWorkCellScanMonitorLogModel> findWorkCellScanMonitorLogList(MesWorkCellScanMonitorConditionModel conditionModel) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(conditionModel.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(conditionModel.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringEqualPack(conditionModel.getWorkCellCode(), MesExtConstWords.WORK_CELL_CODE, packBean);
DdlPreparedPack.getStringEqualPack(conditionModel.getEquipmentCode(), MesExtConstWords.EQUIPMENT_CODE, packBean);
DdlPreparedPack.getStringEqualPack(conditionModel.getStepCode(), MesExtConstWords.STEP_CODE, packBean);
DdlPreparedPack.getStringLikerPack(conditionModel.getScanInfo(), MesExtConstWords.SCAN_INFO, packBean);
DdlPreparedPack.getStringLikerPack(conditionModel.getWorkOrderNo(), MesExtConstWords.WORK_ORDER_NO, packBean);
DdlPreparedPack.getStringLikerPack(conditionModel.getProductSn(), MesExtConstWords.PRODUCT_SN, packBean);
DdlPreparedPack.getStringLikerPack(conditionModel.getPartNo(), MesExtConstWords.PART_NO, packBean);
DdlPreparedPack.getNumEqualPack(conditionModel.getMouldRecordId(), MesExtConstWords.MOULD_RECORD_ID, packBean);
DdlPreparedPack.getNumEqualPack(conditionModel.getMessageType(), MesExtConstWords.MESSAGE_TYPE, packBean);
DdlPreparedPack.getInPackList(conditionModel.getLogTypeList(), MesExtConstWords.LOG_TYPE, packBean);
DdlPreparedPack.timeBuilder(conditionModel.getCreateDatetimeStart(), conditionModel.getCreateDatetimeEnd(), MesExtConstWords.CREATE_DATE_TIME, packBean, true);
DdlPreparedPack.getOrderByPack(new Object[]{conditionModel.getAscOrDesc()}, new String[]{MesExtConstWords.CREATE_DATE_TIME}, packBean);
List<MesWorkCellScanMonitorLog> workCellScanMonitorLogList = workCellScanMonitorLogRepository.findByHqlTopWhere(packBean, conditionModel.getLimit());
if (CollectionUtils.isEmpty(workCellScanMonitorLogList)) return null;
List<MesWorkCellScanMonitorLogModel> resultList = new ArrayList<>();
for (MesWorkCellScanMonitorLog item : workCellScanMonitorLogList) {
if (null == item) continue;
MesWorkCellScanMonitorLogModel result = new MesWorkCellScanMonitorLogModel();
BeanUtils.copyProperties(item, result);
result.setLogTypeName(MesEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.valueOfDescription(item.getLogType()));
result.setMessageTypeName(MesEnumUtil.WORK_CELL_SCAN_MONITOR_MESSAGE_TYPE.valueOfDescription(item.getMessageType()));
resultList.add(result);
}
return resultList;
}
private List<MesWorkCellScanMonitorLogModel> findEquipmentLogDetailList(MesWorkCellScanMonitorConditionModel conditionModel) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(conditionModel.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(conditionModel.getEquipId(), MesExtConstWords.EQUIP_ID, packBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PRODUCTION.getValue(), MesExtConstWords.VARIABLE_TYPE, packBean);
DdlPreparedPack.getNumEqualPack(conditionModel.getEquipVariableId(), MesExtConstWords.EQUIP_VARIABLE_ID, packBean);
DdlPreparedPack.getStringEqualPack(conditionModel.getEquipmentCode(), MesExtConstWords.EQUIPMENT_CODE, packBean);
DdlPreparedPack.getStringLikerPack(conditionModel.getEquipVariableName(), MesExtConstWords.EQUIP_VARIABLE_NAME, packBean);
DdlPreparedPack.timeBuilder(conditionModel.getCreateDatetimeStart(), conditionModel.getCreateDatetimeEnd(), MesExtConstWords.CREATE_DATE_TIME, packBean, true);
DdlPreparedPack.getOrderByPack(new Object[]{conditionModel.getAscOrDesc()}, new String[]{MesExtConstWords.CREATE_DATE_TIME}, packBean);
List<MesEquipmentLogDetail> equipmentLogDetailList = equipmentLogDetailRepository.findByHqlTopWhere(packBean, conditionModel.getLimit());
if (CollectionUtils.isEmpty(equipmentLogDetailList)) return null;
List<MesWorkCellScanMonitorLogModel> resultList = new ArrayList<>();
for (MesEquipmentLogDetail item : equipmentLogDetailList) {
if (null == item) continue;
MesWorkCellScanMonitorLogModel result = new MesWorkCellScanMonitorLogModel();
BeanUtils.copyProperties(item, result);
result.setLogTypeName(MesEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.EQU.getDescription());
result.setMessageTypeName(MesEnumUtil.WORK_CELL_SCAN_MONITOR_MESSAGE_TYPE.TEXT.getDescription());
resultList.add(result);
}
return resultList;
}
}

@ -1,8 +1,13 @@
package cn.estsh.i3plus.ext.mes.pojo.model.report;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesWcEquipment;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import java.util.List;
@Data
@ApiModel("工位扫描日志合并设备日志报表-查询条件封装")
@ -21,19 +26,19 @@ public class MesWorkCellScanMonitorConditionModel {
private String workCellCode;
@ApiParam(value = "设备ID")
private String equipId;
private Integer equipId;
@ApiParam(value = "设备代码")
private String equipmentCode;
@ApiParam("设备变量ID")
private String equipVariableId;
private Long equipVariableId;
@ApiParam("设备变量名称")
private String equipVariableName;
@ApiParam("开模记录ID")
private String mouldRecordId;
private Long mouldRecordId;
@ApiParam("扫描/读取信息")
private String scanInfo;
@ -51,7 +56,7 @@ public class MesWorkCellScanMonitorConditionModel {
private String stepCode;
@ApiParam("日志类型")
private Integer logType;
private String logTypes;
@ApiParam("信息类型")
private Integer messageType;
@ -59,10 +64,42 @@ public class MesWorkCellScanMonitorConditionModel {
@ApiParam("查询条数")
private Integer limit;
@ApiParam("查询时间正序或倒叙")
private Integer ascOrDesc = CommonEnumUtil.ASC_OR_DESC.DESC.getValue();
@ApiParam("查询时间起始")
private String createDatetimeStart;
@ApiParam("查询时间截止")
private String createDatetimeEnd;
@ApiParam("日志类型")
private List<Integer> logTypeList;
public MesWorkCellScanMonitorConditionModel copy(MesWorkCellScanMonitorConditionModel conditionModel) {
BeanUtils.copyProperties(conditionModel, this);
return this;
}
public MesWorkCellScanMonitorConditionModel location(MesWcEquipment wcEquipment) {
BeanUtils.copyProperties(wcEquipment, this);
return this;
}
public MesWorkCellScanMonitorConditionModel equipId(Integer equipId) {
this.equipId = equipId;
return this;
}
public MesWorkCellScanMonitorConditionModel flag(Integer flag) {
this.flag = flag;
return this;
}
public MesWorkCellScanMonitorConditionModel logTypeList(List<Integer> logTypeList) {
this.logTypeList = logTypeList;
return this;
}
}

@ -8,6 +8,15 @@ import lombok.Data;
@ApiModel("工位扫描日志合并设备日志报表-查询条件封装")
public class MesWorkCellScanMonitorLogModel {
@ApiParam("组织代码")
private String organizeCode;
@ApiParam("创建时间")
private String createDatetime;
@ApiParam("创建人")
private String createUser;
@ApiParam("开模记录ID")
private Long mouldRecordId;
@ -83,7 +92,4 @@ public class MesWorkCellScanMonitorLogModel {
@ApiParam("信息类型")
private String messageTypeName;
@ApiParam("设备质量")
private String qualityName;
}

@ -33,6 +33,16 @@ public class MesExtConstWords {
public static final String WORK_CELL_NAME = "workCellName";
// 设备代码
public static final String EQUIPMENT_CODE = "equipmentCode";
// 开模记录ID
public static final String MOULD_RECORD_ID = "mouldRecordId";
// 设备数据变量ID
public static final String EQUIP_VARIABLE_ID = "equipVariableId";
// 设备数据变量名称
public static final String EQUIP_VARIABLE_NAME = "equipVariableName";
// 设备ID
public static final String EQUIP_ID = "equipId";
// 变量类型
public static final String VARIABLE_TYPE = "variableType";
// 工位等级
public static final String GRADE = "grade";
// 是否禁用
@ -57,6 +67,8 @@ public class MesExtConstWords {
public static final String PPT_CODE = "pptCode";
//生产工单号
public static final String WORK_ORDER_NO = "workOrderNo";
//零件条码
public static final String PRODUCT_SN = "productSn";
//工单状态
public static final String WORK_ORDER_STATUS = "workOrderStatus";
//工单类型
@ -107,6 +119,14 @@ public class MesExtConstWords {
public static final String RESULT_BIG = "RESULT";
//序号
public static final String INDEX = "index";
//扫描信息
public static final String SCAN_INFO = "scanInfo";
//工步代码
public static final String STEP_CODE = "stepCode";
//日志类型
public static final String LOG_TYPE = "logType";
//信息类型
public static final String MESSAGE_TYPE = "messageType";
//时间[开始/结束]条件
public static final String START_TIME_START = "startTimeStart";

Loading…
Cancel
Save