package com.fdkankan.manage.service.impl; import cn.dev33.satoken.stp.StpUtil; import com.fdkankan.fyun.face.FYunFileServiceInterface; import com.fdkankan.manage.common.FilePath; import com.fdkankan.manage.entity.DistrictCode; import com.fdkankan.manage.entity.JyUser; import com.fdkankan.manage.mapper.IDataMapper; import com.fdkankan.manage.service.*; import com.fdkankan.manage.util.Dateutils; import com.fdkankan.manage.vo.request.SceneTotalParam; import com.fdkankan.manage.vo.response.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.stream.Collectors; @Service public class DataService implements IDataService { @Autowired IDataMapper dataMapper; @Autowired IJyUserPlatformService userPlatformService; @Autowired IJyUserService jyUserService; @Autowired ISysRoleService sysRoleService; @Autowired IDistrictCodeService districtCodeService; @Autowired IScenePlusService scenePlusService; private JyUser commonSetParam(SceneTotalParam param){ Long sysUserId = Long.valueOf(StpUtil.getLoginId().toString()); Integer loginPlatformId = userPlatformService.getLoginPlatformId(); JyUser jyUser = jyUserService.getBySysId(sysUserId); if(!sysRoleService.isSuperAdmin()){ Boolean flag = sysRoleService.isAdmin(); if(!flag){ param.setUserId(jyUser.getUserId()); }else { param.setPlatformId(loginPlatformId); } } return jyUser; } @Override public SceneTotalVo sceneTotal(SceneTotalParam param) { JyUser jyUser = commonSetParam(param); SceneTotalVo totalVo = new SceneTotalVo(); Long totalSceneCount = dataMapper.totalSceneCount(param); param.setStartTime(Dateutils.getStartTime(Dateutils.getDaysAgoStr(30))); param.setEndTime(Dateutils.getEndTime(Dateutils.getDaysAgoStr(30))); Long preMonthAddCount = dataMapper.totalSceneCount(param); param.setStartTime(Dateutils.getStartTime(Dateutils.getDaysAgoStr(0))); param.setEndTime(Dateutils.getEndTime(Dateutils.getDaysAgoStr(0))); Long todayAddCount = dataMapper.totalSceneCount(param); Long totalUserCount = dataMapper.totalUserCount(param); Integer totalSceneUserCount = dataMapper.totalSceneUserCount(param).size(); param.setUserId(jyUser.getUserId()); Long userSceneCount = dataMapper.totalSceneCount(param); totalVo.setTotalSceneCount(totalSceneCount); totalVo.setTimeSceneCount(preMonthAddCount); totalVo.setTodaySceneCount(todayAddCount); totalVo.setTotalUserCount(totalUserCount); totalVo.setTotalSceneUserCount(Long.valueOf(totalSceneUserCount)); totalVo.setUserSceneCount(userSceneCount); return totalVo; } @Override public List sceneTrend(SceneTotalParam param) { commonSetParam(param); List datesStr = new ArrayList<>(); if(param.getTimeList() == null || param.getTimeList().isEmpty()){ datesStr = Dateutils.findDatesStr(Dateutils.getAddTime(-30, Dateutils.DAY), new Date(), Dateutils.DAY); }else { datesStr = Dateutils.findDatesStr(Dateutils.getDate(param.getStartTime()),Dateutils.getDate(param.getEndTime()),Dateutils.DAY); } HashMap sceneMap = new HashMap<>(); HashMap userMap = new HashMap<>(); datesStr.forEach(e ->sceneMap.put(e,0L)); datesStr.forEach(e ->userMap.put(e,0L)); List groupByCounts = dataMapper.getSceneGroupByDay(param); groupByCounts.forEach(e ->sceneMap.put(e.getGroupKey(),e.getTotalCount())); List userCount = dataMapper.getUserGroupByDay(param); userCount.forEach(e ->userMap.put(e.getGroupKey(),userMap.get(e.getGroupKey() +1))); List sceneList = new ArrayList<>(); for (String key : sceneMap.keySet()) { sceneList.add(new GroupByCountVo(key,sceneMap.get(key))); } List userList = new ArrayList<>(); for (String key : userMap.keySet()) { userList.add(new GroupByCountVo(key,userMap.get(key))); } List reList = new ArrayList<>(); SceneTrendVoList sceneTrendVoList = new SceneTrendVoList(); sceneTrendVoList.setType("scene"); sceneTrendVoList.setList(sceneList); reList.add(sceneTrendVoList); SceneTrendVoList sceneTrendVoList2 = new SceneTrendVoList(); sceneTrendVoList2.setType("user"); sceneTrendVoList2.setList(userList); reList.add(sceneTrendVoList2); return reList; } @Override public Object districtScatter(SceneTotalParam param) { commonSetParam(param); List dataList = dataMapper.getSceneGroupByDistrict(param); List districtCodeList = dataList.stream().map(GroupByCountVo::getGroupKey).collect(Collectors.toList()); HashMap map = districtCodeService.getByCodeList(districtCodeList); for (GroupByCountVo groupByCountVo : dataList) { if(groupByCountVo.getGroupKey() == null){ groupByCountVo.setGroupKey("unknown"); groupByCountVo.setGroupName("unknown"); } DistrictCode districtCode = map.get(groupByCountVo.getGroupKey()); if(districtCode != null){ groupByCountVo.setGroupName(districtCode.getName()); } } return dataList; } @Autowired IExcelService excelService; @Override public void exportSceneList(SceneTotalParam param, HttpServletRequest req, HttpServletResponse resp) { commonSetParam(param); List exportSceneLists = dataMapper.getExPortSceneList(param); try { excelService.commonExport(req,resp,"场景数据",exportSceneLists, ExportSceneList.class); } catch (Exception e) { throw new RuntimeException(e); } } }