|
|
|
@ -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;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|