From 8780e39236cf6bf381c352ee12902663b4efa522 Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期二, 14 四月 2026 11:28:41 +0800
Subject: [PATCH] 修改生成费用不取实报实销作废
---
tms/src/main/java/com/ruoyi/tms/service/impl/TmsArBillServiceImpl.java | 69 ++++++++++++++++++++++++----------
1 files changed, 49 insertions(+), 20 deletions(-)
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsArBillServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsArBillServiceImpl.java
index f75c835..841d013 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsArBillServiceImpl.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsArBillServiceImpl.java
@@ -21,6 +21,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
+import java.util.stream.Collectors;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
@@ -570,8 +571,8 @@
String rateStr = sysConfigService.selectConfigByKey("sys.hk.rmb.rate");
BigDecimal exchangeRate = new BigDecimal(rateStr);
- // 鏀堕泦鎵�鏈夎垂鐢ㄥ悕绉帮紝鐢ㄤ簬鍔ㄦ�佺敓鎴愬垪
- Set<String> feeNames = new HashSet<>();
+ // 鏀堕泦鎵�鏈夎垂鐢ㄥ悕绉板拰瀵瑰簲鐨勮揣甯侊紝鐢ㄤ簬鍔ㄦ�佺敓鎴愬垪
+ Map<String, String> feeCurrencyMap = new HashMap<>();
for (TmsArBillItem item : bill.getItems()) {
// 搴旀敹璐圭敤ID
@@ -580,15 +581,33 @@
List<TmsReceivableFeeItem> tmsReceivableFeeItems = tmsReceivableFeeItemMapper.selectTmsReceivableFeeItemList(new TmsReceivableFeeItem() {{
setHeadId(arFeeId);
}});
- // 浠庡簲鏀惰垂鐢ㄦ槑缁嗕腑鏀堕泦璐圭敤鍚嶇О
+ // 浠庡簲鏀惰垂鐢ㄦ槑缁嗕腑鏀堕泦璐圭敤鍚嶇О鍜岃揣甯�
for (TmsReceivableFeeItem feeItem : tmsReceivableFeeItems) {
- feeNames.add(feeItem.getFeeName());
+ feeCurrencyMap.put(feeItem.getFeeName(), feeItem.getCurrency());
}
}
- // 灏嗚垂鐢ㄥ悕绉拌浆鎹负鍒楄〃锛屼繚鎸侀『搴�
- List<String> feeNameList = new ArrayList<>(feeNames);
+ // 灏嗚垂鐢ㄥ悕绉拌浆鎹负鍒楄〃锛屽苟鎸夎姹傛帓搴忥細杩愯垂鏀惧湪鏈�鍓嶉潰锛屾潅璐规斁鍦ㄦ渶鍚庨潰
+ List<String> feeNameList = new ArrayList<>();
+ List<String> otherFees = new ArrayList<>();
+
+ for (String feeName : feeCurrencyMap.keySet()) {
+ if ("杩愯垂".equals(feeName)) {
+ feeNameList.add(feeName);
+ } else if ("鏉傝垂".equals(feeName)) {
+ otherFees.add(feeName);
+ } else {
+ otherFees.add(feeName);
+ }
+ }
+
+ // 娣诲姞鍏朵粬璐圭敤
+ feeNameList.addAll(otherFees.stream().filter(fee -> !"鏉傝垂".equals(fee)).collect(Collectors.toList()));
+ // 娣诲姞鏉傝垂鍒版渶鍚�
+ if (feeCurrencyMap.containsKey("鏉傝垂")) {
+ feeNameList.add("鏉傝垂");
+ }
// 鍩虹鍒楁暟锛堝簭鍙枫�佽璐ф棩鏈熴�佽璐х偣銆佸嵏璐х偣銆佽溅鐗屻�佸瀷鍙凤級
int baseColumns = 6;
@@ -614,7 +633,7 @@
createTitleArea(sheet, styles,bill);
// 琛ㄥご
- createDynamicTableHeader(sheet, styles, feeNameList, baseColumns, remarkColumn);
+ createDynamicTableHeader(sheet, styles, feeNameList, feeCurrencyMap, baseColumns, remarkColumn);
// 鏁版嵁鍖哄煙
int startRow = 5;
@@ -687,12 +706,8 @@
}});
// 澶勭悊搴旀敹璐圭敤鏄庣粏
for (TmsReceivableFeeItem feeItem : tmsReceivableFeeItems) {
- BigDecimal amount = feeItem.getRegisterAmount();
- // 濡傛灉鏄腐甯侊紝杞崲涓轰汉姘戝竵
- if ("HKD".equals(feeItem.getCurrency()) || "娓竵".equals(feeItem.getCurrency())) {
- amount = amount.multiply(exchangeRate).setScale(2, RoundingMode.HALF_UP);
- }
- feeMap.put(feeItem.getFeeName(), amount);
+ // 淇濇寔鍘熷閲戦锛屼笉杩涜甯佺杞崲
+ feeMap.put(feeItem.getFeeName(), feeItem.getRegisterAmount());
}
// 濉厖璐圭敤鍒�
@@ -707,9 +722,9 @@
feeTotals.put(feeName, feeTotals.get(feeName).add(feeAmount));
}
- // 澶囨敞
+ // 澶囨敞 - 涓虹┖
Cell remarkCell = row.createCell(remarkColumn);
- remarkCell.setCellValue("" + (fee.getDispatchNo() != null ? fee.getDispatchNo() : ""));
+ remarkCell.setCellValue("");
remarkCell.setCellStyle(styles.get("data"));
rowIndex++;
@@ -746,13 +761,24 @@
if (i == 0) {
cell.setCellValue("鍚堣(RMB)");
}
+ // 鍚堣琛岀殑澶囨敞璁剧疆姹囩巼
+ if (i == remarkColumn) {
+ cell.setCellValue("姹囩巼: " + exchangeRate);
+ }
cell.setCellStyle(styles.get("total"));
}
sheet.addMergedRegion(new CellRangeAddress(totalRow, totalRow, 0, 5));
- // 璁$畻鎵�鏈夎垂鐢ㄧ殑鍚堣
+ // 璁$畻鎵�鏈夎垂鐢ㄧ殑鍚堣锛堣浆鎹负浜烘皯甯侊級
BigDecimal grandTotal = BigDecimal.ZERO;
- for (BigDecimal amount : feeTotals.values()) {
+ for (String feeName : feeTotals.keySet()) {
+ BigDecimal amount = feeTotals.get(feeName);
+ // 鑾峰彇璇ヨ垂鐢ㄧ殑甯佺
+ String currency = feeCurrencyMap.get(feeName);
+ // 濡傛灉鏄腐甯侊紝杞崲涓轰汉姘戝竵
+ if ("HKD".equals(currency) || "娓竵".equals(currency)) {
+ amount = amount.multiply(exchangeRate).setScale(2, RoundingMode.HALF_UP);
+ }
grandTotal = grandTotal.add(amount);
}
@@ -898,7 +924,6 @@
*
* @param sheet 宸ヤ綔琛�
* @param styles 鏍峰紡鏄犲皠
- * @param tmsReceivableFee 搴旀敹璐圭敤鏌ヨ鏉′欢
*/
private void createTitleArea(SXSSFSheet sheet, Map<String, CellStyle> styles, TmsArBill tmsArBill) {
// 鏍囬琛岋紙鏃犺竟妗嗭紝灞呬腑锛�
@@ -964,10 +989,11 @@
* @param sheet 宸ヤ綔琛�
* @param styles 鏍峰紡鏄犲皠
* @param feeNameList 璐圭敤鍚嶇О鍒楄〃
+ * @param feeCurrencyMap 璐圭敤鍚嶇О鍒拌揣甯佺殑鏄犲皠
* @param baseColumns 鍩虹鍒楁暟
* @param remarkColumn 澶囨敞鍒椾綅缃�
*/
- private void createDynamicTableHeader(SXSSFSheet sheet, Map<String, CellStyle> styles, List<String> feeNameList, int baseColumns, int remarkColumn) {
+ private void createDynamicTableHeader(SXSSFSheet sheet, Map<String, CellStyle> styles, List<String> feeNameList, Map<String, String> feeCurrencyMap, int baseColumns, int remarkColumn) {
Row headerRow = sheet.createRow(4);
headerRow.setHeightInPoints(25);
@@ -982,7 +1008,10 @@
// 璐圭敤鍒�
for (int i = 0; i < feeNameList.size(); i++) {
Cell cell = headerRow.createCell(baseColumns + i);
- cell.setCellValue(feeNameList.get(i) + "(浜烘皯甯�)");
+ String feeName = feeNameList.get(i);
+ String currency = feeCurrencyMap.get(feeName);
+
+ cell.setCellValue(feeName + "(" + currency + ")");
cell.setCellStyle(styles.get("header"));
}
--
Gitblit v1.8.0