feat(flow): 添加投诉处理流程模块及相关服务接口

- 创建受理单关联钢卷中间表服务接口及实现类
- 添加投诉受理单主服务接口及相应控制器
- 实现各部门投诉代办任务服务功能
- 集成最终方案下发部门及执行反馈服务
- 在员工信息表中新增是否吃辣字段
- 配置klp-flow模块依赖并注册到系统中
This commit is contained in:
2026-06-18 11:19:55 +08:00
parent 2fc4bf4043
commit 5b0cb314e4
36 changed files with 2129 additions and 1 deletions

View File

@@ -0,0 +1,49 @@
package com.klp.flow.service;
import com.klp.flow.domain.TsAcceptCoilRel;
import com.klp.flow.domain.vo.TsAcceptCoilRelVo;
import com.klp.flow.domain.bo.TsAcceptCoilRelBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 受理单关联钢卷中间Service接口
*
* @author klp
* @date 2026-06-18
*/
public interface ITsAcceptCoilRelService {
/**
* 查询受理单关联钢卷中间
*/
TsAcceptCoilRelVo queryById(Long relId);
/**
* 查询受理单关联钢卷中间列表
*/
TableDataInfo<TsAcceptCoilRelVo> queryPageList(TsAcceptCoilRelBo bo, PageQuery pageQuery);
/**
* 查询受理单关联钢卷中间列表
*/
List<TsAcceptCoilRelVo> queryList(TsAcceptCoilRelBo bo);
/**
* 新增受理单关联钢卷中间
*/
Boolean insertByBo(TsAcceptCoilRelBo bo);
/**
* 修改受理单关联钢卷中间
*/
Boolean updateByBo(TsAcceptCoilRelBo bo);
/**
* 校验并批量删除受理单关联钢卷中间信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,49 @@
package com.klp.flow.service;
import com.klp.flow.domain.TsComplaintAccept;
import com.klp.flow.domain.vo.TsComplaintAcceptVo;
import com.klp.flow.domain.bo.TsComplaintAcceptBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 投诉受理单主Service接口
*
* @author klp
* @date 2026-06-18
*/
public interface ITsComplaintAcceptService {
/**
* 查询投诉受理单主
*/
TsComplaintAcceptVo queryById(Long acceptId);
/**
* 查询投诉受理单主列表
*/
TableDataInfo<TsComplaintAcceptVo> queryPageList(TsComplaintAcceptBo bo, PageQuery pageQuery);
/**
* 查询投诉受理单主列表
*/
List<TsComplaintAcceptVo> queryList(TsComplaintAcceptBo bo);
/**
* 新增投诉受理单主
*/
Boolean insertByBo(TsComplaintAcceptBo bo);
/**
* 修改投诉受理单主
*/
Boolean updateByBo(TsComplaintAcceptBo bo);
/**
* 校验并批量删除投诉受理单主信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,49 @@
package com.klp.flow.service;
import com.klp.flow.domain.TsComplaintTask;
import com.klp.flow.domain.vo.TsComplaintTaskVo;
import com.klp.flow.domain.bo.TsComplaintTaskBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 各部门投诉代办任务&意见Service接口
*
* @author klp
* @date 2026-06-18
*/
public interface ITsComplaintTaskService {
/**
* 查询各部门投诉代办任务&意见
*/
TsComplaintTaskVo queryById(Long taskId);
/**
* 查询各部门投诉代办任务&意见列表
*/
TableDataInfo<TsComplaintTaskVo> queryPageList(TsComplaintTaskBo bo, PageQuery pageQuery);
/**
* 查询各部门投诉代办任务&意见列表
*/
List<TsComplaintTaskVo> queryList(TsComplaintTaskBo bo);
/**
* 新增各部门投诉代办任务&意见
*/
Boolean insertByBo(TsComplaintTaskBo bo);
/**
* 修改各部门投诉代办任务&意见
*/
Boolean updateByBo(TsComplaintTaskBo bo);
/**
* 校验并批量删除各部门投诉代办任务&意见信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,49 @@
package com.klp.flow.service;
import com.klp.flow.domain.TsPlanExecuteRel;
import com.klp.flow.domain.vo.TsPlanExecuteRelVo;
import com.klp.flow.domain.bo.TsPlanExecuteRelBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 最终方案下发部门及执行反馈Service接口
*
* @author klp
* @date 2026-06-18
*/
public interface ITsPlanExecuteRelService {
/**
* 查询最终方案下发部门及执行反馈
*/
TsPlanExecuteRelVo queryById(Long relId);
/**
* 查询最终方案下发部门及执行反馈列表
*/
TableDataInfo<TsPlanExecuteRelVo> queryPageList(TsPlanExecuteRelBo bo, PageQuery pageQuery);
/**
* 查询最终方案下发部门及执行反馈列表
*/
List<TsPlanExecuteRelVo> queryList(TsPlanExecuteRelBo bo);
/**
* 新增最终方案下发部门及执行反馈
*/
Boolean insertByBo(TsPlanExecuteRelBo bo);
/**
* 修改最终方案下发部门及执行反馈
*/
Boolean updateByBo(TsPlanExecuteRelBo bo);
/**
* 校验并批量删除最终方案下发部门及执行反馈信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,109 @@
package com.klp.flow.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.flow.domain.bo.TsAcceptCoilRelBo;
import com.klp.flow.domain.vo.TsAcceptCoilRelVo;
import com.klp.flow.domain.TsAcceptCoilRel;
import com.klp.flow.mapper.TsAcceptCoilRelMapper;
import com.klp.flow.service.ITsAcceptCoilRelService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 受理单关联钢卷中间Service业务层处理
*
* @author klp
* @date 2026-06-18
*/
@RequiredArgsConstructor
@Service
public class TsAcceptCoilRelServiceImpl implements ITsAcceptCoilRelService {
private final TsAcceptCoilRelMapper baseMapper;
/**
* 查询受理单关联钢卷中间
*/
@Override
public TsAcceptCoilRelVo queryById(Long relId){
return baseMapper.selectVoById(relId);
}
/**
* 查询受理单关联钢卷中间列表
*/
@Override
public TableDataInfo<TsAcceptCoilRelVo> queryPageList(TsAcceptCoilRelBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<TsAcceptCoilRel> lqw = buildQueryWrapper(bo);
Page<TsAcceptCoilRelVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询受理单关联钢卷中间列表
*/
@Override
public List<TsAcceptCoilRelVo> queryList(TsAcceptCoilRelBo bo) {
LambdaQueryWrapper<TsAcceptCoilRel> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<TsAcceptCoilRel> buildQueryWrapper(TsAcceptCoilRelBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<TsAcceptCoilRel> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getAcceptId() != null, TsAcceptCoilRel::getAcceptId, bo.getAcceptId());
lqw.eq(bo.getCoilId() != null, TsAcceptCoilRel::getCoilId, bo.getCoilId());
return lqw;
}
/**
* 新增受理单关联钢卷中间
*/
@Override
public Boolean insertByBo(TsAcceptCoilRelBo bo) {
TsAcceptCoilRel add = BeanUtil.toBean(bo, TsAcceptCoilRel.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setRelId(add.getRelId());
}
return flag;
}
/**
* 修改受理单关联钢卷中间
*/
@Override
public Boolean updateByBo(TsAcceptCoilRelBo bo) {
TsAcceptCoilRel update = BeanUtil.toBean(bo, TsAcceptCoilRel.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(TsAcceptCoilRel entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除受理单关联钢卷中间
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,120 @@
package com.klp.flow.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.flow.domain.bo.TsComplaintAcceptBo;
import com.klp.flow.domain.vo.TsComplaintAcceptVo;
import com.klp.flow.domain.TsComplaintAccept;
import com.klp.flow.mapper.TsComplaintAcceptMapper;
import com.klp.flow.service.ITsComplaintAcceptService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 投诉受理单主Service业务层处理
*
* @author klp
* @date 2026-06-18
*/
@RequiredArgsConstructor
@Service
public class TsComplaintAcceptServiceImpl implements ITsComplaintAcceptService {
private final TsComplaintAcceptMapper baseMapper;
/**
* 查询投诉受理单主
*/
@Override
public TsComplaintAcceptVo queryById(Long acceptId){
return baseMapper.selectVoById(acceptId);
}
/**
* 查询投诉受理单主列表
*/
@Override
public TableDataInfo<TsComplaintAcceptVo> queryPageList(TsComplaintAcceptBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<TsComplaintAccept> lqw = buildQueryWrapper(bo);
Page<TsComplaintAcceptVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询投诉受理单主列表
*/
@Override
public List<TsComplaintAcceptVo> queryList(TsComplaintAcceptBo bo) {
LambdaQueryWrapper<TsComplaintAccept> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<TsComplaintAccept> buildQueryWrapper(TsComplaintAcceptBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<TsComplaintAccept> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getComplaintNo()), TsComplaintAccept::getComplaintNo, bo.getComplaintNo());
lqw.eq(bo.getComplaintDate() != null, TsComplaintAccept::getComplaintDate, bo.getComplaintDate());
lqw.eq(StringUtils.isNotBlank(bo.getComplaintContent()), TsComplaintAccept::getComplaintContent, bo.getComplaintContent());
lqw.eq(StringUtils.isNotBlank(bo.getCustomerDemand()), TsComplaintAccept::getCustomerDemand, bo.getCustomerDemand());
lqw.eq(StringUtils.isNotBlank(bo.getFile()), TsComplaintAccept::getFile, bo.getFile());
lqw.eq(bo.getAuditStatus() != null, TsComplaintAccept::getAuditStatus, bo.getAuditStatus());
lqw.eq(StringUtils.isNotBlank(bo.getAuditOpinion()), TsComplaintAccept::getAuditOpinion, bo.getAuditOpinion());
lqw.eq(bo.getAuditUserId() != null, TsComplaintAccept::getAuditUserId, bo.getAuditUserId());
lqw.eq(bo.getAuditTime() != null, TsComplaintAccept::getAuditTime, bo.getAuditTime());
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());
return lqw;
}
/**
* 新增投诉受理单主
*/
@Override
public Boolean insertByBo(TsComplaintAcceptBo bo) {
TsComplaintAccept add = BeanUtil.toBean(bo, TsComplaintAccept.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setAcceptId(add.getAcceptId());
}
return flag;
}
/**
* 修改投诉受理单主
*/
@Override
public Boolean updateByBo(TsComplaintAcceptBo bo) {
TsComplaintAccept update = BeanUtil.toBean(bo, TsComplaintAccept.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(TsComplaintAccept entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除投诉受理单主
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,116 @@
package com.klp.flow.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.flow.domain.bo.TsComplaintTaskBo;
import com.klp.flow.domain.vo.TsComplaintTaskVo;
import com.klp.flow.domain.TsComplaintTask;
import com.klp.flow.mapper.TsComplaintTaskMapper;
import com.klp.flow.service.ITsComplaintTaskService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 各部门投诉代办任务&意见Service业务层处理
*
* @author klp
* @date 2026-06-18
*/
@RequiredArgsConstructor
@Service
public class TsComplaintTaskServiceImpl implements ITsComplaintTaskService {
private final TsComplaintTaskMapper baseMapper;
/**
* 查询各部门投诉代办任务&意见
*/
@Override
public TsComplaintTaskVo queryById(Long taskId){
return baseMapper.selectVoById(taskId);
}
/**
* 查询各部门投诉代办任务&意见列表
*/
@Override
public TableDataInfo<TsComplaintTaskVo> queryPageList(TsComplaintTaskBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<TsComplaintTask> lqw = buildQueryWrapper(bo);
Page<TsComplaintTaskVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询各部门投诉代办任务&意见列表
*/
@Override
public List<TsComplaintTaskVo> queryList(TsComplaintTaskBo bo) {
LambdaQueryWrapper<TsComplaintTask> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<TsComplaintTask> buildQueryWrapper(TsComplaintTaskBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<TsComplaintTask> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getAcceptId() != null, TsComplaintTask::getAcceptId, bo.getAcceptId());
lqw.eq(bo.getDeptId() != null, TsComplaintTask::getDeptId, bo.getDeptId());
lqw.eq(bo.getTaskStatus() != null, TsComplaintTask::getTaskStatus, bo.getTaskStatus());
lqw.eq(StringUtils.isNotBlank(bo.getFillNo()), TsComplaintTask::getFillNo, bo.getFillNo());
lqw.eq(StringUtils.isNotBlank(bo.getDeptOpinion()), TsComplaintTask::getDeptOpinion, bo.getDeptOpinion());
lqw.eq(bo.getFillUserId() != null, TsComplaintTask::getFillUserId, bo.getFillUserId());
lqw.eq(bo.getFillTime() != null, TsComplaintTask::getFillTime, bo.getFillTime());
lqw.eq(StringUtils.isNotBlank(bo.getFillFile()), TsComplaintTask::getFillFile, bo.getFillFile());
return lqw;
}
/**
* 新增各部门投诉代办任务&意见
*/
@Override
public Boolean insertByBo(TsComplaintTaskBo bo) {
TsComplaintTask add = BeanUtil.toBean(bo, TsComplaintTask.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setTaskId(add.getTaskId());
}
return flag;
}
/**
* 修改各部门投诉代办任务&意见
*/
@Override
public Boolean updateByBo(TsComplaintTaskBo bo) {
TsComplaintTask update = BeanUtil.toBean(bo, TsComplaintTask.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(TsComplaintTask entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除各部门投诉代办任务&意见
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,116 @@
package com.klp.flow.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.flow.domain.bo.TsPlanExecuteRelBo;
import com.klp.flow.domain.vo.TsPlanExecuteRelVo;
import com.klp.flow.domain.TsPlanExecuteRel;
import com.klp.flow.mapper.TsPlanExecuteRelMapper;
import com.klp.flow.service.ITsPlanExecuteRelService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 最终方案下发部门及执行反馈Service业务层处理
*
* @author klp
* @date 2026-06-18
*/
@RequiredArgsConstructor
@Service
public class TsPlanExecuteRelServiceImpl implements ITsPlanExecuteRelService {
private final TsPlanExecuteRelMapper baseMapper;
/**
* 查询最终方案下发部门及执行反馈
*/
@Override
public TsPlanExecuteRelVo queryById(Long relId){
return baseMapper.selectVoById(relId);
}
/**
* 查询最终方案下发部门及执行反馈列表
*/
@Override
public TableDataInfo<TsPlanExecuteRelVo> queryPageList(TsPlanExecuteRelBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<TsPlanExecuteRel> lqw = buildQueryWrapper(bo);
Page<TsPlanExecuteRelVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询最终方案下发部门及执行反馈列表
*/
@Override
public List<TsPlanExecuteRelVo> queryList(TsPlanExecuteRelBo bo) {
LambdaQueryWrapper<TsPlanExecuteRel> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<TsPlanExecuteRel> buildQueryWrapper(TsPlanExecuteRelBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<TsPlanExecuteRel> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getAcceptId() != null, TsPlanExecuteRel::getAcceptId, bo.getAcceptId());
lqw.eq(bo.getDeptId() != null, TsPlanExecuteRel::getDeptId, bo.getDeptId());
lqw.eq(bo.getExecuteStatus() != null, TsPlanExecuteRel::getExecuteStatus, bo.getExecuteStatus());
lqw.eq(StringUtils.isNotBlank(bo.getExecuteResult()), TsPlanExecuteRel::getExecuteResult, bo.getExecuteResult());
lqw.eq(StringUtils.isNotBlank(bo.getFeedbackNo()), TsPlanExecuteRel::getFeedbackNo, bo.getFeedbackNo());
lqw.eq(bo.getFeedbackUserId() != null, TsPlanExecuteRel::getFeedbackUserId, bo.getFeedbackUserId());
lqw.eq(bo.getFeedbackTime() != null, TsPlanExecuteRel::getFeedbackTime, bo.getFeedbackTime());
lqw.eq(StringUtils.isNotBlank(bo.getFeedbackFile()), TsPlanExecuteRel::getFeedbackFile, bo.getFeedbackFile());
return lqw;
}
/**
* 新增最终方案下发部门及执行反馈
*/
@Override
public Boolean insertByBo(TsPlanExecuteRelBo bo) {
TsPlanExecuteRel add = BeanUtil.toBean(bo, TsPlanExecuteRel.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setRelId(add.getRelId());
}
return flag;
}
/**
* 修改最终方案下发部门及执行反馈
*/
@Override
public Boolean updateByBo(TsPlanExecuteRelBo bo) {
TsPlanExecuteRel update = BeanUtil.toBean(bo, TsPlanExecuteRel.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(TsPlanExecuteRel entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除最终方案下发部门及执行反馈
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}