From 3c8b8029a94666ce55e38d1f11c0d1bb0330afa5 Mon Sep 17 00:00:00 2001 From: huangh <hshgjzd5@163.com> Date: Tue, 29 Oct 2024 14:59:11 +0800 Subject: [PATCH] fix:统计重复案件,添加本级数据处理,修改请求方式 --- dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java | 118 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 88 insertions(+), 30 deletions(-) diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java index 0aaf9a6..60a9851 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/analysis/service/AnalysisService.java @@ -1,45 +1,25 @@ package cn.huge.module.analysis.service; -import cn.huge.base.common.exception.ServiceException; -import cn.huge.base.common.utils.*; +import cn.huge.base.common.bo.ReturnBO; +import cn.huge.base.common.utils.ReturnFailUtils; +import cn.huge.base.common.utils.ReturnSucUtils; import cn.huge.module.analysis.dao.mapper.AnalysisMapper; +import cn.huge.module.analysis.domain.dto.CountRepeateDto; +import cn.huge.module.analysis.domain.vo.CountRepeateVo; import cn.huge.module.cases.dao.mapper.CaseInfoMapper; -import cn.huge.module.cases.domain.dto.*; -import cn.huge.module.cases.domain.po.CaseAgent; import cn.huge.module.cases.domain.po.CaseInfo; -import cn.huge.module.cases.domain.po.CaseInfoUnfold; -import cn.huge.module.cases.domain.po.CasePerson; -import cn.huge.module.cases.service.*; -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.constant.BaseConsts; -import cn.huge.module.cust.dto.CtUserDTO; -import cn.huge.module.cust.dto.PaUserDTO; -import cn.huge.module.draft.service.CasedraftInfoService; -import cn.huge.module.mediate.constant.*; -import cn.huge.module.mediate.dto.WechatBindCaseDTO; -import cn.huge.module.sys.dto.FileIdTypeInfoBaseDTO; -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 dm.jdbc.util.StringUtil; import lombok.extern.slf4j.Slf4j; -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.Page; -import org.springframework.data.domain.PageImpl; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; -import java.io.IOException; -import java.util.*; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.List; /** * @author wangwh @@ -60,6 +40,84 @@ @Autowired private UtilsClientImpl utilsClient; + @Autowired + private AnalysisMapper analysisMapper; + + // 统计重复来访案件数量 + public List<CountRepeateDto> countRepeatedCases(CountRepeateVo countRepeateVo) { + return analysisMapper.countRepeatedCases(countRepeateVo); + } + + public List<CountRepeateDto> countRepeatedCasesByTime(CountRepeateVo countRepeateVo){ + DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String dayTypeStr = "day"; + String monthTypeStr = "month"; + String yearTypeStr = "year"; + + LocalDate start = LocalDate.parse(countRepeateVo.getCreateTimeStart(), DATE_TIME_FORMATTER); + LocalDate end = LocalDate.parse(countRepeateVo.getCreateTimeEnd(), DATE_TIME_FORMATTER); + + long daysBetween = java.time.temporal.ChronoUnit.DAYS.between(start, end); + if (daysBetween < 15) { + countRepeateVo.setGroupByTime(dayTypeStr); + } else if ((daysBetween >= 15) && (daysBetween < 365)) { + countRepeateVo.setGroupByTime(monthTypeStr); + } else { + countRepeateVo.setGroupByTime(yearTypeStr); + } + List<CountRepeateDto> countRepeateDtoList = this.countRepeatedCases(countRepeateVo); + if (!countRepeateDtoList.isEmpty()){ + String timeFormatter = ""; + if (dayTypeStr.equals(countRepeateVo.getGroupByTime())){ + timeFormatter = "日"; + } + else if (monthTypeStr.equals(countRepeateVo.getGroupByTime())) { + timeFormatter = "月"; + } + else if (yearTypeStr.equals(countRepeateVo.getGroupByTime())) { + timeFormatter = "年"; + } + for (CountRepeateDto countRepeateDto : countRepeateDtoList) { + // 按 “-”切割字符串,获取最后一个元素 + String[] split = countRepeateDto.getGroupByType().split("-"); + String lastElement = split[split.length - 1]; + // 判断 lastElement 是否为小于 13 的数字,如果是,则将类型转换为int + if (lastElement.matches("^\\d+$")) { + lastElement = String.valueOf(Integer.parseInt(lastElement)); + } + countRepeateDto.setGroupByType(lastElement + timeFormatter); + } + } + return countRepeateDtoList; + } + + public List<CountRepeateDto> countRepeatedCasesByArea(CountRepeateVo countRepeateVo) { + + + // 判断 countRepeateVo 的 queRoad 是否为空 + // 如果 queRoad 和 queArea 都为空且 queCity 不为空,则设置 groupByArea 为 true 根据 区 聚合 + if (StringUtil.isEmpty(countRepeateVo.getQueRoad()) && + StringUtil.isEmpty(countRepeateVo.getQueArea()) && + ! StringUtil.isEmpty(countRepeateVo.getQueCity())) { + countRepeateVo.setGroupByArea("true"); + } + // 如果 queRoad 为空且 queCity 和 queArea 不为空,则设置 groupByRoad 为 true 根据 街道 聚合 + else if (StringUtil.isEmpty(countRepeateVo.getQueRoad()) && + ! StringUtil.isEmpty(countRepeateVo.getQueArea()) && + ! StringUtil.isEmpty(countRepeateVo.getQueCity())) { + countRepeateVo.setGroupByRoad("true"); + } + + + List<CountRepeateDto> countRepeateDtoList = this.countRepeatedCases(countRepeateVo); + // if (countRepeateDtoList.size() == 1 && StringUtil.isEmpty(countRepeateDtoList.get(0).getGroupByType())) { + if (StringUtil.isEmpty(countRepeateDtoList.get(0).getGroupByType())) { + countRepeateDtoList.get(0).setGroupByType("本级"); + } + return countRepeateDtoList; + + } + -- Gitblit v1.8.0