From 93430938a25ab3d4e218a2198ae1b24a516f6382 Mon Sep 17 00:00:00 2001 From: zhouxiantao <1026371446@qq.com> Date: Tue, 17 Jun 2025 17:31:15 +0800 Subject: [PATCH] freat:粤政易相关代码 --- dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 172 insertions(+), 0 deletions(-) diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java index fe1e6ae..bd84d87 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java @@ -16,6 +16,7 @@ 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.cases.utils.StatisticsTimeUtils; import cn.huge.module.client.api.impl.CustClientImpl; import cn.huge.module.client.api.impl.SysClientImpl; import cn.huge.module.client.api.impl.UtilsClientImpl; @@ -1418,6 +1419,19 @@ terms.put("areaType", areaType); // 调用统计调解过程的方法 CaseStatisticsBaseDTO caseStatisticsBaseDTO = statisticsProcess(terms); + + //当日新增 + Map<String, Object> toDayTerms = new HashMap<>(); + toDayTerms.putAll(terms); + String toDayStr = DateUtils.DateToString(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD); + toDayTerms.put("createStart", toDayStr + " 00:00:00"); + toDayTerms.put("createEnd", toDayStr + " 23:59:59"); + CaseStatisticsBaseDTO toDayBaseDTO = mapper.statisticsBase(toDayTerms); + caseStatisticsBaseDTO.setToDayTotalNum(toDayBaseDTO.getTotalNum()); + caseStatisticsBaseDTO.setToDayProcessNum(toDayBaseDTO.getProcessNum()); + caseStatisticsBaseDTO.setToDayRejectNum(toDayBaseDTO.getRejectNum()); + caseStatisticsBaseDTO.setToDayFinishNum(toDayBaseDTO.getFinishNum()); + //区域数据统计 List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS = new ArrayList<>(); if (!isLast) { @@ -1692,6 +1706,164 @@ return caseStatisticsTypeDTOS; } + /** + * 工作统计 + */ + public CaseWorkStatisticsBaseDTO workStatistics(Map<String, Object> terms, String userId) throws IOException { + CaseWorkStatisticsBaseDTO caseWorkStatisticsBaseDTO = new CaseWorkStatisticsBaseDTO(); + terms.put("statistics", "1"); + //根据用户筛选区域范围 + CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId); + //目前没有村居数据,所以单位等级是4的也归集到3里面 + 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()); + } + terms.put("workUserId", userId); + String areaType = "1"; + 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"; + } + terms.put("areaType", areaType); + CaseStatisticsBaseDTO caseStatisticsBaseDTO = mapper.statisticsBase(terms); + Integer baseTotalNum = dellNull(caseStatisticsBaseDTO.getResolveNum()) + dellNull(caseStatisticsBaseDTO.getUnResolveNum()) + dellNull(caseStatisticsBaseDTO.getResolveingNum()); + Integer resolveTotalNum = dellNull(caseStatisticsBaseDTO.getResolveNum()) + dellNull(caseStatisticsBaseDTO.getUnResolveNum()); + caseStatisticsBaseDTO.setResolveRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getResolveNum() * 100, resolveTotalNum, 1)); + caseStatisticsBaseDTO.setUnResolveRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getUnResolveNum() * 100, resolveTotalNum, 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)); + //当日新增 + Map<String, Object> toDayTerms = new HashMap<>(); + toDayTerms.putAll(terms); + String toDayStr = DateUtils.DateToString(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD); + toDayTerms.put("createStart", toDayStr + " 00:00:00"); + toDayTerms.put("createEnd", toDayStr + " 23:59:59"); + CaseStatisticsBaseDTO toDayBaseDTO = mapper.statisticsBase(toDayTerms); + caseStatisticsBaseDTO.setToDayTotalNum(toDayBaseDTO.getTotalNum()); + caseStatisticsBaseDTO.setToDayProcessNum(toDayBaseDTO.getProcessNum()); + caseStatisticsBaseDTO.setToDayRejectNum(toDayBaseDTO.getRejectNum()); + caseStatisticsBaseDTO.setToDayFinishNum(toDayBaseDTO.getFinishNum()); + BeanUtils.copyProperties(caseStatisticsBaseDTO, caseWorkStatisticsBaseDTO); + + //按时间统计 + Date startDate = null; + Date endDate = null; + if(ObjectUtils.isNotEmpty(terms.get("createStart"))){ + String startTime = terms.get("createStart").toString(); + String endTime = terms.get("createEnd").toString(); + startDate = DateUtils.StringToDate(startTime, "yyyy-MM-dd HH:mm:ss"); + endDate = DateUtils.StringToDate(endTime, "yyyy-MM-dd HH:mm:ss"); + terms.put("selectTimeType","1"); + }else if(ObjectUtils.isNotEmpty(terms.get("closeStart"))){ + String startTime = terms.get("closeStart").toString(); + String endTime = terms.get("closeEnd").toString(); + startDate = DateUtils.StringToDate(startTime, "yyyy-MM-dd HH:mm:ss"); + endDate = DateUtils.StringToDate(endTime, "yyyy-MM-dd HH:mm:ss"); + terms.put("selectTimeType","2"); + } + List<CaseWorkStatisticsTimeDTO> resultTimeDTOs = new ArrayList<>(); + if(ObjectUtils.isNotEmpty(startDate)){ + String spanType = StatisticsTimeUtils.spanTime(startDate, endDate); + terms.put("timeType", spanType); + List<CaseWorkStatisticsTimeDTO> caseWorkStatisticsTimeDTOs = mapper.workStatisticsTime(terms); + resultTimeDTOs = StatisticsTimeUtils.dellStatisticsTime(caseWorkStatisticsTimeDTOs, startDate, endDate, spanType); + } + caseWorkStatisticsBaseDTO.setTimeList(resultTimeDTOs); + + //环比和同比 + if(StatisticsTimeUtils.isStartAndEndOfMonth(startDate, endDate)){ + caseWorkStatisticsBaseDTO.setMomType("1"); + Map<String, Object> momthTerms = new HashMap<>(); + momthTerms.putAll(terms); + momthTerms.put("createStart", StatisticsTimeUtils.getMomStartDate(startDate) + " 00:00:00"); + momthTerms.put("createEnd", StatisticsTimeUtils.getMomEndDate(startDate) + " 23:59:59"); + CaseStatisticsBaseDTO momBaseDTO = mapper.statisticsBase(momthTerms); + caseWorkStatisticsBaseDTO.setMomTotalRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getTotalNum(),momBaseDTO.getTotalNum())); + caseWorkStatisticsBaseDTO.setMomProcessRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getProcessNum(),momBaseDTO.getProcessNum())); + caseWorkStatisticsBaseDTO.setMomRejectRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getRejectNum(),momBaseDTO.getRejectNum())); + caseWorkStatisticsBaseDTO.setMomFinishNumRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getFinishNum(),momBaseDTO.getFinishNum())); + Integer momResolveTotalNum = dellNull(momBaseDTO.getResolveNum()) + dellNull(momBaseDTO.getUnResolveNum()); + momBaseDTO.setResolveRate(BigDecimalUtil.integerDivideDelZero(momBaseDTO.getResolveNum() * 100, momResolveTotalNum, 1)); + caseWorkStatisticsBaseDTO.setMomResolveRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getResolveRate(),momBaseDTO.getResolveRate())); + momthTerms.put("createStart", StatisticsTimeUtils.getYoyDate(startDate) + " 00:00:00"); + momthTerms.put("createEnd", StatisticsTimeUtils.getYoyDate(endDate) + " 23:59:59"); + CaseStatisticsBaseDTO yoyBaseDTO = mapper.statisticsBase(momthTerms); + caseWorkStatisticsBaseDTO.setYoyTotalRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getTotalNum(),yoyBaseDTO.getTotalNum())); + caseWorkStatisticsBaseDTO.setYoyProcessRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getProcessNum(),yoyBaseDTO.getProcessNum())); + caseWorkStatisticsBaseDTO.setYoyRejectRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getRejectNum(),yoyBaseDTO.getRejectNum())); + caseWorkStatisticsBaseDTO.setYoyFinishNumRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getFinishNum(),yoyBaseDTO.getFinishNum())); + Integer yoyResolveTotalNum = dellNull(yoyBaseDTO.getResolveNum()) + dellNull(yoyBaseDTO.getUnResolveNum()); + yoyBaseDTO.setResolveRate(BigDecimalUtil.integerDivideDelZero(yoyBaseDTO.getResolveNum() * 100, yoyResolveTotalNum, 1)); + caseWorkStatisticsBaseDTO.setYoyResolveRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getResolveRate(),yoyBaseDTO.getResolveRate())); + + }else if(StatisticsTimeUtils.isStartAndEndOfYear(startDate, endDate)){ + caseWorkStatisticsBaseDTO.setMomType("2"); + Map<String, Object> momthTerms = new HashMap<>(); + momthTerms.putAll(terms); + momthTerms.put("createStart", StatisticsTimeUtils.getYoyDate(startDate) + " 00:00:00"); + momthTerms.put("createEnd", StatisticsTimeUtils.getYoyDate(endDate) + " 23:59:59"); + CaseStatisticsBaseDTO yoyBaseDTO = mapper.statisticsBase(momthTerms); + caseWorkStatisticsBaseDTO.setYoyTotalRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getTotalNum(),yoyBaseDTO.getTotalNum())); + caseWorkStatisticsBaseDTO.setYoyProcessRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getProcessNum(),yoyBaseDTO.getProcessNum())); + caseWorkStatisticsBaseDTO.setYoyRejectRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getRejectNum(),yoyBaseDTO.getRejectNum())); + caseWorkStatisticsBaseDTO.setYoyFinishNumRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getFinishNum(),yoyBaseDTO.getFinishNum())); + Integer yoyResolveTotalNum = dellNull(yoyBaseDTO.getResolveNum()) + dellNull(yoyBaseDTO.getUnResolveNum()); + yoyBaseDTO.setResolveRate(BigDecimalUtil.integerDivideDelZero(yoyBaseDTO.getResolveNum() * 100, yoyResolveTotalNum, 1)); + caseWorkStatisticsBaseDTO.setYoyResolveRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getResolveRate(),yoyBaseDTO.getResolveRate())); + }else{ + caseWorkStatisticsBaseDTO.setMomType("0"); + } + + //纠纷类型统计 + 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); + } + caseWorkStatisticsBaseDTO.setTypeList(typeList); + return caseWorkStatisticsBaseDTO; + } + public Map<String, String> getArea() { Map<String, String> map = new HashMap<>(); map.put("越秀区", "2"); -- Gitblit v1.8.0