package cn.huge.module.cases.service;
|
|
import cn.huge.base.common.dto.SelectTermDTO;
|
import cn.huge.base.common.exception.ServiceException;
|
import cn.huge.base.common.utils.DateUtils;
|
import cn.huge.base.common.utils.IdUtils;
|
import cn.huge.base.common.utils.ObjectUtils;
|
import cn.huge.module.analysis.service.AnalysisService;
|
import cn.huge.module.casebook.domain.po.CasebookMediator;
|
import cn.huge.module.cases.consts.CaseTaskConsts;
|
import cn.huge.module.cases.domain.bo.CaseSuperviseBO;
|
import cn.huge.module.cases.domain.dto.FrontPageListWSQDDTO;
|
import cn.huge.module.cases.domain.dto.FrontPageListYYJDDTO;
|
import cn.huge.module.cases.domain.dto.QuiltUnitDTO;
|
import cn.huge.module.cases.domain.po.*;
|
import cn.huge.module.cases.domain.dto.TransactResultDTO;
|
import cn.huge.module.client.api.impl.CustClientImpl;
|
import cn.huge.module.client.api.impl.SysClientImpl;
|
import cn.huge.module.client.api.impl.UtilsClientImpl;
|
import cn.huge.module.cases.dao.mapper.CaseInfoUnfoldMapper;
|
import cn.huge.module.cust.dto.CtUnitDTO;
|
import cn.huge.module.cust.dto.CtUserDTO;
|
import cn.huge.module.mediate.constant.AuditBaseConstsEnum;
|
import cn.huge.module.mediate.constant.CaseBaseConsts;
|
import cn.huge.module.mediate.constant.CaseBaseConstsEnum;
|
import cn.huge.module.sys.constant.FileOwnerTypeBaseEnum;
|
import cn.huge.module.sys.dto.FileIdInfoBaseDTO;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.google.common.collect.Maps;
|
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.el.stream.Stream;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.PageImpl;
|
import org.springframework.data.domain.PageRequest;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* @author wangwh
|
* @version 1.0.0
|
* @title: 纠纷信息扩展表业务逻辑处理
|
* @Description 纠纷信息扩展表业务逻辑处理
|
* @company hugeinfo
|
* @Time 2024-08-27 20:36:04
|
*/
|
@Slf4j
|
@Service
|
@Transactional(rollbackFor = Exception.class)
|
public class CaseInfoUnfoldService extends ServiceImpl<CaseInfoUnfoldMapper, CaseInfoUnfold> {
|
|
@Autowired
|
private CaseInfoUnfoldMapper mapper;
|
|
@Autowired
|
private UtilsClientImpl utilsClient;
|
|
@Autowired
|
private CustClientImpl custClient;
|
|
@Autowired
|
private CaseAssistApplyService assistApplyService;
|
|
@Autowired
|
private SysClientImpl sysClient;
|
|
@Autowired
|
private CaseTaskService caseTaskService;
|
|
@Autowired
|
private CaseAssistInfoService caseAssistInfoService;
|
|
@Autowired
|
private CaseFeedbackService caseFeedbackService;
|
@Autowired
|
private CaseWindupApplyService caseWindupApplyService;
|
|
@Autowired
|
private CaseMediatorService caseMediatorService;
|
|
@Autowired
|
private AnalysisService analysisService;
|
|
/**
|
* 更新对象
|
*
|
* @param entity 对象
|
*/
|
public void updateCaseInfoUnfold(CaseInfoUnfold entity) {
|
try {
|
mapper.updateCaseInfoUnfold(entity);
|
} catch (Exception e) {
|
log.error("[CaseInfoUnfoldService.updateCaseInfoUnfold]调用失败,异常信息:" + e, e);
|
throw new ServiceException("CaseInfoUnfoldService.updateCaseInfoUnfold", e);
|
}
|
}
|
|
/**
|
* 条件更新对象
|
*
|
* @param entity 对象
|
* @param terms 条件
|
*/
|
public void updateCaseInfoUnfoldTerms(CaseInfoUnfold entity, Map<String, Object> terms) {
|
try {
|
mapper.updateCaseInfoUnfoldTerms(entity, terms);
|
} catch (Exception e) {
|
log.error("[CaseInfoUnfoldService.updateCaseInfoUnfoldTerms]调用失败,异常信息:" + e, e);
|
throw new ServiceException("CaseInfoUnfoldService.updateCaseInfoUnfoldTerms", e);
|
}
|
}
|
|
/**
|
* 根据编号物理删除
|
*
|
* @param id 查询条件集合
|
*/
|
public void deleteCaseInfoUnfold(String id) {
|
try {
|
mapper.deleteCaseInfoUnfold(id);
|
} catch (Exception e) {
|
log.error("[CaseInfoUnfoldService.deleteCaseInfoUnfold]调用失败,异常信息:" + e, e);
|
throw new ServiceException("CaseInfoUnfoldService.deleteCaseInfoUnfold", e);
|
}
|
}
|
|
/**
|
* 按条件查询
|
*
|
* @param terms 条件
|
* @return List
|
*/
|
public List<CaseInfoUnfold> listTerms(Map<String, Object> terms) {
|
return mapper.listTerms(terms);
|
}
|
|
/**
|
* 按条件统计
|
*
|
* @param terms 条件
|
* @return long
|
*/
|
public long countTerms(Map<String, Object> terms) {
|
return mapper.countTerms(terms);
|
}
|
|
/**
|
* 按条件分页查询
|
*
|
* @param page 分页对象
|
* @param terms 条件
|
* @return Page
|
*/
|
public Page<CaseInfoUnfold> pageQuery(PageRequest page, Map<String, Object> terms) {
|
long total = mapper.countTerms(terms);
|
List<CaseInfoUnfold> content = mapper.pageTerms(page, terms);
|
return new PageImpl<CaseInfoUnfold>(content, page, total);
|
}
|
|
/**
|
* 新增或更新对象
|
*
|
* @param caseInfoUnfold 实体对象
|
*/
|
public void saveCaseInfoUnfold(CaseInfoUnfold caseInfoUnfold) {
|
try {
|
Date nowDate = DateUtils.getNowDate();
|
// 判断是否新增
|
if (IdUtils.checkNewId(caseInfoUnfold.getId())) {
|
caseInfoUnfold.setId(utilsClient.getNewTimeId());
|
caseInfoUnfold.setCreateTime(nowDate);
|
}
|
caseInfoUnfold.setUpdateTime(nowDate);
|
this.saveOrUpdate(caseInfoUnfold);
|
} catch (Exception e) {
|
log.error("[CaseInfoUnfoldService.saveCaseInfoUnfold]调用失败,异常信息:" + e, e);
|
throw new ServiceException("CaseInfoUnfoldService.saveCaseInfoUnfold", e);
|
}
|
}
|
|
/**
|
* PC端-选择经办人
|
*
|
* @param caseId 纠纷编号
|
* @param caseTaskId 办理反馈任务编号
|
* @param userId 条件
|
*/
|
public void choosePrincipal(String caseId, String caseTaskId, String userId) {
|
try {
|
Date nowDate = DateUtils.getNowDate();
|
// 获取经办人信息
|
CtUserDTO ctUserDTO = custClient.clientGetUser(userId);
|
CaseTask caseTask = caseTaskService.getById(caseTaskId);
|
// 承办部门,更新扩展表
|
if (CaseTaskConsts.CASE_TASK_TYPE_1 == caseTask.getCaseTaskType()) {
|
CaseInfoUnfold CaseInfoUnfold = new CaseInfoUnfold();
|
CaseInfoUnfold.setId(caseId);
|
CaseInfoUnfold.setMediatorId(ctUserDTO.getId());
|
CaseInfoUnfold.setMediator(ctUserDTO.getTrueName());
|
CaseInfoUnfold.setMediatorMobile(ctUserDTO.getMobile());
|
CaseInfoUnfold.setUpdateTime(nowDate);
|
mapper.updateCaseInfoUnfold(CaseInfoUnfold);
|
// 保存调解员信息
|
QueryWrapper<CaseMediator> mediatorQueryWrapper = new QueryWrapper<>();
|
mediatorQueryWrapper.eq("case_id", caseId).eq("mediator_type", CaseBaseConsts.MEDIATOR_TYPE_0)
|
.eq("unit_id", ctUserDTO.getUnitId());
|
CaseMediator caseMediator = caseMediatorService.getOne(mediatorQueryWrapper);
|
if (ObjectUtils.isEmpty(caseMediator)) {
|
caseMediator = new CaseMediator();
|
caseMediator.setId(utilsClient.getNewTimeId());
|
caseMediator.setCaseId(caseId);
|
caseMediator.setMediatorType(CaseBaseConsts.MEDIATOR_TYPE_0);
|
caseMediator.setMediatorId(ctUserDTO.getId());
|
caseMediator.setMediatorName(ctUserDTO.getTrueName());
|
caseMediator.setUnitId(ctUserDTO.getUnitId());
|
caseMediator.setUnitName(ctUserDTO.getUnitName());
|
caseMediator.setCreateTime(nowDate);
|
caseMediator.setUpdateTime(nowDate);
|
caseMediatorService.save(caseMediator);
|
} else {
|
caseMediator.setMediatorId(ctUserDTO.getId());
|
caseMediator.setMediatorName(ctUserDTO.getTrueName());
|
caseMediator.setUnitId(ctUserDTO.getUnitId());
|
caseMediator.setUnitName(ctUserDTO.getUnitName());
|
caseMediator.setUpdateTime(nowDate);
|
caseMediatorService.updateCaseMediator(caseMediator);
|
}
|
} else {
|
// 配合部门,更新联合处置信息表
|
CaseAssistInfo caseAssistInfo = caseAssistInfoService.getByCaseTaskId(caseTaskId);
|
caseAssistInfo.setAssistUserId(ctUserDTO.getId());
|
caseAssistInfo.setAssistUserName(ctUserDTO.getTrueName());
|
caseAssistInfo.setUpdateTime(nowDate);
|
caseAssistInfoService.updateCaseAssistInfo(caseAssistInfo);
|
// 保存调解员信息
|
QueryWrapper<CaseMediator> mediatorQueryWrapper = new QueryWrapper<>();
|
mediatorQueryWrapper.eq("case_id", caseId).eq("mediator_type", CaseBaseConsts.MEDIATOR_TYPE_1)
|
.eq("unit_id", ctUserDTO.getUnitId());
|
CaseMediator caseMediator = caseMediatorService.getOne(mediatorQueryWrapper);
|
if (ObjectUtils.isEmpty(caseMediator)) {
|
caseMediator = new CaseMediator();
|
caseMediator.setId(utilsClient.getNewTimeId());
|
caseMediator.setCaseId(caseId);
|
caseMediator.setMediatorType(CaseBaseConsts.MEDIATOR_TYPE_1);
|
caseMediator.setMediatorId(ctUserDTO.getId());
|
caseMediator.setMediatorName(ctUserDTO.getTrueName());
|
caseMediator.setUnitId(ctUserDTO.getUnitId());
|
caseMediator.setUnitName(ctUserDTO.getUnitName());
|
caseMediator.setCreateTime(nowDate);
|
caseMediator.setUpdateTime(nowDate);
|
caseMediatorService.save(caseMediator);
|
} else {
|
caseMediator.setMediatorId(ctUserDTO.getId());
|
caseMediator.setMediatorName(ctUserDTO.getTrueName());
|
caseMediator.setUnitId(ctUserDTO.getUnitId());
|
caseMediator.setUnitName(ctUserDTO.getUnitName());
|
caseMediator.setUpdateTime(nowDate);
|
caseMediatorService.updateCaseMediator(caseMediator);
|
}
|
}
|
} catch (Exception e) {
|
log.error("[CaseInfoUnfoldService.choosePrincipal]调用失败,异常信息:" + e, e);
|
throw new ServiceException("CaseInfoUnfoldService.choosePrincipal", e);
|
}
|
}
|
|
/**
|
* PC端-删除经办人
|
*
|
* @param caseId 对象
|
*/
|
public void deletePrincipal(String caseId, String userId) {
|
try {
|
mapper.deletePrincipal(caseId);
|
CtUserDTO loginUser = custClient.clientGetUser(userId);
|
QueryWrapper<CaseMediator> mediatorQueryWrapper = new QueryWrapper<>();
|
mediatorQueryWrapper.eq("case_id", caseId)
|
.eq("unit_id", loginUser.getUnitId());
|
caseMediatorService.remove(mediatorQueryWrapper);
|
} catch (Exception e) {
|
log.error("[CaseInfoUnfoldService.choosePrincipal]调用失败,异常信息:" + e, e);
|
throw new ServiceException("CaseInfoUnfoldService.choosePrincipal", e);
|
}
|
}
|
|
public TransactResultDTO getTransactResult(String caseId) {
|
try {
|
//查询办理结果信息
|
CaseInfoUnfold caseInfoUnfold = this.getById(caseId);
|
CaseWindupApply caseWindupApply = caseWindupApplyService.getByCaseId(caseId);
|
if (ObjectUtils.isNotEmpty(caseInfoUnfold)) {
|
// if (StringUtils.isNotBlank(caseInfoUnfold.getMediResult())) {
|
TransactResultDTO transactResultDTO = new TransactResultDTO();
|
if (ObjectUtils.isNotEmpty(caseInfoUnfold)) {
|
BeanUtils.copyProperties(caseInfoUnfold, transactResultDTO);
|
QueryWrapper<CaseAssistInfo> caseAssistInfoQueryWrapper = new QueryWrapper<>();
|
caseAssistInfoQueryWrapper.select("assist_unit_name").eq("case_id", caseId).eq("assist_status", 0);
|
List<CaseAssistInfo> caseAssistInfoList = caseAssistInfoService.list(caseAssistInfoQueryWrapper);
|
String assistUnitNames = caseAssistInfoList.stream().map(CaseAssistInfo::getAssistUnitName).collect(Collectors.joining(","));
|
|
if (ObjectUtils.isNotEmpty(assistUnitNames)) {
|
transactResultDTO.setApplyAssistUnitName(assistUnitNames);
|
}
|
|
// 查询最新的办理意见
|
QueryWrapper<CaseFeedback> caseFeedbackQueryWrapper = new QueryWrapper<>();
|
caseFeedbackQueryWrapper.eq("case_id", caseId).eq("handle_type", CaseTaskConsts.HANDLE_TYPE_1)
|
.orderByDesc("create_time");
|
List<CaseFeedback> caseFeedbackList = caseFeedbackService.list(caseFeedbackQueryWrapper);
|
if (CollectionUtils.isNotEmpty(caseFeedbackList)) {
|
transactResultDTO.setHandleContent(caseFeedbackList.get(0).getHandleContent());
|
}
|
}
|
Map<String, Object> terms = new HashMap<>();
|
terms.put("mainId", caseId);
|
terms.put("types", "'" + FileOwnerTypeBaseEnum.OWNER_TYPE_302.getIndex() + "'");
|
List<FileIdInfoBaseDTO> fileIdInfoBaseDTOList = sysClient.listIdInfoByOwnerIdList(terms);
|
if (ObjectUtils.isNotEmpty(fileIdInfoBaseDTOList)) {
|
transactResultDTO.setFileInfoBaseDTOList(fileIdInfoBaseDTOList.get(0).getFileList());
|
}
|
if (ObjectUtils.isNotEmpty(caseWindupApply)) {
|
transactResultDTO.setCaseResultId(caseWindupApply.getId());
|
}
|
return transactResultDTO;
|
} else {
|
return null;
|
}
|
// } else {
|
// return null;
|
// }
|
} catch (Exception e) {
|
log.error("[CaseInfoUnfoldService.getTransactResult]调用失败,异常信息:" + e, e);
|
throw new ServiceException("CaseInfoUnfoldService.getTransactResult", e);
|
}
|
}
|
|
/**
|
* 督办-查询组织
|
*
|
* @param caseId
|
* @return
|
*/
|
public List<SelectTermDTO> superviceUnitChoose(String caseId) {
|
try {
|
CaseInfoUnfold caseInfoUnfold = getById(caseId);
|
List<String> unitIdList = new ArrayList<>();
|
unitIdList.add(caseInfoUnfold.getBelongUnitId());
|
if (StringUtils.isNotBlank(caseInfoUnfold.getAssistUnitId())) {
|
unitIdList.addAll(Arrays.stream(caseInfoUnfold.getAssistUnitId().split(",")).map(String::valueOf).collect(Collectors.toList()));
|
}
|
List<SelectTermDTO> selectTermDTOList = new ArrayList<>();
|
log.info("xsdunitIdList:{}", unitIdList);
|
for (String unitId : unitIdList) {
|
CtUnitDTO ctUnitDTO = custClient.getUnitById(unitId);
|
SelectTermDTO unitSelectTerm = new SelectTermDTO();
|
unitSelectTerm.setValue(ctUnitDTO.getId());
|
unitSelectTerm.setLabel(ctUnitDTO.getUnitName());
|
unitSelectTerm.setParentId(ctUnitDTO.getParentId());
|
unitSelectTerm.setCheckable(true);
|
selectTermDTOList.add(unitSelectTerm);
|
}
|
return selectTermDTOList;
|
} catch (Exception e) {
|
log.error("[CaseInfoUnfoldService.superviceUnitChoose] 调用失败,异常信息:" + e, e);
|
throw new ServiceException("CaseInfoUnfoldService.superviceUnitChoose", e);
|
}
|
}
|
|
/**
|
* 督办-批量查询组织
|
*
|
* @param caseIdList
|
* @return
|
*/
|
public List<CaseSupervise> superviceUnitBatchChoose(List<String> caseIdList) {
|
try {
|
QueryWrapper<CaseInfoUnfold> caseInfoUnfoldQueryWrapper = new QueryWrapper<>();
|
caseInfoUnfoldQueryWrapper.in("id", caseIdList);
|
List<CaseInfoUnfold> caseInfoUnfoldList = mapper.selectList(caseInfoUnfoldQueryWrapper);
|
List<CaseSupervise> caseSuperviseList = new ArrayList<>();
|
for (CaseInfoUnfold caseInfoUnfold : caseInfoUnfoldList) {
|
CaseSupervise caseSupervise = new CaseSupervise();
|
List<QuiltUnitDTO> quiltUnitDTOList = new ArrayList<>();
|
caseSupervise.setCaseId(caseInfoUnfold.getId());
|
//添加案件的受理组织
|
if (StringUtils.isNotBlank(caseInfoUnfold.getMediateUnitId())) {
|
CtUnitDTO ctUnitDTO = custClient.getUnitById(caseInfoUnfold.getMediateUnitId());
|
QuiltUnitDTO quiltUnitDTO = new QuiltUnitDTO();
|
quiltUnitDTO.setQuiltUnitId(ctUnitDTO.getId());
|
quiltUnitDTO.setQuiltUnitName(ctUnitDTO.getUnitName());
|
quiltUnitDTOList.add(quiltUnitDTO);
|
}
|
//添加案件的配合组织
|
if (StringUtils.isNotBlank(caseInfoUnfold.getAssistUnitId())) {
|
List<String> unidList = Arrays.stream(caseInfoUnfold.getAssistUnitId().split(",")).map(String::valueOf).collect(Collectors.toList());
|
for (String id : unidList) {
|
CtUnitDTO ctUnitDTO = custClient.getUnitById(id);
|
QuiltUnitDTO quiltUnitDTO = new QuiltUnitDTO();
|
quiltUnitDTO.setQuiltUnitId(ctUnitDTO.getId());
|
quiltUnitDTO.setQuiltUnitName(ctUnitDTO.getUnitName());
|
quiltUnitDTOList.add(quiltUnitDTO);
|
}
|
}
|
//添加案件当前未完成所有任务的(受理组织和配合组织都为空的话说明只有一案件还没受理)
|
if (CollectionUtils.isEmpty(quiltUnitDTOList)) {
|
QueryWrapper<CaseTask> caseTaskQueryWrapper = new QueryWrapper<>();
|
caseTaskQueryWrapper.eq("case_id", caseInfoUnfold.getId()).eq("status", 1);
|
List<CaseTask> caseTaskList = caseTaskService.list(caseTaskQueryWrapper);
|
for (CaseTask caseTask : caseTaskList) {
|
CtUnitDTO ctUnitDTO = custClient.getUnitById(caseTask.getCandeUnitId());
|
QuiltUnitDTO quiltUnitDTO = new QuiltUnitDTO();
|
quiltUnitDTO.setQuiltUnitId(ctUnitDTO.getId());
|
quiltUnitDTO.setQuiltUnitName(ctUnitDTO.getUnitName());
|
quiltUnitDTOList.add(quiltUnitDTO);
|
}
|
}
|
//添加批量督办信息
|
if (CollectionUtils.isNotEmpty(quiltUnitDTOList)) {
|
caseSupervise.setQuiltUnitDTOList(quiltUnitDTOList);
|
caseSuperviseList.add(caseSupervise);
|
}
|
}
|
return caseSuperviseList;
|
} catch (Exception e) {
|
log.error("[CaseInfoUnfoldService.superviceUnitBatchChoose] 调用失败,异常信息:" + e, e);
|
throw new ServiceException("CaseInfoUnfoldService.superviceUnitBatchChoose", e);
|
}
|
}
|
|
|
/**
|
* 首页-扬言极端事件分页查询
|
*
|
* @param page 分页对象
|
* @param terms 条件
|
* @return Page
|
*/
|
public Page<FrontPageListYYJDDTO> pageExtremeCase(PageRequest page, Map<String, Object> terms) {
|
try {
|
long total = mapper.countExtremeCase(terms);
|
List<FrontPageListYYJDDTO> frontPageListYYJDDTOList = mapper.pageExtremeCase(page, terms);
|
return new PageImpl<FrontPageListYYJDDTO>(frontPageListYYJDDTOList, page, total);
|
} catch (Exception e) {
|
log.error("[CaseInfoUnfoldService.pageExtremeCase]调用失败,异常信息:" + e, e);
|
throw new ServiceException("CaseInfoUnfoldService.pageExtremeCase", e);
|
}
|
}
|
|
/**
|
* 首页-扬言极端事件查询
|
*
|
* @param page 分页对象
|
* @param terms 条件
|
* @return Page
|
*/
|
public List<FrontPageListYYJDDTO> listExtremeCase(PageRequest page, Map<String, Object> terms) {
|
try {
|
List<FrontPageListYYJDDTO> frontPageListYYJDDTOList = mapper.pageExtremeCase(page, terms);
|
return frontPageListYYJDDTOList;
|
} catch (Exception e) {
|
log.error("[CaseInfoUnfoldService.pageExtremeCase]调用失败,异常信息:" + e, e);
|
throw new ServiceException("CaseInfoUnfoldService.pageExtremeCase", e);
|
}
|
}
|
|
/**
|
* 按条件统计
|
*
|
* @param ctUnitDTO
|
* @return long
|
*/
|
public long countExtremeCase(CtUnitDTO ctUnitDTO) {
|
Map<String, Object> terms = new HashMap<>();
|
//极端
|
Map<String, Object> jdTerms = new HashMap<>();
|
//判断单位类型
|
terms.put("unitIds", "'" + ctUnitDTO.getId() + "'");
|
return mapper.countExtremeCase(terms);
|
}
|
}
|