Browse Source

出口货物委托书增加PO,加在唛头下面

master
han\hanst 2 days ago
parent
commit
8d2a44d3d2
  1. 31
      src/main/java/com/xujie/sys/common/utils/ExcelTemplateALPHA.java
  2. 31
      src/main/java/com/xujie/sys/common/utils/ExcelTemplateTX.java
  3. 31
      src/main/java/com/xujie/sys/common/utils/ExcelTemplateYB.java
  4. 22
      src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelTXServiceImpl.java
  5. BIN
      src/main/resources/templates/TX/declaration-all-template.xlsx
  6. BIN
      src/main/resources/templates/TX/declaration-template.xlsx
  7. BIN
      src/main/resources/templates/TX/export-goods-template.xlsx

31
src/main/java/com/xujie/sys/common/utils/ExcelTemplateALPHA.java

@ -46,6 +46,9 @@ public class ExcelTemplateALPHA {
// 价格靠右 发票
@Setter
private boolean invoiceLie = false;
// 发票价格列是否使用固定小数位单价5位总价2位
@Setter
private boolean fixedInvoicePriceScale = false;
// 数字靠右 箱单
@Setter
private boolean intRight = false;
@ -142,6 +145,7 @@ public class ExcelTemplateALPHA {
cellStyle2 = false;
rangeStyle = false;
priceRight = false;
fixedInvoicePriceScale = false;
intRight = false;
delRight = false;
}
@ -290,6 +294,8 @@ public class ExcelTemplateALPHA {
Set<Integer> dtlRows = new LinkedHashSet<>();
List<Integer> boxRows = new ArrayList<>();
Set<Integer> poNoCols = new HashSet<>();
Set<Integer> invoiceUnitPriceCols = new HashSet<>();
Set<Integer> invoiceTotalPriceCols = new HashSet<>();
//整体填值
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
XSSFRow row = sheet.getRow(i);
@ -313,6 +319,17 @@ public class ExcelTemplateALPHA {
if (i == dtlRowIndex && "#{po_no}".equalsIgnoreCase(cellValue)) {
poNoCols.add(j);
}
if (i == dtlRowIndex) {
Matcher matcherDtlField = PATTERN_DTL_FIELD.matcher(cellValue);
while (matcherDtlField.find()) {
String dtlField = matcherDtlField.group(1);
if (isInvoiceUnitPriceField(dtlField)) {
invoiceUnitPriceCols.add(j);
} else if (isInvoiceTotalPriceField(dtlField)) {
invoiceTotalPriceCols.add(j);
}
}
}
Matcher matcherHdr = PATTERN_HDR_FIELD.matcher(cellValue);
String result = c.getStringCellValue();
boolean hasHeaderPlaceholder = false;
@ -476,7 +493,11 @@ public class ExcelTemplateALPHA {
// 设置千分位格式根据单元格实际小数位动态决定格式
DataFormat dataFormat = workbook.createDataFormat();
String numFmt;
if (c7.getCellType() == CellType.NUMERIC) {
if (fixedInvoicePriceScale && invoiceUnitPriceCols.contains(i)) {
numFmt = "#,##0.00000";
} else if (fixedInvoicePriceScale && invoiceTotalPriceCols.contains(i)) {
numFmt = "#,##0.00";
} else if (c7.getCellType() == CellType.NUMERIC) {
numFmt = buildDecimalFormat(c7.getNumericCellValue());
} else {
numFmt = "#,##0.00";
@ -854,6 +875,14 @@ public class ExcelTemplateALPHA {
cell.setCellValue(richText);
}
private boolean isInvoiceUnitPriceField(String field) {
return "unitPrice".equalsIgnoreCase(field) || "tp".equalsIgnoreCase(field);
}
private boolean isInvoiceTotalPriceField(String field) {
return "totalPrice".equalsIgnoreCase(field) || "ttl_amount".equalsIgnoreCase(field);
}
private BigDecimal parseNumericString(String value) {
if (value == null) {
return null;

31
src/main/java/com/xujie/sys/common/utils/ExcelTemplateTX.java

@ -46,6 +46,9 @@ public class ExcelTemplateTX {
// 价格靠右 发票
@Setter
private boolean invoiceLie = false;
// 发票价格列是否使用固定小数位单价5位总价2位
@Setter
private boolean fixedInvoicePriceScale = false;
// 数字靠右 箱单
@Setter
private boolean intRight = false;
@ -142,6 +145,7 @@ public class ExcelTemplateTX {
cellStyle2 = false;
rangeStyle = false;
priceRight = false;
fixedInvoicePriceScale = false;
intRight = false;
delRight = false;
}
@ -291,6 +295,8 @@ public class ExcelTemplateTX {
Set<Integer> dtlRows = new LinkedHashSet<>();
List<Integer> boxRows = new ArrayList<>();
Set<Integer> invoiceUnitPriceCols = new HashSet<>();
Set<Integer> invoiceTotalPriceCols = new HashSet<>();
//整体填值
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
XSSFRow row = sheet.getRow(i);
@ -310,6 +316,17 @@ public class ExcelTemplateTX {
if ("#{cmcInvoice}".equals(cellValue)) {
boxRows.add(i);
}
if (i == dtlRowIndex) {
Matcher matcherDtlField = PATTERN_DTL_FIELD.matcher(cellValue);
while (matcherDtlField.find()) {
String dtlField = matcherDtlField.group(1);
if (isInvoiceUnitPriceField(dtlField)) {
invoiceUnitPriceCols.add(j);
} else if (isInvoiceTotalPriceField(dtlField)) {
invoiceTotalPriceCols.add(j);
}
}
}
Matcher matcherHdr = PATTERN_HDR_FIELD.matcher(cellValue);
String result = c.getStringCellValue();
boolean hasHeaderPlaceholder = false;
@ -474,7 +491,11 @@ public class ExcelTemplateTX {
// 设置千分位格式根据单元格实际小数位动态决定格式
DataFormat dataFormat = workbook.createDataFormat();
String numFmt;
if (c7.getCellType() == CellType.NUMERIC) {
if (fixedInvoicePriceScale && invoiceUnitPriceCols.contains(i)) {
numFmt = "#,##0.00000";
} else if (fixedInvoicePriceScale && invoiceTotalPriceCols.contains(i)) {
numFmt = "#,##0.00";
} else if (c7.getCellType() == CellType.NUMERIC) {
numFmt = buildDecimalFormat(c7.getNumericCellValue());
} else {
numFmt = "#,##0.00";
@ -845,6 +866,14 @@ public class ExcelTemplateTX {
cell.setCellValue(richText);
}
private boolean isInvoiceUnitPriceField(String field) {
return "unitPrice".equalsIgnoreCase(field) || "tp".equalsIgnoreCase(field);
}
private boolean isInvoiceTotalPriceField(String field) {
return "totalPrice".equalsIgnoreCase(field) || "ttl_amount".equalsIgnoreCase(field);
}
private BigDecimal parseNumericString(String value) {
if (value == null) {
return null;

31
src/main/java/com/xujie/sys/common/utils/ExcelTemplateYB.java

@ -46,6 +46,9 @@ public class ExcelTemplateYB {
// 价格靠右 发票
@Setter
private boolean invoiceLie = false;
// 发票价格列是否使用固定小数位单价5位总价2位
@Setter
private boolean fixedInvoicePriceScale = false;
// 数字靠右 箱单
@Setter
private boolean intRight = false;
@ -142,6 +145,7 @@ public class ExcelTemplateYB {
cellStyle2 = false;
rangeStyle = false;
priceRight = false;
fixedInvoicePriceScale = false;
intRight = false;
delRight = false;
}
@ -292,6 +296,8 @@ public class ExcelTemplateYB {
Set<Integer> dtlRows = new LinkedHashSet<>();
List<Integer> boxRows = new ArrayList<>();
Set<Integer> poNoCols = new HashSet<>();
Set<Integer> invoiceUnitPriceCols = new HashSet<>();
Set<Integer> invoiceTotalPriceCols = new HashSet<>();
//整体填值
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
XSSFRow row = sheet.getRow(i);
@ -315,6 +321,17 @@ public class ExcelTemplateYB {
if (i == dtlRowIndex && "#{po_no}".equalsIgnoreCase(cellValue)) {
poNoCols.add(j);
}
if (i == dtlRowIndex) {
Matcher matcherDtlField = PATTERN_DTL_FIELD.matcher(cellValue);
while (matcherDtlField.find()) {
String dtlField = matcherDtlField.group(1);
if (isInvoiceUnitPriceField(dtlField)) {
invoiceUnitPriceCols.add(j);
} else if (isInvoiceTotalPriceField(dtlField)) {
invoiceTotalPriceCols.add(j);
}
}
}
Matcher matcherHdr = PATTERN_HDR_FIELD.matcher(cellValue);
String result = c.getStringCellValue();
boolean hasHeaderPlaceholder = false;
@ -478,7 +495,11 @@ public class ExcelTemplateYB {
// 设置千分位格式根据单元格实际小数位动态决定格式
DataFormat dataFormat = workbook.createDataFormat();
String numFmt;
if (c7.getCellType() == CellType.NUMERIC) {
if (fixedInvoicePriceScale && invoiceUnitPriceCols.contains(i)) {
numFmt = "#,##0.00000";
} else if (fixedInvoicePriceScale && invoiceTotalPriceCols.contains(i)) {
numFmt = "#,##0.00";
} else if (c7.getCellType() == CellType.NUMERIC) {
numFmt = buildDecimalFormat(c7.getNumericCellValue());
} else {
numFmt = "#,##0.00";
@ -856,6 +877,14 @@ public class ExcelTemplateYB {
cell.setCellValue(richText);
}
private boolean isInvoiceUnitPriceField(String field) {
return "unitPrice".equalsIgnoreCase(field) || "tp".equalsIgnoreCase(field);
}
private boolean isInvoiceTotalPriceField(String field) {
return "totalPrice".equalsIgnoreCase(field) || "ttl_amount".equalsIgnoreCase(field);
}
private BigDecimal parseNumericString(String value) {
if (value == null) {
return null;

22
src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelTXServiceImpl.java

@ -1093,6 +1093,8 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService {
void setInvoiceLie(boolean invoiceLie);
void setFixedInvoicePriceScale(boolean fixedInvoicePriceScale);
void addVar(String key, Object value);
void addListVarAll(Collection rows);
@ -1147,6 +1149,11 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService {
delegate.setInvoiceLie(invoiceLie);
}
@Override
public void setFixedInvoicePriceScale(boolean fixedInvoicePriceScale) {
delegate.setFixedInvoicePriceScale(fixedInvoicePriceScale);
}
@Override
public void addVar(String key, Object value) {
delegate.addVar(key, value);
@ -1210,6 +1217,11 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService {
delegate.setInvoiceLie(invoiceLie);
}
@Override
public void setFixedInvoicePriceScale(boolean fixedInvoicePriceScale) {
delegate.setFixedInvoicePriceScale(fixedInvoicePriceScale);
}
@Override
public void addVar(String key, Object value) {
delegate.addVar(key, value);
@ -1273,6 +1285,11 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService {
delegate.setInvoiceLie(invoiceLie);
}
@Override
public void setFixedInvoicePriceScale(boolean fixedInvoicePriceScale) {
delegate.setFixedInvoicePriceScale(fixedInvoicePriceScale);
}
@Override
public void addVar(String key, Object value) {
delegate.addVar(key, value);
@ -1840,7 +1857,7 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService {
ecHeader.getPriceInfluenceConfirm().equals("Y") ? "是" : "否");
template.addVar("royaltyPaymentsConfirm", StringUtils.isEmpty(ecHeader.getRoyaltyPaymentsConfirm()) ? "" :
ecHeader.getRoyaltyPaymentsConfirm().equals("Y") ? "是" : "否");
template.addVar("remark", stringInput(ecHeader.getRemark()));
template.addVar("remark", stringInput(ecHeader.getRemark())+data.getVoyage());
List<Map> detailList = coDelMapper.exportDeclarationDetailTX(data);
for (int i = 0; i < detailList.size(); i++) {
@ -2064,6 +2081,8 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService {
template.setPriceRight(true);
template.setMoveSeal(true);
template.setInvoiceLie(data.getShowWeight() != null && data.getShowWeight());
String invoiceBuNo = notifyHeader == null ? "" : notifyHeader.getBuNo();
template.setFixedInvoicePriceScale("02-Hardtag".equalsIgnoreCase(invoiceBuNo) || "05-Alpha".equalsIgnoreCase(invoiceBuNo));
template.addVar("remark", stringInput(data.getFpremark()));
template.addVar("localShipper", notifyHeader.getCustomerName());
template.addVar("localShipAddress", notifyHeader.getLocalShipAddress());
@ -3061,6 +3080,7 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService {
template.addVar("contacts", ecssContacts.get(0).get("name")+(ecssContacts.size()>1?"/"+ecssContacts.get(1).get("name"):""));
}
template.addVar("voyage", resolveExportGoodsVoyage(data, notifyHeader, nodifyDetailList));//唛头
template.addVar("poNos", formatPoNoForHwDesc(poNoSet));
}
private String getContactField(List<Map> contacts, String field) {

BIN
src/main/resources/templates/TX/declaration-all-template.xlsx

BIN
src/main/resources/templates/TX/declaration-template.xlsx

BIN
src/main/resources/templates/TX/export-goods-template.xlsx

Loading…
Cancel
Save