dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java
@@ -552,6 +552,9 @@ CtUserDTO loginUser = ctUserService.clientGetUserAll(userId); // 获取当前登录用户的部门 CtUnit loginUnit = mapper.selectById(loginUser.getUnitId()); if(loginUnit.getUnitGrade()==4){ loginUnit.setUnitGrade(3); } // 市级交办 if (UserBaseConsts.UNIT_GRADE_1 == loginUnit.getUnitGrade()) { QueryWrapper<CtUnit> ctUnitQueryWrapper = new QueryWrapper<>(); dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseInfoMapper.java
@@ -143,6 +143,21 @@ CaseStatisticsBaseDTO statisticsBase(@Param("terms") Map<String, Object> terms); /** * 统计分析(基础)新版 * 这通常用于获取基础的案例统计数据,如总数、化解成功数、化解不成功数、化解中数等 * 新版统计逻辑: * - 化解中包括待受理(info_process <= 2) * - 化解成功(info_process = 3 且 medi_result = '22_00025-1') * - 化解不成功(info_process = 3 且 medi_result = '22_00025-2') * - 不予受理(info_process = 4) * * @param terms 包含统计条件的键值对,如时间范围、地区等 * @return 返回一个对象,包含基础的案例统计数据 */ CaseStatisticsBaseDTO statisticsBaseProcess(@Param("terms") Map<String, Object> terms); /** * 统计一级分类下的案例类型数据 * 这通常用于获取最顶层的案例类型分布 * dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml
@@ -1106,6 +1106,29 @@ LEFT JOIN dyh_ct_unit c ON b.belong_unit_id = c.id <include refid="where-part-all"/> </select> <!-- 统计分析(基础)-统计调解过程 --> <select id="statisticsBaseProcess" resultType="cn.huge.module.cases.domain.dto.CaseStatisticsBaseDTO"> SELECT count(1) as totalNum, sum(case when b.medi_result = '22_00025-1' and a.info_process = 3 then 1 else 0 end) as resolveNum, sum(case when a.info_process <![CDATA[ < ]]> 3 then 1 else 0 end) as resolveingNum, sum(case when b.medi_result = '22_00025-2' and a.info_process = 3 then 1 else 0 end) as unResolveNum, sum(case when a.case_level = 1 then 1 else 0 end) as oneLevelNum, sum(case when a.case_level = 2 then 1 else 0 end) as twoLevelNum, sum(case when a.case_level = 3 then 1 else 0 end) as threeLevelNum, sum(case when a.info_process = 2 then 1 when a.info_process = 1 then 1 else 0 end) as processNum, sum(case when a.info_process = 3 and b.medi_result = '22_00025-1' then 1 else 0 end) as finishNum, sum(case when a.info_process = 4 then 1 else 0 end) as rejectNum, sum(case when a.info_process = 3 and b.medi_result = '22_00025-2' then 1 else 0 end) as failNum FROM dyh_case_info a inner JOIN dyh_case_info_unfold b on a.id = b.id LEFT JOIN dyh_ct_unit c ON b.belong_unit_id = c.id <include refid="where-part-all"/> </select> <!-- 统计分析(类型) --> <select id="statisticsTypeFirst" resultType="cn.huge.module.cases.domain.dto.CaseStatisticsTypeDTO"> SELECT dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseStatisticsBaseDTO.java
@@ -10,15 +10,23 @@ @Data public class CaseStatisticsBaseDTO { private Integer totalNum=0;//总记录数 private Integer processNum=0;//办理中数量 private Integer finishNum=0;//已结案数量 // private Integer processNum=0;//办理中数量 // private Integer finishNum=0;//已结案数量 // private Integer rejectNum=0;//不予受理数量 // private Integer resolveNum=0;//化解成功数量 // private String resolveRate;//化解成功率 // private Integer unResolveNum=0;//化解不成功数量 // private String unResolveRate;//化解不成功率 // private Integer resolveingNum=0;//化解中数量 // private String resolveingRate;//化解中率 private Integer rejectNum=0;//不予受理数量 private Integer resolveNum=0;//化解成功数量 private String resolveRate;//化解成功率 private Integer unResolveNum=0;//化解不成功数量 private String unResolveRate;//化解不成功率 private Integer resolveingNum=0;//化解中数量 private String resolveingRate;//化解中率 private String rejectRate;//不予受理率 private Integer processNum=0;//化解中数量 private String processRate;//化解中率 private Integer finishNum=0;//化解成功数量 private String finishRate;//化解成功率 private Integer failNum=0;//化解不成功数量 private String failRate;//化解不成功率 private Integer oneLevelNum=0;//1级事件数量 private Integer twoLevelNum=0;//2级事件数量 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseAssistApplyService.java
@@ -26,6 +26,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; @@ -40,17 +41,17 @@ import java.util.Map; /** * @author wangwh * @version 1.0.0 * @title: 联合处置申请信息表业务逻辑处理 * @Description 联合处置申请信息表业务逻辑处理 * @company hugeinfo * @author wangwh * @Time 2024-09-05 17:25:04 * @version 1.0.0 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) public class CaseAssistApplyService extends ServiceImpl<CaseAssistApplyMapper, CaseAssistApply>{ public class CaseAssistApplyService extends ServiceImpl<CaseAssistApplyMapper, CaseAssistApply> { @Autowired private CaseAssistApplyMapper mapper; @@ -75,101 +76,109 @@ private SyHolidayService syHolidayService; /** * 更新对象 * @param entity 对象 */ public void updateCaseAssistApply(CaseAssistApply entity){ try{ * 更新对象 * * @param entity 对象 */ public void updateCaseAssistApply(CaseAssistApply entity) { try { mapper.updateCaseAssistApply(entity); }catch (Exception e){ log.error("[CaseAssistApplyService.updateCaseAssistApply]调用失败,异常信息:"+e, e); } catch (Exception e) { log.error("[CaseAssistApplyService.updateCaseAssistApply]调用失败,异常信息:" + e, e); throw new ServiceException("CaseAssistApplyService.updateCaseAssistApply", e); } } /** * 条件更新对象 * @param entity 对象 * @param terms 条件 */ public void updateCaseAssistApplyTerms(CaseAssistApply entity, Map<String, Object> terms){ try{ * 条件更新对象 * * @param entity 对象 * @param terms 条件 */ public void updateCaseAssistApplyTerms(CaseAssistApply entity, Map<String, Object> terms) { try { mapper.updateCaseAssistApplyTerms(entity, terms); }catch (Exception e){ log.error("[CaseAssistApplyService.updateCaseAssistApplyTerms]调用失败,异常信息:"+e, e); } catch (Exception e) { log.error("[CaseAssistApplyService.updateCaseAssistApplyTerms]调用失败,异常信息:" + e, e); throw new ServiceException("CaseAssistApplyService.updateCaseAssistApplyTerms", e); } } /** * 根据编号物理删除 * @param id 查询条件集合 */ public void deleteCaseAssistApply(String id){ try{ * 根据编号物理删除 * * @param id 查询条件集合 */ public void deleteCaseAssistApply(String id) { try { mapper.deleteCaseAssistApply(id); }catch (Exception e){ log.error("[CaseAssistApplyService.deleteCaseAssistApply]调用失败,异常信息:"+e, e); } catch (Exception e) { log.error("[CaseAssistApplyService.deleteCaseAssistApply]调用失败,异常信息:" + e, e); throw new ServiceException("CaseAssistApplyService.deleteCaseAssistApply", e); } } /** * 按条件查询 * @param terms 条件 * @return List */ public List<CaseAssistApply> listTerms(Map<String, Object> terms){ * 按条件查询 * * @param terms 条件 * @return List */ public List<CaseAssistApply> listTerms(Map<String, Object> terms) { return mapper.listTerms(terms); } /** * 按条件统计 * @param terms 条件 * @return long */ public long countTerms(Map<String, Object> terms){ * 按条件统计 * * @param terms 条件 * @return long */ public long countTerms(Map<String, Object> terms) { return mapper.countTerms(terms); } /** * 按条件分页查询 * @param page 分页对象 * @param terms 条件 * @return Page */ public Page<CaseAssistApply> pageQuery(PageRequest page, Map<String, Object> terms){ * 按条件分页查询 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page<CaseAssistApply> pageQuery(PageRequest page, Map<String, Object> terms) { long total = mapper.countTerms(terms); List<CaseAssistApply> content = mapper.pageTerms(page, terms); return new PageImpl<CaseAssistApply>(content, page, total); } /** * 新增或更新对象 * @param caseAssistApply 实体对象 */ public void saveCaseAssistApply(CaseAssistApply caseAssistApply){ try{ * 新增或更新对象 * * @param caseAssistApply 实体对象 */ public void saveCaseAssistApply(CaseAssistApply caseAssistApply) { try { Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(caseAssistApply.getId())){ if (IdUtils.checkNewId(caseAssistApply.getId())) { caseAssistApply.setId(utilsClient.getNewTimeId()); caseAssistApply.setCreateTime(nowDate); } caseAssistApply.setUpdateTime(nowDate); this.saveOrUpdate(caseAssistApply); }catch (Exception e){ log.error("[CaseAssistApplyService.saveCaseAssistApply]调用失败,异常信息:"+e, e); } catch (Exception e) { log.error("[CaseAssistApplyService.saveCaseAssistApply]调用失败,异常信息:" + e, e); throw new ServiceException("CaseAssistApplyService.saveCaseAssistApply", e); } } /** * 添加联合处置申请 * * @param caseAssistApply 实体对象 */ public void addCaseAssistApply(CaseAssistApply caseAssistApply, String userId){ try{ public void addCaseAssistApply(CaseAssistApply caseAssistApply, String userId) { try { // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); Date now = DateUtils.getNowDate(); @@ -183,8 +192,25 @@ caseAssistApply.setApplyTime(now); caseAssistApply.setCreateTime(now); caseAssistApply.setUpdateTime(now); //如果申请联合处置的机构是区级机构,由区综治中心审核 boolean isQu = false; String quUnitId = ""; if (StringUtils.isNotEmpty(caseAssistApply.getApplyAssistUnitId())) { String[] unitIdList = caseAssistApply.getApplyAssistUnitId().split(BaseConsts.COMMA); for (String unitId : unitIdList) { CtUnitDTO unitById = custClient.getUnitById(unitId); if (unitById.getUnitGrade() == 2) { isQu = true; quUnitId = unitById.getId(); break; } } } // 上级综治中心审核 CtUnitDTO ctUnitDTO = custClient.getParentZzzxUnit(loginUser.getUnitId()); if (isQu) { ctUnitDTO=custClient.getParentZzzxUnit(quUnitId); } caseAssistApply.setAuditUnitId(ctUnitDTO.getId()); caseAssistApply.setAuditUnitName(ctUnitDTO.getUnitName()); mapper.insert(caseAssistApply); @@ -194,18 +220,19 @@ caseTask.setCandeUnitId(caseAssistApply.getAuditUnitId()); caseTask.setExpireTime(sysClient.getExpireTime(caseAssistApply.getApplyTime(), SyTimeEnum.SY_TIME_2.getIndex())); caseTaskService.createGridToDo(caseInfo, caseTask, GridEnum.GRID_OBJECT_TYPE_4.getIndex(), GridBaseConsts.GRID_TYPE_4); }catch (Exception e){ log.error("[CaseAssistApplyService.addCaseAssistApply]调用失败,异常信息:"+e, e); } catch (Exception e) { log.error("[CaseAssistApplyService.addCaseAssistApply]调用失败,异常信息:" + e, e); throw new ServiceException("CaseAssistApplyService.addCaseAssistApply", e); } } /** * 审核联合处置审核 * * @param caseAssistApply 实体对象 */ public void reviewCaseAssistApply(CaseAssistApply caseAssistApply, String userId){ try{ public void reviewCaseAssistApply(CaseAssistApply caseAssistApply, String userId) { try { // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); Date now = DateUtils.getNowDate(); @@ -223,7 +250,7 @@ if (AuditBaseConstsEnum.AUDIT_RESULT_1.getIndex().equals(caseAssistApplyPO.getAuditResult())) { String[] unitIdList = caseAssistApplyPO.getApplyAssistUnitId().split(BaseConsts.COMMA); String[] unitNameList = caseAssistApplyPO.getApplyAssistUnitName().split(BaseConsts.COMMA); for (int i=0; i<unitIdList.length; i++){ for (int i = 0; i < unitIdList.length; i++) { String unitId = unitIdList[i]; String unitName = unitNameList[i]; // 启动联合处置工作流 @@ -255,7 +282,7 @@ dfpCaseTask.setHandleUserName(loginUser.getTrueName()); dfpCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1); dfpCaseTask.setHandleContent(caseAssistApplyPO.getAuditContent()); dfpCaseTask.setHandleIllust("交办至:"+caseAssistApplyPO.getApplyAssistUnitName()); dfpCaseTask.setHandleIllust("交办至:" + caseAssistApplyPO.getApplyAssistUnitName()); // 任务处理时限 if (dfpFlowNode.getExpire() != 0) { dfpCaseTask.setExpireTime(syHolidayService.getExpiryDay(now, dfpFlowNode.getExpire())); @@ -319,29 +346,30 @@ caseInfoUnfoldPO.setAssistUnitId(caseAssistApplyPO.getApplyAssistUnitId()); caseInfoUnfoldPO.setAssistUnitName(caseAssistApplyPO.getApplyAssistUnitName()); caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO); }else{ } else { CaseTask caseTask = new CaseTask(); caseTask.setCaseId(caseAssistApplyPO.getCaseId()); caseTask.setId(caseAssistApplyPO.getCaseId()); caseTaskService.deleteGridTodo(caseTask); } }catch (Exception e){ log.error("[CaseAssistApplyService.reviewCaseAssistApply]调用失败,异常信息:"+e, e); } catch (Exception e) { log.error("[CaseAssistApplyService.reviewCaseAssistApply]调用失败,异常信息:" + e, e); throw new ServiceException("CaseAssistApplyService.reviewCaseAssistApply", e); } } /** * 根据案件编号查询联合处置申请 * * @param id 主键编号 * @return long */ public CaseAssistApply caseAssistApplyById(String id){ public CaseAssistApply caseAssistApplyById(String id) { try { QueryWrapper<CaseAssistApply> caseAssistApplyQueryWrapper = new QueryWrapper<>(); caseAssistApplyQueryWrapper.eq("id", id); CaseAssistApply caseAssistApply = mapper.selectOne(caseAssistApplyQueryWrapper); if(ObjectUtils.isNotEmpty(caseAssistApply)){ if (ObjectUtils.isNotEmpty(caseAssistApply)) { Map<String, Object> terms = new HashMap<>(); terms.put("mainId", caseAssistApply.getCaseId()); terms.put("ownerIds", "'" + caseAssistApply.getId() + "'"); @@ -351,37 +379,40 @@ } } return caseAssistApply; }catch(Exception e ){ log.error("[CaseAssistApplyService.caseAssistApplyById]调用失败,异常信息:"+e, e); } catch (Exception e) { log.error("[CaseAssistApplyService.caseAssistApplyById]调用失败,异常信息:" + e, e); throw new ServiceException("CaseAssistApplyService.caseAssistApplyById", e); } } /** * 首页查询 * * @param auditUnitId 审核组织编号 * @return long */ public long countAssistReview(String auditUnitId){ public long countAssistReview(String auditUnitId) { return mapper.countAssistReview(auditUnitId); } /** * 首页-待审核条件统计 * * @param terms 条件 * @return long */ public long countMyTaskAssistReview(Map<String, Object> terms){ public long countMyTaskAssistReview(Map<String, Object> terms) { return mapper.countMyTaskAssistReview(terms); } /** * 按条件查询 * @param page 分页对象 * * @param page 分页对象 * @param terms 条件 * @return List */ public List<FrontPageListDTO> pageMyTaskAssistReview(PageRequest page, Map<String, Object> terms){ public List<FrontPageListDTO> pageMyTaskAssistReview(PageRequest page, Map<String, Object> terms) { return mapper.pageMyTaskAssistReview(page, terms); } dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseFeedbackService.java
@@ -327,7 +327,7 @@ QueryWrapper<CaseInfoUnfold> caseInfoUnfoldQueryWrapper = new QueryWrapper<>(); caseInfoUnfoldQueryWrapper.eq("id", caseFeedback.getCaseId()); CaseInfoUnfold caseInfoUnfold = unfoldService.getOne(caseInfoUnfoldQueryWrapper); if (caseInfoUnfold.getMediateUnitId().equals(loginUser.getUnitId())) { if (caseInfoUnfold.getMediateUnitId() == null && caseInfoUnfold.getMediateUnitId().equals(loginUser.getUnitId())) { caseFeedback.setHandleType(CaseTaskConsts.HANDLE_TYPE_1); } else { caseFeedback.setHandleType(CaseTaskConsts.HANDLE_TYPE_2); dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
@@ -1307,6 +1307,31 @@ 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; } /** * 纠纷态势 @@ -1391,16 +1416,8 @@ } //基础数据统计 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)); // 调用统计调解过程的方法 CaseStatisticsBaseDTO caseStatisticsBaseDTO = statisticsProcess(terms); //区域数据统计 List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS = new ArrayList<>(); if (!isLast) { @@ -2199,20 +2216,22 @@ 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.isEmpty(caseStatisticsTypeDTOS)) { // 临时移除所有类型筛选条件,获取全量纠纷类型统计 terms.remove("canal"); terms.remove("canalSecond"); terms.remove("canalList"); terms.remove("canalSecondNot"); terms.remove("canalSecondAll"); caseStatisticsTypeDTOS = mapper.statisticsTypeFirst(terms); } if (ObjectUtils.isNotEmpty(caseStatisticsTypeDTOS)) { sortType(caseStatisticsTypeDTOS);