问题清单修复

tags/yfai-mes-ext-v1.0
jun 12 months ago
parent 29351f41cc
commit 3227ee65ca

@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.api.base.IMesProduceSnService;
import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService; import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService;
import cn.estsh.i3plus.ext.mes.api.busi.report.IMesYfReportService; import cn.estsh.i3plus.ext.mes.api.busi.report.IMesYfReportService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesYfReportDao; import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesYfReportDao;
import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanMapUtilsExt;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesTraceabilityTemp; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesTraceabilityTemp;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel;
@ -25,6 +26,7 @@ import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ResultBean;
import jodd.util.StringUtil; import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -47,6 +49,7 @@ import java.util.stream.Collectors;
* @Modify: * @Modify:
**/ **/
@Service @Service
@Slf4j
public class MesYfReportServiceImpl implements IMesYfReportService { public class MesYfReportServiceImpl implements IMesYfReportService {
@Autowired @Autowired
@ -73,6 +76,9 @@ public class MesYfReportServiceImpl implements IMesYfReportService {
@Autowired @Autowired
private MesWorkCellScanMonitorLogRepository mesWorkCellScanMonitorLogRepository; private MesWorkCellScanMonitorLogRepository mesWorkCellScanMonitorLogRepository;
@Autowired
private MesProcessRepository mesProcessRepository;
@Override @Override
public ListPager<MesDeviceDataQueryReportResultModel> queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) { public ListPager<MesDeviceDataQueryReportResultModel> queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) {
ListPager<MesDeviceDataQueryReportResultModel> mesDeviceDataQueryReportResultModelListPager = ListPager<MesDeviceDataQueryReportResultModel> mesDeviceDataQueryReportResultModelListPager =
@ -132,72 +138,89 @@ public class MesYfReportServiceImpl implements IMesYfReportService {
public List<MesTraceabilityReportModel> findTraceabilityReport(MesProduceSn mesProduceSn) { public List<MesTraceabilityReportModel> findTraceabilityReport(MesProduceSn mesProduceSn) {
DdlPackBean packBean = getDdlPackBean(mesProduceSn); DdlPackBean packBean = getDdlPackBean(mesProduceSn);
//查询条码记录表 //查询条码记录表
List<MesProduceSn> produceSnList = mesProduceSnService.findMesProduceSn(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn()); MesProduceSn produceSn = mesProduceSnService.findMesProduceSn(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn()).iterator().next();
Map<String, MesProduceSn> mesProduceSnMap = produceSnList.stream().collect(Collectors.toMap(MesProduceSn::getPartNo, t -> t));
//设备加工记录表 //设备加工记录表
List<MesProductionRecord> productionRecordList = mesProductionRecordService.findMesProductionRecord(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn()); List<MesProductionRecord> productionRecordList = mesProductionRecordService.findMesProductionRecord(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn());
Map<String, List<MesProductionRecord>> productionRecordMap = productionRecordList.stream().collect(Collectors.groupingBy(MesProductionRecord::getPartNo)); List<String> processCodeList = productionRecordList.stream().map(MesProductionRecord::getProcessCode).filter(StringUtil::isNotEmpty).collect(Collectors.toList());
//装配记录表 //装配记录表
List<MesProductionAssembly> productionAssemblyList = mesProductionAssemblyRepository.findByHqlWhere(packBean); List<MesProductionAssembly> productionAssemblyList = mesProductionAssemblyRepository.findByHqlWhere(packBean);
Map<String, List<MesProductionAssembly>> productionAssemblyMap = CollectionUtils.isEmpty(productionAssemblyList) ? null : productionAssemblyList.stream().collect(Collectors.groupingBy(t -> t.getPartNo() + t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode())); Map<String, List<MesProductionAssembly>> productionAssemblyMap = CollectionUtils.isEmpty(productionAssemblyList) ? null : productionAssemblyList.stream().collect(Collectors.groupingBy(t -> t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode()));
//工位扫描监控日志 //工位扫描监控日志
List<MesWorkCellScanMonitorLog> mesWorkCellScanMonitorLogs = mesWorkCellScanMonitorLogRepository.findByHqlWhere(packBean); List<MesWorkCellScanMonitorLog> mesWorkCellScanMonitorLogs = mesWorkCellScanMonitorLogRepository.findByHqlWhere(packBean);
Map<String, List<MesWorkCellScanMonitorLog>> mesWorkCellScanMonitorMap = CollectionUtils.isEmpty(mesWorkCellScanMonitorLogs) ? null : mesWorkCellScanMonitorLogs.stream().collect(Collectors.groupingBy(t -> t.getPartNo() + t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode())); Map<String, List<MesWorkCellScanMonitorLog>> mesWorkCellScanMonitorMap = CollectionUtils.isEmpty(mesWorkCellScanMonitorLogs) ? null : mesWorkCellScanMonitorLogs.stream().collect(Collectors.groupingBy(t -> t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode()));
//查询工序名称
Map<String, MesProcess> processMap = getMesProcessMap(mesProduceSn, processCodeList);
//数据组装 //数据组装
List<MesTraceabilityReportModel> mesTraceabilityReportModelList = new ArrayList<>(); List<MesTraceabilityReportModel> mesTraceabilityReportModelList = new ArrayList<>();
for (Map.Entry<String, MesProduceSn> produceSnEntry : mesProduceSnMap.entrySet()) { MesTraceabilityReportModel mesTraceabilityReportModel = new MesTraceabilityReportModel();
MesTraceabilityReportModel mesTraceabilityReportModel = new MesTraceabilityReportModel(); BeanUtils.copyProperties(produceSn, mesTraceabilityReportModel);
BeanUtils.copyProperties(produceSnEntry.getValue(), mesTraceabilityReportModel); mesTraceabilityReportModel.setProdType(MesExtEnumUtil.TRACEABILITY_REPORT_PROD_TYPE.NO_SORT.getValue());
mesTraceabilityReportModel.setProdType(MesExtEnumUtil.TRACEABILITY_REPORT_PROD_TYPE.NO_SORT.getValue()); int duration = 0;
if (productionRecordMap.containsKey(produceSnEntry.getKey())) { for (MesProductionRecord mesProductionRecord : productionRecordList) {
List<MesProductionRecord> mesProductionRecordList = productionRecordMap.get(produceSnEntry.getKey()); MesTraceabilityReportDataModel dataModel = new MesTraceabilityReportDataModel();
int duration = 0; BeanUtils.copyProperties(mesProductionRecord, dataModel);
for (MesProductionRecord mesProductionRecord : mesProductionRecordList) { //持续时间
MesTraceabilityReportDataModel dataModel = new MesTraceabilityReportDataModel(); if (StringUtil.isNotEmpty(dataModel.getStartDateTime()) && StringUtil.isNotEmpty(dataModel.getCompleteDateTime())) {
BeanUtils.copyProperties(mesProductionRecord, dataModel); dataModel.setDuration(getTimeDifference(dataModel.getStartDateTime(), dataModel.getCompleteDateTime()));
//持续时间 dataModel.setDurationStr(dateFormat(dataModel.getDuration()));
if (StringUtil.isNotEmpty(dataModel.getStartDateTime()) && StringUtil.isNotEmpty(dataModel.getCompleteDateTime())) { duration += dataModel.getDuration();
dataModel.setDuration(getTimeDifference(dataModel.getStartDateTime(), dataModel.getCompleteDateTime()));
dataModel.setDurationStr(dateFormat(dataModel.getDuration()));
duration += dataModel.getDuration();
}
//装配记录表
String key = mesProductionRecord.getPartNo() + mesProductionRecord.getWorkCenterCode() + mesProductionRecord.getWorkCellCode() + mesProductionRecord.getEquipmentCode();
if (!Objects.isNull(productionAssemblyMap) && productionAssemblyMap.containsKey(key)) {
dataModel.setProductionAssemblyList(productionAssemblyMap.get(key));
}
//工位扫描监控日志
if (!Objects.isNull(mesWorkCellScanMonitorMap) && mesWorkCellScanMonitorMap.containsKey(key)) {
dataModel.setMesWorkCellScanMonitorLogs(mesWorkCellScanMonitorMap.get(key));
}
mesTraceabilityReportModel.getMesTraceabilityReportDataModelList().add(dataModel);
}
//开始时间
mesTraceabilityReportModel.setProduceBegin(mesProductionRecordList.iterator().next().getStartDateTime());
//生产状态
mesTraceabilityReportModel.setProdStatus(mesTraceabilityReportModel.getSnStatus());
//结束时间
if (mesTraceabilityReportModel.getSnStatus() >= MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()) {
mesTraceabilityReportModel.setProdStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue());
mesTraceabilityReportModel.setProduceEnd(mesProductionRecordList.get(mesProductionRecordList.size() - 1).getCompleteDateTime());
}
mesTraceabilityReportModel.setDurationStr(dateFormat(duration));
mesTraceabilityReportModel.setDuration(duration);
} }
//生成PDF文件并上传 //装配记录表
try { String key = mesProductionRecord.getWorkCenterCode() + mesProductionRecord.getWorkCellCode() + mesProductionRecord.getEquipmentCode();
mesTraceabilityReportModel.setUrl(MesTraceabilityTemp.getMesTraceabilityTemp(mesTraceabilityReportModel)); if (!Objects.isNull(productionAssemblyMap) && productionAssemblyMap.containsKey(key)) {
} catch (IOException e) { dataModel.setProductionAssemblyList(productionAssemblyMap.get(key));
MesException.throwMesBusiException("删除文件生成PDF文件失败"); }
//工位扫描监控日志
if (!Objects.isNull(mesWorkCellScanMonitorMap) && mesWorkCellScanMonitorMap.containsKey(key)) {
dataModel.setMesWorkCellScanMonitorLogs(mesWorkCellScanMonitorMap.get(key));
} }
mesTraceabilityReportModelList.add(mesTraceabilityReportModel); //查询工序名称
if(StringUtil.isNotEmpty(dataModel.getProcessCode())){
if(!Objects.isNull(processMap) && processMap.containsKey(dataModel.getProcessCode())){
dataModel.setProcessName(processMap.get(dataModel.getProcessCode()).getProcessName());
}else{
dataModel.setProcessName(dataModel.getProcessCode());
}
}
mesTraceabilityReportModel.getMesTraceabilityReportDataModelList().add(dataModel);
} }
//开始时间
mesTraceabilityReportModel.setProduceBegin(productionRecordList.iterator().next().getStartDateTime());
//生产状态
mesTraceabilityReportModel.setProdStatus(mesTraceabilityReportModel.getSnStatus());
//结束时间
if (mesTraceabilityReportModel.getSnStatus() >= MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()) {
mesTraceabilityReportModel.setProdStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue());
mesTraceabilityReportModel.setProduceEnd(productionRecordList.get(productionRecordList.size() - 1).getCompleteDateTime());
}
mesTraceabilityReportModel.setDurationStr(dateFormat(duration));
mesTraceabilityReportModel.setDuration(duration);
//生成PDF文件并上传
try {
mesTraceabilityReportModel.setUrl(MesTraceabilityTemp.getMesTraceabilityTemp(mesTraceabilityReportModel));
} catch (IOException e) {
MesException.throwMesBusiException("删除文件生成PDF文件失败");
}
mesTraceabilityReportModelList.add(mesTraceabilityReportModel);
return mesTraceabilityReportModelList; return mesTraceabilityReportModelList;
} }
private Map<String, MesProcess> getMesProcessMap(MesProduceSn mesProduceSn, List<String> processCodeList) {
Map<String, MesProcess> processMap = null;
if(!CollectionUtils.isEmpty(processCodeList)){
try {
processMap = BeanMapUtilsExt.getBeanMap(mesProcessRepository, "processCode", mesProduceSn.getOrganizeCode(), processCodeList, "工序");
} catch (Exception e) {
log.info(e.getMessage());
}
}
return processMap;
}
private DdlPackBean getDdlPackBean(MesProduceSn mesProduceSn) { private DdlPackBean getDdlPackBean(MesProduceSn mesProduceSn) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProduceSn.getOrganizeCode()); DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProduceSn.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesProduceSn.getProductSn(), "productSn", packBean); DdlPreparedPack.getStringEqualPack(mesProduceSn.getProductSn(), "productSn", packBean);

Loading…
Cancel
Save