|
|
756129b913
|
fix: 修复tempFilePaths和records对应关系的潜在bug
问题:
- 原代码中保存临时文件和创建记录使用两个独立的循环
- 无法保证两个列表的索引严格一一对应
- 如果中间出现异常或跳过,会导致对应关系错乱
修复:
- 将两个循环合并为一个,在同一个循环中处理
- 使用相同的索引i创建tempFilePaths[i]和records[i]
- 添加数量一致性验证
- 临时文件名中加入索引i,避免文件名冲突
- 日志中记录索引i便于调试
影响:
- 确保临时文件和数据库记录严格一一对应
- 避免异步处理时出现文件与记录不匹配的问题
|
2026-03-05 13:47:39 +08:00 |
|
|
|
d8d60f9103
|
feat: 实现CcdiFileUploadServiceImpl所有TODO
完整实现异步文件上传服务的所有TODO方法:
1. 新增批次日志管理器
- 为每个批次创建独立日志文件
- 路径: {ruoyi.profile}/logs/file-upload/{projectId}/{timestamp}.log
- 支持ThreadLocal隔离
2. 完善CcdiFileUploadServiceImpl
- 注入LsfxAnalysisClient和CcdiBankStatementMapper
- 实现processFileAsync: 文件上传到流水分析平台
- 实现waitForParsingComplete: 固定间隔轮询(300次×2秒)
- 实现获取解析结果: status=-5判断成功
- 实现fetchAndSaveBankStatements: 分页获取(每页1000条)+批量插入(每批1000条)
- 集成批次日志管理
3. 关键特性
- 完整的流水分析平台集成
- 固定间隔轮询策略
- 大批量分页获取(每页1000条)
- 批量插入优化(每批1000条)
- 严格失败策略: 任何异常直接标记为parsed_failed
- 完善的日志记录
4. 测试验证
- 编译通过,无错误
- 所有TODO已实现
|
2026-03-05 13:40:29 +08:00 |
|
|
|
190c7b096e
|
修改配置文件
|
2026-03-05 11:05:41 +08:00 |
|
|
|
5af6f236f0
|
refactor: 使用ruoyi.profile配置作为临时文件路径
- 恢复application.yml中的ruoyi.profile配置项
- Service使用@Value注解读取ruoyi.profile
- 临时文件存储在 {ruoyi.profile}/temp 目录下
- 移除硬编码的临时目录配置
|
2026-03-05 10:59:10 +08:00 |
|
|
|
18dc022b55
|
refactor: 临时文件目录使用ruoyi.profile配置
- 移除硬编码的临时目录常量
- 使用ruoyi.profile配置(D:/ruoyi/uploadPath)
- 临时文件存储路径:{ruoyi.profile}/temp/upload
- 复用若依框架统一的文件路径配置
|
2026-03-05 10:54:40 +08:00 |
|
|
|
9f6a4b0962
|
feat: 添加文件上传Controller
|
2026-03-05 10:46:33 +08:00 |
|
|
|
aa0c49f9b1
|
fix: 修复硬编码lsfxProjectId问题
- 注入CcdiProjectMapper
- 查询项目信息获取真实的lsfxProjectId
- 验证项目存在,不存在则抛出IllegalArgumentException
- 验证项目已关联流水分析平台,未关联则抛出IllegalStateException
- 添加日志记录项目信息验证通过
|
2026-03-05 10:39:13 +08:00 |
|
|
|
ebf66ea70b
|
fix: 修复3个Critical代码问题
Critical Fix #1: 事务边界违规
- 添加@Transactional注解
- 使用TransactionSynchronizationManager确保异步任务在事务提交后启动
- 避免事务回滚导致的数据不一致问题
Critical Fix #2: MultipartFile生命周期问题
- 在启动异步任务前将MultipartFile保存到临时存储
- 使用临时文件路径替代MultipartFile对象
- 在处理完成后清理临时文件
Critical Fix #3: 批量插入后ID生成验证
- 在XML映射中添加useGeneratedKeys=true和keyProperty=id
- 在批量插入后验证所有记录ID已生成
- 抛出异常如果ID未生成
Additional Fix: 线程中断处理
- 在调度线程中检查中断状态
- 被中断时停止提交剩余任务
|
2026-03-05 10:30:36 +08:00 |
|
|
|
71d9b5b2d1
|
feat: 实现异步处理单个文件的完整流程
|
2026-03-05 09:56:50 +08:00 |
|
|
|
85a03a001d
|
feat: 实现批量上传主方法和调度线程
|
2026-03-05 09:55:18 +08:00 |
|
|
|
10cc8e87a5
|
feat: 添加文件上传服务实现(基础CRUD方法)
|
2026-03-05 09:47:52 +08:00 |
|
|
|
1fd40c8ab1
|
feat: 添加文件上传服务接口
|
2026-03-05 09:46:44 +08:00 |
|
|
|
56a2b600bc
|
feat: 添加异步线程池配置
|
2026-03-05 09:35:13 +08:00 |
|
|
|
5205874224
|
feat: 添加文件上传查询DTO和统计VO
|
2026-03-05 09:34:25 +08:00 |
|
|
|
8706a2c1df
|
feat: 添加文件上传记录Mapper接口和XML映射
|
2026-03-05 09:33:05 +08:00 |
|
|
|
bf4b4e41a2
|
feat: 添加文件上传记录实体类
|
2026-03-05 09:32:00 +08:00 |
|
|
|
6ca5aa4812
|
feat: 创建银行流水 Mapper XML 映射文件
|
2026-03-04 16:16:03 +08:00 |
|
|
|
ac21ca1225
|
feat: 创建银行流水 Mapper 接口
|
2026-03-04 16:14:57 +08:00 |
|
|
|
a727119f51
|
feat: 实现银行流水转换方法 fromResponse()
|
2026-03-04 16:14:17 +08:00 |
|
|
|
638795e096
|
test: 添加银行流水转换方法的单元测试
|
2026-03-04 16:08:46 +08:00 |
|
|
|
4755e6fea3
|
feat: 创建银行流水实体类基础结构
|
2026-03-04 16:05:47 +08:00 |
|
|
|
b9ca44cbca
|
feat: createProject方法集成流水分析平台调用
|
2026-03-04 10:56:34 +08:00 |
|
|
|
9916f641ac
|
feat: 实现callLsfxPlatform方法调用流水分析平台
|
2026-03-04 10:55:31 +08:00 |
|
|
|
4cf76a13a0
|
feat: CcdiProjectServiceImpl注入LsfxAnalysisClient依赖
|
2026-03-04 10:54:55 +08:00 |
|
|
|
e43d2ac0f6
|
feat: CcdiProjectVO添加lsfxProjectId字段
|
2026-03-04 09:55:38 +08:00 |
|
|
|
4a2d993a91
|
feat: CcdiProject实体类添加lsfxProjectId字段
|
2026-03-04 09:55:10 +08:00 |
|
|
|
6dccf48160
|
feat: 添加项目状态统计接口
|
2026-02-28 09:06:01 +08:00 |
|
|
|
9423184d37
|
feat: 实现项目状态统计方法
- 添加 getStatusCounts() 方法实现
- 使用 MyBatis Plus selectCount 统计各状态项目数量
- 统计全部项目、进行中(0)、已完成(1)、已归档(2)的项目数量
|
2026-02-28 08:53:02 +08:00 |
|
|
|
f7bf5ee62d
|
feat: Service 接口添加状态统计方法声明
|
2026-02-27 17:33:27 +08:00 |
|
|
|
5220813624
|
feat: 添加项目状态统计 VO 类
|
2026-02-27 17:25:20 +08:00 |
|
|
|
7c1dfaf120
|
fix: 添加 updateTime 字段到项目 VO 类
|
2026-02-27 14:38:03 +08:00 |
|
|
|
66a81af2a0
|
feat: 项目列表按更新时间倒序排列
|
2026-02-27 14:36:07 +08:00 |
|
|
|
474dcab396
|
fix: 移除项目查询中的 del_flag 条件
- 从 CcdiProjectMapper.xml 中移除 p.del_flag = '0' 条件
- 保留 sys_user 表的 del_flag 过滤(用户逻辑删除)
- 修复前端查询错误
|
2026-02-27 09:00:56 +08:00 |
|
|
|
76102f032b
|
refactor: 将项目代码从 ccdi-info-collection 迁移到 ccdi-project 模块
- 将 CcdiProject 相关代码移动到 ccdi-project 模块
- 修复 CcdiModelParam 审计字段注解
- 更新所有 package 声明和 import 语句
- 更新 Mapper XML namespace
- 通过代码审查
|
2026-02-27 08:44:31 +08:00 |
|
|
|
22d1852fd2
|
refactor: 简化 ModelParamSaveDTO,移除冗余字段
- 移除外层 modelName 字段
- 将 ParamItem 重命名为 ParamValueItem
- 内部类只保留 paramCode 和 paramValue 字段
- 同步更新 Service 层类型引用
|
2026-02-26 11:09:56 +08:00 |
|
|
|
872bc3260c
|
feat: 完成模型参数配置功能开发
- 添加 Controller、Mapper、Service 层代码
- 添加前端 API 和页面组件
- 添加后端功能测试报告
|
2026-02-26 10:31:51 +08:00 |
|
|
|
555bf95abe
|
fix: 修正任务1 - 严格按照规格文档重新实施数据库设计与实体类
## 修正内容
### 1. 数据库表结构修正
- 添加字段: project_id, param_desc
- 删除字段: param_type, min_value, max_value, description, status
- 修正唯一索引: uk_project_model_param (project_id, model_code, param_code)
- 添加普通索引: idx_project_id, idx_model_code
### 2. 初始化数据修正
- 删除错误模型: ASSET_CHANGE, RISK_SCORE, RELATED_TRANSACTION
- 添加正确模型:
* 大额交易模型 (LARGE_TRANSACTION) - 6个参数
* 可疑兼职模型 (SUSPICIOUS_PART_TIME) - 3个参数
* 可疑外汇交易模型 (SUSPICIOUS_FOREIGN_EXCHANGE) - 6个参数
- 共15条参数配置,project_id=0(系统默认参数)
### 3. Entity类修正 (CcdiModelParam.java)
- 添加: projectId, paramDesc
- 删除: paramType, minValue, maxValue, description, status
- 删除: Serializable接口,serialVersionUID
- 简化注释风格
### 4. DTO类修正
**ModelParamQueryDTO:**
- 只保留: projectId, modelCode
- 添加@NotBlank验证
**ModelParamSaveDTO:**
- 改为批量保存结构
- 包含: projectId, modelCode, modelName, params(List)
- 内部类ParamItem包含参数明细
- 只允许修改paramValue字段
### 5. VO类修正
**ModelParamVO:**
- 只保留核心展示字段: id, modelCode, modelName, paramCode, paramName, paramDesc, paramValue, paramUnit, sortOrder
- 删除审计字段
**ModelListVO:**
- 只保留: modelCode, modelName
- 删除paramCount字段
## 验证结果
✅ 数据库表创建成功
✅ 15条初始化数据插入成功
✅ 项目编译通过 (mvn clean compile)
✅ 严格符合规格文档要求
|
2026-02-26 09:31:44 +08:00 |
|
|
|
aa1fdf5e9e
|
feat: 添加模型参数配置功能 - 数据库设计与后端实体类
1. 创建ccdi-project Maven模块
- 新建模块并配置pom.xml依赖
- 添加到根pom.xml的modules列表
- 在ruoyi-admin中添加模块依赖
2. 创建数据库表和初始化数据
- 建表语句: ccdi_model_param表
- 3个风险监测模型共15条参数配置
- 资产异常变动模型(5个参数)
- 廉政风险评分模型(5个参数)
- 关联交易监测模型(5个参数)
3. 创建后端实体类和DTO/VO
- 实体类: CcdiModelParam.java
- 查询DTO: ModelParamQueryDTO.java
- 保存DTO: ModelParamSaveDTO.java (含验证注解)
- 参数VO: ModelParamVO.java
- 模型列表VO: ModelListVO.java
技术要点:
- 使用@Data注解简化代码
- 不继承BaseEntity,独立定义审计字段
- DTO添加@NotBlank/@NotNull验证注解
- 包名遵循规范: com.ruoyi.ccdi.project
- 项目编译通过: mvn clean compile
|
2026-02-26 09:23:34 +08:00 |
|