|
@@ -1688,6 +1688,158 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
|
|
|
return onDutyStorageBillStatistics;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public OnDutyDetailStatistics queryOnDutyDeatailHandle(String ccmNo) {
|
|
|
+ OnDutyDetailStatistics onDutyDetailStatistics = new OnDutyDetailStatistics();
|
|
|
+ // 从 Redis 获取班次信息
|
|
|
+ String shiftGroup = getShiftInfo(ccmNo, "class:shift:group:%s");
|
|
|
+ String shift = getShiftInfo(ccmNo, "class:shift:%s");
|
|
|
+ // 根据铸机号、缓存中的当前班次,倒序最新一条,获取交班记录中的创建时间
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getCcmNo, ccmNo)
|
|
|
+ .eq(BilletHotsendChangeShift::getShift, shift)
|
|
|
+ .eq(BilletHotsendChangeShift::getShiftGroup, shiftGroup)
|
|
|
+ .orderByDesc(BilletHotsendChangeShift::getCreateTime)
|
|
|
+ .last("limit 1");
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
+ if (billetHotsendChangeShift == null){
|
|
|
+ log.info("{}{}", "查询当班热送热装堆垛明细信息失败,交班记录为空!", ccmNo + "失败时间:" + new Date());
|
|
|
+ return onDutyDetailStatistics;
|
|
|
+ }
|
|
|
+
|
|
|
+ int hotSendSum = 0;
|
|
|
+ double hotSendTotalWeight = 0d;
|
|
|
+ int hotChargeSum = 0;
|
|
|
+ double hotChargeTotalWeight = 0d;
|
|
|
+ int stackingSum = 0;
|
|
|
+ double stackingTotalWeight = 0d;
|
|
|
+ // 根据铸机号、班组、班别、时间范围。查询棒一明细表
|
|
|
+ LambdaQueryWrapper<RollClubOneDetails> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper1.eq(RollClubOneDetails::getCcmNo, ccmNo)
|
|
|
+ .eq(RollClubOneDetails::getShift, shift)
|
|
|
+ .eq(RollClubOneDetails::getShiftGroup, shiftGroup)
|
|
|
+ .between(RollClubOneDetails::getCreateTime, billetHotsendChangeShift.getCreateTime(), new Date());
|
|
|
+ List<RollClubOneDetails> rollClubOneDetailsList = rollClubOneDetailsService.list(queryWrapper1);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(rollClubOneDetailsList)){
|
|
|
+ // 棒一热送总数
|
|
|
+ hotSendSum = rollClubOneDetailsList.size();
|
|
|
+ // 棒一热送出坯量
|
|
|
+ hotSendTotalWeight = rollClubOneDetailsList.stream().mapToDouble(RollClubOneDetails::getBlankOutput).sum();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据铸机号、班组、班别、时间范围。查询棒二明细表
|
|
|
+ LambdaQueryWrapper<RollClubTwoDetails> queryWrapper2 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper2.eq(RollClubTwoDetails::getCcmNo, ccmNo)
|
|
|
+ .eq(RollClubTwoDetails::getShift, shift)
|
|
|
+ .eq(RollClubTwoDetails::getShiftGroup, shiftGroup)
|
|
|
+ .between(RollClubTwoDetails::getCreateTime, billetHotsendChangeShift.getCreateTime(), new Date());
|
|
|
+ List<RollClubTwoDetails> rollClubTwoDetailsList = rollClubTwoDetailsService.list(queryWrapper2);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(rollClubTwoDetailsList)){
|
|
|
+ // 棒二热装总支数 获取堆垛编号为空的条数,即为热装
|
|
|
+ int count = (int) rollClubTwoDetailsList.stream().filter(details -> details.getStackAddr() == null).count();
|
|
|
+ hotChargeSum = hotChargeSum + count;
|
|
|
+
|
|
|
+ // 棒二热装出坯量 统计 StackAddr 为 null 时 blankOutput 的总和
|
|
|
+ double hotChargeTotalBlankOutput = rollClubTwoDetailsList.stream()
|
|
|
+ .filter(details -> details.getStackAddr() == null)
|
|
|
+ .mapToDouble(RollClubTwoDetails::getBlankOutput).sum();
|
|
|
+ hotChargeTotalWeight = hotChargeTotalWeight + hotChargeTotalBlankOutput;
|
|
|
+
|
|
|
+ // 棒二堆垛总支数 获取堆垛编号不为空的条数,即为堆垛
|
|
|
+ int count1 = rollClubTwoDetailsList.stream()
|
|
|
+ .mapToInt(details -> details.getStackAddr() != null && !details.getStackAddr().isEmpty() ? 4 : 1).sum();
|
|
|
+ stackingSum = stackingSum + count1;
|
|
|
+ // 棒二堆垛出坯量 获取堆垛编号不为空的条数,即为堆垛
|
|
|
+ double stackingTotalBlankOutput = rollClubTwoDetailsList.stream()
|
|
|
+ .filter(details -> details.getStackAddr() != null)
|
|
|
+ .mapToDouble(RollClubTwoDetails::getBlankOutput).sum();
|
|
|
+ stackingTotalWeight = stackingTotalWeight + stackingTotalBlankOutput;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据铸机号、班组、班别、时间范围。查询棒三明细表
|
|
|
+ LambdaQueryWrapper<RollClubThreeDetails> queryWrapper3 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper3.eq(RollClubThreeDetails::getCcmNo, ccmNo)
|
|
|
+ .eq(RollClubThreeDetails::getShift, shift)
|
|
|
+ .eq(RollClubThreeDetails::getShiftGroup, shiftGroup)
|
|
|
+ .between(RollClubThreeDetails::getCreateTime, billetHotsendChangeShift.getCreateTime(), new Date());
|
|
|
+ List<RollClubThreeDetails> rollClubThreeDetailsList = rollClubThreeDetailsService.list(queryWrapper3);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(rollClubThreeDetailsList)){
|
|
|
+ // 棒三热装总支数
|
|
|
+ int count = (int) rollClubThreeDetailsList.stream().filter(details -> details.getStackAddr() == null).count();
|
|
|
+ hotChargeSum = hotChargeSum + count;
|
|
|
+ // 棒三热装出坯量
|
|
|
+ double hotChargeTotalBlankOutput = rollClubThreeDetailsList.stream()
|
|
|
+ .filter(details -> details.getStackAddr() == null)
|
|
|
+ .mapToDouble(RollClubThreeDetails::getBlankOutput).sum();
|
|
|
+ hotChargeTotalWeight = hotChargeTotalWeight + hotChargeTotalBlankOutput;
|
|
|
+
|
|
|
+ // 棒三堆垛总支数
|
|
|
+ int count1 = rollClubThreeDetailsList.stream()
|
|
|
+ .mapToInt(details -> details.getStackAddr() != null && !details.getStackAddr().isEmpty() ? 4 : 1).sum();
|
|
|
+ stackingSum = stackingSum + count1;
|
|
|
+ // 棒三堆垛出坯量
|
|
|
+ double stackingTotalBlankOutput = rollClubThreeDetailsList.stream()
|
|
|
+ .filter(details -> details.getStackAddr() != null)
|
|
|
+ .mapToDouble(RollClubThreeDetails::getBlankOutput).sum();
|
|
|
+ stackingTotalWeight = stackingTotalWeight + stackingTotalBlankOutput;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据铸机号、班组、班别、时间范围。查询高线明细表
|
|
|
+ LambdaQueryWrapper<RollHeightDetails> queryWrapper4 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper4.eq(RollHeightDetails::getCcmNo, ccmNo)
|
|
|
+ .eq(RollHeightDetails::getShift, shift)
|
|
|
+ .eq(RollHeightDetails::getShiftGroup, shiftGroup)
|
|
|
+ .between(RollHeightDetails::getCreateTime, billetHotsendChangeShift.getCreateTime(), new Date());
|
|
|
+ List<RollHeightDetails> rollHeightDetailsList = rollHeightDetailsService.list(queryWrapper4);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(rollClubTwoDetailsList)){
|
|
|
+ // 高线总支数 高线属于热送
|
|
|
+ int hotSendHeightSum = rollHeightDetailsList.stream()
|
|
|
+ .mapToInt(details -> details.getStackAddr() != null && !details.getStackAddr().isEmpty() ? 4 : 1).sum();
|
|
|
+ hotSendSum = hotSendSum + hotSendHeightSum;
|
|
|
+ // 高线总出坯量 高线属于热送
|
|
|
+ double hotChargeHeightTotalWeight = rollClubTwoDetailsList.stream().mapToDouble(RollClubTwoDetails::getBlankOutput).sum();
|
|
|
+ hotSendTotalWeight = hotSendTotalWeight + hotChargeHeightTotalWeight;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据铸机号、班组、班别、时间范围。查询上若明细表
|
|
|
+ LambdaQueryWrapper<RollOutShippDetails> queryWrapper5 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper5.eq(RollOutShippDetails::getCcmNo, ccmNo)
|
|
|
+ .eq(RollOutShippDetails::getShift, shift)
|
|
|
+ .eq(RollOutShippDetails::getShiftGroup, shiftGroup)
|
|
|
+ .between(RollOutShippDetails::getCreateTime, billetHotsendChangeShift.getCreateTime(), new Date());
|
|
|
+ List<RollOutShippDetails> rollOutShippDetailsList = rollOutShippDetailsService.list(queryWrapper5);
|
|
|
+ if (oConvertUtils.listIsNotEmpty(rollOutShippDetailsList)){
|
|
|
+ // 上若热装总支数
|
|
|
+ int count = (int) rollOutShippDetailsList.stream().filter(details -> details.getStackAddr() == null).count();
|
|
|
+ hotChargeSum = hotChargeSum + count;
|
|
|
+ // 上若热装出坯量
|
|
|
+ double hotChargeShippTotalWeight = rollOutShippDetailsList.stream()
|
|
|
+ .filter(details -> details.getStackAddr() == null)
|
|
|
+ .mapToDouble(RollOutShippDetails::getBlankOutput).sum();
|
|
|
+ hotChargeTotalWeight = hotChargeTotalWeight + hotChargeShippTotalWeight;
|
|
|
+ // 上若堆垛总支数
|
|
|
+ int count1 = rollOutShippDetailsList.stream()
|
|
|
+ .mapToInt(details -> details.getStackAddr() != null && !details.getStackAddr().isEmpty() ? 4 : 1).sum();
|
|
|
+ stackingSum = stackingSum + count1;
|
|
|
+ // 上若堆垛出坯量
|
|
|
+ double stackingShippTotalWeight = rollOutShippDetailsList.stream()
|
|
|
+ .filter(details -> details.getStackAddr() != null)
|
|
|
+ .mapToDouble(RollOutShippDetails::getBlankOutput).sum();
|
|
|
+ stackingTotalWeight = stackingTotalWeight + stackingShippTotalWeight;
|
|
|
+ }
|
|
|
+ BigDecimal finalHotChargeTotalWeight = BigDecimal.valueOf(hotChargeTotalWeight).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal finalHotSendTotalWeight = BigDecimal.valueOf(hotSendTotalWeight).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal finalStackingTotalWeight = BigDecimal.valueOf(stackingTotalWeight).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
+ onDutyDetailStatistics.setHotChargeSum(hotChargeSum);
|
|
|
+ onDutyDetailStatistics.setHotChargeTotalWeight(finalHotChargeTotalWeight);
|
|
|
+ onDutyDetailStatistics.setHotSendSum(hotSendSum);
|
|
|
+ onDutyDetailStatistics.setHotSendTotalWeight(finalHotSendTotalWeight);
|
|
|
+ onDutyDetailStatistics.setStackingSum(stackingSum);
|
|
|
+ onDutyDetailStatistics.setStackingTotalWeight(finalStackingTotalWeight);
|
|
|
+ return onDutyDetailStatistics;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 生成综合唯一编码
|