| | |
| | | import cn.huge.module.cases.domain.dto.*; |
| | | |
| | | import cn.huge.module.cases.domain.dto.CaseAreaDTO; |
| | | import cn.huge.module.cases.domain.po.CaseAgent; |
| | | import cn.huge.module.cases.domain.po.CaseInfoUnfold; |
| | | import cn.huge.module.cases.domain.po.CasePerson; |
| | | import cn.huge.module.cases.domain.po.*; |
| | | import cn.huge.module.client.api.impl.CustClientImpl; |
| | | import cn.huge.module.client.api.impl.SysClientImpl; |
| | | import cn.huge.module.client.api.impl.UtilsClientImpl; |
| | | import cn.huge.module.cases.dao.mapper.CaseInfoMapper; |
| | | import cn.huge.module.cases.domain.po.CaseInfo; |
| | | import cn.huge.module.constant.BaseConsts; |
| | | import cn.huge.module.cust.dto.PaUserDTO; |
| | | import cn.huge.module.mediate.constant.*; |
| | |
| | | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.net.URL; |
| | | import java.nio.file.Files; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private CaseEvaluateService caseEvaluateService; |
| | | |
| | | @Autowired |
| | | private CaseAreaService caseAreaService; |
| | | |
| | | |
| | | /** |
| | |
| | | caseInfo.setDefendants(defendants.toString()); |
| | | caseInfo.setDagents(dagents.toString()); |
| | | caseInfo.setCaseRef(utilsClient.createCaseRef()); |
| | | caseInfo.setCanal(CaseBaseConstsEnum.CASE_CANAL_1.getIndex()); |
| | | caseInfo.setCanalName(CaseBaseConstsEnum.CASE_CANAL_1.getDes()); |
| | | caseInfo.setVisitWay(CaseBaseConstsEnum.VISIT_WAY_1.getIndex()); |
| | | caseInfo.setVisitWayName(CaseBaseConstsEnum.VISIT_WAY_1.getDes()); |
| | | //todo case_title生成、经纬度转换 |
| | |
| | | caseInfo.setInputUserId(loginUser.getId()); |
| | | caseInfo.setInputUserName(loginUser.getTrueName()); |
| | | caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1); |
| | | if(ObjectUtils.isEmpty(registerSaveDTO.getPeopleNum())){ |
| | | caseInfo.setPeopleNum(0); |
| | | } |
| | | if(ObjectUtils.isEmpty(registerSaveDTO.getAmount())){ |
| | | caseInfo.setAmount(0.0); |
| | | } |
| | | //默认添加省市 |
| | | caseInfo.setQueProv("19"); |
| | | caseInfo.setQueProvName("广东省"); |
| | |
| | | public CaseStatisticsBaseDTO statistics(Map<String, Object> terms) throws IOException { |
| | | //基础数据统计 |
| | | CaseStatisticsBaseDTO caseStatisticsBaseDTO = mapper.statisticsBase(terms); |
| | | Integer baseTotalNum = dellNull(caseStatisticsBaseDTO.getResolveNum()) + dellNull(caseStatisticsBaseDTO.getUnResolveNum())+ dellNull(caseStatisticsBaseDTO.getResolveingNum()); |
| | | caseStatisticsBaseDTO.setResolveRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getResolveNum()*100, baseTotalNum,1)); |
| | | caseStatisticsBaseDTO.setUnResolveRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getUnResolveNum()*100, baseTotalNum,1)); |
| | | caseStatisticsBaseDTO.setResolveingRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getResolveingNum()*100, baseTotalNum,1)); |
| | | Integer baseTotalNum = dellNull(caseStatisticsBaseDTO.getResolveNum()) + dellNull(caseStatisticsBaseDTO.getUnResolveNum()) + dellNull(caseStatisticsBaseDTO.getResolveingNum()); |
| | | caseStatisticsBaseDTO.setResolveRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getResolveNum() * 100, baseTotalNum, 1)); |
| | | caseStatisticsBaseDTO.setUnResolveRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getUnResolveNum() * 100, baseTotalNum, 1)); |
| | | caseStatisticsBaseDTO.setResolveingRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getResolveingNum() * 100, baseTotalNum, 1)); |
| | | Integer levelTotalNum = caseStatisticsBaseDTO.getOneLevelNum() + caseStatisticsBaseDTO.getTwoLevelNum() + caseStatisticsBaseDTO.getThreeLevelNum(); |
| | | caseStatisticsBaseDTO.setOneLevelRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getOneLevelNum()*100, levelTotalNum,1)); |
| | | caseStatisticsBaseDTO.setTwoLevelRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getTwoLevelNum()*100, levelTotalNum,1)); |
| | | caseStatisticsBaseDTO.setThreeLevelRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getThreeLevelNum()*100, levelTotalNum,1)); |
| | | caseStatisticsBaseDTO.setOneLevelRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getOneLevelNum() * 100, levelTotalNum, 1)); |
| | | caseStatisticsBaseDTO.setTwoLevelRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getTwoLevelNum() * 100, levelTotalNum, 1)); |
| | | caseStatisticsBaseDTO.setThreeLevelRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getThreeLevelNum() * 100, levelTotalNum, 1)); |
| | | //区域数据统计 |
| | | terms.put("isArea","1"); |
| | | terms.put("isArea", "1"); |
| | | List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS = mapper.statisticsArea(terms); |
| | | if(ObjectUtils.isEmpty(caseStatisticsAreaDTOS)){ |
| | | if (ObjectUtils.isEmpty(caseStatisticsAreaDTOS)) { |
| | | caseStatisticsAreaDTOS = new ArrayList<>(); |
| | | } |
| | | CaseStatisticsAreaDTO allArea = new CaseStatisticsAreaDTO(); |
| | |
| | | areaCodeList.add(caseStatisticsAreaDTO.getAreaCode()); |
| | | } |
| | | caseStatisticsAreaDTOS.add(allArea); |
| | | List<CaseAreaDTO> queArea = listAreaByType(terms.get("areaType"), terms.get("queArea")); |
| | | log.info("listAreaByType {}",JSON.toJSONString(queArea)); |
| | | for (CaseAreaDTO caseAreaDTO : queArea) { |
| | | if(!areaCodeList.contains(caseAreaDTO.getAreaCode())){ |
| | | List<CaseArea> queArea = listAreaByType(terms.get("areaType"), terms.get("queArea")); |
| | | log.info("listAreaByType {}", JSON.toJSONString(queArea)); |
| | | for (CaseArea caseAreaDTO : queArea) { |
| | | if (!areaCodeList.contains(caseAreaDTO.getAreaCode())) { |
| | | CaseStatisticsAreaDTO areaChild = new CaseStatisticsAreaDTO(); |
| | | areaChild.setAreaCode(caseAreaDTO.getAreaCode()); |
| | | areaChild.setAreaName(caseAreaDTO.getAreaName()); |
| | |
| | | } |
| | | } |
| | | |
| | | if(ObjectUtils.isNotEmpty(caseStatisticsAreaDTOS)){ |
| | | if (ObjectUtils.isNotEmpty(caseStatisticsAreaDTOS)) { |
| | | sortArea(caseStatisticsAreaDTOS); |
| | | } |
| | | caseStatisticsBaseDTO.setAreaList(caseStatisticsAreaDTOS); |
| | | terms.remove("isArea"); |
| | | //纠纷类型统计 |
| | | List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS = mapper.statisticsType(terms); |
| | | if(ObjectUtils.isNotEmpty(caseStatisticsTypeDTOS)){ |
| | | if (ObjectUtils.isNotEmpty(caseStatisticsTypeDTOS)) { |
| | | sortType(caseStatisticsTypeDTOS); |
| | | } |
| | | Integer typeTotalNum = 0; |
| | |
| | | List<CaseStatisticsTypeDTO> typeList = new ArrayList<>(); |
| | | for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) { |
| | | typeTotalNum = typeTotalNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); |
| | | if(i > 5){ |
| | | if (i > 5) { |
| | | otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); |
| | | }else{ |
| | | } else { |
| | | typeList.add(caseStatisticsTypeDTO); |
| | | } |
| | | i++; |
| | | } |
| | | for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : typeList) { |
| | | caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum()*100, typeTotalNum,1)); |
| | | caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); |
| | | } |
| | | CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO(); |
| | | caseStatisticsTypeDTO.setCaseTypeName("其他"); |
| | | caseStatisticsTypeDTO.setCaseNum(otherCaseNum); |
| | | caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum()*100, typeTotalNum,1)); |
| | | caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); |
| | | typeList.add(caseStatisticsTypeDTO); |
| | | caseStatisticsBaseDTO.setTypeList(typeList); |
| | | //事项来源 |
| | | terms.put("canal",CaseBaseConstsEnum.CASE_CANAL_1.getIndex()); |
| | | 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()); |
| | | 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()); |
| | | |
| | | Integer sourceTotalNum = dellNull(oneSource.getCaseNum()) + dellNull(oneSource.getCaseNum()); |
| | | oneSource.setCaseRate(BigDecimalUtil.integerDivideDelZero(oneSource.getCaseNum()*100, sourceTotalNum,1)); |
| | | oneSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(oneSource.getResolveNum()*100, oneSource.getCaseNum(),1)); |
| | | twoSource.setCaseRate(BigDecimalUtil.integerDivideDelZero(twoSource.getCaseNum()*100, sourceTotalNum,1)); |
| | | twoSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(twoSource.getResolveNum()*100, twoSource.getCaseNum(),1)); |
| | | oneSource.setCaseRate(BigDecimalUtil.integerDivideDelZero(oneSource.getCaseNum() * 100, sourceTotalNum, 1)); |
| | | oneSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(oneSource.getResolveNum() * 100, oneSource.getCaseNum(), 1)); |
| | | twoSource.setCaseRate(BigDecimalUtil.integerDivideDelZero(twoSource.getCaseNum() * 100, sourceTotalNum, 1)); |
| | | twoSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(twoSource.getResolveNum() * 100, twoSource.getCaseNum(), 1)); |
| | | |
| | | CaseStatisticsSourceDTO threeSource = new CaseStatisticsSourceDTO(); |
| | | threeSource.setCanalName("自行排查"); |
| | |
| | | Sort sort = Sort.by(Sort.Direction.DESC, "a.create_time"); |
| | | PageRequest pageRequest = PageRequest.of(0, 5, sort); |
| | | Page<CasePageDTO> casePageDTOS = pageQueryAll(pageRequest, terms); |
| | | if(ObjectUtils.isNotEmpty(casePageDTOS.getContent())){ |
| | | if (ObjectUtils.isNotEmpty(casePageDTOS.getContent())) { |
| | | caseStatisticsBaseDTO.setCaseList(casePageDTOS.getContent()); |
| | | }else{ |
| | | } else { |
| | | caseStatisticsBaseDTO.setCaseList(new ArrayList<>()); |
| | | } |
| | | return caseStatisticsBaseDTO; |
| | | } |
| | | |
| | | public List<CaseStatisticsTypeDTO> sortType(List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS){ |
| | | caseStatisticsTypeDTOS.sort((o1, o2)->{ |
| | | public List<CaseStatisticsTypeDTO> sortType(List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS) { |
| | | caseStatisticsTypeDTOS.sort((o1, o2) -> { |
| | | Integer totalScore1 = o1.getCaseNum(); |
| | | Integer totalScore2 = o2.getCaseNum(); |
| | | if(totalScore1 < totalScore2) { |
| | | if (totalScore1 < totalScore2) { |
| | | return 1; |
| | | }else if (totalScore1.equals(totalScore2)){ |
| | | } else if (totalScore1.equals(totalScore2)) { |
| | | return 0; |
| | | }else{ |
| | | } else { |
| | | return -1; |
| | | } |
| | | }); |
| | | return caseStatisticsTypeDTOS; |
| | | } |
| | | |
| | | public List<CaseStatisticsAreaDTO> sortArea(List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS){ |
| | | caseStatisticsAreaDTOS.sort((o1, o2)->{ |
| | | public List<CaseStatisticsAreaDTO> sortArea(List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS) { |
| | | caseStatisticsAreaDTOS.sort((o1, o2) -> { |
| | | log.info("xsd:{},{}",o1,o2); |
| | | Integer totalScore1 = Integer.valueOf(o1.getAreaCode()); |
| | | Integer totalScore2 = Integer.valueOf(o2.getAreaCode()); |
| | | if(totalScore1 > totalScore2) { |
| | | if (totalScore1 > totalScore2) { |
| | | return 1; |
| | | }else if (totalScore1.equals(totalScore2)){ |
| | | } else if (totalScore1.equals(totalScore2)) { |
| | | return 0; |
| | | }else{ |
| | | } else { |
| | | return -1; |
| | | } |
| | | }); |
| | | return caseStatisticsAreaDTOS; |
| | | } |
| | | |
| | | public Integer dellNull(Integer number){ |
| | | if(ObjectUtils.isEmpty(number)){ |
| | | public Integer dellNull(Integer number) { |
| | | if (ObjectUtils.isEmpty(number)) { |
| | | return 0; |
| | | } |
| | | return number; |
| | | } |
| | | |
| | | /** |
| | | * 根据json文件获取区域信息 |
| | | * */ |
| | | public CaseAreaDTO getArea() throws IOException { |
| | | Class<?> clazz = CaseAreaDTO.class; |
| | | String path = clazz.getResource("").getPath(); |
| | | ObjectMapper mapper = new ObjectMapper(); |
| | | File file = new File(path+"Area.json"); |
| | | CaseAreaDTO obj = mapper.readValue(file, CaseAreaDTO.class); |
| | | return obj; |
| | | } |
| | | |
| | | /** |
| | | * 根据不同的等级获取不同区域子集合 |
| | | * |
| | | * @param areaType 1-市级 2-区 |
| | | * */ |
| | | public List<CaseAreaDTO> listAreaByType(Object areaType,Object areaCode) throws IOException { |
| | | log.info("listAreaByType {},{}",areaType,areaCode); |
| | | CaseAreaDTO area = getArea(); |
| | | log.info("listAreaByType area {}",JSON.toJSONString(area)); |
| | | if(ObjectUtils.isEmpty(areaType) || areaType.equals("") || areaType.equals("1")){ |
| | | return area.getChildren(); |
| | | */ |
| | | public List<CaseArea> listAreaByType(Object areaType, Object areaCode) throws IOException { |
| | | log.info("listAreaByType {},{}", areaType, areaCode); |
| | | if (ObjectUtils.isEmpty(areaType) || areaType.equals("") || areaType.equals("1")) { |
| | | QueryWrapper<CaseArea> caseAreaWrapper = new QueryWrapper<>(); |
| | | caseAreaWrapper.eq("parent_code","1601"); |
| | | List<CaseArea> list = caseAreaService.list(caseAreaWrapper); |
| | | return list; |
| | | } |
| | | if(areaType.equals("2")){ |
| | | List<CaseAreaDTO> children = area.getChildren(); |
| | | for (CaseAreaDTO child : children) { |
| | | if(child.getAreaCode().equals(areaCode)){ |
| | | return child.getChildren(); |
| | | } |
| | | } |
| | | if (areaType.equals("2")) { |
| | | |
| | | QueryWrapper<CaseArea> caseAreaWrapper = new QueryWrapper<>(); |
| | | caseAreaWrapper.eq("parent_code",areaCode); |
| | | List<CaseArea> list = caseAreaService.list(caseAreaWrapper); |
| | | return list; |
| | | } |
| | | return new ArrayList<>(); |
| | | } |