diff --git a/op-common/op-common-log/op-common-log.iml b/op-common/op-common-log/op-common-log.iml deleted file mode 100644 index dab4c8afe..000000000 --- a/op-common/op-common-log/op-common-log.iml +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/op-modules/op-energy/src/main/java/com/op/energy/record/service/impl/RecordDnbInstantServiceImpl.java b/op-modules/op-energy/src/main/java/com/op/energy/record/service/impl/RecordDnbInstantServiceImpl.java index ab7ed7bcf..3869ba53a 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/record/service/impl/RecordDnbInstantServiceImpl.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/record/service/impl/RecordDnbInstantServiceImpl.java @@ -18,6 +18,8 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 电实时数据Service业务层处理 @@ -133,28 +135,20 @@ public class RecordDnbInstantServiceImpl implements IRecordDnbInstantService { if (StringUtils.isEmpty(recordDnbInstant.getMonitorSubset())) { return recordDnbInstantMapper.instantList(new RecordDnbInstant()); } - List dnbInstantList = new ArrayList<>(); BaseMonitorInfo monitorInfo = new BaseMonitorInfo(); monitorInfo.setParentId(Long.valueOf(recordDnbInstant.getMonitorSubset())); monitorInfo.setParams(null); recordDnbInstant.setParams(null); List baseMonitorInfos = baseMonitorInfoService.selectBaseMonitorInfoList(monitorInfo); - for (BaseMonitorInfo baseMonitorInfo : baseMonitorInfos) { - RecordDnbInstant dnbInstant = new RecordDnbInstant(); - dnbInstant.setMonitorId(baseMonitorInfo.getMonitorId()); - dnbInstant.setMonitorName(baseMonitorInfo.getMonitorName()); - RecordDnbInstant baseDnbInstant = new RecordDnbInstant(); - baseDnbInstant.setMonitorSubset(baseMonitorInfo.getMonitorId()); - List dnbInstantListOld = recordDnbInstantMapper.instantList(baseDnbInstant); - if (dnbInstantListOld.size() > 0) { - BigDecimal zxyg = dnbInstantListOld.stream().map(RecordDnbInstant::getZxyg).reduce(BigDecimal.ZERO, BigDecimal::add); - Date collectTime = dnbInstantListOld.stream().map(RecordDnbInstant::getCollectTime).max(Date::compareTo).orElse(null); - dnbInstant.setZxyg(zxyg); - dnbInstant.setCollectTime(collectTime); - } - dnbInstantList.add(dnbInstant); + List monitorIdList = baseMonitorInfos.stream().map(BaseMonitorInfo::getMonitorId).collect(Collectors.toList()); + if (monitorIdList.size() > 0){ + RecordDnbInstant instant = new RecordDnbInstant(); + Map params = instant.getParams(); + params.put("monitorIdList", monitorIdList); + List dnbInstantList = recordDnbInstantMapper.instantList(instant); + return dnbInstantList; } - return dnbInstantList; + return null; } /** @@ -176,7 +170,9 @@ public class RecordDnbInstantServiceImpl implements IRecordDnbInstantService { baseDnbInstant.setParams(null); List baseMonitorInfos = baseMonitorInfoService.selectBaseMonitorInfoList(monitorInfo); if (baseMonitorInfos.size() > 0) { - List dnbInstantListOld = recordDnbInstantMapper.instantList(baseDnbInstant); + RecordDnbInstant instant = new RecordDnbInstant(); + instant.setMonitorId(baseDnbInstant.getMonitorSubset()); + List dnbInstantListOld = recordDnbInstantMapper.instantList(instant); dnbInstant.setMonitorId(baseMonitorInfos.get(0).getMonitorId()); dnbInstant.setMonitorName(baseMonitorInfos.get(0).getMonitorName()); if (dnbInstantListOld.size() > 0) { diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/controller/energyPreviewController.java b/op-modules/op-energy/src/main/java/com/op/energy/report/controller/energyPreviewController.java index 519fefafe..bf617cfa3 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/controller/energyPreviewController.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/controller/energyPreviewController.java @@ -1,7 +1,9 @@ package com.op.energy.report.controller; import com.op.common.core.web.controller.BaseController; +import com.op.common.core.web.domain.AjaxResult; import com.op.common.core.web.page.TableDataInfo; +import com.op.energy.report.domain.ReportOrderEnergyDTO; import com.op.energy.report.service.IEnergyPreviewService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -25,7 +27,6 @@ public class energyPreviewController extends BaseController { @Autowired private IEnergyPreviewService energyPreviewService; - /** * 电能源预览 * @@ -63,5 +64,52 @@ public class energyPreviewController extends BaseController { return prefix + "/waterIndex"; } + /** + * 产线能耗占比统计 + * @param paramMap + * @return + */ + @ResponseBody + @GetMapping("/productionLineEnergyConsumption") + public AjaxResult productionLineEnergyConsumption(@RequestParam(required = false) Map paramMap) { + Map result = energyPreviewService.productionLineEnergyConsumption(paramMap); + return AjaxResult.success(result); + } + + /** + * 耗能趋势分析 + * @param paramMap + * @return + */ + @ResponseBody + @GetMapping("/energyConsumptionTrendAnalysis") + public AjaxResult energyConsumptionTrendAnalysis(@RequestParam(required = false) Map paramMap) { + Map result = energyPreviewService.energyConsumptionTrendAnalysis(paramMap); + return AjaxResult.success(result); + } + + /** + * 产线单耗对比 + * @param energyDTO + * @return + */ + @ResponseBody + @GetMapping("/linesConsumptionComparison") + public AjaxResult linesConsumptionComparison(ReportOrderEnergyDTO energyDTO) { + Map result = energyPreviewService.linesConsumptionComparison(energyDTO); + return AjaxResult.success(result); + } + + /** + * 产品单耗对比 + * @param energyDTO + * @return + */ + @ResponseBody + @GetMapping("/productConsumptionComparison") + public AjaxResult productLinesConsumptionComparison(ReportOrderEnergyDTO energyDTO) { + Map result = energyPreviewService.productConsumptionComparison(energyDTO); + return AjaxResult.success(result); + } } diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/mapper/ReportPointDnbMapper.java b/op-modules/op-energy/src/main/java/com/op/energy/report/mapper/ReportPointDnbMapper.java index e6863d759..8c965c87d 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/mapper/ReportPointDnbMapper.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/mapper/ReportPointDnbMapper.java @@ -80,4 +80,10 @@ public interface ReportPointDnbMapper { List> energyStatisticsData(Map map); public List OrderEnergyList(ReportOrderEnergyDTO reportOrderEnergyDTO); + + List> productionLineEnergyConsumption(Map paramMap); + + List linesConsumptionComparison(ReportOrderEnergyDTO energyDTO); + + List productConsumptionComparison(ReportOrderEnergyDTO energyDTO); } diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/service/IEnergyPreviewService.java b/op-modules/op-energy/src/main/java/com/op/energy/report/service/IEnergyPreviewService.java index ab3d90b1a..77b0f3667 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/service/IEnergyPreviewService.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/service/IEnergyPreviewService.java @@ -1,5 +1,7 @@ package com.op.energy.report.service; +import com.op.energy.report.domain.ReportOrderEnergyDTO; + import java.util.List; import java.util.Map; @@ -77,4 +79,32 @@ public interface IEnergyPreviewService { * @return */ public List> energyConsumptionByTime(Map paramMap); + + /** + * 产线能耗占比统计 + * @param paramMap + * @return + */ + Map productionLineEnergyConsumption(Map paramMap); + + /** + * 耗能趋势分析 + * @param paramMap + * @return + */ + Map energyConsumptionTrendAnalysis(Map paramMap); + + /** + * 产线单耗对比 + * @param energyDTO + * @return + */ + Map linesConsumptionComparison(ReportOrderEnergyDTO energyDTO); + + /** + * 产品单耗对比 + * @param energyDTO + * @return + */ + Map productConsumptionComparison(ReportOrderEnergyDTO energyDTO); } diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/EnergyPreviewServiceImpl.java b/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/EnergyPreviewServiceImpl.java index 6a15e3912..095b3620d 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/EnergyPreviewServiceImpl.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/EnergyPreviewServiceImpl.java @@ -10,15 +10,25 @@ import com.op.energy.base.mapper.BaseTypeRelationMapper; import com.op.energy.base.service.IBaseMonitorInfoService; import com.op.energy.base.utils.DateUtils; import com.op.energy.base.utils.sortReportUitls; +import com.op.energy.record.domain.RecordDnbInstant; +import com.op.energy.record.mapper.RecordDnbInstantMapper; +import com.op.energy.report.domain.ReportOrderEnergyDTO; +import com.op.energy.report.domain.ReportPointDnb; +import com.op.energy.report.domain.ReportPointWater; import com.op.energy.report.mapper.ReportPointDnbMapper; import com.op.energy.report.mapper.ReportPointWaterMapper; +import com.op.energy.report.service.IDataAnalysisService; import com.op.energy.report.service.IEnergyPreviewService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import static com.op.energy.base.utils.DateUtils.YYYY_MM_DD_HH_MM_SS; /** * 水整点数据Service业务层处理 @@ -43,6 +53,9 @@ public class EnergyPreviewServiceImpl implements IEnergyPreviewService { @Autowired private BaseBuildInfoMapper baseBuildInfoMapper; + @Autowired + private RecordDnbInstantMapper recordDnbInstantMapper; + /** * 电能源预览返回数据 * @@ -615,4 +628,217 @@ public class EnergyPreviewServiceImpl implements IEnergyPreviewService { result.put("valueList", valueList); return result; } + + /** + * 产线能耗占比统计 + * + * @param paramMap + * @return + */ + @Override + @DS("#header.poolName") + public Map productionLineEnergyConsumption(Map paramMap) { + HashMap result = new HashMap<>(); + List> energyList = reportPointDnbMapper.productionLineEnergyConsumption(paramMap); + result.put("energyList", energyList); + return result; + } + + /** + * 耗能趋势分析 + * + * @param paramMap + * @return + */ + @Override + @DS("#header.poolName") + public Map energyConsumptionTrendAnalysis(Map paramMap) { + HashMap result = new HashMap<>(); + List> energyList = new ArrayList<>(); + List timeList = new ArrayList<>(); + List monitorIdLists = new ArrayList<>(); + LinkedHashMap> monitorInfoMap = new LinkedHashMap<>(); + if (!paramMap.containsKey("type") || !paramMap.containsKey("energyType") || + String.valueOf(paramMap.get("startTime")).equals("") || String.valueOf(paramMap.get("endTime")).equals("")) { + return result; + } + String energyType = String.valueOf(paramMap.get("energyType")); + //小时 天 月 年 + String type = String.valueOf(paramMap.get("type")); + BaseBuildInfo baseBuildInfo = new BaseBuildInfo(); + List buildInfoList = baseBuildInfoMapper.selectBaseBuildInfoList(baseBuildInfo); + if (paramMap.containsKey("monitorIds")) { + String monitorIds = String.valueOf(paramMap.get("monitorIds")); + if (monitorIds.contains(",")) { + monitorIdLists = Arrays.stream(monitorIds.split(",")) + .map(String::trim) + .map(Long::valueOf) + .collect(Collectors.toList()); + } else { + if (!monitorIds.isEmpty()) { + monitorIdLists.add(Long.parseLong(monitorIds)); + } + } + } + + switch (type) { + case "month": + timeList = DateUtils.getSortedMonthList(DateUtils.getDatesBetween(String.valueOf(paramMap.get("startTime")), String.valueOf(paramMap.get("endTime"))), type); + break; + case "year": + timeList = DateUtils.getSortedMonthList(DateUtils.getDatesBetween(String.valueOf(paramMap.get("startTime")), String.valueOf(paramMap.get("endTime"))), type); + break; + case "hour": + timeList = DateUtils.getHourlyIntervals(String.valueOf(paramMap.get("startTime")), String.valueOf(paramMap.get("endTime"))); + break; + case "day": + timeList = DateUtils.getDatesBetween(String.valueOf(paramMap.get("startTime")), String.valueOf(paramMap.get("endTime"))); + break; + } + List> lists = new ArrayList<>(); + for (Long buildOId : monitorIdLists) { + List monitorValueList = new ArrayList<>(); + List monitorNameList = buildInfoList.stream().filter(e -> e.getObjid().equals(buildOId)) + .map(BaseBuildInfo::getBuildName).collect(Collectors.toList()); + + BaseTypeRelation relation = new BaseTypeRelation(); + relation.setType(0L); + relation.setRelationId(buildOId); + List baseTypeRelations = baseTypeRelationMapper.selectBaseTypeRelationList(relation); + List collect = baseTypeRelations.stream().map(BaseTypeRelation::getMonitorId).collect(Collectors.toList()); + paramMap.put("monitorIdList", collect); + if (energyType.equals("2")) { + ReportPointDnb pointDnb = new ReportPointDnb(); + pointDnb.setParams(paramMap); + List pointDnbList = reportPointDnbMapper.selectReportPointDnbList(pointDnb); + for (ReportPointDnb reportPointDnb : pointDnbList) { + Map map = new HashMap<>(); + map.put("recordTime", DateUtils.parseDateToStr("yyyy-MM-dd HH", reportPointDnb.getBeginTime())); + map.put("expend", reportPointDnb.getExpend().toString()); + energyList.add(map); + } + } else if (energyType.equals("3")) { + ReportPointWater reportPointWater = new ReportPointWater(); + reportPointWater.setParams(paramMap); + List reportPointWaters = reportPointWaterMapper.selectReportPointWaterList(reportPointWater); + for (ReportPointWater pointWater : reportPointWaters) { + Map map = new HashMap<>(); + map.put("recordTime", DateUtils.parseDateToStr("yyyy-MM-dd HH", pointWater.getBeginTime())); + map.put("expend", pointWater.getExpend().toString()); + energyList.add(map); + } + } + timeList.forEach(date -> { + float expend = 0.00f; + for (Map map : energyList) { + String recordTime = String.valueOf(map.get("recordTime")); + if (type.equals("month")) { + recordTime = recordTime.substring(0, 7); + } else if (type.equals("year")) { + recordTime = recordTime.substring(0, 4); + } else if (type.equals("hour")) { + date = date.substring(0, 13); + } else if (type.equals("day")) { + recordTime = recordTime.substring(0, 10); + } + if (date.equals(recordTime)) { + expend += Float.parseFloat(String.valueOf(map.get("expend"))); + } + } + BigDecimal decimal = new BigDecimal(Float.toString(expend)); + decimal = decimal.setScale(2, RoundingMode.HALF_UP); + monitorValueList.add(decimal.floatValue()); + }); + if (monitorNameList.size() != 0) { + monitorInfoMap.put(monitorNameList.get(0), monitorValueList); + } + lists.add(monitorValueList); + } + if (lists.size() != 0) { + List sumLineList = IntStream.range(0, lists.get(0).size()) + .mapToObj(i -> lists.stream() + .map(list -> list.get(i)) + .reduce(0f, Float::sum)) + .map(f -> Math.round(f * 100.0) / 100.0f) + .collect(Collectors.toList()); + result.put("sumLineList", sumLineList); + } + List monitorNameList = new ArrayList<>(); + for (String monitorName : monitorInfoMap.keySet()) { + monitorNameList.add(monitorName); + } + result.put("monitorNameList", monitorNameList); + result.put("timeList", timeList); + result.put("monitorInfoMap", monitorInfoMap); + return result; + } + + /** + * 产线单耗对比 + * + * @param energyDTO + * @return + */ + @Override + @DS("#header.poolName") + public Map linesConsumptionComparison(ReportOrderEnergyDTO energyDTO) { + HashMap result = new HashMap<>(); + LinkedHashMap dataMap = new LinkedHashMap<>(); + List reportOrderEnergyDTOList = reportPointDnbMapper.linesConsumptionComparison(energyDTO); + if (reportOrderEnergyDTOList != null && reportOrderEnergyDTOList.size() > 0) { + for (ReportOrderEnergyDTO orderEnergyDTO : reportOrderEnergyDTOList) { + RecordDnbInstant recordDnbInstant = new RecordDnbInstant(); + String startWorkTime = DateUtils.parseDateToStr(YYYY_MM_DD_HH_MM_SS, orderEnergyDTO.getStartWorkTime()); + String endWorkTime = DateUtils.parseDateToStr(YYYY_MM_DD_HH_MM_SS, orderEnergyDTO.getEndWorkTime()); + String electricityNo = orderEnergyDTO.getElectricityNo(); + Map map = new HashMap<>(); + recordDnbInstant.setMonitorId(electricityNo); + map.put("beginCollectTime", startWorkTime); + map.put("endCollectTime", endWorkTime); + recordDnbInstant.setParams(map); + List recordDnbInstantList = recordDnbInstantMapper.selectRecordDnbInstantByTime(recordDnbInstant); + if (recordDnbInstantList.size() == 2) { + BigDecimal kw = recordDnbInstantList.get(0).getKw().subtract(recordDnbInstantList.get(1).getKw()).abs(); + BigDecimal decimal = kw.divide(new BigDecimal(orderEnergyDTO.getTotalQuantityFeedback()), 2, RoundingMode.HALF_UP); + dataMap.put(orderEnergyDTO.getEquipmentName(), decimal); + } + } + } + result.put("data", dataMap); + return result; + } + + /** + * 产品单耗对比 + * @param energyDTO + * @return + */ + @Override + @DS("#header.poolName") + public Map productConsumptionComparison(ReportOrderEnergyDTO energyDTO) { + HashMap result = new HashMap<>(); + LinkedHashMap dataMap = new LinkedHashMap<>(); + List reportOrderEnergyDTOList = reportPointDnbMapper.productConsumptionComparison(energyDTO); + if (reportOrderEnergyDTOList != null && reportOrderEnergyDTOList.size() > 0) { + for (ReportOrderEnergyDTO orderEnergyDTO : reportOrderEnergyDTOList) { + RecordDnbInstant recordDnbInstant = new RecordDnbInstant(); + String startWorkTime = DateUtils.parseDateToStr(YYYY_MM_DD_HH_MM_SS, orderEnergyDTO.getStartWorkTime()); + String endWorkTime = DateUtils.parseDateToStr(YYYY_MM_DD_HH_MM_SS, orderEnergyDTO.getEndWorkTime()); + String electricityNo = orderEnergyDTO.getElectricityNo(); + Map map = new HashMap<>(); + recordDnbInstant.setMonitorId(electricityNo); + map.put("beginCollectTime", startWorkTime); + map.put("endCollectTime", endWorkTime); + recordDnbInstant.setParams(map); + List recordDnbInstantList = recordDnbInstantMapper.selectRecordDnbInstantByTime(recordDnbInstant); + if (recordDnbInstantList.size() == 2) { + BigDecimal kw = recordDnbInstantList.get(0).getKw().subtract(recordDnbInstantList.get(1).getKw()).abs(); + BigDecimal decimal = kw.divide(new BigDecimal(orderEnergyDTO.getTotalQuantityFeedback()), 2, RoundingMode.HALF_UP); + dataMap.put(orderEnergyDTO.getProductName(), decimal); + } + } + } + result.put("data", dataMap); + return result; + } } diff --git a/op-modules/op-energy/src/main/resources/mapper/record/RecordDnbInstantMapper.xml b/op-modules/op-energy/src/main/resources/mapper/record/RecordDnbInstantMapper.xml index 88af389ac..24d81a2fb 100644 --- a/op-modules/op-energy/src/main/resources/mapper/record/RecordDnbInstantMapper.xml +++ b/op-modules/op-energy/src/main/resources/mapper/record/RecordDnbInstantMapper.xml @@ -41,7 +41,7 @@ WITH OrderedRecords AS ( SELECT rdi.*, - rdi.zxyg * bmi.ct AS kw, + rdi.zxyg * isnull(bmi.ct,1) AS kw, bmi.ct, ROW_NUMBER() OVER (ORDER BY rdi.collect_time ASC) AS RowAsc, ROW_NUMBER() OVER (ORDER BY rdi.collect_time DESC) AS RowDesc diff --git a/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml b/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml index cdda26d6c..cc24ed710 100644 --- a/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml +++ b/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml @@ -380,4 +380,74 @@ + + + + + diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/H5ApiController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/H5ApiController.java index 377a0eca7..c9c871201 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/H5ApiController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/H5ApiController.java @@ -3,7 +3,10 @@ package com.op.mes.controller; import com.op.mes.domain.EnergyExpend; import com.op.mes.domain.H5; +import com.op.mes.domain.MesDailyReport; +import com.op.mes.domain.vo.MesDailyReportVo; import com.op.mes.service.H5ApiService; +import com.op.mes.service.IMesReportWorkService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -14,6 +17,8 @@ import javax.validation.constraints.Max; import java.util.List; import java.util.Map; +import static com.op.common.core.utils.PageUtils.startPage; + /** * H5接口 * @@ -26,12 +31,13 @@ public class H5ApiController { @Autowired private H5ApiService h5ApiService; - + @Autowired + private IMesReportWorkService mesReportWorkService; @GetMapping("/dailyProductDetil") - public List
list(H5 h5) + public List list(MesDailyReportVo mesDailyReportVo) { - String workTime=h5.getFeedbackTime(); - List
list = h5ApiService.dailyProductDetil(workTime); + startPage(); + List list = mesReportWorkService.getDailyReportNew(mesDailyReportVo); return list; } //能源数据 diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/H5.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/H5.java index 4681d0e3d..18b08a018 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/H5.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/H5.java @@ -1,6 +1,10 @@ package com.op.mes.domain; -public class H5 { +import com.op.common.core.web.domain.BaseEntity; + +import java.util.List; + +public class H5 extends BaseEntity { private String workOrderCode; private String lineName; private String productName; @@ -20,6 +24,16 @@ public class H5 { private String reason; private String shift; + private List
children; + + public List
getChildren() { + return children; + } + + public void setChildren(List
children) { + this.children = children; + } + public String getShift() { return shift; } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/H5ApiService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/H5ApiService.java index d3301bad0..e8bbdc556 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/H5ApiService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/H5ApiService.java @@ -6,7 +6,7 @@ import java.util.List; import java.util.Map; public interface H5ApiService { - List
dailyProductDetil(String workTime); +// List
dailyProductDetil(String workTime); List EnergyExpend(); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IWcsPrintTaskService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IWcsPrintTaskService.java new file mode 100644 index 000000000..dcab15ff8 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IWcsPrintTaskService.java @@ -0,0 +1,61 @@ +package com.op.mes.service; + +import java.util.List; +import com.op.mes.domain.WcsPrintTask; + +/** + * 生产箱码和托盘绑定关系Service接口 + * + * @author ruoyi + * @date 2025-04-24 + */ +public interface IWcsPrintTaskService +{ + /** + * 查询生产箱码和托盘绑定关系 + * + * @param id 生产箱码和托盘绑定关系主键 + * @return 生产箱码和托盘绑定关系 + */ + public WcsPrintTask selectWcsPrintTaskById(String id); + + /** + * 查询生产箱码和托盘绑定关系列表 + * + * @param wcsPrintTask 生产箱码和托盘绑定关系 + * @return 生产箱码和托盘绑定关系集合 + */ + public List selectWcsPrintTaskList(WcsPrintTask wcsPrintTask); + + /** + * 新增生产箱码和托盘绑定关系 + * + * @param wcsPrintTask 生产箱码和托盘绑定关系 + * @return 结果 + */ + public int insertWcsPrintTask(WcsPrintTask wcsPrintTask); + + /** + * 修改生产箱码和托盘绑定关系 + * + * @param wcsPrintTask 生产箱码和托盘绑定关系 + * @return 结果 + */ + public int updateWcsPrintTask(WcsPrintTask wcsPrintTask); + + /** + * 批量删除生产箱码和托盘绑定关系 + * + * @param ids 需要删除的生产箱码和托盘绑定关系主键集合 + * @return 结果 + */ + public int deleteWcsPrintTaskByIds(String[] ids); + + /** + * 删除生产箱码和托盘绑定关系信息 + * + * @param id 生产箱码和托盘绑定关系主键 + * @return 结果 + */ + public int deleteWcsPrintTaskById(String id); +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/H5ApiServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/H5ApiServiceImpl.java index 57beb555e..6714557ff 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/H5ApiServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/H5ApiServiceImpl.java @@ -4,11 +4,15 @@ package com.op.mes.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.mes.domain.EnergyExpend; import com.op.mes.domain.H5; +import com.op.mes.domain.MesDailyReport; import com.op.mes.mapper.H5ApiMapper; +import com.op.mes.mapper.MesReportWorkMapper; import com.op.mes.service.H5ApiService; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -23,142 +27,155 @@ import java.util.stream.Collectors; public class H5ApiServiceImpl implements H5ApiService { @Autowired private H5ApiMapper h5ApiMapper; + @Autowired + private MesReportWorkMapper mesReportWorkMapper; +// @Override +// @DS("#header.poolName") +// public List dailyProductDetil(String workTime) { +// +// - @Override - @DS("#header.poolName") - public List
dailyProductDetil(String workTime) { //查询当天的生产情况 - H5 h5=new H5(); - h5.setFeedbackTime(workTime); - //报工信息 - List
h5List=h5ApiMapper.selectMesLineProdceList(h5); - //报工信息处理 - //母单报工数据 - List
filteredList = h5List.stream() - .filter(h5s -> "0".equals(h5s.getParentOrder())) - .collect(Collectors.toList()); - //子单报工数据 - List
filteredLists = h5List.stream() - .filter(h5s -> !"0".equals(h5s.getParentOrder())) - .collect(Collectors.toList()); - // 按照 workOrderCode 分组,并计算各个字段的统计值 - List
resultList = filteredList.stream() - .collect(Collectors.groupingBy( - H5::getWorkOrderCode, // 按 workOrderCode 分组 - Collectors.collectingAndThen( - Collectors.toList(), - list -> { - double averageStandardStaffing = list.stream() - .collect(Collectors.averagingDouble(H5::getStandardStaffing)); - double averageActualEmployment = list.stream() - .collect(Collectors.averagingDouble(H5::getActualEmployment)); - double totalProductionDuration = list.stream() - .collect(Collectors.summingDouble(H5::getProductionDuration)); - double totalPlanProduction = list.stream() - .collect(Collectors.summingDouble(H5::getPlanProduction)); - double totalProduction = list.stream() - .collect(Collectors.summingDouble(H5::getProduction)); - - H5 resultH5 = new H5(); - resultH5.setWorkOrderCode(list.get(0).getWorkOrderCode()); // 设置 workOrderCode - resultH5.setLineName(list.get(0).getLineName()); - resultH5.setProductName(list.get(0).getProductName()); - resultH5.setCategory(list.get(0).getCategory()); - resultH5.setSpecifications(list.get(0).getSpecifications()); - resultH5.setStandardEfficiency(list.get(0).getStandardEfficiency()); - resultH5.setActualEmployment(averageActualEmployment); - resultH5.setStandardStaffing((int) Math.round(averageStandardStaffing)); // 计算的平均值 - resultH5.setProductionDuration(totalProductionDuration); // 总和 - resultH5.setPlanProduction((int) Math.round(totalPlanProduction)); // 总和 - resultH5.setProduction((int) Math.round(totalProduction)); // 总和 - resultH5.setReason(list.get(0).getReason()); - resultH5.setShift(list.get(0).getShift()); - return resultH5; - } - ) - )) - .values() - .stream() - .collect(Collectors.toList()); - - List
resultLists = filteredLists.stream() - .collect(Collectors.groupingBy( - H5::getWorkOrderCode, // 按 workOrderCode 分组 - Collectors.collectingAndThen( - Collectors.toList(), - list -> { - double averageActualEmployment =Math.round(list.stream() - .collect(Collectors.averagingDouble(H5::getActualEmployment))); - H5 resultH5 = new H5(); - resultH5.setWorkOrderCode(list.get(0).getWorkOrderCode()); // 设置 workOrderCode - resultH5.setActualEmployment(averageActualEmployment); - resultH5.setParentOrder(list.get(0).getParentOrder()); - return resultH5; - } - ) - )) - .values() - .stream() - .collect(Collectors.toList()); - - // 将 resultLists 转换为 Map,以便快速查找 - Map parentOrderToH5Map = resultLists.stream() - .collect(Collectors.toMap( - H5::getParentOrder, - h5s -> h5s - )); - - // 更新 resultList 中的 actualEmployment - // 更新 resultList 中的 actualEmployment - resultList.forEach(h51 -> { - H5 matchingH52 = parentOrderToH5Map.get(h51.getWorkOrderCode()); - if (matchingH52 != null) { - h51.setActualEmployment(matchingH52.getActualEmployment()); - } - }); - // 更新 actualEfficiency 为百分比形式,保留一位小数 - resultList.forEach(h5a -> { - double production = h5a.getProduction(); - double productionDuration = h5a.getProductionDuration(); - double actualEmployment = h5a.getActualEmployment(); - double standardEfficiency=h5a.getStandardEfficiency(); - // 避免除以零的情况 - if (productionDuration != 0 && actualEmployment != 0) { - double actualEfficiency = production / productionDuration / actualEmployment; - actualEfficiency = Math.round(actualEfficiency * 10.0) / 10.0; - h5a.setActualEfficiency(actualEfficiency); - String efficiencyAcRate = String.format("%.1f%%", (actualEfficiency/standardEfficiency)*100); // 格式化为百分比形式 - h5a.setEfficiencyAcRate(efficiencyAcRate); // 设置百分比形式 - } else { - h5a.setEfficiencyAcRate("0.0%"); // 或者设为其他默认值 - } - }); - - resultList.stream() - .forEach(h5a -> { - double production = h5a.getProduction(); - double productionDuration = h5a.getProductionDuration(); - double actualEmployment = h5a.getActualEmployment(); - double standardEfficiency = h5a.getStandardEfficiency(); - - // Avoid division by zero - if (productionDuration != 0 && actualEmployment != 0) { - double actualEfficiency = production / productionDuration / actualEmployment; - actualEfficiency = Math.round(actualEfficiency * 10.0) / 10.0; - h5a.setActualEfficiency(actualEfficiency); - - // Format efficiency as a percentage - String efficiencyAcRate = String.format("%.1f%%", (actualEfficiency / standardEfficiency) * 100); - h5a.setEfficiencyAcRate(efficiencyAcRate); - } else { - h5a.setEfficiencyAcRate("0.0%"); - } - }); +// H5 h5=new H5(); +// h5.setFeedbackTime(workTime); - return resultList; - } + +// //报工信息 +// List
h5List=h5ApiMapper.selectMesLineProdceList(h5); +//// List
resultList = new ArrayList<>(); +//// if (h5List != null && h5List.size() >0){ +//// resultList = filterParentWithChildren(h5List); +//// } +// +// +// //报工信息处理 +// //母单报工数据 +// List
filteredList = h5List.stream() +// .filter(h5s -> "0".equals(h5s.getParentOrder())) +// .collect(Collectors.toList()); +// //子单报工数据 +// List
filteredLists = h5List.stream() +// .filter(h5s -> !"0".equals(h5s.getParentOrder())) +// .collect(Collectors.toList()); +// // 按照 workOrderCode 分组,并计算各个字段的统计值 +// List
resultList = filteredList.stream() +// .collect(Collectors.groupingBy( +// H5::getWorkOrderCode, // 按 workOrderCode 分组 +// Collectors.collectingAndThen( +// Collectors.toList(), +// list -> { +// double averageStandardStaffing = list.stream() +// .collect(Collectors.averagingDouble(H5::getStandardStaffing)); +// double averageActualEmployment = list.stream() +// .collect(Collectors.averagingDouble(H5::getActualEmployment)); +// double totalProductionDuration = list.stream() +// .collect(Collectors.summingDouble(H5::getProductionDuration)); +// double totalPlanProduction = list.stream() +// .collect(Collectors.summingDouble(H5::getPlanProduction)); +// double totalProduction = list.stream() +// .collect(Collectors.summingDouble(H5::getProduction)); +// +// H5 resultH5 = new H5(); +// resultH5.setWorkOrderCode(list.get(0).getWorkOrderCode()); // 设置 workOrderCode +// resultH5.setLineName(list.get(0).getLineName()); +// resultH5.setProductName(list.get(0).getProductName()); +// resultH5.setCategory(list.get(0).getCategory()); +// resultH5.setSpecifications(list.get(0).getSpecifications()); +// resultH5.setStandardEfficiency(list.get(0).getStandardEfficiency()); +// resultH5.setActualEmployment(averageActualEmployment); +// resultH5.setStandardStaffing((int) Math.round(averageStandardStaffing)); // 计算的平均值 +// resultH5.setProductionDuration(totalProductionDuration); // 总和 +// resultH5.setPlanProduction((int) Math.round(totalPlanProduction)); // 总和 +// resultH5.setProduction((int) Math.round(totalProduction)); // 总和 +// resultH5.setReason(list.get(0).getReason()); +// resultH5.setShift(list.get(0).getShift()); +// return resultH5; +// } +// ) +// )) +// .values() +// .stream() +// .collect(Collectors.toList()); +// +// List
resultLists = filteredLists.stream() +// .collect(Collectors.groupingBy( +// H5::getWorkOrderCode, // 按 workOrderCode 分组 +// Collectors.collectingAndThen( +// Collectors.toList(), +// list -> { +// double averageActualEmployment =Math.round(list.stream() +// .collect(Collectors.averagingDouble(H5::getActualEmployment))); +// H5 resultH5 = new H5(); +// resultH5.setWorkOrderCode(list.get(0).getWorkOrderCode()); // 设置 workOrderCode +// resultH5.setActualEmployment(averageActualEmployment); +// resultH5.setParentOrder(list.get(0).getParentOrder()); +// return resultH5; +// } +// ) +// )) +// .values() +// .stream() +// .collect(Collectors.toList()); +// +// // 将 resultLists 转换为 Map,以便快速查找 +// Map parentOrderToH5Map = resultLists.stream() +// .collect(Collectors.toMap( +// H5::getParentOrder, +// h5s -> h5s +// )); +// +// // 更新 resultList 中的 actualEmployment +// resultList.forEach(h51 -> { +// H5 matchingH52 = parentOrderToH5Map.get(h51.getWorkOrderCode()); +// if (matchingH52 != null) { +// h51.setActualEmployment(matchingH52.getActualEmployment()); +// } +// }); +// // 更新 actualEfficiency 为百分比形式,保留一位小数 +// resultList.forEach(h5a -> { +// double production = h5a.getProduction(); +// double productionDuration = h5a.getProductionDuration(); +// double actualEmployment = h5a.getActualEmployment(); +// double standardEfficiency=h5a.getStandardEfficiency(); +// // 避免除以零的情况 +// if (productionDuration != 0 && actualEmployment != 0) { +// double actualEfficiency = production / productionDuration / actualEmployment; +// actualEfficiency = Math.round(actualEfficiency * 10.0) / 10.0; +// h5a.setActualEfficiency(actualEfficiency); +// String efficiencyAcRate = String.format("%.1f%%", (actualEfficiency/standardEfficiency)*100); // 格式化为百分比形式 +// h5a.setEfficiencyAcRate(efficiencyAcRate); // 设置百分比形式 +// } else { +// h5a.setEfficiencyAcRate("0.0%"); // 或者设为其他默认值 +// } +// }); +// +// resultList.stream() +// .forEach(h5a -> { +// double production = h5a.getProduction(); +// double productionDuration = h5a.getProductionDuration(); +// double actualEmployment = h5a.getActualEmployment(); +// double standardEfficiency = h5a.getStandardEfficiency(); +// +// // Avoid division by zero +// if (productionDuration != 0 && actualEmployment != 0) { +// double actualEfficiency = production / productionDuration / actualEmployment; +// actualEfficiency = Math.round(actualEfficiency * 10.0) / 10.0; +// h5a.setActualEfficiency(actualEfficiency); +// +// // Format efficiency as a percentage +// String efficiencyAcRate = String.format("%.1f%%", (actualEfficiency / standardEfficiency) * 100); +// h5a.setEfficiencyAcRate(efficiencyAcRate); +// } else { +// h5a.setEfficiencyAcRate("0.0%"); +// } +// }); +// +// +// return resultList; +// } + @Override @DS("#header.poolName") diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesInspectionReportMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesInspectionReportMapper.xml index f850f1891..32c21d684 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesInspectionReportMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesInspectionReportMapper.xml @@ -171,33 +171,26 @@