From e21607fe85fe92826290521d16414f88e3411443 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Sat, 20 Jul 2024 12:53:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=BD=E6=BA=AF=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/base/MesProduceSnServiceImpl.java | 4 ++- .../serviceimpl/report/MesYfReportServiceImpl.java | 36 +++++++++++++++++++--- .../mes/apiservice/utils/MesTraceabilityTemp.java | 28 ++++++++--------- 3 files changed, 49 insertions(+), 19 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProduceSnServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProduceSnServiceImpl.java index e9a0db4..5d09ee9 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProduceSnServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProduceSnServiceImpl.java @@ -9,7 +9,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; /** * @Description : 产品条码表 @@ -30,6 +32,6 @@ public class MesProduceSnServiceImpl extends BaseMesService implem if (CollectionUtils.isEmpty(produceSnList)) { MesException.throwMesBusiException("条码【%s】信息不存在", sn); } - return produceSnList; + return produceSnList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesProduceSn::getCreateDatetime).reversed()).collect(Collectors.toList()); } } 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 f7bcfff..049f058 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 @@ -10,6 +10,7 @@ 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.MesDeviceDataQueryReportResultModel; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesProdRuleReportConditionModel; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.mes.apiservice.util.DateUtil; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; @@ -74,11 +75,14 @@ public class MesYfReportServiceImpl implements IMesYfReportService { private MesProductionAssemblyRepository mesProductionAssemblyRepository; @Autowired - private MesWorkCellScanMonitorLogRepository mesWorkCellScanMonitorLogRepository; + private MesWorkCellScanMonitorLogRepository workCellScanMonitorLogRepository; @Autowired private MesProcessRepository mesProcessRepository; + @Autowired + private MesWorkCenterRepository workCenterRepository; + @Override public ListPager queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) { ListPager mesDeviceDataQueryReportResultModelListPager = @@ -138,7 +142,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { public List findTraceabilityReport(MesProduceSn mesProduceSn) { DdlPackBean packBean = getDdlPackBean(mesProduceSn); //查询条码记录表 - MesProduceSn produceSn = mesProduceSnService.findMesProduceSn(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn()).iterator().next(); + MesProduceSn produceSn = mesProduceSnService.findMesProduceSn(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn()).get(0); //设备加工记录表 List productionRecordList = mesProductionRecordService.findMesProductionRecord(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn()); List processCodeList = productionRecordList.stream().map(MesProductionRecord::getProcessCode).filter(StringUtil::isNotEmpty).collect(Collectors.toList()); @@ -146,7 +150,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { List productionAssemblyList = mesProductionAssemblyRepository.findByHqlWhere(packBean); Map> productionAssemblyMap = CollectionUtils.isEmpty(productionAssemblyList) ? null : productionAssemblyList.stream().collect(Collectors.groupingBy(t -> t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode())); //工位扫描监控日志 - List mesWorkCellScanMonitorLogs = mesWorkCellScanMonitorLogRepository.findByHqlWhere(packBean); + List mesWorkCellScanMonitorLogs = getWorkCellScanMonitorLogList(productionRecordList); Map> mesWorkCellScanMonitorMap = CollectionUtils.isEmpty(mesWorkCellScanMonitorLogs) ? null : mesWorkCellScanMonitorLogs.stream().collect(Collectors.groupingBy(t -> t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode())); //查询工序名称 Map processMap = getMesProcessMap(mesProduceSn, processCodeList); @@ -154,7 +158,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { List mesTraceabilityReportModelList = new ArrayList<>(); MesTraceabilityReportModel mesTraceabilityReportModel = new MesTraceabilityReportModel(); BeanUtils.copyProperties(produceSn, mesTraceabilityReportModel); - mesTraceabilityReportModel.setProdType(MesExtEnumUtil.TRACEABILITY_REPORT_PROD_TYPE.NO_SORT.getValue()); + mesTraceabilityReportModel.setProdType(getWorkCenter(produceSn).getCenterType()); int duration = 0; for (MesProductionRecord mesProductionRecord : productionRecordList) { MesTraceabilityReportDataModel dataModel = new MesTraceabilityReportDataModel(); @@ -209,6 +213,30 @@ public class MesYfReportServiceImpl implements IMesYfReportService { return mesTraceabilityReportModelList; } + private MesWorkCenter getWorkCenter(MesProduceSn produceSn) { + MesWorkCenter workCenter = workCenterRepository.getByProperty( + new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.IS_VALID, MesExtConstWords.WORK_CENTER_CODE}, + new Object[]{produceSn.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), produceSn.getWorkCenterCode()}); + if (null == workCenter) MesException.throwMesBusiException("条码[%s]关联的生产线[%s]信息不存在", produceSn.getProductSn(), produceSn.getWorkCenterCode()); + return workCenter; + } + + private List getWorkCellScanMonitorLogList(List productionRecordList) { + if (CollectionUtils.isEmpty(productionRecordList)) return null; + List workCellScanMonitorLogList = new ArrayList<>(); + for (MesProductionRecord productionRecord : productionRecordList) { + if (null == productionRecord) continue; + //云端 MesWorkCellScanMonitorLog 按照 工厂+生产线 分表 只能根据开模ID查询, 条码字段是产出条码 不是主条码, 一模多腔场景存的是多个条码分号分隔 + DdlPackBean packBean = DdlPackBean.getDdlPackBean(productionRecord.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(productionRecord.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, packBean); + DdlPreparedPack.getStringEqualPack(productionRecord.getWorkCellCode(), MesExtConstWords.WORK_CELL_CODE, packBean); + DdlPreparedPack.getNumEqualPack(productionRecord.getMouldRecordId(), MesExtConstWords.MOULD_RECORD_ID, packBean); + List itemList = workCellScanMonitorLogRepository.findByHqlWhere(packBean); + if (!CollectionUtils.isEmpty(itemList)) workCellScanMonitorLogList.addAll(itemList); + } + return workCellScanMonitorLogList; + } + private Map getMesProcessMap(MesProduceSn mesProduceSn, List processCodeList) { Map processMap = null; if(!CollectionUtils.isEmpty(processCodeList)){ diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/MesTraceabilityTemp.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/MesTraceabilityTemp.java index db325da..50d192a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/MesTraceabilityTemp.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/MesTraceabilityTemp.java @@ -617,20 +617,20 @@ public class MesTraceabilityTemp { } } else { // 构建每一列 - PdfPCell equcontentCell00 = new PdfPCell(new Paragraph("", tableValueFont)); - equcontentCell00.setHorizontalAlignment(Element.ALIGN_LEFT); - equcontentCell00.setBorder(Rectangle.NO_BORDER); - equcontentCell00.setColspan(1); - equtable.addCell(equcontentCell00); - - PdfPCell equcontentCell11 = new PdfPCell(new Paragraph(" ", tableValueFont)); - equcontentCell11.setHorizontalAlignment(Element.ALIGN_CENTER); - equcontentCell11.setVerticalAlignment(Element.ALIGN_MIDDLE); - equcontentCell11.setPaddingBottom(3); - equcontentCell11.setPaddingTop(1); - equcontentCell11.setBackgroundColor(new BaseColor(253, 239, 192));//黄色 - equcontentCell11.setColspan(8); - equtable.addCell(equcontentCell11); +// PdfPCell equcontentCell00 = new PdfPCell(new Paragraph("", tableValueFont)); +// equcontentCell00.setHorizontalAlignment(Element.ALIGN_LEFT); +// equcontentCell00.setBorder(Rectangle.NO_BORDER); +// equcontentCell00.setColspan(1); +// equtable.addCell(equcontentCell00); +// +// PdfPCell equcontentCell11 = new PdfPCell(new Paragraph(" ", tableValueFont)); +// equcontentCell11.setHorizontalAlignment(Element.ALIGN_CENTER); +// equcontentCell11.setVerticalAlignment(Element.ALIGN_MIDDLE); +// equcontentCell11.setPaddingBottom(3); +// equcontentCell11.setPaddingTop(1); +// equcontentCell11.setBackgroundColor(new BaseColor(253, 239, 192));//黄色 +// equcontentCell11.setColspan(8); +// equtable.addCell(equcontentCell11); } document.add(equtable);