Browse Source

当班明细接口开发

qiangxuan 3 months ago
parent
commit
7ad8f98077

+ 7 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/controller/StorageBillController.java

@@ -615,4 +615,11 @@ public class StorageBillController extends JeecgController<StorageBill, IStorage
 		OnDutyStorageBillStatistics result = storageBillService.queryOnDutyAllStorageBillInfoHandle(ccmNo);
 		return Result.OK(result);
 	}
+
+	@ApiOperation(value="当班明细热送热装堆垛-班次看板实绩", notes="当班明细热送热装堆垛-班次看板实绩")
+	@GetMapping(value = "/queryOnDutyDetail")
+	public Result<OnDutyDetailStatistics> queryOnDutyDeatailHandle(@RequestParam(name="ccmNo") String ccmNo) {
+		OnDutyDetailStatistics result = storageBillService.queryOnDutyDeatailHandle(ccmNo);
+		return Result.OK(result);
+	}
 }

+ 22 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/entity/OnDutyDetailStatistics.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.billet.storageBill.entity;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class OnDutyDetailStatistics {
+
+    private Integer hotSendSum;
+
+    private Integer hotChargeSum;
+
+    private Integer stackingSum;
+
+    private BigDecimal hotSendTotalWeight;
+
+    private BigDecimal hotChargeTotalWeight;
+
+    private BigDecimal stackingTotalWeight;
+
+}

+ 2 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/service/IStorageBillService.java

@@ -49,4 +49,6 @@ public interface IStorageBillService extends IService<StorageBill> {
     OnDutyStorageBill queryOnDutyStorageBillInfoHandle(String ccmNo);
 
     OnDutyStorageBillStatistics queryOnDutyAllStorageBillInfoHandle(String ccmNo);
+
+    OnDutyDetailStatistics queryOnDutyDeatailHandle(String ccmNo);
 }

+ 152 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/service/impl/StorageBillServiceImpl.java

@@ -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;
+    }
+
 
     /**
      * 生成综合唯一编码