feat(flow): 添加受理单ID批量查询功能并优化任务关联信息展示

- 在TsComplaintAcceptBo中新增acceptIds字段用于批量查询
- 实现基于受理单ID列表的批量查询条件构建
- 添加工具方法enrichWithAcceptInfo批量填充受理单信息到任务VO
- 为TsComplaintTaskVo和TsPlanExecuteRelVo添加acceptInfo关联字段
- 优化查询逻辑支持实时关联受理单信息展示
This commit is contained in:
2026-06-22 10:12:56 +08:00
parent 1a0a904903
commit 7ec3f49c73
6 changed files with 93 additions and 3 deletions

View File

@@ -96,5 +96,10 @@ public class TsComplaintAcceptBo extends BaseEntity {
*/
private List<Long> coilIds;
/**
* 受理单ID列表批量查询用
*/
private List<Long> acceptIds;
}

View File

@@ -82,5 +82,10 @@ public class TsComplaintTaskVo {
@ExcelProperty(value = "备注")
private String remark;
/**
* 关联的受理单信息
*/
private TsComplaintAcceptVo acceptInfo;
}

View File

@@ -81,5 +81,7 @@ public class TsPlanExecuteRelVo {
@ExcelProperty(value = "备注")
private String remark;
// 受理单
private TsComplaintAcceptVo acceptInfo;
}

View File

@@ -90,6 +90,7 @@ public class TsComplaintAcceptServiceImpl implements ITsComplaintAcceptService {
lqw.eq(bo.getFlowStatus() != null, TsComplaintAccept::getFlowStatus, bo.getFlowStatus());
lqw.eq(bo.getPrincipalUserId() != null, TsComplaintAccept::getPrincipalUserId, bo.getPrincipalUserId());
lqw.eq(StringUtils.isNotBlank(bo.getPlanContent()), TsComplaintAccept::getPlanContent, bo.getPlanContent());
lqw.in(bo.getAcceptIds() != null && !bo.getAcceptIds().isEmpty(), TsComplaintAccept::getAcceptId, bo.getAcceptIds());
return lqw;
}

View File

@@ -1,6 +1,7 @@
package com.klp.flow.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
@@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import com.klp.flow.domain.TsComplaintAccept;
import com.klp.flow.domain.vo.TsComplaintAcceptVo;
import com.klp.flow.mapper.TsComplaintAcceptMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -18,9 +20,11 @@ import com.klp.flow.domain.TsComplaintTask;
import com.klp.flow.mapper.TsComplaintTaskMapper;
import com.klp.flow.service.ITsComplaintTaskService;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.stream.Collectors;
/**
* 各部门投诉代办任务&意见Service业务层处理
@@ -41,7 +45,11 @@ public class TsComplaintTaskServiceImpl implements ITsComplaintTaskService {
*/
@Override
public TsComplaintTaskVo queryById(Long taskId){
return baseMapper.selectVoById(taskId);
TsComplaintTaskVo vo = baseMapper.selectVoById(taskId);
if (vo != null) {
enrichWithAcceptInfo(Collections.singletonList(vo));
}
return vo;
}
/**
@@ -51,6 +59,7 @@ public class TsComplaintTaskServiceImpl implements ITsComplaintTaskService {
public TableDataInfo<TsComplaintTaskVo> queryPageList(TsComplaintTaskBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<TsComplaintTask> lqw = buildQueryWrapper(bo);
Page<TsComplaintTaskVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
enrichWithAcceptInfo(result.getRecords());
return TableDataInfo.build(result);
}
@@ -60,7 +69,38 @@ public class TsComplaintTaskServiceImpl implements ITsComplaintTaskService {
@Override
public List<TsComplaintTaskVo> queryList(TsComplaintTaskBo bo) {
LambdaQueryWrapper<TsComplaintTask> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
List<TsComplaintTaskVo> list = baseMapper.selectVoList(lqw);
enrichWithAcceptInfo(list);
return list;
}
/**
* 批量查询受理单信息并填充到VO中
*/
private void enrichWithAcceptInfo(List<TsComplaintTaskVo> voList) {
if (CollUtil.isEmpty(voList)) {
return;
}
// 收集所有acceptId去重
List<Long> acceptIds = voList.stream()
.map(TsComplaintTaskVo::getAcceptId)
.filter(id -> id != null)
.distinct()
.collect(Collectors.toList());
if (acceptIds.isEmpty()) {
return;
}
// 批量查询受理单信息
List<TsComplaintAcceptVo> acceptList = tsComplaintAcceptMapper.selectVoBatchIds(acceptIds);
// 按acceptId建立索引
Map<Long, TsComplaintAcceptVo> acceptMap = acceptList.stream()
.collect(Collectors.toMap(TsComplaintAcceptVo::getAcceptId, a -> a, (a, b) -> a));
// 填充到VO中
for (TsComplaintTaskVo vo : voList) {
if (vo.getAcceptId() != null) {
vo.setAcceptInfo(acceptMap.get(vo.getAcceptId()));
}
}
}
private LambdaQueryWrapper<TsComplaintTask> buildQueryWrapper(TsComplaintTaskBo bo) {

View File

@@ -1,6 +1,7 @@
package com.klp.flow.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -9,6 +10,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import com.klp.flow.domain.TsComplaintAccept;
import com.klp.flow.domain.vo.TsComplaintAcceptVo;
import com.klp.flow.domain.vo.TsComplaintTaskVo;
import com.klp.flow.mapper.TsComplaintAcceptMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -21,6 +24,8 @@ import com.klp.flow.service.ITsPlanExecuteRelService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* 最终方案下发部门及执行反馈Service业务层处理
@@ -51,16 +56,48 @@ public class TsPlanExecuteRelServiceImpl implements ITsPlanExecuteRelService {
public TableDataInfo<TsPlanExecuteRelVo> queryPageList(TsPlanExecuteRelBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<TsPlanExecuteRel> lqw = buildQueryWrapper(bo);
Page<TsPlanExecuteRelVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
enrichWithAcceptInfo(result.getRecords());
return TableDataInfo.build(result);
}
/**
* 批量查询受理单信息并填充到VO中
*/
private void enrichWithAcceptInfo(List<TsPlanExecuteRelVo> voList) {
if (CollUtil.isEmpty(voList)) {
return;
}
// 收集所有acceptId去重
List<Long> acceptIds = voList.stream()
.map(TsPlanExecuteRelVo::getAcceptId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
if (acceptIds.isEmpty()) {
return;
}
// 批量查询受理单信息
List<TsComplaintAcceptVo> acceptList = tsComplaintAcceptMapper.selectVoBatchIds(acceptIds);
// 按acceptId建立索引
Map<Long, TsComplaintAcceptVo> acceptMap = acceptList.stream()
.collect(Collectors.toMap(TsComplaintAcceptVo::getAcceptId, a -> a, (a, b) -> a));
// 填充到VO中
for (TsPlanExecuteRelVo vo : voList) {
if (vo.getAcceptId() != null) {
vo.setAcceptInfo(acceptMap.get(vo.getAcceptId()));
}
}
}
/**
* 查询最终方案下发部门及执行反馈列表
*/
@Override
public List<TsPlanExecuteRelVo> queryList(TsPlanExecuteRelBo bo) {
LambdaQueryWrapper<TsPlanExecuteRel> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
List<TsPlanExecuteRelVo> tsPlanExecuteRelVos = baseMapper.selectVoList(lqw);
enrichWithAcceptInfo(tsPlanExecuteRelVos);
return tsPlanExecuteRelVos;
}
private LambdaQueryWrapper<TsPlanExecuteRel> buildQueryWrapper(TsPlanExecuteRelBo bo) {