123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- package com.fdkankan.fusion.service.impl;
- import com.fdkankan.fusion.common.util.CameraUtil;
- import com.fdkankan.fusion.common.util.DataUtil;
- import com.fdkankan.fusion.common.util.DateUtils;
- import com.fdkankan.fusion.entity.TmCamera;
- import com.fdkankan.fusion.entity.TmDepartment;
- import com.fdkankan.fusion.request.DataParam;
- import com.fdkankan.fusion.response.DataGroupVo;
- import com.fdkankan.fusion.service.*;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- @Service
- public class DataService implements IDataService {
- @Autowired
- ITmCameraService tmCameraService;
- @Autowired
- IScenePlusService scenePlusService;
- @Autowired
- ITmDepartmentService tmDepartmentService;
- @Autowired
- ITmProjectService tmProjectService;
- @Autowired
- ICameraDetailService cameraDetailService;
- @Override
- public Object sceneGroupByDept(DataParam param) {
- HashMap<String,List<Long>> deptIdMap = new HashMap<>();
- HashMap<Long,Long> cameraIdMap = new HashMap<>();
- String deptId = tmDepartmentService.getDeptId();
- List<TmDepartment> sonByDeptId = tmDepartmentService.getSonByDeptId(deptId);
- List<String> deptIds = sonByDeptId.stream().map(TmDepartment::getId).collect(Collectors.toList());
- deptIds.add(deptId);
- List<TmCamera> list = tmCameraService.getByDeptIds(deptIds);
- for (TmCamera tmCamera : list) {
- if(deptIdMap.get(tmCamera.getDeptId()) == null){
- List<Long> cameraIdList = new ArrayList<>();
- cameraIdList.add(tmCamera.getFdCameraId());
- deptIdMap.put(tmCamera.getDeptId(),cameraIdList);
- }else {
- deptIdMap.get(tmCamera.getDeptId()).add(tmCamera.getFdCameraId());
- }
- }
- List<Long> cameraIds = list.stream().map(TmCamera::getFdCameraId).collect(Collectors.toList());
- List<DataGroupVo> cameraCountList = scenePlusService.groupByCameraId(param,cameraIds);
- for (DataGroupVo dataGroupVo : cameraCountList) {
- cameraIdMap.put(Long.valueOf(dataGroupVo.getGroupKey()),dataGroupVo.getDataCount());
- }
- List<TmDepartment> deptList = getDeptVoList();
- List<DataGroupVo> dataGroupVos = new ArrayList<>();
- for (TmDepartment department : deptList) {
- List<Long> cameraIdList = deptIdMap.get(department.getId());
- Long count = 0L;
- if(cameraIdList != null){
- for (Long cameraId : cameraIdList) {
- count += cameraIdMap.get(cameraId) == null ? 0 : cameraIdMap.get(cameraId);
- }
- if(department.getChildren() != null && department.getChildren().size() >0){
- count += addCountByDept(department.getChildren(), deptIdMap, cameraIdMap);
- }
- }else {
- if(department.getChildren() != null && department.getChildren().size() >0){
- count += addCountByDept(department.getChildren(), deptIdMap, cameraIdMap);
- }
- }
- DataGroupVo vo = new DataGroupVo();
- vo.setDataCount(count);
- vo.setGroupKey(department.getName());
- dataGroupVos.add(vo);
- }
- return dataGroupVos;
- }
- private Long addCountByDept(List<TmDepartment> departments,HashMap<String,List<Long>>deptIdMap ,HashMap<Long,Long> cameraIdMap){
- Long count = 0L;
- for (TmDepartment department : departments) {
- List<Long> cameraIdList = deptIdMap.get(department.getId());
- if(cameraIdList != null){
- for (Long cameraId : cameraIdList) {
- count += cameraIdMap.get(cameraId) == null ? 0 : cameraIdMap.get(cameraId);
- }
- if(department.getChildren() != null && department.getChildren().size() >0){
- return count + addCountByDept(department.getChildren(), deptIdMap, cameraIdMap);
- }
- }
- }
- return count;
- }
- private Long addCountByDept(List<TmDepartment> departments ,HashMap<String,Long> deptMap){
- Long count = 0L;
- for (TmDepartment department : departments) {
- count += deptMap.get(department.getId()) == null? 0L :deptMap.get(department.getId());
- if(department.getChildren() != null && department.getChildren().size() >0){
- return count + addCountByDept(department.getChildren(), deptMap);
- }
- }
- return count;
- }
- private List<TmDepartment> getDeptVoList(){
- List<TmDepartment> deptList = tmDepartmentService.getDeptList();
- TmDepartment department1 = deptList.get(0);
- if(department1.getParentId() == null){ //超管
- return department1.getChildren().get(0).getChildren();
- }
- if(department1.getChildren()!= null && department1.getChildren().size() >0){ //总队
- return department1.getChildren();
- }
- return deptList;
- }
- @Override
- public Object projectGroupByDept(DataParam param) {
- List<DataGroupVo> groupVoList = tmProjectService.groupByDeptId(param);
- HashMap<String,Long> map = new HashMap<>();
- groupVoList.forEach(e -> map.put(e.getGroupKey(),e.getDataCount()));
- List<TmDepartment> deptVoList = getDeptVoList();
- List<DataGroupVo> dataGroupVos = new ArrayList<>();
- for (TmDepartment department : deptVoList) {
- Long count = map.get(department.getId()) == null? 0L : map.get(department.getId());
- if(department.getChildren() != null && department.getChildren().size() >0){
- count += addCountByDept(department.getChildren(), map);
- }
- DataGroupVo vo = new DataGroupVo();
- vo.setGroupKey(department.getName());
- vo.setDataCount(count);
- dataGroupVos.add(vo);
- }
- return dataGroupVos;
- }
- @Override
- public Object cameraGroupType(DataParam param) {
- List<TmCamera> tmCameras = tmCameraService.getByDeptIds(getSonDeptIds());
- List<Long> cameraIds = tmCameras.stream().map(TmCamera::getFdCameraId).collect(Collectors.toList());
- List<DataGroupVo> groupVoList = scenePlusService.groupByType(param,cameraIds);
- HashMap<String,Long> countMap = new HashMap<>();
- for (DataGroupVo dataGroupVo : groupVoList) {
- String key = CameraUtil.getCameraNameByType(Integer.valueOf(dataGroupVo.getGroupKey()));
- countMap.merge(key, dataGroupVo.getDataCount(), Long::sum);
- }
- return getListByMap(countMap);
- }
- private List<String> getSonDeptIds(){
- String deptId = tmDepartmentService.getDeptId();
- List<TmDepartment> sonByDeptId = tmDepartmentService.getSonByDeptId(deptId);
- List<String> deptIds = sonByDeptId.stream().map(TmDepartment::getId).collect(Collectors.toList());
- deptIds.add(deptId);
- return deptIds;
- }
- @Override
- public Object FireTrend(DataParam param) {
- List<String> monthdateList = DateUtils.getMonthdateList(param.getStartTime(), param.getEndTime());
- HashMap<String,Long> countMap = new HashMap<>();
- monthdateList.forEach(e -> countMap.put(e,0L));
- List<DataGroupVo> groupVoList = tmProjectService.groupByMonth(param,tmDepartmentService.getDeptIds());
- for (DataGroupVo dataGroupVo : groupVoList) {
- if(countMap.get(dataGroupVo.getGroupKey()) != null){
- countMap.put(dataGroupVo.getGroupKey(),dataGroupVo.getDataCount());
- }
- }
- return getListByMap(countMap);
- }
- @Override
- public Object FirePlaceTrend(DataParam param) {
- List<DataGroupVo> groupVoList = tmProjectService.groupByPlace(param,this.getSonDeptIds());
- HashMap<String,Long> countMap = new HashMap<>();
- for (String key : DataUtil.firePlace) {
- countMap.put(key,0L);
- }
- for (DataGroupVo dataGroupVo : groupVoList) {
- String key = dataGroupVo.getGroupKey().split(">")[0];
- countMap.merge(key, dataGroupVo.getDataCount(), Long::sum);
- }
- return getListByMap(countMap);
- }
- @Override
- public Object FireReasonTrend(DataParam param) {
- List<DataGroupVo> groupVoList = tmProjectService.groupByReason(param,this.getSonDeptIds());
- HashMap<String,Long> countMap = new HashMap<>();
- for (String key : DataUtil.fireReason) {
- countMap.put(key,0L);
- }
- for (DataGroupVo dataGroupVo : groupVoList) {
- String key = dataGroupVo.getGroupKey().split(">")[0];
- countMap.merge(key, dataGroupVo.getDataCount(), Long::sum);
- }
- return getListByMap(countMap);
- }
- private List<DataGroupVo> getListByMap( HashMap<String,Long> countMap ){
- List<DataGroupVo> dataGroupVos = new ArrayList<>();
- for (String key : countMap.keySet()) {
- DataGroupVo vo = new DataGroupVo();
- vo.setGroupKey(key);
- vo.setDataCount(countMap.get(key));
- dataGroupVos.add(vo);
- }
- return dataGroupVos;
- }
- }
|