package cn.huge.module.cases.service;
|
|
import cn.huge.base.common.exception.ServiceException;
|
import cn.huge.base.common.utils.*;
|
import cn.huge.module.casebook.consts.ByCaseTypeEnum;
|
import cn.huge.module.casebook.domain.po.CasebookAgent;
|
import cn.huge.module.casebook.domain.po.CasebookInfo;
|
import cn.huge.module.casebook.domain.po.CasebookPerson;
|
import cn.huge.module.casebook.service.*;
|
import cn.huge.module.cases.domain.bo.CaseAgentBO;
|
import cn.huge.module.cases.domain.bo.CasePersonBO;
|
import cn.huge.module.cases.domain.bo.CasePersonCountBO;
|
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.cases.domain.vo.CaseVo;
|
import cn.huge.module.cases.domain.vo.GenerateQrCodeRequestVo;
|
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.constant.BaseConsts;
|
import cn.huge.module.cust.dto.CtUnitDTO;
|
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.service.CasedraftInfoService;
|
import cn.huge.module.mediate.constant.CaseProcessBaseConstsEnum;
|
import cn.huge.module.mediate.dto.WechatBindCaseDTO;
|
import cn.huge.module.syncbydyh.domain.po.SyCause;
|
import cn.huge.module.sys.constant.GridEnum;
|
import cn.huge.module.sys.dto.FileIdTypeInfoBaseDTO;
|
import cn.huge.module.sys.dto.*;
|
import cn.huge.module.sys.dto.QueAddrBaseDTO;
|
import cn.huge.module.sys.dto.QueAreaDTO;
|
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.scheduling.annotation.Async;
|
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.io.File;
|
import java.io.IOException;
|
import java.net.URL;
|
import java.nio.file.Files;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* @author wangwh
|
* @version 1.0.0
|
* @title: 纠纷信息主表业务逻辑处理
|
* @Description 纠纷信息主表业务逻辑处理
|
* @company hugeinfo
|
* @Time 2024-08-27 10:00:57
|
*/
|
@Slf4j
|
@Service
|
@Transactional(rollbackFor = Exception.class)
|
public class CaseInfoService extends ServiceImpl<CaseInfoMapper, CaseInfo> {
|
|
@Autowired
|
private CaseInfoMapper mapper;
|
|
@Autowired
|
private UtilsClientImpl utilsClient;
|
|
@Autowired
|
private CasedraftInfoService draftInfoService;
|
|
@Autowired
|
private CasePersonService personService;
|
|
@Autowired
|
private CaseAgentService agentService;
|
|
@Autowired
|
private CustClientImpl custClient;
|
|
@Autowired
|
private CaseInfoUnfoldService caseInfoUnfoldService;
|
|
@Autowired
|
private SysClientImpl sysClient;
|
|
@Autowired
|
private CaseTaskService caseTaskService;
|
|
@Autowired
|
private CaseEvaluateService caseEvaluateService;
|
|
@Autowired
|
private CasebookInfoService casebookInfoService;
|
@Autowired
|
private CasebookInfoUnfoldService casebookInfoUnfoldService;
|
@Autowired
|
private CasebookPersonService casebookPersonService;
|
@Autowired
|
private CasebookAgentService casebookAgentService;
|
@Autowired
|
private CaseMediatorService caseMediatorService;
|
@Autowired
|
private CaseRepeatService caseRepeatService;
|
@Autowired
|
private CaseWindupApplyService caseWindupApplyService;
|
@Autowired
|
private CasePersonService casePersonService;
|
|
|
/**
|
* 更新对象
|
*
|
* @param entity 对象
|
*/
|
public void updateCaseInfo(CaseInfo entity) {
|
try {
|
mapper.updateCaseInfo(entity);
|
} catch (Exception e) {
|
log.error("[CaseInfoService.updateCaseInfo]调用失败,异常信息:" + e, e);
|
throw new ServiceException("CaseInfoService.updateCaseInfo", e);
|
}
|
}
|
|
/**
|
* 批量更新对象
|
*
|
* @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);
|
throw new ServiceException("CaseInfoService.updateCaseInfoTerms", e);
|
}
|
}
|
|
/**
|
* 根据编号物理删除
|
*
|
* @param id 查询条件集合
|
*/
|
public void deleteCaseInfo(String id) {
|
try {
|
mapper.deleteCaseInfo(id);
|
} 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) {
|
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<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 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())) {
|
caseInfo.setId(utilsClient.getNewTimeId());
|
caseInfo.setCreateTime(nowDate);
|
}
|
caseInfo.setUpdateTime(nowDate);
|
this.saveOrUpdate(caseInfo);
|
} catch (Exception e) {
|
log.error("[CaseInfoService.saveCaseInfo]调用失败,异常信息:" + e, e);
|
throw new ServiceException("CaseInfoService.saveCaseInfo", e);
|
}
|
}
|
|
/**
|
* PC端-纠纷登记-根据坐标信息入格
|
*
|
* @param caseId 案件编号
|
*/
|
public void setGridInfoById(String caseId) {
|
CaseInfo caseInfo = this.getById(caseId);
|
GridCoordinateDTO gridCoordinateDTO = sysClient.getGridInfoBd09(caseInfo.getLng(), caseInfo.getLat());
|
|
if (ObjectUtils.isNotEmpty(gridCoordinateDTO)) {
|
log.info("[CaseInfoService.caseRegister]调用成功");
|
log.info("网格信息:{}", gridCoordinateDTO);
|
caseInfo.setWgAddr(gridCoordinateDTO.getAddress());
|
caseInfo.setWgLat(gridCoordinateDTO.getGzY());
|
caseInfo.setWgLng(gridCoordinateDTO.getGzX());
|
this.updateCaseInfo(caseInfo);
|
} else {
|
log.warn("[CaseInfoService.caseRegister]调用失败,未能获取到坐标信息");
|
throw new ServiceException("CaseInfoService.caseRegister", "未能获取到坐标信息");
|
}
|
}
|
|
/**
|
* PC端-纠纷登记-保存纠纷信息-正常案件
|
*
|
* @param registerSaveDTO 纠纷信息
|
* @param userId 用户编号
|
* @return String 纠纷编号
|
*/
|
public String caseRegister(RegisterSaveDTO registerSaveDTO, String userId) {
|
try {
|
// 获取当前登录用户
|
CtUserDTO loginUser = custClient.clientGetUserAll(userId);
|
|
Date nowDate = DateUtils.getNowDate();
|
StringBuffer plaintiffs = new StringBuffer();
|
StringBuffer defendants = new StringBuffer();
|
StringBuffer pagents = new StringBuffer();
|
StringBuffer dagents = new StringBuffer();
|
//复制填装案件表
|
CaseInfo caseInfo = new CaseInfo();
|
BeanUtils.copyProperties(registerSaveDTO, caseInfo);
|
// 是否自行受理
|
if (1 == registerSaveDTO.getIsSelfAccept()) {
|
// 是
|
caseInfo.setZxslStatus(CaseBaseConsts.ZXSL_STATUS_1);
|
} else {
|
// 否
|
caseInfo.setZxslStatus(CaseBaseConsts.ZXSL_STATUS_0);
|
}
|
caseInfo.setUpdateTime(nowDate);
|
|
// 常规登记-保存当事人
|
this.saveCasePerson(registerSaveDTO, plaintiffs, pagents, defendants, dagents);
|
caseInfo.setPlaintiffs(plaintiffs.toString());
|
caseInfo.setPagents(pagents.toString());
|
caseInfo.setDefendants(defendants.toString());
|
caseInfo.setDagents(dagents.toString());
|
// 获取事项编号
|
CtUnitDTO ctUnitDTO = custClient.getUnitById(loginUser.getUnitId());
|
GenerateQrCodeRequestVo generateQrCodeRequestVo = new GenerateQrCodeRequestVo();
|
generateQrCodeRequestVo.setId(caseInfo.getId());
|
generateQrCodeRequestVo.setBusinessSource("02");
|
generateQrCodeRequestVo.setGenerateUnifiedCode(true);
|
generateQrCodeRequestVo.setInfoSource("03");
|
String area = this.formatGridCode(ctUnitDTO.getArea());
|
generateQrCodeRequestVo.setGridCode(area);
|
caseInfo.setCaseRef(sysClient.getCaseRefByGenerateQrCode(generateQrCodeRequestVo));
|
// 获取调解案号
|
caseInfo.setCaseNo(utilsClient.createCaseNo(ctUnitDTO.getArea()));
|
caseInfo.setVisitWay(CaseBaseConstsEnum.getVisitWayByCanal(caseInfo.getCanal()).getIndex());
|
caseInfo.setVisitWayName(CaseBaseConstsEnum.getVisitWayByCanal(caseInfo.getCanal()).getDes());
|
//默认小程序可见
|
if (ObjectUtils.isNotEmpty(caseInfo.getCanal())) {
|
if (CaseBaseConstsEnum.CASE_CANAL_1.getIndex().equals(caseInfo.getCanal())) {
|
caseInfo.setPartyShow(1);
|
}
|
}
|
|
//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("440100");
|
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);
|
caseInfoUnfold.setMediatorId(registerSaveDTO.getMediatorId());
|
caseInfoUnfold.setMediator(registerSaveDTO.getMediator());
|
caseInfoUnfoldService.save(caseInfoUnfold);
|
// 新增调解员信息
|
if (StringUtils.isNotBlank(registerSaveDTO.getMediator())) {
|
CaseMediator caseMediator = new CaseMediator();
|
caseMediator.setId(utilsClient.getNewTimeId());
|
caseMediator.setCaseId(caseInfo.getId());
|
caseMediator.setMediatorType(CaseBaseConsts.MEDIATOR_TYPE_0);
|
caseMediator.setMediatorId(registerSaveDTO.getMediatorId());
|
caseMediator.setMediatorName(registerSaveDTO.getMediator());
|
ctUnitDTO = custClient.getUnitByUserId(registerSaveDTO.getMediatorId());
|
caseMediator.setUnitId(ctUnitDTO.getId());
|
caseMediator.setUnitName(ctUnitDTO.getUnitName());
|
caseMediator.setCreateTime(nowDate);
|
caseMediator.setUpdateTime(nowDate);
|
caseMediatorService.save(caseMediator);
|
}
|
// 新增协助调解员信息
|
if (CollectionUtils.isNotEmpty(registerSaveDTO.getAssistMediatorList())) {
|
for (MediatorDTO mediatorDTO : registerSaveDTO.getAssistMediatorList()) {
|
CaseMediator caseMediator = new CaseMediator();
|
caseMediator.setId(utilsClient.getNewTimeId());
|
caseMediator.setCaseId(caseInfo.getId());
|
caseMediator.setMediatorType(CaseBaseConsts.MEDIATOR_TYPE_1);
|
caseMediator.setMediatorId(mediatorDTO.getMediatorId());
|
caseMediator.setMediatorName(mediatorDTO.getMediator());
|
ctUnitDTO = custClient.getUnitByUserId(mediatorDTO.getMediatorId());
|
caseMediator.setUnitId(ctUnitDTO.getId());
|
caseMediator.setUnitName(ctUnitDTO.getUnitName());
|
caseMediator.setCreateTime(nowDate);
|
caseMediator.setUpdateTime(nowDate);
|
caseMediatorService.save(caseMediator);
|
}
|
}
|
// 是否合并重复案件
|
if (CollectionUtils.isNotEmpty(registerSaveDTO.getRepeatCaseIdList())) {
|
// 合并操作-跟随主案件流程
|
caseRepeatService.createRepeatCase(caseInfo.getId(), registerSaveDTO.getRepeatCaseIdList(), loginUser);
|
} else {
|
// 不合并-启动工作流
|
// 判断是否自行受理
|
// if (1 == registerSaveDTO.getIsSelfAccept()) {
|
// // 自行受理流程
|
// return caseTaskService.webStartFlowZXSL(caseInfo, loginUser);
|
// } else {
|
// // 自动调度流程
|
// caseTaskService.webStartFlowLFDJ(caseInfo);
|
// }
|
}
|
|
// todo-临时操作,无论合不合并的案件都走工作流
|
// 判断是否自行受理
|
if (1 == registerSaveDTO.getIsSelfAccept()) {
|
// 自行受理流程
|
return caseTaskService.webStartFlowZXSL(caseInfo, loginUser);
|
} else {
|
// 自动调度流程
|
caseTaskService.webStartFlowLFDJ(caseInfo);
|
}
|
} else if (1 == registerSaveDTO.getOperateType()) {
|
this.updateById(caseInfo);
|
}
|
return registerSaveDTO.getId();
|
} 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 被申请人代理人
|
* @return int
|
*/
|
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<>();
|
|
if (CollectionUtils.isNotEmpty(personList)) {
|
for (CasePerson casePerson : personList) {
|
newPersonIdList.add(casePerson.getId());
|
casePerson.setCaseId(registerSaveDTO.getId());
|
casePerson.setCustId(registerSaveDTO.getCustId());
|
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());
|
}
|
|
//判断是否为更新(用原有的Id对比性的Id)
|
if (oldPersonIds.contains(casePerson.getId())) {
|
personService.updateById(casePerson);
|
} else {
|
casePerson.setCreateTime(now);
|
personService.save(casePerson);
|
}
|
|
}
|
}
|
|
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());
|
} else if (CaseBaseConstsEnum.PERSON_TYPE_4.getIndex().equals(caseAgent.getPerType())) {
|
if (StringUtils.isNotEmpty(dagents.toString())) {
|
dagents.append(BaseConsts.COMMA);
|
}
|
dagents.append(caseAgent.getTrueName());
|
}
|
|
//判断是否为更新(用原有的Id对比性的Id)
|
if (oldAgentIds.contains(caseAgent.getId())) {
|
agentService.updateById(caseAgent);
|
} else {
|
caseAgent.setCreateTime(now);
|
agentService.save(caseAgent);
|
}
|
}
|
}
|
|
// 删除冗余的申请人(用新的Id对比旧的Id)
|
if (CollectionUtils.isNotEmpty(newPersonIdList)) {
|
for (String oldPersonId : oldPersonIdList) {
|
if (!newPersonIdList.contains(oldPersonId)) {
|
personService.removeById(oldPersonId);
|
} else {
|
|
}
|
}
|
} else {
|
QueryWrapper<CasePerson> casePersonQueryWrapper = new QueryWrapper<>();
|
casePersonQueryWrapper.eq("case_id", registerSaveDTO.getId());
|
personService.remove(casePersonQueryWrapper);
|
}
|
//删除冗余的代理人
|
if (CollectionUtils.isNotEmpty(newAgentIdList)) {
|
for (String oldAgentId : oldAgentIdList) {
|
if (!newAgentIdList.contains(oldAgentId)) {
|
agentService.removeById(oldAgentId);
|
}
|
}
|
} 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);
|
if (StringUtils.isNotEmpty(caseInfoDTO.getCanalSecondName()))
|
caseInfoDTO.setCanalName(caseInfoDTO.getCanalName() + "-" + caseInfoDTO.getCanalSecondName());
|
//查询所有当事人
|
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);
|
//查询扬言风险
|
CaseInfoUnfold caseInfoUnfold = caseInfoUnfoldService.getById(caseId);
|
if (caseInfoUnfold != null) {
|
caseInfoDTO.setIsRisk(caseInfoUnfold.getIsRisk());
|
caseInfoDTO.setTcqk(caseInfoUnfold.getTcqk());
|
}
|
} else {
|
CasebookInfo casebookInfo = casebookInfoService.getById(caseId);
|
if (ObjectUtils.isNotEmpty(casebookInfo)) {
|
BeanUtils.copyProperties(casebookInfo, caseInfoDTO);
|
//查询所有当事人
|
QueryWrapper<CasebookPerson> personQueryWrapper = new QueryWrapper<>();
|
personQueryWrapper.eq("case_id", caseId);
|
List<CasebookPerson> casebookPersonList = casebookPersonService.list(personQueryWrapper);
|
List<CasePerson> casePersonList = new ArrayList<>();
|
for (CasebookPerson casebookPerson : casebookPersonList) {
|
CasePerson casePerson = new CasePerson();
|
BeanUtils.copyProperties(casebookPerson, casePerson);
|
casePersonList.add(casePerson);
|
}
|
caseInfoDTO.setPersonList(casePersonList);
|
|
//查询所有代理人
|
QueryWrapper<CasebookAgent> caseAgentQueryWrapper = new QueryWrapper<>();
|
caseAgentQueryWrapper.eq("case_id", caseId);
|
List<CasebookAgent> casebookAgentList = casebookAgentService.list(caseAgentQueryWrapper);
|
List<CaseAgent> caseAgentList = new ArrayList<>();
|
for (CasebookAgent casebookAgent : casebookAgentList) {
|
CaseAgent caseAgent = new CaseAgent();
|
BeanUtils.copyProperties(caseAgent, casebookAgent);
|
caseAgentList.add(caseAgent);
|
}
|
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.setPartyShow(1);
|
if (ObjectUtils.isEmpty(registerSaveDTO.getPeopleNum())) {
|
caseInfo.setPeopleNum(0);
|
}
|
if (ObjectUtils.isEmpty(registerSaveDTO.getAmount())) {
|
caseInfo.setAmount(0.0);
|
}
|
//默认添加省市
|
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() + "");
|
}
|
|
// 为了演示先兼容小程序没属地问题,写死属地
|
// 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());
|
// 生成事项编号
|
GenerateQrCodeRequestVo generateQrCodeRequestVo = new GenerateQrCodeRequestVo();
|
generateQrCodeRequestVo.setId(caseInfo.getId());
|
generateQrCodeRequestVo.setBusinessSource("02");
|
generateQrCodeRequestVo.setGenerateUnifiedCode(true);
|
generateQrCodeRequestVo.setInfoSource("03");
|
String area = this.formatGridCode(caseInfo.getQueArea());
|
generateQrCodeRequestVo.setGridCode(area);
|
caseInfo.setCaseRef(sysClient.getCaseRefByGenerateQrCode(generateQrCodeRequestVo));
|
// 生产调解案号
|
caseInfo.setCaseNo(utilsClient.createCaseNo(caseInfo.getQueArea()));
|
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.setVisitWay(CaseBaseConstsEnum.VISIT_WAY_2.getIndex());
|
caseInfo.setVisitWayName(CaseBaseConstsEnum.VISIT_WAY_2.getDes());
|
// 临时加上一级纠纷类型
|
caseInfo.setCaseTypeFirst("24_01-2");
|
caseInfo.setCaseTypeFirstName("劳动社保");
|
//小程序是否查看
|
caseInfo.setPartyShow(1);
|
|
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();
|
Map<String, String> personIdMap = new HashMap<>();
|
if (CollectionUtils.isNotEmpty(personList)) {
|
for (CasePerson casePerson : personList) {
|
String newTimeCaseId = utilsClient.getNewTimeCaseId();
|
personIdMap.put(casePerson.getAgentCode(), newTimeCaseId);
|
casePerson.setId(newTimeCaseId);
|
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.setPersonId(personIdMap.get(caseAgent.getAgentCode()));
|
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);
|
Map<String, String> personNameMap = new HashMap<>();
|
if (ObjectUtils.isNotEmpty(personList)) {
|
for (CasePerson casePerson : personList) {
|
personNameMap.put(casePerson.getId(), casePerson.getTrueName());
|
}
|
}
|
registerSaveDTO.setPersonList(personList);
|
|
QueryWrapper<CaseAgent> caseAgentQueryWrapper = new QueryWrapper<>();
|
caseAgentQueryWrapper.eq("case_id", registerSaveDTO.getId());
|
List<CaseAgent> agentList = agentService.list(caseAgentQueryWrapper);
|
if (ObjectUtils.isNotEmpty(agentList)) {
|
for (CaseAgent caseAgent : agentList) {
|
caseAgent.setAgentPersonName(personNameMap.get(caseAgent.getPersonId()));
|
}
|
}
|
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);
|
terms.put("partyShow", 1);
|
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) {
|
String areaType = null;
|
if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) {
|
areaType = "4";
|
} else if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) {
|
areaType = "3";
|
} else if (ObjectUtils.isNotEmpty(terms.get("queArea"))) {
|
terms.remove("queCity");
|
areaType = "2";
|
} else {
|
areaType = "1";
|
}
|
terms.put("areaType", areaType);
|
terms.put("statistics", "1");
|
long total = mapper.countTermsAll(terms);
|
List<CasePageDTO> content = mapper.pageTermsAll(page, terms);
|
//如果导出,单独查询人员信息
|
Map<String, List<CasePersonWeDTO>> casePersonMap = new HashMap<>();
|
Map<String, List<CaseAgentWeDTO>> caseAgentMap = new HashMap<>();
|
Map<String, List<CaseHandleWeDTO>> caseHandleMap = new HashMap<>();
|
if (ObjectUtils.isNotEmpty(terms.get("report"))) {
|
List<CasePersonWeDTO> casePersonWeDTOS = mapper.pageTermsPersonAll(terms);
|
if (ObjectUtils.isNotEmpty(casePersonWeDTOS)) {
|
casePersonMap = casePersonWeDTOS.stream().collect(Collectors.groupingBy(CasePersonWeDTO::getCaseId));
|
}
|
List<CaseAgentWeDTO> caseAgentWeDTOS = mapper.pageTermsAgentAll(terms);
|
if (ObjectUtils.isNotEmpty(caseAgentWeDTOS)) {
|
caseAgentMap = caseAgentWeDTOS.stream().collect(Collectors.groupingBy(CaseAgentWeDTO::getCaseId));
|
}
|
List<CaseHandleWeDTO> caseHandleWeDTOS = mapper.pageTermsHandleAll(terms);
|
if (ObjectUtils.isNotEmpty(caseHandleWeDTOS)) {
|
caseHandleMap = caseHandleWeDTOS.stream().collect(Collectors.groupingBy(CaseHandleWeDTO::getCaseId));
|
}
|
}
|
if (ObjectUtils.isNotEmpty(content)) {
|
for (CasePageDTO casePageDTO : content) {
|
if (CaseBaseConstsEnum.CASE_CANAL_4.getIndex().equals(casePageDTO.getCanal())) {
|
casePageDTO.setCanalName(casePageDTO.getCanalName() + "-" + casePageDTO.getCanalSecondName());
|
}
|
StringBuffer sb = new StringBuffer();
|
if (ObjectUtils.isNotEmpty(casePageDTO.getQueAreaName())) {
|
sb.append("/");
|
sb.append(casePageDTO.getQueAreaName());
|
}
|
if (ObjectUtils.isNotEmpty(casePageDTO.getQueRoadName())) {
|
sb.append("/");
|
sb.append(casePageDTO.getQueRoadName());
|
}
|
if (ObjectUtils.isNotEmpty(casePageDTO.getQueVillageName())) {
|
sb.append("/");
|
sb.append(casePageDTO.getQueVillageName());
|
}
|
if (ObjectUtils.isEmpty(sb)) {
|
sb.append("/");
|
sb.append(casePageDTO.getQueCityName());
|
}
|
if (sb.length() > 1) {
|
casePageDTO.setAreaName(sb.substring(1, sb.length()));
|
}
|
if (ObjectUtils.isNotEmpty(casePageDTO.getCaseTypeFirstName())) {
|
casePageDTO.setCaseTypeName(casePageDTO.getCaseTypeFirstName() + "/" + casePageDTO.getCaseTypeName());
|
}
|
|
if (ObjectUtils.isNotEmpty(casePageDTO.getCaseLevel())) {
|
switch (casePageDTO.getCaseLevel()) {
|
case "1":
|
casePageDTO.setCaseLevel("一级");
|
break;
|
case "2":
|
casePageDTO.setCaseLevel("二级");
|
break;
|
case "3":
|
casePageDTO.setCaseLevel("三级");
|
break;
|
}
|
}
|
//申请人集合
|
List<CasePersonWeDTO> plaintiffList = new ArrayList<>();
|
//被申请人集合
|
List<CasePersonWeDTO> defendantList = new ArrayList<>();
|
//如果是导出调用,全量查询
|
if (casePersonMap.containsKey(casePageDTO.getId())) {
|
List<CasePersonWeDTO> casePersonWeDTOS = casePersonMap.get(casePageDTO.getId());
|
for (CasePersonWeDTO casePersonWeDTO : casePersonWeDTOS) {
|
if (CaseBaseConstsEnum.PERSON_TYPE_1.getIndex().equals(casePersonWeDTO.getPerType())) {
|
plaintiffList.add(casePersonWeDTO);
|
} else if (CaseBaseConstsEnum.PERSON_TYPE_2.getIndex().equals(casePersonWeDTO.getPerType())) {
|
defendantList.add(casePersonWeDTO);
|
}
|
}
|
} else {
|
QueryWrapper<CasePerson> personWrapper1 = new QueryWrapper<>();
|
personWrapper1.eq("case_id", casePageDTO.getId());
|
personWrapper1.select("true_name", "mobile", "per_type", "per_type_name", "per_class", "per_class_name", "certi_no", "orga_code");
|
List<CasePerson> casePersonList1 = personService.list(personWrapper1);
|
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);
|
}
|
}
|
}
|
//代理人
|
if (caseAgentMap.containsKey(casePageDTO.getId())) {
|
List<CaseAgentWeDTO> caseAgentWeDTOS = caseAgentMap.get(casePageDTO.getId());
|
casePageDTO.setAgentList(caseAgentWeDTOS);
|
}
|
casePageDTO.setDefendantList(defendantList);
|
casePageDTO.setPlaintiffList(plaintiffList);
|
//导出用,如果化解不成功查询化解不成功理由
|
if (ObjectUtils.isNotEmpty(terms.get("report"))) {
|
if (MediResultBaseConstsEnum.MEDI_RESULT_2.getIndex().equals(casePageDTO.getMediResult())) {
|
QueryWrapper<CaseWindupApply> windupApplyWrapper = new QueryWrapper<>();
|
windupApplyWrapper.eq("case_id", casePageDTO.getId());
|
windupApplyWrapper.eq("medi_result", MediResultBaseConstsEnum.MEDI_RESULT_2.getIndex());
|
windupApplyWrapper.select("fail_reason");
|
windupApplyWrapper.last("limit 1");
|
CaseWindupApply caseWindupApply = caseWindupApplyService.getOne(windupApplyWrapper);
|
if (ObjectUtils.isNotEmpty(caseWindupApply)) {
|
casePageDTO.setFailReason(caseWindupApply.getFailReason());
|
}
|
}
|
//办理结果
|
if (caseHandleMap.containsKey(casePageDTO.getId())) {
|
List<CaseHandleWeDTO> caseHandleWeDTOS = caseHandleMap.get(casePageDTO.getId());
|
casePageDTO.setHandContent(caseHandleWeDTOS.get(0).getHandContent());
|
}
|
}
|
|
}
|
}
|
return new PageImpl<CasePageDTO>(content, page, total);
|
}
|
|
/**
|
* 按条件分页查询-综合查询
|
*
|
* @param page 分页对象
|
* @param terms 条件
|
* @return Page
|
*/
|
public Page<CasePageDTO> pageQueryArea(PageRequest page, Map<String, Object> terms) {
|
terms.put("statistics", "1");
|
long total = mapper.countTermsAll(terms);
|
List<CasePageDTO> content = mapper.pageTermsAll(page, terms);
|
if (ObjectUtils.isNotEmpty(content)) {
|
for (CasePageDTO casePageDTO : content) {
|
StringBuffer sb = new StringBuffer();
|
if (ObjectUtils.isNotEmpty(casePageDTO.getQueAreaName())) {
|
sb.append("/");
|
sb.append(casePageDTO.getQueAreaName());
|
}
|
if (ObjectUtils.isNotEmpty(casePageDTO.getQueRoadName())) {
|
sb.append("/");
|
sb.append(casePageDTO.getQueRoadName());
|
}
|
if (ObjectUtils.isNotEmpty(casePageDTO.getQueVillageName())) {
|
sb.append("/");
|
sb.append(casePageDTO.getQueVillageName());
|
}
|
if (sb.length() > 1) {
|
casePageDTO.setAreaName(sb.substring(1, sb.length()));
|
}
|
if (ObjectUtils.isNotEmpty(casePageDTO.getCaseTypeFirstName())) {
|
casePageDTO.setCaseTypeName(casePageDTO.getCaseTypeFirstName() + "/" + casePageDTO.getCaseTypeName());
|
}
|
|
if (ObjectUtils.isNotEmpty(casePageDTO.getCaseLevel())) {
|
switch (casePageDTO.getCaseLevel()) {
|
case "1":
|
casePageDTO.setCaseLevel("一级");
|
break;
|
case "2":
|
casePageDTO.setCaseLevel("二级");
|
break;
|
case "3":
|
casePageDTO.setCaseLevel("三级");
|
break;
|
}
|
}
|
//申请人集合
|
List<CasePersonWeDTO> plaintiffList = new ArrayList<>();
|
//被申请人集合
|
List<CasePersonWeDTO> defendantList = new ArrayList<>();
|
//如果是导出调用,不查询extend信息
|
if (ObjectUtils.isEmpty(terms.get("report"))) {
|
QueryWrapper<CasePerson> personWrapper1 = new QueryWrapper<>();
|
personWrapper1.eq("case_id", casePageDTO.getId());
|
List<CasePerson> casePersonList1 = personService.list(personWrapper1);
|
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);
|
}
|
|
/**
|
* 统计调解过程
|
* 计算案件的调解过程相关统计数据,包括不予受理率、化解中率、化解成功率、化解不成功率等
|
*
|
* @param terms 统计条件
|
* @return 包含调解过程统计数据的DTO对象
|
*/
|
public CaseStatisticsBaseDTO statisticsProcess(Map<String, Object> terms) {
|
CaseStatisticsBaseDTO caseStatisticsBaseDTO = mapper.statisticsBaseProcess(terms);
|
Integer baseTotalNum = dellNull(caseStatisticsBaseDTO.getRejectNum()) + dellNull(caseStatisticsBaseDTO.getProcessNum()) + dellNull(caseStatisticsBaseDTO.getFinishNum()) + dellNull(caseStatisticsBaseDTO.getFailNum());
|
caseStatisticsBaseDTO.setRejectRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getRejectNum() * 100, baseTotalNum, 1));
|
caseStatisticsBaseDTO.setProcessRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getProcessNum() * 100, baseTotalNum, 1));
|
caseStatisticsBaseDTO.setFinishRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getFinishNum() * 100, baseTotalNum, 1));
|
caseStatisticsBaseDTO.setFailRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getFailNum() * 100, baseTotalNum, 1));
|
// 如果 baseTotalNum为0 设置 总数为0
|
caseStatisticsBaseDTO.setTotalNum(baseTotalNum);
|
|
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));
|
|
return caseStatisticsBaseDTO;
|
}
|
|
|
/**
|
* 纠纷态势
|
* 筛选范围:如果已经有承办部门,就按承办部门的区域筛选。如果没有承办部门按问题归属区域筛选
|
*/
|
public CaseStatisticsBaseDTO statistics(Map<String, Object> terms, String userId) throws IOException {
|
|
terms.put("statistics", "1");
|
//根据用户筛选区域范围
|
CtUnitDTO ctUnitDTO = null;
|
if (ObjectUtils.isNotEmpty(userId)) {
|
ctUnitDTO = custClient.getUnitByUserId(userId);
|
}
|
String areaCode = null;
|
//目前没有村居数据,所以单位等级是4的也归集到3里面
|
if (ObjectUtils.isNotEmpty(ctUnitDTO)) {
|
if (ctUnitDTO.getUnitGrade().equals(1)) {
|
terms.put("queCity", ctUnitDTO.getCity());
|
} else if (ctUnitDTO.getUnitGrade().equals(2)) {
|
terms.put("queArea", ctUnitDTO.getArea());
|
} else if (ctUnitDTO.getUnitGrade().equals(3)) {
|
terms.put("queRoad", ctUnitDTO.getRoad());
|
} else if (ctUnitDTO.getUnitGrade().equals(4)) {
|
terms.put("queVillage", ctUnitDTO.getVillage());
|
}
|
}
|
|
//目前没有村居,所以区和街道进来都是按街道展示
|
String areaType = null;
|
String childAreaType = null;
|
List<Integer> unitGrades = new ArrayList<>();
|
List<Integer> childUnitGrades = new ArrayList<>();
|
String childUnitGradeStr = null;
|
String unitGradeStr = null;
|
Boolean isLast = false;
|
if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) {
|
terms.remove("queArea");
|
terms.remove("queCity");
|
terms.remove("queRoad");
|
areaType = "4";
|
childAreaType = "5";
|
areaCode = terms.get("queVillage") + "";
|
unitGrades.add(4);
|
childUnitGrades.add(5);
|
childUnitGradeStr = "5";
|
unitGradeStr = "4";
|
isLast = true;
|
} else if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) {
|
terms.remove("queArea");
|
terms.remove("queCity");
|
areaType = "3";
|
childAreaType = "4";
|
areaCode = terms.get("queRoad") + "";
|
unitGrades.add(3);
|
childUnitGrades.add(4);
|
childUnitGradeStr = "4";
|
unitGradeStr = "3";
|
} else if (ObjectUtils.isNotEmpty(terms.get("queArea"))) {
|
terms.remove("queCity");
|
areaType = "2";
|
childAreaType = "3";
|
areaCode = terms.get("queArea") + "";
|
unitGrades.add(2);
|
childUnitGrades.add(3);
|
childUnitGrades.add(4);
|
childUnitGradeStr = "3,4";
|
unitGradeStr = "2";
|
} else {
|
areaType = "1";
|
childAreaType = "2";
|
unitGrades.add(1);
|
childUnitGrades.add(2);
|
childUnitGrades.add(3);
|
childUnitGrades.add(4);
|
if (ObjectUtils.isNotEmpty(ctUnitDTO)) {
|
areaCode = ctUnitDTO.getCity();
|
} else {
|
areaCode = "440100";
|
}
|
childUnitGradeStr = "2,3,4";
|
unitGradeStr = "1";
|
}
|
//基础数据统计
|
terms.put("areaType", areaType);
|
// 调用统计调解过程的方法
|
CaseStatisticsBaseDTO caseStatisticsBaseDTO = statisticsProcess(terms);
|
//区域数据统计
|
List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS = new ArrayList<>();
|
if (!isLast) {
|
terms.put("areaType", childAreaType);
|
terms.put("unitGrades", childUnitGrades);
|
caseStatisticsAreaDTOS = mapper.statisticsArea(terms);
|
if (ObjectUtils.isEmpty(caseStatisticsAreaDTOS)) {
|
caseStatisticsAreaDTOS = new ArrayList<>();
|
} else {
|
for (CaseStatisticsAreaDTO caseStatisticsAreaDTO : caseStatisticsAreaDTOS) {
|
caseStatisticsAreaDTO.setAreaType(childAreaType);
|
caseStatisticsAreaDTO.setUnitGrades(childUnitGradeStr);
|
if ("4".equals(childAreaType)) {
|
caseStatisticsAreaDTO.setQueVillage(caseStatisticsAreaDTO.getAreaCode());
|
} else if ("3".equals(childAreaType)) {
|
caseStatisticsAreaDTO.setQueRoad(caseStatisticsAreaDTO.getAreaCode());
|
} else if ("2".equals(childAreaType)) {
|
caseStatisticsAreaDTO.setQueArea(caseStatisticsAreaDTO.getAreaCode());
|
}
|
}
|
}
|
}
|
|
//本级区数据
|
terms.put("areaType", areaType);
|
terms.put("unitGrades", unitGrades);
|
List<CaseStatisticsAreaDTO> allAreas = mapper.statisticsArea(terms);
|
CaseStatisticsAreaDTO allArea = new CaseStatisticsAreaDTO();
|
if (ObjectUtils.isNotEmpty(allAreas)) {
|
allArea = allAreas.get(0);
|
}
|
terms.remove("unitGrades");
|
allArea.setAreaName("本级");
|
allArea.setAreaCode("0");
|
allArea.setAreaType(areaType);
|
allArea.setUnitGrades(unitGradeStr);
|
if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) {
|
allArea.setQueVillage(terms.get("queVillage") + "");
|
}
|
if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) {
|
allArea.setQueRoad(terms.get("queRoad") + "");
|
}
|
if (ObjectUtils.isNotEmpty(terms.get("queArea"))) {
|
allArea.setQueArea(terms.get("queArea") + "");
|
}
|
if (ObjectUtils.isNotEmpty(terms.get("queCity"))) {
|
allArea.setQueCity(terms.get("queCity") + "");
|
}
|
List<String> areaCodeList = new ArrayList<>();
|
List<CaseStatisticsAreaDTO> areaList = new ArrayList<>();
|
List<String> areaNames = new ArrayList<>();//为兼容白云区数据
|
Integer areaTotal = allArea.getCaseNum();
|
for (CaseStatisticsAreaDTO caseStatisticsAreaDTO : caseStatisticsAreaDTOS) {
|
areaNames.add(caseStatisticsAreaDTO.getAreaName());
|
if (ObjectUtils.isEmpty(caseStatisticsAreaDTO.getAreaCode())) {
|
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()));
|
allArea.setRejectNum(dellNull(caseStatisticsAreaDTO.getRejectNum()) + dellNull(allArea.getRejectNum()));
|
} else {
|
areaList.add(caseStatisticsAreaDTO);
|
areaCodeList.add(caseStatisticsAreaDTO.getAreaCode());
|
}
|
areaTotal = areaTotal + caseStatisticsAreaDTO.getCaseNum();
|
|
//本及:承办单位是本及和没有承办单位并且没有下级区域编码
|
// if(ObjectUtils.isEmpty(caseStatisticsAreaDTO.getAreaCode()) || unitGrades.contains(caseStatisticsAreaDTO.getUnitGrade())){
|
// 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()));
|
// }else{
|
// areaList.add(caseStatisticsAreaDTO);
|
// areaCodeList.add(caseStatisticsAreaDTO.getAreaCode());
|
// }
|
}
|
areaList.add(allArea);
|
// if ("1".equals(areaType)) {
|
// Map<String, String> area = getArea();
|
// for (String areaName : area.keySet()) {
|
// if (!areaNames.contains(areaName)) {
|
// CaseStatisticsAreaDTO areaChild = new CaseStatisticsAreaDTO();
|
// areaChild.setAreaCode(area.get(areaName));
|
// areaChild.setAreaName(areaName);
|
// areaList.add(areaChild);
|
// }
|
// }
|
// }
|
|
List<QueAreaDTO> queArea = listAreaByType(areaCode);
|
log.info("listAreaByType {}", JSON.toJSONString(queArea));
|
for (QueAreaDTO 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);
|
areaList.add(areaChild);
|
}
|
}
|
|
if (ObjectUtils.isNotEmpty(areaList)) {
|
sortArea(areaList);
|
}
|
|
caseStatisticsBaseDTO.setAreaList(areaList);
|
//纠纷类型统计
|
List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS = mapper.statisticsTypeFirst(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 < 6 && !"其他".equals(caseStatisticsTypeDTO.getCaseTypeName())) {
|
typeList.add(caseStatisticsTypeDTO);
|
i++;
|
} else {
|
otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum());
|
}
|
// if (i > 5) {
|
// otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum());
|
// } else {
|
// typeList.add(caseStatisticsTypeDTO);
|
// }
|
|
}
|
for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : typeList) {
|
caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1));
|
}
|
if (otherCaseNum > 0) {
|
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);
|
if (ObjectUtils.isEmpty(oneSource)) {
|
oneSource = new CaseStatisticsSourceDTO();
|
}
|
oneSource.setCanalName(CaseBaseConstsEnum.CASE_CANAL_1.getDes());
|
terms.put("canal", CaseBaseConstsEnum.CASE_CANAL_2.getIndex());
|
CaseStatisticsSourceDTO twoSource = mapper.statisticsSource(terms);
|
if (ObjectUtils.isEmpty(twoSource)) {
|
twoSource = new CaseStatisticsSourceDTO();
|
}
|
twoSource.setCanalName(CaseBaseConstsEnum.CASE_CANAL_2.getDes());
|
|
terms.put("canal", CaseBaseConstsEnum.CASE_CANAL_3.getIndex());
|
CaseStatisticsSourceDTO threeSource = mapper.statisticsSource(terms);
|
if (ObjectUtils.isEmpty(threeSource)) {
|
threeSource = new CaseStatisticsSourceDTO();
|
}
|
|
terms.put("canal", CaseBaseConstsEnum.CASE_CANAL_4.getIndex());
|
CaseStatisticsSourceDTO fourSource = mapper.statisticsSource(terms);
|
if (ObjectUtils.isEmpty(fourSource)) {
|
fourSource = new CaseStatisticsSourceDTO();
|
}
|
//非警务纠纷
|
terms.put("canalSecond", CaseBaseConstsEnum.CASE_CANAL_SECOND_1.getIndex());
|
CaseStatisticsSourceDTO oneSecondSource = mapper.statisticsSource(terms);
|
if (ObjectUtils.isEmpty(oneSecondSource)) {
|
oneSecondSource = new CaseStatisticsSourceDTO();
|
}
|
//12345
|
terms.put("canalSecond", CaseBaseConstsEnum.CASE_CANAL_SECOND_3.getIndex());
|
CaseStatisticsSourceDTO twoSecondSource = mapper.statisticsSource(terms);
|
if (ObjectUtils.isEmpty(twoSecondSource)) {
|
twoSecondSource = new CaseStatisticsSourceDTO();
|
}
|
//网格上报
|
terms.put("canalSecond", CaseBaseConstsEnum.CASE_CANAL_SECOND_2.getIndex());
|
CaseStatisticsSourceDTO threeSecondSource = mapper.statisticsSource(terms);
|
if (ObjectUtils.isEmpty(threeSecondSource)) {
|
threeSecondSource = new CaseStatisticsSourceDTO();
|
}
|
terms.remove("canalSecond");
|
List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS1 = mapper.countByCanalSecond(terms);
|
if (caseStatisticsTypeDTOS1 != null && caseStatisticsTypeDTOS1.size() > 0) {
|
for (CaseStatisticsTypeDTO item : caseStatisticsTypeDTOS1) {
|
if (CaseBaseConstsEnum.CASE_CANAL_SECOND_1.getIndex().equals(item.getCaseType())) {
|
caseStatisticsBaseDTO.setFjwjfNum(item.getCaseNum());
|
} else if (CaseBaseConstsEnum.CASE_CANAL_SECOND_3.getIndex().equals(item.getCaseType())) {
|
caseStatisticsBaseDTO.setOttffNum(item.getCaseNum());
|
} else if (CaseBaseConstsEnum.CASE_CANAL_SECOND_4.getIndex().equals(item.getCaseType())) {
|
caseStatisticsBaseDTO.setRmtjNum(item.getCaseNum());
|
} else if (CaseBaseConstsEnum.CASE_CANAL_SECOND_5.getIndex().equals(item.getCaseType())) {
|
caseStatisticsBaseDTO.setLdzcNum(item.getCaseNum());
|
}
|
}
|
}
|
|
Integer sourceTotalNum = dellNull(oneSource.getCaseNum()) + dellNull(twoSource.getCaseNum()) + dellNull(threeSource.getCaseNum()) + dellNull(fourSource.getCaseNum());
|
Integer oneTotalNum = dellNull(oneSource.getResolveNum()) + dellNull(oneSource.getUnResolveNum());
|
Integer twoTotalNum = dellNull(twoSource.getResolveNum()) + dellNull(twoSource.getUnResolveNum());
|
Integer threeTotalNum = dellNull(threeSource.getResolveNum()) + dellNull(threeSource.getUnResolveNum());
|
Integer fourTotalNum = dellNull(fourSource.getResolveNum()) + dellNull(fourSource.getUnResolveNum());
|
oneSource.setCaseRate(BigDecimalUtil.integerDivideDelZero(oneSource.getCaseNum() * 100, sourceTotalNum, 1));
|
oneSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(oneSource.getResolveNum() * 100, oneTotalNum, 1));
|
|
twoSource.setCaseRate(BigDecimalUtil.integerDivideDelZero(twoSource.getCaseNum() * 100, sourceTotalNum, 1));
|
twoSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(twoSource.getResolveNum() * 100, twoTotalNum, 1));
|
|
threeSource.setCanalName(CaseBaseConstsEnum.CASE_CANAL_3.getDes());
|
threeSource.setCaseRate(BigDecimalUtil.integerDivideDelZero(threeSource.getCaseNum() * 100, sourceTotalNum, 1));
|
threeSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(threeSource.getResolveNum() * 100, threeTotalNum, 1));
|
|
fourSource.setCanalName(CaseBaseConstsEnum.CASE_CANAL_4.getDes());
|
fourSource.setCaseRate(BigDecimalUtil.integerDivideDelZero(fourSource.getCaseNum() * 100, sourceTotalNum, 1));
|
fourSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(fourSource.getResolveNum() * 100, fourTotalNum, 1));
|
|
oneSecondSource.setCanalName(CaseBaseConstsEnum.CASE_CANAL_SECOND_1.getDes());
|
oneSecondSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(oneSecondSource.getResolveNum() * 100, oneSecondSource.getCaseNum(), 1));
|
|
twoSecondSource.setCanalName(CaseBaseConstsEnum.CASE_CANAL_SECOND_3.getDes());
|
twoSecondSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(twoSecondSource.getResolveNum() * 100, twoSecondSource.getCaseNum(), 1));
|
|
threeSecondSource.setCanalName(CaseBaseConstsEnum.CASE_CANAL_SECOND_2.getDes());
|
threeSecondSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(threeSecondSource.getResolveNum() * 100, threeSecondSource.getCaseNum(), 1));
|
|
caseStatisticsBaseDTO.setOneSource(oneSource);
|
caseStatisticsBaseDTO.setTwoSource(twoSource);
|
caseStatisticsBaseDTO.setThreeSource(threeSource);
|
caseStatisticsBaseDTO.setFourSource(fourSource);
|
caseStatisticsBaseDTO.setOneSecondSource(oneSecondSource);
|
caseStatisticsBaseDTO.setTwoSecondSource(twoSecondSource);
|
caseStatisticsBaseDTO.setThreeSecondSource(threeSecondSource);
|
|
//案件集合
|
// if (ObjectUtils.isEmpty(canal)) {
|
// terms.remove("canal");
|
// } else {
|
// terms.put("canal", canal);
|
// }
|
// Sort sort = Sort.by(Sort.Direction.DESC, "a.create_time");
|
// PageRequest pageRequest = PageRequest.of(0, 30, sort);
|
// terms.remove("statistics");
|
// 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 Map<String, String> getArea() {
|
Map<String, String> map = new HashMap<>();
|
map.put("越秀区", "2");
|
map.put("海珠区", "3");
|
map.put("荔湾区", "4");
|
map.put("天河区", "5");
|
map.put("白云区", "6");
|
map.put("黄埔区", "7");
|
map.put("花都区", "8");
|
map.put("番禺区", "9");
|
map.put("南沙区", "10");
|
map.put("从化区", "11");
|
map.put("增城区", "12");
|
return map;
|
}
|
|
public List<CaseStatisticsAreaDTO> sortArea(List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS) {
|
Map<String, String> map = getArea();
|
for (CaseStatisticsAreaDTO caseStatisticsAreaDTO : caseStatisticsAreaDTOS) {
|
log.info("xsd:{}", caseStatisticsAreaDTO);
|
if (caseStatisticsAreaDTO.getAreaCode() == null) {
|
caseStatisticsAreaDTO.setAreaCode("440111-113-001".replace("-", ""));
|
caseStatisticsAreaDTO.setAreaName("江兴社区");
|
} else {
|
caseStatisticsAreaDTO.setAreaCode(caseStatisticsAreaDTO.getAreaCode().replace("-", ""));
|
|
}
|
if (map.containsKey(caseStatisticsAreaDTO.getAreaName())) {
|
caseStatisticsAreaDTO.setAreaCode(map.get(caseStatisticsAreaDTO.getAreaName()));
|
}
|
}
|
caseStatisticsAreaDTOS.sort((o1, o2) -> {
|
Long totalScore1 = Long.valueOf(o1.getAreaCode());
|
Long totalScore2 = Long.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;
|
}
|
|
|
/**
|
* 根据不同的等级获取不同区域子集合
|
*/
|
public List<QueAreaDTO> listAreaByType(Object areaCode) {
|
log.info("listAreaByType {},{}", areaCode);
|
String parentId = "440100";
|
if (ObjectUtils.isNotEmpty(areaCode)) {
|
parentId = String.valueOf(areaCode);
|
}
|
List<QueAreaDTO> queAreaDTOS = sysClient.listByParentId(parentId);
|
return queAreaDTOS;
|
}
|
|
public Page<CasePageDTO> pagePerson(PageRequest page, Map<String, Object> terms, String certiNo) {
|
QueryWrapper<CasePerson> personWrapper = new QueryWrapper<>();
|
personWrapper.select("case_id,certi_no");
|
personWrapper.eq("certi_no", certiNo);
|
List<CasePerson> personList = personService.list(personWrapper);
|
List<String> ids = new ArrayList<>();
|
if (ObjectUtils.isNotEmpty(personList)) {
|
for (CasePerson casePerson : personList) {
|
ids.add(casePerson.getCaseId());
|
}
|
}
|
QueryWrapper<CaseAgent> agentWrapper = new QueryWrapper<>();
|
agentWrapper.select("case_id,certi_no");
|
agentWrapper.in("certi_no", certiNo);
|
List<CaseAgent> agentList = agentService.list(agentWrapper);
|
if (ObjectUtils.isNotEmpty(agentList)) {
|
for (CaseAgent caseAgent : agentList) {
|
ids.add(caseAgent.getCaseId());
|
}
|
}
|
if (ObjectUtils.isEmpty(ids)) {
|
return new PageImpl<CasePageDTO>(new ArrayList<>(), page, 0);
|
}
|
terms.put("ids", ids);
|
long total = mapper.countTermsAll(terms);
|
List<CasePageDTO> content = mapper.pageTermsAll(page, terms);
|
if (ObjectUtils.isNotEmpty(content)) {
|
for (CasePageDTO casePageDTO : content) {
|
if (ObjectUtils.isNotEmpty(casePageDTO.getQueRoadName())) {
|
casePageDTO.setAreaName(casePageDTO.getQueRoadName());
|
} else if (ObjectUtils.isNotEmpty(casePageDTO.getAreaName())) {
|
casePageDTO.setAreaName(casePageDTO.getAreaName());
|
} else if (ObjectUtils.isNotEmpty(casePageDTO.getQueCityName())) {
|
casePageDTO.setAreaName(casePageDTO.getQueCityName());
|
}
|
if (ObjectUtils.isNotEmpty(casePageDTO.getCaseLevel())) {
|
switch (casePageDTO.getCaseLevel()) {
|
case "1":
|
casePageDTO.setCaseLevel("一级");
|
break;
|
case "2":
|
casePageDTO.setCaseLevel("二级");
|
break;
|
case "3":
|
casePageDTO.setCaseLevel("三级");
|
break;
|
}
|
}
|
}
|
}
|
return new PageImpl<CasePageDTO>(content, page, total);
|
}
|
|
public CasePersonCountBO countPerson(String certiNo) {
|
CasePersonCountBO casePersonCountBO = new CasePersonCountBO();
|
|
Integer plaintiffNum = 0;//申请方当事人数
|
Integer defendantNum = 0;//被申请方当事人数
|
Integer pagentsNum = 0;//申请方代理人数
|
Integer dagentsNum = 0;//被申请方代理人数
|
|
List<CasePerson> personList = personService.listByCertiNo(certiNo);
|
List<String> ids = new ArrayList<>();
|
if (ObjectUtils.isNotEmpty(personList)) {
|
for (CasePerson casePerson : personList) {
|
ids.add(casePerson.getCaseId());
|
if (CaseBaseConstsEnum.PERSON_TYPE_1.getIndex().equals(casePerson.getPerType())) {
|
plaintiffNum++;
|
}
|
if (CaseBaseConstsEnum.PERSON_TYPE_2.getIndex().equals(casePerson.getPerType())) {
|
defendantNum++;
|
}
|
}
|
}
|
|
List<CaseAgent> agentList = agentService.listByCertiNo(certiNo);
|
if (ObjectUtils.isNotEmpty(agentList)) {
|
for (CaseAgent caseAgent : agentList) {
|
ids.add(caseAgent.getCaseId());
|
if (CaseBaseConstsEnum.PERSON_TYPE_3.getIndex().equals(caseAgent.getPerType())) {
|
pagentsNum++;
|
}
|
if (CaseBaseConstsEnum.PERSON_TYPE_4.getIndex().equals(caseAgent.getPerType())) {
|
dagentsNum++;
|
}
|
}
|
}
|
casePersonCountBO.setDagentsNum(dagentsNum);
|
casePersonCountBO.setPagentsNum(pagentsNum);
|
casePersonCountBO.setDefendantNum(defendantNum);
|
casePersonCountBO.setPlaintiffNum(plaintiffNum);
|
casePersonCountBO.setTotalNum(ids.size());
|
casePersonCountBO.setZzzxNum(ids.size());
|
return casePersonCountBO;
|
}
|
|
public List<CaseStatisticsTypeDTO> statisticsCaseType(Map<String, Object> terms, String userId) {
|
//根据用户筛选区域范围
|
CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId);
|
if (ctUnitDTO.getUnitGrade().equals(2)) {
|
terms.put("queArea", ctUnitDTO.getArea());
|
} else if (ctUnitDTO.getUnitGrade().equals(3) || ctUnitDTO.getUnitGrade().equals(4)) {
|
terms.put("queRoad", ctUnitDTO.getRoad());
|
}
|
if (ObjectUtils.isEmpty(terms.get("caseTypeFirst"))) {
|
//筛选一级为其他的纠纷类型
|
List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS = mapper.statisticsTypeFirst(terms);
|
if (ObjectUtils.isNotEmpty(caseStatisticsTypeDTOS)) {
|
sortType(caseStatisticsTypeDTOS);
|
}
|
int i = 1;
|
List<String> caseTypeList = new ArrayList<>();
|
for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) {
|
if (i < 6 && !"其他".equals(caseStatisticsTypeDTO.getCaseTypeName())) {
|
i++;
|
} else {
|
caseTypeList.add(caseStatisticsTypeDTO.getCaseType());
|
}
|
// if (i > 5) {
|
// caseTypeList.add(caseStatisticsTypeDTO.getCaseType());
|
// }
|
// i++;
|
}
|
if (ObjectUtils.isEmpty(caseTypeList)) {
|
return new ArrayList<>();
|
}
|
terms.put("caseTypeFirstList", caseTypeList);
|
}
|
List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS = mapper.statisticsType(terms);
|
if (ObjectUtils.isNotEmpty(caseStatisticsTypeDTOS)) {
|
sortType(caseStatisticsTypeDTOS);
|
}
|
Integer typeTotalNum = 0;
|
for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) {
|
typeTotalNum = typeTotalNum + dellNull(caseStatisticsTypeDTO.getCaseNum());
|
}
|
for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) {
|
caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1));
|
}
|
return caseStatisticsTypeDTOS;
|
}
|
|
public CaseOverviewDTO overview(Map<String, Object> terms) {
|
CaseOverviewDTO caseOverviewDTO = new CaseOverviewDTO();
|
List<CaseOverviewDetailDTO> accList = mapper.overviewAcc(terms);
|
List<CaseOverviewDetailDTO> sourceList = mapper.overviewSource(terms);
|
List<CaseOverviewDetailDTO> flowList = mapper.overviewFlow(terms);
|
List<CaseOverviewDetailDTO> reusltList = mapper.overviewResult(terms);
|
Map<String, CaseOverviewDetailDTO> accMap = new HashMap<>();
|
Map<String, CaseOverviewDetailDTO> flowMap = new HashMap<>();
|
Map<String, CaseOverviewDetailDTO> sourceMap = new HashMap<>();
|
Map<String, CaseOverviewDetailDTO> reusltMap = new HashMap<>();
|
//将数据按区域分类
|
if (ObjectUtils.isNotEmpty(accList)) {
|
for (CaseOverviewDetailDTO caseOverviewDetailDTO : accList) {
|
if (ObjectUtils.isNotEmpty(caseOverviewDetailDTO.getAreaCode()) && !"1".equals(caseOverviewDetailDTO.getAreaCode())) {
|
accMap.put(caseOverviewDetailDTO.getAreaCode(), caseOverviewDetailDTO);
|
} else {
|
if (!accMap.containsKey("1")) {
|
accMap.put("1", caseOverviewDetailDTO);
|
} else {
|
CaseOverviewDetailDTO caseOverviewDetailDTO1 = accMap.get("1");
|
caseOverviewDetailDTO1.setAccAllNum(caseOverviewDetailDTO1.getAccAllNum() + caseOverviewDetailDTO.getAccAllNum());
|
caseOverviewDetailDTO1.setAccLoginBmNum(caseOverviewDetailDTO1.getAccLoginBmNum() + caseOverviewDetailDTO.getAccLoginBmNum());
|
caseOverviewDetailDTO1.setAccLoginZzNum(caseOverviewDetailDTO1.getAccLoginZzNum() + caseOverviewDetailDTO.getAccLoginZzNum());
|
caseOverviewDetailDTO1.setAccAddNum(caseOverviewDetailDTO1.getAccAddNum() + caseOverviewDetailDTO.getAccAddNum());
|
accMap.put("1", caseOverviewDetailDTO1);
|
}
|
}
|
}
|
}
|
if (ObjectUtils.isNotEmpty(flowList)) {
|
for (CaseOverviewDetailDTO caseOverviewDetailDTO : flowList) {
|
if (ObjectUtils.isNotEmpty(caseOverviewDetailDTO.getAreaCode()) && !"1".equals(caseOverviewDetailDTO.getAreaCode())) {
|
flowMap.put(caseOverviewDetailDTO.getAreaCode(), caseOverviewDetailDTO);
|
} else {
|
if (!flowMap.containsKey("1")) {
|
flowMap.put("1", caseOverviewDetailDTO);
|
} else {
|
CaseOverviewDetailDTO caseOverviewDetailDTO1 = flowMap.get("1");
|
caseOverviewDetailDTO1.setFlowAllNum(caseOverviewDetailDTO1.getFlowAllNum() + caseOverviewDetailDTO.getFlowAllNum());
|
caseOverviewDetailDTO1.setFlowZxslNum(caseOverviewDetailDTO1.getFlowZxslNum() + caseOverviewDetailDTO.getFlowZxslNum());
|
caseOverviewDetailDTO1.setFlowLzslNum(caseOverviewDetailDTO1.getFlowLzslNum() + caseOverviewDetailDTO.getFlowLzslNum());
|
caseOverviewDetailDTO1.setFlowLzzNum(caseOverviewDetailDTO1.getFlowLzzNum() + caseOverviewDetailDTO.getFlowLzzNum());
|
caseOverviewDetailDTO1.setFlowByslNum(caseOverviewDetailDTO1.getFlowByslNum() + caseOverviewDetailDTO.getFlowByslNum());
|
flowMap.put("1", caseOverviewDetailDTO1);
|
}
|
}
|
}
|
}
|
if (ObjectUtils.isNotEmpty(sourceList)) {
|
for (CaseOverviewDetailDTO caseOverviewDetailDTO : sourceList) {
|
if (ObjectUtils.isNotEmpty(caseOverviewDetailDTO.getAreaCode()) && !"1".equals(caseOverviewDetailDTO.getAreaCode())) {
|
sourceMap.put(caseOverviewDetailDTO.getAreaCode(), caseOverviewDetailDTO);
|
} else {
|
if (!sourceMap.containsKey("1")) {
|
sourceMap.put("1", caseOverviewDetailDTO);
|
} else {
|
CaseOverviewDetailDTO caseOverviewDetailDTO1 = sourceMap.get("1");
|
caseOverviewDetailDTO1.setCaseAllNum(caseOverviewDetailDTO1.getCaseAllNum() + caseOverviewDetailDTO.getCaseAllNum());
|
caseOverviewDetailDTO1.setCaseXsNum(caseOverviewDetailDTO1.getCaseXsNum() + caseOverviewDetailDTO.getCaseXsNum());
|
caseOverviewDetailDTO1.setCaseDtNum(caseOverviewDetailDTO1.getCaseDtNum() + caseOverviewDetailDTO.getCaseDtNum());
|
caseOverviewDetailDTO1.setCaseZxpcNum(caseOverviewDetailDTO1.getCaseZxpcNum() + caseOverviewDetailDTO.getCaseZxpcNum());
|
caseOverviewDetailDTO1.setCaseAjdrNum(caseOverviewDetailDTO1.getCaseAjdrNum() + caseOverviewDetailDTO.getCaseAjdrNum());
|
sourceMap.put("1", caseOverviewDetailDTO1);
|
}
|
}
|
}
|
}
|
|
if (ObjectUtils.isNotEmpty(reusltList)) {
|
for (CaseOverviewDetailDTO caseOverviewDetailDTO : reusltList) {
|
if (ObjectUtils.isNotEmpty(caseOverviewDetailDTO.getAreaCode()) && !"1".equals(caseOverviewDetailDTO.getAreaCode())) {
|
reusltMap.put(caseOverviewDetailDTO.getAreaCode(), caseOverviewDetailDTO);
|
} else {
|
if (!reusltMap.containsKey("1")) {
|
reusltMap.put("1", caseOverviewDetailDTO);
|
} else {
|
CaseOverviewDetailDTO caseOverviewDetailDTO1 = reusltMap.get("1");
|
caseOverviewDetailDTO1.setCaseAllNum(caseOverviewDetailDTO1.getCaseAllNum() + caseOverviewDetailDTO.getCaseAllNum());
|
caseOverviewDetailDTO1.setCaseXsNum(caseOverviewDetailDTO1.getCaseXsNum() + caseOverviewDetailDTO.getCaseXsNum());
|
caseOverviewDetailDTO1.setCaseDtNum(caseOverviewDetailDTO1.getCaseDtNum() + caseOverviewDetailDTO.getCaseDtNum());
|
caseOverviewDetailDTO1.setCaseZxpcNum(caseOverviewDetailDTO1.getCaseZxpcNum() + caseOverviewDetailDTO.getCaseZxpcNum());
|
caseOverviewDetailDTO1.setCaseAjdrNum(caseOverviewDetailDTO1.getCaseAjdrNum() + caseOverviewDetailDTO.getCaseAjdrNum());
|
reusltMap.put("1", caseOverviewDetailDTO1);
|
}
|
}
|
}
|
}
|
|
List<QueAreaDTO> queArea = listAreaByType(terms.get("areaCode"));
|
QueAreaDTO queAreaDTO = new QueAreaDTO();
|
queAreaDTO.setAreaCode("1");
|
queAreaDTO.setAreaName("本级");
|
queArea.add(queAreaDTO);
|
// List<String> areaNames = queArea.stream().map(QueAreaDTO::getAreaName).collect(Collectors.toList());
|
// if("2".equals(terms.get("areaType"))){
|
// //表里面目前只有白云区,做兼容
|
// Map<String, String> area = getArea();
|
// for (String areaName : area.keySet()) {
|
// if (!areaNames.contains(areaName)) {
|
// QueAreaDTO areaChild = new QueAreaDTO();
|
// areaChild.setAreaCode(area.get(areaName));
|
// areaChild.setAreaName(areaName);
|
// queArea.add(areaChild);
|
// }
|
// }
|
// }
|
log.info("listAreaByType {}", JSON.toJSONString(queArea));
|
List<CaseOverviewDetailDTO> childList = new ArrayList<>();
|
//将分类好的数据放到区域中
|
for (QueAreaDTO caseAreaDTO : queArea) {
|
CaseOverviewDetailDTO caseOverviewDetailDTO = new CaseOverviewDetailDTO();
|
caseOverviewDetailDTO.setAreaName(caseAreaDTO.getAreaName());
|
caseOverviewDetailDTO.setAreaCode(caseAreaDTO.getAreaCode());
|
Integer sortNum = 0;
|
if (accMap.containsKey(caseAreaDTO.getAreaCode())) {
|
CaseOverviewDetailDTO caseOverviewDetailDTO1 = accMap.get(caseAreaDTO.getAreaCode());
|
caseOverviewDetailDTO.setAccAllNum(caseOverviewDetailDTO1.getAccAllNum());
|
caseOverviewDetailDTO.setAccLoginBmNum(caseOverviewDetailDTO1.getAccLoginBmNum());
|
caseOverviewDetailDTO.setAccLoginZzNum(caseOverviewDetailDTO1.getAccLoginZzNum());
|
caseOverviewDetailDTO.setAccAddNum(caseOverviewDetailDTO1.getAccAddNum());
|
sortNum = sortNum + caseOverviewDetailDTO1.getAccLoginBmNum() + caseOverviewDetailDTO1.getAccLoginZzNum() + caseOverviewDetailDTO1.getAccAddNum();
|
}
|
if (flowMap.containsKey(caseAreaDTO.getAreaCode())) {
|
CaseOverviewDetailDTO caseOverviewDetailDTO1 = flowMap.get(caseAreaDTO.getAreaCode());
|
caseOverviewDetailDTO.setFlowAllNum(caseOverviewDetailDTO1.getFlowAllNum());
|
caseOverviewDetailDTO.setFlowZxslNum(caseOverviewDetailDTO1.getFlowZxslNum());
|
caseOverviewDetailDTO.setFlowLzslNum(caseOverviewDetailDTO1.getFlowLzslNum());
|
caseOverviewDetailDTO.setFlowLzzNum(caseOverviewDetailDTO1.getFlowLzzNum());
|
caseOverviewDetailDTO.setFlowByslNum(caseOverviewDetailDTO1.getFlowByslNum());
|
sortNum = sortNum + caseOverviewDetailDTO1.getFlowAllNum();
|
}
|
if (sourceMap.containsKey(caseAreaDTO.getAreaCode())) {
|
CaseOverviewDetailDTO caseOverviewDetailDTO1 = sourceMap.get(caseAreaDTO.getAreaCode());
|
caseOverviewDetailDTO.setCaseAllNum(caseOverviewDetailDTO1.getCaseAllNum());
|
caseOverviewDetailDTO.setCaseXsNum(caseOverviewDetailDTO1.getCaseXsNum());
|
caseOverviewDetailDTO.setCaseDtNum(caseOverviewDetailDTO1.getCaseDtNum());
|
caseOverviewDetailDTO.setCaseZxpcNum(caseOverviewDetailDTO1.getCaseZxpcNum());
|
caseOverviewDetailDTO.setCaseAjdrNum(caseOverviewDetailDTO1.getCaseAjdrNum());
|
sortNum = sortNum + caseOverviewDetailDTO1.getCaseAllNum();
|
}
|
if (reusltMap.containsKey(caseAreaDTO.getAreaCode())) {
|
CaseOverviewDetailDTO caseOverviewDetailDTO1 = reusltMap.get(caseAreaDTO.getAreaCode());
|
caseOverviewDetailDTO.setSourceHjcgNum(caseOverviewDetailDTO1.getSourceHjcgNum());
|
caseOverviewDetailDTO.setSourceHjbcgNum(caseOverviewDetailDTO1.getSourceHjbcgNum());
|
caseOverviewDetailDTO.setSourceHjzNum(caseOverviewDetailDTO1.getSourceHjzNum());
|
caseOverviewDetailDTO.setSourceByslNum(caseOverviewDetailDTO1.getSourceByslNum());
|
}
|
if ("1".equals(caseOverviewDetailDTO.getAreaCode())) {
|
sortNum = 9999999;
|
}
|
caseOverviewDetailDTO.setSortNum(sortNum);
|
childList.add(caseOverviewDetailDTO);
|
}
|
CaseOverviewDetailDTO parent = new CaseOverviewDetailDTO();
|
parent.setAreaName("合计");
|
for (CaseOverviewDetailDTO caseOverviewDetailDTO : childList) {
|
parent.setAccAllNum(parent.getAccAllNum() + caseOverviewDetailDTO.getAccAllNum());
|
parent.setAccLoginBmNum(parent.getAccLoginBmNum() + caseOverviewDetailDTO.getAccLoginBmNum());
|
parent.setAccLoginZzNum(parent.getAccLoginZzNum() + caseOverviewDetailDTO.getAccLoginZzNum());
|
parent.setAccAddNum(parent.getAccAddNum() + caseOverviewDetailDTO.getAccAddNum());
|
parent.setCaseAllNum(parent.getCaseAllNum() + caseOverviewDetailDTO.getCaseAllNum());
|
parent.setCaseXsNum(parent.getCaseXsNum() + caseOverviewDetailDTO.getCaseXsNum());
|
parent.setCaseDtNum(parent.getCaseDtNum() + caseOverviewDetailDTO.getCaseDtNum());
|
parent.setCaseZxpcNum(parent.getCaseZxpcNum() + caseOverviewDetailDTO.getCaseZxpcNum());
|
parent.setCaseAjdrNum(parent.getCaseAjdrNum() + caseOverviewDetailDTO.getCaseAjdrNum());
|
parent.setFlowAllNum(parent.getFlowAllNum() + caseOverviewDetailDTO.getFlowAllNum());
|
parent.setFlowBjNum(parent.getFlowBjNum() + caseOverviewDetailDTO.getFlowBjNum());
|
parent.setFlowHtNum(parent.getFlowHtNum() + caseOverviewDetailDTO.getFlowHtNum());
|
parent.setFlowJbNum(parent.getFlowJbNum() + caseOverviewDetailDTO.getFlowJbNum());
|
parent.setFlowSlNum(parent.getFlowSlNum() + caseOverviewDetailDTO.getFlowSlNum());
|
parent.setFlowSbNum(parent.getFlowSbNum() + caseOverviewDetailDTO.getFlowSbNum());
|
parent.setFlowZxslNum(parent.getFlowZxslNum() + caseOverviewDetailDTO.getFlowZxslNum());
|
parent.setFlowLzslNum(parent.getFlowLzslNum() + caseOverviewDetailDTO.getFlowLzslNum());
|
parent.setFlowLzzNum(parent.getFlowLzzNum() + caseOverviewDetailDTO.getFlowLzzNum());
|
parent.setFlowByslNum(parent.getFlowByslNum() + caseOverviewDetailDTO.getFlowByslNum());
|
parent.setSourceHjcgNum(parent.getSourceHjcgNum() + caseOverviewDetailDTO.getSourceHjcgNum());
|
parent.setSourceHjbcgNum(parent.getSourceHjbcgNum() + caseOverviewDetailDTO.getSourceHjbcgNum());
|
parent.setSourceHjzNum(parent.getSourceHjzNum() + caseOverviewDetailDTO.getSourceHjzNum());
|
parent.setSourceByslNum(parent.getSourceByslNum() + caseOverviewDetailDTO.getSourceByslNum());
|
}
|
sortAreaOverview(childList);
|
int i = 1;
|
for (CaseOverviewDetailDTO caseOverviewDetailDTO : childList) {
|
caseOverviewDetailDTO.setSort(i++);
|
}
|
caseOverviewDTO.setChildList(childList);
|
caseOverviewDTO.setParent(parent);
|
return caseOverviewDTO;
|
}
|
|
public List<CaseOverviewDetailDTO> sortAreaOverview(List<CaseOverviewDetailDTO> caseOverviewDetailDTOs) {
|
Map<String, String> map = getArea();
|
for (CaseOverviewDetailDTO caseOverviewDetailDTO : caseOverviewDetailDTOs) {
|
log.info("xsd:{}", caseOverviewDetailDTO);
|
if (caseOverviewDetailDTO.getAreaCode() == null) {
|
caseOverviewDetailDTO.setAreaCode("440111-113-001".replace("-", ""));
|
caseOverviewDetailDTO.setAreaName("江兴社区");
|
} else {
|
caseOverviewDetailDTO.setAreaCode(caseOverviewDetailDTO.getAreaCode().replace("-", ""));
|
|
}
|
if (map.containsKey(caseOverviewDetailDTO.getAreaName())) {
|
caseOverviewDetailDTO.setAreaCode(map.get(caseOverviewDetailDTO.getAreaName()));
|
caseOverviewDetailDTO.setSortNum(Integer.valueOf(caseOverviewDetailDTO.getAreaCode()));
|
}
|
}
|
caseOverviewDetailDTOs.sort((o1, o2) -> {
|
Long totalScore1 = Long.valueOf(o1.getSortNum());
|
Long totalScore2 = Long.valueOf(o2.getSortNum());
|
if (totalScore1 > totalScore2) {
|
return 1;
|
} else if (totalScore1.equals(totalScore2)) {
|
return 0;
|
} else {
|
return -1;
|
}
|
});
|
return caseOverviewDetailDTOs;
|
}
|
|
public CaseStatisticsBaseDTO ledger(Map<String, Object> terms, String userId) throws IOException {
|
// 备份原始的类型筛选条件,用于后续恢复
|
Map<String, Object> originalTypeTerms = new HashMap<>();
|
if (terms.containsKey("canal")) {
|
originalTypeTerms.put("canal", terms.get("canal"));
|
}
|
if (terms.containsKey("canalSecond")) {
|
originalTypeTerms.put("canalSecond", terms.get("canalSecond"));
|
}
|
if (terms.containsKey("canalList")) {
|
originalTypeTerms.put("canalList", terms.get("canalList"));
|
}
|
if (terms.containsKey("canalSecondNot")) {
|
originalTypeTerms.put("canalSecondNot", terms.get("canalSecondNot"));
|
}
|
if (terms.containsKey("canalSecondAll")) {
|
originalTypeTerms.put("canalSecondAll", terms.get("canalSecondAll"));
|
}
|
|
// 临时移除类型筛选条件,以便 statistics 获取全量数据
|
terms.remove("canal");
|
terms.remove("canalSecond");
|
terms.remove("canalList");
|
terms.remove("canalSecondNot");
|
terms.remove("canalSecondAll");
|
|
// 获取全量基础统计数据
|
CaseStatisticsBaseDTO statistics = statistics(terms, userId);
|
|
terms.put("statistics", "1");
|
//根据用户筛选区域范围
|
CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId);
|
//目前没有村居数据,所以单位等级是4的也归集到3里面
|
String areaType = null;
|
terms.remove("unitGrade");
|
terms.remove("canal");
|
if (ctUnitDTO.getUnitGrade().equals(1)) {
|
terms.put("queCity", ctUnitDTO.getCity());
|
} else if (ctUnitDTO.getUnitGrade().equals(2)) {
|
terms.put("queArea", ctUnitDTO.getArea());
|
} else if (ctUnitDTO.getUnitGrade().equals(3)) {
|
terms.put("queRoad", ctUnitDTO.getRoad());
|
} else if (ctUnitDTO.getUnitGrade().equals(4)) {
|
terms.put("queVillage", ctUnitDTO.getRoad());
|
}
|
if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) {
|
terms.remove("queArea");
|
terms.remove("queCity");
|
terms.remove("queRoad");
|
areaType = "4";
|
} else if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) {
|
terms.remove("queArea");
|
terms.remove("queCity");
|
areaType = "3";
|
} else if (ObjectUtils.isNotEmpty(terms.get("queArea"))) {
|
terms.remove("queCity");
|
areaType = "2";
|
} else {
|
areaType = "1";
|
}
|
//基础数据统计
|
terms.remove("canalSecond");
|
terms.remove("canal");
|
terms.put("areaType", areaType);
|
terms.put("canalList", Arrays.asList("22_00001-1", "22_00001-2", "22_00001-3"));
|
CaseStatisticsBaseDTO caseStatisticsBaseDTO1 = mapper.statisticsBase(terms);
|
statistics.setSysNum(caseStatisticsBaseDTO1.getTotalNum());
|
terms.remove("canalList");
|
terms.put("canal", "22_00001-4");
|
terms.put("canalSecond", "22_00003-3");
|
CaseStatisticsBaseDTO caseStatisticsBaseDTO2 = mapper.statisticsBase(terms);
|
statistics.setOttffNum(caseStatisticsBaseDTO2.getTotalNum());
|
terms.put("canalSecond", "22_00003-4");
|
CaseStatisticsBaseDTO caseStatisticsBaseDTO3 = mapper.statisticsBase(terms);
|
statistics.setRmtjNum(caseStatisticsBaseDTO3.getTotalNum());
|
terms.put("canalSecond", "22_00003-6");
|
CaseStatisticsBaseDTO caseStatisticsBaseDTO4 = mapper.statisticsBase(terms);
|
statistics.setXfNum(caseStatisticsBaseDTO4.getTotalNum());
|
terms.put("canalSecond", "22_00003-5");
|
CaseStatisticsBaseDTO caseStatisticsBaseDTO5 = mapper.statisticsBase(terms);
|
statistics.setLdzcNum(caseStatisticsBaseDTO5.getTotalNum());
|
terms.put("canalSecond", "22_00003-1");
|
CaseStatisticsBaseDTO caseStatisticsBaseDTO6 = mapper.statisticsBase(terms);
|
statistics.setFjwjfNum(caseStatisticsBaseDTO6.getTotalNum());
|
|
// 重新计算纠纷类型统计,基于用户选择的类型
|
terms.remove("canalSecond");
|
terms.remove("canal");
|
terms.remove("canalList");
|
terms.remove("canalSecondNot");
|
terms.remove("canalSecondAll");
|
|
// 恢复所有原始类型筛选条件进行纠纷类型统计
|
for (String key : originalTypeTerms.keySet()) {
|
terms.put(key, originalTypeTerms.get(key));
|
}
|
|
// 调用统计调解过程的方法
|
CaseStatisticsBaseDTO processStats = statisticsProcess(terms);
|
|
// 将调解过程统计数据合并到统计结果中
|
statistics.setTotalNum(processStats.getTotalNum());
|
statistics.setRejectNum(processStats.getRejectNum());
|
statistics.setProcessNum(processStats.getProcessNum());
|
statistics.setFinishNum(processStats.getFinishNum());
|
statistics.setFailNum(processStats.getFailNum());
|
statistics.setRejectRate(processStats.getRejectRate());
|
statistics.setProcessRate(processStats.getProcessRate());
|
statistics.setFinishRate(processStats.getFinishRate());
|
statistics.setFailRate(processStats.getFailRate());
|
// 重新获取纠纷类型统计(基于完整的选择类型条件)
|
List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS = mapper.statisticsTypeFirst(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 < 6 && !"其他".equals(caseStatisticsTypeDTO.getCaseTypeName())) {
|
typeList.add(caseStatisticsTypeDTO);
|
i++;
|
} else {
|
otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum());
|
}
|
}
|
for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : typeList) {
|
caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1));
|
}
|
if (otherCaseNum > 0) {
|
CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO();
|
caseStatisticsTypeDTO.setCaseTypeName("其他");
|
caseStatisticsTypeDTO.setCaseNum(otherCaseNum);
|
caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1));
|
typeList.add(caseStatisticsTypeDTO);
|
}
|
statistics.setTypeList(typeList);
|
|
// 根据原始类型筛选条件计算总数和比率
|
// 注意:比率计算应该始终基于所有类型的总数,而不是选择的特定类型数量
|
Integer allNum = statistics.getSysNum() + statistics.getOttffNum() + statistics.getRmtjNum() + statistics.getXfNum() + statistics.getLdzcNum() + statistics.getFjwjfNum();
|
|
statistics.setSysRate(BigDecimalUtil.integerDivideDelZero(statistics.getSysNum() * 100, allNum, 1));
|
statistics.setOttffRate(BigDecimalUtil.integerDivideDelZero(statistics.getOttffNum() * 100, allNum, 1));
|
statistics.setRmtjRate(BigDecimalUtil.integerDivideDelZero(statistics.getRmtjNum() * 100, allNum, 1));
|
statistics.setXfRate(BigDecimalUtil.integerDivideDelZero(statistics.getXfNum() * 100, allNum, 1));
|
statistics.setLdzcRate(BigDecimalUtil.integerDivideDelZero(statistics.getLdzcNum() * 100, allNum, 1));
|
statistics.setFjwjfRate(BigDecimalUtil.integerDivideDelZero(statistics.getFjwjfNum() * 100, allNum, 1));
|
statistics.setAllNum(allNum);
|
|
// 重新计算地区统计(areaList),基于用户选择的类型
|
// 清除之前的筛选条件
|
terms.remove("canal");
|
terms.remove("canalSecond");
|
terms.remove("canalList");
|
terms.remove("canalSecondNot");
|
terms.remove("canalSecondAll");
|
|
// 恢复所有原始类型筛选条件进行地区统计
|
for (String key : originalTypeTerms.keySet()) {
|
terms.put(key, originalTypeTerms.get(key));
|
}
|
|
// 从原有逻辑中获取区域相关变量
|
String childAreaType = null;
|
List<Integer> childUnitGrades = new ArrayList<>();
|
String childUnitGradeStr = null;
|
String unitGradeStr = null;
|
Boolean isLast = false;
|
List<Integer> unitGrades = new ArrayList<>();
|
|
if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) {
|
childAreaType = "5";
|
childUnitGrades.add(5);
|
childUnitGradeStr = "5";
|
unitGradeStr = "4";
|
unitGrades.add(4);
|
isLast = true;
|
} else if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) {
|
childAreaType = "4";
|
childUnitGrades.add(4);
|
childUnitGradeStr = "4";
|
unitGradeStr = "3";
|
unitGrades.add(3);
|
} else if (ObjectUtils.isNotEmpty(terms.get("queArea"))) {
|
childAreaType = "3";
|
childUnitGrades.add(3);
|
childUnitGrades.add(4);
|
childUnitGradeStr = "3,4";
|
unitGradeStr = "2";
|
unitGrades.add(2);
|
} else {
|
childAreaType = "2";
|
childUnitGrades.add(2);
|
childUnitGrades.add(3);
|
childUnitGrades.add(4);
|
childUnitGradeStr = "2,3,4";
|
unitGradeStr = "1";
|
unitGrades.add(1);
|
}
|
|
// 重新计算地区统计
|
List<CaseStatisticsAreaDTO> areaStatistics = new ArrayList<>();
|
if (!isLast) {
|
terms.put("areaType", childAreaType);
|
terms.put("unitGrades", childUnitGrades);
|
areaStatistics = mapper.statisticsArea(terms);
|
if (ObjectUtils.isEmpty(areaStatistics)) {
|
areaStatistics = new ArrayList<>();
|
} else {
|
for (CaseStatisticsAreaDTO areaDTO : areaStatistics) {
|
areaDTO.setAreaType(childAreaType);
|
areaDTO.setUnitGrades(childUnitGradeStr);
|
if ("4".equals(childAreaType)) {
|
areaDTO.setQueVillage(areaDTO.getAreaCode());
|
} else if ("3".equals(childAreaType)) {
|
areaDTO.setQueRoad(areaDTO.getAreaCode());
|
} else if ("2".equals(childAreaType)) {
|
areaDTO.setQueArea(areaDTO.getAreaCode());
|
}
|
}
|
}
|
}
|
|
// 本级区数据
|
terms.put("areaType", areaType);
|
terms.put("unitGrades", unitGrades);
|
List<CaseStatisticsAreaDTO> allAreas = mapper.statisticsArea(terms);
|
CaseStatisticsAreaDTO allArea = new CaseStatisticsAreaDTO();
|
if (ObjectUtils.isNotEmpty(allAreas)) {
|
allArea = allAreas.get(0);
|
}
|
terms.remove("unitGrades");
|
allArea.setAreaName("本级");
|
allArea.setAreaCode("0");
|
allArea.setAreaType(areaType);
|
allArea.setUnitGrades(unitGradeStr);
|
if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) {
|
allArea.setQueVillage(terms.get("queVillage") + "");
|
}
|
if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) {
|
allArea.setQueRoad(terms.get("queRoad") + "");
|
}
|
if (ObjectUtils.isNotEmpty(terms.get("queArea"))) {
|
allArea.setQueArea(terms.get("queArea") + "");
|
}
|
if (ObjectUtils.isNotEmpty(terms.get("queCity"))) {
|
allArea.setQueCity(terms.get("queCity") + "");
|
}
|
|
List<String> areaCodeList = new ArrayList<>();
|
List<CaseStatisticsAreaDTO> areaList = new ArrayList<>();
|
for (CaseStatisticsAreaDTO areaDTO : areaStatistics) {
|
if (ObjectUtils.isEmpty(areaDTO.getAreaCode())) {
|
allArea.setCaseNum(dellNull(areaDTO.getCaseNum()) + dellNull(allArea.getCaseNum()));
|
allArea.setResolveNum(dellNull(areaDTO.getResolveNum()) + dellNull(allArea.getResolveNum()));
|
allArea.setUnResolveNum(dellNull(areaDTO.getUnResolveNum()) + dellNull(allArea.getUnResolveNum()));
|
allArea.setResolveingNum(dellNull(areaDTO.getResolveingNum()) + dellNull(allArea.getResolveingNum()));
|
allArea.setRejectNum(dellNull(areaDTO.getRejectNum()) + dellNull(allArea.getRejectNum()));
|
} else {
|
areaList.add(areaDTO);
|
areaCodeList.add(areaDTO.getAreaCode());
|
}
|
}
|
areaList.add(allArea);
|
|
// 添加没有数据的区域(数量为0)
|
String areaCode = null;
|
if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) {
|
areaCode = terms.get("queVillage") + "";
|
} else if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) {
|
areaCode = terms.get("queRoad") + "";
|
} else if (ObjectUtils.isNotEmpty(terms.get("queArea"))) {
|
areaCode = terms.get("queArea") + "";
|
} else {
|
areaCode = terms.get("queCity") != null ? terms.get("queCity") + "" : "440100";
|
}
|
|
List<QueAreaDTO> queArea = listAreaByType(areaCode);
|
for (QueAreaDTO 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);
|
areaList.add(areaChild);
|
}
|
}
|
|
if (ObjectUtils.isNotEmpty(areaList)) {
|
sortArea(areaList);
|
}
|
|
// 更新statistics中的areaList
|
statistics.setAreaList(areaList);
|
|
return statistics;
|
}
|
|
// public CaseStatisticsBaseDTO ledger(Map<String, Object> terms, String userId) throws IOException {
|
// CaseStatisticsBaseDTO statistics = statistics(terms, userId);
|
//
|
// terms.put("statistics", "1");
|
// //根据用户筛选区域范围
|
// CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId);
|
// //目前没有村居数据,所以单位等级是4的也归集到3里面
|
// String areaType = null;
|
// terms.remove("unitGrade");
|
// terms.remove("canal");
|
// if (ctUnitDTO.getUnitGrade().equals(1)) {
|
// terms.put("queCity", ctUnitDTO.getCity());
|
// } else if (ctUnitDTO.getUnitGrade().equals(2)) {
|
// terms.put("queArea", ctUnitDTO.getArea());
|
// } else if (ctUnitDTO.getUnitGrade().equals(3)) {
|
// terms.put("queRoad", ctUnitDTO.getRoad());
|
// } else if (ctUnitDTO.getUnitGrade().equals(4)) {
|
// terms.put("queVillage", ctUnitDTO.getRoad());
|
// }
|
// if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) {
|
// terms.remove("queArea");
|
// terms.remove("queCity");
|
// terms.remove("queRoad");
|
// areaType = "4";
|
// } else if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) {
|
// terms.remove("queArea");
|
// terms.remove("queCity");
|
// areaType = "3";
|
// } else if (ObjectUtils.isNotEmpty(terms.get("queArea"))) {
|
// terms.remove("queCity");
|
// areaType = "2";
|
// } else {
|
// areaType = "1";
|
// }
|
// //基础数据统计
|
// terms.remove("canalSecond");
|
// terms.remove("canal");
|
// terms.put("areaType", areaType);
|
// terms.put("canalList", Arrays.asList("22_00001-1", "22_00001-2", "22_00001-3"));
|
// CaseStatisticsBaseDTO caseStatisticsBaseDTO1 = mapper.statisticsBase(terms);
|
// statistics.setSysNum(caseStatisticsBaseDTO1.getTotalNum());
|
// terms.remove("canalList");
|
// terms.put("canal", "22_00001-4");
|
// terms.put("canalSecond", "22_00003-3");
|
// CaseStatisticsBaseDTO caseStatisticsBaseDTO2 = mapper.statisticsBase(terms);
|
// statistics.setOttffNum(caseStatisticsBaseDTO2.getTotalNum());
|
// terms.put("canalSecond", "22_00003-4");
|
// CaseStatisticsBaseDTO caseStatisticsBaseDTO3 = mapper.statisticsBase(terms);
|
// statistics.setRmtjNum(caseStatisticsBaseDTO3.getTotalNum());
|
// terms.put("canalSecond", "22_00003-6");
|
// CaseStatisticsBaseDTO caseStatisticsBaseDTO4 = mapper.statisticsBase(terms);
|
// statistics.setXfNum(caseStatisticsBaseDTO4.getTotalNum());
|
// terms.put("canalSecond", "22_00003-5");
|
// CaseStatisticsBaseDTO caseStatisticsBaseDTO5 = mapper.statisticsBase(terms);
|
// statistics.setLdzcNum(caseStatisticsBaseDTO5.getTotalNum());
|
// terms.put("canalSecond", "22_00003-1");
|
// CaseStatisticsBaseDTO caseStatisticsBaseDTO6 = mapper.statisticsBase(terms);
|
// statistics.setFjwjfNum(caseStatisticsBaseDTO6.getTotalNum());
|
//
|
// Integer allNum = statistics.getSysNum() + statistics.getOttffNum() + statistics.getRmtjNum() + statistics.getXfNum() + statistics.getLdzcNum() + statistics.getFjwjfNum();
|
// statistics.setSysRate(BigDecimalUtil.integerDivideDelZero(statistics.getSysNum() * 100, allNum, 1));
|
// statistics.setOttffRate(BigDecimalUtil.integerDivideDelZero(statistics.getOttffNum() * 100, allNum, 1));
|
// statistics.setRmtjRate(BigDecimalUtil.integerDivideDelZero(statistics.getRmtjNum() * 100, allNum, 1));
|
// statistics.setXfRate(BigDecimalUtil.integerDivideDelZero(statistics.getXfNum() * 100, allNum, 1));
|
// statistics.setLdzcRate(BigDecimalUtil.integerDivideDelZero(statistics.getLdzcNum() * 100, allNum, 1));
|
// statistics.setFjwjfRate(BigDecimalUtil.integerDivideDelZero(statistics.getFjwjfNum() * 100, allNum, 1));
|
// statistics.setAllNum(allNum);
|
// return statistics;
|
// }
|
|
/**
|
* 按系列案编号查询
|
*
|
* @param caseId 系列案编号
|
* @return List
|
*/
|
public CaseInfo listBySerieNo(String caseId) {
|
return mapper.selectById(caseId);
|
}
|
|
|
/**
|
* 获取指定时间之后的案子,给亿迅同步数据用
|
*
|
* @param caseVo 条件
|
* @return List
|
*/
|
public List<CaseInfo2> selectByLastTime(CaseVo caseVo) {
|
log.info("xsd:{}", caseVo);
|
return mapper.selectByLastTime(caseVo);
|
}
|
|
public int deleteCaseById(String id) {
|
caseTaskService.deleteCaseTaskByCaseId(id);
|
return mapper.deleteCaseById(id, new Date());
|
}
|
|
/**
|
* 协同推送-网格推送案件入库
|
*
|
* @param registerSaveDTO 纠纷信息
|
* @return String 纠纷编号
|
*/
|
public String gridCaseRegister(RegisterSaveDTO registerSaveDTO) {
|
try {
|
String gridCode = registerSaveDTO.getGridCode();
|
Map<String, Object> terms = new HashMap<>();
|
if (StringUtils.isNotBlank(gridCode)) {
|
if (gridCode.length() == 10) {
|
terms.put("gridCode", gridCode);
|
terms.put("queryType", 1);
|
} else if (gridCode.length() == 6) {
|
terms.put("gridCode", gridCode);
|
terms.put("queryType", 2);
|
} else {
|
terms.put("queryType", 3);
|
}
|
} else {
|
terms.put("queryType", 3);
|
}
|
log.info("xsd:{}",terms);
|
CtUnitDTO ctUnitDTO = mapper.getUnitByGridCode(terms);
|
log.info("xsd:ctUnitDTO{}",ctUnitDTO);
|
if (ObjectUtils.isNotEmpty(ctUnitDTO)) {
|
if (StringUtils.isNotBlank(ctUnitDTO.getCity()) && StringUtils.isNotBlank(ctUnitDTO.getCityName())) {
|
registerSaveDTO.setQueCity(ctUnitDTO.getCity());
|
registerSaveDTO.setQueCityName(ctUnitDTO.getCityName());
|
}
|
if (StringUtils.isNotBlank(ctUnitDTO.getArea()) && StringUtils.isNotBlank(ctUnitDTO.getAreaName())) {
|
registerSaveDTO.setQueArea(ctUnitDTO.getArea());
|
registerSaveDTO.setQueAreaName(ctUnitDTO.getAreaName());
|
}
|
if (StringUtils.isNotBlank(ctUnitDTO.getRoad()) && StringUtils.isNotBlank(ctUnitDTO.getRoadName())) {
|
registerSaveDTO.setQueRoad(ctUnitDTO.getRoad());
|
registerSaveDTO.setQueRoadName(ctUnitDTO.getRoadName());
|
}
|
// registerSaveDTO.setWantUnitId(ctUnitDTO.getId());
|
// registerSaveDTO.setWantUnitName(ctUnitDTO.getUnitName());
|
|
//网格上报的事件时间一般在凌晨,导致北京时间是昨天,所以+8小时还原为北京时间,确保在同一天内
|
Date nowDate1 = DateUtils.getNowDate();
|
Date nowDate = new Date();
|
Calendar cal = Calendar.getInstance();
|
cal.setTime(nowDate1);
|
int hour = cal.get(Calendar.HOUR_OF_DAY);
|
|
//复制填装案件表
|
CaseInfo caseInfo = new CaseInfo();
|
BeanUtils.copyProperties(registerSaveDTO, caseInfo);
|
// 调度给镇街,镇街分派
|
caseInfo.setZxslStatus(CaseBaseConsts.ZXSL_STATUS_0);
|
caseInfo.setUpdateTime(nowDate);
|
|
// 常规登记-保存当事人
|
if (CollectionUtils.isNotEmpty(registerSaveDTO.getPersonList())) {
|
for (CasePerson casePerson : registerSaveDTO.getPersonList()) {
|
casePerson.setId(IdUtils.getNewTimeId());
|
casePerson.setCaseId(caseInfo.getId());
|
casePerson.setPerType(CaseBaseConstsEnum.PERSON_TYPE_1.getIndex());
|
casePerson.setPerTypeName(CaseBaseConstsEnum.PERSON_TYPE_1.getDes());
|
casePerson.setPerClass(CaseBaseConstsEnum.PERSON_CLASS_1.getIndex());
|
casePerson.setPerClassName(CaseBaseConstsEnum.PERSON_CLASS_1.getDes());
|
casePerson.setCaseId(registerSaveDTO.getId());
|
casePerson.setCustId(registerSaveDTO.getCustId());
|
casePerson.setUpdateTime(nowDate);
|
casePerson.setCreateTime(nowDate);
|
casePerson.setCertiType(CaseBaseConstsEnum.CARD_TYPE_1.getIndex());
|
casePerson.setCertiTypeName(CaseBaseConstsEnum.CARD_TYPE_1.getDes());
|
casePersonService.save(casePerson);
|
}
|
} else if (StringUtils.isNotBlank(registerSaveDTO.getPlaintiffs())) {
|
CasePerson casePerson = new CasePerson();
|
casePerson.setId(IdUtils.getNewTimeId());
|
casePerson.setCaseId(caseInfo.getId());
|
casePerson.setPerType(CaseBaseConstsEnum.PERSON_TYPE_1.getIndex());
|
casePerson.setPerTypeName(CaseBaseConstsEnum.PERSON_TYPE_1.getDes());
|
casePerson.setPerClass(CaseBaseConstsEnum.PERSON_CLASS_1.getIndex());
|
casePerson.setPerClassName(CaseBaseConstsEnum.PERSON_CLASS_1.getDes());
|
casePerson.setTrueName(registerSaveDTO.getPlaintiffs());
|
casePerson.setMobile(registerSaveDTO.getPhone());
|
casePerson.setCaseId(registerSaveDTO.getId());
|
casePerson.setCustId(registerSaveDTO.getCustId());
|
casePerson.setUpdateTime(nowDate);
|
casePerson.setCreateTime(nowDate);
|
caseInfo.setPlaintiffs(registerSaveDTO.getPlaintiffs());
|
casePersonService.save(casePerson);
|
}
|
|
|
// 生成事项编号
|
GenerateQrCodeRequestVo generateQrCodeRequestVo = new GenerateQrCodeRequestVo();
|
generateQrCodeRequestVo.setId(caseInfo.getId());
|
generateQrCodeRequestVo.setBusinessSource("02");
|
generateQrCodeRequestVo.setGenerateUnifiedCode(true);
|
if (CaseBaseConstsEnum.CASE_CANAL_SECOND_1.getIndex().equals(caseInfo.getCanalSecond())) {
|
generateQrCodeRequestVo.setInfoSource("12");
|
} else if (CaseBaseConstsEnum.CASE_CANAL_SECOND_2.getIndex().equals(caseInfo.getCanalSecond())) {
|
generateQrCodeRequestVo.setInfoSource("07");
|
}
|
String area = this.formatGridCode(ctUnitDTO.getArea());
|
generateQrCodeRequestVo.setGridCode(area);
|
GridEventDTO gridEventDTO = sysClient.getGridEventId(registerSaveDTO.getId());
|
if (gridEventDTO != null) {
|
caseInfo.setCaseRef(gridEventDTO.getEventCode());
|
} else {
|
caseInfo.setCaseRef(sysClient.getCaseRefByGenerateQrCode(generateQrCodeRequestVo));
|
}
|
|
// 获取调解案号
|
caseInfo.setCaseNo(utilsClient.createCaseNo(ctUnitDTO.getArea()));
|
caseInfo.setVisitWay(CaseBaseConstsEnum.VISIT_WAY_3.getIndex());
|
caseInfo.setVisitWayName(CaseBaseConstsEnum.VISIT_WAY_3.getDes());
|
caseInfo.setCanal(CaseBaseConstsEnum.CASE_CANAL_4.getIndex());
|
caseInfo.setCanalName(CaseBaseConstsEnum.CASE_CANAL_4.getDes());
|
|
caseInfo.setCaseLevel(3);
|
// //获取一级类型
|
// SyCause syCause = sysClient.getParentCaseTypeById(caseInfo.getCaseType());
|
// if (ObjectUtils.isNotEmpty(syCause)) {
|
// caseInfo.setCaseTypeFirst(syCause.getId());
|
// caseInfo.setCaseTypeFirstName(syCause.getName());
|
// }
|
//默认小程序可见
|
if (ObjectUtils.isNotEmpty(caseInfo.getCanal())) {
|
if (CaseBaseConstsEnum.CASE_CANAL_1.getIndex().equals(caseInfo.getCanal())) {
|
caseInfo.setPartyShow(1);
|
}
|
}
|
//todo case_title生成、经纬度转换
|
caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1);
|
if(registerSaveDTO.getCreateTime()!=null){
|
caseInfo.setCreateTime(registerSaveDTO.getCreateTime());
|
}else {
|
caseInfo.setCreateTime(nowDate);
|
}
|
|
caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
|
//默认添加省市
|
caseInfo.setQueProv("19");
|
caseInfo.setQueProvName("广东省");
|
caseInfo.setQueCity("440100");
|
caseInfo.setQueCityName("广州市");
|
// 新增纠纷信息
|
this.save(caseInfo);
|
// 新增纠纷信息扩展表
|
CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold();
|
caseInfoUnfold.setId(caseInfo.getId());
|
if (StringUtils.isNotBlank(registerSaveDTO.getGridHandle())) {
|
caseInfoUnfold.setGridHandle(registerSaveDTO.getGridHandle());
|
}
|
if (StringUtils.isNotBlank(registerSaveDTO.getTcqk())) {
|
caseInfoUnfold.setTcqk(registerSaveDTO.getTcqk());
|
}
|
caseInfoUnfold.setCreateTime(caseInfo.getCreateTime());
|
caseInfoUnfold.setUpdateTime(nowDate);
|
caseInfoUnfoldService.save(caseInfoUnfold);
|
// 自动调度流程
|
caseInfo.setIsGridEvent(1);
|
caseTaskService.webStartFlowLFDJ(caseInfo);
|
}
|
return registerSaveDTO.getId();
|
} catch (Exception e) {
|
log.error("service方法[CaseInfoService.gridCaseRegister]调用异常:" + e, e);
|
throw new ServiceException("CaseInfoService.gridCaseRegister", e);
|
}
|
}
|
|
/**
|
* 格式化网格编码(自动添加连字符)
|
*
|
* @param Area 原始编码(如:440111)
|
* @return 格式化后的编码(如:44-01-11)
|
*/
|
public String formatGridCode(String Area) {
|
if (Area == null || Area.length() != 6) {
|
return Area;
|
}
|
// 自动分割为 44-01-11 格式
|
return new StringBuilder(Area)
|
.insert(2, "-")
|
.insert(5, "-")
|
.toString();
|
}
|
}
|