Browse Source

1.增加账龄分析导出明细接口
2.客户订舱样本导入接口修改
3.api场站消息通知接口修改

纪新园 2 months ago
parent
commit
f1275eac3c

+ 120 - 39
blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/AgingAnalysisRC.java

@@ -19,45 +19,126 @@ import java.util.Date;
 @ContentRowHeight(18)
 public class AgingAnalysisRC {
 
-	@ExcelProperty(value = "客户名称")
+	@ExcelProperty(value = "所属公司")
+	private String branchName;
+
+	@ExcelProperty(value = "结算单位")
 	private String corpName;
-	@ExcelProperty(value = "业务流水号")
-	private String billNo;
-	@ExcelProperty(value = "提单号")
-	private String mblNo;
-	@ExcelProperty(value = "美元欠费")
-	private BigDecimal amountUsdArrears;
-	@ExcelProperty(value = "已开票")
-	private BigDecimal amountInvoicingUsd;
-	@ExcelProperty(value = "人民币欠费")
-	private BigDecimal amountArrears;
-	@ExcelProperty(value = "已开票")
-	private BigDecimal amountInvoicing;
-	@ExcelProperty(value = "本位币应付")
-	private BigDecimal amountAnswer;
-	@ExcelProperty(value = "本位币实付")
-	private BigDecimal amountSolid;
-	@ExcelProperty(value = "汇率")
-	private BigDecimal rate;
-	@ExcelProperty(value = "30天以内")
-	private BigDecimal thirty;
-	@ExcelProperty(value = "30-60天")
-	private BigDecimal thirtyToSixty;
-	@ExcelProperty(value = "60-90天")
-	private BigDecimal sixtyToNinety;
-	@ExcelProperty(value = "90-180天")
-	private BigDecimal ninetyToOneHundredAndEighty;
-	@ExcelProperty(value = "180天以上")
-	private BigDecimal oneHundredAndEighty;
-	@ExcelProperty(value = "离港日")
-	private Date etd;
-	@ExcelProperty(value = "承运人")
-	private String carrier;
-	@ExcelProperty(value = "销售")
-	private String sale;
-	@ExcelProperty(value = "操作")
-	private String operatorName;
-	@ExcelProperty(value = "制单人")
-	private String creatorName;
+
+	@ExcelProperty(value = "客户")
+	private String corp;
+
+
+	@ExcelProperty(value = "cny总计")
+	private BigDecimal cnyTtl;
+
+
+	@ExcelProperty(value = "usd总计")
+	private BigDecimal usdTtl;
+
+	@ExcelProperty(value = "hkd总计")
+	private BigDecimal hkdTtl;
+
+	@ExcelProperty(value = "vnk总计")
+	private BigDecimal vnkTtl;
+
+	@ExcelProperty(value = "sgd总计")
+	private BigDecimal sgdTtl;
+
+
+	@ExcelProperty(value = "cny30")
+	private BigDecimal cny30;
+
+	@ExcelProperty(value = "cny60")
+	private BigDecimal cny60;
+
+	@ExcelProperty(value = "cny90")
+	private BigDecimal cny90;
+
+	@ExcelProperty(value = "cny120")
+	private BigDecimal cny120;
+
+	@ExcelProperty(value = "cny150")
+	private BigDecimal cny150;
+
+	@ExcelProperty(value = "cnyOver150")
+	private BigDecimal cnyOver150;
+
+	@ExcelProperty(value = "usd30")
+	private BigDecimal usd30;
+
+	@ExcelProperty(value = "usd60")
+	private BigDecimal usd60;
+
+	@ExcelProperty(value = "usd90")
+	private BigDecimal usd90;
+
+	@ExcelProperty(value = "usd120")
+	private BigDecimal usd120;
+
+	@ExcelProperty(value = "usd150")
+	private BigDecimal usd150;
+
+	@ExcelProperty(value = "usdOver150")
+	private BigDecimal usdOver150;
+
+
+	@ExcelProperty(value = "hkd30")
+	private BigDecimal hkd30;
+
+	@ExcelProperty(value = "hkd60")
+	private BigDecimal hkd60;
+
+	@ExcelProperty(value = "hkd90")
+	private BigDecimal hkd90;
+
+
+	@ExcelProperty(value = "hkd120")
+	private BigDecimal hkd120;
+
+	@ExcelProperty(value = "hkd150")
+	private BigDecimal hkd150;
+
+	@ExcelProperty(value = "hkdOver150")
+	private BigDecimal hkdOver150;
+
+
+	@ExcelProperty(value = "vnk30")
+	private BigDecimal vnk30;
+
+	@ExcelProperty(value = " vnk60")
+	private BigDecimal vnk60;
+
+	@ExcelProperty(value = " vnk90")
+	private BigDecimal vnk90;
+
+
+	@ExcelProperty(value = " vnk120")
+	private BigDecimal vnk120;
+
+	@ExcelProperty(value = " vnk150")
+	private BigDecimal vnk150;
+
+	@ExcelProperty(value = "vnkOver150")
+	private BigDecimal vnkOver150;
+
+	@ExcelProperty(value = "sgd30")
+	private BigDecimal sgd30;
+
+	@ExcelProperty(value = "sgd60")
+	private BigDecimal sgd60;
+
+	@ExcelProperty(value = "sgd90")
+	private BigDecimal sgd90;
+
+
+	@ExcelProperty(value = "sgd120")
+	private BigDecimal sgd120;
+
+	@ExcelProperty(value = "sgd150")
+	private BigDecimal sgd150;
+
+	@ExcelProperty(value = "sgdOver150")
+	private BigDecimal sgdOver150;
 
 }

+ 80 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/AgingAnalysisRDItem.java

@@ -0,0 +1,80 @@
+package org.springblade.los.statisticAnalysis;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.los.utils.LosSpecialHandle;
+
+import java.math.BigDecimal;
+
+/**
+ * @author :jixinyuan
+ * @date : 2024/3/7
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class AgingAnalysisRDItem {
+
+	@ExcelProperty(value = "所属公司")
+	private String branchName;
+
+	@ExcelProperty(value = "结算单位")
+	private String corpName;
+
+	@ExcelProperty(value = "开船日期")
+	private String atd;
+
+	@ExcelProperty(value = "到港日期")
+	private String ata;
+
+	@ExcelProperty(value = "提单号")
+	private String mblno;
+
+	@ExcelProperty(value = "分单号")
+	private String hblno;
+
+	@ExcelProperty(value = "箱型箱量")
+	private String quantityCntrDescr;
+
+	@ExcelProperty(value = "起运港")
+	private String polCnName;
+
+	@ExcelProperty(value = "目的港")
+	private String podCnName;
+
+	@ExcelProperty(value = "业务员")
+	private String srcCnName;
+
+	@ExcelProperty(value = "客服")
+	private String customerServiceName;
+
+	@ExcelProperty(value = "订舱代理")
+	private String bookingAgentCnName;
+
+	@ExcelProperty(value = "币别")
+	private String curCode;
+
+	@ExcelProperty(value = "30")
+	private BigDecimal day30;
+
+	@ExcelProperty(value = "60")
+	private BigDecimal day60;
+
+	@ExcelProperty(value = "90")
+	private BigDecimal day90;
+
+	@ExcelProperty(value = "120")
+	private BigDecimal day120;
+
+	@ExcelProperty(value = "150")
+	private BigDecimal day150;
+
+	@ExcelProperty(value = "150")
+	private BigDecimal dayOver150;
+
+}

+ 10 - 7
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -1456,12 +1456,14 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				item.setPortTerminalCyTel(bills.getPortTerminalCyTel());
 				item.setPortTerminalCyAddress(bills.getPortTerminalCyAddress());
 				item.setPortTerminalCyContacts(bills.getPortTerminalCyContacts());
-				item.setCyId(bills.getCyId());
-				item.setCyCode(bills.getCyCode());
-				item.setCyCnName(bills.getCyCnName());
-				item.setCyAddress(bills.getCyAddress());
-				item.setCyContacts(bills.getCyContacts());
-				item.setCyTel(bills.getCyTel());
+				if (ObjectUtils.isNull(item.getCyId()) || 0 == item.getCyId()) {
+					item.setCyId(bills.getCyId());
+					item.setCyCode(bills.getCyCode());
+					item.setCyCnName(bills.getCyCnName());
+					item.setCyAddress(bills.getCyAddress());
+					item.setCyContacts(bills.getCyContacts());
+					item.setCyTel(bills.getCyTel());
+				}
 				item.setUpdateTime(new Date());
 				item.setUpdateUser(AuthUtil.getUserId());
 				item.setUpdateUserName(AuthUtil.getUserName());
@@ -5923,6 +5925,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 					int version = StringUtil.isBlank(item.getVersion()) ? 1 : Integer.parseInt(item.getVersion());
 					item.setVersion(String.valueOf(version + 1));
 					item.setEtd(bills.getEtd());
+
+					item.setIssueAt(bills.getIssueAt());
 					item.setEta(bills.getEta());
 					item.setActualEta(bills.getActualEta());
 					item.setActualEtd(bills.getActualEtd());
@@ -5952,7 +5956,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 					item.setPlaceDeliveryName(bills.getPlaceDeliveryName());
 					item.setPlaceDeliveryCode(bills.getPlaceDeliveryCode());
 					item.setIssueAtId(bills.getIssueAtId());
-					item.setIssueAt(bills.getIssueAt());
 					if (!bookingList.isEmpty() && ObjectUtils.isNotNull(item.getTemporaryId())) {
 						Bills bills1 = bookingList.stream().filter(e -> e.getId().equals(item.getTemporaryId())).findFirst().orElse(null);
 						if (bills1 != null) {

+ 9 - 6
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/TemplateImportServiceImpl.java

@@ -1680,7 +1680,8 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 		String pol = getSheetCellValueAsString(sheet, 19, 0);
 		System.out.println("Port of Loading:" + pol);
 		if (ObjectUtils.isNotNull(pol)) {
-			BPorts ports = bPortsService.getOne(new LambdaQueryWrapper<BPorts>()
+			bills.setPolNamePrint(pol);
+			/*BPorts ports = bPortsService.getOne(new LambdaQueryWrapper<BPorts>()
 				.eq(BPorts::getTenantId, AuthUtil.getTenantId())
 				.eq(BPorts::getIsDeleted, 0)
 				.like(BPorts::getEnName, pol)
@@ -1692,13 +1693,14 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 				bills.setPolEnName(ports.getEnName());
 			} else {
 				throw new RuntimeException("Port of Loading:" + pol + " 无法识别!");
-			}
+			}*/
 		}
 		//pod
 		String pod = getSheetCellValueAsString(sheet, 19, 2);
 		System.out.println("Port of Discharge:" + pod);
 		if (ObjectUtils.isNotNull(pod)) {
-			BPorts ports = bPortsService.getOne(new LambdaQueryWrapper<BPorts>()
+			bills.setPodNamePrint(pod);
+			/*BPorts ports = bPortsService.getOne(new LambdaQueryWrapper<BPorts>()
 				.eq(BPorts::getTenantId, AuthUtil.getTenantId())
 				.eq(BPorts::getIsDeleted, 0)
 				.like(BPorts::getEnName, pod)
@@ -1710,13 +1712,14 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 				bills.setPodEnName(ports.getEnName());
 			} else {
 				throw new RuntimeException("Port of Discharge:" + pod + " 无法识别!");
-			}
+			}*/
 		}
 		//交货地
 		String placeDelivery = getSheetCellValueAsString(sheet, 19, 10);
 		System.out.println("Place of delivery:" + placeDelivery);
 		if (ObjectUtils.isNotNull(placeDelivery)) {
-			BPorts ports = bPortsService.getOne(new LambdaQueryWrapper<BPorts>()
+			bills.setPlaceDeliveryNamePrint(placeDelivery);
+			/*BPorts ports = bPortsService.getOne(new LambdaQueryWrapper<BPorts>()
 				.eq(BPorts::getTenantId, AuthUtil.getTenantId())
 				.eq(BPorts::getIsDeleted, 0)
 				.like(BPorts::getEnName, placeDelivery)
@@ -1727,7 +1730,7 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 				bills.setPlaceDeliveryCode(ports.getCode());
 			} else {
 				throw new RuntimeException("Place of delivery:" + placeDelivery + " 无法识别!");
-			}
+			}*/
 		}
 		//G.W.
 		String gw = getSheetCellValueAsString(sheet, 21, 11);

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/mapper/FinAccBillsMapper.java

@@ -67,4 +67,6 @@ public interface FinAccBillsMapper extends BaseMapper<FinAccBills> {
 	List<AgingAnalysisRD> agingAnalysis(IPage<AgingAnalysisRD> page, @Param("fee")FeeSummaryQ feeSummaryQ);
 
 	List<AgingAnalysisRD> agingAnalysisExport(@Param("fee")FeeSummaryQ feeSummaryQ);
+
+	List<AgingAnalysisRDItem> agingAnalysisExportItem(@Param("fee")FeeSummaryQ feeSummaryQ);
 }

+ 129 - 72
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/mapper/FinAccBillsMapper.xml

@@ -776,57 +776,57 @@
         </choose>
 
         <!-- 各币种总额 -->
-        SUM(CASE WHEN DC='D' and cur_code='CNY' then amount-stl_amount else 0 END) AS cnyTtl,
-        SUM(CASE WHEN DC='D' and cur_code='USD' then amount-stl_amount else 0 END) AS USDTTL,
-        SUM(CASE WHEN DC='D' and cur_code='HKD' then amount-stl_amount else 0 END) AS HKDTTL,
-        SUM(CASE WHEN DC='D' and cur_code='VND' then amount-stl_amount else 0 END) AS VNDTTL,
-        SUM(CASE WHEN DC='D' and cur_code='SGD' then amount-stl_amount else 0 END) AS SGDTTL,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' then amount-stl_amount else 0 END) AS cnyTtl,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' then amount-stl_amount else 0 END) AS USDTTL,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' then amount-stl_amount else 0 END) AS HKDTTL,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' then amount-stl_amount else 0 END) AS VNDTTL,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' then amount-stl_amount else 0 END) AS SGDTTL,
 
         <!-- CNY 账龄分析 -->
-        SUM(CASE WHEN DC='D' and cur_code='CNY' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS CNY30,
-        SUM(CASE WHEN DC='D' and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS CNY60,
-        SUM(CASE WHEN DC='D' and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS CNY90,
-        SUM(CASE WHEN DC='D' and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS CNY120,
-        SUM(CASE WHEN DC='D' and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS CNY150,
-        SUM(CASE WHEN DC='D' and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS CNYOver150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS CNY30,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS CNY60,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS CNY90,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS CNY120,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS CNY150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS CNYOver150,
 
         <!-- USD 账龄分析 -->
-        SUM(CASE WHEN DC='D' and cur_code='USD' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS USD30,
-        SUM(CASE WHEN DC='D' and cur_code='USD' and bill_date &lt;DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS USD60,
-        SUM(CASE WHEN DC='D' and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS USD90,
-        SUM(CASE WHEN DC='D' and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS USD120,
-        SUM(CASE WHEN DC='D' and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS USD150,
-        SUM(CASE WHEN DC='D' and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS USDOver150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS USD30,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' and bill_date &lt;DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS USD60,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS USD90,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS USD120,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS USD150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS USDOver150,
 
         <!-- HKD 账龄分析 -->
-        SUM(CASE WHEN DC='D' and cur_code='HKD' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS HKD30,
-        SUM(CASE WHEN DC='D' and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS HKD60,
-        SUM(CASE WHEN DC='D' and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS HKD90,
-        SUM(CASE WHEN DC='D' and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS HKD120,
-        SUM(CASE WHEN DC='D' and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS HKD150,
-        SUM(CASE WHEN DC='D' and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS HKDOver150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS HKD30,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS HKD60,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS HKD90,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS HKD120,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS HKD150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS HKDOver150,
 
         <!-- VND 账龄分析 -->
-        SUM(CASE WHEN DC='D' and cur_code='VND' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS VND30,
-        SUM(CASE WHEN DC='D' and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS VND60,
-        SUM(CASE WHEN DC='D' and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS VND90,
-        SUM(CASE WHEN DC='D' and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS VND120,
-        SUM(CASE WHEN DC='D' and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS VND150,
-        SUM(CASE WHEN DC='D' and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS VNDOver150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS VND30,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS VND60,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS VND90,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS VND120,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS VND150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS VNDOver150,
 
         <!-- SGD 账龄分析 -->
-        SUM(CASE WHEN DC='D' and cur_code='SGD' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS SGD30,
-        SUM(CASE WHEN DC='D' and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS SGD60,
-        SUM(CASE WHEN DC='D' and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS SGD90,
-        SUM(CASE WHEN DC='D' and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS SGD120,
-        SUM(CASE WHEN DC='D' and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS SGD150,
-        SUM(CASE WHEN DC='D' and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS SGDOver150
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS SGD30,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS SGD60,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS SGD90,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS SGD120,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS SGD150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS SGDOver150
 
         FROM los_fee_center
         WHERE tenant_id = #{fee.tenantId}
         AND is_deleted = '0'
         AND ABS(amount - stl_amount) > 0.01
-        AND DC = 'D'
+        AND DC = #{fee.dc}
         AND acc_status = 1
         AND bill_date &lt;= #{fee.etdEnd}
 
@@ -889,57 +889,57 @@
         </choose>
 
         <!-- 各币种总额 -->
-        SUM(CASE WHEN DC='D' and cur_code='CNY' then amount-stl_amount else 0 END) AS CNYTTL,
-        SUM(CASE WHEN DC='D' and cur_code='USD' then amount-stl_amount else 0 END) AS USDTTL,
-        SUM(CASE WHEN DC='D' and cur_code='HKD' then amount-stl_amount else 0 END) AS HKDTTL,
-        SUM(CASE WHEN DC='D' and cur_code='VND' then amount-stl_amount else 0 END) AS VNDTTL,
-        SUM(CASE WHEN DC='D' and cur_code='SGD' then amount-stl_amount else 0 END) AS SGDTTL,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' then amount-stl_amount else 0 END) AS CNYTTL,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' then amount-stl_amount else 0 END) AS USDTTL,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' then amount-stl_amount else 0 END) AS HKDTTL,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' then amount-stl_amount else 0 END) AS VNDTTL,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' then amount-stl_amount else 0 END) AS SGDTTL,
 
         <!-- CNY 账龄分析 -->
-        SUM(CASE WHEN DC='D' and cur_code='CNY' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS CNY30,
-        SUM(CASE WHEN DC='D' and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS CNY60,
-        SUM(CASE WHEN DC='D' and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS CNY90,
-        SUM(CASE WHEN DC='D' and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS CNY120,
-        SUM(CASE WHEN DC='D' and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS CNY150,
-        SUM(CASE WHEN DC='D' and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS CNYOver150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS CNY30,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS CNY60,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS CNY90,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS CNY120,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS CNY150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='CNY' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS CNYOver150,
 
         <!-- USD 账龄分析 -->
-        SUM(CASE WHEN DC='D' and cur_code='USD' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS USD30,
-        SUM(CASE WHEN DC='D' and cur_code='USD' and bill_date &lt;DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS USD60,
-        SUM(CASE WHEN DC='D' and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS USD90,
-        SUM(CASE WHEN DC='D' and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS USD120,
-        SUM(CASE WHEN DC='D' and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS USD150,
-        SUM(CASE WHEN DC='D' and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS USDOver150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS USD30,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' and bill_date &lt;DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS USD60,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS USD90,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS USD120,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS USD150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='USD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS USDOver150,
 
         <!-- HKD 账龄分析 -->
-        SUM(CASE WHEN DC='D' and cur_code='HKD' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS HKD30,
-        SUM(CASE WHEN DC='D' and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS HKD60,
-        SUM(CASE WHEN DC='D' and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS HKD90,
-        SUM(CASE WHEN DC='D' and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS HKD120,
-        SUM(CASE WHEN DC='D' and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS HKD150,
-        SUM(CASE WHEN DC='D' and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS HKDOver150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS HKD30,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS HKD60,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS HKD90,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS HKD120,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS HKD150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='HKD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS HKDOver150,
 
         <!-- VND 账龄分析 -->
-        SUM(CASE WHEN DC='D' and cur_code='VND' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS VND30,
-        SUM(CASE WHEN DC='D' and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS VND60,
-        SUM(CASE WHEN DC='D' and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS VND90,
-        SUM(CASE WHEN DC='D' and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS VND120,
-        SUM(CASE WHEN DC='D' and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS VND150,
-        SUM(CASE WHEN DC='D' and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS VNDOver150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS VND30,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS VND60,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS VND90,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS VND120,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS VND150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='VND' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS VNDOver150,
 
         <!-- SGD 账龄分析 -->
-        SUM(CASE WHEN DC='D' and cur_code='SGD' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS SGD30,
-        SUM(CASE WHEN DC='D' and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS SGD60,
-        SUM(CASE WHEN DC='D' and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS SGD90,
-        SUM(CASE WHEN DC='D' and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS SGD120,
-        SUM(CASE WHEN DC='D' and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS SGD150,
-        SUM(CASE WHEN DC='D' and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS SGDOver150
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then amount-stl_amount else 0 END) AS SGD30,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then amount-stl_amount else 0 END) AS SGD60,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then amount-stl_amount else 0 END) AS SGD90,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then amount-stl_amount else 0 END) AS SGD120,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS SGD150,
+        SUM(CASE WHEN DC=#{fee.dc} and cur_code='SGD' and bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then amount-stl_amount else 0 END) AS SGDOver150
 
         FROM los_fee_center
         WHERE tenant_id = #{fee.tenantId}
         AND is_deleted = '0'
         AND ABS(amount - stl_amount) > 0.01
-        AND DC = 'D'
+        AND DC = #{fee.dc}
         AND acc_status = 1
         AND bill_date &lt;= #{fee.etdEnd}
 
@@ -979,5 +979,62 @@
             </otherwise>
         </choose>
     </select>
+    <select id="agingAnalysisExportItem"
+            resultType="org.springblade.los.statisticAnalysis.AgingAnalysisRDItem">
+        SELECT
+        <choose>
+            <when test='fee.type != null and fee.type == "1"'>
+                lfc.corp_cn_name AS corpName,
+                lfc.branch_name AS branchName,
+            </when>
+            <when test='fee.type != null and fee.type == "2"'>
+                lfc.bill_corp_cn_name AS corpName,
+                lfc.branch_name AS branchName,
+            </when>
+            <when test='fee.type != null and fee.type == "3"'>
+                lfc.src_cn_name AS salesName,
+                lfc.corp_cn_name AS corpName,
+                lfc.branch_name AS branchName,
+            </when>
+            <otherwise>
+                lfc.corp_cn_name AS corpName,
+                lfc. branch_name AS branchName,
+            </otherwise>
+        </choose>
+        CASE WHEN DC=#{fee.dc} and lfc.bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) then lfc.amount-lfc.stl_amount else 0 END AS day30,
+        CASE WHEN DC=#{fee.dc} and lfc.bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 1 MONTH) and lfc.bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) then lfc.amount-lfc.stl_amount else 0 END AS day60,
+        CASE WHEN DC=#{fee.dc} and lfc.bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 2 MONTH) and lfc.bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) then lfc.amount-lfc.stl_amount else 0 END AS day90,
+        CASE WHEN DC=#{fee.dc} and lfc.bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 3 MONTH) and lfc.bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) then lfc.amount-lfc.stl_amount else 0 END AS day120,
+        CASE WHEN DC=#{fee.dc} and lfc.bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 4 MONTH) and lfc.bill_date >= DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then lfc.amount-lfc.stl_amount else 0 END AS day150,
+        CASE WHEN DC=#{fee.dc} and lfc.bill_date &lt; DATE_SUB(#{fee.etdEnd}, INTERVAL 5 MONTH) then lfc.amount-lfc.stl_amount else 0 END AS dayOver150,
+        lsb.actual_etd AS atd,
+        lsb.actual_eta AS ata,
+        lsb.mblno AS mblno,
+        lsb.hblno AS hblno,
+        lsb.quantity_cntr_descr AS quantityCntrDescr,
+        lsb.pol_cn_name AS polCnName,
+        lsb.pod_cn_name AS podCnName,
+        lsb.customer_service_name AS customerServiceName,
+        lsb.booking_agent_cn_name AS bookingAgentCnName,
+        lfc.cur_code AS curCode,
+        lsb.src_cn_name AS srcCnName
+        FROM los_fee_center lfc
+        LEFT JOIN los_sea_bills lsb on lfc.pid = lsb.id
+        WHERE lfc.tenant_id = #{fee.tenantId}
+        AND lfc.is_deleted = '0'
+        AND ABS(lfc.amount - lfc.stl_amount) > 0.01
+        AND lfc.DC = #{fee.dc}
+        AND lfc.acc_status = 1
+        AND lfc.bill_date &lt;= #{fee.etdEnd}
+        <if test='fee.branchId != null and fee.branchId != ""'>
+            AND lfc.branch_id = #{fee.branchId}
+        </if>
+        <if test='fee.businessType != null and fee.businessType != ""'>
+            AND lfc.business_type = #{fee.businessType}
+        </if>
+        <if test='fee.corpId != null and fee.corpId != ""'>
+            AND lfc.corp_id = #{fee.corpId}
+        </if>
+    </select>
 
 </mapper>

+ 21 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java

@@ -522,6 +522,9 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 						feeCenter.setAmountLoc(new BigDecimal("0"));
 					}
 				}
+				feeCenter.setCreateUser(AuthUtil.getUserId());
+				feeCenter.setCreateUserName(AuthUtil.getUserName());
+				feeCenter.setCreateTime(new Date());
 				list.add(feeCenter);
 			}
 			/*for (FeesTemplateItems items : losBFeesTemplate.getFeesTemplateItemsList()) {
@@ -1644,6 +1647,9 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 					}
 				}
 				feeCenter.setUnsettledAmount(feeCenter.getAmount());
+				feeCenter.setCreateUser(AuthUtil.getUserId());
+				feeCenter.setCreateUserName(AuthUtil.getUserName());
+				feeCenter.setCreateTime(new Date());
 				list.add(feeCenter);
 				list1.add(feeCenter);
 			}
@@ -1902,6 +1908,9 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 								feeCenterC.setAmount(feeCenterC.getQuantity().multiply(feeCenterC.getPrice()));
 								feeCenterC.setAmountLoc(feeCenterC.getAmount().multiply(feeCenterC.getExrate()));
 								feeCenterC.setUnsettledAmount(feeCenterC.getAmount());
+								feeCenterC.setCreateUser(AuthUtil.getUserId());
+								feeCenterC.setCreateUserName(AuthUtil.getUserName());
+								feeCenterC.setCreateTime(new Date());
 								feeCentersFdC.add(feeCenterC);
 								feeCenterSum.add(feeCenterC);
 							}
@@ -2005,6 +2014,9 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 							feeCenterD.setAmount(amount);
 							feeCenterD.setAmountLoc(amount.multiply(feeCenterD.getExrate()));
 							feeCenterD.setUnsettledAmount(feeCenterD.getAmount());
+							feeCenterD.setCreateUser(AuthUtil.getUserId());
+							feeCenterD.setCreateUserName(AuthUtil.getUserName());
+							feeCenterD.setCreateTime(new Date());
 							list.add(feeCenterD);
 							list1.add(feeCenterD);
 						}
@@ -2439,6 +2451,9 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 											PreContainers items, List<BCurExrate> curExrateList,
 											MktSlotQuotation mktSlotQuotations, String exrateType, String type) {
 		FeeCenter feeCenter = new FeeCenter();
+		feeCenter.setCreateUser(AuthUtil.getUserId());
+		feeCenter.setCreateUserName(AuthUtil.getUserName());
+		feeCenter.setCreateTime(new Date());
 		feeCenter.setBranchId(bills.getBranchId());
 		feeCenter.setBranchName(bills.getBranchName());
 		feeCenter.setBookingAgentId(bills.getBookingAgentId());
@@ -2569,6 +2584,9 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 								   List<BCurExrate> curExrateList, List<PreContainers> preContainers,
 								   String exrateType, String type) {
 		FeeCenter feeCenter = new FeeCenter();
+		feeCenter.setCreateUser(AuthUtil.getUserId());
+		feeCenter.setCreateUserName(AuthUtil.getUserName());
+		feeCenter.setCreateTime(new Date());
 		feeCenter.setBranchId(bills.getBranchId());
 		feeCenter.setBranchName(bills.getBranchName());
 		feeCenter.setBookingAgentId(bills.getBookingAgentId());
@@ -2700,6 +2718,9 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 												List<BCurExrate> curExrateList, List<PreContainers> preContainers,
 												String exrateType, String type) {
 		FeeCenter feeCenter = new FeeCenter();
+		feeCenter.setCreateUser(AuthUtil.getUserId());
+		feeCenter.setCreateUserName(AuthUtil.getUserName());
+		feeCenter.setCreateTime(new Date());
 		feeCenter.setBranchId(bills.getBranchId());
 		feeCenter.setBranchName(bills.getBranchName());
 		feeCenter.setBookingAgentId(bills.getBookingAgentId());

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/ftp/service/impl/CyFtpServiceImpl.java

@@ -607,7 +607,7 @@ public class CyFtpServiceImpl implements CyFtpService {
 		}
 		//发送消息
 		R<String> res = sysClient.getRoleIds(AuthUtil.getTenantId(), "箱管");
-		if (res.isSuccess() && ObjectUtils.isNotNull()) {
+		if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
 			R<List<User>> userListR = userClient.listUserByRoleIds(res.getData());
 			if (userListR.isSuccess() && ObjectUtils.isNotNull(userListR.getData())) {
 				for (User item : userListR.getData()) {

+ 15 - 3
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/controller/FinanceStatisticsController.java

@@ -247,13 +247,25 @@ public class FinanceStatisticsController {
 	 * 账龄分析导出
 	 */
 	@GetMapping("/agingAnalysisExport")
-	public void agingAnalysisExport(FeeSummaryQ feeSummaryQ, HttpServletResponse response) throws ParseException {
+	public void agingAnalysisExport(FeeSummaryQ feeSummaryQ, HttpServletResponse response) {
 		List<AgingAnalysisRD> list = statisticAnalysisService.agingAnalysisExport(feeSummaryQ);
-		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
 		if ("D".equals(feeSummaryQ.getDc())) {
 			ExcelUtil.export(response, "未收明细表", "未收明细表", list, AgingAnalysisRD.class);
 		} else {
-			ExcelUtil.export(response, "未付明细表", "未付明细表", BeanUtil.copy(list, AgingAnalysisRC.class), AgingAnalysisRC.class);
+			ExcelUtil.export(response, "未付明细表", "未付明细表", list, AgingAnalysisRD.class);
+		}
+	}
+
+	/**
+	 * 账龄分析导出明细
+	 */
+	@GetMapping("/agingAnalysisExportItem")
+	public void agingAnalysisExportItem(FeeSummaryQ feeSummaryQ, HttpServletResponse response) {
+		List<AgingAnalysisRDItem> list = statisticAnalysisService.agingAnalysisExportItem(feeSummaryQ);
+		if ("D".equals(feeSummaryQ.getDc())) {
+			ExcelUtil.export(response, "账龄分析-未收明细表", "未收明细表", list, AgingAnalysisRDItem.class);
+		} else {
+			ExcelUtil.export(response, "账龄分析-未付明细表", "未付明细表", list, AgingAnalysisRDItem.class);
 		}
 	}
 

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/IStatisticAnalysisService.java

@@ -93,4 +93,6 @@ public interface IStatisticAnalysisService {
 
 
 	R<IPage<Bills>> arrivalReminderList(Bills bills, Query query);
+
+	List<AgingAnalysisRDItem> agingAnalysisExportItem(FeeSummaryQ feeSummaryQ);
 }

+ 9 - 0
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java

@@ -1722,4 +1722,13 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 			return R.data(null);
 		}
 	}
+
+	@Override
+	public List<AgingAnalysisRDItem> agingAnalysisExportItem(FeeSummaryQ feeSummaryQ) {
+		feeSummaryQ.setTenantId(AuthUtil.getTenantId());
+		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+			feeSummaryQ.setBranchId(AuthUtil.getDeptId());
+		}
+		return finAccBillsMapper.agingAnalysisExportItem(feeSummaryQ);
+	}
 }

+ 1 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java

@@ -88,7 +88,7 @@ public class UserClient implements IUserClient {
 			LambdaQueryWrapper<User> userLambdaQueryWrapper = new LambdaQueryWrapper<>();
 			userLambdaQueryWrapper
 				.eq(User::getIsDeleted, 0)
-				.apply("find_in_set('" + roleId + "',role_id)")
+				.apply("find_in_set(role_id,'" + roleId + "')")
 				.eq(User::getTenantId, AuthUtil.getTenantId());
 			List<User> users = service.list(userLambdaQueryWrapper);
 			if (!users.isEmpty()) {