From f4ef6d1f4489e0d4cbba1845792945b924c16228 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 14 十月 2026 18:29:56 +0800
Subject: [PATCH] feat: 客户签订合同统计 + MES 首页质检合格率
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/home/MesHomeStatisticsServiceImpl.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 49 insertions(+), 0 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/home/MesHomeStatisticsServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/home/MesHomeStatisticsServiceImpl.java
index 5782ee8..474e9fd 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/home/MesHomeStatisticsServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/home/MesHomeStatisticsServiceImpl.java
@@ -11,6 +11,7 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -90,6 +91,23 @@
summary.setAndonActiveCount(homeStatisticsMapper.selectAndonActiveCount());
summary.setRepairActiveCount(homeStatisticsMapper.selectRepairActiveCount());
+ // 6. 璐ㄦ鍚堟牸鐜囷紙鏉ユ枡 / 杩囩▼ / 鍑鸿揣锛�
+ // 鏁伴噺鍙e緞 = 鍚堟牸鏁伴噺 / 妫�楠屾暟閲忥紱涓嶈繃婊ゅ崟鎹姸鎬侊紝涔熶笉鍋氭椂闂磋寖鍥撮檺鍒讹紙鍏ㄩ噺绱锛�
+ Map<String, Map<String, BigDecimal>> qcSummary = new HashMap<>();
+ for (Map<String, Object> row : homeStatisticsMapper.selectQcQualifiedSummary()) {
+ Map<String, BigDecimal> metrics = new HashMap<>();
+ metrics.put("checkQuantity", getDecimalFromObj(row.get("checkQuantity")));
+ metrics.put("qualifiedQuantity", getDecimalFromObj(row.get("qualifiedQuantity")));
+ qcSummary.put(String.valueOf(row.get("type")), metrics);
+ }
+ summary.setIqcQualifiedRate(calcQcQualifiedRate(qcSummary.get("IQC")));
+ summary.setIpqcQualifiedRate(calcQcQualifiedRate(qcSummary.get("IPQC")));
+ summary.setOqcQualifiedRate(calcQcQualifiedRate(qcSummary.get("OQC")));
+ // 涓変釜鐜妭鍚勮嚜鐨勬楠屾暟閲忓悎璁★紙鍚堟牸鐜囩殑鍒嗘瘝锛夛紝渚涘崱鐗囧壇琛屽睍绀烘牱鏈噺
+ summary.setIqcCheckQuantity(calcCheckQuantity(qcSummary.get("IQC")));
+ summary.setIpqcCheckQuantity(calcCheckQuantity(qcSummary.get("IPQC")));
+ summary.setOqcCheckQuantity(calcCheckQuantity(qcSummary.get("OQC")));
+
return summary;
}
@@ -165,4 +183,35 @@
return new BigDecimal(obj.toString());
}
+ /**
+ * 璁$畻璐ㄦ鍚堟牸鐜囷紙鐧惧垎姣旓紝淇濈暀涓や綅灏忔暟锛�
+ *
+ * 妫�楠屾暟閲忎负 0锛堝嵆娌℃湁宸插畬鎴愮殑璐ㄦ鍗曪級鏃惰繑鍥� null锛�
+ * 璁╅〉闈㈡樉绀恒�屸�斻�嶏紝鑰屼笉鏄瀵兼�х殑 0%銆�
+ */
+ private BigDecimal calcQcQualifiedRate(Map<String, BigDecimal> qcSummary) {
+ if (qcSummary == null) {
+ return null;
+ }
+ BigDecimal checkedQuantity = getDecimal(qcSummary, "checkQuantity");
+ if (checkedQuantity.compareTo(BigDecimal.ZERO) <= 0) {
+ return null;
+ }
+ return getDecimal(qcSummary, "qualifiedQuantity")
+ .multiply(BigDecimal.valueOf(100))
+ .divide(checkedQuantity, 2, RoundingMode.HALF_UP);
+ }
+
+ /**
+ * 鍙栬妫�楠岀幆鑺傜殑妫�楠屾暟閲忓悎璁★紙鍚堟牸鐜囩殑鍒嗘瘝锛屽嵆鍗$墖鍓灞曠ず鐨勬牱鏈噺锛�
+ *
+ * 璇ョ幆鑺傛病鏈変换浣曡川妫�鍗曟椂杩斿洖 0銆�
+ */
+ private Long calcCheckQuantity(Map<String, BigDecimal> qcSummary) {
+ if (qcSummary == null) {
+ return 0L;
+ }
+ return getDecimal(qcSummary, "checkQuantity").longValue();
+ }
+
}
--
Gitblit v1.9.3