huangjn 3 жил өмнө
parent
commit
0b3938e06f

+ 16 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/OpinionUserClient.java

@@ -20,7 +20,22 @@ public interface OpinionUserClient {
      */
      */
     String API_PREFIX = "/api/business/opinionUser";
     String API_PREFIX = "/api/business/opinionUser";
 
 
-    @PostMapping(API_PREFIX + "queryBusinessUserOpinionList")
+    /**
+     * 工单详情
+     */
+    @PostMapping(API_PREFIX + "/queryOpinionDetailsById")
+    BusinessUserOpinionVO queryOpinionDetailsById(@RequestParam String userOpinionId);
+
+    /**
+     * 后台主页获取所有待办工单
+     */
+    @PostMapping(API_PREFIX + "/queryBusinessUserOpinionListAll")
+    List<BusinessUserOpinionVO> queryBusinessUserOpinionListAll(@RequestParam Integer current, @RequestParam Integer size);
+
+    /**
+     * 后台主页获取当前用户的待办工单
+     */
+    @PostMapping(API_PREFIX + "/queryBusinessUserOpinionList")
     List<BusinessUserOpinionVO> queryBusinessUserOpinionList(@RequestParam Integer current, @RequestParam Integer size);
     List<BusinessUserOpinionVO> queryBusinessUserOpinionList(@RequestParam Integer current, @RequestParam Integer size);
 
 
     /**
     /**

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/BusinessUserOpinionVO.java

@@ -117,4 +117,7 @@ public class BusinessUserOpinionVO {
     @ApiModelProperty(value = "提交用户联系方式")
     @ApiModelProperty(value = "提交用户联系方式")
     private String submitPhone;
     private String submitPhone;
 
 
+    @ApiModelProperty(value = "分配的处理人姓名")
+    private String managerUserName;
+
 }
 }

+ 0 - 33
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/ManagerHomePageVO.java

@@ -1,33 +0,0 @@
-package org.springblade.business.vo;
-
-import lombok.Data;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ManagerHomePageVO {
-
-    private List<UserOpinion> userOpinionList = new ArrayList<>();
-
-//    public
-
-    @Data
-    public static class UserOpinion {
-        private String userOpinionId;
-        private String title;
-        private Integer currentLink;
-        private Integer newNumber;
-        private String currentLinkId;
-
-        public UserOpinion(String userOpinionId, String title, Integer currentLink, Integer newNumber, String currentLinkId){
-            this.userOpinionId = userOpinionId;
-            this.title = title;
-            this.currentLink = currentLink;
-            this.newNumber = newNumber;
-            this.currentLinkId = currentLinkId;
-        }
-
-        public UserOpinion(){}
-    }
-
-}

+ 103 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ManagerHomePageVO.java

@@ -0,0 +1,103 @@
+package org.springblade.manager.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class ManagerHomePageVO {
+
+    @ApiModelProperty("项目人员总数")
+    private Integer projectUserAmount;
+
+    @ApiModelProperty("每个项目人员数量")
+    private List<ProjectUserAmountVO> projectUserAmountVOList;
+
+    /**
+     * 当前用户待办工单
+     */
+    private List<UserOpinion> userOpinionList = new ArrayList<>();
+
+    public void setUserOpinionList(String userOpinionId, String title, Integer currentLink, Integer newNumber, String currentLinkId, boolean operation){
+        this.userOpinionList.add(new UserOpinion(userOpinionId, title, currentLink, newNumber, currentLinkId, operation));
+    }
+
+    public OpinionDetails getOpinionDetails(String projectName, String contractName, String opinionContent, String submitUserName, String submitUser, String submitPhone, String manageTime, List<String> fileUrl){
+        return new OpinionDetails(projectName, contractName, opinionContent, submitUserName, submitUser, submitPhone, manageTime, fileUrl);
+    }
+
+    @Data
+    public static class OpinionDetails {
+        @ApiModelProperty("项目名称")
+        private String projectName;
+        @ApiModelProperty("合同段名称")
+        private String contractName;
+        @ApiModelProperty("问题描述")
+        private String opinionContent;
+        @ApiModelProperty("反馈人员")
+        private String submitUserName;
+        @ApiModelProperty("反馈人员ID")
+        private String submitUser;
+        @ApiModelProperty("电话")
+        private String submitPhone;
+        @ApiModelProperty("反馈时间")
+        private String manageTime;
+        @ApiModelProperty("文件路径")
+        private List<String> fileUrl;
+
+        public OpinionDetails(String projectName, String contractName, String opinionContent, String submitUserName, String submitUser, String submitPhone, String manageTime, List<String> fileUrl){
+            this.projectName = projectName;
+            this.contractName = contractName;
+            this.opinionContent = opinionContent;
+            this.submitUserName = submitUserName;
+            this.submitUser = submitUser;
+            this.submitPhone = submitPhone;
+            this.manageTime = manageTime;
+            this.fileUrl = fileUrl;
+        }
+
+        public OpinionDetails(){}
+
+    }
+
+    @Data
+    public static class UserOpinion {
+        //工单ID
+        @ApiModelProperty("工单ID")
+        private String userOpinionId;
+
+        //标题
+        @ApiModelProperty("标题")
+        private String title;
+
+        //当前环节
+        @ApiModelProperty("当前环节")
+        private Integer currentLink;
+
+        //最新次数
+        @ApiModelProperty("最新次数")
+        private Integer newNumber;
+
+        //当前环节ID
+        @ApiModelProperty("当前环节ID")
+        private String currentLinkId;
+
+        //是否有操作权限
+        @ApiModelProperty("是否有操作权限")
+        private boolean operation;
+
+        public UserOpinion(String userOpinionId, String title, Integer currentLink, Integer newNumber, String currentLinkId, boolean operation){
+            this.userOpinionId = userOpinionId;
+            this.title = title;
+            this.currentLink = currentLink;
+            this.newNumber = newNumber;
+            this.currentLinkId = currentLinkId;
+            this.operation = operation;
+        }
+
+        public UserOpinion(){}
+    }
+
+}

+ 30 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ProjectUserAmountVO.java

@@ -0,0 +1,30 @@
+package org.springblade.manager.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ProjectUserAmountVO {
+    @ApiModelProperty("项目名称")
+    private String projectName;
+
+    @ApiModelProperty("施工方数量")
+    private Integer contractor;
+
+    @ApiModelProperty("监理方数量")
+    private Integer supervision;
+
+    @ApiModelProperty("业主方数量")
+    private Integer owner;
+
+    public ProjectUserAmountVO(String projectName, Integer contractor, Integer supervision, Integer owner) {
+        this.projectName = projectName;
+        this.contractor = contractor;
+        this.supervision = supervision;
+        this.owner = owner;
+    }
+
+    public ProjectUserAmountVO() {
+    }
+
+}

+ 42 - 1
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/OpinionUserClientImpl.java

@@ -1,10 +1,14 @@
 package org.springblade.business.feignClient;
 package org.springblade.business.feignClient;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springblade.business.entity.AssessmentUser;
 import org.springblade.business.entity.AssessmentUser;
+import org.springblade.business.entity.UserOpinion;
+import org.springblade.business.entity.UserOpinionFile;
 import org.springblade.business.feign.OpinionUserClient;
 import org.springblade.business.feign.OpinionUserClient;
 import org.springblade.business.service.IAssessmentUserService;
 import org.springblade.business.service.IAssessmentUserService;
+import org.springblade.business.service.IUserOpinionFileService;
 import org.springblade.business.service.IUserOpinionFlowService;
 import org.springblade.business.service.IUserOpinionFlowService;
 import org.springblade.business.service.IUserOpinionService;
 import org.springblade.business.service.IUserOpinionService;
 import org.springblade.business.vo.AssessmentUserVOS;
 import org.springblade.business.vo.AssessmentUserVOS;
@@ -13,7 +17,9 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 @RestController
 @RestController
 @AllArgsConstructor
 @AllArgsConstructor
@@ -25,12 +31,47 @@ public class OpinionUserClientImpl implements OpinionUserClient {
 
 
     private final IUserOpinionService userOpinionService;
     private final IUserOpinionService userOpinionService;
 
 
+    private final IUserOpinionFileService userOpinionFileService;
+
+    @Override
+    public BusinessUserOpinionVO queryOpinionDetailsById(String userOpinionId) {
+        UserOpinion userOpinion = this.userOpinionService.getById(userOpinionId);
+        //返回的结果
+        BusinessUserOpinionVO reVO = new BusinessUserOpinionVO();
+        if(userOpinion != null){
+            reVO.setUserOpinionId(userOpinion.getId());
+            reVO.setProjectName(userOpinion.getProjectId().toString());
+            reVO.setContractName(userOpinion.getContractId().toString());
+            reVO.setOpinionContent(userOpinion.getOpinionContent());
+            reVO.setSubmitUserName(userOpinion.getCreateUserName());
+            reVO.setSubmitPhone(userOpinion.getCreateUser().toString());
+            reVO.setCreateTime(userOpinion.getCreateTime());
+
+            //查询文件
+            List<UserOpinionFile> files = this.userOpinionFileService.selectUserOpinionFileByUserOpinionKey(userOpinion.getId());
+            if(files != null && files.size() > 0){
+                reVO.setImageUrl(files.stream().map(UserOpinionFile::getFileUrl).distinct().collect(Collectors.toList()));
+            }
+        }
+
+        return reVO;
+    }
+
+    @Override
+    public List<BusinessUserOpinionVO> queryBusinessUserOpinionListAll(Integer current, Integer size) {
+        Query query = new Query();
+        query.setCurrent(current);
+        query.setSize(size);
+        return this.userOpinionService.queryBusinessUserOpinionListAll(query).getRecords();
+    }
+
     @Override
     @Override
     public List<BusinessUserOpinionVO> queryBusinessUserOpinionList(Integer current, Integer size) {
     public List<BusinessUserOpinionVO> queryBusinessUserOpinionList(Integer current, Integer size) {
         Query query = new Query();
         Query query = new Query();
         query.setCurrent(current);
         query.setCurrent(current);
         query.setSize(size);
         query.setSize(size);
-        return this.userOpinionService.queryBusinessUserOpinionList(String.valueOf(AuthUtil.getUserId()), query).getRecords();
+        IPage<BusinessUserOpinionVO> page = this.userOpinionService.queryBusinessUserOpinionList(String.valueOf(AuthUtil.getUserId()), query);
+        return page != null ? page.getRecords() : new ArrayList<>();
     }
     }
 
 
     @Override
     @Override

+ 4 - 2
blade-service/blade-business/src/main/java/org/springblade/business/mapper/UserOpinionMapper.xml

@@ -34,6 +34,7 @@
         <result column="number" property="number"/>
         <result column="number" property="number"/>
         <result column="newNumber" property="newNumber"/>
         <result column="newNumber" property="newNumber"/>
         <result column="evaluation" property="evaluation"/>
         <result column="evaluation" property="evaluation"/>
+        <result column="manage_user_name" property="managerUserName"/>
     </resultMap>
     </resultMap>
 
 
     <select id="queryManageUserOpinionList" resultMap="businessUserOpinionMap">
     <select id="queryManageUserOpinionList" resultMap="businessUserOpinionMap">
@@ -53,7 +54,8 @@
                 when 2 then 'true' else 'false' end as isCurrent,
                 when 2 then 'true' else 'false' end as isCurrent,
                 uof.number as number,
                 uof.number as number,
                 uo.number as newNumber,
                 uo.number as newNumber,
-                uof.evaluation as evaluation
+                uof.evaluation as evaluation,
+                uof.manage_user_name
             from
             from
                 u_user_opinion as uo
                 u_user_opinion as uo
             left join m_project_info as pi on uo.project_id = pi.id
             left join m_project_info as pi on uo.project_id = pi.id
@@ -63,7 +65,7 @@
                     uof.*
                     uof.*
                 from
                 from
                 (
                 (
-                    select user_opinion_id,is_current,manage_time,number,sort,evaluation from u_user_opinion_flow where is_deleted = 0
+                    select user_opinion_id,is_current,manage_time,number,sort,evaluation,manage_user_name from u_user_opinion_flow where is_deleted = 0
                     <if test="currentUser != null and currentUser != ''">
                     <if test="currentUser != null and currentUser != ''">
                         and manage_user = #{currentUser}
                         and manage_user = #{currentUser}
                     </if>
                     </if>

+ 111 - 11
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ManagerHomePageController.java

@@ -1,20 +1,26 @@
 package org.springblade.manager.controller;
 package org.springblade.manager.controller;
 
 
+import cn.hutool.core.date.DateUtil;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 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.feign.OpinionUserClient;
 import org.springblade.business.feign.OpinionUserClient;
 import org.springblade.business.vo.BusinessUserOpinionVO;
 import org.springblade.business.vo.BusinessUserOpinionVO;
-import org.springblade.business.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;
+import org.springblade.manager.entity.ContractInfo;
+import org.springblade.manager.entity.ProjectInfo;
+import org.springblade.manager.service.IContractInfoService;
+import org.springblade.manager.service.IProjectInfoService;
+import org.springblade.manager.vo.ProjectUserAmountVO;
+import org.springblade.system.user.entity.User;
+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.Iterator;
 import java.util.List;
 import java.util.List;
 
 
 @RestController
 @RestController
@@ -25,24 +31,118 @@ public class ManagerHomePageController extends BladeController {
 
 
     private final OpinionUserClient opinionUserClient;
     private final OpinionUserClient opinionUserClient;
 
 
+    private final IUserClient userClient;
+
+    private final IProjectInfoService projectInfoService;
+
+    private final IContractInfoService contractInfoService;
+
+    /**
+     * 项目人员统计
+     */
+    @PostMapping("/queryProjectUserAmount")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "项目人员统计")
+    public R<ManagerHomePageVO> 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]);
+
+        return R.data(vo);
+    }
+
+    /**
+     * 查看详情
+     * @param userOpinionId 工单ID
+     */
+    @PostMapping("/queryOpinionDetails")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "查看详情")
+    public R<ManagerHomePageVO.OpinionDetails> queryOpinionDetails(@RequestParam String userOpinionId){
+        //查询数据
+        BusinessUserOpinionVO vo = this.opinionUserClient.queryOpinionDetailsById(userOpinionId);
+        //处理参数
+        //查询项目和合同段名称
+        ProjectInfo projectInfo = this.projectInfoService.getById(vo.getProjectName());
+        ContractInfo contractInfo = this.contractInfoService.getById(vo.getContractName());
+        //查询用户信息
+        User user = this.userClient.userInfoById(Long.parseLong(vo.getSubmitPhone())).getData();
+
+        ManagerHomePageVO reVO = new ManagerHomePageVO();
+        return R.data(reVO.getOpinionDetails(projectInfo.getProjectName(), contractInfo.getContractName(), vo.getOpinionContent(), vo.getSubmitUserName(), user.getId().toString(), user.getPhone(), DateUtil.format(vo.getCreateTime(), "yyyy-MM-dd HH:mm:ss"), vo.getImageUrl()));
+    }
+
     /**
     /**
-     * 获取当前用户的工单待办
+     * 获取当前用户的待办工单
      * @param current 当前页
      * @param current 当前页
      * @param size 当前页条数
      * @param size 当前页条数
      * @return 结果
      * @return 结果
      */
      */
     @PostMapping("/queryBusinessUserOpinion")
     @PostMapping("/queryBusinessUserOpinion")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "主页-获取当前用户的待办工单")
+    public R<ManagerHomePageVO> queryBusinessUserOpinion(@RequestParam Integer current, @RequestParam Integer size){
+        ManagerHomePageVO resultVO = new ManagerHomePageVO();
+        try{
+            //获取当前用户的工单
+            List<BusinessUserOpinionVO> result = this.opinionUserClient.queryBusinessUserOpinionList(current, size);
+            //删除掉已经办结的
+            result.removeIf(BusinessUserOpinionVO::getIsCurrent);
+            //拼接数据
+            result.forEach(vo -> {
+                String title = "待办工单任务:" + vo.getManageTime() + "来自" + "【" + vo.getProjectName() + "-" + vo.getContractName() + "】" +
+                        "的【" + "资料员" + vo.getSubmitUserName() + "】" + "向您反馈" + "\"" + vo.getProblemType() + "\"";
+
+                resultVO.setUserOpinionList(vo.getUserOpinionId().toString(), title, vo.getCurrentLink(), vo.getNewNumber(), vo.getCurrentLinkId().toString(), vo.getOperation());
+            });
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
+        return R.data(resultVO);
+    }
+
+    /**
+     * 获取所有待办工单
+     * @param current 当前页
+     * @param size 当前页条数
+     * @return 结果
+     */
+    @PostMapping("/queryBusinessUserOpinionAll")
     @ApiOperationSupport(order = 1)
     @ApiOperationSupport(order = 1)
-    @ApiOperation(value = "")
-    public R<List<ManagerHomePageVO>> queryBusinessUserOpinion(@RequestParam Integer current, @RequestParam Integer size){
-        //获取当前用户的工单
-        List<BusinessUserOpinionVO> result = this.opinionUserClient.queryBusinessUserOpinionList(current, size);
-        //删除掉已经办结的
-        result.removeIf(BusinessUserOpinionVO::getIsCurrent);
+    @ApiOperation(value = "主页-获取所有工单待办")
+    public R<ManagerHomePageVO> queryBusinessUserOpinionAll(@RequestParam Integer current, @RequestParam Integer size){
+        ManagerHomePageVO resultVO = new ManagerHomePageVO();
+        try{
+            //获取所有待办工单
+            List<BusinessUserOpinionVO> result = this.opinionUserClient.queryBusinessUserOpinionList(current, size);
+            //删除掉已经办结的
+            result.removeIf(BusinessUserOpinionVO::getIsCurrent);
+            //拼接数据
+            result.forEach(vo -> {
+                String title;
+                if(vo.getOperation()){
+                    title = "待办工单任务:" + vo.getManageTime() + "来自" + "【" + vo.getProjectName() + "-" + vo.getContractName() + "】" +
+                            "的【" + "资料员" + vo.getSubmitUserName() + "】" + "向您反馈" + "\"" + vo.getProblemType() + "\"";
+                } else {
+                    title = "待办工单任务:" + vo.getManageTime() + "来自" + "【" + vo.getProjectName() + "-" + vo.getContractName() + "】" +
+                            "的【" + "资料员" + vo.getSubmitUserName() + "】" + "向" + vo.getManagerUserName() + "反馈" + "\"" + vo.getProblemType() + "\"";
+                }
 
 
+                resultVO.setUserOpinionList(vo.getUserOpinionId().toString(), title, vo.getCurrentLink(), vo.getNewNumber(), vo.getCurrentLinkId().toString(), vo.getOperation());
+            });
 
 
+        }catch (Exception e){
+            e.printStackTrace();
+        }
 
 
-        return null;
+        return R.data(resultVO);
     }
     }
 
 
 }
 }

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectInfoMapper.java

@@ -21,6 +21,7 @@ import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.vo.ProjectInfoVO;
 import org.springblade.manager.vo.ProjectInfoVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.manager.vo.ProjectUserAmountVO;
 import org.springblade.manager.vo.SingPfxManagementVO;
 import org.springblade.manager.vo.SingPfxManagementVO;
 
 
 import java.util.List;
 import java.util.List;
@@ -33,6 +34,8 @@ import java.util.List;
  */
  */
 public interface ProjectInfoMapper extends BaseMapper<ProjectInfo> {
 public interface ProjectInfoMapper extends BaseMapper<ProjectInfo> {
 
 
+	List<ProjectUserAmountVO> queryProjectUserAmount();
+
 	List<SingPfxManagementVO> singPfxManagementPage(@Param("current") Long current, @Param("size") Integer size, @Param("vo") SingPfxManagementVO vo);
 	List<SingPfxManagementVO> singPfxManagementPage(@Param("current") Long current, @Param("size") Integer size, @Param("vo") SingPfxManagementVO vo);
 
 
 	List<ProjectInfo> selectProjectList(@Param("projectIds") List<String> projectIds);
 	List<ProjectInfo> selectProjectList(@Param("projectIds") List<String> projectIds);

+ 17 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectInfoMapper.xml

@@ -41,6 +41,23 @@
         <result column="contractId" property="contractId"/>
         <result column="contractId" property="contractId"/>
     </resultMap>
     </resultMap>
 
 
+    <resultMap id="projectUserAmount" type="org.springblade.manager.vo.ProjectUserAmountVO">
+        <result column="project_name" property="projectName"/>
+        <result column="contractor" property="contractor"/>
+        <result column="supervision" property="supervision"/>
+        <result column="owner" property="owner"/>
+    </resultMap>
+
+    <select id="queryProjectUserAmount" resultMap="projectUserAmount">
+        select
+            mpi.project_name,
+            (select count(id) end from m_project_assignment_user where project_id = mpi.id and role_id in(select id from blade_role where id = '1537247986361782274' or parent_id = '1537247986361782274')) as contractor,
+            (select count(id) end from m_project_assignment_user where project_id = mpi.id and role_id in(select id from blade_role where id = '1537246384519335938' or parent_id = '1537246384519335938')) as supervision,
+            (select count(id) end from m_project_assignment_user where project_id = mpi.id and role_id in(select id from blade_role where id = '1537246243393589249' or parent_id = '1537246243393589249')) as owner
+        from
+            m_project_info as mpi
+    </select>
+
     <select id="singPfxManagementPage" resultMap="singPfxManagementResultMap">
     <select id="singPfxManagementPage" resultMap="singPfxManagementResultMap">
         select
         select
             pi.id,
             pi.id,

+ 3 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IProjectInfoService.java

@@ -16,13 +16,10 @@
  */
  */
 package org.springblade.manager.service;
 package org.springblade.manager.service;
 
 
+import org.springblade.manager.vo.*;
 import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.entity.ProjectInfo;
-import org.springblade.manager.vo.ContractlnfoCountVO;
-import org.springblade.manager.vo.ProjectInfoVO;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.manager.vo.ProjectInfoVO2;
-import org.springblade.manager.vo.SingPfxManagementVO;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -34,6 +31,8 @@ import java.util.List;
  */
  */
 public interface IProjectInfoService extends BaseService<ProjectInfo> {
 public interface IProjectInfoService extends BaseService<ProjectInfo> {
 
 
+	List<ProjectUserAmountVO> queryProjectUserAmount();
+
 	List<SingPfxManagementVO> singPfxManagementPage(SingPfxManagementVO vo);
 	List<SingPfxManagementVO> singPfxManagementPage(SingPfxManagementVO vo);
 
 
 	List<ProjectInfo> selectProjectList(List<String> projectIds);
 	List<ProjectInfo> selectProjectList(List<String> projectIds);

+ 5 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ProjectInfoServiceImpl.java

@@ -16,16 +16,13 @@
  */
  */
 package org.springblade.manager.service.impl;
 package org.springblade.manager.service.impl;
 
 
+import org.springblade.manager.vo.*;
 import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.entity.WbsInfo;
 import org.springblade.manager.entity.WbsInfo;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.mapper.*;
 import org.springblade.manager.mapper.*;
-import org.springblade.manager.vo.ContractlnfoCountVO;
-import org.springblade.manager.vo.ProjectInfoVO;
 import org.springblade.manager.service.IProjectInfoService;
 import org.springblade.manager.service.IProjectInfoService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.manager.vo.ProjectInfoVO2;
-import org.springblade.manager.vo.SingPfxManagementVO;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
 
@@ -51,6 +48,10 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
     @Resource
     @Resource
     private SignPfxFileMapper signPfxFileMapper;
     private SignPfxFileMapper signPfxFileMapper;
 
 
+    public List<ProjectUserAmountVO> queryProjectUserAmount(){
+        return this.baseMapper.queryProjectUserAmount();
+    }
+
     @Override
     @Override
     public List<SingPfxManagementVO> singPfxManagementPage(SingPfxManagementVO vo) {
     public List<SingPfxManagementVO> singPfxManagementPage(SingPfxManagementVO vo) {
         long current = (vo.getCurrent() - 1L) * vo.getSize();
         long current = (vo.getCurrent() - 1L) * vo.getSize();