fix(project): 修复项目执行管理中的多项问题并优化字典数据功能
- 修复字典数据分页接口命名错误,从 getDictTypePage 改为 getDictDataPage - 修复字典数据查询排序逻辑,从 orderByDesc 改为 orderByAsc 并增加 id 排序 - 更新字典数据分页请求参数验证,将 dictType 设为必填项并添加非空验证 - 在字典数据简单响应对象中添加备注字段 - 修复项目执行删除权限验证,允许非初始态执行删除但阻止已完成执行删除 - 添加项目执行和任务优先级验证错误码常量 - 优化项目执行删除逻辑,支持级联软删相关任务、工作日志和协办数据 - 添加项目需求关联验证,防止无效需求关联到执行 - 修复执行协办数据批量删除方法的参数验证逻辑 - 添加工时完成难度验证错误码,完善项目需求删除前检查机制 - 更新 CLAUDE.md 文档,补充种子 SQL 编写规范和雪花 ID 处理说明
This commit is contained in:
10
CLAUDE.md
10
CLAUDE.md
@@ -106,6 +106,16 @@
|
||||
- SQL 放在目标模块 `src/main/resources/sql/...`,可审阅、可单独执行。
|
||||
- 缓存/日志/审计变更优先沿用既有机制,不要绕开登录上下文与审计字段填充。
|
||||
|
||||
### 种子 SQL(纯 SQL INSERT 雪花 ID 表)
|
||||
|
||||
`system_dict_type` / `system_dict_data` / `system_menu` 等历史表 id 由 MyBatis-Plus 雪花算法在 Java 层生成,DDL 无 `AUTO_INCREMENT`。纯 SQL 路径(字典种子、菜单种子等)写 INSERT 必须显式提供 id,否则 MySQL 报 `1364 - Field 'id' doesn't have a default value`。
|
||||
|
||||
- **id 取值**:`SET @new_id = (SELECT IFNULL(MAX(id), 0) + 1 FROM xxx_table);` 然后 INSERT `SELECT @new_id, ...`。雪花 ID 单调递增,`MAX+1` 落在已用区间之后,不会与未来 Java 生成的新雪花 ID 冲突。
|
||||
- **多条连续 INSERT**:每条 INSERT **前重新取** `MAX+1`——不要用 `base+1 / +2 / +3` 一次性算多个。配合 `NOT EXISTS` 守卫,部分已存在场景(半路重跑)才不会出现两条共用一个 id。
|
||||
- **collation 1267 陷阱**:仓库历史表 collation 不统一(如 `system_dict_data` 是 `utf8mb4_unicode_ci`,新表 `rdms_task_worklog` 是 `utf8mb4_0900_ai_ci`)。**不要**用 `SET @t = 'xxx'` 存字符串再 `WHERE col = @t`——用户变量自带连接级 collation,与列 collation 撞会报 `1267 Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='`。**对策**:直接展开成字面值,MySQL 字面值会按列 collation 隐式解析,不冲突。
|
||||
|
||||
样板参考:`docs/sql/rdms_task_worklog.sql:47-50`(菜单种子)+ `docs/sql/rdms_worklog_difficulty_seed.sql`(字典种子)。
|
||||
|
||||
## 注释与编码
|
||||
|
||||
- 关键字段/分支/约束/非直观实现补**简洁中文**注释;中文写入必须 UTF-8,不要用"改成英文"规避乱码。
|
||||
|
||||
Reference in New Issue
Block a user