diff --git a/bms-back/bms-system/src/main/java/com/bms/ar/mapper/ArBillDetailMapper.java b/bms-back/bms-system/src/main/java/com/bms/ar/mapper/ArBillDetailMapper.java index 2830888e..6defde18 100644 --- a/bms-back/bms-system/src/main/java/com/bms/ar/mapper/ArBillDetailMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/ar/mapper/ArBillDetailMapper.java @@ -1,6 +1,7 @@ package com.bms.ar.mapper; import java.util.List; +import java.util.Map; import org.apache.ibatis.annotations.Param; import com.bms.ar.domain.ArBillDetail; @@ -19,6 +20,8 @@ public interface ArBillDetailMapper { List selectExportPage(@Param("arBillId") Long arBillId, @Param("lastDetailNo") Integer lastDetailNo, @Param("pageSize") Integer pageSize); + Map selectReceiveTimeRangeByBillId(@Param("arBillId") Long arBillId); + int insert(ArBillDetail detail); int insertBatch(List details); diff --git a/bms-back/bms-system/src/main/java/com/bms/ar/service/impl/ArBillServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/ar/service/impl/ArBillServiceImpl.java index bcf45605..9edbb99f 100644 --- a/bms-back/bms-system/src/main/java/com/bms/ar/service/impl/ArBillServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/ar/service/impl/ArBillServiceImpl.java @@ -12,6 +12,8 @@ import java.nio.file.StandardCopyOption; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; @@ -1319,6 +1321,7 @@ public class ArBillServiceImpl implements IArBillService { } Map templateRows = extractTemplateRows(templateXml.substring(sheetDataOpenEnd + 1, sheetDataEnd)); + Map receiveTimeRange = detailMapper.selectReceiveTimeRangeByBillId(bill.getArBillId()); String prefix = adjustExportColumnWidths( removeSheetDimension(templateXml.substring(0, sheetDataOpenEnd + 1))); writeUtf8(output, prefix); @@ -1329,7 +1332,7 @@ public class ArBillServiceImpl implements IArBillService { writeUtf8(output, templateRows.get(2)); String customerRow = replaceCellXml(templateRows.get(3), "C3", bill.getCustomerName(), false); // 账单所属期区域为 O3:T3 合并单元格,必须写入左上角 O3 才能显示。 - customerRow = replaceCellXml(customerRow, "O3", exportPeriod(bill), false); + customerRow = replaceCellXml(customerRow, "O3", exportReceiveTimeRange(receiveTimeRange), false); writeUtf8(output, customerRow); writeUtf8(output, templateRows.get(4)); @@ -1731,17 +1734,32 @@ public class ArBillServiceImpl implements IArBillService { return StringUtils.isEmpty(detail.getRemark()) ? detail.getGoodsDescription() : detail.getRemark(); } - private String exportPeriod(ArBill bill) { - Date start = bill.getBillPeriodStart(); - Date end = bill.getBillPeriodEnd(); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - if (start != null && end != null) { - return format.format(start) + " 至 " + format.format(end); + private String exportReceiveTimeRange(Map receiveTimeRange) { + if (receiveTimeRange == null) { + return ""; } - if (start != null) { - return format.format(start) + " 起"; + String start = formatReceiveDate(receiveTimeRange.get("minReceiveTime")); + String end = formatReceiveDate(receiveTimeRange.get("maxReceiveTime")); + return StringUtils.isEmpty(start) || StringUtils.isEmpty(end) ? "" : start + " 至 " + end; + } + + private String formatReceiveDate(Object value) { + if (value instanceof LocalDateTime) { + return ((LocalDateTime) value).toLocalDate().toString(); } - return end == null ? "" : "截至 " + format.format(end); + if (value instanceof LocalDate) { + return value.toString(); + } + if (value instanceof java.sql.Date) { + return ((java.sql.Date) value).toLocalDate().toString(); + } + if (value instanceof Date) { + return new SimpleDateFormat("yyyy-MM-dd").format((Date) value); + } + if (value == null) { + return ""; + } + throw new IllegalArgumentException("不支持的收货时间类型: " + value.getClass().getName()); } private BigDecimal exportUnitPrice(ArBillDetail detail) { diff --git a/bms-back/bms-system/src/main/resources/mapper/ar/ArBillDetailMapper.xml b/bms-back/bms-system/src/main/resources/mapper/ar/ArBillDetailMapper.xml index 64509270..63962f7f 100644 --- a/bms-back/bms-system/src/main/resources/mapper/ar/ArBillDetailMapper.xml +++ b/bms-back/bms-system/src/main/resources/mapper/ar/ArBillDetailMapper.xml @@ -112,6 +112,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" limit #{pageSize} + + insert into ar_bill_detail (ar_bill_id, prc_order_bill_id, detail_no, order_no, tracking_no, transfer_no, receive_time, product_code,