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 3c900f71a..0ac9de68a 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
@@ -7,13 +7,13 @@ public class H5 {
private String category;
private String specifications;
private int StandardStaffing;
- private int actualEmployment;
- private String productionDuration;
+ private Double actualEmployment;
+ private Double productionDuration;
private int planProduction;
private int production;
private String hourlyProduction;
- private String standardEfficiency;
- private String actualEfficiency;
+ private double standardEfficiency;
+ private double actualEfficiency;
private String efficiencyAcRate;
private String feedbackTime;
private String parentOrder;
@@ -91,19 +91,19 @@ public class H5 {
StandardStaffing = standardStaffing;
}
- public int getActualEmployment() {
+ public Double getActualEmployment() {
return actualEmployment;
}
- public void setActualEmployment(int actualEmployment) {
+ public void setActualEmployment(Double actualEmployment) {
this.actualEmployment = actualEmployment;
}
- public String getProductionDuration() {
+ public Double getProductionDuration() {
return productionDuration;
}
- public void setProductionDuration(String productionDuration) {
+ public void setProductionDuration(Double productionDuration) {
this.productionDuration = productionDuration;
}
@@ -123,19 +123,19 @@ public class H5 {
this.hourlyProduction = hourlyProduction;
}
- public String getStandardEfficiency() {
+ public double getStandardEfficiency() {
return standardEfficiency;
}
- public void setStandardEfficiency(String standardEfficiency) {
+ public void setStandardEfficiency(double standardEfficiency) {
this.standardEfficiency = standardEfficiency;
}
- public String getActualEfficiency() {
+ public double getActualEfficiency() {
return actualEfficiency;
}
- public void setActualEfficiency(String actualEfficiency) {
+ public void setActualEfficiency(double actualEfficiency) {
this.actualEfficiency = actualEfficiency;
}
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 ee937e5a1..2b7fd664c 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
@@ -24,8 +24,109 @@ public class H5ApiServiceImpl implements H5ApiService {
//查询当天的生产情况
H5 h5=new H5();
h5.setFeedbackTime(workTime);
- //母单报工信息
+ //报工信息
List
h5List=h5ApiMapper.selectMesLineProdceList(h5);
- return 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)); // 总和
+ return resultH5;
+ }
+ )
+ ))
+ .values()
+ .stream()
+ .collect(Collectors.toList());
+
+ List resultLists = filteredLists.stream()
+ .collect(Collectors.groupingBy(
+ H5::getWorkOrderCode, // 按 workOrderCode 分组
+ Collectors.collectingAndThen(
+ Collectors.toList(),
+ list -> {
+ double averageActualEmployment = 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%"); // 或者设为其他默认值
+ }
+ });
+
+ return resultList;
}
+
}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorksServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorksServiceImpl.java
index 3f73bc183..a2a860a71 100644
--- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorksServiceImpl.java
+++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorksServiceImpl.java
@@ -25,9 +25,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
@@ -100,7 +99,6 @@ public class MesReportWorksServiceImpl implements IMesReportWorksService {
SysNoticeGroup noticeQo = new SysNoticeGroup();
//取模板
noticeQo.setNoticeId(23L);
-
List notices = mesReportWorkMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List wecharts = new ArrayList<>();
@@ -108,12 +106,20 @@ public class MesReportWorksServiceImpl implements IMesReportWorksService {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticedto.getWxId());
String contentInfo = noticedto.getNoticeContent();
- contentInfo = contentInfo.replace("${ymd}", DateUtils.getDate())
+ // 定义格式化日期的格式
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+
+ // 获取当前日期
+ Calendar calendar = Calendar.getInstance();
+ // 将日期设置为前一天
+ calendar.add(Calendar.DATE, -1);
+ Date yesterday = calendar.getTime();
+
+ // 格式化前一天的日期
+ String currentDate = dateFormat.format(yesterday);
+ contentInfo = contentInfo.replace("${ymd}", currentDate)
.replace("${factory}", prowork.getFactoryCode())
.replace("${carName}", prowork.getWorkorderName());
-
- Matcher m = p2.matcher(contentInfo);
- contentInfo = m.replaceAll("");
wechart0.setText(contentInfo);
wecharts.add(wechart0);
}
diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/H5ApiMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/H5ApiMapper.xml
index 1008e9e8e..95d89ccc7 100644
--- a/op-modules/op-mes/src/main/resources/mapper/mes/H5ApiMapper.xml
+++ b/op-modules/op-mes/src/main/resources/mapper/mes/H5ApiMapper.xml
@@ -20,86 +20,30 @@