|
@@ -33,6 +33,7 @@ import org.jeecg.modules.billet.rollClubThree.service.IRollClubThreeDetailsServi
|
|
|
import org.jeecg.modules.billet.rollClubTwo.entity.RollClubTwoDetails;
|
|
|
import org.jeecg.modules.billet.rollClubTwo.service.IRollClubTwoDetailsService;
|
|
|
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.RollOutShippDetails;
|
|
|
import org.jeecg.modules.billet.rollOutShipp.service.IRollOutShippDetailsService;
|
|
@@ -53,6 +54,7 @@ import org.springframework.web.servlet.ModelAndView;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.text.DecimalFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.LocalTime;
|
|
|
import java.time.YearMonth;
|
|
@@ -419,22 +421,665 @@ public class BilletHotsendChangeShiftController extends JeecgController<BilletHo
|
|
|
log.info("自动化{}交班成功!{} 结果值:{}", shiftName, DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()), jsonObject);
|
|
|
}
|
|
|
|
|
|
-// @Scheduled(cron = "0 40 10 * * ?")
|
|
|
- public void executeNeightShiftTask1() {
|
|
|
- log.info("设置索引iD");
|
|
|
- String nextshiftIdKey = String.format("class:nextshift:Id:%s", "5-6");
|
|
|
- redisTemplate.opsForValue().set(nextshiftIdKey, 26);
|
|
|
+
|
|
|
+// @Scheduled(cron = "5 0 0 * * ?")
|
|
|
+ public void runAtMidnight() {
|
|
|
+ // 每天 00:00:05 执行的任务逻辑
|
|
|
+
|
|
|
+ // 5号机、统计热送、热装、起跺数量维护到交班信息
|
|
|
+ executeShiftTask11();
|
|
|
+ // 6号机、统计热送、热装、起跺数量维护到交班信息
|
|
|
+ executeShiftTask22();
|
|
|
+ // 5号机 班次吊运明细维护到交班信息
|
|
|
+ executeShiftTask33();
|
|
|
+ // 6号机 班次吊运明细维护到交班信息
|
|
|
+ executeShiftTask44();
|
|
|
+ // 5号机 统计班次吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息
|
|
|
+ executeShiftTask55();
|
|
|
+ // 6号机 统计班次吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息
|
|
|
+ executeShiftTask66();
|
|
|
+ // 5号机 轧钢棒一维护到交班信息
|
|
|
+ executeShiftTask77();
|
|
|
+ // 6号机 轧钢高线维护到交班信息
|
|
|
+ executeShiftTask88();
|
|
|
}
|
|
|
|
|
|
-// @Scheduled(cron = "0 * * * * ?")
|
|
|
- public void executeNeightShiftTask2() {
|
|
|
- log.info("获取索引ID");
|
|
|
- String nextshiftIdKey = String.format("class:nextshift:Id:%s", "5-6");
|
|
|
- String nextCacheId = oConvertUtils.getString(redisTemplate.opsForValue().get(nextshiftIdKey));
|
|
|
- log.info("获取索引ID结果:", nextCacheId);
|
|
|
+// @Scheduled(cron = "0 5 8 * * ?")
|
|
|
+ public void runAtEight() {
|
|
|
+ // 08:05:00 执行的任务逻辑
|
|
|
+
|
|
|
+ // 5号机、统计热送、热装、起跺数量维护到交班信息
|
|
|
+ executeShiftTask11();
|
|
|
+ // 6号机、统计热送、热装、起跺数量维护到交班信息
|
|
|
+ executeShiftTask22();
|
|
|
+ // 5号机 班次吊运明细维护到交班信息
|
|
|
+ executeShiftTask33();
|
|
|
+ // 6号机 班次吊运明细维护到交班信息
|
|
|
+ executeShiftTask44();
|
|
|
+ // 5号机 统计班次吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息
|
|
|
+ executeShiftTask55();
|
|
|
+ // 6号机 统计班次吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息
|
|
|
+ executeShiftTask66();
|
|
|
+ // 5号机 轧钢棒一维护到交班信息
|
|
|
+ executeShiftTask77();
|
|
|
+ // 6号机 轧钢高线维护到交班信息
|
|
|
+ executeShiftTask88();
|
|
|
+ }
|
|
|
+
|
|
|
+// @Scheduled(cron = "5 0 16 * * ?")
|
|
|
+ public void runAtFourPm() {
|
|
|
+ // 16:00:05 执行的任务逻辑
|
|
|
+
|
|
|
+ // 5号机、统计热送、热装、起跺数量维护到交班信息
|
|
|
+ executeShiftTask11();
|
|
|
+ // 6号机、统计热送、热装、起跺数量维护到交班信息
|
|
|
+ executeShiftTask22();
|
|
|
+ // 5号机 班次吊运明细维护到交班信息
|
|
|
+ executeShiftTask33();
|
|
|
+ // 6号机 班次吊运明细维护到交班信息
|
|
|
+ executeShiftTask44();
|
|
|
+ // 5号机 统计班次吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息
|
|
|
+ executeShiftTask55();
|
|
|
+ // 6号机 统计班次吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息
|
|
|
+ executeShiftTask66();
|
|
|
+ // 5号机 轧钢棒一维护到交班信息
|
|
|
+ executeShiftTask77();
|
|
|
+ // 6号机 轧钢高线维护到交班信息
|
|
|
+ executeShiftTask88();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 5号机 热送、热装、堆垛、定尺明细、数量维护到交班信息
|
|
|
+ */
|
|
|
+ @ApiOperation(value="5号机统计热送热装数量维护到交班信息", notes="5号机统计热送热装数量维护到交班信息")
|
|
|
+ @GetMapping(value = "/executeShiftTask111")
|
|
|
+ public void executeShiftTask11() {
|
|
|
+ log.info("5号机统计热送热装数量维护到交班信息!");
|
|
|
+ // 根据铸机号、交班结束时间倒序并不为空,查询交班记录,
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getCcmNo, "5")
|
|
|
+ .orderByDesc(BilletHotsendChangeShift::getChangeShiftTime)
|
|
|
+ .ne(BilletHotsendChangeShift::getChangeShiftTime, null)
|
|
|
+ .last("limit 1");
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
+ if (billetHotsendChangeShift == null) {
|
|
|
+ log.info("{}{}", "5号机查询当班热送热装数量维护到交班信息失败,交班记录为空!", new Date());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ commonHot1(billetHotsendChangeShift);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 6号机 热送、热装、堆垛、定尺明细、数量维护到交班信息
|
|
|
+ */
|
|
|
+ @ApiOperation(value="6号机统计热送热装数量维护到交班信息", notes="6号机统计热送热装数量维护到交班信息")
|
|
|
+ @GetMapping(value = "/executeShiftTask222")
|
|
|
+ public void executeShiftTask22() {
|
|
|
+ log.info("6号机统计热送热装数量维护到交班信息!");
|
|
|
+ // 根据铸机号、交班结束时间倒序并不为空,查询交班记录,
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getCcmNo, "6")
|
|
|
+ .orderByDesc(BilletHotsendChangeShift::getChangeShiftTime)
|
|
|
+ .ne(BilletHotsendChangeShift::getChangeShiftTime, null)
|
|
|
+ .last("limit 1");
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
+ if (billetHotsendChangeShift == null) {
|
|
|
+ log.info("{}{}", "6号机查询当班热送热装数量维护到交班信息失败,交班记录为空!", new Date());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ commonHot1(billetHotsendChangeShift);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param billetHotsendChangeShift
|
|
|
+ */
|
|
|
+ private void commonHot1(BilletHotsendChangeShift billetHotsendChangeShift) {
|
|
|
+ // 根据ccmNo、shift、shiftGroup、交班开始时间到交班结束时间范围 查询对应钢坯基础信息所有数据
|
|
|
+ LambdaQueryWrapper<BilletBasicInfo> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.eq(BilletBasicInfo::getCcmNo, billetHotsendChangeShift.getCcmNo());
|
|
|
+ queryWrapper1.eq(BilletBasicInfo::getShift, billetHotsendChangeShift.getShift());
|
|
|
+ queryWrapper1.eq(BilletBasicInfo::getShiftGroup, billetHotsendChangeShift.getShiftGroup());
|
|
|
+ queryWrapper1.between(BilletBasicInfo::getCreateTime, billetHotsendChangeShift.getCreateTime(), billetHotsendChangeShift.getChangeShiftTime());
|
|
|
+ List<BilletBasicInfo> billetBasicInfoList = billetBasicInfoService.list(queryWrapper1);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(billetBasicInfoList)){
|
|
|
+ int totalCountHotsend = 0;
|
|
|
+ double totalWeightHotsend = 0d;
|
|
|
+
|
|
|
+ int totalCountHotfeign = 0;
|
|
|
+ double totalWeightHotfeign = 0d;
|
|
|
+ for (BilletBasicInfo billetBasicInfo : billetBasicInfoList) {
|
|
|
+ // 热送统计 支数、重量
|
|
|
+ if ("roll_height".equals(billetBasicInfo.getBelongTable()) || "roll_club_one".equals(billetBasicInfo.getBelongTable())) {
|
|
|
+ totalCountHotsend ++;
|
|
|
+ if (billetBasicInfo.getBilletWeight() != null) {
|
|
|
+ totalWeightHotsend += billetBasicInfo.getBilletWeight();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 热装统计 支数、重量
|
|
|
+ if ("roll_club_two".equals(billetBasicInfo.getBelongTable()) || "roll_club_three".equals(billetBasicInfo.getBelongTable()) || "roll_out_shipp".equals(billetBasicInfo.getBelongTable())) {
|
|
|
+ totalCountHotfeign ++;
|
|
|
+ if (billetBasicInfo.getBilletWeight() != null) {
|
|
|
+ totalWeightHotfeign += billetBasicInfo.getBilletWeight();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 保留 4 位小数
|
|
|
+ totalWeightHotsend = new BigDecimal(totalWeightHotsend).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
+ // 保留 4 位小数
|
|
|
+ totalWeightHotfeign = new BigDecimal(totalWeightHotfeign).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 班组定尺
|
|
|
+ List<DestinationStatisticsDetails> lengthGroupList = new ArrayList<>();
|
|
|
+ Map<Integer, GroupInfo> lengthGroupMap = new HashMap<>();
|
|
|
+ String ccmNo = billetHotsendChangeShift.getCcmNo();
|
|
|
+ for (BilletBasicInfo info : billetBasicInfoList) {
|
|
|
+ int length = info.getLength();
|
|
|
+ double weight = info.getBilletWeight();
|
|
|
+ GroupInfo groupInfo = lengthGroupMap.computeIfAbsent(length, k -> new GroupInfo());
|
|
|
+ groupInfo.sum++;
|
|
|
+ groupInfo.weight += weight;
|
|
|
+ }
|
|
|
+ for (Map.Entry<Integer, GroupInfo> entry : lengthGroupMap.entrySet()) {
|
|
|
+ int length = entry.getKey();
|
|
|
+ GroupInfo groupInfo = entry.getValue();
|
|
|
+ // 保留 4 位小数
|
|
|
+ BigDecimal bd = new BigDecimal(groupInfo.weight).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ double roundedWeight = bd.doubleValue();
|
|
|
+ DestinationStatisticsDetails details = new DestinationStatisticsDetails(
|
|
|
+ String.valueOf(length),
|
|
|
+ groupInfo.sum,
|
|
|
+ roundedWeight,
|
|
|
+ ccmNo
|
|
|
+ );
|
|
|
+ lengthGroupList.add(details);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 班次热送统计 支数、重量
|
|
|
+ billetHotsendChangeShift.setShiftHotsendWeight(totalWeightHotsend);
|
|
|
+ billetHotsendChangeShift.setShiftHotsendAmount(totalCountHotsend);
|
|
|
+
|
|
|
+ // 班次热装统计 支数、重量
|
|
|
+ billetHotsendChangeShift.setShiftHotfeignAmount(totalCountHotfeign);
|
|
|
+ billetHotsendChangeShift.setShiftHotfeignWeight(totalWeightHotfeign);
|
|
|
+
|
|
|
+ // 班次定尺明细
|
|
|
+ billetHotsendChangeShift.setSizeDetailsList(lengthGroupList);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 堆垛统计 支数、重量 根据铸机号、班组、班别、时间范围。查询起跺日志明细表
|
|
|
+ int stackCount = 0;
|
|
|
+ double stackWeight = 0d;
|
|
|
+ LambdaQueryWrapper<StackingUpLog> stackingUpLogQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ stackingUpLogQueryWrapper.eq(StackingUpLog::getCcmNo, billetHotsendChangeShift.getCcmNo());
|
|
|
+ stackingUpLogQueryWrapper.eq(StackingUpLog::getShift, billetHotsendChangeShift.getShift());
|
|
|
+ stackingUpLogQueryWrapper.eq(StackingUpLog::getShiftGroup, billetHotsendChangeShift.getShiftGroup());
|
|
|
+ stackingUpLogQueryWrapper.between(StackingUpLog::getCreateTime, billetHotsendChangeShift.getCreateTime(), billetHotsendChangeShift.getChangeShiftTime());
|
|
|
+ List<StackingUpLog> stackingUpLogList = stackingUpLogService.list(stackingUpLogQueryWrapper);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(stackingUpLogList)) {
|
|
|
+ // 收集所有的 billetNo
|
|
|
+ Set<String> allBilletNos = new HashSet<>();
|
|
|
+ for (StackingUpLog stackingUpLog : stackingUpLogList) {
|
|
|
+ if (oConvertUtils.isNotEmpty(stackingUpLog.getBilletNo())) {
|
|
|
+ String[] billetNoArray = stackingUpLog.getBilletNo().split(",");
|
|
|
+ allBilletNos.addAll(Arrays.asList(billetNoArray));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 通过billetNo匹配 billetBasicInfoList中的坯号
|
|
|
+ for (BilletBasicInfo billetBasicInfo : billetBasicInfoList) {
|
|
|
+ if (allBilletNos.contains(billetBasicInfo.getBilletNo())) {
|
|
|
+ stackCount ++;
|
|
|
+ if (billetBasicInfo.getBilletWeight() != null) {
|
|
|
+ stackWeight += billetBasicInfo.getBilletWeight();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 保留 4 位小数
|
|
|
+ stackWeight = new BigDecimal(stackWeight).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
+ // 班次堆垛统计 支数、重量
|
|
|
+ billetHotsendChangeShift.setShiftStackAmount(stackCount);
|
|
|
+ billetHotsendChangeShift.setShiftStackWeight(stackWeight);
|
|
|
+ }
|
|
|
+
|
|
|
+ billetHotsendChangeShiftService.updateById(billetHotsendChangeShift);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 5号机 班次吊运明细维护到交班信息
|
|
|
+ */
|
|
|
+ @ApiOperation(value="5号机统计班次吊运明细维护到交班信息", notes="5号机统计班次吊运明细维护到交班信息")
|
|
|
+ @GetMapping(value = "/executeShiftTask333")
|
|
|
+ public void executeShiftTask33() {
|
|
|
+ log.info("5号机统计班次吊运明细维护到交班信息!");
|
|
|
+ // 根据铸机号、交班结束时间倒序并不为空,查询交班记录,
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getCcmNo, "5")
|
|
|
+ .orderByDesc(BilletHotsendChangeShift::getChangeShiftTime)
|
|
|
+ .ne(BilletHotsendChangeShift::getChangeShiftTime, null)
|
|
|
+ .last("limit 1");
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
+ if (billetHotsendChangeShift == null) {
|
|
|
+ log.info("{}{}", "查询当班吊运明细维护交班信息失败,交班记录为空!", new Date());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ commonBilletLiftingBill(billetHotsendChangeShift);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 6号机 班次吊运明细维护到交班信息
|
|
|
+ */
|
|
|
+ @ApiOperation(value="6号机统计班次吊运明细维护到交班信息", notes="6号机统计班次吊运明细维护到交班信息")
|
|
|
+ @GetMapping(value = "/executeShiftTask444")
|
|
|
+ public void executeShiftTask44() {
|
|
|
+ log.info("6号机统计班次吊运明细维护到交班信息!");
|
|
|
+ // 根据铸机号、交班结束时间倒序并不为空,查询交班记录,
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getCcmNo, "6")
|
|
|
+ .orderByDesc(BilletHotsendChangeShift::getChangeShiftTime)
|
|
|
+ .ne(BilletHotsendChangeShift::getChangeShiftTime, null)
|
|
|
+ .last("limit 1");
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
+ if (billetHotsendChangeShift == null) {
|
|
|
+ log.info("{}{}", "6号机查询当班热送热装数量维护到交班信息失败,交班记录为空!", new Date());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ commonBilletLiftingBill(billetHotsendChangeShift);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 统计班次吊运明细维护到交班信息
|
|
|
+ * @param billetHotsendChangeShift
|
|
|
+ */
|
|
|
+ private void commonBilletLiftingBill(BilletHotsendChangeShift billetHotsendChangeShift) {
|
|
|
+ // 根据ccmNo、shift、shiftGroup、交班开始时间到交班结束时间范围 查询对应钢坯基础信息所有数据
|
|
|
+ LambdaQueryWrapper<BilletBasicInfo> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.eq(BilletBasicInfo::getCcmNo, billetHotsendChangeShift.getCcmNo())
|
|
|
+ .eq(BilletBasicInfo::getShift, billetHotsendChangeShift.getShift())
|
|
|
+ .eq(BilletBasicInfo::getShiftGroup, billetHotsendChangeShift.getShiftGroup())
|
|
|
+ .between(BilletBasicInfo::getCreateTime, billetHotsendChangeShift.getCreateTime(), billetHotsendChangeShift.getChangeShiftTime());
|
|
|
+ List<BilletBasicInfo> billetBasicInfoList = billetBasicInfoService.list(queryWrapper1);
|
|
|
+ if (oConvertUtils.listIsEmpty(billetBasicInfoList)){
|
|
|
+ log.info("{}{}", "查询班次实绩吊运明细,钢坯基础信息为空!", billetHotsendChangeShift.getCcmNo());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 班次吊运信息
|
|
|
+ // 根据铸机号、班组、班别、交班的创建时间,查询当班行车吊运单信息,
|
|
|
+ LambdaQueryWrapper<BilletLiftingBill> queryWrapper2 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper2.eq(BilletLiftingBill::getCcmNo, billetHotsendChangeShift.getCcmNo())
|
|
|
+ .eq(BilletLiftingBill::getShift, billetHotsendChangeShift.getShift())
|
|
|
+ .eq(BilletLiftingBill::getShiftGroup, billetHotsendChangeShift.getShiftGroup())
|
|
|
+ .between(BilletLiftingBill::getCreateTime, billetHotsendChangeShift.getCreateTime(), billetHotsendChangeShift.getChangeShiftTime())
|
|
|
+ .groupBy(BilletLiftingBill::getVehicleNumber);
|
|
|
+ List<BilletLiftingBill> billetLiftingBillList = billetLiftingBillService.list(queryWrapper2);
|
|
|
+ if (oConvertUtils.listIsEmpty(billetLiftingBillList)){
|
|
|
+ log.info("{}{}", "查询当班行车吊运信息为空!", new Date());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<String> vehicleNumberList = billetLiftingBillList.stream().map(BilletLiftingBill::getVehicleNumber).collect(Collectors.toList());
|
|
|
+ List<OnDutyLiftingBillDetails> allDetailsList = new ArrayList<>();
|
|
|
+ for (String vehicleNumber : vehicleNumberList) {
|
|
|
+ OnDutyLiftingBillDetails details = new OnDutyLiftingBillDetails();
|
|
|
+ details.setVehicleNumber(vehicleNumber);
|
|
|
+ details.setChangeShiftCreateTime(billetHotsendChangeShift.getCreateTime());
|
|
|
+ // 热送统计
|
|
|
+ countAndSet(details, billetHotsendChangeShift, vehicleNumber, "0","hotSendAmont");
|
|
|
+ // 热装统计
|
|
|
+ countAndSet(details, billetHotsendChangeShift, vehicleNumber, "1","hotChargingAmont");
|
|
|
+ // 堆垛统计
|
|
|
+ countAndSet(details, billetHotsendChangeShift, vehicleNumber, "2","stackingAmont");
|
|
|
+ allDetailsList.add(details);
|
|
|
+ }
|
|
|
+ billetHotsendChangeShift.setLiftingBillDetailsList(allDetailsList);
|
|
|
+ billetHotsendChangeShiftService.updateById(billetHotsendChangeShift);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 5号机
|
|
|
+ *
|
|
|
+ * 班次
|
|
|
+ * 吊运明细、轧钢棒二、轧钢棒三、轧钢上若
|
|
|
+ * 维护到交班信息
|
|
|
+ *
|
|
|
+ */
|
|
|
+ @ApiOperation(value="5号机统计班次吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息", notes="5号机统计班次吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息")
|
|
|
+ @GetMapping(value = "/executeShiftTask555")
|
|
|
+ public void executeShiftTask55() {
|
|
|
+ log.info("5号机统计班次吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息!");
|
|
|
+ // 根据铸机号、交班结束时间倒序并不为空,查询交班记录,
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getCcmNo, "5")
|
|
|
+ .orderByDesc(BilletHotsendChangeShift::getChangeShiftTime)
|
|
|
+ .ne(BilletHotsendChangeShift::getChangeShiftTime, null)
|
|
|
+ .last("limit 1");
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
+ if (billetHotsendChangeShift == null) {
|
|
|
+ log.info("{}{}", "5号机查询班次实绩吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息失败,交班记录为空!", new Date());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ commonShift1(billetHotsendChangeShift);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 6号机
|
|
|
+ *
|
|
|
+ * 班次
|
|
|
+ * 吊运明细、轧钢棒二、轧钢棒三、轧钢上若
|
|
|
+ * 维护到交班信息
|
|
|
+ *
|
|
|
+ */
|
|
|
+ @ApiOperation(value="6号机统计班次吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息", notes="6号机统计班次吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息")
|
|
|
+ @GetMapping(value = "/executeShiftTask666")
|
|
|
+ public void executeShiftTask66() {
|
|
|
+ log.info("6号机统计班次吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息!");
|
|
|
+ // 根据铸机号、交班结束时间倒序并不为空,查询交班记录,
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getCcmNo, "6")
|
|
|
+ .orderByDesc(BilletHotsendChangeShift::getChangeShiftTime)
|
|
|
+ .ne(BilletHotsendChangeShift::getChangeShiftTime, null)
|
|
|
+ .last("limit 1");
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
+ if (billetHotsendChangeShift == null) {
|
|
|
+ log.info("{}{}", "6号机查询班次实绩吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息失败,交班记录为空!", new Date());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ commonShift1(billetHotsendChangeShift);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 5.6号机
|
|
|
+ * 统计班次吊运明细、轧钢棒二、轧钢棒三、轧钢上若维护到交班信息 公共方法
|
|
|
+ * @param billetHotsendChangeShift
|
|
|
+ */
|
|
|
+ private void commonShift1(BilletHotsendChangeShift billetHotsendChangeShift) {
|
|
|
+
|
|
|
+ // 班次装运统计 车次总数、总重、总支数 查询当班装运单信息
|
|
|
+ LambdaQueryWrapper<StorageBill> queryWrapper3 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper3.eq(StorageBill::getCcmNo, billetHotsendChangeShift.getCcmNo())
|
|
|
+ .eq(StorageBill::getShift, billetHotsendChangeShift.getShift())
|
|
|
+ .eq(StorageBill::getShiftGroup, billetHotsendChangeShift.getShiftGroup())
|
|
|
+ .isNotNull(StorageBill::getDestination)
|
|
|
+ .ne(StorageBill::getTypeConfigId, "1024")
|
|
|
+ .between(StorageBill::getCreateTime, billetHotsendChangeShift.getCreateTime(), billetHotsendChangeShift.getChangeShiftTime());
|
|
|
+ List<StorageBill> storageBillList = storageBillService.list(queryWrapper3);
|
|
|
+ if (oConvertUtils.listIsEmpty(storageBillList)){
|
|
|
+ log.info("{}{}", "查询班次实绩吊运明细、轧钢棒二、轧钢棒三、轧钢上若,装运信息为空!", billetHotsendChangeShift.getCcmNo());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<DestinationStatisticsDetails> statisticsDetailsList1 = new ArrayList<>();
|
|
|
+ List<DestinationStatisticsDetails> statisticsDetailsList2 = new ArrayList<>();
|
|
|
+ List<DestinationStatisticsDetails> statisticsDetailsList3 = new ArrayList<>();
|
|
|
+
|
|
|
+ for (StorageBill storageBill : storageBillList) {
|
|
|
+ if ("棒二".equals(storageBill.getDestination())) {
|
|
|
+ LambdaQueryWrapper<RollClubTwoDetails> queryWrapper4 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper4.eq(RollClubTwoDetails::getCcmNo, billetHotsendChangeShift.getCcmNo())
|
|
|
+ .eq(RollClubTwoDetails::getStorageBillId, storageBill.getId());
|
|
|
+ List<RollClubTwoDetails> rollClubTwoDetailsList = rollClubTwoDetailsService.list(queryWrapper4);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(rollClubTwoDetailsList)) {
|
|
|
+ List<DestinationStatisticsDetails> currentList1 = rollClubTwoDetailsList.stream()
|
|
|
+ .collect(Collectors.groupingBy(RollClubTwoDetails::getSize))
|
|
|
+ .entrySet().stream()
|
|
|
+ .map(entry -> {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<RollClubTwoDetails> group = entry.getValue();
|
|
|
+ // 统计 blankOutput 总和
|
|
|
+ Double totalBlankOutput = group.stream()
|
|
|
+ .mapToDouble(RollClubTwoDetails::getBlankOutput)
|
|
|
+ .sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalBlankOutput = bd.doubleValue();
|
|
|
+ // 统计数量
|
|
|
+ Integer totalNums = group.stream()
|
|
|
+ .mapToInt(detail -> detail.getStackAddr() != null ? 4 : 1).sum();
|
|
|
+ // 取第一个元素的 ccmNo 作为该分组的 ccmNo
|
|
|
+ String ccmNos = group.isEmpty() ? null : group.get(0).getCcmNo();
|
|
|
+ return new DestinationStatisticsDetails(size, totalNums, totalBlankOutput, ccmNos);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ statisticsDetailsList1.addAll(currentList1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ("棒三".equals(storageBill.getDestination())) {
|
|
|
+ LambdaQueryWrapper<RollClubThreeDetails> queryWrapper5 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper5.eq(RollClubThreeDetails::getCcmNo, billetHotsendChangeShift.getCcmNo())
|
|
|
+ .eq(RollClubThreeDetails::getStorageBillId, storageBill.getId());
|
|
|
+ List<RollClubThreeDetails> rollClubThreeDetailsList = rollClubThreeDetailsService.list(queryWrapper5);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(rollClubThreeDetailsList)) {
|
|
|
+ List<DestinationStatisticsDetails> currentList2 = rollClubThreeDetailsList.stream()
|
|
|
+ .collect(Collectors.groupingBy(RollClubThreeDetails::getSize))
|
|
|
+ .entrySet().stream()
|
|
|
+ .map(entry -> {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<RollClubThreeDetails> group = entry.getValue();
|
|
|
+ // 统计 blankOutput 总和
|
|
|
+ Double totalBlankOutput = group.stream()
|
|
|
+ .mapToDouble(RollClubThreeDetails::getBlankOutput)
|
|
|
+ .sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalBlankOutput = bd.doubleValue();
|
|
|
+ // 统计数量
|
|
|
+ Integer totalNums = group.stream()
|
|
|
+ .mapToInt(detail -> detail.getStackAddr() != null ? 4 : 1).sum();
|
|
|
+ // 取第一个元素的 ccmNo 作为该分组的 ccmNo
|
|
|
+ String ccmNos = group.isEmpty() ? null : group.get(0).getCcmNo();
|
|
|
+ return new DestinationStatisticsDetails(size, totalNums, totalBlankOutput, ccmNos);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ statisticsDetailsList2.addAll(currentList2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ("上若".equals(storageBill.getDestination())) {
|
|
|
+ LambdaQueryWrapper<RollOutShippDetails> queryWrapper6 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper6.eq(RollOutShippDetails::getCcmNo, billetHotsendChangeShift.getCcmNo())
|
|
|
+ .eq(RollOutShippDetails::getStorageBillId, storageBill.getId());
|
|
|
+ List<RollOutShippDetails> rollOutShippDetailsList = rollOutShippDetailsService.list(queryWrapper6);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(rollOutShippDetailsList)) {
|
|
|
+ List<DestinationStatisticsDetails> currentList3 = rollOutShippDetailsList.stream()
|
|
|
+ .collect(Collectors.groupingBy(RollOutShippDetails::getSize))
|
|
|
+ .entrySet().stream()
|
|
|
+ .map(entry -> {
|
|
|
+ String size = entry.getKey();
|
|
|
+ List<RollOutShippDetails> group = entry.getValue();
|
|
|
+ // 统计 blankOutput 总和
|
|
|
+ Double totalBlankOutput = group.stream()
|
|
|
+ .mapToDouble(RollOutShippDetails::getBlankOutput)
|
|
|
+ .sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ totalBlankOutput = bd.doubleValue();
|
|
|
+ // 统计数量
|
|
|
+ Integer totalNums = group.stream()
|
|
|
+ .mapToInt(detail -> detail.getStackAddr() != null ? 4 : 1).sum();
|
|
|
+ // 取第一个元素的 ccmNo 作为该分组的 ccmNo
|
|
|
+ String ccmNos = group.isEmpty() ? null : group.get(0).getCcmNo();
|
|
|
+ return new DestinationStatisticsDetails(size, totalNums, totalBlankOutput, ccmNos);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ statisticsDetailsList3.addAll(currentList3);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 合并三个列表并根据 size 分组统计
|
|
|
+ List<DestinationStatisticsDetails> mergedList = Stream.concat(
|
|
|
+ Stream.concat(statisticsDetailsList1.stream(), statisticsDetailsList2.stream()),
|
|
|
+ statisticsDetailsList3.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());
|
|
|
+ // 遍历mergedList获取nums总和
|
|
|
+ int finalAmountTotal = mergedList.stream().mapToInt(DestinationStatisticsDetails::getNums).sum();
|
|
|
+ // 遍历mergedList获取blankOutput总和
|
|
|
+ double finalBlankOutputs = mergedList.stream().mapToDouble(DestinationStatisticsDetails::getBlankOutput).sum();
|
|
|
+ BigDecimal bd = BigDecimal.valueOf(finalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+
|
|
|
+
|
|
|
+ // 装运总支数
|
|
|
+ billetHotsendChangeShift.setCounts(finalAmountTotal);
|
|
|
+
|
|
|
+ // 装运总重量
|
|
|
+ billetHotsendChangeShift.setBlankOutputs(bd.doubleValue());
|
|
|
+
|
|
|
+ // 轧钢棒二明细
|
|
|
+ billetHotsendChangeShift.setRollClubTwoDetails(statisticsDetailsList1);
|
|
|
+
|
|
|
+ // 轧钢棒三明细
|
|
|
+ billetHotsendChangeShift.setRollClubThreeDetails(statisticsDetailsList2);
|
|
|
+
|
|
|
+ // 轧钢上若明细
|
|
|
+ billetHotsendChangeShift.setRollClubShipDetails(statisticsDetailsList3);
|
|
|
+ billetHotsendChangeShiftService.updateById(billetHotsendChangeShift);
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 5号机
|
|
|
+ * 班次
|
|
|
+ * 轧钢棒一明细
|
|
|
+ * 维护到交班信息
|
|
|
+ */
|
|
|
+ @ApiOperation(value="5号机统计班次轧钢棒一明细维护到交班信息", notes="5号机统计班次轧钢棒一明细维护到交班信息")
|
|
|
+ @GetMapping(value = "/executeShiftTask777")
|
|
|
+ public void executeShiftTask77() {
|
|
|
+ log.info("5号机统计班次轧钢棒一明细维护到交班信息!");
|
|
|
+ // 根据铸机号、交班结束时间倒序并不为空,查询交班记录,
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getCcmNo, "5")
|
|
|
+ .orderByDesc(BilletHotsendChangeShift::getChangeShiftTime)
|
|
|
+ .ne(BilletHotsendChangeShift::getChangeShiftTime, null)
|
|
|
+ .last("limit 1");
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
+ if (billetHotsendChangeShift == null) {
|
|
|
+ log.info("{}{}", "5号机查询班次实绩轧钢棒一,交班记录为空!", new Date());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 班次实绩, 统计轧钢棒一
|
|
|
+ List<DestinationStatisticsDetails> rollClubOneDetailsStatisticsList = new ArrayList<>();
|
|
|
+ LambdaQueryWrapper<RollClubOneDetails> queryWrapperDetails = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapperDetails.eq(RollClubOneDetails::getCcmNo, billetHotsendChangeShift.getCcmNo())
|
|
|
+ .eq(RollClubOneDetails::getShift, billetHotsendChangeShift.getShift())
|
|
|
+ .eq(RollClubOneDetails::getShiftGroup, billetHotsendChangeShift.getShiftGroup())
|
|
|
+ .between(RollClubOneDetails::getCreateTime, billetHotsendChangeShift.getCreateTime(), billetHotsendChangeShift.getChangeShiftTime());
|
|
|
+ List<RollClubOneDetails> rollClubOneDetailsList = rollClubOneDetailsService.list(queryWrapperDetails);
|
|
|
+ if (oConvertUtils.listIsEmpty(rollClubOneDetailsList)){
|
|
|
+ log.info("{}{}", "5号机查询班次实绩轧钢棒一,装运单为空!", new Date());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 根据size属性进行分组,并统计每组的总数和总重 直接在流操作中完成分组、求和并保留 4 位小数
|
|
|
+ Map<String, Double> sumBySizeAndCcmNo = rollClubOneDetailsList.stream()
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
+ roll -> roll.getSize() + "_" + roll.getCcmNo(),
|
|
|
+ Collectors.collectingAndThen(
|
|
|
+ Collectors.summingDouble(RollClubOneDetails::getBlankOutput),
|
|
|
+ sum -> BigDecimal.valueOf(sum)
|
|
|
+ .setScale(4, BigDecimal.ROUND_HALF_UP)
|
|
|
+ .doubleValue()
|
|
|
+ )
|
|
|
+ ));
|
|
|
+
|
|
|
+ Map<String, Long> countBySizeAndCcmNo = rollClubOneDetailsList.stream()
|
|
|
+ // 通过一个Function将size和ccmNo组合起来作为分组的键
|
|
|
+ .collect(Collectors.groupingBy(roll -> roll.getSize() + "_" + roll.getCcmNo(),
|
|
|
+ // 直接使用Collectors.counting()来统计每个分组内元素的个数
|
|
|
+ Collectors.counting()
|
|
|
+ ));
|
|
|
+ sumBySizeAndCcmNo.forEach((size, totalWeight) -> {
|
|
|
+ String[] parts = size.split("_");
|
|
|
+ String sizeStr = parts[0];
|
|
|
+ String ccmNoStr = parts[1];
|
|
|
+ long count = countBySizeAndCcmNo.get(size);
|
|
|
+ // 找到第一个匹配size的RollClubOneDetails对象获取其ccmNo值(假设ccmNo在同一size分组内是相同的,如有不同需调整逻辑)
|
|
|
+ rollClubOneDetailsStatisticsList.add(new DestinationStatisticsDetails(sizeStr, (int) count, totalWeight, ccmNoStr));
|
|
|
+ });
|
|
|
+
|
|
|
+ billetHotsendChangeShift.setRollClubOneDetails(rollClubOneDetailsStatisticsList);
|
|
|
+
|
|
|
+ billetHotsendChangeShiftService.updateById(billetHotsendChangeShift);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 6号机
|
|
|
+ * 班次
|
|
|
+ * 轧钢高线明细
|
|
|
+ * 维护到交班信息
|
|
|
+ */
|
|
|
+ @ApiOperation(value="6号机统计班次轧钢高线明细维护到交班信息", notes="6号机统计班次轧钢高线明细维护到交班信息")
|
|
|
+ @GetMapping(value = "/executeShiftTask888")
|
|
|
+ public void executeShiftTask88() {
|
|
|
+ log.info("6号机统计班次轧钢高线明细维护到交班信息!");
|
|
|
+ // 根据铸机号、交班结束时间倒序并不为空,查询交班记录,
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getCcmNo, "6")
|
|
|
+ .orderByDesc(BilletHotsendChangeShift::getChangeShiftTime)
|
|
|
+ .ne(BilletHotsendChangeShift::getChangeShiftTime, null)
|
|
|
+ .last("limit 1");
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
+ if (billetHotsendChangeShift == null) {
|
|
|
+ log.info("{}{}", "6号机查询班次实绩轧钢高线明细,交班记录为空!", new Date());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<DestinationStatisticsDetails> rollHeightStatisticsDetailsList = new ArrayList<>();
|
|
|
+ LambdaQueryWrapper<RollHeightDetails> queryWrapperDetails6 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapperDetails6.eq(RollHeightDetails::getCcmNo, billetHotsendChangeShift.getCcmNo())
|
|
|
+ .eq(RollHeightDetails::getShift, billetHotsendChangeShift.getShift())
|
|
|
+ .eq(RollHeightDetails::getShiftGroup, billetHotsendChangeShift.getShiftGroup())
|
|
|
+ .between(RollHeightDetails::getCreateTime, billetHotsendChangeShift.getCreateTime(), billetHotsendChangeShift.getChangeShiftTime());
|
|
|
+ List<RollHeightDetails> rollHeightDetailsList = rollHeightDetailsService.list(queryWrapperDetails6);
|
|
|
+ if (oConvertUtils.listIsEmpty(rollHeightDetailsList)){
|
|
|
+ log.info("{}{}", "6号机查询班次实绩轧钢高线,明细为空!", new Date());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据size属性进行分组,并统计每组的总数和总重 直接在流操作中完成分组、求和并保留 4 位小数
|
|
|
+ Map<String, Double> sumBySizeAndCcmNo1 = rollHeightDetailsList.stream()
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
+ roll -> roll.getSize() + "_" + roll.getCcmNo(),
|
|
|
+ Collectors.collectingAndThen(
|
|
|
+ Collectors.summingDouble(RollHeightDetails::getBlankOutput),
|
|
|
+ sum -> {
|
|
|
+ DecimalFormat df = new DecimalFormat("#.####");
|
|
|
+ return Double.parseDouble(df.format(sum));
|
|
|
+ }
|
|
|
+ )
|
|
|
+ ));
|
|
|
+
|
|
|
+ Map<String, Long> countBySizeAndCcmNo1 = rollHeightDetailsList.stream()
|
|
|
+ // 通过一个Function将size和ccmNo组合起来作为分组的键
|
|
|
+ .collect(Collectors.groupingBy(roll -> roll.getSize() + "_" + roll.getCcmNo(),
|
|
|
+ // 直接使用Collectors.counting()来统计每个分组内元素的个数
|
|
|
+ Collectors.counting()
|
|
|
+ ));
|
|
|
+
|
|
|
+ sumBySizeAndCcmNo1.forEach((size, totalWeight) -> {
|
|
|
+ String[] parts = size.split("_");
|
|
|
+ String sizeStr = parts[0];
|
|
|
+ String ccmNoStr = parts[1];
|
|
|
+ long count = countBySizeAndCcmNo1.get(size);
|
|
|
+ // 找到第一个匹配size的RollClubOneDetails对象获取其ccmNo值(假设ccmNo在同一size分组内是相同的,如有不同需调整逻辑)
|
|
|
+ rollHeightStatisticsDetailsList.add(new DestinationStatisticsDetails(sizeStr, (int) count, totalWeight, ccmNoStr));
|
|
|
+ });
|
|
|
+
|
|
|
+ billetHotsendChangeShift.setRollClubHeightDetails(rollHeightStatisticsDetailsList);
|
|
|
+ billetHotsendChangeShiftService.updateById(billetHotsendChangeShift);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
@ApiOperation(value="班次实绩查询-分页列表查询", notes="班次实绩查询-分页列表查询")
|
|
|
@GetMapping(value = "/shiftPerformanceList")
|
|
|
public Result<IPage<BilletShiftPerformance>> queryShiftPerformanceListPageList(BilletHotsendChangeShift billetHotsendChangeShift,
|