🐛 修复应收账单收货时间范围导出类型异常
This commit is contained in:
@@ -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<Integer, String> templateRows = extractTemplateRows(templateXml.substring(sheetDataOpenEnd + 1, sheetDataEnd));
|
||||
Map<String, Object> 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<String, Object> 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) {
|
||||
|
||||
Reference in New Issue
Block a user