From ab977fd24a8bd4cac55ed132f2648fc2131b0dda Mon Sep 17 00:00:00 2001 From: zhouxiantao <1026371446@qq.com> Date: Mon, 23 Sep 2024 09:33:14 +0800 Subject: [PATCH] 态势分析-区域 --- dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java | 1124 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 937 insertions(+), 187 deletions(-) diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java index f7afc54..448a1f0 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java @@ -1,57 +1,59 @@ 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.domain.dto.RegisterSaveDTO; -import cn.huge.module.cases.domain.po.CaseAgent; -import cn.huge.module.cases.domain.po.CaseInfoUnfold; -import cn.huge.module.cases.domain.po.CasePerson; +import cn.huge.base.common.utils.*; +import cn.huge.module.cases.domain.dto.*; + +import cn.huge.module.cases.domain.dto.CaseAreaDTO; +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.CaseInfoMapper; -import cn.huge.module.cases.domain.po.CaseInfo; import cn.huge.module.constant.BaseConsts; -import cn.huge.module.constant.CaseBaseConsts; -import cn.huge.module.constant.CaseBaseConstsEnum; +import cn.huge.module.cust.dto.PaUserDTO; +import cn.huge.module.mediate.constant.*; import cn.huge.module.cust.dto.CtUserDTO; -import cn.huge.module.draft.domain.po.CasedraftAgent; -import cn.huge.module.draft.domain.po.CasedraftInfo; -import cn.huge.module.draft.domain.po.CasedraftPerson; import cn.huge.module.draft.service.CasedraftInfoService; +import cn.huge.module.mediate.constant.CaseProcessBaseConstsEnum; +import cn.huge.module.mediate.dto.WechatBindCaseDTO; +import cn.huge.module.sys.dto.FileIdTypeInfoBaseDTO; +import cn.huge.module.sys.dto.QueAddrBaseDTO; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; 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.annotation.PostConstruct; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.nio.file.Files; +import java.util.*; +import java.util.stream.Collectors; /** + * @author wangwh + * @version 1.0.0 * @title: 纠纷信息主表业务逻辑处理 * @Description 纠纷信息主表业务逻辑处理 * @company hugeinfo - * @author wangwh * @Time 2024-08-27 10:00:57 - * @version 1.0.0 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) -public class CaseInfoService extends ServiceImpl<CaseInfoMapper, CaseInfo>{ +public class CaseInfoService extends ServiceImpl<CaseInfoMapper, CaseInfo> { @Autowired private CaseInfoMapper mapper; @@ -71,103 +73,155 @@ @Autowired private CustClientImpl custClient; + @Autowired + private CaseInfoUnfoldService caseInfoUnfoldService; + + @Autowired + private SysClientImpl sysClient; + + @Autowired + private CaseTaskService caseTaskService; + + @Autowired + private CaseEvaluateService caseEvaluateService; + + @Autowired + private CaseAreaService caseAreaService; + + /** - * 更新对象 - * @param entity 对象 - */ - public void updateCaseInfo(CaseInfo entity){ - try{ + * 更新对象 + * + * @param entity 对象 + */ + public void updateCaseInfo(CaseInfo entity) { + try { mapper.updateCaseInfo(entity); - }catch (Exception e){ - log.error("[CaseInfoService.updateCaseInfo]调用失败,异常信息:"+e, e); + } catch (Exception e) { + log.error("[CaseInfoService.updateCaseInfo]调用失败,异常信息:" + e, e); throw new ServiceException("CaseInfoService.updateCaseInfo", e); } } /** - * 条件更新对象 - * @param entity 对象 - * @param terms 条件 - */ - public void updateCaseInfoTerms(CaseInfo entity, Map<String, Object> terms){ - try{ + * 批量更新对象 + * + * @param entity 对象 + * @param caseIdList + */ + public void updateCaseInfoList(CaseInfo entity, List<String> caseIdList) { + try { + mapper.updateCaseInfoList(entity, caseIdList); + } catch (Exception e) { + log.error("[CaseInfoService.updateCaseInfoList]调用失败,异常信息:" + e, e); + throw new ServiceException("CaseInfoService.updateCaseInfoList", e); + } + } + + /** + * 条件更新对象 + * + * @param entity 对象 + * @param terms 条件 + */ + public void updateCaseInfoTerms(CaseInfo entity, Map<String, Object> terms) { + try { mapper.updateCaseInfoTerms(entity, terms); - }catch (Exception e){ - log.error("[CaseInfoService.updateCaseInfoTerms]调用失败,异常信息:"+e, e); + } catch (Exception e) { + log.error("[CaseInfoService.updateCaseInfoTerms]调用失败,异常信息:" + e, e); throw new ServiceException("CaseInfoService.updateCaseInfoTerms", e); } } /** - * 根据编号物理删除 - * @param id 查询条件集合 - */ - public void deleteCaseInfo(String id){ - try{ + * 根据编号物理删除 + * + * @param id 查询条件集合 + */ + public void deleteCaseInfo(String id) { + try { mapper.deleteCaseInfo(id); - }catch (Exception e){ - log.error("[CaseInfoService.deleteCaseInfo]调用失败,异常信息:"+e, e); + } catch (Exception e) { + log.error("[CaseInfoService.deleteCaseInfo]调用失败,异常信息:" + e, e); throw new ServiceException("CaseInfoService.deleteCaseInfo", e); } } /** - * 按条件查询 - * @param terms 条件 - * @return List - */ - public List<CaseInfo> listTerms(Map<String, Object> terms){ + * 按条件查询 + * + * @param terms 条件 + * @return List + */ + public List<CaseInfo> listTerms(Map<String, Object> terms) { return mapper.listTerms(terms); } /** - * 按条件统计 - * @param terms 条件 - * @return long - */ - public long countTerms(Map<String, Object> terms){ + * 按条件统计 + * + * @param terms 条件 + * @return long + */ + public long countTerms(Map<String, Object> terms) { return mapper.countTerms(terms); } /** - * 按条件分页查询 - * @param page 分页对象 - * @param terms 条件 - * @return Page - */ - public Page<CaseInfo> pageQuery(PageRequest page, Map<String, Object> terms){ + * 按条件分页查询 + * + * @param page 分页对象 + * @param terms 条件 + * @return Page + */ + public Page<CaseInfo> pageQuery(PageRequest page, Map<String, Object> terms) { long total = mapper.countTerms(terms); List<CaseInfo> content = mapper.pageTerms(page, terms); return new PageImpl<CaseInfo>(content, page, total); } /** - * 新增或更新对象 - * @param caseInfo 实体对象 - */ - public void saveCaseInfo(CaseInfo caseInfo){ - try{ + * 按条件分页查询 + * + * @param page 分页对象 + * @param terms 条件 + * @return Page + */ + public Page<CaseRegisterDTO> pageQueryRegister(PageRequest page, Map<String, Object> terms) { + long total = mapper.countTermsCaseRegister(terms); + List<CaseRegisterDTO> content = mapper.pageTermsCaseRegister(page, terms); + return new PageImpl<CaseRegisterDTO>(content, page, total); + } + + /** + * 新增或更新对象 + * + * @param caseInfo 实体对象 + */ + public void saveCaseInfo(CaseInfo caseInfo) { + try { Date nowDate = DateUtils.getNowDate(); // 判断是否新增 - if (IdUtils.checkNewId(caseInfo.getId())){ + if (IdUtils.checkNewId(caseInfo.getId())) { caseInfo.setId(utilsClient.getNewTimeId()); caseInfo.setCreateTime(nowDate); } caseInfo.setUpdateTime(nowDate); this.saveOrUpdate(caseInfo); - }catch (Exception e){ - log.error("[CaseInfoService.saveCaseInfo]调用失败,异常信息:"+e, e); + } catch (Exception e) { + log.error("[CaseInfoService.saveCaseInfo]调用失败,异常信息:" + e, e); throw new ServiceException("CaseInfoService.saveCaseInfo", e); } } /** * PC端-纠纷登记-保存纠纷信息-正常案件 + * * @param registerSaveDTO 纠纷信息 - * @param userId 用户编号 + * @param userId 用户编号 * @return String 纠纷编号 */ - public String caseRegister(RegisterSaveDTO registerSaveDTO, String userId){ + public String caseRegister(RegisterSaveDTO registerSaveDTO, String userId) { try { // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); @@ -177,183 +231,879 @@ StringBuffer defendants = new StringBuffer(); StringBuffer pagents = new StringBuffer(); StringBuffer dagents = new StringBuffer(); - int peopleNum = 0; - + //复制填装案件表 CaseInfo caseInfo = new CaseInfo(); - CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold(); BeanUtils.copyProperties(registerSaveDTO, caseInfo); - caseInfo.setId(utilsClient.getNewTimeId()); - caseInfo.setInputUnitId(loginUser.getUnitId()); - caseInfo.setInputUnitName(loginUser.getUnitName()); - caseInfo.setInputUserId(loginUser.getId()); - caseInfo.setInputUserName(loginUser.getTrueName()); - caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1); - caseInfo.setCreateTime(nowDate); caseInfo.setUpdateTime(nowDate); - caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0); - //todo case_ref生成、case_title生成 - - caseInfoUnfold.setId(utilsClient.getNewTimeId()); - caseInfoUnfold.setCaseId(caseInfo.getId()); - caseInfoUnfold.setCreateTime(nowDate); - caseInfoUnfold.setUpdateTime(nowDate); - // 常规登记-保存当事人 - peopleNum += this.saveCasePerson(registerSaveDTO, plaintiffs, pagents, defendants, dagents); - caseInfo.setPeopleNum(peopleNum); + this.saveCasePerson(registerSaveDTO, plaintiffs, pagents, defendants, dagents); caseInfo.setPlaintiffs(plaintiffs.toString()); caseInfo.setPagents(pagents.toString()); caseInfo.setDefendants(defendants.toString()); caseInfo.setDagents(dagents.toString()); - //todo 流程接口修改status、status_name、process、process_name - //todo 自行受理 - if(1 == registerSaveDTO.getIsSelfAccept()){ - caseInfoUnfold.setMediateUnitId(loginUser.getUnitId()); - caseInfoUnfold.setMediateUnitName(loginUser.getUnitName()); + caseInfo.setCaseRef(utilsClient.createCaseRef()); + caseInfo.setCanal(CaseBaseConstsEnum.CASE_CANAL_1.getIndex()); + caseInfo.setCanalName(CaseBaseConstsEnum.CASE_CANAL_1.getDes()); + caseInfo.setVisitWay(CaseBaseConstsEnum.VISIT_WAY_1.getIndex()); + caseInfo.setVisitWayName(CaseBaseConstsEnum.VISIT_WAY_1.getDes()); + //todo case_title生成、经纬度转换 + if (0 == registerSaveDTO.getOperateType()) { + caseInfo.setInputUnitId(loginUser.getUnitId()); + caseInfo.setInputUnitName(loginUser.getUnitName()); + caseInfo.setInputUserId(loginUser.getId()); + caseInfo.setInputUserName(loginUser.getTrueName()); + caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1); + caseInfo.setCreateTime(nowDate); + caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0); + //默认添加省市 + caseInfo.setQueProv("19"); + caseInfo.setQueProvName("广东省"); + caseInfo.setQueCity("1601"); + caseInfo.setQueCityName("广州市"); + // 删除草稿案件 + if (1 == registerSaveDTO.getIsDraft()) { + draftInfoService.removeDraftInfo(registerSaveDTO.getId()); + } + // 新增纠纷信息 + this.save(caseInfo); + // 新增纠纷信息扩展表 + CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold(); + caseInfoUnfold.setId(caseInfo.getId()); + caseInfoUnfold.setCreateTime(nowDate); + caseInfoUnfold.setUpdateTime(nowDate); + caseInfoUnfoldService.save(caseInfoUnfold); + // 启动工作流 + // 判断是否自行受理 + if (1 == registerSaveDTO.getIsSelfAccept()) { + // 自行受理流程 + return caseTaskService.webStartFlowZXSL(caseInfo, loginUser); + } else { + // 自动调度流程 + caseTaskService.webStartFlowLFDJ(caseInfo); + } + } else if (1 == registerSaveDTO.getOperateType()) { + this.updateById(caseInfo); } - - this.saveOrUpdate(caseInfo); - // 删除草稿案件 - if(1 == registerSaveDTO.getIsDraft() ){ - draftInfoService.removeDraftInfo(registerSaveDTO.getId()); - } - return registerSaveDTO.getId(); - }catch (Exception e){ - log.error("service方法[CaseInfoService.caseRegister]调用异常:"+e, e); + } catch (Exception e) { + log.error("service方法[CaseInfoService.caseRegister]调用异常:" + e, e); throw new ServiceException("CaseInfoService.caseRegister", e); } } /** * pc端-常规登记-保存正式案件-保存人员信息 + * * @param registerSaveDTO 纠纷信息 - * @param plaintiffs 申请人 - * @param pagents 申请人代理人 - * @param defendants 被申请人 - * @param dagents 被申请人代理人 + * @param plaintiffs 申请人 + * @param pagents 申请人代理人 + * @param defendants 被申请人 + * @param dagents 被申请人代理人 * @return int */ - private int saveCasePerson(RegisterSaveDTO registerSaveDTO, StringBuffer plaintiffs, StringBuffer pagents, - StringBuffer defendants, StringBuffer dagents){ - int peopleNum = 0; + private void saveCasePerson(RegisterSaveDTO registerSaveDTO, StringBuffer plaintiffs, StringBuffer pagents, + StringBuffer defendants, StringBuffer dagents) { + + Date now = DateUtils.getNowDate(); + + List<CasePerson> personList = registerSaveDTO.getPersonList(); + List<CaseAgent> agentList = registerSaveDTO.getAgentList(); + + //查出已存在的当事人和代理人编号 + List<String> oldPersonIdList = personService.listIdByCaseId(registerSaveDTO.getId()); + List<String> oldAgentIdList = agentService.listIdByCaseId(registerSaveDTO.getId()); + String oldPersonIds = oldPersonIdList.stream().map(String::valueOf).collect(Collectors.joining(",")); + String oldAgentIds = oldAgentIdList.stream().map(String::valueOf).collect(Collectors.joining(",")); List<String> newPersonIdList = new ArrayList<>(); List<String> newAgentIdList = new ArrayList<>(); - // 保存申请人 - List<CasePerson> plaintPersonList = registerSaveDTO.getPlaintiffList(); - if (CollectionUtils.isNotEmpty(plaintPersonList)) { - for (CasePerson casePerson : plaintPersonList) { + + if (CollectionUtils.isNotEmpty(personList)) { + for (CasePerson casePerson : personList) { newPersonIdList.add(casePerson.getId()); casePerson.setCaseId(registerSaveDTO.getId()); - casePerson.setPerType(CaseBaseConstsEnum.PERSON_TYPE_1.getIndex()); - casePerson.setPerTypeName(CaseBaseConstsEnum.PERSON_TYPE_1.getDes()); casePerson.setCustId(registerSaveDTO.getCustId()); - casePerson.setCreateTime(registerSaveDTO.getUpdateTime()); - casePerson.setUpdateTime(registerSaveDTO.getUpdateTime()); - //todo 绑定当事人小程序 - - personService.saveOrUpdate(casePerson); - - if (StringUtils.isNotEmpty(plaintiffs.toString())) { - plaintiffs.append(BaseConsts.COMMA); + casePerson.setUpdateTime(now); + //绑定当事人小程序 + this.setPartyUserId(casePerson); + //添加申请方和被申请方人名组合 + if (CaseBaseConstsEnum.PERSON_TYPE_1.getIndex().equals(casePerson.getPerType())) { + //申请方 + if (StringUtils.isNotEmpty(plaintiffs.toString())) { + plaintiffs.append(BaseConsts.COMMA); + } + plaintiffs.append(casePerson.getTrueName()); + } else if (CaseBaseConstsEnum.PERSON_TYPE_2.getIndex().equals(casePerson.getPerType())) { + //被申请方 + if (StringUtils.isNotEmpty(defendants.toString())) { + defendants.append(BaseConsts.COMMA); + } + defendants.append(casePerson.getTrueName()); } - plaintiffs.append(casePerson.getTrueName()); - peopleNum++; + + //判断是否为更新(用原有的Id对比性的Id) + if (oldPersonIds.contains(casePerson.getId())) { + personService.updateById(casePerson); + } else { + casePerson.setCreateTime(now); + personService.save(casePerson); + } } - //保存代理人 - List<CaseAgent> pagentList = registerSaveDTO.getPagentList(); - if (CollectionUtils.isNotEmpty(pagentList)) { - for(CaseAgent caseAgent: pagentList){ - newAgentIdList.add(caseAgent.getId()); - caseAgent.setId(utilsClient.getNewTimeId()); - caseAgent.setCaseId(registerSaveDTO.getId()); - caseAgent.setAgentTypeName(CaseBaseConstsEnum.getDes(caseAgent.getAgentType())); + } - caseAgent.setCustId(registerSaveDTO.getCustId()); - caseAgent.setCreateTime(registerSaveDTO.getUpdateTime()); - caseAgent.setUpdateTime(registerSaveDTO.getUpdateTime()); - - agentService.saveOrUpdate(caseAgent); - + if (CollectionUtils.isNotEmpty(agentList)) { + for (CaseAgent caseAgent : agentList) { + newAgentIdList.add(caseAgent.getId()); + caseAgent.setCaseId(registerSaveDTO.getId()); + caseAgent.setAgentTypeName(CaseBaseConstsEnum.getDes(caseAgent.getAgentType())); + caseAgent.setCustId(registerSaveDTO.getCustId()); + caseAgent.setUpdateTime(now); + //绑定当事人小程序 + this.setPartyUserId(caseAgent); + if (CaseBaseConstsEnum.PERSON_TYPE_3.getIndex().equals(caseAgent.getPerType())) { if (StringUtils.isNotEmpty(pagents.toString())) { pagents.append(BaseConsts.COMMA); } pagents.append(caseAgent.getTrueName()); - } - - //todo 绑定当事人小程序 - } - } - // 保存被申请人 - List<CasePerson> defendPersonList = registerSaveDTO.getDefendantList(); - if(CollectionUtils.isNotEmpty(defendPersonList)){ - for (CasePerson casePerson : defendPersonList) { - newPersonIdList.add(casePerson.getId()); - casePerson.setCaseId(registerSaveDTO.getId()); - casePerson.setPerType(CaseBaseConstsEnum.PERSON_TYPE_2.getIndex()); - casePerson.setPerTypeName(CaseBaseConstsEnum.PERSON_TYPE_2.getDes()); - casePerson.setCustId(registerSaveDTO.getCustId()); - casePerson.setCreateTime(registerSaveDTO.getUpdateTime()); - casePerson.setUpdateTime(registerSaveDTO.getUpdateTime()); - //todo 绑定当事人小程序 - personService.saveOrUpdate(casePerson); - if (StringUtils.isNotEmpty(defendants.toString())) { - defendants.append(BaseConsts.COMMA); - } - defendants.append(casePerson.getTrueName()); - peopleNum++; - } - //保存代理人 - List<CaseAgent> pagentList = registerSaveDTO.getPagentList(); - if (CollectionUtils.isNotEmpty(pagentList)) { - for(CaseAgent caseAgent: pagentList){ - newAgentIdList.add(caseAgent.getId()); - caseAgent.setId(utilsClient.getNewTimeId()); - caseAgent.setCaseId(registerSaveDTO.getId()); - caseAgent.setAgentTypeName(CaseBaseConstsEnum.getDes(caseAgent.getAgentType())); - caseAgent.setCustId(registerSaveDTO.getCustId()); - caseAgent.setCreateTime(registerSaveDTO.getUpdateTime()); - caseAgent.setUpdateTime(registerSaveDTO.getUpdateTime()); - agentService.saveOrUpdate(caseAgent); + } else if (CaseBaseConstsEnum.PERSON_TYPE_4.getIndex().equals(caseAgent.getPerType())) { if (StringUtils.isNotEmpty(dagents.toString())) { dagents.append(BaseConsts.COMMA); } dagents.append(caseAgent.getTrueName()); - //todo 绑定当事人小程序 + } + + //判断是否为更新(用原有的Id对比性的Id) + if (oldAgentIds.contains(caseAgent.getId())) { + agentService.updateById(caseAgent); + } else { + caseAgent.setCreateTime(now); + agentService.save(caseAgent); } } - } - // 删除冗余的申请人 + // 删除冗余的申请人(用新的Id对比旧的Id) if (CollectionUtils.isNotEmpty(newPersonIdList)) { - List<String> oldPersonIdList = personService.listIdByCaseId(registerSaveDTO.getId()); for (String oldPersonId : oldPersonIdList) { if (!newPersonIdList.contains(oldPersonId)) { personService.removeById(oldPersonId); + } else { + } } - }else{ + } else { QueryWrapper<CasePerson> casePersonQueryWrapper = new QueryWrapper<>(); casePersonQueryWrapper.eq("case_id", registerSaveDTO.getId()); personService.remove(casePersonQueryWrapper); } //删除冗余的代理人 - if(CollectionUtils.isNotEmpty(newAgentIdList)){ - List<String> oldAgentIdList = agentService.listIdByCaseId(registerSaveDTO.getId()); - for(String oldAgentId: oldAgentIdList){ - if(!newAgentIdList.contains(oldAgentId)){ + if (CollectionUtils.isNotEmpty(newAgentIdList)) { + for (String oldAgentId : oldAgentIdList) { + if (!newAgentIdList.contains(oldAgentId)) { agentService.removeById(oldAgentId); } } - }else{ + } else { QueryWrapper<CaseAgent> caseAgentQueryWrapper = new QueryWrapper<>(); caseAgentQueryWrapper.eq("case_id", registerSaveDTO.getId()); agentService.remove(caseAgentQueryWrapper); } + } + /** + * PC端-查询纠纷信息 + * + * @param caseId 纠纷编号 + * @return CaseInfo 纠纷信息 + */ + public CaseInfoDTO getCaseInfo(String caseId) { + CaseInfo caseInfo = mapper.selectById(caseId); + CaseInfoDTO caseInfoDTO = new CaseInfoDTO(); + if (ObjectUtils.isNotEmpty(caseInfo)) { + + BeanUtils.copyProperties(caseInfo, caseInfoDTO); + //查询所有当事人 + QueryWrapper<CasePerson> personQueryWrapper = new QueryWrapper<>(); + personQueryWrapper.eq("case_id", caseId); + List<CasePerson> casePersonList = personService.list(personQueryWrapper); + + //查询所有代理人 + QueryWrapper<CaseAgent> caseAgentQueryWrapper = new QueryWrapper<>(); + caseAgentQueryWrapper.eq("case_id", caseId); + List<CaseAgent> caseAgentList = agentService.list(caseAgentQueryWrapper); + List<String> idList = new ArrayList<>(); + + idList.add(caseId); + idList.addAll(casePersonList.stream().map(CasePerson::getId).collect(Collectors.toList())); + idList.addAll(caseAgentList.stream().map(CaseAgent::getId).collect(Collectors.toList())); + String ids = idList.stream().map(String::valueOf).collect(Collectors.joining("','")); + ids = "'" + ids + "'"; + Map<String, Object> term = new HashMap<>(); + term.put("mainId", caseId); + term.put("ownerIds", ids); + //查询所有附件 + List<FileIdTypeInfoBaseDTO> fileInfoList = sysClient.listIdTypeInfoByOwnerIdList(term); + for (FileIdTypeInfoBaseDTO fileInfo : fileInfoList) { + if (caseId.equals(fileInfo.getOwnerId())) { + caseInfoDTO.setFileInfoList(fileInfo.getFileList()); + } + } + for (CasePerson casePerson : casePersonList) { + //把附件根据编号放入 + for (FileIdTypeInfoBaseDTO fileInfo : fileInfoList) { + if (casePerson.getId().equals(fileInfo.getOwnerId())) { + casePerson.setFileInfoList(fileInfo.getFileList()); + } + } + } + for (CaseAgent caseAgent : caseAgentList) { + for (FileIdTypeInfoBaseDTO fileInfo : fileInfoList) { + if (caseAgent.getId().equals(fileInfo.getOwnerId())) { + caseAgent.setFileInfoList(fileInfo.getFileList()); + } + } + } + caseInfoDTO.setPersonList(casePersonList); + caseInfoDTO.setAgentList(caseAgentList); + } + return caseInfoDTO; + } + + /** + * PC端-查询纠纷信息 + * + * @param caseId 纠纷编号 + * @return CaseInfo 纠纷信息 + */ + public CaseInfoDTO getCaseArchivesInfo(String caseId) { + CaseInfo caseInfo = mapper.selectById(caseId); + CaseInfoDTO caseInfoDTO = new CaseInfoDTO(); + if (ObjectUtils.isNotEmpty(caseInfo)) { + + BeanUtils.copyProperties(caseInfo, caseInfoDTO); + //查询所有当事人 + QueryWrapper<CasePerson> personQueryWrapper = new QueryWrapper<>(); + personQueryWrapper.eq("case_id", caseId); + List<CasePerson> casePersonList = personService.list(personQueryWrapper); + + //查询所有代理人 + QueryWrapper<CaseAgent> caseAgentQueryWrapper = new QueryWrapper<>(); + caseAgentQueryWrapper.eq("case_id", caseId); + List<CaseAgent> caseAgentList = agentService.list(caseAgentQueryWrapper); + List<String> idList = new ArrayList<>(); + + idList.add(caseId); + idList.addAll(casePersonList.stream().map(CasePerson::getId).collect(Collectors.toList())); + idList.addAll(caseAgentList.stream().map(CaseAgent::getId).collect(Collectors.toList())); + String ids = idList.stream().map(String::valueOf).collect(Collectors.joining("','")); + ids = "'" + ids + "'"; + Map<String, Object> term = new HashMap<>(); + term.put("mainId", caseId); + term.put("ownerIds", ids); + //查询所有附件 + List<FileIdTypeInfoBaseDTO> fileInfoList = sysClient.listIdTypeInfoByOwnerIdList(term); + for (FileIdTypeInfoBaseDTO fileInfo : fileInfoList) { + if (caseId.equals(fileInfo.getOwnerId())) { + caseInfoDTO.setFileInfoList(fileInfo.getFileList()); + } + } + for (CasePerson casePerson : casePersonList) { + //把附件根据编号放入 + for (FileIdTypeInfoBaseDTO fileInfo : fileInfoList) { + if (casePerson.getId().equals(fileInfo.getOwnerId())) { + casePerson.setFileInfoList(fileInfo.getFileList()); + } + } + } + for (CaseAgent caseAgent : caseAgentList) { + for (FileIdTypeInfoBaseDTO fileInfo : fileInfoList) { + if (caseAgent.getId().equals(fileInfo.getOwnerId())) { + caseAgent.setFileInfoList(fileInfo.getFileList()); + } + } + } + caseInfoDTO.setPersonList(casePersonList); + caseInfoDTO.setAgentList(caseAgentList); + } + return caseInfoDTO; + } + + /** + * 绑定当事人小程序 + * + * @param casePerson 当事人信息 + */ + public void setPartyUserId(CasePerson casePerson) { + if (StringUtils.isEmpty(casePerson.getPartyUserId())) { + if (CaseBaseConstsEnum.CARD_TYPE_1.getIndex().equals(casePerson.getCertiType())) { + if (StringUtils.isNotEmpty(casePerson.getCertiNo())) { + WechatBindCaseDTO wechatBindCaseDTO = new WechatBindCaseDTO(); + if (CaseBaseConstsEnum.PERSON_CLASS_1.getIndex().equals(casePerson.getPerClass())) { + wechatBindCaseDTO.setTrueName(casePerson.getTrueName()); + } else { + wechatBindCaseDTO.setTrueName(casePerson.getDeputy()); + } + wechatBindCaseDTO.setIdcard(casePerson.getCertiNo()); + wechatBindCaseDTO.setCustId(casePerson.getCustId()); + String partyUserId = custClient.bindGetUserId(wechatBindCaseDTO); + casePerson.setPartyUserId(partyUserId); + } + } + } + } + + /** + * 绑定当事人小程序 + * + * @param caseAgent 代理人人信息 + */ + public void setPartyUserId(CaseAgent caseAgent) { + if (StringUtils.isEmpty(caseAgent.getPartyUserId())) { + if (CaseBaseConstsEnum.CARD_TYPE_1.getIndex().equals(caseAgent.getCertiType())) { + if (StringUtils.isNotEmpty(caseAgent.getCertiNo())) { + WechatBindCaseDTO wechatBindCaseDTO = new WechatBindCaseDTO(); + wechatBindCaseDTO.setTrueName(caseAgent.getTrueName()); + wechatBindCaseDTO.setIdcard(caseAgent.getCertiNo()); + wechatBindCaseDTO.setCustId(caseAgent.getCustId()); + String partyUserId = custClient.bindGetUserId(wechatBindCaseDTO); + caseAgent.setPartyUserId(partyUserId); + } + } + } + } + + /** + * PC端-纠纷登记-保存纠纷信息-正常案件 + * + * @param registerSaveDTO 纠纷信息 + * @param userId 用户编号 + * @return String 纠纷编号 + */ + public String caseRegisterWechat(RegisterSaveDTO registerSaveDTO, String userId) { + // 获取当前登录用户 + PaUserDTO loginUser = custClient.paclientGetUser(userId); + if (ObjectUtils.isEmpty(registerSaveDTO.getCustId())) { + registerSaveDTO.setCustId(loginUser.getCustId()); + } + + Date nowDate = DateUtils.getNowDate(); + registerSaveDTO.setUpdateTime(nowDate); + + CaseInfo caseInfo = new CaseInfo(); + CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold(); + BeanUtils.copyProperties(registerSaveDTO, caseInfo); + if (ObjectUtils.isEmpty(caseInfo.getId())) { + caseInfo.setId(utilsClient.getNewTimeCaseId()); + } +// caseInfo.setInputUnitId(loginUser.getUnitId()); +// caseInfo.setInputUnitName(loginUser.getUnitName()); + caseInfo.setInputUserId(loginUser.getId()); + caseInfo.setInputUserName(loginUser.getTrueName()); + caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1); + //默认添加省市 + caseInfo.setQueProv("19"); + caseInfo.setQueProvName("广东省"); + caseInfo.setQueCity("1601"); + caseInfo.setQueCityName("广州市"); + + caseInfo.setCreateTime(nowDate); + caseInfo.setUpdateTime(nowDate); + caseInfo.setVisitTime(nowDate); + caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0); + //坐标转换 + if (ObjectUtils.isNotEmpty(caseInfo.getLat()) && ObjectUtils.isNotEmpty(caseInfo.getLng())) { + PointXY pointXY = MapUtils.gcj02tobd09(Double.valueOf(caseInfo.getLng()), Double.valueOf(caseInfo.getLat())); + caseInfo.setLat(pointXY.getLat() + ""); + caseInfo.setLng(pointXY.getLon() + ""); + } + //todo case_title生成 + caseInfo.setCaseRef(utilsClient.createCaseRef()); + + // 为了演示先兼容小程序没属地问题,写死属地 +// caseInfo.setQueProv("19"); +// caseInfo.setQueProvName("广东"); +// caseInfo.setQueCity("1601"); +// caseInfo.setQueCityName("广州市"); +// caseInfo.setQueArea("50258"); +// caseInfo.setQueAreaName("白云区"); +// caseInfo.setQueRoad("62857"); +// caseInfo.setQueRoadName("新市街道"); + // 根据经纬度查询问题属地 + QueAddrBaseDTO queAddrBaseDTO = sysClient.getQueAddrByBaiduiLngLat(caseInfo.getLng(), caseInfo.getLat()); + log.info("xsdqueAddrBaseDTO:{}", queAddrBaseDTO); + caseInfo.setQueProv(queAddrBaseDTO.getQueProv()); + caseInfo.setQueProvName(queAddrBaseDTO.getQueProvName()); + caseInfo.setQueCity(queAddrBaseDTO.getQueCity()); + caseInfo.setQueCityName(queAddrBaseDTO.getQueCityName()); + caseInfo.setQueArea(queAddrBaseDTO.getQueArea()); + caseInfo.setQueAreaName(queAddrBaseDTO.getQueAreaName()); + caseInfo.setQueRoad(queAddrBaseDTO.getQueRoad()); + caseInfo.setQueRoadName(queAddrBaseDTO.getQueRoadName()); + log.info("xsdcaseInfo:{}", caseInfo); + caseInfoUnfold.setId(caseInfo.getId()); + caseInfoUnfold.setCreateTime(nowDate); + caseInfoUnfold.setUpdateTime(nowDate); + + StringBuffer plaintiffs = new StringBuffer(); + StringBuffer defendants = new StringBuffer(); + StringBuffer pagents = new StringBuffer(); + StringBuffer dagents = new StringBuffer(); + // 常规登记-保存当事人 + int peopleNum = this.saveCasePersonWechat(registerSaveDTO, plaintiffs, pagents, defendants, dagents, loginUser); + caseInfo.setVisitPeopleNum(peopleNum); + caseInfo.setPlaintiffs(plaintiffs.toString()); + caseInfo.setPagents(pagents.toString()); + caseInfo.setDefendants(defendants.toString()); + caseInfo.setDagents(dagents.toString()); + + //todo case_title生成 +// caseInfo.setCaseTitle(this.createCaseTitle(plaintiffs.toString(), defendants.toString(), caseInfo.getCaseTypeName())); + + caseInfo.setInfoProcess(CaseInfoProcessBaseConstsEnum.CASE_INFO_PROCESS_1.getIndex()); + caseInfo.setInfoProcessName(CaseInfoProcessBaseConstsEnum.CASE_INFO_PROCESS_1.getDes()); + caseInfo.setProcess(CaseProcessBaseConstsEnum.CASE_PROCESS_1.getIndex()); + caseInfo.setProcessName(CaseProcessBaseConstsEnum.CASE_PROCESS_1.getDes()); + caseInfo.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_1.getIndex()); + caseInfo.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_1.getDes()); + caseInfo.setCaseLevel(3); + caseInfo.setCanal(CaseBaseConstsEnum.CASE_CANAL_2.getIndex()); + caseInfo.setCanalName(CaseBaseConstsEnum.CASE_CANAL_2.getDes()); + + caseInfo.setCaseRef(utilsClient.createCaseRef()); + caseInfo.setVisitWay(CaseBaseConstsEnum.VISIT_WAY_2.getIndex()); + caseInfo.setVisitWayName(CaseBaseConstsEnum.VISIT_WAY_2.getDes()); + // 临时加上一级纠纷类型 + caseInfo.setCaseTypeFirst("24_01-2"); + caseInfo.setCaseTypeFirstName("劳动社保"); + this.saveOrUpdate(caseInfo); + + caseInfoUnfoldService.saveOrUpdate(caseInfoUnfold); + // 启动工作流-自动调度流程 + caseTaskService.webStartFlowLFDJ(caseInfo); + return registerSaveDTO.getId(); + } + + /** + * 生成调解案件标题 + * + * @param plaintiffs 申请人 + * @param defendants 被申请人 + * @param caseTypeName 纠纷类型 + * @return String + */ + public String createCaseTitle(String plaintiffs, String defendants, String caseTypeName) { + StringBuffer caseTitle = new StringBuffer(); + if (plaintiffs.indexOf(BaseConsts.COMMA) != -1) { + caseTitle.append(plaintiffs.split(BaseConsts.COMMA)[0]).append("等"); + } else { + caseTitle.append(plaintiffs.split(BaseConsts.COMMA)[0]); + } + if (StringUtils.isNotEmpty(defendants)) { + caseTitle.append("和"); + if (defendants.indexOf(BaseConsts.COMMA) != -1) { + caseTitle.append(defendants.split(BaseConsts.COMMA)[0]).append("等"); + } else { + caseTitle.append(defendants.split(BaseConsts.COMMA)[0]); + } + } + caseTitle.append("的"); + if (StringUtils.isNotEmpty(caseTypeName)) { + caseTitle.append(caseTypeName); + } + caseTitle.append("案件"); + return caseTitle.toString(); + } + + /** + * pc端-常规登记-保存正式案件-保存人员信息 + * + * @param registerSaveDTO 纠纷信息 + * @param plaintiffs 申请人 + * @param pagents 申请人代理人 + * @param defendants 被申请人 + * @param dagents 被申请人代理人 + * @return int + */ + private int saveCasePersonWechat(RegisterSaveDTO registerSaveDTO, StringBuffer plaintiffs, StringBuffer pagents, + StringBuffer defendants, StringBuffer dagents, PaUserDTO loginUser) { + int peopleNum = 0; + // 保存申请人 + List<CasePerson> personList = registerSaveDTO.getPersonList(); + if (CollectionUtils.isNotEmpty(personList)) { + for (CasePerson casePerson : personList) { + casePerson.setId(utilsClient.getNewTimeCaseId()); + casePerson.setCaseId(registerSaveDTO.getId()); + casePerson.setPartyUserId(loginUser.getId()); + casePerson.setCustId(registerSaveDTO.getCustId()); + casePerson.setCreateTime(registerSaveDTO.getUpdateTime()); + casePerson.setUpdateTime(registerSaveDTO.getUpdateTime()); + //todo 绑定当事人小程序 + personService.saveOrUpdate(casePerson); + + //添加申请方和被申请方人名组合 + if (CaseBaseConstsEnum.PERSON_TYPE_1.getIndex().equals(casePerson.getPerType())) { + //申请方 + if (StringUtils.isNotEmpty(plaintiffs.toString())) { + plaintiffs.append(BaseConsts.COMMA); + } + plaintiffs.append(casePerson.getTrueName()); + } else if (CaseBaseConstsEnum.PERSON_TYPE_2.getIndex().equals(casePerson.getPerType())) { + //被申请方 + if (StringUtils.isNotEmpty(defendants.toString())) { + defendants.append(BaseConsts.COMMA); + } + defendants.append(casePerson.getTrueName()); + } + peopleNum++; + + } + //保存代理人 + List<CaseAgent> agentList = registerSaveDTO.getAgentList(); + if (CollectionUtils.isNotEmpty(agentList)) { + for (CaseAgent caseAgent : agentList) { + caseAgent.setId(utilsClient.getNewTimeCaseId()); + caseAgent.setPartyUserId(loginUser.getId()); + caseAgent.setCaseId(registerSaveDTO.getId()); + caseAgent.setAgentTypeName(CaseBaseConstsEnum.getDes(caseAgent.getAgentType())); + caseAgent.setCustId(registerSaveDTO.getCustId()); + caseAgent.setCreateTime(registerSaveDTO.getUpdateTime()); + caseAgent.setUpdateTime(registerSaveDTO.getUpdateTime()); + agentService.saveOrUpdate(caseAgent); + if (CaseBaseConstsEnum.PERSON_TYPE_3.getIndex().equals(caseAgent.getPerType())) { + if (StringUtils.isNotEmpty(pagents.toString())) { + pagents.append(BaseConsts.COMMA); + } + pagents.append(caseAgent.getTrueName()); + } else if (CaseBaseConstsEnum.PERSON_TYPE_4.getIndex().equals(caseAgent.getPerType())) { + if (StringUtils.isNotEmpty(dagents.toString())) { + dagents.append(BaseConsts.COMMA); + } + dagents.append(caseAgent.getTrueName()); + } + + } + //todo 绑定当事人小程序 + } + } return peopleNum; } + + public RegisterSaveDTO getCaseInfoWechat(String id) { + RegisterSaveDTO registerSaveDTO = new RegisterSaveDTO(); + CaseInfo caseInfo = this.getById(id); + if (ObjectUtils.isNotEmpty(caseInfo)) { + BeanUtils.copyProperties(caseInfo, registerSaveDTO); + } + QueryWrapper<CasePerson> casePersonQueryWrapper = new QueryWrapper<>(); + casePersonQueryWrapper.eq("case_id", registerSaveDTO.getId()); + List<CasePerson> personList = personService.list(casePersonQueryWrapper); + registerSaveDTO.setPersonList(personList); + + QueryWrapper<CaseAgent> caseAgentQueryWrapper = new QueryWrapper<>(); + caseAgentQueryWrapper.eq("case_id", registerSaveDTO.getId()); + List<CaseAgent> agentList = agentService.list(caseAgentQueryWrapper); + registerSaveDTO.setAgentList(agentList); + + return registerSaveDTO; + } + + /** + * 按条件分页查询-小程序查询 + * + * @param page 分页对象 + * @param terms 条件 + * @return Page + */ + public Page<CaseInfoWeChatDTO> pageQueryWechat(String userId, PageRequest page, Map<String, Object> terms) { + PaUserDTO loginUser = custClient.paclientGetUser(userId); + List<CaseInfoWeChatDTO> list = new ArrayList<>(); + String personType = terms.get("personType") + ""; + if (ObjectUtils.isEmpty(personType)) { + throw new RuntimeException("请选择人员类型"); + } + if (ObjectUtils.isEmpty(loginUser.getIdcard())) { + return new PageImpl<CaseInfoWeChatDTO>(list, page, 0); + } + QueryWrapper<CasePerson> personWrapper = new QueryWrapper<>(); + personWrapper.select("case_id"); + personWrapper.eq("certi_no", loginUser.getIdcard()); + if ("1".equals(personType)) { + personWrapper.eq("per_type", CaseBaseConstsEnum.PERSON_TYPE_1.getIndex()); + } else { + personWrapper.eq("per_type", CaseBaseConstsEnum.PERSON_TYPE_2.getIndex()); + } + List<CasePerson> casePersonList = personService.list(personWrapper); + if (ObjectUtils.isEmpty(casePersonList)) { + return new PageImpl<CaseInfoWeChatDTO>(list, page, 0); + } + List<String> ids = casePersonList.stream().map(CasePerson::getCaseId).collect(Collectors.toList()); + terms.put("ids", ids); + long total = mapper.countTerms(terms); + List<CaseInfo> content = mapper.pageTerms(page, terms); + if (ObjectUtils.isNotEmpty(content)) { + for (CaseInfo caseInfo : content) { + CaseInfoWeChatDTO caseInfoWeChatDTO = new CaseInfoWeChatDTO(); + BeanUtils.copyProperties(caseInfo, caseInfoWeChatDTO); + caseInfoWeChatDTO.setProcessStatus(caseInfo.getInfoProcess()); + caseInfoWeChatDTO.setProcessStatusName(caseInfo.getInfoProcessName()); + //扩展信息 + CaseInfoUnfold caseInfoUnfold = caseInfoUnfoldService.getById(caseInfo.getId()); + if (ObjectUtils.isNotEmpty(caseInfoUnfold)) { + caseInfoWeChatDTO.setMediResult(caseInfoUnfold.getMediResult()); + caseInfoWeChatDTO.setMediResultName(caseInfoUnfold.getMediResultName()); + caseInfoWeChatDTO.setMediateDeptId(caseInfoUnfold.getMediateUnitId()); + caseInfoWeChatDTO.setMediateDeptName(caseInfoUnfold.getMediateUnitName()); + caseInfoWeChatDTO.setAgreeType(caseInfoUnfold.getAgreeType()); + caseInfoWeChatDTO.setAgreeTypeName(caseInfoUnfold.getAgreeTypeName()); + caseInfoWeChatDTO.setAgreeContent(caseInfoUnfold.getAgreeContent()); + } + + QueryWrapper<CasePerson> personWrapper1 = new QueryWrapper<>(); + personWrapper1.eq("case_id", caseInfo.getId()); + List<CasePerson> casePersonList1 = personService.list(personWrapper1); + //申请人集合 + List<CasePersonWechatDTO> plaintiffList = new ArrayList<>(); + //被申请人集合 + List<CasePersonWechatDTO> defendantList = new ArrayList<>(); + for (CasePerson casePerson : casePersonList1) { + CasePersonWechatDTO casePersonWechatDTO = new CasePersonWechatDTO(); + BeanUtils.copyProperties(casePerson, casePersonWechatDTO); + if (CaseBaseConstsEnum.PERSON_TYPE_1.getIndex().equals(casePerson.getPerType())) { + plaintiffList.add(casePersonWechatDTO); + } else if (CaseBaseConstsEnum.PERSON_TYPE_2.getIndex().equals(casePerson.getPerType())) { + defendantList.add(casePersonWechatDTO); + } + } + caseInfoWeChatDTO.setDefendantList(defendantList); + caseInfoWeChatDTO.setPlaintiffList(plaintiffList); + //评价信息 + Map<String, Object> evaluateTerms = new HashMap<>(); + evaluateTerms.put("caseId", caseInfo.getId()); + evaluateTerms.put("deleteStatus", BaseConsts.DELETE_STATUS_0); + evaluateTerms.put("evaluateUserId", loginUser.getId()); + long evaluateCount = caseEvaluateService.countTerms(evaluateTerms); + if (evaluateCount > 0) { + caseInfoWeChatDTO.setIsEvaluate("1"); + } else { + caseInfoWeChatDTO.setIsEvaluate("0"); + } + + list.add(caseInfoWeChatDTO); + } + } + return new PageImpl<CaseInfoWeChatDTO>(list, page, total); + } + + /** + * 按条件分页查询-综合查询 + * + * @param page 分页对象 + * @param terms 条件 + * @return Page + */ + public Page<CasePageDTO> pageQueryAll(PageRequest page, Map<String, Object> terms) { + long total = mapper.countTermsAll(terms); + List<CasePageDTO> content = mapper.pageTermsAll(page, terms); + if (ObjectUtils.isNotEmpty(content)) { + for (CasePageDTO casePageDTO : content) { + QueryWrapper<CasePerson> personWrapper1 = new QueryWrapper<>(); + personWrapper1.eq("case_id", casePageDTO.getId()); + List<CasePerson> casePersonList1 = personService.list(personWrapper1); + //申请人集合 + List<CasePersonWeDTO> plaintiffList = new ArrayList<>(); + //被申请人集合 + List<CasePersonWeDTO> defendantList = new ArrayList<>(); + for (CasePerson casePerson : casePersonList1) { + CasePersonWeDTO casePersonWechatDTO = new CasePersonWeDTO(); + BeanUtils.copyProperties(casePerson, casePersonWechatDTO); + if (CaseBaseConstsEnum.PERSON_TYPE_1.getIndex().equals(casePerson.getPerType())) { + plaintiffList.add(casePersonWechatDTO); + } else if (CaseBaseConstsEnum.PERSON_TYPE_2.getIndex().equals(casePerson.getPerType())) { + defendantList.add(casePersonWechatDTO); + } + } + casePageDTO.setDefendantList(defendantList); + casePageDTO.setPlaintiffList(plaintiffList); + } + } + return new PageImpl<CasePageDTO>(content, page, total); + } + + public CaseStatisticsBaseDTO statistics(Map<String, Object> terms) throws IOException { + //基础数据统计 + CaseStatisticsBaseDTO caseStatisticsBaseDTO = mapper.statisticsBase(terms); + Integer baseTotalNum = dellNull(caseStatisticsBaseDTO.getResolveNum()) + dellNull(caseStatisticsBaseDTO.getUnResolveNum()) + dellNull(caseStatisticsBaseDTO.getResolveingNum()); + caseStatisticsBaseDTO.setResolveRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getResolveNum() * 100, baseTotalNum, 1)); + caseStatisticsBaseDTO.setUnResolveRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getUnResolveNum() * 100, baseTotalNum, 1)); + caseStatisticsBaseDTO.setResolveingRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getResolveingNum() * 100, baseTotalNum, 1)); + Integer levelTotalNum = caseStatisticsBaseDTO.getOneLevelNum() + caseStatisticsBaseDTO.getTwoLevelNum() + caseStatisticsBaseDTO.getThreeLevelNum(); + caseStatisticsBaseDTO.setOneLevelRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getOneLevelNum() * 100, levelTotalNum, 1)); + caseStatisticsBaseDTO.setTwoLevelRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getTwoLevelNum() * 100, levelTotalNum, 1)); + caseStatisticsBaseDTO.setThreeLevelRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getThreeLevelNum() * 100, levelTotalNum, 1)); + //区域数据统计 + terms.put("isArea", "1"); + List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS = mapper.statisticsArea(terms); + if (ObjectUtils.isEmpty(caseStatisticsAreaDTOS)) { + caseStatisticsAreaDTOS = new ArrayList<>(); + } + CaseStatisticsAreaDTO allArea = new CaseStatisticsAreaDTO(); + allArea.setAreaName("本级"); + allArea.setAreaCode("1"); + List<String> areaCodeList = new ArrayList<>(); + for (CaseStatisticsAreaDTO caseStatisticsAreaDTO : caseStatisticsAreaDTOS) { + allArea.setCaseNum(dellNull(caseStatisticsAreaDTO.getCaseNum()) + dellNull(allArea.getCaseNum())); + allArea.setResolveNum(dellNull(caseStatisticsAreaDTO.getResolveNum()) + dellNull(allArea.getResolveNum())); + allArea.setUnResolveNum(dellNull(caseStatisticsAreaDTO.getUnResolveNum()) + dellNull(allArea.getUnResolveNum())); + allArea.setResolveingNum(dellNull(caseStatisticsAreaDTO.getResolveingNum()) + dellNull(allArea.getResolveingNum())); + areaCodeList.add(caseStatisticsAreaDTO.getAreaCode()); + } + caseStatisticsAreaDTOS.add(allArea); + List<CaseArea> queArea = listAreaByType(terms.get("areaType"), terms.get("queArea")); + log.info("listAreaByType {}", JSON.toJSONString(queArea)); + for (CaseArea caseAreaDTO : queArea) { + if (!areaCodeList.contains(caseAreaDTO.getAreaCode())) { + CaseStatisticsAreaDTO areaChild = new CaseStatisticsAreaDTO(); + areaChild.setAreaCode(caseAreaDTO.getAreaCode()); + areaChild.setAreaName(caseAreaDTO.getAreaName()); + areaChild.setCaseNum(0); + areaChild.setResolveNum(0); + areaChild.setUnResolveNum(0); + areaChild.setResolveingNum(0); + caseStatisticsAreaDTOS.add(areaChild); + } + } + + if (ObjectUtils.isNotEmpty(caseStatisticsAreaDTOS)) { + sortArea(caseStatisticsAreaDTOS); + } + caseStatisticsBaseDTO.setAreaList(caseStatisticsAreaDTOS); + terms.remove("isArea"); + //纠纷类型统计 + List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS = mapper.statisticsType(terms); + if (ObjectUtils.isNotEmpty(caseStatisticsTypeDTOS)) { + sortType(caseStatisticsTypeDTOS); + } + Integer typeTotalNum = 0; + Integer otherCaseNum = 0; + int i = 1; + List<CaseStatisticsTypeDTO> typeList = new ArrayList<>(); + for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) { + typeTotalNum = typeTotalNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); + if (i > 5) { + otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); + } else { + typeList.add(caseStatisticsTypeDTO); + } + i++; + } + for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : typeList) { + caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); + } + CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO(); + caseStatisticsTypeDTO.setCaseTypeName("其他"); + caseStatisticsTypeDTO.setCaseNum(otherCaseNum); + caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); + typeList.add(caseStatisticsTypeDTO); + caseStatisticsBaseDTO.setTypeList(typeList); + //事项来源 + terms.put("canal", CaseBaseConstsEnum.CASE_CANAL_1.getIndex()); + CaseStatisticsSourceDTO oneSource = mapper.statisticsSource(terms); + oneSource.setCanalName(CaseBaseConstsEnum.CASE_CANAL_1.getDes()); + terms.put("canal", CaseBaseConstsEnum.CASE_CANAL_2.getIndex()); + CaseStatisticsSourceDTO twoSource = mapper.statisticsSource(terms); + twoSource.setCanalName(CaseBaseConstsEnum.CASE_CANAL_2.getDes()); + + Integer sourceTotalNum = dellNull(oneSource.getCaseNum()) + dellNull(oneSource.getCaseNum()); + oneSource.setCaseRate(BigDecimalUtil.integerDivideDelZero(oneSource.getCaseNum() * 100, sourceTotalNum, 1)); + oneSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(oneSource.getResolveNum() * 100, oneSource.getCaseNum(), 1)); + twoSource.setCaseRate(BigDecimalUtil.integerDivideDelZero(twoSource.getCaseNum() * 100, sourceTotalNum, 1)); + twoSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(twoSource.getResolveNum() * 100, twoSource.getCaseNum(), 1)); + + CaseStatisticsSourceDTO threeSource = new CaseStatisticsSourceDTO(); + threeSource.setCanalName("自行排查"); + threeSource.setResolveRate("0"); + threeSource.setCaseRate("0"); + CaseStatisticsSourceDTO fourSource = new CaseStatisticsSourceDTO(); + fourSource.setCanalName("协同推送"); + fourSource.setResolveRate("0"); + fourSource.setCaseRate("0"); + caseStatisticsBaseDTO.setOneSource(oneSource); + caseStatisticsBaseDTO.setTwoSource(twoSource); + caseStatisticsBaseDTO.setThreeSource(threeSource); + caseStatisticsBaseDTO.setFourSource(fourSource); + + //案件集合 + Sort sort = Sort.by(Sort.Direction.DESC, "a.create_time"); + PageRequest pageRequest = PageRequest.of(0, 5, sort); + Page<CasePageDTO> casePageDTOS = pageQueryAll(pageRequest, terms); + if (ObjectUtils.isNotEmpty(casePageDTOS.getContent())) { + caseStatisticsBaseDTO.setCaseList(casePageDTOS.getContent()); + } else { + caseStatisticsBaseDTO.setCaseList(new ArrayList<>()); + } + return caseStatisticsBaseDTO; + } + + public List<CaseStatisticsTypeDTO> sortType(List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS) { + caseStatisticsTypeDTOS.sort((o1, o2) -> { + Integer totalScore1 = o1.getCaseNum(); + Integer totalScore2 = o2.getCaseNum(); + if (totalScore1 < totalScore2) { + return 1; + } else if (totalScore1.equals(totalScore2)) { + return 0; + } else { + return -1; + } + }); + return caseStatisticsTypeDTOS; + } + + public List<CaseStatisticsAreaDTO> sortArea(List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS) { + caseStatisticsAreaDTOS.sort((o1, o2) -> { + log.info("xsd:{},{}",o1,o2); + Integer totalScore1 = Integer.valueOf(o1.getAreaCode()); + Integer totalScore2 = Integer.valueOf(o2.getAreaCode()); + if (totalScore1 > totalScore2) { + return 1; + } else if (totalScore1.equals(totalScore2)) { + return 0; + } else { + return -1; + } + }); + return caseStatisticsAreaDTOS; + } + + public Integer dellNull(Integer number) { + if (ObjectUtils.isEmpty(number)) { + return 0; + } + return number; + } + + + /** + * 根据不同的等级获取不同区域子集合 + * + * @param areaType 1-市级 2-区 + */ + public List<CaseArea> listAreaByType(Object areaType, Object areaCode) throws IOException { + log.info("listAreaByType {},{}", areaType, areaCode); + if (ObjectUtils.isEmpty(areaType) || areaType.equals("") || areaType.equals("1")) { + QueryWrapper<CaseArea> caseAreaWrapper = new QueryWrapper<>(); + caseAreaWrapper.eq("parent_code","1601"); + List<CaseArea> list = caseAreaService.list(caseAreaWrapper); + return list; + } + if (areaType.equals("2")) { + + QueryWrapper<CaseArea> caseAreaWrapper = new QueryWrapper<>(); + caseAreaWrapper.eq("parent_code",areaCode); + List<CaseArea> list = caseAreaService.list(caseAreaWrapper); + return list; + } + return new ArrayList<>(); + } } -- Gitblit v1.8.0