From 8219cdfcb825b6d75c3a235a7e5195c8cac9a2ea Mon Sep 17 00:00:00 2001
From: songhuangfeng123 <shf18767906695@163.com>
Date: Tue, 06 Sep 2022 11:32:14 +0800
Subject: [PATCH] 统计接口rpc
---
incident-manage/incident-manage-service/src/main/java/com/gkhy/safePlatform/incidentManage/service/impl/AccidentCountServiceImpl.java | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 158 insertions(+), 0 deletions(-)
diff --git a/incident-manage/incident-manage-service/src/main/java/com/gkhy/safePlatform/incidentManage/service/impl/AccidentCountServiceImpl.java b/incident-manage/incident-manage-service/src/main/java/com/gkhy/safePlatform/incidentManage/service/impl/AccidentCountServiceImpl.java
index e68f8bd..2395704 100644
--- a/incident-manage/incident-manage-service/src/main/java/com/gkhy/safePlatform/incidentManage/service/impl/AccidentCountServiceImpl.java
+++ b/incident-manage/incident-manage-service/src/main/java/com/gkhy/safePlatform/incidentManage/service/impl/AccidentCountServiceImpl.java
@@ -1,19 +1,33 @@
package com.gkhy.safePlatform.incidentManage.service.impl;
+import com.gkhy.safePlatform.account.rpc.apimodel.AccountDepartmentService;
+import com.gkhy.safePlatform.account.rpc.apimodel.model.resp.DepInfoRPCRespDTO;
import com.gkhy.safePlatform.commons.enums.ResultCodes;
+import com.gkhy.safePlatform.commons.exception.BusinessException;
import com.gkhy.safePlatform.commons.utils.BeanCopyUtils;
import com.gkhy.safePlatform.commons.vo.ResultVO;
+import com.gkhy.safePlatform.commons.vo.SearchResultVO;
import com.gkhy.safePlatform.incidentManage.entity.*;
+import com.gkhy.safePlatform.incidentManage.enums.AccidentResultCodes;
+import com.gkhy.safePlatform.incidentManage.exception.AccidentException;
import com.gkhy.safePlatform.incidentManage.model.dto.resp.*;
import com.gkhy.safePlatform.incidentManage.query.AccidentReportCountQuery;
import com.gkhy.safePlatform.incidentManage.query.db.AccidentReportCountDBQuery;
+import com.gkhy.safePlatform.incidentManage.rpc.api.model.dto.req.IncidentManageCountRPCReq;
+import com.gkhy.safePlatform.incidentManage.rpc.api.model.dto.resp.IncidentManageCountDetailRPCResp;
+import com.gkhy.safePlatform.incidentManage.rpc.api.model.dto.resp.IncidentManageCountRPCResp;
+import com.gkhy.safePlatform.incidentManage.rpc.api.model.dto.resp.IncidentManageRPCResp;
import com.gkhy.safePlatform.incidentManage.service.AccidentCountService;
import com.gkhy.safePlatform.incidentManage.service.baseService.AccidentReportInfoService;
import com.gkhy.safePlatform.incidentManage.utils.TimeUtils;
+import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import javax.print.DocFlavor;
import java.util.*;
+import java.util.stream.Collectors;
@Service("accidentCountService")
public class AccidentCountServiceImpl implements AccidentCountService {
@@ -21,6 +35,150 @@
@Autowired
private AccidentReportInfoService accidentReportInfoService;
+ @DubboReference(check = false)
+ private AccountDepartmentService accountDepartmentService;
+
+
+ @Override
+ public SearchResultVO<IncidentManageRPCResp> getCountByDeptId(IncidentManageCountRPCReq query) {
+ if (query.getYear() == null) {
+ throw new AccidentException(AccidentResultCodes.YEAR_NULL);
+ }
+ IncidentManageRPCResp incidentManageCountRPCResp = new IncidentManageRPCResp();
+ // 获取id对应的部门
+ DepInfoRPCRespDTO depInfoRPCRespDTO = getDepInfoByDepId(query.getDeptId());
+ incidentManageCountRPCResp.setDeptId(depInfoRPCRespDTO.getDepId());
+ incidentManageCountRPCResp.setDeptName(depInfoRPCRespDTO.getDepName());
+ incidentManageCountRPCResp.setDeptLevel(depInfoRPCRespDTO.getDepLevel());
+
+ getSingleTimeData(incidentManageCountRPCResp, query);
+
+ SearchResultVO searchResultVO = new SearchResultVO<>(
+ false,
+ null,
+ null,
+ null,
+ null,
+ incidentManageCountRPCResp,
+ ResultCodes.OK
+ );
+ searchResultVO.setCount(1);
+ return searchResultVO;
+ }
+
+ @Override
+ public SearchResultVO<List<IncidentManageRPCResp>> getCountByDeptIds(IncidentManageCountRPCReq query) {
+ if (query.getYear() == null) {
+ throw new AccidentException(AccidentResultCodes.YEAR_NULL);
+ }
+ List<IncidentManageRPCResp> list = new ArrayList<>();
+
+ // 获取该部门及其子部门的所有信息
+ List<DepInfoRPCRespDTO> deptList = getDepListInfoByDepId(query.getDeptId());
+
+ for (DepInfoRPCRespDTO depInfoRPCRespDTO : deptList) {
+ IncidentManageRPCResp incidentManageCountRPCResp = new IncidentManageRPCResp();
+ incidentManageCountRPCResp.setDeptId(depInfoRPCRespDTO.getDepId());
+ incidentManageCountRPCResp.setDeptName(depInfoRPCRespDTO.getDepName());
+ incidentManageCountRPCResp.setDeptLevel(depInfoRPCRespDTO.getDepLevel());
+
+ getSingleTimeData(incidentManageCountRPCResp, query);
+ list.add(incidentManageCountRPCResp);
+ }
+ SearchResultVO searchResultVO = new SearchResultVO<>(
+ false,
+ null,
+ null,
+ null,
+ null,
+ list,
+ ResultCodes.OK
+ );
+ if (!list.isEmpty()){
+ searchResultVO.setCount(list.size());
+ }
+ return searchResultVO;
+ }
+
+ private void getSingleTimeData(IncidentManageRPCResp incidentManageRPCResp, IncidentManageCountRPCReq query) {
+
+ List<IncidentManageCountRPCResp> resList = new ArrayList<>();
+
+ List<AccidentReportCountRPC> accidentReportCountRPCList = new ArrayList<>();
+ Long deptId = incidentManageRPCResp.getDeptId();
+ String startTime;
+ String endTime;
+ if (query.getMonth() == null) {
+ // 查该年度12个月份的
+ startTime = TimeUtils.getYearFirst(query.getYear());
+ endTime = TimeUtils.getYearLast(query.getYear());
+ accidentReportCountRPCList= accidentReportInfoService.getCountForRPCByDeptIdAndMonth(startTime, endTime, deptId);
+
+ } else {
+ // 查该年度指定月份的
+ startTime = TimeUtils.getMonthFirst(query.getYear(), query.getMonth());
+ endTime = TimeUtils.getMonthLast(query.getYear(), query.getMonth());
+ accidentReportCountRPCList = accidentReportInfoService.getCountForRPCByDeptIdAndDay(startTime, endTime, deptId);
+ }
+
+ // 拼装第一层时间(去重)
+ Set<Integer> timeSET = accidentReportCountRPCList.stream().map(AccidentReportCountRPC::getTime).collect(Collectors.toSet());
+ // 拼装第一层时间(排序)
+ List<Integer> timeList = timeSET.stream().sorted().collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(timeSET)) {
+ for (Integer integer : timeSET) {
+ IncidentManageCountRPCResp incidentManageCountRPCResp = new IncidentManageCountRPCResp();
+ incidentManageCountRPCResp.setTime(integer);
+ incidentManageCountRPCResp.setDetail(new ArrayList<>());
+ resList.add(incidentManageCountRPCResp);
+ }
+ }
+ // 拼装第二层事故详情
+ if (!CollectionUtils.isEmpty(timeList)) {
+ for (AccidentReportCountRPC accidentReportCountRPC : accidentReportCountRPCList) {
+ for (IncidentManageCountRPCResp incidentManageCountRPCResp : resList) {
+ if (accidentReportCountRPC.getTime().equals(incidentManageCountRPCResp.getTime())) {
+ IncidentManageCountDetailRPCResp incidentManageCountDetailRPCResp = new IncidentManageCountDetailRPCResp();
+
+ incidentManageCountDetailRPCResp.setLevel(accidentReportCountRPC.getLevel());
+ incidentManageCountDetailRPCResp.setNum(accidentReportCountRPC.getNum());
+ incidentManageCountDetailRPCResp.setMinorInjuryNum(accidentReportCountRPC.getMinorInjuryNum());
+ incidentManageCountDetailRPCResp.setSeriousInjuryNum(accidentReportCountRPC.getSeriousInjuryNum());
+ incidentManageCountDetailRPCResp.setDeathNum(accidentReportCountRPC.getDeathNum());
+ incidentManageCountDetailRPCResp.setEconomicLoss(accidentReportCountRPC.getEconomicLoss());
+ incidentManageCountRPCResp.getDetail().add(incidentManageCountDetailRPCResp);
+ }
+ }
+ }
+ }
+ incidentManageRPCResp.setData(resList);
+ }
+
+ private DepInfoRPCRespDTO getDepInfoByDepId(Long deptId) {
+ DepInfoRPCRespDTO dep = new DepInfoRPCRespDTO();
+ ResultVO<DepInfoRPCRespDTO> rpcResult = accountDepartmentService.getDepInfoByDepId(deptId);
+ if (rpcResult != null && rpcResult.getCode().equals(ResultCodes.OK.getCode())) {
+ if (rpcResult.getData() != null) {
+ dep = (DepInfoRPCRespDTO) rpcResult.getData();
+ }
+ } else {
+ throw new BusinessException(ResultCodes.CLIENT_DEP_NOT_EXIST);
+ }
+ return dep;
+ }
+
+ private List<DepInfoRPCRespDTO> getDepListInfoByDepId(Long deptId) {
+ List<DepInfoRPCRespDTO> depList = new ArrayList<>();
+ ResultVO<List<DepInfoRPCRespDTO>> rpcResult = accountDepartmentService.listDepAndSubDepByDepId(deptId);
+ if (rpcResult != null && rpcResult.getCode().equals(ResultCodes.OK.getCode())) {
+ if (rpcResult.getData() != null) {
+ depList = (List<DepInfoRPCRespDTO>) rpcResult.getData();
+ }
+ } else {
+ throw new BusinessException(ResultCodes.CLIENT_DEP_NOT_EXIST);
+ }
+ return depList;
+ }
@Override
public ResultVO<List<AccidentReportCountRespDTO>> countAccidentReport(AccidentReportCountQuery query) {
--
Gitblit v1.9.2