发布时间:2025-01-21 13:01
业务需求:编辑时,对主表中数据的修改,以及子数据可以进行删除,修改,或者新增的操作
前端(主要展示子表):可以点击新增,也可以在原数据上进行编辑,也可以删除该条数据再新增
前端传值(主要展示子表):
higtRule里面就是子数据,没有id的则是点击新增后新增的数据,所以既有新增操作,又有编辑操作
后台处理(主要对子数据):
思路:
1:首先查询全部子数据
2:创建一个空集合newIds,用于存放未删除的子数据的id,遍历前端传递过来的子数据,将子数据的id存放在newIds集合中
3:过滤数据也就是用全部的数据去过滤newIds的数据,如果全部的数据中的数据和newIds中的数据不一致,则就是要删除的子数据,使用Java8的stream流处理,该方法返回的就是要删除的数据的集合
4:创建一个空集合deleteIds,用于存放要删除的子数据的id,遍历deleteList,将id存放在deleteIds中
最后执行删除操作
controller:
/**
* 面积户表-收费标准-编辑
*
* @param artbFeeStandardVo
* @return
*/
@AutoLog(value = "artb_fee_standard-编辑")
@ApiOperation(value="artb_fee_standard-编辑", notes="artb_fee_standard-编辑")
@PutMapping(value = "/edit")
public Result> edit(@RequestBody ArtbStandardVo artbFeeStandardVo) {
return artbFeeStandardService.editArtbFeeStandard(artbFeeStandardVo);
}
service层
Result> editArtbFeeStandard(ArtbStandardVo artbFeeStandardVo);
实现类(主要是对子数据的处理):
@Override
@Transactional
public Result> editArtbFeeStandard(ArtbStandardVo artbFeeStandardVo) {
// 更新子数据
// 查询全部超高规则
QueryWrapper oldChildWrapper = new QueryWrapper<>();
oldChildWrapper.eq("standard_id", feeStandard.getId());
List highRules = highRuleMapper.selectList(oldChildWrapper);
// 存储前端传递过来未删除的id
List newIds = new ArrayList<>();
for (ArtbFeeHighRule rule : artbFeeStandardVo.getHighRuleList()) {
newIds.add(rule.getId());
}
// 筛选出要删除的超高数据,进行批量删除
List deleteList = highRules.stream().filter(item -> !newIds.contains(item.getId())).collect(Collectors.toList());
// 存放要删除的id
List deleteIds = new ArrayList<>();
for (ArtbFeeHighRule rule : deleteList) {
deleteIds.add(rule.getId());
}
if (deleteIds.size() > 0) {
highRuleMapper.deleteBatchById(deleteIds);
}
if (!CollectionUtils.isEmpty(artbFeeStandardVo.getHighRuleList())) {
List highList = new ArrayList<>();
List highHistoryList = new ArrayList<>();
artbFeeStandardVo.getHighRuleList().forEach(item -> {
item.setInsertBaseColumnNoCompanyCode();
if (StringUtils.isEmpty(item.getId())) {
// 说明是新增
item.setId(IdUtil.getCombineId(feeStandard.getId()));
item.setStandardId(feeStandard.getId());
item.setCompanyCode(feeStandard.getCompanyCode());
}
highList.add(item);
// 更新超高历史表
//操作轨迹
ArtbFeeHighRuleHistory highRuleHistory = new ArtbFeeHighRuleHistory();
BeanUtils.copyProperties(item, highRuleHistory);
highRuleHistory.setStandardId(feeStandardHistory.getId());
highRuleHistory.setCompanyCode(feeStandardHistory.getCompanyCode());
highRuleHistory.setInsertBaseColumnNoCompanyCode();
highRuleHistory.setId(IdUtil.getCombineId(highRuleHistory.getCompanyCode()));
highHistoryList.add(highRuleHistory);
});
// 超过规则做批量新增或者编辑
highService.saveOrUpdateBatch(highList);
// 超过规则历史表做新增操作,记录具体操作数据
highHistoryService.saveBatch(highHistoryList);
}
}
mapper中的删除
/**
* 批量删除超高数据
* @param deleteIds
* @return
*/
int deleteBatchById(List deleteIds);
xml中
delete from artb_fee_high_rule
where id IN
#{item}
最后返回成功,或者失败:
if (update > 0) {
return Result.OK("修改成功");
} else {
return Result.error("修改失败");
}
有问题可加qq 876942434,一起进步~
Qt 5.14.2 MinGW 7.3.0/MSVC2017_64编译Oracle驱动笔记
Python爬虫实战,requests模块,Python实现IMDB电影top数据可视化
R语言决策树和随机森林分类电信公司用户流失churn数据和参数调优、ROC曲线可视化
复盘:霍夫曼编码平均长度计算方式,信源符号a1-a6概率为:0.1,0.4,0.06,0.1,0.04,0.3,霍夫曼编码平均长度是
2022年7月中国数据库排行榜:墨天轮榜单榜眼易主,PolarDB得分涨幅最大
Web3.0时代来了,看天翼云存储资源盘活系统如何赋能新基建(下)
zookeeper入门到精通04——zookeeper集群选举与集群操作
【云原生之Docker实战】使用docker部署nacos平台
Springboot 整合mybatis-plus遇到的问题
【云原生丨Docker系列3】Docker容器的基本操作方法