Browse Source

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 合并为通配导入
dev-lml
lml 1 week ago
parent
commit
dd02faa3b9
  1. 21
      common/common-botp/src/main/java/apelet/common/botp/controller/ReverseWritingRulesController.java
  2. 3
      common/common-botp/src/main/java/apelet/common/botp/dto/ReverseWritingRulesDto.java
  3. 26
      common/common-botp/src/main/java/apelet/common/botp/service/impl/ReverseWritingRulesServiceImpl.java

21
common/common-botp/src/main/java/apelet/common/botp/controller/ReverseWritingRulesController.java

@ -1,8 +1,11 @@
package apelet.common.botp.controller; 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.ReverseWritingBusiness;
import apelet.common.botp.model.ReverseWritingFormula; import apelet.common.botp.model.ReverseWritingFormula;
import apelet.common.botp.model.ReverseWritingRules; import apelet.common.botp.model.ReverseWritingRules;
import apelet.common.botp.service.IConvertPluginEntryService;
import apelet.common.botp.service.IReverseWritingBusinessService; import apelet.common.botp.service.IReverseWritingBusinessService;
import apelet.common.botp.service.IReverseWritingFormulaService; import apelet.common.botp.service.IReverseWritingFormulaService;
import apelet.common.botp.service.IReverseWritingRulesService; 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.MyPageParam;
import apelet.common.core.object.ResponseResult; import apelet.common.core.object.ResponseResult;
import apelet.common.core.util.MyPageUtil; import apelet.common.core.util.MyPageUtil;
import apelet.common.botp.dto.ReverseWritingRulesDto; import apelet.common.generator.model.OnlFormHead;
import apelet.common.generator.model.*; import apelet.common.generator.service.IOnlFormHeadService;
import apelet.common.generator.service.*;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.Page; 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.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; 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; import java.util.stream.Collectors;
@ -47,6 +51,8 @@ public class ReverseWritingRulesController {
IReverseWritingBusinessService businessService; IReverseWritingBusinessService businessService;
@Autowired @Autowired
IOnlFormHeadService onlFormHeadService; IOnlFormHeadService onlFormHeadService;
@Autowired
IConvertPluginEntryService convertPluginEntryService;
@PostMapping(value = "/page") @PostMapping(value = "/page")
@Schema(description = "分页查询") @Schema(description = "分页查询")
@ -106,6 +112,7 @@ public class ReverseWritingRulesController {
rulesService.removeById(id); rulesService.removeById(id);
formulaService.remove(new LambdaQueryWrapper<ReverseWritingFormula>().eq(ReverseWritingFormula::getRulesId, id)); formulaService.remove(new LambdaQueryWrapper<ReverseWritingFormula>().eq(ReverseWritingFormula::getRulesId, id));
businessService.remove(new LambdaQueryWrapper<ReverseWritingBusiness>().eq(ReverseWritingBusiness::getRulesId, id)); businessService.remove(new LambdaQueryWrapper<ReverseWritingBusiness>().eq(ReverseWritingBusiness::getRulesId, id));
convertPluginEntryService.remove(new LambdaQueryWrapper<ConvertPluginEntry>().eq(ConvertPluginEntry::getParentId, id.toString()));
return ResponseResult.success("删除成功"); return ResponseResult.success("删除成功");
} }
@ -121,6 +128,12 @@ public class ReverseWritingRulesController {
return ResponseResult.success(businessList); return ResponseResult.success(businessList);
} }
@GetMapping(value = "/getConvertPluginEntry")
public ResponseResult<List<ConvertPluginEntry>> getConvertPluginEntryByRuleId(@RequestParam Long id) {
List<ConvertPluginEntry> convertPluginEntryList = convertPluginEntryService.list(new LambdaQueryWrapper<ConvertPluginEntry>().eq(ConvertPluginEntry::getParentId, id.toString()));
return ResponseResult.success(convertPluginEntryList);
}
@GetMapping(value = "/getVersionList") @GetMapping(value = "/getVersionList")
@Schema(description = "反写规则版本快照列表") @Schema(description = "反写规则版本快照列表")
public ResponseResult<?> getVersionList(@RequestParam Long id) { public ResponseResult<?> getVersionList(@RequestParam Long id) {

3
common/common-botp/src/main/java/apelet/common/botp/dto/ReverseWritingRulesDto.java

@ -1,6 +1,7 @@
package apelet.common.botp.dto; package apelet.common.botp.dto;
import apelet.common.botp.model.ConvertPluginEntry;
import apelet.common.botp.model.ReverseWritingBusiness; import apelet.common.botp.model.ReverseWritingBusiness;
import apelet.common.botp.model.ReverseWritingFormula; import apelet.common.botp.model.ReverseWritingFormula;
import apelet.common.botp.model.ReverseWritingRules; import apelet.common.botp.model.ReverseWritingRules;
@ -30,6 +31,8 @@ public class ReverseWritingRulesDto extends ReverseWritingRules implements Seria
private List<ReverseWritingBusiness> businessList; private List<ReverseWritingBusiness> businessList;
private List<ConvertPluginEntry> convertPluginEntryList;
} }

26
common/common-botp/src/main/java/apelet/common/botp/service/impl/ReverseWritingRulesServiceImpl.java

@ -1,14 +1,12 @@
package apelet.common.botp.service.impl; package apelet.common.botp.service.impl;
import apelet.common.botp.dao.ConvertPluginEntryMapper;
import apelet.common.botp.dao.ReverseWritingRulesMapper; import apelet.common.botp.dao.ReverseWritingRulesMapper;
import apelet.common.botp.dao.ReverseWritingRulesVerMapper; import apelet.common.botp.dao.ReverseWritingRulesVerMapper;
import apelet.common.botp.dto.ReverseWritingRulesDto; import apelet.common.botp.dto.ReverseWritingRulesDto;
import apelet.common.botp.dto.RuleVersionDiffDto; import apelet.common.botp.dto.RuleVersionDiffDto;
import apelet.common.botp.model.ReverseWritingBusiness; import apelet.common.botp.model.*;
import apelet.common.botp.model.ReverseWritingFormula;
import apelet.common.botp.model.ReverseWritingRules;
import apelet.common.botp.model.ReverseWritingRulesVer;
import apelet.common.botp.service.IReverseWritingBusinessService; import apelet.common.botp.service.IReverseWritingBusinessService;
import apelet.common.botp.service.IReverseWritingFormulaService; import apelet.common.botp.service.IReverseWritingFormulaService;
import apelet.common.botp.service.IReverseWritingRulesService; 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@ -45,6 +38,8 @@ public class ReverseWritingRulesServiceImpl extends ServiceImpl<ReverseWritingRu
ReverseWritingRulesMapper reverseWritingRulesMapper; ReverseWritingRulesMapper reverseWritingRulesMapper;
@Autowired @Autowired
ReverseWritingRulesVerMapper reverseWritingRulesVerMapper; ReverseWritingRulesVerMapper reverseWritingRulesVerMapper;
@Autowired
ConvertPluginEntryMapper convertPluginEntryMapper;
@ -59,11 +54,13 @@ public class ReverseWritingRulesServiceImpl extends ServiceImpl<ReverseWritingRu
} }
List<ReverseWritingBusiness> businessesList = businessService.list(new LambdaQueryWrapper<ReverseWritingBusiness>().in(ReverseWritingBusiness::getRulesId, ids)); List<ReverseWritingBusiness> businessesList = businessService.list(new LambdaQueryWrapper<ReverseWritingBusiness>().in(ReverseWritingBusiness::getRulesId, ids));
List<ReverseWritingFormula> formulaList = formulaService.list(new LambdaQueryWrapper<ReverseWritingFormula>().in(ReverseWritingFormula::getRulesId, ids)); List<ReverseWritingFormula> formulaList = formulaService.list(new LambdaQueryWrapper<ReverseWritingFormula>().in(ReverseWritingFormula::getRulesId, ids));
List<ConvertPluginEntry> convertPluginEntryList = convertPluginEntryMapper.selectList(new LambdaQueryWrapper<ConvertPluginEntry>().in(ConvertPluginEntry::getParentId, ids));
list.forEach(f -> { list.forEach(f -> {
ReverseWritingRulesDto dto = new ReverseWritingRulesDto(); ReverseWritingRulesDto dto = new ReverseWritingRulesDto();
BeanUtils.copyProperties(f, dto); BeanUtils.copyProperties(f, dto);
dto.setBusinessList(businessesList.stream().filter(b -> b.getRulesId().equals(f.getId())).collect(Collectors.toList())); 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.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); dtoList.add(dto);
}); });
return dtoList; return dtoList;
@ -105,6 +102,7 @@ public class ReverseWritingRulesServiceImpl extends ServiceImpl<ReverseWritingRu
// 分录按规则id全量覆盖 // 分录按规则id全量覆盖
formulaService.remove(new LambdaQueryWrapper<ReverseWritingFormula>().eq(ReverseWritingFormula::getRulesId, reverseWritingRules.getId())); formulaService.remove(new LambdaQueryWrapper<ReverseWritingFormula>().eq(ReverseWritingFormula::getRulesId, reverseWritingRules.getId()));
businessService.remove(new LambdaQueryWrapper<ReverseWritingBusiness>().eq(ReverseWritingBusiness::getRulesId, reverseWritingRules.getId())); businessService.remove(new LambdaQueryWrapper<ReverseWritingBusiness>().eq(ReverseWritingBusiness::getRulesId, reverseWritingRules.getId()));
convertPluginEntryMapper.delete(new LambdaQueryWrapper<ConvertPluginEntry>().eq(ConvertPluginEntry::getParentId, reverseWritingRules.getId().toString()));
remark = RuleSnapshotUtil.REMARK_UPDATE; remark = RuleSnapshotUtil.REMARK_UPDATE;
snapshotVersion = RuleVersionUtil.next(baseVersion); snapshotVersion = RuleVersionUtil.next(baseVersion);
} else { } else {
@ -130,6 +128,14 @@ public class ReverseWritingRulesServiceImpl extends ServiceImpl<ReverseWritingRu
businessList.forEach(f -> f.setRulesId(reverseWritingRules.getId())); businessList.forEach(f -> f.setRulesId(reverseWritingRules.getId()));
businessService.saveBatch(businessList); businessService.saveBatch(businessList);
} }
List<ConvertPluginEntry> convertPluginEntryList = dto.getConvertPluginEntryList();
if (ObjectUtil.isNotEmpty(convertPluginEntryList)) {
convertPluginEntryList.forEach(f -> {
f.setParentId(reverseWritingRules.getId().toString());
convertPluginEntryMapper.insert(f);
});
}
// 落全量快照 // 落全量快照
saveSnapshot(reverseWritingRules.getId(), snapshotVersion, remark); saveSnapshot(reverseWritingRules.getId(), snapshotVersion, remark);
return reverseWritingRules; return reverseWritingRules;

Loading…
Cancel
Save