Переглянути джерело

完善储运中心导出根据装运时间过滤,以及导出时不分页

lingpeng.li 1 місяць тому
батько
коміт
d65fa8dcd7

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

@@ -21,11 +21,11 @@ public class StorageCenterQueryDTO {
      */
     private String currentDate;
 
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    private Date createTimeBegin;
-
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    private Date createTimeEnd;
+//    @DateTimeFormat(pattern = "yyyy-MM-dd")
+//    private Date createTimeBegin;
+//
+//    @DateTimeFormat(pattern = "yyyy-MM-dd")
+//    private Date createTimeEnd;
 
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date storageTimeBegin;

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

@@ -92,6 +92,8 @@ public interface IStorageBillService extends IService<StorageBill> {
 
     Page<StorageCenterInvoicingVO> storageCenterInvoicingInfo(StorageCenterQueryDTO queryDTO);
 
+    List<StorageCenterInvoicingVO> storageCenterInvoicingInfoList(StorageCenterQueryDTO queryDTO);
+
     StorageCenterHeatNoDetailVO storageCenterByHeatNo(String heatNo);
 
     StorageCenterHeatNoInvoicingVO storageCenterInvoicingByHeatNo(String heatNo);

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

@@ -3934,8 +3934,8 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
         if (StringUtils.isNotBlank(queryDTO.getShiftGroup())) {
             billQueryWrapper.eq(HeatsActuals::getShiftGroup, queryDTO.getShiftGroup());
         }
-        Date beginDate = queryDTO.getCreateTimeBegin();
-        Date endDate = queryDTO.getCreateTimeEnd();
+        Date beginDate = queryDTO.getStorageTimeBegin();
+        Date endDate = queryDTO.getStorageTimeEnd();
         if (beginDate != null) {
             billQueryWrapper.ge(HeatsActuals::getCreateTime, DateUtils.getStartOfDayByDate(beginDate));
         }
@@ -4032,6 +4032,47 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                             }
                         };
 
+
+                        Predicate<StorageCenterHeatNoInvoicingVO.RollSendDetail> timeFilterOther = detail -> {
+                            Date createTime1 = detail.getCreateTime();
+                            if (createTime1 == null) {
+                                return false; // 没有 createTime 的记录直接过滤掉
+                            }
+
+                            if (storageTimeBegin != null && storageTimeEnd != null) {
+                                return !createTime1.before(DateUtils.getStartOfDayByDate(storageTimeBegin)) && !createTime1.after(DateUtils.getEndOfDayByDate(storageTimeEnd));
+                            } else if (storageTimeBegin != null) {
+                                return !createTime1.before(DateUtils.getStartOfDayByDate(storageTimeBegin));
+                            } else if (storageTimeEnd != null) {
+                                return !createTime1.after(DateUtils.getEndOfDayByDate(storageTimeEnd));
+                            } else {
+                                return true; // 时间条件都为空,则不过滤
+                            }
+                        };
+
+                        // 过滤棒一
+                        if (storageCenterHeatNoInvoicingVO.getRollClubOneDetails() != null) {
+                            List<StorageCenterHeatNoInvoicingVO.RollSendDetail> filtered = storageCenterHeatNoInvoicingVO
+                                    .getRollClubOneDetails()
+                                    .getRollSendDetails()
+                                    .stream()
+                                    .filter(timeFilterOther)
+                                    .collect(Collectors.toList());
+                            storageCenterHeatNoInvoicingVO.getRollClubOneDetails().setRollSendDetails(filtered);
+                        }
+
+
+                        // 过滤高线
+                        if (storageCenterHeatNoInvoicingVO.getRollHeightDetails() != null) {
+                            List<StorageCenterHeatNoInvoicingVO.RollSendDetail> filtered = storageCenterHeatNoInvoicingVO
+                                    .getRollHeightDetails()
+                                    .getRollSendDetails()
+                                    .stream()
+                                    .filter(timeFilterOther)
+                                    .collect(Collectors.toList());
+                            storageCenterHeatNoInvoicingVO.getRollHeightDetails().setRollSendDetails(filtered);
+                        }
+
                         // 过滤棒二
                         if (storageCenterHeatNoInvoicingVO.getRollClubTwoDetails() != null) {
                             List<StorageCenterHeatNoInvoicingVO.RollChargeDetail> filtered = storageCenterHeatNoInvoicingVO
@@ -4089,7 +4130,214 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
         return resultPage;
     }
 
+    @Override
+    public List<StorageCenterInvoicingVO> storageCenterInvoicingInfoList(StorageCenterQueryDTO queryDTO) {
+
+        LambdaQueryWrapper<HeatsActuals> billQueryWrapper = new LambdaQueryWrapper<>();
+        if (StringUtils.isNotBlank(queryDTO.getCcmNo())) {
+            billQueryWrapper.eq(HeatsActuals::getCasterCode, queryDTO.getCcmNo());
+        }
+        if (StringUtils.isNotBlank(queryDTO.getHeatsCode())) {
+            billQueryWrapper.eq(HeatsActuals::getHeatsCode, queryDTO.getHeatsCode());
+        }
+        if (StringUtils.isNotBlank(queryDTO.getShift())) {
+            billQueryWrapper.eq(HeatsActuals::getShift, queryDTO.getShift());
+        }
+        if (StringUtils.isNotBlank(queryDTO.getShiftGroup())) {
+            billQueryWrapper.eq(HeatsActuals::getShiftGroup, queryDTO.getShiftGroup());
+        }
+        Date beginDate = queryDTO.getStorageTimeBegin();
+        Date endDate = queryDTO.getStorageTimeEnd();
+        if (beginDate != null) {
+            billQueryWrapper.ge(HeatsActuals::getCreateTime, DateUtils.getStartOfDayByDate(beginDate));
+        }
+        if (endDate != null) {
+            billQueryWrapper.le(HeatsActuals::getCreateTime, DateUtils.getEndOfDayByDate(endDate));
+        }
+        billQueryWrapper.orderByDesc(HeatsActuals::getCreateTime);
+
+
+        List<HeatsActuals> heatsActualsList = heatsActualsService.list(billQueryWrapper);
+
+        if (heatsActualsList.isEmpty()) {
+            return Collections.emptyList();
+        }
 
+        // 提取 heatNo 集合
+        List<String> heatNoList = heatsActualsList.stream()
+                .map(HeatsActuals::getHeatsCode)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
+
+        // 查询 BilletBasicInfo 数据
+        LambdaQueryWrapper<BilletBasicInfo> basicInfoQueryWrapper = new LambdaQueryWrapper<>();
+        basicInfoQueryWrapper.in(BilletBasicInfo::getHeatNo, heatNoList);
+        List<BilletBasicInfo> billetList = billetBasicInfoService.list(basicInfoQueryWrapper);
+
+        // heatNo 分组统计
+        Map<String, List<BilletBasicInfo>> groupedByHeatNo = billetList.stream()
+                .filter(b -> b.getHeatNo() != null)
+                .collect(Collectors.groupingBy(BilletBasicInfo::getHeatNo));
+
+        List<StorageCenterInvoicingVO> resultList = heatsActualsList.stream()
+                .map(heat -> {
+                    String heatNo = heat.getHeatsCode();
+                    String shift = heat.getShift();
+                    String shiftGroup = heat.getShiftGroup();
+                    Date createTime = heat.getCreateTime();
+                    List<BilletBasicInfo> billets = groupedByHeatNo.getOrDefault(heatNo, Collections.emptyList());
+
+                    // 汇总重量
+                    BigDecimal totalWeight = billets.stream()
+                            .map(BilletBasicInfo::getBilletWeight)
+                            .filter(Objects::nonNull)
+                            .map(BigDecimal::valueOf)
+                            .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                    Integer ccmNo = Optional.ofNullable(heat.getCasterCode()).map(Integer::valueOf).orElse(0);
+
+                    StorageCenterInvoicingVO.HeatNoDetail heatNoDetail = new StorageCenterInvoicingVO.HeatNoDetail();
+
+                    StorageCenterHeatNoInvoicingVO storageCenterHeatNoInvoicingVO = storageCenterInvoicingByHeatNo(heatNo);
+
+                    BigDecimal sumWeight = BigDecimal.ZERO;
+                    int sumAmount = 0;
+
+                    Date storageTimeBegin = queryDTO.getStorageTimeBegin();
+                    Date storageTimeEnd = queryDTO.getStorageTimeEnd();
+
+                    if (storageCenterHeatNoInvoicingVO != null) {
+                        if (storageCenterHeatNoInvoicingVO.getRollClubOneDetails() != null) {
+                            sumWeight = sumWeight.add(Optional.ofNullable(storageCenterHeatNoInvoicingVO.getRollClubOneDetails().getTotalWeight()).orElse(BigDecimal.ZERO));
+                            sumAmount += Optional.ofNullable(storageCenterHeatNoInvoicingVO.getRollClubOneDetails().getTotalAmount()).orElse(0);
+                        }
+                        if (storageCenterHeatNoInvoicingVO.getRollClubTwoDetails() != null) {
+                            sumWeight = sumWeight.add(Optional.ofNullable(storageCenterHeatNoInvoicingVO.getRollClubTwoDetails().getTotalWeight()).orElse(BigDecimal.ZERO));
+                            sumAmount += Optional.ofNullable(storageCenterHeatNoInvoicingVO.getRollClubTwoDetails().getTotalAmount()).orElse(0);
+                        }
+                        if (storageCenterHeatNoInvoicingVO.getRollClubThreeDetails() != null) {
+                            sumWeight = sumWeight.add(Optional.ofNullable(storageCenterHeatNoInvoicingVO.getRollClubThreeDetails().getTotalWeight()).orElse(BigDecimal.ZERO));
+                            sumAmount += Optional.ofNullable(storageCenterHeatNoInvoicingVO.getRollClubThreeDetails().getTotalAmount()).orElse(0);
+                        }
+                        if (storageCenterHeatNoInvoicingVO.getRollHeightDetails() != null) {
+                            sumWeight = sumWeight.add(Optional.ofNullable(storageCenterHeatNoInvoicingVO.getRollHeightDetails().getTotalWeight()).orElse(BigDecimal.ZERO));
+                            sumAmount += Optional.ofNullable(storageCenterHeatNoInvoicingVO.getRollHeightDetails().getTotalAmount()).orElse(0);
+                        }
+                        if (storageCenterHeatNoInvoicingVO.getRollOutShippDetails() != null) {
+                            sumWeight = sumWeight.add(Optional.ofNullable(storageCenterHeatNoInvoicingVO.getRollOutShippDetails().getTotalWeight()).orElse(BigDecimal.ZERO));
+                            sumAmount += Optional.ofNullable(storageCenterHeatNoInvoicingVO.getRollOutShippDetails().getTotalAmount()).orElse(0);
+                        }
+
+                        Predicate<StorageCenterHeatNoInvoicingVO.RollChargeDetail> timeFilter = detail -> {
+                            Date createTime1 = detail.getCreateTime();
+                            if (createTime1 == null) {
+                                return false; // 没有 createTime 的记录直接过滤掉
+                            }
+
+                            if (storageTimeBegin != null && storageTimeEnd != null) {
+                                return !createTime1.before(DateUtils.getStartOfDayByDate(storageTimeBegin)) && !createTime1.after(DateUtils.getEndOfDayByDate(storageTimeEnd));
+                            } else if (storageTimeBegin != null) {
+                                return !createTime1.before(DateUtils.getStartOfDayByDate(storageTimeBegin));
+                            } else if (storageTimeEnd != null) {
+                                return !createTime1.after(DateUtils.getEndOfDayByDate(storageTimeEnd));
+                            } else {
+                                return true; // 时间条件都为空,则不过滤
+                            }
+                        };
+
+                        Predicate<StorageCenterHeatNoInvoicingVO.RollSendDetail> timeFilterOther = detail -> {
+                            Date createTime1 = detail.getCreateTime();
+                            if (createTime1 == null) {
+                                return false; // 没有 createTime 的记录直接过滤掉
+                            }
+
+                            if (storageTimeBegin != null && storageTimeEnd != null) {
+                                return !createTime1.before(DateUtils.getStartOfDayByDate(storageTimeBegin)) && !createTime1.after(DateUtils.getEndOfDayByDate(storageTimeEnd));
+                            } else if (storageTimeBegin != null) {
+                                return !createTime1.before(DateUtils.getStartOfDayByDate(storageTimeBegin));
+                            } else if (storageTimeEnd != null) {
+                                return !createTime1.after(DateUtils.getEndOfDayByDate(storageTimeEnd));
+                            } else {
+                                return true; // 时间条件都为空,则不过滤
+                            }
+                        };
+
+                        // 过滤棒一
+                        if (storageCenterHeatNoInvoicingVO.getRollClubOneDetails() != null) {
+                            List<StorageCenterHeatNoInvoicingVO.RollSendDetail> filtered = storageCenterHeatNoInvoicingVO
+                                    .getRollClubOneDetails()
+                                    .getRollSendDetails()
+                                    .stream()
+                                    .filter(timeFilterOther)
+                                    .collect(Collectors.toList());
+                            storageCenterHeatNoInvoicingVO.getRollClubOneDetails().setRollSendDetails(filtered);
+                        }
+
+
+                        // 过滤高线
+                        if (storageCenterHeatNoInvoicingVO.getRollHeightDetails() != null) {
+                            List<StorageCenterHeatNoInvoicingVO.RollSendDetail> filtered = storageCenterHeatNoInvoicingVO
+                                    .getRollHeightDetails()
+                                    .getRollSendDetails()
+                                    .stream()
+                                    .filter(timeFilterOther)
+                                    .collect(Collectors.toList());
+                            storageCenterHeatNoInvoicingVO.getRollHeightDetails().setRollSendDetails(filtered);
+                        }
+
+                        // 过滤棒二
+                        if (storageCenterHeatNoInvoicingVO.getRollClubTwoDetails() != null) {
+                            List<StorageCenterHeatNoInvoicingVO.RollChargeDetail> filtered = storageCenterHeatNoInvoicingVO
+                                    .getRollClubTwoDetails()
+                                    .getRollChargeDetails()
+                                    .stream()
+                                    .filter(timeFilter)
+                                    .collect(Collectors.toList());
+                            storageCenterHeatNoInvoicingVO.getRollClubTwoDetails().setRollChargeDetails(filtered);
+                        }
+
+                        // 过滤棒三
+                        if (storageCenterHeatNoInvoicingVO.getRollClubThreeDetails() != null) {
+                            List<StorageCenterHeatNoInvoicingVO.RollChargeDetail> filtered = storageCenterHeatNoInvoicingVO
+                                    .getRollClubThreeDetails()
+                                    .getRollChargeDetails()
+                                    .stream()
+                                    .filter(timeFilter)
+                                    .collect(Collectors.toList());
+                            storageCenterHeatNoInvoicingVO.getRollClubThreeDetails().setRollChargeDetails(filtered);
+                        }
+
+                        // 过滤上若
+                        if (storageCenterHeatNoInvoicingVO.getRollOutShippDetails() != null) {
+                            List<StorageCenterHeatNoInvoicingVO.RollChargeDetail> filtered = storageCenterHeatNoInvoicingVO
+                                    .getRollOutShippDetails()
+                                    .getRollChargeDetails()
+                                    .stream()
+                                    .filter(timeFilter)
+                                    .collect(Collectors.toList());
+                            storageCenterHeatNoInvoicingVO.getRollOutShippDetails().setRollChargeDetails(filtered);
+                        }
+                    }
+
+                    // 设置热号基础信息
+                    heatNoDetail.setHeatNo(heatNo);
+                    heatNoDetail.setCcmNo(ccmNo);
+                    heatNoDetail.setHeatNoWeight(sumWeight);
+                    heatNoDetail.setHeatNoAmount(sumAmount);
+                    heatNoDetail.setCreateTime(createTime);
+                    heatNoDetail.setShift(shift);
+                    heatNoDetail.setShiftGroup(shiftGroup);
+                    heatNoDetail.setCreateTime(createTime);
+
+                    StorageCenterInvoicingVO vo = new StorageCenterInvoicingVO();
+                    vo.setHeatNoDetails(Collections.singletonList(heatNoDetail));
+                    vo.setStorageCenterHeatNoInvoicing(storageCenterHeatNoInvoicingVO);
+                    return vo;
+                })
+                .collect(Collectors.toList());
+
+        return resultList;
+    }
 
 
     @Override

+ 2 - 2
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/vo/StorageCenterExportRow.java

@@ -26,7 +26,7 @@ public class StorageCenterExportRow {
     private String heatNo;
 
     @ExcelProperty("支数")
-    @ColumnWidth(13)
+    @ColumnWidth(8)
     private Integer amount;
 
     @ExcelProperty("总重")
@@ -38,7 +38,7 @@ public class StorageCenterExportRow {
     private Integer ccmNo;
 
     @ExcelProperty("运输单位")
-    @ColumnWidth(15)
+    @ColumnWidth(12)
     private String transportUnit;
 
     @ExcelProperty("单支重")

+ 2 - 2
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/carUnit/controller/CarUnitController.java

@@ -178,10 +178,10 @@ public class CarUnitController extends JeecgController<CarUnit, ICarUnitService>
 	 @ApiOperation(value = "导出储运中心车次信息", notes = "导出储运中心车次信息")
 	 @GetMapping("/exportStorageCenterInfo")
 	 public void exportStorageCenterInfo(HttpServletResponse response, StorageCenterQueryDTO queryDTO) throws IOException {
-		 Page<StorageCenterInvoicingVO> page = storageBillService.storageCenterInvoicingInfo(queryDTO);
+		 List<StorageCenterInvoicingVO> invoicingVOList = storageBillService.storageCenterInvoicingInfoList(queryDTO);
 
 		 // 数据处理
-		 List<StorageCenterExportRow> exportList = carUnitService.buildExportData(page.getRecords());
+		 List<StorageCenterExportRow> exportList = carUnitService.buildExportData(invoicingVOList);
 
 		 // 按出厂日期倒序排序
 		 exportList.sort(Comparator.comparing(StorageCenterExportRow::getFactoryDate, Comparator.nullsLast(Comparator.reverseOrder())));