|
|
b314c75574
|
fix: 为员工调动导入的数据库重复错误信息添加行号
在员工调动导入功能中,当检测到数据库中已存在相同的调动记录时,
错误信息现在会包含行号,便于用户快速定位问题数据。
修改文件:
- CcdiStaffTransferImportServiceImpl.java
修改内容:
- 将 "该员工在%s的调动记录已存在"
- 改为 "第%d行: 该员工在%s的调动记录已存在"
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-11 15:40:35 +08:00 |
|
|
|
09519ab4ac
|
Merge branch 'feat/staff-transfer-staff-id-validation' into dev_1
功能: 员工调动导入员工ID校验
新增功能:
- 批量预验证员工ID存在性(1次数据库查询)
- 错误信息包含Excel行号
- 主循环跳过已失败记录
- 完整的日志记录
技术实现:
- 添加 CcdiBaseStaffMapper 依赖注入
- 新增 batchValidateStaffIds() 方法
- 新增 isRowAlreadyFailed() 方法
- 修改 importTransferAsync() 主流程
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-11 13:57:13 +08:00 |
|
|
|
6f78e86d1c
|
feat: 主循环跳过已失败的记录
在数据处理循环中添加检查逻辑,跳过已在预验证阶段标记为失败的记录
- 在主循环开始处添加失败记录检查
- 使用 isRowAlreadyFailed 方法判断
- 检查失败后使用 continue 跳过处理
- 避免对已失败记录进行不必要的验证和处理
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-11 13:47:55 +08:00 |
|
|
|
bf4b7107a4
|
feat: 在导入流程中添加员工ID批量验证
在数据处理循环前添加员工ID存在性验证阶段,提前标记无效员工ID的记录
|
2026-02-11 13:45:18 +08:00 |
|
|
|
e95abccf5d
|
fix: 修复isRowAlreadyFailed方法的NPE风险
修复第387行潜在的空指针异常:
- 将 f.getStaffId().equals(excel.getStaffId())
- 改为 Objects.equals(f.getStaffId(), excel.getStaffId())
- 确保当staffId为null时不会抛出NPE
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-11 13:42:55 +08:00 |
|
|
|
73a46a2d0c
|
feat: 实现检查行是否已失败方法
- 添加 isRowAlreadyFailed 方法用于检查行是否已在失败列表中
- 通过比较员工ID、调动日期、调动前部门ID、调动后部门ID判断行的唯一性
- 在 StaffTransferImportFailureVO 中添加 deptIdBefore 和 deptIdAfter 字段
- 使用 Stream API 的 anyMatch 方法实现高效的匹配判断
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-11 11:26:05 +08:00 |
|
|
|
933626f24f
|
feat: 实现批量验证员工ID方法
- 提取Excel中所有员工ID并去重
- 批量查询数据库中存在的员工ID
- 标记不存在的员工ID为失败记录
- 记录详细的验证日志
- 新增ImportLogUtils工具类用于统一日志格式
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-11 11:16:58 +08:00 |
|
|
|
5f44984aa3
|
feat 导入日志
|
2026-02-11 11:13:20 +08:00 |
|
|
|
7505bf4b3f
|
feat: 添加CcdiBaseStaffMapper依赖注入
为员工调动导入服务添加员工信息Mapper,用于批量验证员工ID存在性
|
2026-02-11 11:12:32 +08:00 |
|
|
|
6db63cd8b1
|
feat 员工调动记录
|
2026-02-11 10:42:38 +08:00 |
|
|
|
78a9300644
|
feat 员工亲属关系
|
2026-02-10 10:41:19 +08:00 |
|
|
|
bf19a9daa8
|
feat 员工亲属关系
|
2026-02-10 00:30:06 +08:00 |
|
|
|
9a7fedcd74
|
feat 员工实体关系
|
2026-02-09 21:27:20 +08:00 |
|
|
|
f7c8bd1c95
|
feat
|
2026-02-09 17:00:41 +08:00 |
|
|
|
02249c402e
|
文件夹整理
|
2026-02-09 14:28:25 +08:00 |
|
|
|
056d239041
|
移除无用组件
|
2026-02-09 09:43:36 +08:00 |
|
|
|
8efbd43abd
|
除员工外 取消导入更新 添加导入文件重复校验
|
2026-02-09 09:10:35 +08:00 |
|
|
|
886176ed7e
|
除员工外 取消导入更新
|
2026-02-09 02:18:56 +08:00 |
|
|
|
f96d10d2e8
|
feat: 移除招聘信和采购交易的导入更新支持功能
## 变更内容
- 移除招聘信和采购交易导入功能中的isUpdateSupport参数
- 遇到已存在的数据直接报错,不再支持更新操作
- 前端移除"是否更新"复选框
## 后端修改
- CcdiStaffRecruitmentController: 移除updateSupport参数
- ICcdiStaffRecruitmentService: 移除updateSupport参数
- CcdiStaffRecruitmentServiceImpl: 简化导入逻辑,移除更新支持
- CcdiPurchaseTransactionController: 移除updateSupport参数
- ICcdiPurchaseTransactionService: 移除updateSupport参数
- ICcdiPurchaseTransactionImportService: 移除updateSupport参数
- CcdiPurchaseTransactionServiceImpl: 移除updateSupport参数
- CcdiPurchaseTransactionImportServiceImpl: 简化导入逻辑,移除更新支持
## 前端修改
- ccdiStaffRecruitment/index.vue: 移除"是否更新"复选框和相关参数
- ccdiPurchaseTransaction/index.vue: 移除"是否更新"复选框和相关参数
## 影响范围
- 导入时遇到已存在的招聘项目编号或采购事项ID将直接报错
- 错误提示显示具体的重复ID
- 不再支持通过导入文件更新已存在的数据
|
2026-02-09 01:12:22 +08:00 |
|
|
|
26a225298a
|
导入测试
|
2026-02-09 00:13:32 +08:00 |
|
|
|
ddc06b876a
|
fix: 修复importPersonBatch方法返回类型
将Mapper接口的importPersonBatch返回类型从void改为int,
以正确返回ON DUPLICATE KEY UPDATE的影响行数。
|
2026-02-08 17:20:45 +08:00 |
|
|
|
5ec5913759
|
fix: 修复中介导入成功条数计算错误
问题:
- 导入成功条数显示为负数
- 原因:成功数量计算使用 validRecords.size() - failures.size()
- 但没有使用实际的数据库操作返回值
修复:
- saveBatchWithUpsert 和 saveBatch 方法现在返回 int
- 累加实际的数据库影响行数
- 使用 actualSuccessCount 变量跟踪真实成功数量
影响范围:
- CcdiIntermediaryPersonImportServiceImpl
- CcdiIntermediaryEntityImportServiceImpl
|
2026-02-08 17:18:18 +08:00 |
|
|
|
7d534de54f
|
refactor: 重构Service层使用ON DUPLICATE KEY UPDATE
- 更新模式直接调用importPersonBatch/importEntityBatch
- 移除'先删除再插入'逻辑,代码简化约50%
- 添加辅助方法saveBatchWithUpsert/getExistingPersonIdsFromDb
- 添加createFailureVO重载方法简化失败记录创建
变更详情:
- CcdiIntermediaryPersonImportServiceImpl: 重构importPersonAsync方法
- CcdiIntermediaryEntityImportServiceImpl: 重构importEntityAsync方法
- 两个Service均采用统一的处理模式
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 16:21:22 +08:00 |
|
|
|
161b2c880f
|
refactor: 优化importEntityBatch方法签名
- 修改返回值类型从void改为int,与项目其他批量方法保持一致
- 更新JavaDoc注释,描述行为而不是实现细节
- 在XML中添加importEntityBatch的完整实现
- 使用ON DUPLICATE KEY UPDATE实现存在则更新,不存在则插入的功能
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 16:18:30 +08:00 |
|
|
|
894e376c9e
|
docs: 补充importEntityBatch方法的JavaDoc @return标签
规范审查发现Task 3的JavaDoc注释不够完整,补充了@return标签说明无返回值。
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 16:13:43 +08:00 |
|
|
|
198ac91696
|
feat: 添加实体中介批量导入方法签名
添加importEntityBatch方法到Mapper接口,用于支持ON DUPLICATE KEY UPDATE的批量导入操作。
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 16:12:18 +08:00 |
|
|
|
de3f1abb09
|
fix: 修正importPersonBatch SQL的UPSERT逻辑
- 添加person_id字段到UPDATE部分,支持身份证号更新
- 修正gender枚举字段的空字符串判断,移除不必要的空字符串检查
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 16:06:36 +08:00 |
|
|
|
2f3ad08813
|
feat: 实现个人中介批量导入ON DUPLICATE KEY UPDATE SQL
使用INSERT ... ON DUPLICATE KEY UPDATE实现单次SQL完成插入或更新操作。
- 仅更新Excel中非空的字段
- 自动更新update_time和update_by
- 保留created_by和create_time等审计字段
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 16:03:58 +08:00 |
|
|
|
048e97e331
|
feat: 添加个人中介批量导入方法签名
添加importPersonBatch方法到Mapper接口,用于支持ON DUPLICATE KEY UPDATE的批量导入操作。
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 15:58:08 +08:00 |
|
|
|
5b4c1247dd
|
refactor: 统一采购交易导入接口返回值
- 添加ImportResultVO导入
- 添加数据验证(至少需要一条数据)
- 修改返回结构为ImportResultVO对象
- 与员工信息导入接口保持一致
返回值包含:
- taskId: 任务ID
- status: PROCESSING状态
- message: 提示消息
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:11:43 +08:00 |
|
|
|
e120f836b2
|
docs: 添加采购交易导入功能优化设计文档
设计目标:
- 采用后台异步处理+通知提示,避免弹窗阻塞用户操作
- 完全复用员工信息维护的导入逻辑
- 支持查看导入失败记录
- 实现状态持久化
主要设计内容:
- 整体架构和用户交互流程
- 前端组件结构和状态管理
- UI组件修改方案
- 核心方法实现(10个方法)
- 完整修改清单和测试要点
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 13:40:32 +08:00 |
|
|
|
f659913b2f
|
员工采购
|
2026-02-06 17:22:59 +08:00 |
|
|
|
4a560bd4e4
|
refactor: 更新采购交易导入使用专门的失败记录VO
将通用的ImportFailureVO替换为专门的PurchaseTransactionImportFailureVO,
以提供更明确的类型安全和更好的API文档。
修改文件:
- ICcdiPurchaseTransactionImportService.java: 更新接口方法返回类型
- CcdiPurchaseTransactionImportServiceImpl.java: 更新实现类使用专门的VO
- CcdiPurchaseTransactionController.java: 更新Controller使用专门的VO
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 16:11:30 +08:00 |
|
|
|
1aa0d15ee8
|
feat: 添加采购交易导入失败记录VO
创建 PurchaseTransactionImportFailureVO 类,用于采购交易信息批量导入时的失败记录展示。
包含字段:
- 采购事项ID、采购类别、项目名称、标的物名称
- 采购方式、预算金额
- 申请人信息(工号、姓名、部门)
- 采购申请日期、错误信息
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 16:08:18 +08:00 |
|
|
|
9df2b5a8e5
|
fix: 添加采购交易导入的Redis状态初始化
|
2026-02-06 15:59:08 +08:00 |
|
|
|
4ba0803622
|
feat: 添加采购交易Controller控制器
|
2026-02-06 15:51:45 +08:00 |
|
|
|
a4c21b83e9
|
feat: 添加采购交易异步导入Service实现类
|
2026-02-06 15:51:41 +08:00 |
|
|
|
a2764fd3eb
|
feat: 添加采购交易Service实现类
|
2026-02-06 15:51:38 +08:00 |
|
|
|
179901759f
|
feat: 添加采购交易异步导入Service接口
|
2026-02-06 15:51:34 +08:00 |
|
|
|
584581e720
|
feat: 添加采购交易Service接口
|
2026-02-06 15:51:29 +08:00 |
|
|
|
d9f1b5293f
|
feat: 添加采购交易Mapper XML映射文件
|
2026-02-06 15:51:00 +08:00 |
|
|
|
b0bd66da91
|
feat: 添加采购交易Mapper接口
|
2026-02-06 15:50:38 +08:00 |
|
|
|
ac3b9cd740
|
fix: 修复DTO工号验证规范问题
- 申请人工号验证从@Size改为@Pattern正则表达式
- 采购负责人工号验证从@Size改为@Pattern正则表达式
- 统一使用7位数字格式验证(^\d{7}$)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 15:36:05 +08:00 |
|
|
|
1d09c88bec
|
feat: 添加采购交易Excel类
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 15:30:56 +08:00 |
|
|
|
39032ebe63
|
feat: 添加采购交易VO类
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 15:30:54 +08:00 |
|
|
|
c1de614cb2
|
feat: 添加采购交易编辑DTO
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 15:30:51 +08:00 |
|
|
|
ad369e7789
|
feat: 添加采购交易新增DTO
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 15:30:49 +08:00 |
|
|
|
f80a58fa75
|
feat: 添加采购交易查询DTO
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 15:30:46 +08:00 |
|
|
|
913e5e5dfd
|
feat: 添加采购交易信息实体类
- 创建 CcdiPurchaseTransaction 实体类
- 使用 java.time.LocalDate 和 LocalDateTime 替代 Date
- 使用 BigDecimal 处理金额和数量字段
- 使用 @TableField 实现审计字段自动填充
- 符合若依框架和 MyBatis Plus 规范
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 15:17:05 +08:00 |
|
|
|
9232a9f10f
|
feat: 实现招聘信息异步导入功能
- 添加异步导入服务接口和实现
- 创建导入失败记录VO类
- 添加导入设计文档和测试数据生成脚本
- 支持大批量招聘数据的异步处理
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 15:12:40 +08:00 |
|