|
|
6101d94d82
|
fix: 修复员工导入Service层的事务管理和批量插入性能问题
问题1: importEmployeeAsync方法缺少@Transactional注解
- 在第239行添加@Transactional注解,确保异步操作的事务一致性
问题2: saveBatch方法性能问题
- 原实现: 循环内逐条调用insert(),不是真正的批量插入
- 修复方案:
1. 在CcdiEmployeeMapper接口中新增insertBatch方法
2. 在CcdiEmployeeMapper.xml中实现真正的批量插入SQL
3. saveBatch方法改为调用insertBatch,分批次批量插入
性能提升:
- 之前: 1000条数据需要1000次数据库往返
- 之后: 1000条数据只需2次数据库往返(分批次500条)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 09:41:50 +08:00 |
|
|
|
d5af1602f9
|
refactor: 重构validateEmployeeData方法复用逻辑
- 修改validateEmployeeData方法,增加existingIds参数支持导入场景
- 删除validateEmployeeDataForImport方法,统一使用validateEmployeeData
- 单条新增场景(existingIds=null)执行原有验证逻辑
- 导入场景(existingIds!=null)跳过柜员号唯一性检查(已在调用前批量查询)
- 保持性能优化:批量查询一次existingIds,而非每条记录单独查询
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 09:37:54 +08:00 |
|
|
|
8bdce0adbf
|
feat: 实现员工信息异步导入Service层方法
完成功能:
- 新增异步导入方法 importEmployeeAsync,使用@Async注解实现异步处理
- 新增查询导入状态方法 getImportStatus
- 新增查询导入失败记录方法 getImportFailures
- 实现完整的导入逻辑,包括数据分类、批量操作、进度跟踪
- 使用Redis存储导入状态和失败记录,TTL设置为7天
- 支持增量更新模式,批量插入新数据,批量更新已有数据
- 实时更新导入进度到Redis
技术要点:
- 使用RedisTemplate操作Redis,Hash结构存储状态
- 使用importExecutor线程池异步执行导入任务
- 使用UUID生成唯一任务ID
- 使用CompletableFuture包装返回结果
- 批量操作提高性能(saveBatch每500条一批)
- 失败记录只保存到Redis,不保存成功记录
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 09:34:08 +08:00 |
|
|
|
e8a4b53a0e
|
fix: 修复CcdiEmployeeMapper.xml中的remark字段问题
- 删除insertOrUpdateBatch方法中的remark字段
- 确保SQL只包含数据库中实际存在的11个字段
- ON DUPLICATE KEY UPDATE中也删除了remark字段
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 09:24:40 +08:00 |
|
|
|
97bb899093
|
feat: 添加员工信息批量插入或更新Mapper方法
在CcdiEmployeeMapper中新增insertOrUpdateBatch方法:
- 支持批量插入员工信息
- 使用ON DUPLICATE KEY UPDATE实现upsert功能
- 基于employee_id主键判断重复
- 插入时记录创建时间和创建人
- 更新时保留原创建信息,更新修改时间和修改人
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 09:22:06 +08:00 |
|
|
|
e00cc59eed
|
docs: 记录员工表employee_id主键唯一性说明
|
2026-02-06 09:21:12 +08:00 |
|
|
|
0aa812c283
|
feat: 添加导入相关VO类(ImportResultVO, ImportStatusVO, ImportFailureVO)
|
2026-02-06 09:18:31 +08:00 |
|
|
|
ce4000f477
|
feat: 添加异步配置类,配置导入任务专用线程池
- 创建AsyncConfig配置类,启用Spring异步支持
- 配置importExecutor线程池:
* 核心线程数: 2
* 最大线程数: 5
* 队列容量: 100
* 线程名前缀: import-async-
* 拒绝策略: CallerRunsPolicy
* 优雅关闭: 等待60秒完成任务
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 09:15:14 +08:00 |
|
|
|
4c3eeea256
|
员工关系移除
|
2026-02-06 09:01:33 +08:00 |
|
|
|
8b6967bf32
|
fix: 修复ImportDialog模板根元素问题
- 添加div根元素包裹两个dialog组件
- 解决Vue 2 'Component template should contain exactly one root element'编译错误
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:33:33 +08:00 |
|
|
|
9aa3faf452
|
refactor: 抽离导入结果弹窗为通用组件并适配所有导入页面
新增组件:
- ImportResultDialog.vue: 通用导入结果弹窗组件
* 支持HTML内容渲染
* 60vh高度限制,内容独立滚动
* 美化滚动条样式(6px宽度、圆角设计)
* 提供visible、content、title等props配置
适配页面:
1. 员工信息管理页面 (ccdiEmployee)
- 使用ImportResultDialog组件替代内嵌Dialog
- 简化数据状态管理(importResultVisible、importResultContent)
- 添加handleImportResultClose方法处理关闭事件
2. 员工招聘信息页面 (ccdiStaffRecruitment)
- 使用ImportResultDialog替代$modal.msgSuccess/msgError
- 统一导入结果展示方式
- 支持HTML格式的错误列表展示
3. 中介黑名单导入组件 (ccdiIntermediary/ImportDialog)
- 使用ImportResultDialog替代$msgbox
- 保留原有的消息解析逻辑(成功/失败分类处理)
- 移除内联样式,使用组件样式
优势:
- 统一导入结果展示样式和交互体验
- 组件复用,减少代码重复
- 便于维护和扩展(一处修改,全局生效)
- 自适应滚动,支持大量失败数据展示
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:31:01 +08:00 |
|
|
|
bb0e0b5dc9
|
refactor: 使用Dialog组件替代MessageBox优化导入结果弹窗
变更说明:
- 添加importResult数据状态管理弹窗显示和内容
- 创建专用Dialog组件展示导入结果,使用v-html渲染HTML
- 修改handleFileSuccess方法,使用Dialog替代$alert
- 添加Dialog专用样式,内容区域60vh高度支持独立滚动
- 美化滚动条样式(6px宽度、圆角设计、hover效果)
- 删除旧的MessageBox全局样式
修复问题:
- 解决CSS覆盖Element UI MessageBox样式不生效的问题
- 导入失败数据较多时,弹窗自适应页面高度
优势:
- 样式100%可控,无CSS优先级冲突
- Dialog组件自带良好的响应式布局
- 代码结构清晰,易于维护和扩展
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:20:53 +08:00 |
|
|
|
f3a999c6aa
|
fix: 优化员工信息导入结果弹窗自适应布局
- 提升弹窗高度至70vh,宽度至700px,提升可读性
- 使用Flexbox布局确保标题、内容、按钮三部分结构稳定
- 添加美化的滚动条样式(6px宽度、圆角设计、hover效果)
- 内容区域使用calc精确计算高度,支持独立滚动
- 添加响应式媒体查询,适配小屏幕和移动端
- 标题和按钮区域添加分隔边框,增强视觉层次
修复问题:导入失败数据较多时,弹窗超出视口,确定按钮不可见
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:11:58 +08:00 |
|
|
|
1e691f9697
|
docs: 添加员工信息导入结果弹窗自适应优化设计文档
- 分析现有问题:弹窗内容过多时超出视口
- 设计固定高度+内容可滚动的Flexbox布局方案
- 提供完整的CSS样式和响应式设计
- 包含实施计划、验收标准和技术要点
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:09:40 +08:00 |
|
|
|
bed3ab5ed8
|
docs: 添加员工招聘信息管理功能设计文档
包含完整的数据库设计、API接口设计、批量导入优化方案和实施步骤。
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 14:46:12 +08:00 |
|
|
|
07dea1bf0c
|
feat: 员工信息必填项优化 - 柜员号、所属部门、电话设为必填
## 后端修改
- AddDTO: deptId和phone添加@NotNull/@NotBlank注解
- EditDTO: deptId和phone添加@NotNull/@NotBlank注解
- Service: 导入验证添加deptId和phone必填校验
## 前端修改
- 表单校验规则: deptId和phone添加required校验
- 自动显示必填标记(红色星号)
## API文档更新
- 新增接口字段说明: deptId和phone标记为必填
- 导入模板: 标注必填项(*标记)
- 业务错误信息: 添加部门和电话相关错误提示
## 必填字段清单
1. employeeId(柜员号) - 7位数字
2. name(姓名)
3. deptId(所属部门)
4. idCard(身份证号)
5. phone(电话) - 11位手机号
6. status(状态)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 14:26:40 +08:00 |
|
|
|
da663fb635
|
feat: 员工柜员号优化 - 移除tellerNo,employeeId作为7位数字柜员号
## 数据库修改
- 删除teller_no字段
- employee_id改为非自增,手动输入7位数字
- 更新字段注释
## 后端修改
- Entity: 移除tellerNo,employeeId改为INPUT类型
- DTO: Add/Edit/Query/Excel全部使用employeeId
- VO: 移除tellerNo字段
- Service: 添加柜员号唯一性校验(使用selectById)
- Mapper XML: 移除teller_no查询和映射
## 前端修改
- 查询表单: tellerNo改为employeeId,添加7位数字限制
- 表格列: 显示employeeId作为柜员号
- 对话框: 新增可输入,编辑只读
- JavaScript: 数据结构和校验规则更新
## 文档更新
- API文档: 完整更新所有接口说明
- 实施报告: 生成详细实施报告
## 测试
- 生成测试脚本(9个测试用例)
- 测试账号: admin/admin123
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 14:18:28 +08:00 |
|
|
|
9c84af78f2
|
docs: 添加员工柜员号优化设计文档
- 移除tellerNo字段,将employeeId设置为柜员号
- 柜员号为7位数字,手动输入,唯一性校验
- 包含数据库、后端、前端、测试等完整设计方案
- 生成测试脚本和API文档更新计划
|
2026-02-05 14:06:35 +08:00 |
|
|
|
81d4038302
|
中介黑名单更新
|
2026-02-05 13:33:27 +08:00 |
|
|
|
1af2677c05
|
feat: 导入功能改为批量插入和批量更新
## 修改内容
### Mapper 接口
- CcdiBizIntermediaryMapper: 新增 insertBatch() 和 updateBatch() 方法
- CcdiEnterpriseBaseInfoMapper: 新增 insertBatch() 和 updateBatch() 方法
### Mapper XML
- 新增 CcdiBizIntermediaryMapper.xml: 实现个人中介的批量插入和更新
- 新增 CcdiEnterpriseBaseInfoMapper.xml: 实现实体中介的批量插入和更新
- 批量插入使用 VALUES (...), (...), (...) 语法
- 批量更新使用 foreach 分隔多条 UPDATE 语句
### Service 实现
- importIntermediaryPerson(): 改为两轮处理模式
- 第一轮:数据验证和分类(区分插入和更新)
- 第二轮:批量插入新记录 + 批量更新已存在记录
- importIntermediaryEntity(): 改为两轮处理模式
- 第一轮:数据验证和分类(区分插入和更新)
- 第二轮:批量插入新记录 + 批量更新已存在记录
## 性能优化
- 从原来的逐条插入/更新改为批量操作
- 减少数据库连接次数,提升大数据量导入性能
- 事务一致性保证,全部成功或全部回滚
编译验证:通过
|
2026-02-04 19:52:29 +08:00 |
|
|
|
cca2e620b5
|
fix: 修复intermediaryType字段访问错误
- intermediaryType字段仅存在于VO中,不应在Entity上访问
- 移除查询条件中对getIntermediaryType()的错误引用
- 修改插入方法,使用正确的字段设置:
- 个人中介:setPersonType('中介') + setDataSource
- 实体中介:setRiskLevel('1') + setEntSource('INTERMEDIARY') + setDataSource
- 修复位置:查询条件、新增方法、导入方法共6处
编译验证:通过
|
2026-02-04 19:45:05 +08:00 |
|
|
|
e0ce344d09
|
feat: 完成中介黑名单管理模块测试脚本、API文档、菜单配置和测试报告模板
## 新增文件
### 测试脚本 (Task 11)
- doc/scripts/test-intermediary-api.sh: 完整的API自动化测试脚本
* 获取Token
* 测试查询列表(含条件查询)
* 测试新增个人/实体中介
* 测试查询详情
* 测试修改操作
* 测试唯一性校验
* 支持彩色输出和错误处理
- doc/scripts/cleanup-intermediary-test-data.sh: 测试数据清理脚本
* 查询测试数据
* 删除测试数据
* 验证删除结果
- doc/scripts/run-test.bat: Windows测试脚本启动器
- doc/scripts/run-cleanup.bat: Windows清理脚本启动器
### API文档 (Task 12)
- doc/api/中介黑名单管理API文档-v2.0.md: 完整的v2.0 API接口文档
* 14个API接口详细说明
* 请求参数、响应格式、错误码
* 字典数据说明
* 业务错误信息
* v2.0主要变更说明
### 菜单配置 (Task 13)
- sql/menu-intermediary.sql: 菜单和权限配置SQL
* 主菜单: 中介黑名单(目录)
* 子菜单: 中介管理(页面)
* 按钮权限: 查询、列表、新增、修改、删除、导出、导入
* 包含详细的注释和使用说明
### 测试报告模板 (Task 14)
- doc/test/intermediary-blacklist-test-report.md: 测试报告模板
* 44个测试用例(列表查询、个人/实体中介、唯一性校验、删除、导入导出、权限)
* 测试结果统计表格
* 缺陷统计表格
* 测试结论模板
* 签名确认
### 文档 (Task 10)
- doc/README-中介黑名单测试部署.md: 测试与部署指南
* 快速开始指南
* API接口列表
* 菜单权限说明
* 数据字典说明
* 常见问题解答
* 版本历史
## 功能特性
1. **自动化测试**
- 支持Linux/Windows环境
- 完整的API覆盖
- 彩色输出,易于阅读
- 错误处理和提示
2. **完整的文档**
- 详细的API文档
- 清晰的测试报告模板
- 便于复现的测试用例
3. **菜单配置**
- 一键SQL执行
- 完整的权限体系
- 支持角色分配
4. **测试支持**
- 测试数据清理
- 测试结果验证
- 批处理支持
## 技术亮点
- 使用jq进行JSON解析
- 支持Token自动获取
- 完整的错误处理
- 跨平台支持(Linux/Windows)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-04 19:37:17 +08:00 |
|
|
|
85d4289ba7
|
feat: 添加中介Controller控制器
- 新增CcdiIntermediaryController,提供中介RESTful API
- 支持个人和实体中介的统一列表查询
- 提供个人和实体中介的详情查询接口
- 支持个人和实体中介的新增、修改、删除操作
- 提供唯一性校验接口
- 支持Excel模板下载和数据导入功能
- 完整的Swagger API文档注解
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-04 19:31:55 +08:00 |
|
|
|
4e55105c9e
|
feat: 添加中介Excel导入导出类
- 新增CcdiIntermediaryPersonExcel,支持个人中介信息导入导出
- 新增CcdiIntermediaryEntityExcel,支持实体中介信息导入导出
- 使用@DictDropdown注解支持字典下拉框
- 完整覆盖个人和实体中介的所有业务字段
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-04 19:31:51 +08:00 |
|
|
|
36698468f4
|
feat: 添加中介Service接口和实现类
- 新增ICcdiIntermediaryService接口,定义中介服务层操作方法
- 新增CcdiIntermediaryServiceImpl实现类,提供中介CRUD功能
- 支持个人和实体中介的统一查询、详情查询、新增、修改、删除
- 实现证件号和统一社会信用代码唯一性校验
- 支持Excel批量导入功能
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-04 19:31:46 +08:00 |
|
|
|
7084b3ee6a
|
feat: 添加中介Mapper接口和XML映射
|
2026-02-04 19:28:14 +08:00 |
|
|
|
b20abce3d4
|
feat: 添加中介查询DTO和VO类
- 新增 CcdiIntermediaryQueryDTO 用于查询参数封装
- 新增 CcdiIntermediaryVO 用于统一列表展示
- 新增 CcdiIntermediaryPersonDetailVO 用于个人中介详情
- 新增 CcdiIntermediaryEntityDetailVO 用于实体中介详情
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-04 19:27:13 +08:00 |
|
|
|
fe0eb8eca2
|
feat: 添加实体中介DTO类
- 新增 CcdiIntermediaryEntityAddDTO 用于实体中介的新增操作
- 新增 CcdiIntermediaryEntityEditDTO 用于实体中介的修改操作
- 包含完整的字段验证注解和Swagger文档注解
- 与企业基础信息表字段保持一致
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-04 19:25:59 +08:00 |
|
|
|
74c69956f9
|
feat: 添加个人中介DTO类
- 创建 CcdiIntermediaryPersonAddDTO 用于新增操作
- 创建 CcdiIntermediaryPersonEditDTO 用于修改操作
- 使用 Jakarta 验证注解确保数据有效性
- 使用 Swagger 注解提供 API 文档说明
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-04 19:24:20 +08:00 |
|
|
|
5ccb68a98b
|
feat: 添加实体中介实体类CcdiEnterpriseBaseInfo
|
2026-02-04 19:20:55 +08:00 |
|
|
|
1a944c2ba6
|
feat: 添加个人中介实体类CcdiBizIntermediary
|
2026-02-04 19:17:40 +08:00 |
|
|
|
dc8f1be4c3
|
中介黑名单更新
|
2026-02-04 19:16:34 +08:00 |
|
|
|
bc2959b93c
|
中介黑名单更新
|
2026-02-04 18:36:20 +08:00 |
|
|
|
72e2539134
|
docs: 添加项目详情页面设计文档
- 独立页面路由架构设计
- 五个子页面功能规划
- 接口设计与Mock数据定义
- 组件结构与状态管理方案
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-01-30 17:26:15 +08:00 |
|
|
|
16dc95de06
|
添加按钮
|
2026-01-30 15:50:30 +08:00 |
|
|
|
20a0ebfbef
|
readme更新
|
2026-01-30 14:47:50 +08:00 |
|
|
|
1b015be9bf
|
测试
|
2026-01-30 14:27:11 +08:00 |
|
|
|
29a2e60ee1
|
变更项目缩写
|
2026-01-30 14:15:21 +08:00 |
|
|
|
e99b05acc2
|
项管首页
|
2026-01-30 11:01:13 +08:00 |
|
|
|
ac4e02e8c5
|
中介新增 修改接口
|
2026-01-29 22:03:42 +08:00 |
|
|
|
1b043fa2d6
|
中介类型修改
|
2026-01-29 13:39:47 +08:00 |
|
|
|
2c146c026a
|
员工代码
|
2026-01-29 09:07:50 +08:00 |
|
|
|
47f9491941
|
feat: 员工信息管理功能完善
- 将员工表org_no字段迁移至dept_id,关联系统部门表
- 更新员工信息相关DTO、VO和Controller,使用deptId替代orgNo
- 添加员工信息管理OpenSpec规范文档(proposal/design/spec/tasks)
- 更新API文档,反映部门关联变更
- 添加数据库迁移脚本employee_org_no_to_dept_id.sql
- 新增员工信息分页接口测试脚本(PowerShell/Python)
- 更新CLAUDE.md,添加MCP数据库工具使用说明
Co-Authored-By: Claude (glm-4.7) <noreply@anthropic.com>
|
2026-01-28 16:57:38 +08:00 |
|
|
|
eac1112f9b
|
中介 代码重写
|
2026-01-28 15:45:55 +08:00 |
|
|
|
9dda17ccb8
|
git
|
2026-01-28 15:45:03 +08:00 |
|
|
|
52702f0b35
|
git
|
2026-01-28 14:40:55 +08:00 |
|
|
|
0cc8ef0fc3
|
员工信息管理
- 新增员工信息CRUD功能
- 添加员工关联人员管理
- 配置MyBatis Plus审计字段
- 添加OpenSpec规范文档
- 新增测试脚本和数据
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-01-28 14:40:27 +08:00 |
|
|
|
6946744ab9
|
中介库管理
|
2026-01-28 09:58:31 +08:00 |
|
|
|
5b0c338b5e
|
导出excel替换
|
2026-01-27 17:55:53 +08:00 |
|
|
|
79cd4fe755
|
需求分解
|
2026-01-27 17:09:32 +08:00 |
|