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