Explorar o código

当班班次实绩添加上个班ID。查询所有堆垛数据

qiangxuan hai 3 semanas
pai
achega
585869305d

+ 80 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/billetOriginalProductRecord/controller/BilletOriginalProductRecordController.java

@@ -1082,6 +1082,86 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
 	 }
 
 
+	 @ApiOperation(value="所有钢坯堆垛信息查询", notes="所有钢坯堆垛信息查询")
+	 @GetMapping(value = "/queryBilletStackInfoByCcmNo")
+	 public Result<List<Map<String, Object>>> queryBilletStackInfoByCcmNo(@RequestParam(name="ccmNo", required = true) String ccmNo,
+																		 @RequestParam(name="typeConfigId", required = true) String typeConfigId) {
+		 List<Map<String, Object>> resultList = new ArrayList<>();
+
+		 // 查询所有可能的位置,并按layer和address排序(低layer优先,address从1到9)
+		 List<StackingAndLoadingVehicles> stackingAndLoadingVehiclesList = stackingAndLoadingVehiclesMapper.selectList(
+				 new QueryWrapper<StackingAndLoadingVehicles>()
+						 .eq("ccm_no", ccmNo)
+						 .eq("type_config_id", typeConfigId)
+						 .isNotNull("heat_no")      // 添加 heatNo 不为 null 的条件
+						 .isNotNull("size")         // 添加 size 不为 null 的条件
+						 .isNotNull("billet_nos")); // 添加 billetNos 不为 null 的条件
+		 if (oConvertUtils.listIsEmpty(stackingAndLoadingVehiclesList)){
+			 return Result.OK(resultList);
+		 }
+		 // 根据 heatNo 分组
+		 Map<String, List<StackingAndLoadingVehicles>> heatNoGroupMap = stackingAndLoadingVehiclesList.stream()
+				 .collect(Collectors.groupingBy(StackingAndLoadingVehicles::getHeatNo));
+
+		 // 处理每个炉号分组
+		 for (Map.Entry<String, List<StackingAndLoadingVehicles>> heatNoEntry : heatNoGroupMap.entrySet()) {
+			 String heatNo = heatNoEntry.getKey();
+			 List<StackingAndLoadingVehicles> heatNoItems = heatNoEntry.getValue();
+
+			 // 根据 size 进一步分组
+			 Map<String, List<StackingAndLoadingVehicles>> sizeGroupMap = heatNoItems.stream()
+					 .collect(Collectors.groupingBy(StackingAndLoadingVehicles::getSize));
+
+			 // 初始化炉号总数量和总重量
+			 int totalCount = 0;
+			 BigDecimal totalWeight = BigDecimal.ZERO;
+
+			 // 构建明细列表
+			 JSONArray detailsArray = new JSONArray();
+
+			 // 处理每个 size 分组
+			 for (Map.Entry<String, List<StackingAndLoadingVehicles>> sizeEntry : sizeGroupMap.entrySet()) {
+				 String size = sizeEntry.getKey();
+				 List<StackingAndLoadingVehicles> sizeItems = sizeEntry.getValue();
+
+				 // 计算该 size 的数量(记录数)
+				 int sizeCount = sizeItems.size();
+
+				 // 计算单根重量:size/1000 * 4 * 0.2265
+				 BigDecimal sizeValue = new BigDecimal(size);
+				 BigDecimal singleWeight = sizeValue.divide(BigDecimal.valueOf(1000), 10, RoundingMode.HALF_UP)
+						 .multiply(BigDecimal.valueOf(4))
+						 .multiply(BigDecimal.valueOf(0.2265));
+
+				 // 计算该 size 的总重量
+				 BigDecimal sizeTotalWeight = singleWeight.multiply(BigDecimal.valueOf(sizeCount))
+						 .setScale(4, RoundingMode.HALF_UP);
+
+				 // 更新炉号总数量和总重量
+				 totalCount += sizeCount;
+				 totalWeight = totalWeight.add(sizeTotalWeight);
+
+				 // 添加明细项
+				 JSONObject detail = new JSONObject();
+				 detail.put("stackingCount", sizeCount);
+				 detail.put("stackingLength", size);
+				 detail.put("stackingWeight", sizeTotalWeight.toString());
+				 detailsArray.add(detail);
+			 }
+
+			 // 构建结果项
+			 Map<String, Object> resultItem = new LinkedHashMap<>();
+			 resultItem.put("heatNo", heatNo);
+			 resultItem.put("totalCount", totalCount);
+			 resultItem.put("totalWeight", totalWeight.setScale(4, RoundingMode.HALF_UP).toString());
+			 resultItem.put("details", detailsArray);
+
+			 resultList.add(resultItem);
+		 }
+		 return Result.OK(resultList);
+	 }
+
+
 	 private List<Map<String, Object>> handleStorageBillPrintHotCharge(List<StorageBillPrint> storageBillPrintList, String heatNo) {
 		 List<Map<String, Object>> hotChargeList = new ArrayList<>();
 		 List<Map<String, Object>> finalResult = new ArrayList<>();

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

@@ -19,4 +19,6 @@ public class OnDutyInfo {
     private String standNoSize;
     // 自动手动定尺
     private String cutToLength;
+    // 上个班的id
+    private String lastShiftId;
 }

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

@@ -1347,6 +1347,16 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
             if (billetHotsendChangeShift == null){
                 return onDutyInfo;
             }
+            // 查询上个交班记录
+            LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapperLast = new LambdaQueryWrapper<>();
+            queryWrapperLast.eq(BilletHotsendChangeShift::getCcmNo, ccmNo)
+                            .isNotNull(BilletHotsendChangeShift::getChangeShiftTime)
+                            .orderByDesc(BilletHotsendChangeShift::getCreateTime)
+                            .last("limit 1");
+            BilletHotsendChangeShift billetHotsendChangeShiftLast = billetHotsendChangeShiftService.getOne(queryWrapperLast);
+            if (billetHotsendChangeShiftLast != null){
+                onDutyInfo.setLastShiftId(billetHotsendChangeShiftLast.getId());
+            }
         }else {
             // 根据铸机号、交班记录ID,获取交班记录中的班别、班次、创建时间
             LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();