|
@@ -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) {
|