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.common.ResultCode; import com.fdkankan.manage.entity.DistrictCode; import com.fdkankan.manage.entity.JyPlatform; import com.fdkankan.manage.entity.JyUser; import com.fdkankan.manage.entity.ScenePlus; import com.fdkankan.manage.exception.BusinessException; 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; @Autowired IAuthPageService authPageService; private JyUser commonSetParam(SceneTotalParam param){ JyUser jyUser = jyUserService.getLoginUser(); if(param.getPlatformId() != null){ List jyPlatforms = authPageService.platformList(); List collect = jyPlatforms.stream().map(JyPlatform::getId).collect(Collectors.toList()); if(!collect.contains(param.getPlatformId())){ throw new BusinessException(ResultCode.NOT_PERMISSION); } }else { if(!sysRoleService.isSuperAdmin()){ Boolean flag = sysRoleService.isAdmin(); if(!flag){ param.setUserId(jyUser.getUserId()); }else { param.setPlatformId(jyUser.getPlatformId()); } } } 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.getDate(new Date()))); 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); String updateTime = dataMapper.getLastSceneBuildTime(param); totalVo.setTotalSceneCount(totalSceneCount); totalVo.setTimeSceneCount(preMonthAddCount); totalVo.setTodaySceneCount(todayAddCount); totalVo.setTotalUserCount(totalUserCount); totalVo.setTotalSceneUserCount(Long.valueOf(totalSceneUserCount)); totalVo.setUserSceneCount(userSceneCount); totalVo.setUpdateTime(updateTime); 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<>(); List groupByCounts = dataMapper.getSceneGroupByDay(param); groupByCounts.forEach(e ->sceneMap.put(e.getGroupKey(),e.getTotalCount())); List userCount = dataMapper.getUserGroupByDay(param); for (GroupByCountVo groupByCountVo : userCount) { if(userMap.get(groupByCountVo.getGroupKey()) != null){ userMap.put(groupByCountVo.getGroupKey(), userMap.get(groupByCountVo.getGroupKey()) +1); }else { userMap.put(groupByCountVo.getGroupKey(),1L); } } List reList = new ArrayList<>(); for (String key : datesStr) { reList.add(new SceneTrendVo(key,userMap.get(key),sceneMap.get(key))); } 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); } } }