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/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")