From 3227ee65ca3e10faf0c6993a8408b420068fcee3 Mon Sep 17 00:00:00 2001 From: jun Date: Thu, 18 Jul 2024 14:56:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E6=B8=85=E5=8D=95=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/report/MesYfReportServiceImpl.java | 123 ++++++++++++--------- 1 file changed, 73 insertions(+), 50 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java index 0583134..f7bcfff 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java @@ -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.busi.report.IMesYfReportService; 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.MesTraceabilityTemp; 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.impp.framework.boot.util.ResultBean; import jodd.util.StringUtil; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -47,6 +49,7 @@ import java.util.stream.Collectors; * @Modify: **/ @Service +@Slf4j public class MesYfReportServiceImpl implements IMesYfReportService { @Autowired @@ -73,6 +76,9 @@ public class MesYfReportServiceImpl implements IMesYfReportService { @Autowired private MesWorkCellScanMonitorLogRepository mesWorkCellScanMonitorLogRepository; + @Autowired + private MesProcessRepository mesProcessRepository; + @Override public ListPager queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) { ListPager mesDeviceDataQueryReportResultModelListPager = @@ -132,72 +138,89 @@ public class MesYfReportServiceImpl implements IMesYfReportService { public List findTraceabilityReport(MesProduceSn mesProduceSn) { DdlPackBean packBean = getDdlPackBean(mesProduceSn); //查询条码记录表 - List produceSnList = mesProduceSnService.findMesProduceSn(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn()); - Map mesProduceSnMap = produceSnList.stream().collect(Collectors.toMap(MesProduceSn::getPartNo, t -> t)); + MesProduceSn produceSn = mesProduceSnService.findMesProduceSn(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn()).iterator().next(); //设备加工记录表 List productionRecordList = mesProductionRecordService.findMesProductionRecord(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn()); - Map> productionRecordMap = productionRecordList.stream().collect(Collectors.groupingBy(MesProductionRecord::getPartNo)); + List processCodeList = productionRecordList.stream().map(MesProductionRecord::getProcessCode).filter(StringUtil::isNotEmpty).collect(Collectors.toList()); //装配记录表 List productionAssemblyList = mesProductionAssemblyRepository.findByHqlWhere(packBean); - Map> productionAssemblyMap = CollectionUtils.isEmpty(productionAssemblyList) ? null : productionAssemblyList.stream().collect(Collectors.groupingBy(t -> t.getPartNo() + t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode())); + Map> productionAssemblyMap = CollectionUtils.isEmpty(productionAssemblyList) ? null : productionAssemblyList.stream().collect(Collectors.groupingBy(t -> t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode())); //工位扫描监控日志 List mesWorkCellScanMonitorLogs = mesWorkCellScanMonitorLogRepository.findByHqlWhere(packBean); - Map> mesWorkCellScanMonitorMap = CollectionUtils.isEmpty(mesWorkCellScanMonitorLogs) ? null : mesWorkCellScanMonitorLogs.stream().collect(Collectors.groupingBy(t -> t.getPartNo() + t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode())); + Map> mesWorkCellScanMonitorMap = CollectionUtils.isEmpty(mesWorkCellScanMonitorLogs) ? null : mesWorkCellScanMonitorLogs.stream().collect(Collectors.groupingBy(t -> t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode())); + //查询工序名称 + Map processMap = getMesProcessMap(mesProduceSn, processCodeList); //数据组装 List mesTraceabilityReportModelList = new ArrayList<>(); - for (Map.Entry produceSnEntry : mesProduceSnMap.entrySet()) { - MesTraceabilityReportModel mesTraceabilityReportModel = new MesTraceabilityReportModel(); - BeanUtils.copyProperties(produceSnEntry.getValue(), mesTraceabilityReportModel); - mesTraceabilityReportModel.setProdType(MesExtEnumUtil.TRACEABILITY_REPORT_PROD_TYPE.NO_SORT.getValue()); - if (productionRecordMap.containsKey(produceSnEntry.getKey())) { - List mesProductionRecordList = productionRecordMap.get(produceSnEntry.getKey()); - int duration = 0; - for (MesProductionRecord mesProductionRecord : mesProductionRecordList) { - MesTraceabilityReportDataModel dataModel = new MesTraceabilityReportDataModel(); - BeanUtils.copyProperties(mesProductionRecord, dataModel); - //持续时间 - if (StringUtil.isNotEmpty(dataModel.getStartDateTime()) && StringUtil.isNotEmpty(dataModel.getCompleteDateTime())) { - 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); - + MesTraceabilityReportModel mesTraceabilityReportModel = new MesTraceabilityReportModel(); + BeanUtils.copyProperties(produceSn, mesTraceabilityReportModel); + mesTraceabilityReportModel.setProdType(MesExtEnumUtil.TRACEABILITY_REPORT_PROD_TYPE.NO_SORT.getValue()); + int duration = 0; + for (MesProductionRecord mesProductionRecord : productionRecordList) { + MesTraceabilityReportDataModel dataModel = new MesTraceabilityReportDataModel(); + BeanUtils.copyProperties(mesProductionRecord, dataModel); + //持续时间 + if (StringUtil.isNotEmpty(dataModel.getStartDateTime()) && StringUtil.isNotEmpty(dataModel.getCompleteDateTime())) { + dataModel.setDuration(getTimeDifference(dataModel.getStartDateTime(), dataModel.getCompleteDateTime())); + dataModel.setDurationStr(dateFormat(dataModel.getDuration())); + duration += dataModel.getDuration(); } - //生成PDF文件并上传 - try { - mesTraceabilityReportModel.setUrl(MesTraceabilityTemp.getMesTraceabilityTemp(mesTraceabilityReportModel)); - } catch (IOException e) { - MesException.throwMesBusiException("删除文件:生成PDF文件失败"); + //装配记录表 + String key = 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)); } - 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; } + private Map getMesProcessMap(MesProduceSn mesProduceSn, List processCodeList) { + Map 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) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProduceSn.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(mesProduceSn.getProductSn(), "productSn", packBean);