|
@@ -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
|