Browse Source

feat(company): 增加公司资金流水导出功能

- 在CompanyMoneyLogsExportVO和CompanyMoneyLogsExport1VO中增加红包消耗和充值明细字段
- 修改mapper中的SQL查询逻辑,支持公司团队名称拼接及新增字段数据查询
- 实现根据参数过滤导出字段的功能
- 在FsCompanyMoneyLogsExportParam中添加filter字段用于接收可选导出字段列表
xw 2 days ago
parent
commit
9208ec2b13

+ 17 - 2
fs-service/src/main/java/com/fs/company/mapper/CompanyMoneyLogsMapper.java

@@ -198,11 +198,19 @@ public interface CompanyMoneyLogsMapper
 //            "order by l.logs_id desc " +
 //            "</script>"})
     @Select({"<script> " +
-            "select l.*,c.company_name,o.order_code,s.store_name,o.delivery_sn as delivery_id,p.pay_code,p.pay_type_code,o.package_name,o.package_second_name,io.order_sn,o.user_name,cu.nick_name as company_user_name \n" +
+            "select l.*," +
+            "CASE WHEN cu.nick_name IS NOT NULL AND cd.dept_name IS NOT NULL THEN CONCAT(c.company_name, '-', cu.nick_name, '-', cd.dept_name) " +
+            "WHEN cu.nick_name IS NOT NULL THEN CONCAT(c.company_name, '-', cu.nick_name) " +
+            "ELSE c.company_name END as company_name," +
+            "o.order_code,s.store_name,o.delivery_sn as delivery_id,p.pay_code,p.pay_type_code,o.package_name,o.package_second_name,io.order_sn,o.user_name,cu.nick_name as company_user_name,cd.dept_name," +
+            "CONCAT_WS('-', cu.nick_name, cd.dept_name) as company_team," +
+            "CASE WHEN l.logs_type=15 THEN ABS(l.money) ELSE NULL END as red_packet_consume," +
+            "CASE WHEN l.logs_type IN (1,3) THEN CONCAT('充值金额:', l.money, '元') ELSE NULL END as recharge_detail \n" +
             "            from company_money_logs l  " +
             "left join company c on c.company_id=l.company_id " +
             "left join fs_store_order o on (o.order_id=l.business_id and (l.logs_type=3 or  l.logs_type=4 or l.logs_type=5 or  l.logs_type=6 or  l.logs_type=13 or  l.logs_type=14))   " +
             "left join company_user cu on  cu.user_id = o.company_user_id   " +
+            "left join company_dept cd on cd.dept_id = cu.dept_id   " +
             "left join fs_store s on (o.store_id=s.store_id and (l.logs_type=3 or  l.logs_type=4 or l.logs_type=5 or  l.logs_type=6 or  l.logs_type=13 or  l.logs_type=14))   " +
             "left join fs_store_payment p on ( p.`status`=1 and p.business_code=o.order_code and (l.logs_type=3 or  l.logs_type=4 or l.logs_type=5 or  l.logs_type=6 or  l.logs_type=13 or  l.logs_type=14))  " +
             "left join fs_inquiry_order io on (io.order_id=l.business_id and (l.logs_type=12)) "+
@@ -234,7 +242,14 @@ public interface CompanyMoneyLogsMapper
 //            "order by l.logs_id desc" +
 //            "</script>"})
     @Select({"<script> " +
-            "select l.*,o.*,c.company_name,cd.dept_name,cu.nick_name as company_user_name  FROM company_money_logs l " +
+            "select l.*,o.*," +
+            "CASE WHEN cu.nick_name IS NOT NULL AND cd.dept_name IS NOT NULL THEN CONCAT(c.company_name, '-', cu.nick_name, '-', cd.dept_name) " +
+            "WHEN cu.nick_name IS NOT NULL THEN CONCAT(c.company_name, '-', cu.nick_name) " +
+            "ELSE c.company_name END as company_name," +
+            "cd.dept_name,cu.nick_name as company_user_name," +
+            "CONCAT_WS('-', cu.nick_name, cd.dept_name) as company_team," +
+            "CASE WHEN l.logs_type=15 THEN ABS(l.money) ELSE NULL END as red_packet_consume," +
+            "CASE WHEN l.logs_type IN (1,3) THEN CONCAT('充值金额:', l.money, '元') ELSE NULL END as recharge_detail FROM company_money_logs l " +
             " LEFT JOIN fs_store_order o ON o.order_id=l.business_id and o.company_id =l.company_id  " +
             " LEFT JOIN company c ON c.company_id= l.company_id " +
             " LEFT JOIN company_user cu ON cu.user_id=o.company_user_id " +

+ 22 - 2
fs-service/src/main/java/com/fs/company/service/impl/CompanyMoneyLogsServiceImpl.java

@@ -215,11 +215,24 @@ public class CompanyMoneyLogsServiceImpl implements ICompanyMoneyLogsService
     @Override
     @Async
     public void exportData(FsCompanyMoneyLogsExportParam param) {
+        // 解析可选字段列表
+        ArrayList<String> filterList = new ArrayList<>();
+        if (StringUtils.isNotBlank(param.getFilter())) {
+            String[] filterArr = param.getFilter().split("\\s*,\\s*");
+            filterList.addAll(java.util.Arrays.asList(filterArr));
+        }
 
         if(param.getType()==0){
             List<CompanyMoneyLogsExportVO> list = companyMoneyLogsMapper.selectCompanyMoneyLogsExportVOList(param);
             ExcelUtil<CompanyMoneyLogsExportVO> util = new ExcelUtil<CompanyMoneyLogsExportVO>(CompanyMoneyLogsExportVO.class);
-            AjaxResult result =  util.exportExcel(list, "全部流水");
+            AjaxResult result;
+            // 如果有选中的字段,只导出这些字段
+            if (filterList != null && !filterList.isEmpty()) {
+                result = util.exportExcelSelectedColumns(list, "全部流水", filterList);
+            } else {
+                // 导出所有字段
+                result = util.exportExcel(list, "全部流水");
+            }
             FsExportTask task=fsExportTaskMapper.selectFsExportTaskByTaskId(param.getTaskId());
             task.setFinishTime(new Date());
             task.setStatus(1);
@@ -239,7 +252,14 @@ public class CompanyMoneyLogsServiceImpl implements ICompanyMoneyLogsService
                 }
             }
             ExcelUtil<CompanyMoneyLogsExport1VO> util = new ExcelUtil<CompanyMoneyLogsExport1VO>(CompanyMoneyLogsExport1VO.class);
-            AjaxResult result =  util.exportExcel(list, "商城订单");
+            AjaxResult result;
+            // 如果有选中的字段,只导出这些字段
+            if (filterList != null && !filterList.isEmpty()) {
+                result = util.exportExcelSelectedColumns(list, "商城订单", filterList);
+            } else {
+                // 导出所有字段
+                result = util.exportExcel(list, "商城订单");
+            }
             FsExportTask task=fsExportTaskMapper.selectFsExportTaskByTaskId(param.getTaskId());
             task.setFinishTime(new Date());
             task.setStatus(1);

+ 8 - 1
fs-service/src/main/java/com/fs/company/vo/CompanyMoneyLogsExport1VO.java

@@ -29,13 +29,20 @@ public class CompanyMoneyLogsExport1VO implements Serializable
     private BigDecimal money;
 
 
-    @Excel(name = "公司",width =30)
+    @Excel(name = "公司团队",width =30)
     private String companyName;
     @Excel(name = "业务员")
     private String companyUserName;
 
     @Excel(name = "部门",width =43)
     private String deptName;
+    /** 红包消耗金额 */
+    @Excel(name = "红包消耗")
+    private BigDecimal redPacketConsume;
+    
+    /** 充值明细 */
+    @Excel(name = "充值明细")
+    private String rechargeDetail;
 
     @Excel(name = "备注")
     private String remark;

+ 9 - 1
fs-service/src/main/java/com/fs/company/vo/CompanyMoneyLogsExportVO.java

@@ -28,10 +28,18 @@ public class CompanyMoneyLogsExportVO implements Serializable
     /** 金额 */
     @Excel(name = "金额")
     private BigDecimal money;
-    @Excel(name = "公司")
+    @Excel(name = "公司团队")
     private String companyName;
     @Excel(name = "业务员")
     private String companyUserName;
+    /** 红包消耗金额 */
+    @Excel(name = "红包消耗")
+    private BigDecimal redPacketConsume;
+    
+    /** 充值明细 */
+    @Excel(name = "充值明细")
+    private String rechargeDetail;
+    
     @Excel(name = "备注")
     private String remark;
     @Excel(name = "余额")

+ 3 - 0
fs-service/src/main/java/com/fs/his/param/FsCompanyMoneyLogsExportParam.java

@@ -14,4 +14,7 @@ public class FsCompanyMoneyLogsExportParam  implements Serializable {
     private String createTimeRange;
 
     private String[] createTimeList;
+    
+    /** 可选导出字段列表 */
+    private String filter;
 }