package cn.huge.module.cases.service; 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.cases.consts.CaseTaskConsts; import cn.huge.module.cases.domain.dto.MediatorDTO; import cn.huge.module.cases.domain.po.*; 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.CaseFeedbackMapper; import cn.huge.module.cust.dto.CtUnitDTO; import cn.huge.module.cust.dto.CtUserDTO; import cn.huge.module.mediate.constant.CaseBaseConsts; import cn.huge.module.sys.dto.FileIdInfoBaseDTO; import cn.huge.module.sys.dto.FileInfoBaseDTO; import cn.huge.module.sys.dto.FileTypeInfoBaseDTO; 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.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 javax.print.DocFlavor; import java.util.*; import java.util.stream.Collectors; /** * @author wangwh * @version 1.0.0 * @title: 纠纷办理反馈j信息表业务逻辑处理 * @Description 纠纷办理反馈j信息表业务逻辑处理 * @company hugeinfo * @Time 2024-08-30 17:35:02 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) public class CaseFeedbackService extends ServiceImpl { @Autowired private CaseFeedbackMapper mapper; @Autowired private UtilsClientImpl utilsClient; @Autowired private CustClientImpl custClient; @Autowired private SysClientImpl sysClient; @Autowired private CaseFeedbackHisService hisService; @Autowired private CaseInfoUnfoldService unfoldService; @Autowired private CaseTaskService caseTaskService; @Autowired private CaseAssistInfoService caseAssistInfoService; @Autowired private CaseMediatorService caseMediatorService; /** * 更新对象 * * @param entity 对象 */ public void updatecaseFeedback(CaseFeedback entity) { try { mapper.updatecaseFeedback(entity); } catch (Exception e) { log.error("[caseFeedbackService.updatecaseFeedback]调用失败,异常信息:" + e, e); throw new ServiceException("caseFeedbackService.updatecaseFeedback", e); } } /** * 条件更新对象 * * @param entity 对象 * @param terms 条件 */ public void updatecaseFeedbackTerms(CaseFeedback entity, Map terms) { try { mapper.updatecaseFeedbackTerms(entity, terms); } catch (Exception e) { log.error("[caseFeedbackService.updatecaseFeedbackTerms]调用失败,异常信息:" + e, e); throw new ServiceException("caseFeedbackService.updatecaseFeedbackTerms", e); } } /** * 根据编号物理删除 * * @param id 查询条件集合 */ public void deletecaseFeedback(String id) { try { mapper.deletecaseFeedback(id); } catch (Exception e) { log.error("[caseFeedbackService.deletecaseFeedback]调用失败,异常信息:" + e, e); throw new ServiceException("caseFeedbackService.deletecaseFeedback", 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 caseFeedback 实体对象 */ public void savecaseFeedback(CaseFeedback caseFeedback, String userId) { try { Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(caseFeedback.getId())) { caseFeedback.setId(utilsClient.getNewTimeId()); caseFeedback.setCreateTime(nowDate); } caseFeedback.setUpdateTime(nowDate); this.saveOrUpdate(caseFeedback); } catch (Exception e) { log.error("[caseFeedbackService.savecaseFeedback]调用失败,异常信息:" + e, e); throw new ServiceException("caseFeedbackService.savecaseFeedback", e); } } /** * 获取办理信息 * * @param caseId * @param userId * @return */ public Map getFeedbackInfo(String caseId, String caseTaskId, String userId) { Map result = Maps.newHashMap(); CaseInfoUnfold caseInfoUnfold = unfoldService.getById(caseId); CaseTask caseTask = caseTaskService.getById(caseTaskId); // 承办部门查询扩展表 if (CaseTaskConsts.CASE_TASK_TYPE_1 == caseTask.getCaseTaskType()) { if (ObjectUtils.isNotEmpty(caseInfoUnfold)) { result.put("handleUserId", caseInfoUnfold.getMediatorId()); result.put("handleUnitName", caseInfoUnfold.getMediateUnitName()); result.put("handleUserName", caseInfoUnfold.getMediator()); result.put("assistUnitName", caseInfoUnfold.getAssistUnitName()); result.put("acceptTime", caseInfoUnfold.getAcceptTime()); // 查询协助调解员 CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId); QueryWrapper mediatorQueryWrapper = new QueryWrapper<>(); mediatorQueryWrapper.eq("case_id", caseId).eq("unit_id", ctUnitDTO.getId()) .eq("mediator_type", CaseBaseConsts.MEDIATOR_TYPE_1); List caseMediatorList = caseMediatorService.list(mediatorQueryWrapper); if (CollectionUtils.isNotEmpty(caseMediatorList)) { List mediatorDTOList = new ArrayList<>(); for (CaseMediator caseMediator : caseMediatorList) { MediatorDTO mediatorDTO = new MediatorDTO(); mediatorDTO.setMediatorId(caseMediator.getMediatorId()); mediatorDTO.setMediator(caseMediator.getMediatorName()); mediatorDTOList.add(mediatorDTO); } result.put("assistMediatorList", mediatorDTOList); } } } else { // 配合部门查询联合处置信息表 CaseAssistInfo caseAssistInfo = caseAssistInfoService.getByCaseTaskId(caseTaskId); result.put("handleUnitName", caseInfoUnfold.getMediateUnitName()); result.put("handleUserId", caseAssistInfo.getAssistUserId()); result.put("handleUserName", caseAssistInfo.getAssistUserName()); result.put("assistUnitName", caseAssistInfo.getAssistUnitName()); result.put("acceptTime", caseAssistInfo.getAcceptTime()); // 查询协助调解员 CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId); QueryWrapper mediatorQueryWrapper = new QueryWrapper<>(); mediatorQueryWrapper.eq("case_id", caseId).eq("unit_id", ctUnitDTO.getId()) .eq("mediator_type", CaseBaseConsts.MEDIATOR_TYPE_1); List caseMediatorList = caseMediatorService.list(mediatorQueryWrapper); if (CollectionUtils.isNotEmpty(caseMediatorList)) { List mediatorDTOList = new ArrayList<>(); for (CaseMediator caseMediator : caseMediatorList) { MediatorDTO mediatorDTO = new MediatorDTO(); mediatorDTO.setMediatorId(caseMediator.getMediatorId()); mediatorDTO.setMediator(caseMediator.getMediatorName()); mediatorDTOList.add(mediatorDTO); } result.put("assistMediatorList", mediatorDTOList); } } return result; } /** * 获取办理反馈记录 * * @param id 条件 * @return Page */ public Map listFeedback(String id) { try { Map result = new HashMap<>(); CaseInfoUnfold caseInfoUnfold = unfoldService.getById(id); if (ObjectUtils.isNotEmpty(caseInfoUnfold)) { result.put("manager", caseInfoUnfold.getMediator()); } QueryWrapper caseFeedbackQueryWrapper = new QueryWrapper<>(); caseFeedbackQueryWrapper.eq("case_id", id); List caseFeedbackList = mapper.selectList(caseFeedbackQueryWrapper); String ownerIds = caseFeedbackList.stream().map(CaseFeedback::getId).collect(Collectors.joining("','")); ownerIds = "'" + ownerIds + "'"; Map map = new HashMap<>(); map.put("mainId", id); map.put("ownerIds", ownerIds); List fileInfoList = sysClient.listIdInfoByOwnerIdList(map); for (CaseFeedback caseFeedback : caseFeedbackList) { for (FileIdInfoBaseDTO fileInfo : fileInfoList) { if (caseFeedback.getId().equals(fileInfo.getOwnerId())) { caseFeedback.setFileInfoList(fileInfo.getFileList()); } } } result.put("caseFeedbackList", caseFeedbackList); return result; } catch (Exception e) { log.error("[caseFeedbackService.listFeedback]调用失败,异常信息:" + e, e); throw new ServiceException("caseFeedbackService.listFeedback", e); } } public List listFeedback2(String id) { try { Map result = new HashMap<>(); CaseInfoUnfold caseInfoUnfold = unfoldService.getById(id); if (ObjectUtils.isNotEmpty(caseInfoUnfold)) { result.put("manager", caseInfoUnfold.getMediator()); } QueryWrapper caseFeedbackQueryWrapper = new QueryWrapper<>(); caseFeedbackQueryWrapper.eq("case_id", id); List caseFeedbackList = mapper.selectList(caseFeedbackQueryWrapper); String ownerIds = caseFeedbackList.stream().map(CaseFeedback::getId).collect(Collectors.joining("','")); ownerIds = "'" + ownerIds + "'"; Map map = new HashMap<>(); map.put("mainId", id); map.put("ownerIds", ownerIds); List fileInfoList = sysClient.listIdInfoByOwnerIdList(map); for (CaseFeedback caseFeedback : caseFeedbackList) { for (FileIdInfoBaseDTO fileInfo : fileInfoList) { if (caseFeedback.getId().equals(fileInfo.getOwnerId())) { caseFeedback.setFileInfoList(fileInfo.getFileList()); } } } return caseFeedbackList; } catch (Exception e) { log.error("[caseFeedbackService.listFeedback]调用失败,异常信息:" + e, e); throw new ServiceException("caseFeedbackService.listFeedback", e); } } /** * 添加办理反馈 * * @param caseFeedback 实体对象 */ public void saveFeedback(CaseFeedback caseFeedback, String userId) { try { // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); caseFeedback.setHandleUnitId(loginUser.getUnitId()); caseFeedback.setHandleUnitName(loginUser.getUnitName()); caseFeedback.setHandleUserId(loginUser.getId()); caseFeedback.setHandleUserName(loginUser.getTrueName()); Date nowDate = DateUtils.getNowDate(); caseFeedback.setUpdateTime(nowDate); caseFeedback.setCreateTime(nowDate); QueryWrapper caseInfoUnfoldQueryWrapper = new QueryWrapper<>(); caseInfoUnfoldQueryWrapper.eq("id", caseFeedback.getCaseId()); CaseInfoUnfold caseInfoUnfold = unfoldService.getOne(caseInfoUnfoldQueryWrapper); if (caseInfoUnfold.getMediateUnitId() != null && caseInfoUnfold.getMediateUnitId().equals(loginUser.getUnitId())) { caseFeedback.setHandleType(CaseTaskConsts.HANDLE_TYPE_1); } else { caseFeedback.setHandleType(CaseTaskConsts.HANDLE_TYPE_2); } this.save(caseFeedback); } catch (Exception e) { log.error("[caseFeedbackService.savecaseFeedback]调用失败,异常信息:" + e, e); throw new ServiceException("caseFeedbackService.savecaseFeedback", e); } } /** * 添加办理反馈 * * @param caseFeedback 实体对象 */ public void updateFeedback(CaseFeedback caseFeedback, String userId) { try { Date nowDate = DateUtils.getNowDate(); // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); CaseFeedbackHis caseFeedbackHis = new CaseFeedbackHis(); CaseFeedback caseFeedback1 = mapper.selectById(caseFeedback.getId()); BeanUtils.copyProperties(caseFeedback1, caseFeedbackHis); caseFeedbackHis.setId(utilsClient.getNewTimeId()); caseFeedbackHis.setFeedbackId(caseFeedback1.getId()); caseFeedback.setUpdateTime(nowDate); caseFeedback.setCreateTime(nowDate); hisService.save(caseFeedbackHis); caseFeedback.setHandleUnitId(loginUser.getUnitId()); caseFeedback.setHandleUnitName(loginUser.getUnitName()); caseFeedback.setHandleUserId(loginUser.getId()); caseFeedback.setHandleUserName(loginUser.getTrueName()); // caseFeedback.setId(utilsClient.getNewTimeId()); caseFeedback.setHandleType(caseFeedback1.getHandleType()); caseFeedback.setUpdateTime(nowDate); mapper.updateById(caseFeedback); } catch (Exception e) { log.error("[caseFeedbackService.updateFeedback]调用失败,异常信息:" + e, e); throw new ServiceException("caseFeedbackService.updateFeedback", e); } } }