From 3f40e94671ad660e0c7bd0fd8a7f961c984e5763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=87=E9=87=8C?= <1726150332@qq.com> Date: Thu, 16 Oct 2025 09:17:33 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E6=97=A5=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E4=BC=98=E5=8C=962?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/MesReportWorkServiceImpl.java | 161 +++++++++--------- .../mapper/mes/MesReportWorkMapper.xml | 8 +- 2 files changed, 87 insertions(+), 82 deletions(-) diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java index 8272eb845..2044d8483 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java @@ -470,89 +470,92 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { BigDecimal useMan = BigDecimal.ZERO; BigDecimal totalWorkTime = BigDecimal.ZERO; //单层订单 - if ("1".equals(parentMesReport.getCegci())){ - sumQua = parentMesReport.getQuantityFeedbackSum(); - realQua = parentMesReport.getQuantityFeedbackSum(); - workTime = parentMesReport.getWorkTime(); - //计算 - dto.setQuantityAct(String.valueOf(sumQua)); - dto.setQuantityFeedback(String.valueOf(realQua)); - dto.setWorkTime(workTime); - //实际用人 - dto.setUseMan(parentMesReport.getUseMan()); - totalWorkTime=parentMesReport.getTotalWorkTime(); - }else if ("2".equals(parentMesReport.getCegci())){ - sonMesReport =mesReportWorkMapper.getSumQuantity(quantityDto); - realQua = parentMesReport.getQuantityFeedbackSum(); - workTime = parentMesReport.getWorkTime(); - dto.setQuantityAct(String.valueOf(sonMesReport.getQuantityFeedbackSum())); - dto.setQuantityFeedback(String.valueOf(realQua)); - dto.setWorkTime(workTime); - //实际用人 - useMan = sonMesReport.getUseMan().add(parentMesReport.getUseMan()); - dto.setUseMan(useMan); - totalWorkTime = sonMesReport.getTotalWorkTime().add(parentMesReport.getTotalWorkTime()); - }else if ("3".equals(parentMesReport.getCegci())){ - sonMesReport =mesReportWorkMapper.getSumQuantity(quantityDto); - quantityDto.setWorkorderCode(sonMesReport.getWorkorderCode()); - threeMesReport=mesReportWorkMapper.getSumQuantity(quantityDto); + if (parentMesReport !=null){ + if ("1".equals(parentMesReport.getCegci())){ + sumQua = parentMesReport.getQuantityFeedbackSum(); + realQua = parentMesReport.getQuantityFeedbackSum(); + workTime = parentMesReport.getWorkTime(); + //计算 + dto.setQuantityAct(String.valueOf(sumQua)); + dto.setQuantityFeedback(String.valueOf(realQua)); + dto.setWorkTime(workTime); + //实际用人 + dto.setUseMan(parentMesReport.getUseMan()); + totalWorkTime=parentMesReport.getTotalWorkTime(); + }else if ("2".equals(parentMesReport.getCegci())){ + sonMesReport =mesReportWorkMapper.getSumQuantity(quantityDto); + realQua = parentMesReport.getQuantityFeedbackSum(); + workTime = parentMesReport.getWorkTime(); + dto.setQuantityAct(String.valueOf(sonMesReport.getQuantityFeedbackSum())); + dto.setQuantityFeedback(String.valueOf(realQua)); + dto.setWorkTime(workTime); + //实际用人 + useMan = sonMesReport.getUseMan().add(parentMesReport.getUseMan()); + dto.setUseMan(useMan); + totalWorkTime = sonMesReport.getTotalWorkTime().add(parentMesReport.getTotalWorkTime()); + }else if ("3".equals(parentMesReport.getCegci())){ + sonMesReport =mesReportWorkMapper.getSumQuantity(quantityDto); + quantityDto.setWorkorderCode(sonMesReport.getWorkorderCode()); + threeMesReport=mesReportWorkMapper.getSumQuantity(quantityDto); - realQua = parentMesReport.getQuantityFeedbackSum(); - workTime = parentMesReport.getWorkTime(); - dto.setQuantityAct(String.valueOf(sonMesReport.getQuantityFeedbackSum())); - dto.setQuantityFeedback(String.valueOf(realQua)); - dto.setWorkTime(workTime); - //实际用人 - useMan = sonMesReport.getUseMan().add(parentMesReport.getUseMan()).add(threeMesReport.getUseMan()); - dto.setUseMan(useMan); - totalWorkTime = sonMesReport.getTotalWorkTime().add(parentMesReport.getTotalWorkTime()).add(threeMesReport.getTotalWorkTime()); - } - dto.setTotalWorkTime(totalWorkTime.toString()); - // 订单完成率 实际产量/计划产量 - BigDecimal completeRate = new BigDecimal(realQua) - .multiply(new BigDecimal("100.00")) - .divide(new BigDecimal(dto.getQuantitySplit()),2,BigDecimal.ROUND_HALF_UP); - dto.setCompleteRate(completeRate.toString()+"%"); - - //标准工时=母单数量*规格/产线标准效率 - BigDecimal workTimeStandard = BigDecimal.ZERO; - if(dto.getEfficiency() != null&&dto.getEfficiency().compareTo(BigDecimal.ZERO)!=0){ - workTimeStandard = new BigDecimal(realQua) - .multiply(new BigDecimal(dto.getSpec())) - .divide(dto.getEfficiency(),2,BigDecimal.ROUND_HALF_UP); - dto.setWorkTimeStandard(workTimeStandard.toString()); - }else{ - dto.setWorkTimeStandard("-"); - } - // 产线效率 标准工时/实际工时 - BigDecimal productivity = workTimeStandard - .multiply(new BigDecimal("100.00")) - .divide(workTime,2,BigDecimal.ROUND_HALF_UP); - dto.setProductivity(productivity.toString()+"%"); - // 标准人均效率 实际产量/标准用人/标准工时 - BigDecimal manAvgStandard = null; - if(StringUtils.isNotBlank(dto.getManStandard())){ - manAvgStandard = new BigDecimal(realQua) - .divide(new BigDecimal(dto.getManStandard()),4,BigDecimal.ROUND_HALF_UP) - .divide(workTimeStandard,2,BigDecimal.ROUND_HALF_UP); - dto.setManAvgStandard(manAvgStandard.toString()); - }else{ - dto.setManAvgStandard("0"); - } - // 实际人均效率 实际产量/总工时 - BigDecimal manAvgActual = new BigDecimal(realQua) - .divide(totalWorkTime,2,BigDecimal.ROUND_HALF_UP); - dto.setManAvgActual(manAvgActual.toString()); - // 人均效率达成率 实际人均效率/标准人均效率 - if(manAvgStandard!=null){ - BigDecimal manAvgDo = manAvgActual + realQua = parentMesReport.getQuantityFeedbackSum(); + workTime = parentMesReport.getWorkTime(); + dto.setQuantityAct(String.valueOf(sonMesReport.getQuantityFeedbackSum())); + dto.setQuantityFeedback(String.valueOf(realQua)); + dto.setWorkTime(workTime); + //实际用人 + useMan = sonMesReport.getUseMan().add(parentMesReport.getUseMan()).add(threeMesReport.getUseMan()); + dto.setUseMan(useMan); + totalWorkTime = sonMesReport.getTotalWorkTime().add(parentMesReport.getTotalWorkTime()).add(threeMesReport.getTotalWorkTime()); + } + dto.setTotalWorkTime(totalWorkTime.toString()); + // 订单完成率 实际产量/计划产量 + BigDecimal completeRate = new BigDecimal(realQua) .multiply(new BigDecimal("100.00")) - .divide(manAvgStandard,2,BigDecimal.ROUND_HALF_UP); - dto.setManAvgDo(manAvgDo.toString()+"%"); - }else{ - dto.setManAvgDo("0%"); + .divide(new BigDecimal(dto.getQuantitySplit()),2,BigDecimal.ROUND_HALF_UP); + dto.setCompleteRate(completeRate.toString()+"%"); + + //标准工时=母单数量*规格/产线标准效率 + BigDecimal workTimeStandard = BigDecimal.ZERO; + if(dto.getEfficiency() != null&&dto.getEfficiency().compareTo(BigDecimal.ZERO)!=0){ + workTimeStandard = new BigDecimal(realQua) + .multiply(new BigDecimal(dto.getSpec())) + .divide(dto.getEfficiency(),2,BigDecimal.ROUND_HALF_UP); + dto.setWorkTimeStandard(workTimeStandard.toString()); + }else{ + dto.setWorkTimeStandard("-"); + } + // 产线效率 标准工时/实际工时 + BigDecimal productivity = workTimeStandard + .multiply(new BigDecimal("100.00")) + .divide(workTime,2,BigDecimal.ROUND_HALF_UP); + dto.setProductivity(productivity.toString()+"%"); + // 标准人均效率 实际产量/标准用人/标准工时 + BigDecimal manAvgStandard = null; + if(StringUtils.isNotBlank(dto.getManStandard())){ + manAvgStandard = new BigDecimal(realQua) + .divide(new BigDecimal(dto.getManStandard()),4,BigDecimal.ROUND_HALF_UP) + .divide(workTimeStandard,2,BigDecimal.ROUND_HALF_UP); + dto.setManAvgStandard(manAvgStandard.toString()); + }else{ + dto.setManAvgStandard("0"); + } + // 实际人均效率 实际产量/总工时 + BigDecimal manAvgActual = new BigDecimal(realQua) + .divide(totalWorkTime,2,BigDecimal.ROUND_HALF_UP); + dto.setManAvgActual(manAvgActual.toString()); + // 人均效率达成率 实际人均效率/标准人均效率 + if(manAvgStandard!=null){ + BigDecimal manAvgDo = manAvgActual + .multiply(new BigDecimal("100.00")) + .divide(manAvgStandard,2,BigDecimal.ROUND_HALF_UP); + dto.setManAvgDo(manAvgDo.toString()+"%"); + }else{ + dto.setManAvgDo("0%"); + } } + // QuantityDto sonMesReport = mesReportWorkMapper.getSumQuantity(quantityDto); // if(sonMesReport == null){//单层工单的情况 // sonMesReport = mesReportWorkMapper.getSumQuantityOne(quantityDto); diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml index 6a37113a8..c35a93e59 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml @@ -878,15 +878,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"