lml
|
5d9780a615
|
fix(botp): serialNumber字段类型修改避免排序错误
|
1 week ago |
lml
|
fcc47e46f6
|
fix(botp): ConvertRule 补分单字段名称并实现 Serializable
- 分单策略的配套字段只有 groupByField,缺少用于展示的 groupByFieldName,
前端选中分组字段后无法回显名称,补上该字段(仅展示用途,不参与分单计算,
执行侧仍按 field id 取分组依据)
- 实体实现 Serializable,与 ReverseWritingRules 等规则实体保持一致
|
1 week ago |
lml
|
dd02faa3b9
|
feat(botp): 反写规则支持插件分录的保存、回显与删除
- ReverseWritingRulesDto 新增 convertPluginEntryList,让反写规则能携带插件分录。
此前反写规则只有反写公式、业务规则两张子表,规则上声明的反写插件无处存放,
本次复用已有的 convert_plugin_entry 表(parent_id 指向反写规则 id)
- ReverseWritingRulesServiceImpl.saveAll 在更新分支按规则 id 清空插件分录后重新写入,
与公式、业务规则子表保持同样的全量覆盖语义;parentId 由服务端统一赋值,
不依赖前端传参
- 反写 Service 读写插件分录改用 ConvertPluginEntryMapper 而非
IConvertPluginEntryService:后者继承 BaseService(泛型参数为接口
BaseDaoMapper),ServiceImpl 体系的 saveBatch/list/remove 会去查
BaseDaoMapper 的语句映射并抛 "Mapped Statements collection does not contain
value for ...BaseDaoMapper.insert"。Mapper 单条 insert 是转换规则侧
ConvertRuleServiceImpl.addChild 已在用的路径
- ReverseWritingRulesController 新增 /getConvertPluginEntry 回显插件分录;
删除规则时同步清理其插件分录,避免 parent_id 指向已删除的规则
- 顺带收敛 import:Controller 把 generator 包的 * 通配改为显式导入,
ServiceImpl 的 model 与 java.util 合并为通配导入
|
1 week ago |
lml
|
5d6fca24d6
|
fix(botp): 修复版本对比把「改源字段」误判成一增一删
- 字段映射的业务主键含源字段(oldfieldNumber),用户改源字段会让精确配对失败,
同一行被拆成「删除 1 条 + 新增 1 条」,实际应识别为「修改 1 条」
- 版本对比改为两轮配对:第一轮按完整业务主键精确配对;第二轮对剩余行按兜底字段再配一次
(字段映射用目标字段、反写公式用反写字段;插件与业务规则主键本身唯一,不做兜底)
- 兜底配对加两道约束防止误合并:同一兜底 key 下旧行数须等于新行数、且兜底字段两行都非空且相等
真新增 + 真删除不会被硬凑成一条修改
- 修正 FALLBACK_FIELD_MAPPING 取值:不用 entryTarget(常为空,等于放宽成同组随便配),
改用 newfieldNumber
|
1 week ago |
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、建两张快照表,可重复执行
|
1 week 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 |