From 9d9d8457ea7aee90e3b80b8b8158c7188ccffadf Mon Sep 17 00:00:00 2001 From: shangzhongyuan Date: Fri, 13 Mar 2026 17:20:21 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat(entryexit):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=B5=84=E9=87=91=E7=B1=BB=E5=9E=8B=E5=AD=97=E6=AE=B5=E5=8C=BA?= =?UTF-8?q?=E5=88=86=E4=BF=9D=E8=AF=81=E9=87=91=E8=B4=A6=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在银行流水导入功能中新增cash_type字段 - 根据出入金方向自动设置账户类型为追保账户或初保账户 - 入金时设置为追保账户,出金时设置为初保账户 --- YLErpWeb/Controllers/entryexitController.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/YLErpWeb/Controllers/entryexitController.cs b/YLErpWeb/Controllers/entryexitController.cs index 871265a5..3731246c 100644 --- a/YLErpWeb/Controllers/entryexitController.cs +++ b/YLErpWeb/Controllers/entryexitController.cs @@ -595,6 +595,7 @@ namespace YLErp.Web.Controllers BankFlowId = flow.flowId, SerialNumber = flow.flowId, OpenBankCard = flow.counterpartyAccount, + cash_type = direction == "入金" ? "追保账户" : "初保账户", Comments = $"银行流水导入 | 对方账号:{flow.counterpartyAccount} | 对方户名:{flow.counterpartyName} | 用途:{flow.useDescribe}" }; From 6054ff70d157195272e40f69dca1a1b21202947f Mon Sep 17 00:00:00 2001 From: shangzhongyuan Date: Fri, 13 Mar 2026 17:40:26 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat(entryexit):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=93=B6=E8=A1=8C=E6=B5=81=E6=B0=B4=E5=A4=84=E7=90=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在控制器中初始化ID列表用于存储保存成功的记录 - 修改保存逻辑以捕获保存成功的ID并添加到列表中 - 添加条件检查确保只有在有成功保存记录时才执行后续操作 - 集成ClientCashInCashOutDataService服务处理保存的记录 - 通过Kafka生产者辅助类执行银行流水的异步处理 - 保持原有的统计和异常处理逻辑不变 --- YLErpWeb/Controllers/entryexitController.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/YLErpWeb/Controllers/entryexitController.cs b/YLErpWeb/Controllers/entryexitController.cs index 3731246c..34c0942b 100644 --- a/YLErpWeb/Controllers/entryexitController.cs +++ b/YLErpWeb/Controllers/entryexitController.cs @@ -547,6 +547,7 @@ namespace YLErp.Web.Controllers var skipCount = 0; var duplicateCount = 0; var invalidCounterpartyCount = 0; + var ids = new List(); foreach (var flow in result.data) { @@ -601,9 +602,13 @@ namespace YLErp.Web.Controllers try { - service.SaveEntryexit(null, cashRecord); - existingFlowIds.Add(flow.flowId); - saveCount++; + var savedId = service.SaveEntryexit(null, cashRecord); + if (null != savedId ) + { + ids.Add(savedId.id); + existingFlowIds.Add(flow.flowId); + saveCount++; + } } catch (Exception ex) { @@ -611,6 +616,11 @@ namespace YLErp.Web.Controllers } } + if (ids.Any()) + { + new ClientCashInCashOutDataService(CurUser).ExcuteEntryExit(ids, kafkaProduceHelper); + } + return JsonSuccess($"获取银行流水成功,共处理{result.data.Count}条,成功保存{saveCount}条,跳过{skipCount}条(无效对手方账号{invalidCounterpartyCount}条,重复{duplicateCount}条)"); } catch (Exception ex) From ff84cdc4ff541518a26082ff0ea0191463ef2c26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=94=A6=E9=BA=9F=20=E7=8E=8B?= Date: Fri, 13 Mar 2026 18:27:41 +0800 Subject: [PATCH 3/4] =?UTF-8?q?BugFix=20ArrayList=20cannot=20be=20cast=20t?= =?UTF-8?q?o=20class=20java.util.Map=20=E5=8F=82=E6=95=B0=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- YLErpDAL/Modules/TradeModule/TradeOAService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/YLErpDAL/Modules/TradeModule/TradeOAService.cs b/YLErpDAL/Modules/TradeModule/TradeOAService.cs index 3eab767a..261da149 100644 --- a/YLErpDAL/Modules/TradeModule/TradeOAService.cs +++ b/YLErpDAL/Modules/TradeModule/TradeOAService.cs @@ -287,7 +287,7 @@ namespace YLErp.Modules.TradeModule htbjjs = $"我司与{trade.ClientName}已完成NAFMII协议签署,并开展TRS交易:{contractCode},参与标的{trade.UnderlyingCode} {trade.UnderlyingName},参与标的数量面额{trade.OriginalStockEqvNotional}元人民币", //合同背景介绍 // 使用annexId替代Base64编码 - fj = annexIds, + fj = annexIds?.FirstOrDefault(), creater = applicantLoginName }; From da85489c7ce93a368a806bfe04feed8d295ab5c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=94=A6=E9=BA=9F=20=E7=8E=8B?= Date: Mon, 16 Mar 2026 10:52:15 +0800 Subject: [PATCH 4/4] =?UTF-8?q?OA=E5=AD=97=E6=AE=B5=E5=8F=96=E5=80=BC?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modules/TradeModule/TradeOAService.cs | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/YLErpDAL/Modules/TradeModule/TradeOAService.cs b/YLErpDAL/Modules/TradeModule/TradeOAService.cs index 261da149..be922de1 100644 --- a/YLErpDAL/Modules/TradeModule/TradeOAService.cs +++ b/YLErpDAL/Modules/TradeModule/TradeOAService.cs @@ -101,8 +101,8 @@ namespace YLErp.Modules.TradeModule /// 上传附件到OA系统 /// /// 文件路径 - /// 附件ID列表 - private async Task> UploadAttachmentAsync(string filePath) + /// 附件数据列表(包含 annexId 和 annexName) + private async Task> UploadAttachmentAsync(string filePath) { try { @@ -161,10 +161,9 @@ namespace YLErp.Modules.TradeModule { if (uploadResponse.code == "0" && uploadResponse.data != null) { - // 提取annexId - var annexIds = uploadResponse.data.Select(item => item.annexId).ToList(); - logger.Info($"成功上传附件,获取到{annexIds.Count}个附件ID"); - return annexIds; + // 返回完整的附件数据列表(包含 annexId 和 annexName) + logger.Info($"成功上传附件,获取到{uploadResponse.data.Count}个附件"); + return uploadResponse.data; } else { @@ -237,13 +236,13 @@ namespace YLErp.Modules.TradeModule } // 处理附件 - List annexIds = null; + List attachmentDataList = null; if (tdoc != null && !string.IsNullOrEmpty(tdoc.AbsolutePath)) { try { - annexIds = await UploadAttachmentAsync(tdoc.AbsolutePath); - logger.Info($"成功上传附件并获取到annexId:{string.Join(", ", annexIds)}"); + attachmentDataList = await UploadAttachmentAsync(tdoc.AbsolutePath); + logger.Info($"成功上传附件并获取到annexId:{string.Join(", ", attachmentDataList.Select(a => a.annexId))}"); } catch (Exception ex) { @@ -271,23 +270,23 @@ namespace YLErp.Modules.TradeModule //去除后缀 htmc = Path.GetFileNameWithoutExtension(tdoc.FileName),//合同名称 sfgljy = 1,//是否关联交易 0是 1否 - jflx = "企业",//甲方类型 + jflx = 0,//甲方类型 0企业 1个人 jf = trade.ClientName,//甲方 - yflx = "企业",//乙方类型 + yflx = 0,//乙方类型 0企业 1个人 yf = "国联民生证券股份有限公司",//乙方 sfdxtzdfqsjf = 1,//是否短信通知对方签署 0是 1否 sfdxtzyf = 1,//是否短信通知乙方 0是 1否 htje = trade.OriginalStockEqvNotional,//合同金额 - htyxksrq = trade.StartDate?.ToString("yyyyMMdd"),//合同有效期开始日期 - htyxjsrq = trade.ExerciseDate?.ToString("yyyyMMdd"),//合同有效期结束日期 + htyxksrq = trade.StartDate?.ToString("yyyy-MM-dd"),//合同有效期开始日期 + htyxjsrq = trade.ExerciseDate?.ToString("yyyy-MM-dd"),//合同有效期结束日期 bz = "人民币",//币种 - htqdrq = DateTime.Now.ToString("yyyyMMdd"),//合同签订日期 + htqdrq = DateTime.Now.ToString("yyyy-MM-dd"),//合同签订日期 sfqdljxy = 2, //是否签订廉洁协议 0已签 1未签 2无需签订 htbjjs = $"我司与{trade.ClientName}已完成NAFMII协议签署,并开展TRS交易:{contractCode},参与标的{trade.UnderlyingCode} {trade.UnderlyingName},参与标的数量面额{trade.OriginalStockEqvNotional}元人民币", //合同背景介绍 - // 使用annexId替代Base64编码 - fj = annexIds?.FirstOrDefault(), + // 使用附件数据列表(包含 annexId 和 annexName) + fj = attachmentDataList?.FirstOrDefault(), creater = applicantLoginName };