|
@@ -1,6 +1,7 @@
|
|
|
package org.jeecg.modules.billet.storageBill.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
@@ -33,16 +34,14 @@ import org.jeecg.modules.billet.rollClubTwo.entity.RollClubTwo;
|
|
|
import org.jeecg.modules.billet.rollClubTwo.entity.RollClubTwoDetails;
|
|
|
import org.jeecg.modules.billet.rollClubTwo.service.IRollClubTwoDetailsService;
|
|
|
import org.jeecg.modules.billet.rollClubTwo.service.IRollClubTwoService;
|
|
|
+import org.jeecg.modules.billet.rollHeight.entity.DestinationStatisticsDetails;
|
|
|
import org.jeecg.modules.billet.rollHeight.entity.RollHeightDetails;
|
|
|
import org.jeecg.modules.billet.rollHeight.service.IRollHeightDetailsService;
|
|
|
import org.jeecg.modules.billet.rollOutShipp.entity.RollOutShipp;
|
|
|
import org.jeecg.modules.billet.rollOutShipp.entity.RollOutShippDetails;
|
|
|
import org.jeecg.modules.billet.rollOutShipp.service.IRollOutShippDetailsService;
|
|
|
import org.jeecg.modules.billet.rollOutShipp.service.IRollOutShippService;
|
|
|
-import org.jeecg.modules.billet.storageBill.entity.BilletHotsendDetails;
|
|
|
-import org.jeecg.modules.billet.storageBill.entity.ShiftEnum;
|
|
|
-import org.jeecg.modules.billet.storageBill.entity.ShiftGroupEnum;
|
|
|
-import org.jeecg.modules.billet.storageBill.entity.StorageBill;
|
|
|
+import org.jeecg.modules.billet.storageBill.entity.*;
|
|
|
import org.jeecg.modules.billet.storageBill.mapper.StorageBillMapper;
|
|
|
import org.jeecg.modules.billet.storageBill.service.IStorageBillService;
|
|
|
import org.jeecg.modules.billet.storageCarLog.entity.StorageCarLog;
|
|
@@ -55,9 +54,14 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicLong;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* @Description: 钢坯装运单
|
|
@@ -563,6 +567,283 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public OnDutyStatistics queryOndutyStatistics(String ccmNo) {
|
|
|
+ OnDutyStatistics onDutyStatistics = new OnDutyStatistics();
|
|
|
+
|
|
|
+ // 获取当前班组班次信息
|
|
|
+ String keyShiftGroup = String.format("class:shift:group:%s", ccmNo);
|
|
|
+ String keyShift = String.format("class:shift:%s", ccmNo);
|
|
|
+ String shiftGroup = oConvertUtils.getString(redisTemplate.opsForValue().get(keyShiftGroup));
|
|
|
+ String shift = oConvertUtils.getString(redisTemplate.opsForValue().get(keyShift));
|
|
|
+ if (oConvertUtils.isEmpty(shiftGroup) || oConvertUtils.isEmpty(shift)){
|
|
|
+ log.info("{}{}", "B端热送单统计当班热送查询失败!", "未查询到当班信息!");
|
|
|
+ return onDutyStatistics;
|
|
|
+ }
|
|
|
+ // 根据铸机号、班组班别查询对应的热送单信息
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShiftList = billetHotsendChangeShiftService.getOne(new LambdaQueryWrapper<BilletHotsendChangeShift>()
|
|
|
+ .eq(BilletHotsendChangeShift::getCcmNo, ccmNo).eq(BilletHotsendChangeShift::getShiftGroup, shiftGroup).eq(BilletHotsendChangeShift::getShift, shift)
|
|
|
+ .orderByDesc(BilletHotsendChangeShift::getCreateTime).last("limit 1"));
|
|
|
+ // 查询热送信息(棒一明细、高线明细)统计热送总支数、热送总重量<出坯量>
|
|
|
+ List<DestinationStatisticsDetails> statisticsDetailsList1 = new ArrayList<>();
|
|
|
+ List<DestinationStatisticsDetails> statisticsDetailsList2 = new ArrayList<>();
|
|
|
+ LambdaQueryWrapper<RollClubOneDetails> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(RollClubOneDetails::getCcmNo, ccmNo);
|
|
|
+ queryWrapper.eq(RollClubOneDetails::getShiftGroup, shiftGroup);
|
|
|
+ queryWrapper.eq(RollClubOneDetails::getShift, shift);
|
|
|
+ // 添加大于 billetHotsendChangeShiftList 的 createTime 条件
|
|
|
+ if (billetHotsendChangeShiftList != null && billetHotsendChangeShiftList.getCreateTime() != null) {
|
|
|
+ queryWrapper.gt(RollClubOneDetails::getCreateTime, billetHotsendChangeShiftList.getCreateTime());
|
|
|
+ }
|
|
|
+ List<RollClubOneDetails> rollClubOneDetailsList = rollClubOneDetailsService.list(queryWrapper);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(rollClubOneDetailsList)){
|
|
|
+ statisticsDetailsList1 = rollClubOneDetailsList.stream()
|
|
|
+ .collect(Collectors.groupingBy(RollClubOneDetails::getSize, Collectors.toList()))
|
|
|
+ .entrySet().stream()
|
|
|
+ .map(entry -> {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<RollClubOneDetails> group = entry.getValue();
|
|
|
+ Integer nums = group.size();
|
|
|
+ Double totalBlankOutput = group.stream().mapToDouble(RollClubOneDetails::getBlankOutput).sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ double finalBlankOutput = bd.doubleValue();
|
|
|
+ String ccmNos = group.isEmpty() ? null : group.get(0).getCcmNo();
|
|
|
+ return new DestinationStatisticsDetails(size, nums, finalBlankOutput, ccmNos);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ int totalNums = statisticsDetailsList1.stream()
|
|
|
+ .mapToInt(DestinationStatisticsDetails::getNums)
|
|
|
+ .sum();
|
|
|
+ onDutyStatistics.setCounts(totalNums);
|
|
|
+
|
|
|
+ double totalBlankOutputs = rollClubOneDetailsList.stream().mapToDouble(RollClubOneDetails::getBlankOutput).sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ onDutyStatistics.setBlankOutputs(bd);
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaQueryWrapper<RollHeightDetails> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.eq(RollHeightDetails::getCcmNo, ccmNo);
|
|
|
+ queryWrapper1.eq(RollHeightDetails::getShiftGroup, shiftGroup);
|
|
|
+ queryWrapper1.eq(RollHeightDetails::getShift, shift);
|
|
|
+ queryWrapper1.eq(RollHeightDetails::getLicensePlate, "辊道");
|
|
|
+ // 添加大于 billetHotsendChangeShiftList 的 createTime 条件
|
|
|
+ if (billetHotsendChangeShiftList != null && billetHotsendChangeShiftList.getCreateTime() != null) {
|
|
|
+ queryWrapper1.gt(RollHeightDetails::getCreateTime, billetHotsendChangeShiftList.getCreateTime());
|
|
|
+ }
|
|
|
+ List<RollHeightDetails> rollHeightDetailsList = rollHeightDetailsService.list(queryWrapper1);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(rollHeightDetailsList)){
|
|
|
+ statisticsDetailsList2 = rollHeightDetailsList.stream()
|
|
|
+ .collect(Collectors.groupingBy(RollHeightDetails::getSize, Collectors.toList()))
|
|
|
+ .entrySet().stream()
|
|
|
+ .map(entry -> {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<RollHeightDetails> group = entry.getValue();
|
|
|
+ Integer nums = group.size();
|
|
|
+ Double totalBlankOutput = group.stream().mapToDouble(RollHeightDetails::getBlankOutput).sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ double finalBlankOutput = bd.doubleValue();
|
|
|
+ String ccmNos = group.isEmpty() ? null : group.get(0).getCcmNo();
|
|
|
+ return new DestinationStatisticsDetails(size, nums, finalBlankOutput, ccmNos);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ int totalNums = statisticsDetailsList2.stream()
|
|
|
+ .mapToInt(DestinationStatisticsDetails::getNums)
|
|
|
+ .sum();
|
|
|
+ onDutyStatistics.setCounts(totalNums);
|
|
|
+ double totalBlankOutputs = rollHeightDetailsList.stream().mapToDouble(RollHeightDetails::getBlankOutput).sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ onDutyStatistics.setBlankOutputs(bd);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 合并两个列表并根据 size 分组统计
|
|
|
+ List<DestinationStatisticsDetails> mergedList = Stream.concat(statisticsDetailsList1.stream(), statisticsDetailsList2.stream())
|
|
|
+ .collect(Collectors.groupingBy(DestinationStatisticsDetails::getSize))
|
|
|
+ .entrySet().stream()
|
|
|
+ .map(entry -> {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<DestinationStatisticsDetails> group = entry.getValue();
|
|
|
+ int totalNums = group.stream().mapToInt(DestinationStatisticsDetails::getNums).sum();
|
|
|
+ double totalBlankOutput = group.stream().mapToDouble(DestinationStatisticsDetails::getBlankOutput).sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ double finalBlankOutput = bd.doubleValue();
|
|
|
+ String ccmNoForGroup = group.isEmpty() ? null : group.get(0).getCcmNo();
|
|
|
+ return new DestinationStatisticsDetails(size, totalNums, finalBlankOutput, ccmNoForGroup);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ log.info("{}{}", "合并后的列表:", JSON.toJSON(mergedList));
|
|
|
+ onDutyStatistics.setStatisticsDetailsList(mergedList);
|
|
|
+ return onDutyStatistics;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public JSONObject ondutyStatisticsExport(String ccmNo, String ondutyDate) {
|
|
|
+ JSONObject result = new JSONObject();
|
|
|
+
|
|
|
+ OnDutyStatisticsReport onDutyStatisticsReport = new OnDutyStatisticsReport();
|
|
|
+ if (oConvertUtils.isEmpty(ondutyDate)){
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
|
|
|
+ ondutyDate = sdf.format(new Date());
|
|
|
+ }
|
|
|
+ // 将字符串解析为 LocalDate,这里将日期设置为当月的第一天
|
|
|
+ LocalDate startOfMonth = LocalDate.parse(ondutyDate + "-01");
|
|
|
+ // 获取当月的最后一天
|
|
|
+ LocalDate endOfMonth = startOfMonth.withDayOfMonth(startOfMonth.lengthOfMonth());
|
|
|
+
|
|
|
+ // 格式化日期为指定格式
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ String startFormatted = startOfMonth.atStartOfDay().format(formatter);
|
|
|
+ String endFormatted = endOfMonth.atTime(23, 59, 59).format(formatter);
|
|
|
+ Date startDate = DateUtils.parseDatetime(startFormatted);
|
|
|
+ Date endDate = DateUtils.parseDatetime(endFormatted);
|
|
|
+
|
|
|
+ // 根据铸机号、班组班别查询对应的热送单信息
|
|
|
+ List<BilletHotsendChangeShift> billetHotsendChangeShiftList = billetHotsendChangeShiftService.list(new LambdaQueryWrapper<BilletHotsendChangeShift>()
|
|
|
+ .eq(BilletHotsendChangeShift::getCcmNo, ccmNo)
|
|
|
+ .between(BilletHotsendChangeShift::getCreateTime, startDate, endDate)
|
|
|
+ .orderByAsc(BilletHotsendChangeShift::getCreateTime));
|
|
|
+ if (oConvertUtils.listIsEmpty(billetHotsendChangeShiftList)){
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ JSONArray jsonArray = new JSONArray();
|
|
|
+ billetHotsendChangeShiftList.forEach(x ->{
|
|
|
+ if ("5".equals(ccmNo)){
|
|
|
+ List<DestinationStatisticsDetails> statisticsDetailsList1;
|
|
|
+ // 查询热送信息(棒一明细、高线明细)统计热送总支数、热送总重量<出坯量>
|
|
|
+ LambdaQueryWrapper<RollClubOneDetails> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(RollClubOneDetails::getCcmNo, ccmNo);
|
|
|
+ queryWrapper.eq(RollClubOneDetails::getShiftGroup, x.getShiftGroup());
|
|
|
+ queryWrapper.eq(RollClubOneDetails::getShift, x.getShift());
|
|
|
+ // 添加大于 billetHotsendChangeShiftList 的 createTime 条件
|
|
|
+ if (x.getCreateTime() != null) {
|
|
|
+ // 根据交班时间获取交班当天的开始时间和结束时间
|
|
|
+ Date handoverTime = x.getCreateTime();
|
|
|
+ Date startTime = DateUtils.getStartOfDayByDate(handoverTime);
|
|
|
+ Date endTime = DateUtils.getEndOfDayByDate(handoverTime);
|
|
|
+ queryWrapper.between(RollClubOneDetails::getCreateTime, startTime, endTime);
|
|
|
+ }
|
|
|
+ List<RollClubOneDetails> rollClubOneDetailsList = rollClubOneDetailsService.list(queryWrapper);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(rollClubOneDetailsList)){
|
|
|
+ statisticsDetailsList1 = rollClubOneDetailsList.stream()
|
|
|
+ .collect(Collectors.groupingBy(RollClubOneDetails::getSize, Collectors.toList()))
|
|
|
+ .entrySet().stream()
|
|
|
+ .map(entry -> {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<RollClubOneDetails> group = entry.getValue();
|
|
|
+ Integer nums = group.size();
|
|
|
+ Double totalBlankOutput = group.stream().mapToDouble(RollClubOneDetails::getBlankOutput).sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ double finalBlankOutput = bd.doubleValue();
|
|
|
+ String ccmNos = group.isEmpty() ? null : group.get(0).getCcmNo();
|
|
|
+ return new DestinationStatisticsDetails(size, nums, finalBlankOutput, ccmNos);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ int totalNums = statisticsDetailsList1.stream()
|
|
|
+ .mapToInt(DestinationStatisticsDetails::getNums)
|
|
|
+ .sum();
|
|
|
+ onDutyStatisticsReport.setCounts(totalNums);
|
|
|
+ double totalBlankOutputs = rollClubOneDetailsList.stream().mapToDouble(RollClubOneDetails::getBlankOutput).sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ onDutyStatisticsReport.setBlankOutputs(bd);
|
|
|
+ onDutyStatisticsReport.setStatisticsDetailsList(statisticsDetailsList1);
|
|
|
+ String cTiime = DateUtils.date2Str(x.getCreateTime(), DateUtils.date_sdf.get());
|
|
|
+ onDutyStatisticsReport.setDate(cTiime);
|
|
|
+ onDutyStatisticsReport.setShiftGroup(x.getShiftGroup());
|
|
|
+ onDutyStatisticsReport.setShift(x.getShift());
|
|
|
+ statisticsDetailsList1.forEach(y -> {
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("size", y.getSize());
|
|
|
+ jsonObject.put("nums", y.getNums());
|
|
|
+ jsonObject.put("blankOutput", y.getBlankOutput());
|
|
|
+ jsonObject.put("blankOutputs", onDutyStatisticsReport.getBlankOutputs());
|
|
|
+ jsonObject.put("date", onDutyStatisticsReport.getDate());
|
|
|
+ jsonObject.put("shiftGroup", ShiftGroupEnum.fromCode(onDutyStatisticsReport.getShiftGroup()).name());
|
|
|
+ jsonObject.put("shift", ShiftEnum.fromCode(onDutyStatisticsReport.getShift()).name());
|
|
|
+ jsonObject.put("counts", onDutyStatisticsReport.getCounts());
|
|
|
+ jsonObject.put("ccmNo", y.getCcmNo() + "#机");
|
|
|
+ jsonArray.add(jsonObject);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ("6".equals(ccmNo)){
|
|
|
+ List<DestinationStatisticsDetails> statisticsDetailsList2;
|
|
|
+
|
|
|
+ LambdaQueryWrapper<RollHeightDetails> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.eq(RollHeightDetails::getCcmNo, ccmNo);
|
|
|
+ queryWrapper1.eq(RollHeightDetails::getShiftGroup, x.getShiftGroup());
|
|
|
+ queryWrapper1.eq(RollHeightDetails::getShift, x.getShift());
|
|
|
+ queryWrapper1.eq(RollHeightDetails::getLicensePlate, "辊道");
|
|
|
+ // 添加大于 billetHotsendChangeShiftList 的 createTime 条件
|
|
|
+ if (x.getCreateTime() != null) {
|
|
|
+ // 根据交班时间获取交班当天的开始时间和结束时间
|
|
|
+ Date handoverTime = x.getCreateTime();
|
|
|
+ Date startTime = DateUtils.getStartOfDayByDate(handoverTime);
|
|
|
+ Date endTime = DateUtils.getEndOfDayByDate(handoverTime);
|
|
|
+ queryWrapper1.between(RollHeightDetails::getCreateTime, startTime, endTime);
|
|
|
+ }
|
|
|
+ List<RollHeightDetails> rollHeightDetailsList = rollHeightDetailsService.list(queryWrapper1);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(rollHeightDetailsList)){
|
|
|
+ statisticsDetailsList2 = rollHeightDetailsList.stream()
|
|
|
+ .collect(Collectors.groupingBy(RollHeightDetails::getSize, Collectors.toList()))
|
|
|
+ .entrySet().stream()
|
|
|
+ .map(entry -> {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<RollHeightDetails> group = entry.getValue();
|
|
|
+ Integer nums = group.size();
|
|
|
+ Double totalBlankOutput = group.stream().mapToDouble(RollHeightDetails::getBlankOutput).sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ double finalBlankOutput = bd.doubleValue();
|
|
|
+ String ccmNos = group.isEmpty() ? null : group.get(0).getCcmNo();
|
|
|
+ return new DestinationStatisticsDetails(size, nums, finalBlankOutput, ccmNos);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ int totalNums = statisticsDetailsList2.stream()
|
|
|
+ .mapToInt(DestinationStatisticsDetails::getNums)
|
|
|
+ .sum();
|
|
|
+ onDutyStatisticsReport.setCounts(totalNums);
|
|
|
+ double totalBlankOutputs = rollHeightDetailsList.stream().mapToDouble(RollHeightDetails::getBlankOutput).sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ onDutyStatisticsReport.setBlankOutputs(bd);
|
|
|
+ onDutyStatisticsReport.setStatisticsDetailsList(statisticsDetailsList2);
|
|
|
+ String cTiime = DateUtils.date2Str(x.getCreateTime(), DateUtils.date_sdf.get());
|
|
|
+ onDutyStatisticsReport.setDate(cTiime);
|
|
|
+ onDutyStatisticsReport.setShiftGroup(x.getShiftGroup());
|
|
|
+ onDutyStatisticsReport.setShift(x.getShift());
|
|
|
+
|
|
|
+ statisticsDetailsList2.forEach(y -> {
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("size", y.getSize());
|
|
|
+ jsonObject.put("nums", y.getNums());
|
|
|
+ jsonObject.put("blankOutput", y.getBlankOutput());
|
|
|
+ jsonObject.put("blankOutputs", onDutyStatisticsReport.getBlankOutputs());
|
|
|
+ jsonObject.put("date", onDutyStatisticsReport.getDate());
|
|
|
+ jsonObject.put("shiftGroup", ShiftGroupEnum.fromCode(onDutyStatisticsReport.getShiftGroup()).name());
|
|
|
+ jsonObject.put("shift", ShiftEnum.fromCode(onDutyStatisticsReport.getShift()).name());
|
|
|
+ jsonObject.put("counts", onDutyStatisticsReport.getCounts());
|
|
|
+ jsonObject.put("ccmNo", y.getCcmNo() + "#机");
|
|
|
+ jsonArray.add(jsonObject);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ // 合并两个列表并根据 size 分组统计
|
|
|
+/* List<DestinationStatisticsDetails> mergedList = Stream.concat(statisticsDetailsList1.stream(), statisticsDetailsList2.stream())
|
|
|
+ .collect(Collectors.groupingBy(DestinationStatisticsDetails::getSize))
|
|
|
+ .entrySet().stream()
|
|
|
+ .map(entry -> {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<DestinationStatisticsDetails> group = entry.getValue();
|
|
|
+ int totalNums = group.stream().mapToInt(DestinationStatisticsDetails::getNums).sum();
|
|
|
+ double totalBlankOutput = group.stream().mapToDouble(DestinationStatisticsDetails::getBlankOutput).sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ double finalBlankOutput = bd.doubleValue();
|
|
|
+ String ccmNoForGroup = group.isEmpty() ? null : group.get(0).getCcmNo();
|
|
|
+ return new DestinationStatisticsDetails(size, totalNums, finalBlankOutput, ccmNoForGroup);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ log.info("{}{}", "合并后的列表:", JSON.toJSON(mergedList));
|
|
|
+ onDutyStatisticsReport.setStatisticsDetailsList(mergedList);*/
|
|
|
+
|
|
|
+ result.put("data", jsonArray);
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 钢坯热送信息查询、更新
|
|
|
* 棒一、棒二、棒三、上若、高线 基础表和明细 新增、更新
|