lml
|
5698a8b72f
|
feat(botp): 转换/反写规则版本号递增与全量快照,新增版本历史与对比接口
- 保存即版本 +1 并落全量快照:新增 convert_rule_ver / reverse_writing_rules_ver,
快照以 JSON 内联存储规则主表 + 全部子表分录(字段映射、插件分录 / 反写公式分录、业务规则分录)
- 版本号唯一且单调:两张快照表建唯一索引 (rule_id, rule_version);实体 ruleVersion 加
@Version 并注册 OptimisticLockerInnerInterceptor,用「页面打开时的版本号」做 CAS,
影响行数为 0 即提示「已被他人修改,请刷新后重试」,避免并发保存互相覆盖或写坏版本号
- 新增版本历史接口:getVersionList(版本号/创建时间/创建人,不返回 JSON 正文)、
getVersionSnapshot(只读查看指定版本全量快照)、compareVersion(与当前版本或指定版本对比)
- 版本对比只产出新增/删除/修改三类结论,不做逐字 diff;规则主表按字段比对并忽略审计字段,
子表分录按业务主键配对(分录为「先删后插」,主键每版都变,按主键配会把所有行显示成删改)
- 快照 JSON 分区名对齐任务分派文档附录 A.2:fieldMappings / pluginEntries / formulas / businesses
- 反写规则保存逻辑从 ReverseWritingRulesController 下沉到 Service.saveAll,
使版本号递增与快照写入同主表、子表处于同一事务
- 新增幂等 DDL 脚本 botp-rule-version-script.sql:缺列时补 rule_version(information_schema 守卫)、
历史空版本号兜底为 1、建两张快照表,可重复执行
|
2 weeks ago |
lml
|
c4c5d2658c
|
fix(botp): 修复反写规则保存接口的校验返回、子表空指针与审计字段丢失
- addAll/removeAllById 的参数校验分支补上 return,避免校验失败后继续执行并抛空指针
- 公式分录、业务规则分录改为 ObjectUtil.isNotEmpty 判空,前端不传子表时不再 NPE
- 更新分支由 removeById + save 改为 getById + updateById 就地更新,保留原
create_user_id/create_time,仅刷新 update_time,避免审计字段丢失
- 新增分支内单独设置 create_time,避免更新时覆盖创建时间
- addAll/removeAllById 增加 @Transactional(rollbackFor = Exception.class)
|
2 weeks ago |
lml
|
038b52c64d
|
feat(botp): 保存转换规则时校验取值方式与分单策略
新增 ValueMethodEnum 与 SplitMergeStrategyEnum 承载字段可选值,消除魔法值,
并为二者补充 parse/validOptions 方法供保存校验使用。
保存入口(addAll/editAll)统一增加 validateBeforeSave 前置校验,
校验不通过抛 MyRuntimeException 阻止保存,且早于任何写库操作,避免脏数据。
- 取值方式:为空或未知时阻止保存,错误信息定位到分录行号、源字段、
目标字段、非法值、合法选项及分录id
- 分单策略:未配置按默认「一对一」放行;非法值阻止保存;选择「按规则分组合并」
但未配置分单字段时阻止保存
- 事务:addAll/editAll 涉及主表与分录的多次独立写库(editAll 为先删后插),
此前无事务边界,中途失败会造成主表已改、分录残缺或产生无分录的空规则。
现补充 @Transactional(rollbackFor = Exception.class),removeChild 一并补充
files:
common/common-botp/src/main/java/apelet/common/botp/model/constant/ValueMethodEnum.java
common/common-botp/src/main/java/apelet/common/botp/model/constant/SplitMergeStrategyEnum.java
common/common-botp/src/main/java/apelet/common/botp/service/impl/ConvertRuleServiceImpl.java
|
2 weeks ago |
chenchuchuan
|
e031e4dd51
|
chore(build): 更新构建配置并修复流程服务空指针问题
- 将 Nexus 仓库地址从公网 IP 更新为内网地址 192.168.100.25
- 在 common 模块中新增 common-botp 子模块
- common-botp 依赖版本更新,common-core 改为变量引用方式
- FlowEntryServiceImpl 增加 tokenData 为空时的空指针防护逻辑
- FlowTaskTitleBackfillServiceImpl 移除 GlobalThreadLocal 调用,简化数据过滤逻辑
- FlowTaskTitleBackfillServiceImpl 重构 processDefinitionKey 判空逻辑为提前返回
|
2 weeks ago |
lml
|
6829815b51
|
feat:反写规则代码迁移以及实体类字段新增
|
2 weeks ago |
lml
|
845af296ec
|
feat:反写规则代码迁移以及实体类字段新增
|
2 weeks ago |
chenchuchuan
|
c10afd0cbe
|
feat(mcp): 添加MCP工具管理员权限控制与端点鉴权
- 在 McpToolScanner 中增加管理类工具前缀配置,命中前缀的工具仅允许管理员调用
- 调用时优先复用请求上下文中的 TokenData,避免覆盖真实身份导致匿名执行
- 新增 buildDefaultTokenData 方法作为无请求上下文时的兜底
- 实现 isToolAllowed 与 isAdminOnlyTool 方法进行工具级授权判断
- 在 InterceptorConfig 中注册 McpAuthInterceptor,独立处理 MCP 端点鉴权
- 将 MCP 端点路径从主登录态拦截器中排除,避免密钥调用被 401 拦截
- common-botp 模块依赖版本更新,common-core 版本改为引用变量
- 在 common 父模块中注册 common-botp 子模块
|
2 weeks ago |
chenchuchuan
|
23209830b5
|
feat(botp): 新增单据转换平台核心模块
- 新增单据转换插件抽象基类 AbstractTransformPlugIn
- 实现字段映射策略模式(映射、常量、计算公式)
- 新增单据基础服务 BillBaseService,支持保存、提交、详情、删除
- 新增单据基础控制器 BillBaseController 及通用 CRUD 接口
- 新增单据转换核心引擎 BotpService 及转换关系数据模型
- 新增采购申请下推回写已订货数量插件 BackPurReqTransformPlugIn
- 新增单据转换关系及分录实体 BillRelation、BillRelationEntry
|
2 weeks ago |