|
@@ -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) {
|
|
private List<Map<String, Object>> handleStorageBillPrintHotCharge(List<StorageBillPrint> storageBillPrintList, String heatNo) {
|
|
List<Map<String, Object>> hotChargeList = new ArrayList<>();
|
|
List<Map<String, Object>> hotChargeList = new ArrayList<>();
|
|
List<Map<String, Object>> finalResult = new ArrayList<>();
|
|
List<Map<String, Object>> finalResult = new ArrayList<>();
|