فهرست منبع

完善储存中心导出

lingpeng.li 1 ماه پیش
والد
کامیت
aeb7e23c26

+ 1 - 1
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/actualControl/heatsActuals/controller/BilletSendRecordController.java

@@ -161,7 +161,7 @@ public class BilletSendRecordController extends JeecgController<BilletSendRecord
     }
 
 
-//    @Scheduled(cron = "0 */5 * * * ?") // 每5分钟触发一次
+    @Scheduled(cron = "0 */5 * * * ?") // 每5分钟触发一次
     @ApiOperation(value = "轧钢平台钢坯接收接口", notes = "轧钢平台钢坯接收接口")
     @GetMapping(value = "/sendData")
     public Result<IPage<BilletSendRecord>> sendData() {

+ 14 - 9
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/actualControl/heatsActuals/service/impl/BilletSendRecordServiceImpl.java

@@ -231,18 +231,23 @@ public class BilletSendRecordServiceImpl extends ServiceImpl<BilletSendRecordMap
         sizeData.setLength(length);
         sizeData.setTransportBilletType(Integer.parseInt(transportTypeStr));
         sizeData.setBilletList(billetsToPush);
-        sizeData.setPerWeight(BigDecimal.valueOf(
-                allBillets.stream()
-                        .filter(billet -> billetsToPush.contains(billet.getBilletNo()))
-                        .map(BilletBasicInfo::getBilletWeight)
-                        .filter(Objects::nonNull)
-                        .mapToDouble(Double::doubleValue)
-                        .average()
-                        .orElse(0.0)
-        ).setScale(4, RoundingMode.HALF_UP).doubleValue());
+
+        double avgWeightTon = allBillets.stream()
+                .filter(billet -> billetsToPush.contains(billet.getBilletNo()))
+                .map(BilletBasicInfo::getBilletWeight)
+                .filter(Objects::nonNull)
+                .mapToDouble(b -> b.doubleValue())
+                .average()
+                .orElse(0.0);
+
+        // 转换为 kg 并保留 4 位小数
+        BigDecimal perWeightKg = BigDecimal.valueOf(avgWeightTon * 1000).setScale(4, RoundingMode.HALF_UP);
+        sizeData.setPerWeight(perWeightKg.doubleValue());
+
         return sizeData;
     }
 
+
     // 新增方法:远程调用成功后保存或更新推送日志
     private void savePushLogAfterSuccess(String heatNo, String rollNo, String spec, List<BilletSendRequest.SizeData> sizeDataList) {
         for (BilletSendRequest.SizeData sizeData : sizeDataList) {

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

@@ -27,6 +27,12 @@ public class StorageCenterQueryDTO {
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date createTimeEnd;
 
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date storageTimeBegin;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date storageTimeEnd;
+
     @ApiModelProperty(value = "班组")
     private String shiftGroup;
 

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

@@ -76,6 +76,7 @@ import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.function.Function;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -3971,6 +3972,7 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
         List<StorageCenterInvoicingVO> resultList = heatsActuals.stream()
                 .map(heat -> {
                     String heatNo = heat.getHeatsCode();
+                    Date createTime = heat.getCreateTime();
                     List<BilletBasicInfo> billets = groupedByHeatNo.getOrDefault(heatNo, Collections.emptyList());
 
                     // 汇总重量
@@ -3989,6 +3991,9 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                     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));
@@ -4010,6 +4015,56 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                             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; // 时间条件都为空,则不过滤
+                            }
+                        };
+
+                        // 过滤棒二
+                        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);
+                        }
                     }
 
                     // 设置热号基础信息
@@ -4017,6 +4072,7 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                     heatNoDetail.setCcmNo(ccmNo);
                     heatNoDetail.setHeatNoWeight(sumWeight);
                     heatNoDetail.setHeatNoAmount(sumAmount);
+                    heatNoDetail.setCreateTime(createTime);
 
                     StorageCenterInvoicingVO vo = new StorageCenterInvoicingVO();
                     vo.setHeatNoDetails(Collections.singletonList(heatNoDetail));

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

@@ -45,6 +45,14 @@ public class StorageCenterExportRow {
     @ColumnWidth(10)
     private BigDecimal weightPerPiece;
 
+    @ExcelProperty("类型")
+    @ColumnWidth(10)
+    private String btype;
+
+    @ExcelProperty("定尺")
+    @ColumnWidth(10)
+    private Integer size;
+
     @ExcelProperty("规格")
     @ColumnWidth(16)
     private String spec;

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

@@ -3,7 +3,6 @@ package org.jeecg.modules.billet.storageBill.vo;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
@@ -160,6 +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")
+        @ApiModelProperty(value = "创建日期")
+        private Date heatCreateTime;
 
     }
 

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

@@ -1,9 +1,12 @@
 package org.jeecg.modules.billet.storageBill.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 @Data
@@ -54,5 +57,10 @@ public class StorageCenterInvoicingVO {
         @ApiModelProperty(value = "当前炉号总重量")
         private BigDecimal heatNoWeight;
 
+        @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        @ApiModelProperty(value = "创建时间")
+        private Date createTime;
+
     }
 }

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

@@ -39,6 +39,8 @@ public class CarUnitServiceImpl extends ServiceImpl<CarUnitMapper, CarUnit> impl
     @Override
     public List<StorageCenterExportRow> buildExportData(List<StorageCenterInvoicingVO> records) {
         List<StorageCenterExportRow> rows = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
 
         for (StorageCenterInvoicingVO vo : records) {
             Integer ccmNo = Optional.ofNullable(vo.getHeatNoDetails())
@@ -49,6 +51,27 @@ public class CarUnitServiceImpl extends ServiceImpl<CarUnitMapper, CarUnit> impl
             StorageCenterHeatNoInvoicingVO invoicing = vo.getStorageCenterHeatNoInvoicing();
             if (invoicing == null) continue;
 
+            // 棒一 rollClubOneDetails
+            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);
+                }
+            }
+
             // 棒二 rollClubTwoDetails
             if (invoicing.getRollClubTwoDetails() != null && invoicing.getRollClubThreeDetails() != null) {
                 for (StorageCenterHeatNoInvoicingVO.RollChargeDetail detail : invoicing.getRollClubTwoDetails().getRollChargeDetails()) {
@@ -72,6 +95,27 @@ public class CarUnitServiceImpl extends ServiceImpl<CarUnitMapper, CarUnit> impl
                     rows.add(row);
                 }
             }
+
+            // 高线 rollHeightDetails
+            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);
+                }
+            }
         }
 
         return rows;
@@ -144,12 +188,32 @@ public class CarUnitServiceImpl extends ServiceImpl<CarUnitMapper, CarUnit> impl
         row.setCcmNo(ccmNo);
         row.setTransportUnit(getTransportUnitNameByCarNumber(detail.getLicensePlate()));
         row.setWeightPerPiece(calcWeightPerPiece(detail.getWeight(), detail.getAmount()));
+        row.setSize(detail.getSize());
         row.setSpec(detail.getSpec());
+        String btype = Optional.ofNullable(detail.getBtype()).orElse("");
+        row.setBtype("0".equals(btype) ? "热坯" : "凉坯");
+
         row.setBrand(getBrandNum(detail.getBrandNum()));
 
         return row;
     }
 
+
+    private static StorageCenterExportRow ontherConvert(StorageCenterHeatNoInvoicingVO.RollSendDetail detail, Integer ccmNo, String endpoint) {
+        StorageCenterExportRow row = new StorageCenterExportRow();
+
+        row.setEndPoint(endpoint);
+        row.setLicensePlate("辊道");
+        row.setAmount(detail.getAmount());
+        row.setTotalWeight(detail.getWeight());
+        row.setCcmNo(ccmNo);
+        row.setWeightPerPiece(calcWeightPerPiece(detail.getWeight(), detail.getAmount()));
+        row.setSize(detail.getSize());
+        row.setSpec(detail.getSpec());
+
+        return row;
+    }
+
     private static BigDecimal calcWeightPerPiece(BigDecimal total, Integer amount) {
         if (total == null || amount == null || amount == 0) return BigDecimal.ZERO;
         return total.divide(BigDecimal.valueOf(amount), 3, RoundingMode.HALF_UP);