|
@@ -0,0 +1,282 @@
|
|
|
+package com.redxun.knowledge.analysis.service;
|
|
|
+
|
|
|
+import com.redxun.common.tool.StringUtils;
|
|
|
+import com.redxun.knowledge.analysis.entity.vo.*;
|
|
|
+import com.redxun.knowledge.analysis.mapper.PvLogMapper;
|
|
|
+import com.redxun.knowledge.analysis.utils.ExcelUtils;
|
|
|
+import com.redxun.knowledge.analysis.entity.dto.DownloadDto;
|
|
|
+import com.redxun.knowledge.analysis.entity.dto.PersonVisitDto;
|
|
|
+import com.redxun.knowledge.common.UserService;
|
|
|
+import com.redxun.knowledge.utils.DateUtils;
|
|
|
+import io.swagger.models.auth.In;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.BeansException;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 文件名: AnalysisDownload
|
|
|
+ * 作者: zizg
|
|
|
+ * 时间: 2023/6/1
|
|
|
+ * 描述:
|
|
|
+ * 修改人:
|
|
|
+ * 修改时间:
|
|
|
+ * 修改内容:
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@Slf4j
|
|
|
+public class AnalysisDownloadService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private UserService userService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AnalysisSynthesizeServiceImpl analysisSynthesizeService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AnalysisCommonServiceImpl analysisCommonService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AnalysisAlbumServiceImpl analysisAlbumService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AnalysisMapServiceImpl analysisMapService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AnalysisSearchServiceImpl analysisSearchService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PvLogMapper pvLogMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出模版
|
|
|
+ * @param downloadDto
|
|
|
+ */
|
|
|
+ public void download(DownloadDto downloadDto,HttpServletResponse httpServletResponse) {
|
|
|
+ //人员和部门都为空
|
|
|
+ if (CollectionUtils.isEmpty(downloadDto.getPersonId()) && StringUtils.isEmpty(downloadDto.getOrganizationId())){
|
|
|
+ ExcelUtils.downloadExcel(null,downloadDto.getName(),downloadDto.getDownType(),httpServletResponse);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //查找对应数据
|
|
|
+ List<DownloadInfoVo> downloadInfoList = new ArrayList<>();
|
|
|
+ if (downloadDto.getName() == 1){
|
|
|
+ downloadInfoList = getModuleTotal(downloadDto);
|
|
|
+ } else if (downloadDto.getName() == 2){
|
|
|
+ downloadInfoList = getModuleKnowledge(downloadDto);
|
|
|
+ } else if (downloadDto.getName() == 3){
|
|
|
+ downloadInfoList = getModuleAlbum(downloadDto);
|
|
|
+ } else if (downloadDto.getName() == 4){
|
|
|
+ downloadInfoList = getModuleMap(downloadDto);
|
|
|
+ } else if (downloadDto.getName() == 5){
|
|
|
+ downloadInfoList = getModuleSearch(downloadDto);
|
|
|
+ }
|
|
|
+ //下载文件
|
|
|
+ ExcelUtils.downloadExcel(downloadInfoList,downloadDto.getName(),downloadDto.getDownType(),httpServletResponse);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //人员部门名称赋值
|
|
|
+ private String personDeptName(String userId, Integer type){
|
|
|
+ //查询人员(把用户id转成部门id)
|
|
|
+ if (type == 1){
|
|
|
+ userId = userService.queryOsUserDto(userId).getDeptId();
|
|
|
+ }
|
|
|
+ String deptPath = pvLogMapper.findAllDeptIdByDeptId(userId);
|
|
|
+ deptPath = deptPath.substring(deptPath.indexOf(".") + 1);
|
|
|
+ String[] split = deptPath.split("\\.");
|
|
|
+ String organization = Arrays.stream(split).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
|
|
|
+ return organization;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 综合统计赋值
|
|
|
+ * @param downloadDto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<DownloadInfoVo> getModuleTotal(DownloadDto downloadDto) {
|
|
|
+ PersonVisitDto personVisitDto = new PersonVisitDto();
|
|
|
+ BeanUtils.copyProperties(downloadDto,personVisitDto);
|
|
|
+ List<SynthesizeCompanyVo> synthesizeCompanyVos = analysisSynthesizeService.personVisit(personVisitDto);
|
|
|
+ //导出赋值
|
|
|
+ List<DownloadInfoVo> downloadInfoList = synthesizeCompanyVos.parallelStream().map(e -> {
|
|
|
+ DownloadInfoVo downloadInfoVo = new DownloadInfoVo();
|
|
|
+ String userId = null;
|
|
|
+ if (downloadDto.getDownType() == 1){
|
|
|
+ userId = downloadDto.getPersonId().stream().filter(h -> h.equals(e.getPkId())).findFirst().orElse(null);
|
|
|
+ } else {
|
|
|
+ userId = Arrays.stream(downloadDto.getOrganizationId().split(",")).collect(Collectors.toList()).stream().filter(h -> h.equals(e.getPkId())).findFirst().orElse(null);
|
|
|
+ }
|
|
|
+ //名称赋值
|
|
|
+ downloadInfoVo.setPersonName(e.getOrganization());
|
|
|
+ //部门路径赋值(人员)
|
|
|
+ if (!CollectionUtils.isEmpty(personVisitDto.getPersonId())){
|
|
|
+ personVisitDto.setOrganizationId(null);
|
|
|
+ String deptName = personDeptName(userId,downloadDto.getDownType());
|
|
|
+ downloadInfoVo.setDeptName(deptName);
|
|
|
+ } else {
|
|
|
+ //查询部门
|
|
|
+ String deptName = personDeptName(userId,downloadDto.getDownType());
|
|
|
+ downloadInfoVo.setDeptName(deptName);
|
|
|
+ }
|
|
|
+ //数量赋值
|
|
|
+ downloadInfoVo.setNum(e.getTotal().longValue());
|
|
|
+ return downloadInfoVo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return downloadInfoList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 仓库统计赋值
|
|
|
+ * @param downloadDto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<DownloadInfoVo> getModuleKnowledge(DownloadDto downloadDto){
|
|
|
+ PersonVisitDto personVisitDto = new PersonVisitDto();
|
|
|
+ BeanUtils.copyProperties(downloadDto,personVisitDto);
|
|
|
+ List<KnowledgeCompanyVo> knowledgeCompanyVoList = analysisCommonService.personKnowledge(personVisitDto);
|
|
|
+ List<DownloadInfoVo> result = knowledgeCompanyVoList.parallelStream().map(e -> {
|
|
|
+ DownloadInfoVo downloadInfoVo = new DownloadInfoVo();
|
|
|
+ String userId = null;
|
|
|
+ if (downloadDto.getDownType() == 1){
|
|
|
+ userId = downloadDto.getPersonId().stream().filter(h -> h.equals(e.getPkId())).findFirst().orElse(null);
|
|
|
+ } else {
|
|
|
+ userId = Arrays.stream(downloadDto.getOrganizationId().split(",")).collect(Collectors.toList()).stream().filter(h -> h.equals(e.getPkId())).findFirst().orElse(null);
|
|
|
+ }
|
|
|
+ //名称赋值
|
|
|
+ downloadInfoVo.setPersonName(e.getOrganization());
|
|
|
+ //部门路径赋值(人员)
|
|
|
+ if (!CollectionUtils.isEmpty(personVisitDto.getPersonId())){
|
|
|
+ personVisitDto.setOrganizationId(null);
|
|
|
+ String deptName = personDeptName(userId,downloadDto.getDownType());
|
|
|
+ downloadInfoVo.setDeptName(deptName);
|
|
|
+ } else {
|
|
|
+ //查询部门
|
|
|
+ String deptName = personDeptName(userId,downloadDto.getDownType());
|
|
|
+ downloadInfoVo.setDeptName(deptName);
|
|
|
+ }
|
|
|
+ //数量赋值
|
|
|
+ downloadInfoVo.setNum(e.getTotal().longValue());
|
|
|
+ return downloadInfoVo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 专辑统计赋值
|
|
|
+ * @param downloadDto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<DownloadInfoVo> getModuleAlbum(DownloadDto downloadDto){
|
|
|
+ PersonVisitDto personVisitDto = new PersonVisitDto();
|
|
|
+ BeanUtils.copyProperties(downloadDto,personVisitDto);
|
|
|
+ List<AlbumCompanyVo> albumCompanyVoList = analysisAlbumService.personAlbum(personVisitDto);
|
|
|
+ List<DownloadInfoVo> result = albumCompanyVoList.parallelStream().map(e -> {
|
|
|
+ DownloadInfoVo downloadInfoVo = new DownloadInfoVo();
|
|
|
+ String userId = null;
|
|
|
+ if (downloadDto.getDownType() == 1){
|
|
|
+ userId = downloadDto.getPersonId().stream().filter(h -> h.equals(e.getPkId())).findFirst().orElse(null);
|
|
|
+ } else {
|
|
|
+ userId = Arrays.stream(downloadDto.getOrganizationId().split(",")).collect(Collectors.toList()).stream().filter(h -> h.equals(e.getPkId())).findFirst().orElse(null);
|
|
|
+ }
|
|
|
+ //名称赋值
|
|
|
+ downloadInfoVo.setPersonName(e.getOrganization());
|
|
|
+ //部门路径赋值(人员)
|
|
|
+ if (!CollectionUtils.isEmpty(personVisitDto.getPersonId())){
|
|
|
+ personVisitDto.setOrganizationId(null);
|
|
|
+ String deptName = personDeptName(userId,downloadDto.getDownType());
|
|
|
+ downloadInfoVo.setDeptName(deptName);
|
|
|
+ } else {
|
|
|
+ //查询部门
|
|
|
+ String deptName = personDeptName(userId,downloadDto.getDownType());
|
|
|
+ downloadInfoVo.setDeptName(deptName);
|
|
|
+ }
|
|
|
+ //数量赋值
|
|
|
+ downloadInfoVo.setNum(e.getAlbum().longValue());
|
|
|
+ return downloadInfoVo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 地图统计赋值
|
|
|
+ * @param downloadDto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<DownloadInfoVo> getModuleMap(DownloadDto downloadDto){
|
|
|
+ PersonVisitDto personVisitDto = new PersonVisitDto();
|
|
|
+ BeanUtils.copyProperties(downloadDto,personVisitDto);
|
|
|
+ List<MapCompanyVo> mapCompanyVoList = analysisMapService.personMap(personVisitDto);
|
|
|
+ List<DownloadInfoVo> result = mapCompanyVoList.parallelStream().map(e -> {
|
|
|
+ DownloadInfoVo downloadInfoVo = new DownloadInfoVo();
|
|
|
+ String userId = null;
|
|
|
+ if (downloadDto.getDownType() == 1){
|
|
|
+ userId = downloadDto.getPersonId().stream().filter(h -> h.equals(e.getPkId())).findFirst().orElse(null);
|
|
|
+ } else {
|
|
|
+ userId = Arrays.stream(downloadDto.getOrganizationId().split(",")).collect(Collectors.toList()).stream().filter(h -> h.equals(e.getPkId())).findFirst().orElse(null);
|
|
|
+ }
|
|
|
+ //名称赋值
|
|
|
+ downloadInfoVo.setPersonName(e.getOrganization());
|
|
|
+ //部门路径赋值(人员)
|
|
|
+ if (!CollectionUtils.isEmpty(personVisitDto.getPersonId())){
|
|
|
+ personVisitDto.setOrganizationId(null);
|
|
|
+ String deptName = personDeptName(userId,downloadDto.getDownType());
|
|
|
+ downloadInfoVo.setDeptName(deptName);
|
|
|
+ } else {
|
|
|
+ //查询部门
|
|
|
+ String deptName = personDeptName(userId,downloadDto.getDownType());
|
|
|
+ downloadInfoVo.setDeptName(deptName);
|
|
|
+ }
|
|
|
+ //数量赋值
|
|
|
+ downloadInfoVo.setNum(e.getMap().longValue());
|
|
|
+ return downloadInfoVo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 搜索统计赋值
|
|
|
+ * @param downloadDto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<DownloadInfoVo> getModuleSearch(DownloadDto downloadDto){
|
|
|
+ PersonVisitDto personVisitDto = new PersonVisitDto();
|
|
|
+ BeanUtils.copyProperties(downloadDto,personVisitDto);
|
|
|
+ List<OrganizationSearchVo> organizationSearchVoList = analysisSearchService.personSearch(personVisitDto);
|
|
|
+ List<DownloadInfoVo> result = organizationSearchVoList.parallelStream().map(e -> {
|
|
|
+ DownloadInfoVo downloadInfoVo = new DownloadInfoVo();
|
|
|
+ String userId = null;
|
|
|
+ if (downloadDto.getDownType() == 1){
|
|
|
+ userId = downloadDto.getPersonId().stream().filter(h -> h.equals(e.getPkId())).findFirst().orElse(null);
|
|
|
+ } else {
|
|
|
+ userId = Arrays.stream(downloadDto.getOrganizationId().split(",")).collect(Collectors.toList()).stream().filter(h -> h.equals(e.getPkId())).findFirst().orElse(null);
|
|
|
+ }
|
|
|
+ //名称赋值
|
|
|
+ downloadInfoVo.setPersonName(e.getOrganization());
|
|
|
+ //部门路径赋值(人员)
|
|
|
+ if (!CollectionUtils.isEmpty(personVisitDto.getPersonId())){
|
|
|
+ personVisitDto.setOrganizationId(null);
|
|
|
+ String deptName = personDeptName(userId,downloadDto.getDownType());
|
|
|
+ downloadInfoVo.setDeptName(deptName);
|
|
|
+ } else {
|
|
|
+ //查询部门
|
|
|
+ String deptName = personDeptName(userId,downloadDto.getDownType());
|
|
|
+ downloadInfoVo.setDeptName(deptName);
|
|
|
+ }
|
|
|
+ //数量赋值
|
|
|
+ downloadInfoVo.setNum(((BigDecimal) e.getItem().get(0).get("value")).longValue());
|
|
|
+ return downloadInfoVo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+}
|