|
@@ -2,11 +2,16 @@ package org.springblade.manager.controller;
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
|
|
|
+import com.mixsmart.utils.StringUtils;
|
|
import io.swagger.annotations.Api;
|
|
import io.swagger.annotations.Api;
|
|
import io.swagger.annotations.ApiOperation;
|
|
import io.swagger.annotations.ApiOperation;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
|
|
+import org.springblade.business.entity.UserOpinion;
|
|
import org.springblade.business.feign.OpinionUserClient;
|
|
import org.springblade.business.feign.OpinionUserClient;
|
|
import org.springblade.business.vo.BusinessUserOpinionVO;
|
|
import org.springblade.business.vo.BusinessUserOpinionVO;
|
|
|
|
+import org.springblade.core.mp.support.Condition;
|
|
|
|
+import org.springblade.core.mp.support.Query;
|
|
|
|
+import org.springblade.manager.service.ISignPfxFileService;
|
|
import org.springblade.manager.vo.ManagerHomePageVO;
|
|
import org.springblade.manager.vo.ManagerHomePageVO;
|
|
import org.springblade.core.boot.ctrl.BladeController;
|
|
import org.springblade.core.boot.ctrl.BladeController;
|
|
import org.springblade.core.tool.api.R;
|
|
import org.springblade.core.tool.api.R;
|
|
@@ -15,13 +20,20 @@ import org.springblade.manager.entity.ProjectInfo;
|
|
import org.springblade.manager.service.IContractInfoService;
|
|
import org.springblade.manager.service.IContractInfoService;
|
|
import org.springblade.manager.service.IProjectInfoService;
|
|
import org.springblade.manager.service.IProjectInfoService;
|
|
import org.springblade.manager.vo.ProjectUserAmountVO;
|
|
import org.springblade.manager.vo.ProjectUserAmountVO;
|
|
|
|
+import org.springblade.manager.vo.SingPfxManagementVO;
|
|
|
|
+import org.springblade.system.entity.DictBiz;
|
|
|
|
+import org.springblade.system.feign.IDictBizClient;
|
|
import org.springblade.system.user.entity.User;
|
|
import org.springblade.system.user.entity.User;
|
|
import org.springblade.system.user.feign.IUserClient;
|
|
import org.springblade.system.user.feign.IUserClient;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
+
|
|
|
|
+import java.util.HashMap;
|
|
|
|
+import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
|
|
@RestController
|
|
@RestController
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
@@ -37,6 +49,128 @@ public class ManagerHomePageController extends BladeController {
|
|
|
|
|
|
private final IContractInfoService contractInfoService;
|
|
private final IContractInfoService contractInfoService;
|
|
|
|
|
|
|
|
+ private final IDictBizClient dictBizClient;
|
|
|
|
+
|
|
|
|
+ private final ISignPfxFileService signPfxFileService;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 证书统计
|
|
|
|
+ */
|
|
|
|
+ @PostMapping("/queryProjectPfx")
|
|
|
|
+ @ApiOperationSupport(order = 6)
|
|
|
|
+ @ApiOperation(value = "证书统计")
|
|
|
|
+ public R<ManagerHomePageVO> queryProjectPfx(){
|
|
|
|
+ Query query = new Query();
|
|
|
|
+ query.setSize(6000);
|
|
|
|
+ query.setCurrent(1);
|
|
|
|
+
|
|
|
|
+ //返回参数
|
|
|
|
+ ManagerHomePageVO reVO = new ManagerHomePageVO();
|
|
|
|
+
|
|
|
|
+ List<SingPfxManagementVO> result = this.signPfxFileService.singPfxManagementPage(Condition.getPage(query), new SingPfxManagementVO(1, 6000)).getRecords();
|
|
|
|
+ if(result != null && result.size() > 0){
|
|
|
|
+ //过滤掉企业证书和个人证书数量都为0的项目
|
|
|
|
+ result.removeIf(vo -> (StringUtils.isEmpty(vo.getEnterpriseCount()) || "0".equals(vo.getEnterpriseCount()))
|
|
|
|
+ && (StringUtils.isEmpty(vo.getPersonalCount()) || "0".equals(vo.getPersonalCount())));
|
|
|
|
+ //设置参数
|
|
|
|
+ result.forEach(vo -> reVO.setPfxList(vo.getProjectName(), vo.getEnterpriseCount(), vo.getPersonalCount()));
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ return R.data(reVO);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 维护类型统计汇总
|
|
|
|
+ */
|
|
|
|
+ @PostMapping("/queryOpinionTypeAmount")
|
|
|
|
+ @ApiOperationSupport(order = 5)
|
|
|
|
+ @ApiOperation(value = "维护类型统计汇总")
|
|
|
|
+ public R<ManagerHomePageVO> queryOpinionTypeAmount(){
|
|
|
|
+ //获取所有工单信息
|
|
|
|
+ List<UserOpinion> opinions = this.opinionUserClient.queryOpinionTypeAmount();
|
|
|
|
+
|
|
|
|
+ //生成返回对象
|
|
|
|
+ ManagerHomePageVO resultVO = new ManagerHomePageVO();
|
|
|
|
+
|
|
|
|
+ //获取当前所有有效项目
|
|
|
|
+ List<ProjectInfo> projectInfos = this.projectInfoService.list();
|
|
|
|
+
|
|
|
|
+ //处理数据
|
|
|
|
+ if(opinions != null && opinions.size() > 0 && opinions.get(0) != null){
|
|
|
|
+ //获取当前系统规定的分类
|
|
|
|
+ List<DictBiz> opinionTypes = this.dictBizClient.getList("opinion_type", "").getData();
|
|
|
|
+ //找到根节点后找到一级节点
|
|
|
|
+ StringBuilder opinionTypeValue = new StringBuilder();
|
|
|
|
+ for(DictBiz dictBiz : opinionTypes){
|
|
|
|
+ if(Long.valueOf("0").equals(dictBiz.getParentId())){
|
|
|
|
+ //继续寻找一级节点
|
|
|
|
+ for(DictBiz biz : opinionTypes){
|
|
|
|
+ if(biz.getParentId().equals(dictBiz.getId())){
|
|
|
|
+ opinionTypeValue.append(",").append(biz.getDictValue());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //删除掉项目ID为空或是-1的数据
|
|
|
|
+ opinions.removeIf(opinion -> opinion.getProjectId() == null || opinion.getProjectId() == -1);
|
|
|
|
+
|
|
|
|
+ String[] opinionTypeValues = opinionTypeValue.toString().split(",");
|
|
|
|
+
|
|
|
|
+ //根据项目获取对应的数据结果
|
|
|
|
+ Iterator<ProjectInfo> projectIterator = projectInfos.iterator();
|
|
|
|
+ while (projectIterator.hasNext()) {
|
|
|
|
+ ProjectInfo project = projectIterator.next();
|
|
|
|
+ //如果找不到自己的数据则删除这个项目
|
|
|
|
+ boolean isRemove = true;
|
|
|
|
+ //生成问题map
|
|
|
|
+ Map<String, Integer> opinionTypeMap = new HashMap<>();
|
|
|
|
+
|
|
|
|
+ //循环规定的问题分类
|
|
|
|
+ for(String key : opinionTypeValues){
|
|
|
|
+ if(StringUtils.isNotEmpty(key)){
|
|
|
|
+ //找到自己的数据
|
|
|
|
+ Iterator<UserOpinion> opinionIterator = opinions.iterator();
|
|
|
|
+ while (opinionIterator.hasNext()){
|
|
|
|
+ UserOpinion userOpinion = opinionIterator.next();
|
|
|
|
+ if(userOpinion.getProjectId().equals(project.getId()) && userOpinion.getProblemType().contains(key)){
|
|
|
|
+ isRemove = false;
|
|
|
|
+ if(!opinionTypeMap.containsKey(key)){
|
|
|
|
+ opinionTypeMap.put(key, 1);
|
|
|
|
+ } else {
|
|
|
|
+ opinionTypeMap.put(key, opinionTypeMap.get(key) + 1);
|
|
|
|
+ }
|
|
|
|
+ //已经处理,删除
|
|
|
|
+ opinionIterator.remove();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(isRemove){
|
|
|
|
+ //找不到自己的数据,删除
|
|
|
|
+ projectIterator.remove();
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //根据 opinionTypeMap 的结果设置当前项目的信息
|
|
|
|
+ StringBuilder typeValue = new StringBuilder();
|
|
|
|
+ for(String key : opinionTypeValues){
|
|
|
|
+ if(StringUtils.isNotEmpty(key)){
|
|
|
|
+ typeValue.append(",").append(opinionTypeMap.get(key));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //设置信息
|
|
|
|
+ resultVO.setUserOpinionList(project.getId().toString(), project.getProjectName(), opinionTypeValue.substring(1).replaceAll("null", "0"), typeValue.substring(1).replaceAll("null", "0"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //设置项目
|
|
|
|
+ resultVO.setProjectInfos(projectInfos);
|
|
|
|
+
|
|
|
|
+ return R.data(resultVO);
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 项目人员统计
|
|
* 项目人员统计
|
|
*/
|
|
*/
|
|
@@ -46,13 +180,23 @@ public class ManagerHomePageController extends BladeController {
|
|
public R<ManagerHomePageVO> queryProjectUserAmount(){
|
|
public R<ManagerHomePageVO> queryProjectUserAmount(){
|
|
//查询各项目下人员数量
|
|
//查询各项目下人员数量
|
|
List<ProjectUserAmountVO> result = this.projectInfoService.queryProjectUserAmount();
|
|
List<ProjectUserAmountVO> result = this.projectInfoService.queryProjectUserAmount();
|
|
- ManagerHomePageVO vo = new ManagerHomePageVO();
|
|
|
|
- vo.setProjectUserAmountVOList(result);
|
|
|
|
|
|
|
|
//统计数量
|
|
//统计数量
|
|
- final int[] amount = {0};
|
|
|
|
- result.forEach(amountVO -> amount[0] = amount[0] + amountVO.getContractor() + amountVO.getSupervision() + amountVO.getOwner());
|
|
|
|
- vo.setProjectUserAmount(amount[0]);
|
|
|
|
|
|
+ int amount = 0;
|
|
|
|
+ Iterator<ProjectUserAmountVO> iterator = result.iterator();
|
|
|
|
+ while (iterator.hasNext()) {
|
|
|
|
+ ProjectUserAmountVO vo = iterator.next();
|
|
|
|
+ int count = vo.getOwner() + vo.getSupervision() + vo.getContractor();
|
|
|
|
+ if(count <= 0){
|
|
|
|
+ iterator.remove();
|
|
|
|
+ }
|
|
|
|
+ amount = amount + count;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //设置返回
|
|
|
|
+ ManagerHomePageVO vo = new ManagerHomePageVO();
|
|
|
|
+ vo.setProjectUserAmountVOList(result);
|
|
|
|
+ vo.setProjectUserAmount(amount);
|
|
|
|
|
|
return R.data(vo);
|
|
return R.data(vo);
|
|
}
|
|
}
|
|
@@ -99,7 +243,7 @@ public class ManagerHomePageController extends BladeController {
|
|
String title = "待办工单任务:" + vo.getManageTime() + "来自" + "【" + vo.getProjectName() + "-" + vo.getContractName() + "】" +
|
|
String title = "待办工单任务:" + vo.getManageTime() + "来自" + "【" + vo.getProjectName() + "-" + vo.getContractName() + "】" +
|
|
"的【" + "资料员" + vo.getSubmitUserName() + "】" + "向您反馈" + "\"" + vo.getProblemType() + "\"";
|
|
"的【" + "资料员" + vo.getSubmitUserName() + "】" + "向您反馈" + "\"" + vo.getProblemType() + "\"";
|
|
|
|
|
|
- resultVO.setUserOpinionList(vo.getUserOpinionId().toString(), title, vo.getCurrentLink(), vo.getNewNumber(), vo.getCurrentLinkId().toString(), vo.getOperation());
|
|
|
|
|
|
+ resultVO.setUserOpinionFlowList(vo.getUserOpinionId().toString(), title, vo.getCurrentLink(), vo.getNewNumber(), vo.getCurrentLinkId().toString(), vo.getOperation());
|
|
});
|
|
});
|
|
}catch (Exception e){
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
@@ -132,10 +276,10 @@ public class ManagerHomePageController extends BladeController {
|
|
"的【" + "资料员" + vo.getSubmitUserName() + "】" + "向您反馈" + "\"" + vo.getProblemType() + "\"";
|
|
"的【" + "资料员" + vo.getSubmitUserName() + "】" + "向您反馈" + "\"" + vo.getProblemType() + "\"";
|
|
} else {
|
|
} else {
|
|
title = "待办工单任务:" + vo.getManageTime() + "来自" + "【" + vo.getProjectName() + "-" + vo.getContractName() + "】" +
|
|
title = "待办工单任务:" + vo.getManageTime() + "来自" + "【" + vo.getProjectName() + "-" + vo.getContractName() + "】" +
|
|
- "的【" + "资料员" + vo.getSubmitUserName() + "】" + "向" + vo.getManagerUserName() + "反馈" + "\"" + vo.getProblemType() + "\"";
|
|
|
|
|
|
+ "的【" + "资料员" + vo.getSubmitUserName() + "】" + "向【" + vo.getManagerUserName() + "】反馈" + "\"" + vo.getProblemType() + "\"";
|
|
}
|
|
}
|
|
|
|
|
|
- resultVO.setUserOpinionList(vo.getUserOpinionId().toString(), title, vo.getCurrentLink(), vo.getNewNumber(), vo.getCurrentLinkId().toString(), vo.getOperation());
|
|
|
|
|
|
+ resultVO.setUserOpinionFlowList(vo.getUserOpinionId().toString(), title, vo.getCurrentLink(), vo.getNewNumber(), vo.getCurrentLinkId().toString(), vo.getOperation());
|
|
});
|
|
});
|
|
|
|
|
|
}catch (Exception e){
|
|
}catch (Exception e){
|