From 959b9dbe19b1b2247d2e8889957637178a8c35d7 Mon Sep 17 00:00:00 2001 From: shaoyong Date: Fri, 31 May 2024 19:43:05 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E6=97=A5=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MesReportWorkController.java | 24 +- .../com/op/mes/domain/dto/QuantityDto.java | 51 +++ .../op/mes/mapper/MesReportWorkMapper.java | 10 + .../op/mes/service/IMesReportWorkService.java | 4 + .../impl/MesReportWorkServiceImpl.java | 93 +++++ .../mapper/mes/MesReportWorkMapper.xml | 53 +++ .../op/quality/domain/QcMarketFeedback.java | 360 ++++++++++++++++++ 7 files changed, 592 insertions(+), 3 deletions(-) create mode 100644 op-modules/op-mes/src/main/java/com/op/mes/domain/dto/QuantityDto.java create mode 100644 op-modules/op-quality/src/main/java/com/op/quality/domain/QcMarketFeedback.java diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java index ff0da372..5dceb088 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java @@ -22,9 +22,9 @@ import com.op.common.core.utils.uuid.IdUtils; import com.op.common.datasource.creator.DynamicDatasourceCreator; import com.op.mes.domain.*; import com.op.mes.domain.dto.LineChartDto; -import com.op.mes.domain.dto.LineChartSeriesDto; import com.op.mes.domain.dto.SysFactoryDto; import com.op.mes.domain.vo.DynamicColumnVo; +import com.op.mes.domain.vo.MesDailyReportVo; import com.op.system.api.domain.DataSourcePropertyDTO; import com.op.system.api.domain.SysUser; import com.op.system.api.domain.device.EquEquipmentDTO; @@ -228,15 +228,21 @@ public class MesReportWorkController extends BaseController { @RequiresPermissions("mes:dailyReport:list") @GetMapping("/getDailyReport") public TableDataInfo getDailyReport(MesDailyReport mesDailyReport) { - if(!StringUtils.isNotBlank(mesDailyReport.getWorkCenter())){ return null; } - startPage(); List list = mesReportWorkService.getDailyReport(mesDailyReport); return getDataTable(list); } + @RequiresPermissions("mes:dailyReport:list") + @GetMapping("/getDailyReportNew") + public TableDataInfo getDailyReportNew(MesDailyReportVo mesDailyReportVo) { + startPage(); + List list = mesReportWorkService.getDailyReportNew(mesDailyReportVo); + return getDataTable(list); + } + @RequiresPermissions("mes:dailyReport:list") @PostMapping("/getDailyReportExport") public void getDailyReportExport(HttpServletResponse response,MesDailyReport mesDailyReport) { @@ -246,6 +252,18 @@ public class MesReportWorkController extends BaseController { ExcelUtilDailyReport util = new ExcelUtilDailyReport(MesDailyReport.class); util.exportExcel(response, list, ymd+"生产日报表",titleName); } + @RequiresPermissions("mes:dailyReportNew:export") + @PostMapping("/getDailyReportNewExport") + public void getDailyReportNewExport(HttpServletResponse response,MesDailyReportVo mesDailyReportVo) { + List list = mesReportWorkService.getDailyReportNew(mesDailyReportVo); + String start = mesDailyReportVo.getProductDateStart(); + String end = mesDailyReportVo.getProductDateEnd(); + ExcelUtil util = new ExcelUtil<>(MesDailyReportVo.class); + util.exportExcel(response, list, start+"至"+end+"生产日报表"); + + } + + @GetMapping("/getWorkcenterList") public List getWorkcenterList(MesDailyReport mesDailyReport) { diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/QuantityDto.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/QuantityDto.java new file mode 100644 index 00000000..ad1001ab --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/QuantityDto.java @@ -0,0 +1,51 @@ +package com.op.mes.domain.dto; + +import java.math.BigDecimal; + +public class QuantityDto { + private Long quantityFeedbackSum; + private BigDecimal workTime; + private Long useMan; + private String workorderCode; + private String machineCode; + + public Long getQuantityFeedbackSum() { + return quantityFeedbackSum; + } + + public void setQuantityFeedbackSum(Long quantityFeedbackSum) { + this.quantityFeedbackSum = quantityFeedbackSum; + } + + public BigDecimal getWorkTime() { + return workTime; + } + + public void setWorkTime(BigDecimal workTime) { + this.workTime = workTime; + } + + public Long getUseMan() { + return useMan; + } + + public void setUseMan(Long useMan) { + this.useMan = useMan; + } + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public String getMachineCode() { + return machineCode; + } + + public void setMachineCode(String machineCode) { + this.machineCode = machineCode; + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java index 20f16bdb..794c561e 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java @@ -6,7 +6,9 @@ import java.util.Map; import com.op.mes.domain.*; import com.op.mes.domain.dto.LineChartSeriesDto; +import com.op.mes.domain.dto.QuantityDto; import com.op.mes.domain.dto.SysFactoryDto; +import com.op.mes.domain.vo.MesDailyReportVo; import com.op.system.api.domain.SysUser; import com.op.system.api.domain.device.EquEquipmentDTO; import com.op.system.api.domain.mes.ProOrderWorkorderDTO; @@ -82,6 +84,8 @@ public interface MesReportWorkMapper { String getTitleName(MesDailyReport mesDailyReport); + String getTitleNewName(MesDailyReportVo mesDailyReportVo); + List getWorkcenterList(MesDailyReport mesDailyReport); public void updateOrderWorkStatus(MesReportWork work); @@ -170,4 +174,10 @@ public interface MesReportWorkMapper { void updatePreReportAttr1(MesReportWork workOrder); MesReportWork getReportWorkHzAttr1(MesReportWork mesReportWork); + + List getDailyReportUp(MesDailyReportVo mesDailyReportVo); + + QuantityDto getRealQuantity(QuantityDto quantityDto); + + List getSumQuantity(QuantityDto quantityDto); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java index f2992d4a..70b4984e 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java @@ -11,6 +11,7 @@ import com.op.mes.domain.dto.LineChartDto; import com.op.mes.domain.dto.LineChartSeriesDto; import com.op.mes.domain.dto.SysFactoryDto; import com.op.mes.domain.vo.DynamicColumnVo; +import com.op.mes.domain.vo.MesDailyReportVo; import com.op.system.api.domain.SysUser; import com.op.system.api.domain.device.EquEquipmentDTO; import com.op.system.api.domain.dto.MesPrepareDetailDTO; @@ -78,6 +79,7 @@ public interface IMesReportWorkService { public List getDailyReport(MesDailyReport mesDailyReport); String getTitleName(MesDailyReport mesDailyReport); + String getTitleNewName(MesDailyReportVo mesDailyReportVo); List getWorkcenterList(MesDailyReport mesDailyReport); @@ -131,4 +133,6 @@ public interface IMesReportWorkService { int deleteReportNow(String reportCode); R preReportRow(MesReportWork mesReportWork); + + List getDailyReportNew(MesDailyReportVo mesDailyReportVo); } 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 5493cc9f..7ba5e147 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 @@ -20,8 +20,10 @@ import com.op.common.security.utils.SecurityUtils; import com.op.mes.domain.*; import com.op.mes.domain.dto.LineChartDto; import com.op.mes.domain.dto.LineChartSeriesDto; +import com.op.mes.domain.dto.QuantityDto; import com.op.mes.domain.dto.SysFactoryDto; import com.op.mes.domain.vo.DynamicColumnVo; +import com.op.mes.domain.vo.MesDailyReportVo; import com.op.mes.service.IWCSInterfaceService; import com.op.system.api.RemoteSapService; import com.op.system.api.domain.SysUser; @@ -37,6 +39,10 @@ import org.springframework.stereotype.Service; import com.op.mes.mapper.MesReportWorkMapper; import com.op.mes.service.IMesReportWorkService; import org.springframework.util.CollectionUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; /** * 报工报表Service业务层处理 @@ -399,12 +405,99 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { return dtos; } + @Override + @DS("#header.poolName") + public List getDailyReportNew(MesDailyReportVo mesDailyReportVo){ + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String key = "#header.poolName"; + String factoryCode = request.getHeader(key.substring(8)).replace("ds_", ""); + + List dtos = mesReportWorkMapper.getDailyReportUp(mesDailyReportVo); + + for (MesDailyReportVo dto : dtos) { + dto.setFactoryCode(factoryCode); + + QuantityDto quantityDto = new QuantityDto(); + String workorderCode = dto.getWorkorderCode(); + String machineCode = dto.getEquipmentCode(); + + quantityDto.setWorkorderCode(workorderCode); + quantityDto.setMachineCode(machineCode); + QuantityDto realQuantity = mesReportWorkMapper.getRealQuantity(quantityDto); + List sumQuantityList = mesReportWorkMapper.getSumQuantity(quantityDto); + QuantityDto sumQuantity = sumQuantityList.get(0); + + // 产量 + Long sumQua = 0L; + // 实际产量 + Long realQua = 0L; + // 实际工时 + BigDecimal workTime = BigDecimal.ZERO; + // 实际用人 + Long useMan = 0L; + if (realQuantity != null && sumQuantity != null) { + sumQua = sumQuantity.getQuantityFeedbackSum(); + realQua = realQuantity.getQuantityFeedbackSum(); + workTime = sumQuantity.getWorkTime(); + useMan = sumQuantity.getUseMan(); + dto.setQuantityAct(String.valueOf(sumQua)); + dto.setQuantityFeedback(String.valueOf(realQua)); + dto.setWorkTime(workTime); + dto.setManStandard(useMan.toString()); + + // 计算规格 + dto.setSpec(sumQua / realQua); + // 订单完成率 实际产量/计划产量 + 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 = new BigDecimal(sumQua) + .divide(dto.getEfficiency(),1,BigDecimal.ROUND_HALF_UP); + dto.setWorkTimeStandard(workTimeStandard.toString()); + // 产线效率 标准工时/实际工时 + BigDecimal productivity = workTimeStandard + .multiply(new BigDecimal("100.00")) + .divide(workTime,2,BigDecimal.ROUND_HALF_UP); + dto.setProductivity(productivity.toString()+"%"); + // 总工时 实际用人*实际工时 + BigDecimal totalWorkTime = new BigDecimal(useMan) + .multiply(workTime); + dto.setTotalWorkTime(totalWorkTime.toString()); + // 标准人均效率 实际产量/标准用人/标准工时 + BigDecimal manAvgStandard = new BigDecimal(realQua) + .divide(new BigDecimal(dto.getUseMan()),2,BigDecimal.ROUND_HALF_UP) + .divide(workTimeStandard,2,BigDecimal.ROUND_HALF_UP); + dto.setManAvgStandard(manAvgStandard.toString()); + // 实际人均效率 实际产量/总工时 + BigDecimal manAvgActual = new BigDecimal(realQua) + .divide(totalWorkTime,2,BigDecimal.ROUND_HALF_UP); + dto.setManAvgActual(manAvgActual.toString()); + // 人均效率达成率 标准人均效率/实际人均效率 + BigDecimal manAvgDo = manAvgStandard + .multiply(new BigDecimal("100.00")) + .divide(manAvgActual,2,BigDecimal.ROUND_HALF_UP); + dto.setManAvgDo(manAvgDo.toString()+"%"); + } + + } + + return dtos; + } + @Override @DS("#header.poolName") public String getTitleName(MesDailyReport mesDailyReport) { return mesReportWorkMapper.getTitleName(mesDailyReport); } + @Override + @DS("#header.poolName") + public String getTitleNewName(MesDailyReportVo mesDailyReportVo) { + return mesReportWorkMapper.getTitleNewName(mesDailyReportVo); + } + @Override @DS("#header.poolName") public List getWorkcenterList(MesDailyReport mesDailyReport) { 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 5a2fb1aa..7ebd9c15 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 @@ -281,6 +281,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + +