From dd02faa3b9ad13d91beff19af817818ac5aa6384 Mon Sep 17 00:00:00 2001 From: lml <1297555865@qq.com> Date: Thu, 22 Oct 2026 09:46:29 +0800 Subject: [PATCH] =?UTF-8?q?feat(botp):=20=E5=8F=8D=E5=86=99=E8=A7=84?= =?UTF-8?q?=E5=88=99=E6=94=AF=E6=8C=81=E6=8F=92=E4=BB=B6=E5=88=86=E5=BD=95?= =?UTF-8?q?=E7=9A=84=E4=BF=9D=E5=AD=98=E3=80=81=E5=9B=9E=E6=98=BE=E4=B8=8E?= =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 合并为通配导入 --- .../controller/ReverseWritingRulesController.java | 21 +++++++++++++---- .../common/botp/dto/ReverseWritingRulesDto.java | 3 +++ .../impl/ReverseWritingRulesServiceImpl.java | 26 +++++++++++++--------- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/common/common-botp/src/main/java/apelet/common/botp/controller/ReverseWritingRulesController.java b/common/common-botp/src/main/java/apelet/common/botp/controller/ReverseWritingRulesController.java index 902ecbd..f933825 100644 --- a/common/common-botp/src/main/java/apelet/common/botp/controller/ReverseWritingRulesController.java +++ b/common/common-botp/src/main/java/apelet/common/botp/controller/ReverseWritingRulesController.java @@ -1,8 +1,11 @@ package apelet.common.botp.controller; +import apelet.common.botp.dto.ReverseWritingRulesDto; +import apelet.common.botp.model.ConvertPluginEntry; import apelet.common.botp.model.ReverseWritingBusiness; import apelet.common.botp.model.ReverseWritingFormula; import apelet.common.botp.model.ReverseWritingRules; +import apelet.common.botp.service.IConvertPluginEntryService; import apelet.common.botp.service.IReverseWritingBusinessService; import apelet.common.botp.service.IReverseWritingFormulaService; import apelet.common.botp.service.IReverseWritingRulesService; @@ -12,9 +15,8 @@ import apelet.common.core.object.MyPageData; import apelet.common.core.object.MyPageParam; import apelet.common.core.object.ResponseResult; import apelet.common.core.util.MyPageUtil; -import apelet.common.botp.dto.ReverseWritingRulesDto; -import apelet.common.generator.model.*; -import apelet.common.generator.service.*; +import apelet.common.generator.model.OnlFormHead; +import apelet.common.generator.service.IOnlFormHeadService; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.pagehelper.Page; @@ -26,7 +28,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; @@ -47,6 +51,8 @@ public class ReverseWritingRulesController { IReverseWritingBusinessService businessService; @Autowired IOnlFormHeadService onlFormHeadService; + @Autowired + IConvertPluginEntryService convertPluginEntryService; @PostMapping(value = "/page") @Schema(description = "分页查询") @@ -106,6 +112,7 @@ public class ReverseWritingRulesController { rulesService.removeById(id); formulaService.remove(new LambdaQueryWrapper().eq(ReverseWritingFormula::getRulesId, id)); businessService.remove(new LambdaQueryWrapper().eq(ReverseWritingBusiness::getRulesId, id)); + convertPluginEntryService.remove(new LambdaQueryWrapper().eq(ConvertPluginEntry::getParentId, id.toString())); return ResponseResult.success("删除成功"); } @@ -121,6 +128,12 @@ public class ReverseWritingRulesController { return ResponseResult.success(businessList); } + @GetMapping(value = "/getConvertPluginEntry") + public ResponseResult> getConvertPluginEntryByRuleId(@RequestParam Long id) { + List convertPluginEntryList = convertPluginEntryService.list(new LambdaQueryWrapper().eq(ConvertPluginEntry::getParentId, id.toString())); + return ResponseResult.success(convertPluginEntryList); + } + @GetMapping(value = "/getVersionList") @Schema(description = "反写规则版本快照列表") public ResponseResult getVersionList(@RequestParam Long id) { diff --git a/common/common-botp/src/main/java/apelet/common/botp/dto/ReverseWritingRulesDto.java b/common/common-botp/src/main/java/apelet/common/botp/dto/ReverseWritingRulesDto.java index be1f4b5..e1bcb99 100644 --- a/common/common-botp/src/main/java/apelet/common/botp/dto/ReverseWritingRulesDto.java +++ b/common/common-botp/src/main/java/apelet/common/botp/dto/ReverseWritingRulesDto.java @@ -1,6 +1,7 @@ package apelet.common.botp.dto; +import apelet.common.botp.model.ConvertPluginEntry; import apelet.common.botp.model.ReverseWritingBusiness; import apelet.common.botp.model.ReverseWritingFormula; import apelet.common.botp.model.ReverseWritingRules; @@ -30,6 +31,8 @@ public class ReverseWritingRulesDto extends ReverseWritingRules implements Seria private List businessList; + private List convertPluginEntryList; + } diff --git a/common/common-botp/src/main/java/apelet/common/botp/service/impl/ReverseWritingRulesServiceImpl.java b/common/common-botp/src/main/java/apelet/common/botp/service/impl/ReverseWritingRulesServiceImpl.java index 32f9799..59f037a 100644 --- a/common/common-botp/src/main/java/apelet/common/botp/service/impl/ReverseWritingRulesServiceImpl.java +++ b/common/common-botp/src/main/java/apelet/common/botp/service/impl/ReverseWritingRulesServiceImpl.java @@ -1,14 +1,12 @@ package apelet.common.botp.service.impl; +import apelet.common.botp.dao.ConvertPluginEntryMapper; import apelet.common.botp.dao.ReverseWritingRulesMapper; import apelet.common.botp.dao.ReverseWritingRulesVerMapper; import apelet.common.botp.dto.ReverseWritingRulesDto; import apelet.common.botp.dto.RuleVersionDiffDto; -import apelet.common.botp.model.ReverseWritingBusiness; -import apelet.common.botp.model.ReverseWritingFormula; -import apelet.common.botp.model.ReverseWritingRules; -import apelet.common.botp.model.ReverseWritingRulesVer; +import apelet.common.botp.model.*; import apelet.common.botp.service.IReverseWritingBusinessService; import apelet.common.botp.service.IReverseWritingFormulaService; import apelet.common.botp.service.IReverseWritingRulesService; @@ -25,12 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Service @@ -45,6 +38,8 @@ public class ReverseWritingRulesServiceImpl extends ServiceImpl businessesList = businessService.list(new LambdaQueryWrapper().in(ReverseWritingBusiness::getRulesId, ids)); List formulaList = formulaService.list(new LambdaQueryWrapper().in(ReverseWritingFormula::getRulesId, ids)); + List convertPluginEntryList = convertPluginEntryMapper.selectList(new LambdaQueryWrapper().in(ConvertPluginEntry::getParentId, ids)); list.forEach(f -> { ReverseWritingRulesDto dto = new ReverseWritingRulesDto(); BeanUtils.copyProperties(f, dto); dto.setBusinessList(businessesList.stream().filter(b -> b.getRulesId().equals(f.getId())).collect(Collectors.toList())); dto.setFormulaList(formulaList.stream().filter(b -> b.getRulesId().equals(f.getId())).collect(Collectors.toList())); + dto.setConvertPluginEntryList(convertPluginEntryList.stream().filter(b -> b.getParentId().equals(f.getId().toString())).collect(Collectors.toList())); dtoList.add(dto); }); return dtoList; @@ -105,6 +102,7 @@ public class ReverseWritingRulesServiceImpl extends ServiceImpl().eq(ReverseWritingFormula::getRulesId, reverseWritingRules.getId())); businessService.remove(new LambdaQueryWrapper().eq(ReverseWritingBusiness::getRulesId, reverseWritingRules.getId())); + convertPluginEntryMapper.delete(new LambdaQueryWrapper().eq(ConvertPluginEntry::getParentId, reverseWritingRules.getId().toString())); remark = RuleSnapshotUtil.REMARK_UPDATE; snapshotVersion = RuleVersionUtil.next(baseVersion); } else { @@ -130,6 +128,14 @@ public class ReverseWritingRulesServiceImpl extends ServiceImpl f.setRulesId(reverseWritingRules.getId())); businessService.saveBatch(businessList); } + List convertPluginEntryList = dto.getConvertPluginEntryList(); + if (ObjectUtil.isNotEmpty(convertPluginEntryList)) { + convertPluginEntryList.forEach(f -> { + f.setParentId(reverseWritingRules.getId().toString()); + convertPluginEntryMapper.insert(f); + }); + + } // 落全量快照 saveSnapshot(reverseWritingRules.getId(), snapshotVersion, remark); return reverseWritingRules;