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 { @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 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 listTerms(Map terms) { return mapper.listTerms(terms); } /** * 按条件统计 * * @param terms 条件 * @return long */ public long countTerms(Map terms) { return mapper.countTerms(terms); } /** * 按条件分页查询 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageQuery(PageRequest page, Map terms) { long total = mapper.countTerms(terms); List content = mapper.pageTerms(page, terms); return new PageImpl(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 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 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 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 caseAssistInfoQueryWrapper = new QueryWrapper<>(); caseAssistInfoQueryWrapper.select("assist_unit_name").eq("case_id", caseId).eq("assist_status", 0); List caseAssistInfoList = caseAssistInfoService.list(caseAssistInfoQueryWrapper); String assistUnitNames = caseAssistInfoList.stream().map(CaseAssistInfo::getAssistUnitName).collect(Collectors.joining(",")); if (ObjectUtils.isNotEmpty(assistUnitNames)) { transactResultDTO.setApplyAssistUnitName(assistUnitNames); } // 查询最新的办理意见 QueryWrapper caseFeedbackQueryWrapper = new QueryWrapper<>(); caseFeedbackQueryWrapper.eq("case_id", caseId).eq("handle_type", CaseTaskConsts.HANDLE_TYPE_1) .orderByDesc("create_time"); List caseFeedbackList = caseFeedbackService.list(caseFeedbackQueryWrapper); if (CollectionUtils.isNotEmpty(caseFeedbackList)) { transactResultDTO.setHandleContent(caseFeedbackList.get(0).getHandleContent()); } } Map terms = new HashMap<>(); terms.put("mainId", caseId); terms.put("types", "'" + FileOwnerTypeBaseEnum.OWNER_TYPE_302.getIndex() + "'"); List 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 superviceUnitChoose(String caseId) { try { CaseInfoUnfold caseInfoUnfold = getById(caseId); List 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 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 superviceUnitBatchChoose(List caseIdList) { try { QueryWrapper caseInfoUnfoldQueryWrapper = new QueryWrapper<>(); caseInfoUnfoldQueryWrapper.in("id", caseIdList); List caseInfoUnfoldList = mapper.selectList(caseInfoUnfoldQueryWrapper); List caseSuperviseList = new ArrayList<>(); for (CaseInfoUnfold caseInfoUnfold : caseInfoUnfoldList) { CaseSupervise caseSupervise = new CaseSupervise(); List 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 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 caseTaskQueryWrapper = new QueryWrapper<>(); caseTaskQueryWrapper.eq("case_id", caseInfoUnfold.getId()).eq("status", 1); List 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 pageExtremeCase(PageRequest page, Map terms) { try { long total = mapper.countExtremeCase(terms); List frontPageListYYJDDTOList = mapper.pageExtremeCase(page, terms); return new PageImpl(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 listExtremeCase(PageRequest page, Map terms) { try { List 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 terms = new HashMap<>(); //极端 Map jdTerms = new HashMap<>(); //判断单位类型 terms.put("unitIds", "'" + ctUnitDTO.getId() + "'"); return mapper.countExtremeCase(terms); } }