Jelajahi Sumber

储运中心查询导出显示棒一高线的日期信息

lingpeng.li 1 bulan lalu
induk
melakukan
2b6a2261ba

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

@@ -73,6 +73,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicLong;
@@ -4904,49 +4905,62 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
             rollOneHeatNo.setTotalAmount(billetBasicInfos.size());
             rollOneHeatNo.setTotalWeight(totalBlankOutput);
 
-            // 按照 getLength 分组
-            Map<Integer, List<BilletBasicInfo>> groupedByLength = billetBasicInfos.stream()
-                    .filter(b -> b.getLength() != null) // 先过滤掉 null,防止 NPE
-                    .collect(Collectors.groupingBy(BilletBasicInfo::getLength));
+            // 使用 DateTimeFormatter 将 String 转换为 LocalDate 类型
+            DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+
+            // 按照 createTime(yyyy-MM-dd)分组
+            Map<String, List<BilletBasicInfo>> groupedByDate = billetBasicInfos.stream()
+                    .filter(b -> b.getCreateTime() != null)
+                    .collect(Collectors.groupingBy(b -> dateFormatter.format(b.getCreateTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate())));
 
-            // 一次遍历,构造 sizeDetailsList 和 rollSendDetailList
             List<StorageCenterHeatNoInvoicingVO.SizeDetail> sizeDetailsList = new ArrayList<>();
             List<StorageCenterHeatNoInvoicingVO.RollSendDetail> rollSendDetailList = new ArrayList<>();
 
-            groupedByLength.forEach((length, billets) -> {
-                // 计算 weight 总和
-                BigDecimal totalWeight = billets.stream()
-                        .map(BilletBasicInfo::getBilletWeight)
-                        .filter(Objects::nonNull)
-                        .map(BigDecimal::valueOf)
-                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+            for (Map.Entry<String, List<BilletBasicInfo>> dateEntry : groupedByDate.entrySet()) {
+                List<BilletBasicInfo> dateBillets = dateEntry.getValue();
 
-                int count = billets.size(); // 计算数据条数
-                // 取第一个 spec 值
-                String spec = Optional.ofNullable(billets.get(0).getSpec()).orElse("Unknown");
+                // 解析日期字符串为 LocalDate
+                LocalDate createDate = LocalDate.parse(dateEntry.getKey(), dateFormatter);
 
-                // 创建 SizeDetail
-                StorageCenterHeatNoInvoicingVO.SizeDetail sizeDetail = new StorageCenterHeatNoInvoicingVO.SizeDetail();
-                sizeDetail.setSize(length);
-                sizeDetail.setSizeWeight(totalWeight);
-                sizeDetail.setSizeAmount(count);
-                sizeDetailsList.add(sizeDetail);
+                // 按照 length 再分组
+                Map<Integer, List<BilletBasicInfo>> groupedByLength = dateBillets.stream()
+                        .filter(b -> b.getLength() != null)
+                        .collect(Collectors.groupingBy(BilletBasicInfo::getLength));
 
-                // 创建 RollSendDetail
-                StorageCenterHeatNoInvoicingVO.RollSendDetail rollSendDetail = new StorageCenterHeatNoInvoicingVO.RollSendDetail();
-                rollSendDetail.setSize(length);
-                rollSendDetail.setWeight(totalWeight);
-                rollSendDetail.setAmount(count);
-                rollSendDetail.setSpec(spec);
-                rollSendDetailList.add(rollSendDetail);
-            });
+                groupedByLength.forEach((length, billets) -> {
+                    BigDecimal totalWeight = billets.stream()
+                            .map(BilletBasicInfo::getBilletWeight)
+                            .filter(Objects::nonNull)
+                            .map(BigDecimal::valueOf)
+                            .reduce(BigDecimal.ZERO, BigDecimal::add);
 
-            // 赋值给 rollOneHeatNo
+                    int count = billets.size();
+                    String spec = Optional.ofNullable(billets.get(0).getSpec()).orElse("Unknown");
+
+                    // 添加 SizeDetail(汇总一次即可,不需重复)
+                    StorageCenterHeatNoInvoicingVO.SizeDetail sizeDetail = new StorageCenterHeatNoInvoicingVO.SizeDetail();
+                    sizeDetail.setSize(length);
+                    sizeDetail.setSizeAmount(count);
+                    sizeDetail.setSizeWeight(totalWeight);
+                    sizeDetailsList.add(sizeDetail);
+
+                    // 添加每一条按日期分组的 RollSendDetail
+                    StorageCenterHeatNoInvoicingVO.RollSendDetail rollSendDetail = new StorageCenterHeatNoInvoicingVO.RollSendDetail();
+                    rollSendDetail.setSize(length);
+                    rollSendDetail.setWeight(totalWeight);
+                    rollSendDetail.setAmount(count);
+                    rollSendDetail.setSpec(spec);
+
+                    // 设置 createDate,只保留日期部分
+                    rollSendDetail.setCreateTime(java.sql.Date.valueOf(createDate));  // 只保留日期部分,清除时间部分
+                    rollSendDetailList.add(rollSendDetail);
+                });
+            }
+
+            // 最终赋值给 rollOneHeatNo
             rollOneHeatNo.setSizeDetails(sizeDetailsList);
             rollOneHeatNo.setRollSendDetails(rollSendDetailList);
-
             storageCenterHeatNoInvoicingVO.setRollClubOneDetails(rollOneHeatNo);
-
         }
 
         if (groupedByBelongTable.containsKey("roll_height")) {
@@ -4963,49 +4977,62 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
             rollHeightHeatNo.setTotalAmount(billetBasicInfos.size());
             rollHeightHeatNo.setTotalWeight(totalBlankOutput);
 
-            // 按照 getLength 分组
-            Map<Integer, List<BilletBasicInfo>> groupedByLength = billetBasicInfos.stream()
-                    .filter(b -> b.getLength() != null) // 先过滤掉 null,防止 NPE
-                    .collect(Collectors.groupingBy(BilletBasicInfo::getLength));
+            // 使用 DateTimeFormatter 将 String 转换为 LocalDate 类型
+            DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+
+            // 按照 createTime(yyyy-MM-dd)分组
+            Map<String, List<BilletBasicInfo>> groupedByDate = billetBasicInfos.stream()
+                    .filter(b -> b.getCreateTime() != null)
+                    .collect(Collectors.groupingBy(b -> dateFormatter.format(b.getCreateTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate())));
 
-            // 一次遍历,构造 sizeDetailsList 和 rollSendDetailList
             List<StorageCenterHeatNoInvoicingVO.SizeDetail> sizeDetailsList = new ArrayList<>();
             List<StorageCenterHeatNoInvoicingVO.RollSendDetail> rollSendDetailList = new ArrayList<>();
 
-            groupedByLength.forEach((length, billets) -> {
-                // 计算 weight 总和
-                BigDecimal totalWeight = billets.stream()
-                        .map(BilletBasicInfo::getBilletWeight)
-                        .filter(Objects::nonNull)
-                        .map(BigDecimal::valueOf)
-                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+            for (Map.Entry<String, List<BilletBasicInfo>> dateEntry : groupedByDate.entrySet()) {
+                List<BilletBasicInfo> dateBillets = dateEntry.getValue();
 
-                int count = billets.size(); // 计算数据条数
-                // 取第一个 spec 值
-                String spec = Optional.ofNullable(billets.get(0).getSpec()).orElse("Unknown");
+                // 解析日期字符串为 LocalDate
+                LocalDate createDate = LocalDate.parse(dateEntry.getKey(), dateFormatter);
 
-                // 创建 SizeDetail
-                StorageCenterHeatNoInvoicingVO.SizeDetail sizeDetail = new StorageCenterHeatNoInvoicingVO.SizeDetail();
-                sizeDetail.setSize(length);
-                sizeDetail.setSizeWeight(totalWeight);
-                sizeDetail.setSizeAmount(count);
-                sizeDetailsList.add(sizeDetail);
+                // 按照 length 再分组
+                Map<Integer, List<BilletBasicInfo>> groupedByLength = dateBillets.stream()
+                        .filter(b -> b.getLength() != null)
+                        .collect(Collectors.groupingBy(BilletBasicInfo::getLength));
 
-                // 创建 RollSendDetail
-                StorageCenterHeatNoInvoicingVO.RollSendDetail rollSendDetail = new StorageCenterHeatNoInvoicingVO.RollSendDetail();
-                rollSendDetail.setSize(length);
-                rollSendDetail.setWeight(totalWeight);
-                rollSendDetail.setAmount(count);
-                rollSendDetail.setSpec(spec);
-                rollSendDetailList.add(rollSendDetail);
-            });
+                groupedByLength.forEach((length, billets) -> {
+                    BigDecimal totalWeight = billets.stream()
+                            .map(BilletBasicInfo::getBilletWeight)
+                            .filter(Objects::nonNull)
+                            .map(BigDecimal::valueOf)
+                            .reduce(BigDecimal.ZERO, BigDecimal::add);
 
-            // 赋值给 rollHeightHeatNo
+                    int count = billets.size();
+                    String spec = Optional.ofNullable(billets.get(0).getSpec()).orElse("Unknown");
+
+                    // 添加 SizeDetail(汇总一次即可,不需重复)
+                    StorageCenterHeatNoInvoicingVO.SizeDetail sizeDetail = new StorageCenterHeatNoInvoicingVO.SizeDetail();
+                    sizeDetail.setSize(length);
+                    sizeDetail.setSizeAmount(count);
+                    sizeDetail.setSizeWeight(totalWeight);
+                    sizeDetailsList.add(sizeDetail);
+
+                    // 添加每一条按日期分组的 RollSendDetail
+                    StorageCenterHeatNoInvoicingVO.RollSendDetail rollSendDetail = new StorageCenterHeatNoInvoicingVO.RollSendDetail();
+                    rollSendDetail.setSize(length);
+                    rollSendDetail.setWeight(totalWeight);
+                    rollSendDetail.setAmount(count);
+                    rollSendDetail.setSpec(spec);
+
+                    // 设置 createDate,只保留日期部分
+                    rollSendDetail.setCreateTime(java.sql.Date.valueOf(createDate));  // 只保留日期部分,清除时间部分
+                    rollSendDetailList.add(rollSendDetail);
+                });
+            }
+
+            // 最终赋值给 rollHeightHeatNo
             rollHeightHeatNo.setSizeDetails(sizeDetailsList);
             rollHeightHeatNo.setRollSendDetails(rollSendDetailList);
-
             storageCenterHeatNoInvoicingVO.setRollHeightDetails(rollHeightHeatNo);
-
         }
 
 

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

@@ -159,10 +159,10 @@ public class StorageCenterHeatNoInvoicingVO {
         @ApiModelProperty(value = "重量")
         private BigDecimal weight;
 
-        @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+        @DateTimeFormat(pattern = "yyyy-MM-dd")
         @ApiModelProperty(value = "创建日期")
-        private Date heatCreateTime;
+        private Date createTime;
 
     }
 

+ 7 - 12
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/carUnit/service/impl/CarUnitServiceImpl.java

@@ -55,18 +55,13 @@ public class CarUnitServiceImpl extends ServiceImpl<CarUnitMapper, CarUnit> impl
             if (invoicing.getRollClubOneDetails() != null && invoicing.getRollClubOneDetails() != null) {
                 for (StorageCenterHeatNoInvoicingVO.RollSendDetail detail : invoicing.getRollClubOneDetails().getRollSendDetails()) {
                     StorageCenterExportRow row = ontherConvert(detail, ccmNo, "棒一");
-                    String dateString = Optional.ofNullable(vo.getHeatNoDetails())
-                            .filter(list -> !list.isEmpty())
-                            .map(list -> list.get(0).getCreateTime())
-                            .map(sdf::format)
-                            .orElse("");
+
 
                     String heatNo = Optional.ofNullable(vo.getHeatNoDetails())
                             .filter(list -> !list.isEmpty())
                             .map(list -> list.get(0).getHeatNo())
                             .orElse("");
 
-                    row.setFactoryDate(dateString);
                     row.setHeatNo(heatNo);
                     rows.add(row);
                 }
@@ -100,18 +95,12 @@ public class CarUnitServiceImpl extends ServiceImpl<CarUnitMapper, CarUnit> impl
             if (invoicing.getRollHeightDetails() != null && invoicing.getRollHeightDetails() != null) {
                 for (StorageCenterHeatNoInvoicingVO.RollSendDetail detail : invoicing.getRollHeightDetails().getRollSendDetails()) {
                     StorageCenterExportRow row = ontherConvert(detail, ccmNo, "高线");
-                    String dateString = Optional.ofNullable(vo.getHeatNoDetails())
-                            .filter(list -> !list.isEmpty())
-                            .map(list -> list.get(0).getCreateTime())
-                            .map(sdf::format)
-                            .orElse("");
 
                     String heatNo = Optional.ofNullable(vo.getHeatNoDetails())
                             .filter(list -> !list.isEmpty())
                             .map(list -> list.get(0).getHeatNo())
                             .orElse("");
 
-                    row.setFactoryDate(dateString);
                     row.setHeatNo(heatNo);
                     rows.add(row);
                 }
@@ -210,6 +199,12 @@ public class CarUnitServiceImpl extends ServiceImpl<CarUnitMapper, CarUnit> impl
         row.setWeightPerPiece(calcWeightPerPiece(detail.getWeight(), detail.getAmount()));
         row.setSize(detail.getSize());
         row.setSpec(detail.getSpec());
+        if (detail != null && detail.getCreateTime() != null) {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            row.setFactoryDate(sdf.format(detail.getCreateTime()));
+        } else {
+            row.setFactoryDate("");
+        }
 
         return row;
     }