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 @@ @@ -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; @@ -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; @@ -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 { @@ -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 { @@ -106,6 +112,7 @@ public class ReverseWritingRulesController {
rulesService.removeById(id);
formulaService.remove(new LambdaQueryWrapper<ReverseWritingFormula>().eq(ReverseWritingFormula::getRulesId, id));
businessService.remove(new LambdaQueryWrapper<ReverseWritingBusiness>().eq(ReverseWritingBusiness::getRulesId, id));
convertPluginEntryService.remove(new LambdaQueryWrapper<ConvertPluginEntry>().eq(ConvertPluginEntry::getParentId, id.toString()));
return ResponseResult.success("删除成功");
}
@ -121,6 +128,12 @@ public class ReverseWritingRulesController { @@ -121,6 +128,12 @@ public class ReverseWritingRulesController {
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")
@Schema(description = "反写规则版本快照列表")
public ResponseResult<?> getVersionList(@RequestParam Long id) {

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

@ -1,6 +1,7 @@ @@ -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 @@ -30,6 +31,8 @@ public class ReverseWritingRulesDto extends ReverseWritingRules implements Seria
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 @@ @@ -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; @@ -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<ReverseWritingRu @@ -45,6 +38,8 @@ public class ReverseWritingRulesServiceImpl extends ServiceImpl<ReverseWritingRu
ReverseWritingRulesMapper reverseWritingRulesMapper;
@Autowired
ReverseWritingRulesVerMapper reverseWritingRulesVerMapper;
@Autowired
ConvertPluginEntryMapper convertPluginEntryMapper;
@ -59,11 +54,13 @@ public class ReverseWritingRulesServiceImpl extends ServiceImpl<ReverseWritingRu @@ -59,11 +54,13 @@ public class ReverseWritingRulesServiceImpl extends ServiceImpl<ReverseWritingRu
}
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<ConvertPluginEntry> convertPluginEntryList = convertPluginEntryMapper.selectList(new LambdaQueryWrapper<ConvertPluginEntry>().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<ReverseWritingRu @@ -105,6 +102,7 @@ public class ReverseWritingRulesServiceImpl extends ServiceImpl<ReverseWritingRu
// 分录按规则id全量覆盖
formulaService.remove(new LambdaQueryWrapper<ReverseWritingFormula>().eq(ReverseWritingFormula::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;
snapshotVersion = RuleVersionUtil.next(baseVersion);
} else {
@ -130,6 +128,14 @@ public class ReverseWritingRulesServiceImpl extends ServiceImpl<ReverseWritingRu @@ -130,6 +128,14 @@ public class ReverseWritingRulesServiceImpl extends ServiceImpl<ReverseWritingRu
businessList.forEach(f -> f.setRulesId(reverseWritingRules.getId()));
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);
return reverseWritingRules;

Loading…
Cancel
Save