瀏覽代碼

新增查询储运中心工作台车次信息以及根据装运单id查询储运中心工作台车次对应信息接口

lingpeng.li 2 月之前
父節點
當前提交
90946e019b

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

@@ -42,6 +42,7 @@ import org.jeecg.modules.billet.rollHeight.service.IRollHeightDetailsService;
 import org.jeecg.modules.billet.rollOutShipp.entity.RollOutShippDetails;
 import org.jeecg.modules.billet.rollOutShipp.service.IRollOutShippDetailsService;
 import org.jeecg.modules.billet.storageBill.dto.HotChargingQueryDTO;
+import org.jeecg.modules.billet.storageBill.dto.StorageCenterQueryDTO;
 import org.jeecg.modules.billet.storageBill.entity.*;
 import org.jeecg.modules.billet.storageBill.service.IStorageBillService;
 import org.jeecg.modules.billet.storageBill.vo.*;
@@ -1467,6 +1468,23 @@ public class StorageBillController extends JeecgController<StorageBill, IStorage
 		return Result.OK(result);
 	}
 
+	@ApiOperation(value = "储运中心工作台车次信息", notes = "储运中心工作台车次信息")
+	@GetMapping(value = "/storageCenterCarInfo")
+	public Result<StorageCenterCarVO> storageCenterCarInfo(StorageCenterQueryDTO queryDTO) {
+
+		StorageCenterCarVO storageCenterCarVO = storageBillService.storageCenterCarInfo(queryDTO);
+		return Result.OK(storageCenterCarVO);
+	}
+
+
+	@ApiOperation(value = "根据装运单id查询储运中心工作台车次信息", notes = "根据装运单id查询储运中心工作台车次信息")
+	@GetMapping(value = "/storageCenterCarById")
+	public Result<StorageCenterCarDetailVO> storageCenterCarInfo(@RequestParam(name="storageBillId") String storageBillId) {
+
+		StorageCenterCarDetailVO storageCenterCarDetailVO = storageBillService.storageCenterCarById(storageBillId);
+		return Result.OK(storageCenterCarDetailVO);
+	}
+
 	/**
 	 * 计算 本车车次
 	 * @param ccmNo

+ 12 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/dto/StorageCenterQueryDTO.java

@@ -0,0 +1,12 @@
+package org.jeecg.modules.billet.storageBill.dto;
+
+import lombok.Data;
+
+@Data
+public class StorageCenterQueryDTO {
+
+    /**
+     * 当前日期
+     */
+    private String currentDate;
+}

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

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.actualControl.billetActual.billetActual.entity.BilletBasicInfo;
 import org.jeecg.modules.billet.billetHotsend.entity.BilletHotsendDetailsVo;
+import org.jeecg.modules.billet.storageBill.dto.StorageCenterQueryDTO;
 import org.jeecg.modules.billet.storageBill.entity.*;
 import org.jeecg.modules.billet.storageBill.vo.*;
 
@@ -82,5 +83,9 @@ public interface IStorageBillService extends IService<StorageBill> {
 
     SteelDetailsVo queryOnDutySteelReceive(String ccmNo);
 
+    StorageCenterCarVO storageCenterCarInfo(StorageCenterQueryDTO queryDTO);
+
+    StorageCenterCarDetailVO storageCenterCarById(String storageBillId);
+
 
 }

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

@@ -48,6 +48,7 @@ import org.jeecg.modules.billet.rollOutShipp.service.IRollOutShippService;
 import org.jeecg.modules.billet.stackingAndLoadingVehicles.entity.StackingAndLoadingVehicles;
 import org.jeecg.modules.billet.stackingAndLoadingVehicles.entity.StackingUpLog;
 import org.jeecg.modules.billet.stackingAndLoadingVehicles.service.IStackingUpLogService;
+import org.jeecg.modules.billet.storageBill.dto.StorageCenterQueryDTO;
 import org.jeecg.modules.billet.storageBill.entity.*;
 import org.jeecg.modules.billet.storageBill.mapper.StorageBillMapper;
 import org.jeecg.modules.billet.storageBill.service.IStorageBillService;
@@ -3396,6 +3397,380 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
     }
 
 
+    @Override
+    public StorageCenterCarVO storageCenterCarInfo(StorageCenterQueryDTO queryDTO) {
+
+        StorageCenterCarVO storageCenterCarVO = new StorageCenterCarVO();
+        LambdaQueryWrapper<StorageBill> billQueryWrapper = new LambdaQueryWrapper<>();
+
+        billQueryWrapper.gt(StorageBill::getAmountTotal, 0)
+                .between(StorageBill::getCreateTime, DateUtils.getStartOfDay(queryDTO.getCurrentDate()), DateUtils.getEndOfDay(queryDTO.getCurrentDate()))
+                .isNotNull(StorageBill::getDestination) // 过滤 null
+                .ne(StorageBill::getDestination, "");   // 过滤空字符串
+
+        List<StorageBill> storageBillList = storageBillMapper.selectList(billQueryWrapper);
+
+        if (oConvertUtils.listIsEmpty(storageBillList)) {
+            return storageCenterCarVO;
+        }
+        int allCarNum = storageBillList.size();
+
+        Map<String, List<StorageBill>> groupedByDestination = storageBillList.stream()
+                .filter(bill -> bill.getDestination() != null && !bill.getDestination().trim().isEmpty()) // 过滤 null 和空字符串
+                .collect(Collectors.groupingBy(StorageBill::getDestination));
+
+        List<StorageCenterCarVO.SizeDetail> sizeList = new ArrayList<>();
+
+
+        if (groupedByDestination.containsKey("棒二")) {
+
+            List<StorageCenterCarVO.RollDetail> twoDetailList = new ArrayList<>();
+
+            List<StorageBill> twoList = groupedByDestination.get("棒二");
+
+            twoDetailList = convertToRollDetailList(twoList);
+
+            storageCenterCarVO.setRollClubTwoDetails(twoDetailList);
+
+            List<StorageCenterCarVO.SizeDetail> twoSizeList = new ArrayList<>();
+            List<String> billIds = twoList.stream().map(StorageBill::getId).collect(Collectors.toList());
+            List<RollClubTwoDetails> rollClubTwoDetailsList = Collections.emptyList();
+
+            if (!billIds.isEmpty()) {
+                LambdaQueryWrapper<RollClubTwoDetails> rollClubQuery = new LambdaQueryWrapper<>();
+                rollClubQuery.in(RollClubTwoDetails::getStorageBillId, billIds);
+                rollClubTwoDetailsList = rollClubTwoDetailsService.list(rollClubQuery);
+            }
+
+            if (!CollectionUtils.isEmpty(rollClubTwoDetailsList)) {
+                twoSizeList = rollClubTwoDetailsList.stream()
+                        .map(rollClubTwoDetails -> {
+                            StorageCenterCarVO.SizeDetail sizeDetail = new StorageCenterCarVO.SizeDetail();
+                            sizeDetail.setSize(rollClubTwoDetails.getSize());
+                            sizeDetail.setSizeAmount((rollClubTwoDetails.getStackAddr() != null && !rollClubTwoDetails.getStackAddr().isEmpty()) ? 4 : 1);
+                            sizeDetail.setSizeWeight(BigDecimal.valueOf(rollClubTwoDetails.getBlankOutput()).setScale(4, RoundingMode.HALF_UP));
+                            return sizeDetail;
+                        }).collect(Collectors.toList());
+            }
+            sizeList.addAll(twoSizeList);
+
+            storageCenterCarVO.setRollClubTwoDetails(twoDetailList);
+
+        }
+
+        if (groupedByDestination.containsKey("棒三")) {
+
+            List<StorageCenterCarVO.RollDetail> threeDetailList = new ArrayList<>();
+
+            List<StorageBill> threeList = groupedByDestination.get("棒三");
+
+            threeDetailList = convertToRollDetailList(threeList);
+
+
+            List<StorageCenterCarVO.SizeDetail> threeSizeList = new ArrayList<>();
+            List<String> billIds = threeList.stream().map(StorageBill::getId).collect(Collectors.toList());
+            List<RollClubThreeDetails> rollClubThreeDetailsList = Collections.emptyList();
+
+            if (!billIds.isEmpty()) {
+                LambdaQueryWrapper<RollClubThreeDetails> rollClubQuery = new LambdaQueryWrapper<>();
+                rollClubQuery.in(RollClubThreeDetails::getStorageBillId, billIds);
+                rollClubThreeDetailsList = rollClubThreeDetailsService.list(rollClubQuery);
+            }
+
+            if (!CollectionUtils.isEmpty(rollClubThreeDetailsList)) {
+                threeSizeList = rollClubThreeDetailsList.stream()
+                        .map(rollClubThreeDetails -> {
+                            StorageCenterCarVO.SizeDetail sizeDetail = new StorageCenterCarVO.SizeDetail();
+                            sizeDetail.setSize(rollClubThreeDetails.getSize());
+                            sizeDetail.setSizeAmount((rollClubThreeDetails.getStackAddr() != null && !rollClubThreeDetails.getStackAddr().isEmpty()) ? 4 : 1);
+                            sizeDetail.setSizeWeight(BigDecimal.valueOf(rollClubThreeDetails.getBlankOutput()).setScale(4, RoundingMode.HALF_UP));
+                            return sizeDetail;
+                        }).collect(Collectors.toList());
+            }
+
+
+            sizeList.addAll(threeSizeList);
+
+            storageCenterCarVO.setRollClubThreeDetails(threeDetailList);
+
+        }
+        if (groupedByDestination.containsKey("上若")) {
+
+            List<StorageCenterCarVO.RollDetail> outDetailList = new ArrayList<>();
+
+            List<StorageBill> outList = groupedByDestination.get("上若");
+
+            outDetailList = convertToRollDetailList(outList);
+
+            List<StorageCenterCarVO.SizeDetail> outSizeList = new ArrayList<>();
+            List<String> billIds = outList.stream().map(StorageBill::getId).collect(Collectors.toList());
+            List<RollOutShippDetails> rollOutShippDetailsList = Collections.emptyList();
+
+            if (!billIds.isEmpty()) {
+                LambdaQueryWrapper<RollOutShippDetails> rollClubQuery = new LambdaQueryWrapper<>();
+                rollClubQuery.in(RollOutShippDetails::getStorageBillId, billIds);
+                rollOutShippDetailsList = rollOutShippDetailsService.list(rollClubQuery);
+            }
+
+            if (!CollectionUtils.isEmpty(rollOutShippDetailsList)) {
+                outSizeList = rollOutShippDetailsList.stream()
+                        .map(rollOutShippDetails -> {
+                            StorageCenterCarVO.SizeDetail sizeDetail = new StorageCenterCarVO.SizeDetail();
+                            sizeDetail.setSize(rollOutShippDetails.getSize());
+                            sizeDetail.setSizeAmount((rollOutShippDetails.getStackAddr() != null && !rollOutShippDetails.getStackAddr().isEmpty()) ? 4 : 1);
+                            sizeDetail.setSizeWeight(BigDecimal.valueOf(rollOutShippDetails.getBlankOutput()).setScale(4, RoundingMode.HALF_UP));
+                            return sizeDetail;
+                        }).collect(Collectors.toList());
+            }
+            sizeList.addAll(outSizeList);
+
+            storageCenterCarVO.setRollOutShippDetails(outDetailList);
+
+        }
+
+        // 计算总支数(所有 sizeAmount 之和)
+        int totalSizeAmount = sizeList.stream()
+                .mapToInt(StorageCenterCarVO.SizeDetail::getSizeAmount)
+                .sum();
+
+        // 计算总重量(所有 sizeWeight 之和)
+        BigDecimal totalSizeWeight = sizeList.stream()
+                .map(StorageCenterCarVO.SizeDetail::getSizeWeight)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+        storageCenterCarVO.setAmountTotal(totalSizeAmount);
+        storageCenterCarVO.setTotalWeight(totalSizeWeight);
+
+        // 按 size 分组并累加 sizeAmount 和 sizeWeight
+        Map<String, StorageCenterCarVO.SizeDetail> groupedSizeMap = sizeList.stream()
+                .collect(Collectors.toMap(
+                        StorageCenterCarVO.SizeDetail::getSize,
+                        sizeDetail -> sizeDetail,
+                        (existing, incoming) -> {
+                            existing.setSizeAmount(existing.getSizeAmount() + incoming.getSizeAmount());
+                            existing.setSizeWeight(existing.getSizeWeight().add(incoming.getSizeWeight()));
+                            return existing;
+                        }
+                ));
+
+        // 将合并后的结果转换回 List
+        List<StorageCenterCarVO.SizeDetail> mergedSizeList = new ArrayList<>(groupedSizeMap.values());
+
+        // 设置到 storageCenterCarVO
+        storageCenterCarVO.setSizeDetails(mergedSizeList);
+
+
+        storageCenterCarVO.setTotalCarNum(allCarNum);
+
+
+        return storageCenterCarVO;
+    }
+
+
+    @Override
+    public StorageCenterCarDetailVO storageCenterCarById(String storageBillId) {
+        StorageCenterCarDetailVO storageCenterCarDetailVO = new StorageCenterCarDetailVO();
+
+        LambdaQueryWrapper<StorageBill> billQueryWrapper = new LambdaQueryWrapper<>();
+        billQueryWrapper.eq(StorageBill::getId, storageBillId);
+        StorageBill bill = storageBillMapper.selectOne(billQueryWrapper);
+
+        BeanUtils.copyProperties(bill, storageCenterCarDetailVO);
+
+        if (bill.getHeatNo() == null || bill.getHeatNo().isEmpty()) {
+            return storageCenterCarDetailVO;
+        }
+
+        List<String> heatNoList = Arrays.asList(bill.getHeatNo().split(","));
+
+        List<StorageCenterCarDetailVO.heatNoInfo> heatNoInfos = new ArrayList<>();
+        List<StorageCenterCarDetailVO.heatNoDetail> heatNoDetails = new ArrayList<>();
+
+        // **提前查询所有数据,存入 Map**
+        Map<String, List<RollClubTwoDetails>> rollClubTwoMap = new HashMap<>();
+        Map<String, List<RollClubThreeDetails>> rollClubThreeMap = new HashMap<>();
+        Map<String, List<RollOutShippDetails>> rollOutShippMap = new HashMap<>();
+
+        if ("棒二".equals(bill.getDestination())) {
+            rollClubTwoMap = rollClubTwoDetailsService.list(
+                            new LambdaQueryWrapper<RollClubTwoDetails>().eq(RollClubTwoDetails::getStorageBillId, bill.getId()))
+                    .stream().collect(Collectors.groupingBy(RollClubTwoDetails::getHeatNo));
+        } else if ("棒三".equals(bill.getDestination())) {
+            rollClubThreeMap = rollClubThreeDetailsService.list(
+                            new LambdaQueryWrapper<RollClubThreeDetails>().eq(RollClubThreeDetails::getStorageBillId, bill.getId()))
+                    .stream().collect(Collectors.groupingBy(RollClubThreeDetails::getHeatNo));
+        } else if ("上若".equals(bill.getDestination())) {
+            rollOutShippMap = rollOutShippDetailsService.list(
+                            new LambdaQueryWrapper<RollOutShippDetails>().eq(RollOutShippDetails::getStorageBillId, bill.getId()))
+                    .stream().collect(Collectors.groupingBy(RollOutShippDetails::getHeatNo));
+        }
+
+        // **遍历 heatNoList 进行处理**
+        for (String s : heatNoList) {
+            StorageCenterCarDetailVO.heatNoDetail heatNoDetail = new StorageCenterCarDetailVO.heatNoDetail();
+            heatNoDetail.setHeatNo(s);
+            List<StorageCenterCarDetailVO.assemblyNumberDetail> assemblyNumberDetails = new ArrayList<>();
+            List<StorageCenterCarDetailVO.assemblyNumberDetail> handleSizeList = new ArrayList<>();
+
+            List<RollClubTwoDetails> rollClubTwoDetailsList = rollClubTwoMap.get(s);
+            List<RollClubThreeDetails> rollClubThreeDetailsList = rollClubThreeMap.get(s);
+            List<RollOutShippDetails> rollOutShippDetailsList = rollOutShippMap.get(s);
+
+            if (rollClubTwoDetailsList != null) {
+                // 处理 "棒二" 的逻辑
+                rollClubTwoDetailsList.stream()
+                        .filter(item -> item.getAssemblyNumber() != null)
+                        .collect(Collectors.groupingBy(RollClubTwoDetails::getAssemblyNumber))
+                        .forEach((assemblyNumber, list) -> {
+                            String billetNoStr = list.stream()
+                                    .map(RollClubTwoDetails::getBilletNo)
+                                    .filter(Objects::nonNull)
+                                    .distinct()
+                                    .collect(Collectors.joining("、"));
+
+                            BigDecimal totalBlankOutput = list.stream()
+                                    .map(RollClubTwoDetails::getBlankOutput)
+                                    .filter(Objects::nonNull)
+                                    .map(BigDecimal::valueOf)
+                                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                            String size = list.get(0).getSize();
+
+                            int sum = list.stream()
+                                    .mapToInt(item -> (item.getStackAddr() != null && !item.getStackAddr().isEmpty()) ? 4 : 1)
+                                    .sum();
+
+                            StorageCenterCarDetailVO.assemblyNumberDetail assemblyNumberDetail = new StorageCenterCarDetailVO.assemblyNumberDetail();
+                            assemblyNumberDetail.setAssemblyNumber(assemblyNumber);
+                            assemblyNumberDetail.setSize(size);
+                            assemblyNumberDetail.setBilletNo(billetNoStr);
+                            assemblyNumberDetail.setSizeAmount(sum);
+                            assemblyNumberDetail.setSizeWeight(totalBlankOutput);
+
+                            assemblyNumberDetails.add(assemblyNumberDetail);
+                            handleSizeList.add(assemblyNumberDetail);
+                        });
+            }
+
+            if (rollClubThreeDetailsList != null) {
+                // 处理 "棒三" 的逻辑
+                rollClubThreeDetailsList.stream()
+                        .filter(item -> item.getAssemblyNumber() != null)
+                        .collect(Collectors.groupingBy(RollClubThreeDetails::getAssemblyNumber))
+                        .forEach((assemblyNumber, list) -> {
+                            String billetNoStr = list.stream()
+                                    .map(RollClubThreeDetails::getBilletNo)
+                                    .filter(Objects::nonNull)
+                                    .distinct()
+                                    .collect(Collectors.joining("、"));
+
+                            BigDecimal totalBlankOutput = list.stream()
+                                    .map(RollClubThreeDetails::getBlankOutput)
+                                    .filter(Objects::nonNull)
+                                    .map(BigDecimal::valueOf)
+                                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                            String size = list.get(0).getSize();
+
+                            int sum = list.stream()
+                                    .mapToInt(item -> (item.getStackAddr() != null && !item.getStackAddr().isEmpty()) ? 4 : 1)
+                                    .sum();
+
+                            StorageCenterCarDetailVO.assemblyNumberDetail assemblyNumberDetail = new StorageCenterCarDetailVO.assemblyNumberDetail();
+                            assemblyNumberDetail.setAssemblyNumber(assemblyNumber);
+                            assemblyNumberDetail.setSize(size);
+                            assemblyNumberDetail.setBilletNo(billetNoStr);
+                            assemblyNumberDetail.setSizeAmount(sum);
+                            assemblyNumberDetail.setSizeWeight(totalBlankOutput);
+
+                            assemblyNumberDetails.add(assemblyNumberDetail);
+                            handleSizeList.add(assemblyNumberDetail);
+                        });
+            }
+
+            if (rollOutShippDetailsList != null) {
+                // 处理 "上若" 的逻辑
+                rollOutShippDetailsList.stream()
+                        .filter(item -> item.getAssemblyNumber() != null)
+                        .collect(Collectors.groupingBy(RollOutShippDetails::getAssemblyNumber))
+                        .forEach((assemblyNumber, list) -> {
+                            String billetNoStr = list.stream()
+                                    .map(RollOutShippDetails::getBilletNo)
+                                    .filter(Objects::nonNull)
+                                    .distinct()
+                                    .collect(Collectors.joining("、"));
+
+                            BigDecimal totalBlankOutput = list.stream()
+                                    .map(RollOutShippDetails::getBlankOutput)
+                                    .filter(Objects::nonNull)
+                                    .map(BigDecimal::valueOf)
+                                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                            String size = list.get(0).getSize();
+
+                            int sum = list.stream()
+                                    .mapToInt(item -> (item.getStackAddr() != null && !item.getStackAddr().isEmpty()) ? 4 : 1)
+                                    .sum();
+
+                            StorageCenterCarDetailVO.assemblyNumberDetail assemblyNumberDetail = new StorageCenterCarDetailVO.assemblyNumberDetail();
+                            assemblyNumberDetail.setAssemblyNumber(assemblyNumber);
+                            assemblyNumberDetail.setSize(size);
+                            assemblyNumberDetail.setBilletNo(billetNoStr);
+                            assemblyNumberDetail.setSizeAmount(sum);
+                            assemblyNumberDetail.setSizeWeight(totalBlankOutput);
+
+                            assemblyNumberDetails.add(assemblyNumberDetail);
+                            handleSizeList.add(assemblyNumberDetail);
+                        });
+            }
+
+            heatNoDetail.setAssemblyNumberDetails(assemblyNumberDetails);
+
+            handleSizeList.stream()
+                    .collect(Collectors.groupingBy(StorageCenterCarDetailVO.assemblyNumberDetail::getSize))
+                    .forEach((size, list) -> {
+                        StorageCenterCarDetailVO.heatNoInfo heatNoInfo = new StorageCenterCarDetailVO.heatNoInfo();
+                        heatNoInfo.setHeatNo(s);
+
+                        BigDecimal totalBlankOutput = list.stream()
+                                .map(StorageCenterCarDetailVO.assemblyNumberDetail::getSizeWeight)
+                                .filter(Objects::nonNull)
+                                .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                        int totalSizeAmount = list.stream()
+                                .map(StorageCenterCarDetailVO.assemblyNumberDetail::getSizeAmount)
+                                .filter(Objects::nonNull)
+                                .reduce(0, Integer::sum);
+
+                        heatNoInfo.setSize(size);
+                        heatNoInfo.setSizeAmount(totalSizeAmount);
+                        heatNoInfo.setSizeWeight(totalBlankOutput);
+                        heatNoInfos.add(heatNoInfo);
+                    });
+
+            BigDecimal totalBlankOutput = handleSizeList.stream()
+                    .map(StorageCenterCarDetailVO.assemblyNumberDetail::getSizeWeight)
+                    .filter(Objects::nonNull)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+            int totalSizeAmount = handleSizeList.stream()
+                    .map(StorageCenterCarDetailVO.assemblyNumberDetail::getSizeAmount)
+                    .filter(Objects::nonNull)
+                    .reduce(0, Integer::sum);
+
+            heatNoDetail.setSizeWeight(totalBlankOutput);
+            heatNoDetail.setSizeAmount(totalSizeAmount);
+
+            heatNoDetails.add(heatNoDetail);
+        }
+
+        storageCenterCarDetailVO.setHeatNoInfos(heatNoInfos);
+        storageCenterCarDetailVO.setHeatNoDetails(heatNoDetails);
+
+        return storageCenterCarDetailVO;
+    }
+
+
     // 计算整数总和的方法
     private int calculateIntSum(List<DestinationStatisticsDetails> list) {
         if (list == null) {
@@ -5126,4 +5501,20 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
         }
 
     }
+
+    /**
+     * 将 StorageBill 列表转换为 RollDetail 列表
+     */
+    private List<StorageCenterCarVO.RollDetail> convertToRollDetailList(List<StorageBill> billList) {
+        return billList.stream()
+                .map(bill -> {
+                    StorageCenterCarVO.RollDetail rollDetail = new StorageCenterCarVO.RollDetail();
+                    rollDetail.setStorageBillId(bill.getId());
+                    rollDetail.setRollAmount(bill.getAmountTotal());
+                    rollDetail.setLicensePlate(bill.getLicensePlate());
+                    rollDetail.setType("热装");
+                    return rollDetail;
+                })
+                .collect(Collectors.toList());
+    }
 }

+ 159 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/vo/StorageCenterCarDetailVO.java

@@ -0,0 +1,159 @@
+package org.jeecg.modules.billet.storageBill.vo;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class StorageCenterCarDetailVO {
+
+    @ApiModelProperty(value = "车次总序号")
+    private Integer carAllNum;
+
+    /**
+     * 日期
+     */
+    @Excel(name = "日期", width = 15)
+    @ApiModelProperty(value = "日期")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dateTime;
+
+    @ApiModelProperty(value = "铸机")
+    private String ccmNo;
+
+    @ApiModelProperty(value = "炉号")
+    private String heatNo;
+
+    @ApiModelProperty(value = "班组")
+    private String shiftGroup;
+
+    @ApiModelProperty(value = "班别")
+    private String shift;
+    /**
+     * 钢种
+     */
+    @Excel(name = "钢种", width = 15)
+    @ApiModelProperty(value = "钢种")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String steel;
+    /**
+     * 规格
+     */
+    @Excel(name = "规格", width = 15)
+    @ApiModelProperty(value = "规格")
+    @Dict(dicCode = "billet_spec")
+    private String spec;
+
+    @Excel(name = "车牌号", width = 15)
+    @ApiModelProperty(value = "车牌号")
+    private String licensePlate;
+
+    /**
+     * 总支数
+     */
+    @Excel(name = "总支数", width = 15)
+    @ApiModelProperty(value = "总支数")
+    private Integer amountTotal;
+
+    /**
+     * 到站时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "到站时间")
+    private Date arrivalTime;
+
+    /**
+     * 发车时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "发车时间")
+    private Date outTime;
+
+
+    @ApiModelProperty(value = "本车车次")
+    private Integer carNum;
+
+
+    @ApiModelProperty(value = "车位号")
+    private Integer positionNum;
+
+    @ApiModelProperty(value = "组坯号")
+    private String assemblyNumber;
+
+    @ApiModelProperty(value = "总重量")
+    private BigDecimal totalWeight;
+
+    private List<StorageCenterCarDetailVO.heatNoInfo> heatNoInfos;
+
+    private List<StorageCenterCarDetailVO.heatNoDetail> heatNoDetails;
+
+
+    @Data
+    public static class heatNoInfo {
+
+        @ApiModelProperty(value = "炉号")
+        public String heatNo;
+
+        @ApiModelProperty(value = "当前定尺")
+        public String size;
+
+        @ApiModelProperty(value = "当前定尺总支数")
+        private Integer sizeAmount;
+
+        @ApiModelProperty(value = "当前定尺总重量")
+        private BigDecimal sizeWeight;
+
+    }
+
+
+    @Data
+    public static class heatNoDetail {
+
+        @ApiModelProperty(value = "炉号")
+        public String heatNo;
+
+        @ApiModelProperty(value = "当前定尺总支数")
+        private Integer sizeAmount;
+
+        @ApiModelProperty(value = "当前定尺总重量")
+        private BigDecimal sizeWeight;
+
+
+        private List<StorageCenterCarDetailVO.assemblyNumberDetail> assemblyNumberDetails;
+
+    }
+
+
+    @Data
+    public static class assemblyNumberDetail {
+
+        @ApiModelProperty(value = "组坯号", required = true)
+        private String assemblyNumber;
+
+        @ApiModelProperty(value = "坯号")
+        private String billetNo;
+
+        @ApiModelProperty(value = "当前定尺")
+        public String size;
+
+        @ApiModelProperty(value = "当前定尺总支数")
+        private Integer sizeAmount;
+
+        @ApiModelProperty(value = "当前定尺总重量")
+        private BigDecimal sizeWeight;
+
+    }
+
+}

+ 56 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/vo/StorageCenterCarVO.java

@@ -0,0 +1,56 @@
+package org.jeecg.modules.billet.storageBill.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class StorageCenterCarVO {
+
+    @ApiModelProperty(value = "总车次")
+    private Integer TotalCarNum;
+
+    @ApiModelProperty(value = "总支数")
+    private Integer amountTotal;
+
+    @ApiModelProperty(value = "总重量")
+    private BigDecimal totalWeight;
+
+    private List<StorageCenterCarVO.SizeDetail> sizeDetails;
+    private List<StorageCenterCarVO.RollDetail> rollClubTwoDetails;
+    private List<StorageCenterCarVO.RollDetail> rollClubThreeDetails;
+    private List<StorageCenterCarVO.RollDetail> rollOutShippDetails;
+
+    @Data
+    public static class SizeDetail {
+
+        @ApiModelProperty(value = "当前定尺")
+        public String size;
+
+        @ApiModelProperty(value = "当前定尺总支数")
+        private Integer sizeAmount;
+
+        @ApiModelProperty(value = "当前定尺总重量")
+        private BigDecimal sizeWeight;
+
+    }
+
+    @Data
+    public static class RollDetail {
+
+        @ApiModelProperty(value = "装运单id")
+        private String storageBillId;
+
+        @ApiModelProperty(value = "车牌号")
+        private String licensePlate;
+
+        @ApiModelProperty(value = "棒线支数")
+        private Integer rollAmount;
+
+        @ApiModelProperty(value = "类型(热装/热送)")
+        private String type;
+
+    }
+}