From 672811c5b1e1bb73845278ec07d9262d9dc40f7f Mon Sep 17 00:00:00 2001
From: sen <sen@qq.com>
Date: 星期四, 09 四月 2026 11:35:14 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/cwxt_master' into cwxt_master

---
 service/src/main/java/com/ruoyi/cwgl/mapper/FundFlowMapper.java            |    8 ++
 service/src/main/java/com/ruoyi/cwgl/controller/FundFlowController.java    |   26 ++++++++
 service/src/main/resources/mapper/cwgl/FundFlowMapper.xml                  |    5 +
 service/src/main/java/com/ruoyi/cwgl/domain/FundFlow.java                  |    8 +-
 service/src/main/java/com/ruoyi/cwgl/service/IFundFlowService.java         |   16 +++++
 service/src/main/java/com/ruoyi/cwgl/service/impl/FundFlowServiceImpl.java |   95 +++++++++++++++++++++++++++++++
 6 files changed, 154 insertions(+), 4 deletions(-)

diff --git a/service/src/main/java/com/ruoyi/cwgl/controller/FundFlowController.java b/service/src/main/java/com/ruoyi/cwgl/controller/FundFlowController.java
index 7f05682..337782d 100644
--- a/service/src/main/java/com/ruoyi/cwgl/controller/FundFlowController.java
+++ b/service/src/main/java/com/ruoyi/cwgl/controller/FundFlowController.java
@@ -19,6 +19,7 @@
 import com.ruoyi.cwgl.domain.FundFlow;
 import com.ruoyi.cwgl.service.IFundFlowService;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import org.springframework.web.multipart.MultipartFile;
 import com.ruoyi.common.core.page.TableDataInfo;
 
 /**
@@ -116,4 +117,29 @@
     {
         return toAjax(fundFlowService.confirmFundFlow(id));
     }
+
+    /**
+     * 瀵煎叆璧勯噾娴佹按Excel
+     */
+    @PreAuthorize("@ss.hasPermi('cwgl:fundFlow:import')")
+    @Log(title = "璧勯噾娴佹按", businessType = BusinessType.IMPORT)
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file ) throws Exception
+    {
+        ExcelUtil<FundFlow> util = new ExcelUtil<FundFlow>(FundFlow.class);
+        List<FundFlow> fundFlowList = util.importExcel(file.getInputStream());
+        String message = fundFlowService.importFundFlow(fundFlowList);
+        return AjaxResult.success(message);
+    }
+
+    /**
+     * 涓嬭浇瀵煎叆璧勯噾娴佹按妯℃澘
+     */
+    @PreAuthorize("@ss.hasPermi('cwgl:fundFlow:import')")
+    @GetMapping("/importTemplate")
+    public AjaxResult importTemplate(String exportKey)
+    {
+        fundFlowService.importTemplate(exportKey);
+        return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
+    }
 }
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/FundFlow.java b/service/src/main/java/com/ruoyi/cwgl/domain/FundFlow.java
index 81d2543..6d8e61f 100644
--- a/service/src/main/java/com/ruoyi/cwgl/domain/FundFlow.java
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/FundFlow.java
@@ -23,7 +23,7 @@
 
 
     /** 閾惰娴佹按鍙� */
-    @Excel(name = "閾惰娴佹按鍙�")
+    @Excel(name = "鏍稿績娴佹按鍙�")
 
         @TableField("bank_flow_no")
     private String bankFlowNo;
@@ -72,14 +72,14 @@
 
 
     /** 瀵规柟璐﹀彿 */
-    @Excel(name = "瀵规柟璐﹀彿")
+    @Excel(name = "浜ゆ槗瀵规墜璐︽埛")
 
         @TableField("counterparty_account")
     private String counterpartyAccount;
 
 
     /** 瀵规柟鎴峰悕 */
-    @Excel(name = "瀵规柟鎴峰悕")
+    @Excel(name = "浜ゆ槗瀵规墜鍚嶇О")
 
         @TableField("counterparty_name")
     private String counterpartyName;
@@ -87,7 +87,7 @@
 
     /** 浜ゆ槗鏃ユ湡 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "浜ゆ槗鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "浜ゆ槗鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
 
         @TableField("transaction_date")
     private Date transactionDate;
diff --git a/service/src/main/java/com/ruoyi/cwgl/mapper/FundFlowMapper.java b/service/src/main/java/com/ruoyi/cwgl/mapper/FundFlowMapper.java
index 4afa06f..955871e 100644
--- a/service/src/main/java/com/ruoyi/cwgl/mapper/FundFlowMapper.java
+++ b/service/src/main/java/com/ruoyi/cwgl/mapper/FundFlowMapper.java
@@ -84,4 +84,12 @@
      * @return 缁撴灉
      */
     public int deleteFundFlowByIds(Integer[] ids);
+
+    /**
+     * 鏍规嵁閾惰娴佹按鍙锋煡璇㈣祫閲戞祦姘�
+     * 
+     * @param bankFlowNo 閾惰娴佹按鍙�
+     * @return 璧勯噾娴佹按
+     */
+    public FundFlow selectFundFlowByBankFlowNo(String bankFlowNo);
 }
diff --git a/service/src/main/java/com/ruoyi/cwgl/service/IFundFlowService.java b/service/src/main/java/com/ruoyi/cwgl/service/IFundFlowService.java
index d096f36..52f8622 100644
--- a/service/src/main/java/com/ruoyi/cwgl/service/IFundFlowService.java
+++ b/service/src/main/java/com/ruoyi/cwgl/service/IFundFlowService.java
@@ -107,4 +107,20 @@
      * @return 缁撴灉
      */
     public int confirmFundFlow(Integer id);
+
+    /**
+     * 瀵煎叆璧勯噾娴佹按鏁版嵁
+     * 
+     * @param fundFlowList 璧勯噾娴佹按鏁版嵁鍒楄〃
+     * @param updateSupport 鏄惁鏀寔鏇存柊
+     * @return 瀵煎叆缁撴灉
+     */
+    public String importFundFlow(List<FundFlow> fundFlowList  );
+
+    /**
+     * 瀵煎叆璧勯噾娴佹按妯℃澘
+     * 
+     * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+     */
+    public void importTemplate(String exportKey);
 }
diff --git a/service/src/main/java/com/ruoyi/cwgl/service/impl/FundFlowServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/FundFlowServiceImpl.java
index 1121365..1b480ac 100644
--- a/service/src/main/java/com/ruoyi/cwgl/service/impl/FundFlowServiceImpl.java
+++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/FundFlowServiceImpl.java
@@ -1,9 +1,15 @@
 package com.ruoyi.cwgl.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.file.DownloadExportUtil;
+import com.ruoyi.common.utils.file.DownloadExportUtil.ExprotStatus;
+import com.ruoyi.common.core.redis.RedisCache;
 import javax.annotation.Resource;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.stereotype.Service;
 import org.springframework.scheduling.annotation.Async;
@@ -37,6 +43,8 @@
     private FundFlowMapper fundFlowMapper;
     @Resource
     private IFundFlowLogService fundFlowLogService;
+    @Autowired
+    private RedisCache redisCache;
 
 
     /**
@@ -238,4 +246,91 @@
         
         return result;
     }
+
+    /**
+     * 瀵煎叆璧勯噾娴佹按鏁版嵁
+     *
+     * @param fundFlowList 璧勯噾娴佹按鏁版嵁鍒楄〃
+     * @return 瀵煎叆缁撴灉
+     */
+    @Override
+    public String importFundFlow(List<FundFlow> fundFlowList )
+    {
+        if (fundFlowList == null || fundFlowList.isEmpty()) {
+            throw new RuntimeException("瀵煎叆璧勯噾娴佹按鏁版嵁涓嶈兘涓虹┖");
+        }
+        
+        int successNum = 0;
+        int failureNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+        
+        for (FundFlow fundFlow : fundFlowList) {
+            try {
+
+
+                    // 鏂板
+                    fundFlow.setCreateTime(DateUtils.getNowDate());
+                    int result = fundFlowMapper.insertFundFlow(fundFlow);
+                    if (result > 0) {
+                        successNum++;
+                        // 璁板綍鎿嶄綔鏃ュ織
+                        FundFlowLog log = new FundFlowLog();
+                        log.setFlowId(fundFlow.getId());
+                        log.setOperation("瀵煎叆璧勯噾娴佹按锛屾祦姘村彿锛�" + fundFlow.getBankFlowNo());
+                        fundFlowLogService.insertFundFlowLog(log);
+                    } else {
+                        failureNum++;
+                        failureMsg.append("銆�").append(fundFlow.getBankFlowNo());
+                    }
+
+            } catch (Exception e) {
+                failureNum++;
+                failureMsg.append("銆�").append(fundFlow.getBankFlowNo());
+                logger.error("瀵煎叆璧勯噾娴佹按 {} 澶辫触锛歿}", fundFlow.getBankFlowNo(), e.getMessage());
+            }
+        }
+        
+        if (failureNum > 0) {
+            failureMsg.insert(0, "澶辫触鐨勬祦姘村彿锛�");
+        }
+        
+        successMsg.append("鎴愬姛瀵煎叆 " + successNum + " 鏉¤祫閲戞祦姘存暟鎹�");
+        if (failureNum > 0) {
+            successMsg.append("锛�" + failureMsg);
+        }
+        
+        return successMsg.toString();
+    }
+
+    /**
+     * 瀵煎叆璧勯噾娴佹按妯℃澘
+     * 
+     * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+     */
+    @DataSource(DataSourceType.SLAVE)
+    @Async
+    @Override
+    public void importTemplate(String exportKey) {
+        String fileName = ExcelUtil.encodeFileName("璧勯噾娴佹按瀵煎叆妯℃澘");
+
+        // 璁剧疆褰撳墠浠诲姟涓�"涓嬭浇涓�"鐘舵��
+        DownloadExportUtil.deleteDownloadFile(redisCache, exportKey, ExprotStatus.XZZ.getStatus());
+        
+        try {
+            // 鍒涘缓绌哄垪琛ㄧ敤浜庣敓鎴愭ā鏉匡紙鍙渶瑕佽〃澶达級
+            List<FundFlow> fundFlowList = new ArrayList<>();
+            
+            // 浣跨敤export鏂规硶鍒涘缓妯℃澘
+            export(FundFlow.class, exportKey, fileName, (pageNum) -> {
+                return fundFlowList;
+            });
+            
+            logger.info("瀵煎叆妯℃澘瀵煎嚭瀹屾垚: {}, file: {}", exportKey, fileName);
+        } catch (Exception e) {
+            logger.error("瀵煎叆妯℃澘瀵煎嚭澶辫触: {}, error: {}", exportKey, e.getMessage(), e);
+            DownloadExportUtil.deleteDownloadFile(redisCache, exportKey, ExprotStatus.XZYC.getStatus());
+            throw e;
+        }
+    }
 }
diff --git a/service/src/main/resources/mapper/cwgl/FundFlowMapper.xml b/service/src/main/resources/mapper/cwgl/FundFlowMapper.xml
index 440d2ff..791e3a5 100644
--- a/service/src/main/resources/mapper/cwgl/FundFlowMapper.xml
+++ b/service/src/main/resources/mapper/cwgl/FundFlowMapper.xml
@@ -206,4 +206,9 @@
         </foreach>
     </delete>
 
+    <select id="selectFundFlowByBankFlowNo" parameterType="String" resultMap="FundFlowResult">
+        <include refid="selectFundFlowVo"/>
+        where thisTab.bank_flow_no = #{bankFlowNo}
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0