Browse Source

质检列表数据重量用新公式计算

lingpeng.li 1 week ago
parent
commit
8551fb50ff

+ 15 - 27
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/billetOriginalProductRecord/service/impl/BilletOriginalProductRecordServiceImpl.java

@@ -146,6 +146,13 @@ public class BilletOriginalProductRecordServiceImpl extends ServiceImpl<BilletOr
         int dayTotalCount = 0;
         BigDecimal dayTotalWeight = BigDecimal.ZERO;
 
+        // 获取米重数据
+        String meterWeightKey = String.format("ccmno:meter:weight:%s", queryDTO.getCcmNo());
+        String mWeightStr = oConvertUtils.getString(redisTemplate.opsForValue().get(meterWeightKey));
+        BigDecimal meterWeightFactor = StringUtils.isNotEmpty(mWeightStr)
+                ? new BigDecimal(mWeightStr)
+                : BigDecimal.ONE;
+
         boolean isFirst = true;
 
         for (BilletOriginalProductRecord record : records) {
@@ -202,24 +209,13 @@ public class BilletOriginalProductRecordServiceImpl extends ServiceImpl<BilletOr
                         String mm = entry.getKey();
                         int count = entry.getValue().asInt(0);
 
-                        LambdaQueryWrapper<BilletRulerConfig> configQuery = new LambdaQueryWrapper<BilletRulerConfig>()
-                                .eq(BilletRulerConfig::getLength, Integer.valueOf(mm)); // mm 是字符串长度
-
-                        BilletRulerConfig rulerConfig = billetRulerConfigMapper.selectOne(configQuery);
-
-                        BigDecimal weight;
+                        // 计算重量
+                        BigDecimal singleWeight = new BigDecimal(mm)
+                                .divide(new BigDecimal("1000"), 3, RoundingMode.HALF_UP)
+                                .multiply(meterWeightFactor)
+                                .setScale(3, RoundingMode.HALF_UP);
 
-                        if (rulerConfig != null && rulerConfig.getWeight() != null) {
-                            // 方式一:用定尺表配置重量
-                            weight = BigDecimal.valueOf(rulerConfig.getWeight())
-                                    .multiply(BigDecimal.valueOf(count));
-                        } else {
-                            // 方式二:用总重量按支数比例分摊
-                            weight = (totalCount > 0)
-                                    ? totalWeight.divide(BigDecimal.valueOf(totalCount), 4, RoundingMode.HALF_UP)
-                                    .multiply(BigDecimal.valueOf(count))
-                                    : BigDecimal.ZERO;
-                        }
+                        BigDecimal weight = singleWeight.multiply(BigDecimal.valueOf(count));
 
                         mergedCount.merge(mm, count, Integer::sum);
                         mergedWeight.merge(mm, weight, BigDecimal::add);
@@ -296,7 +292,7 @@ public class BilletOriginalProductRecordServiceImpl extends ServiceImpl<BilletOr
         LambdaQueryWrapper<QualityInspectionStatistics> qualityQueryWrapper = new LambdaQueryWrapper<>();
 
 
-            // 未指定ID,则取指定铸机号下最新一条换班记录
+        // 未指定ID,则取指定铸机号下最新一条换班记录
         qualityQueryWrapper.eq(QualityInspectionStatistics::getChangeShiftId, newBilletHotsendChangeShift.getId())
                     .orderByDesc(QualityInspectionStatistics::getCreateTime)
                     .last("limit 1"); // 只取一条
@@ -305,13 +301,6 @@ public class BilletOriginalProductRecordServiceImpl extends ServiceImpl<BilletOr
 
         Map<String, Object> result = new HashMap<>();
 
-        // 获取米重数据
-        String meterWeightKey = String.format("ccmno:meter:weight:%s", queryDTO.getCcmNo());
-        String mWeightStr = oConvertUtils.getString(redisTemplate.opsForValue().get(meterWeightKey));
-        BigDecimal meterWeightFactor = StringUtils.isNotEmpty(mWeightStr)
-                ? new BigDecimal(mWeightStr)
-                : BigDecimal.ONE; // 如果没有米重数据,使用1作为系数
-
         result.put("records", resultList);
         result.put("statistics", qualityInspectionStatistics);
         result.put("meterWeight", meterWeightFactor);
@@ -328,8 +317,6 @@ public class BilletOriginalProductRecordServiceImpl extends ServiceImpl<BilletOr
 
     }
 
-
-
     private void initMonthlyStatisticsIfMissing(String ccmNo) {
         Date monthStart = DateUtils.getMonthStart(new Date());
         Date searchStart = new Date(monthStart.getTime() - 10 * 60 * 1000); // 向前推10分钟
@@ -473,6 +460,7 @@ public class BilletOriginalProductRecordServiceImpl extends ServiceImpl<BilletOr
         int classTotalCount = 0;
         BigDecimal classTotalWeight = BigDecimal.ZERO;
 
+
         ObjectMapper objectMapper = new ObjectMapper();
 
         for (BilletOriginalProductRecord record : records) {