Forráskód Böngészése

工时成本统计部门导出 修改 主项目接口条件查询

yurk 2 éve
szülő
commit
bc9f98e5b2

+ 4 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -63,8 +63,8 @@ public class ProjectController {
     public HttpRespMsg getProjectPage(@RequestParam Integer pageIndex, @RequestParam Integer pageSize, String keyword,
                                       @RequestParam(required = false, defaultValue = "1") Integer searchField,
                                       Integer projectId, //可以直接传projectId来进行匹配
-                                      Integer status, Integer category) {
-        return projectService.getProjectPage(pageIndex, pageSize, keyword,searchField, status, category, projectId, request);
+                                      Integer status, Integer category,Integer projectMainId) {
+        return projectService.getProjectPage(pageIndex, pageSize, keyword,searchField, status, category, projectId,projectMainId, request);
     }
 
     @RequestMapping("/saveBatchAccoDegrees")
@@ -498,8 +498,8 @@ public class ProjectController {
         return projectService.exportReportTimelinessRate(request,startDate,endDate);
     }
     @RequestMapping("/getWaitingReviewList")
-    public HttpRespMsg getWaitingReviewList(HttpServletRequest request,Integer stateKey,String userId,Integer pageIndex,Integer pageSize,String startDate,String endDate){
-        return projectService.getWaitingReviewList(request,stateKey,userId,pageIndex,pageSize,startDate,endDate);
+    public HttpRespMsg getWaitingReviewList(HttpServletRequest request,Integer stateKey,String userId,Integer pageIndex,Integer pageSize,String startDate,String endDate,Integer departmentId){
+        return projectService.getWaitingReviewList(request,stateKey,userId,pageIndex,pageSize,startDate,endDate,departmentId);
     }
     @RequestMapping("/exportWaitingReviewList")
     public HttpRespMsg exportWaitingReviewList(HttpServletRequest request,Integer stateKey,String userId,String startDate,String endDate){

+ 5 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -78,7 +78,7 @@ public interface ProjectMapper extends BaseMapper<Project> {
     //获取导出的项目数据
     List<HashMap<String, Object>> getExportData(Integer companyId, String userId);
 
-    List<Map<String, Object>> getOvertimeDetail(String userId, Integer companyId, String startDate, String endDate, Integer projectId,Integer departmentId);
+    List<Map<String, Object>> getOvertimeDetail(String userId, Integer companyId, String startDate, String endDate, Integer projectId,Integer departmentId,List<Integer> deptIds);
 
     //获取项目的成本预警和实际工时表
     List<HashMap> getProjectCostAlarm(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId);
@@ -93,11 +93,11 @@ public interface ProjectMapper extends BaseMapper<Project> {
 
     List<Map<String, Object>> getProjectCostByCategory(Integer companyId, String startDate, String endDate, Integer curProjectCategoryId, String userId);
 
-    List<Map<String, Object>> getUserWorkingTimeList(String userId, Integer companyId, String startDate, String endDate, Integer projectId, Integer start, Integer size,Integer departmentId);
+    List<Map<String, Object>> getUserWorkingTimeList(String userId, Integer companyId, String startDate, String endDate, Integer projectId, Integer start, Integer size,Integer departmentId,List<Integer> deptIds);
 
-    long findCountWithUser(String userId, Integer companyId, String startDate, String endDate, Integer projectId, Integer start,Integer size);
+    long findCountWithUser(String userId, Integer companyId, String startDate, String endDate, Integer projectId, Integer start,Integer size,Integer departmentId,List<Integer> deptIds);
 
-    List<Map<String, Object>> getWaitingReviewList(Integer companyId, String userId,Integer start,Integer size,String startDate,String endDate);
+    List<Map<String, Object>> getWaitingReviewList(Integer companyId, String userId,Integer start,Integer size,String startDate,String endDate,Integer departmentId);
 
-    long findCount(Integer companyId, String userId, Integer start, Integer size,String startDate,String endDate);
+    long findCount(Integer companyId, String userId, Integer start, Integer size,String startDate,String endDate,Integer departmentId);
 }

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -20,7 +20,7 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg getProjectList(Integer forReport, HttpServletRequest request);
 
     HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, String keyword, Integer searchField,
-                               Integer status, Integer category, Integer projectId, HttpServletRequest request);
+                               Integer status, Integer category, Integer projectId,Integer projectMainId, HttpServletRequest request);
 
     HttpRespMsg editProject(Integer id, String name, String code, String[] userIds, String inchargerId,
                             Integer isPublic,
@@ -141,7 +141,7 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg exportReportTimelinessRate(HttpServletRequest request, String startDate, String endDate);
 
-    HttpRespMsg getWaitingReviewList(HttpServletRequest request, Integer stateKey, String userId,Integer pageIndex,Integer pageSize,String startDate,String endDate);
+    HttpRespMsg getWaitingReviewList(HttpServletRequest request, Integer stateKey, String userId,Integer pageIndex,Integer pageSize,String startDate,String endDate,Integer departmentId);
 
     HttpRespMsg exportWaitingReviewList(HttpServletRequest request, Integer stateKey, String userId,String startDate,String endDate);
 

+ 31 - 81
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -760,95 +760,45 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
     public HttpRespMsg exportDeptStatistic(String startDate, String endDate, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
-            User targetUser = userMapper.selectById(request.getHeader("Token"));
-            Integer companyId =targetUser.getCompanyId();
-            //当前用户所属部门 或者 管理部门
-            List<Integer> deptIds=null;
-            List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", targetUser.getId()).eq("company_id", companyId));
-            List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看全公司");
-            List<SysRichFunction> functionDpartList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看负责部门");
-            List<SysRichFunction> functionTimeList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看工时统计");
-            List<SysRichFunction> functionCostList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看成本统计");
-            //判断查看权限
-            if(functionAllList.size()==0){
-                if(functionDpartList.size()>0){
-                    if(functionTimeList.size()>0||functionCostList.size()>0){
-                        deptIds = departmentList.stream().map(dp -> dp.getDepartmentId()).distinct().collect(Collectors.toList());
-                        deptIds.add(targetUser.getDepartmentId());
-                    }
-                }else {
-                    deptIds=new ArrayList<>();
-                    deptIds.add(-1);
-                }
+            HttpRespMsg msg = getDepartmentStatistics(null, startDate, endDate, request);
+            Map<String,Object> mapData = (Map<String, Object>) msg.data;
+            List<DepartmentMasterVO> costList = (List<DepartmentMasterVO>) mapData.get("costList");
+            BigDecimal totalCostMoney= (BigDecimal) mapData.get("totalCostMoney");
+            List<String> titleList=new ArrayList<>();
+            titleList.add("部门");
+            if(!costList.stream().anyMatch(ct->ct.getCostTime()==null)){
+                titleList.add("工时");
             }
-            System.out.println("获取到管理的部门ids length=="+deptIds);
-            List<Map<String, Object>> list = departmentMapper
-                    .getCostByUser(deptIds, startDate, endDate, companyId, null);
-            Map<String, List<Map<String, Object>>> tempMap = new HashMap<>();
-            for (Map<String, Object> map : list) {
-                if (tempMap.containsKey(map.get("user"))) {
-                    //这个名字已经装进数组中了
-                    List<Map<String, Object>> tempList = tempMap.get(map.get("user"));
-                    Map<String, Object> dataMap = new HashMap<>();
-                    dataMap.put("project", map.get("project"));
-                    Double time = (Double) map.getOrDefault("time", 0);
-                    dataMap.put("time", time);
-                    tempList.add(dataMap);
-                } else {
-                    //这个名字尚未装进数组中
-                    List<Map<String, Object>> tempList = new ArrayList<>();
-                    if (map.containsKey("project")) {
-                        Map<String, Object> dataMap = new HashMap<>();
-                        dataMap.put("project", map.get("project"));
-                        Double time = (Double) map.getOrDefault("time", 0);
-                        dataMap.put("time", time);
-                        tempList.add(dataMap);
-                    }
-                    tempMap.put((String) map.get("user"), tempList);
-                }
+            if(!costList.stream().anyMatch(ct->ct.getCostMoney()==null)){
+                titleList.add("成本");
             }
-            DecimalFormat df = new DecimalFormat("#.00");
-            List<List<String>> dataList = new ArrayList<List<String>>();
-            String[] titles = {"人员", "项目", "工时(h)"};
-            List<String> titleList = Arrays.asList(titles.clone());
+            List<List<String>> dataList=new ArrayList<>();
             dataList.add(titleList);
-            double totalCostTime = 0;
-            for (String key : tempMap.keySet()) {
-                Map<String, Object> map = new HashMap<>();
-                map.put("name", key);
-                map.put("project", tempMap.get(key));
-                List<String> nameList = new ArrayList<String>();
-                nameList.add(key);//姓名
-                nameList.add("");//空着
-                List<Map<String, Object>> tempList = tempMap.get(key);
-                //统计个人的时间和成本
-                double tTime = 0;
-                for (Map<String, Object> membData : tempList) {
-                    tTime += (double)membData.get("time");
+            BigDecimal bigDecimal=new BigDecimal(0);
+            for (DepartmentMasterVO departmentMasterVO : costList) {
+                List<String> item=new ArrayList<>();
+                item.add(departmentMasterVO.getDepartmentName());
+                if(!costList.stream().anyMatch(ct->ct.getCostTime()==null)){
+                    item.add(String.valueOf(departmentMasterVO.getCostTime()));
+                    bigDecimal=bigDecimal.add(BigDecimal.valueOf(departmentMasterVO.getCostTime()));
                 }
-                totalCostTime += tTime;
-                nameList.add(df.format(tTime));
-                dataList.add(nameList);
-                //装载该人员下的项目的工时数据
-                for (Map<String, Object> membData : tempList) {
-                    tTime += (double)membData.get("time");
-                    List<String> projectDataList = new ArrayList<>();
-                    projectDataList.add("");
-                    projectDataList.add(membData.get("project")+"");
-                    projectDataList.add(df.format((double)membData.get("time"))+"");
-                    dataList.add(projectDataList);
+                if(!costList.stream().anyMatch(ct->ct.getCostMoney()==null)){
+                    item.add(String.valueOf(departmentMasterVO.getCostMoney()));
                 }
+                dataList.add(item);
             }
-            //合计
-            List<String> sumRow = new ArrayList<String>();
-            sumRow.add("合计");
-            sumRow.add("");
-            sumRow.add(""+df.format(totalCostTime));
-            dataList.add(sumRow);
+            List<String> rowData=new ArrayList<>();
+            rowData.add("合计");
+            if(!costList.stream().anyMatch(ct->ct.getCostTime()==null)){
+                rowData.add(String.valueOf(bigDecimal.doubleValue()));
+            }
+            if(!costList.stream().anyMatch(ct->ct.getCostMoney()==null)){
+                rowData.add(totalCostMoney.toString());
+            }
+            dataList.add(rowData);
             //生成excel文件导出
-            String fileName = "人员工时统计_"+System.currentTimeMillis();
+            String fileName = "部门工时统计_"+System.currentTimeMillis();
             String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName , dataList, path);
-
             httpRespMsg.data = resp;
         } catch (NullPointerException e) {
             httpRespMsg.setError("验证失败");

+ 106 - 17
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -165,7 +165,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     //分页获取项目列表
     @Override
     public HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, String keyword, Integer searchField,
-                                      Integer status, Integer category, Integer projectId, HttpServletRequest request) {
+                                      Integer status, Integer category, Integer projectId,Integer projectMainId, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
             //通过公司id获取该公司所有的项目列表
@@ -203,6 +203,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             if (category != null) {
                 queryWrapper.eq("category", category);
             }
+            if (projectMainId != null) {
+                queryWrapper.eq("project_main_id", projectMainId);
+            }
             if (projectId != null) {
                 queryWrapper.eq("id", projectId);
             }
@@ -1984,7 +1987,21 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
-        List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,departmentId);
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全公司加班情况");
+        List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责部门加班情况");
+        List<Integer> deptIds=null;
+        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()).eq("company_id",user.getCompanyId()));
+        //判断查看权限
+        if(functionAllList.size()==0){
+            if(functionDeptList.size()>0){
+                deptIds = departmentList.stream().map(dp -> dp.getDepartmentId()).distinct().collect(Collectors.toList());
+                deptIds.add(user.getDepartmentId());
+            }else {
+                deptIds=new ArrayList<>();
+                deptIds.add(-1);
+            }
+        }
+        List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,departmentId,deptIds);
         boolean hasViewSalary = sysFunctionService.hasPriviledge(user.getRoleId(), "查看加班成本");
         if (!hasViewSalary) {
             //去掉权限
@@ -2005,7 +2022,21 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             String token = request.getHeader("TOKEN");
             User user = userMapper.selectById(token);
             TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
-            List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,null);
+            List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全公司加班情况");
+            List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责部门加班情况");
+            List<Integer> deptIds=null;
+            List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()).eq("company_id",user.getCompanyId()));
+            //判断查看权限
+            if(functionAllList.size()==0){
+                if(functionDeptList.size()>0){
+                    deptIds = departmentList.stream().map(dp -> dp.getDepartmentId()).distinct().collect(Collectors.toList());
+                    deptIds.add(user.getDepartmentId());
+                }else {
+                    deptIds=new ArrayList<>();
+                    deptIds.add(-1);
+                }
+            }
+            List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,null,deptIds);
             boolean hasViewSalary = sysFunctionService.hasPriviledge(user.getRoleId(), "查看加班成本");
             BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
             List<String> headList = new ArrayList<String>();
@@ -2593,7 +2624,21 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
-        List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,null);
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全公司加班情况");
+        List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责部门加班情况");
+        List<Integer> deptIds=null;
+        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()).eq("company_id",user.getCompanyId()));
+        //判断查看权限
+        if(functionAllList.size()==0){
+            if(functionDeptList.size()>0){
+                deptIds = departmentList.stream().map(dp -> dp.getDepartmentId()).distinct().collect(Collectors.toList());
+                deptIds.add(user.getDepartmentId());
+            }else {
+                deptIds=new ArrayList<>();
+                deptIds.add(-1);
+            }
+        }
+        List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,null,deptIds);
         boolean hasViewSalary = sysFunctionService.hasPriviledge(user.getRoleId(), "查看加班成本");
         if (!hasViewSalary) {
             //去掉权限
@@ -3230,8 +3275,22 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
-        List<Map<String, Object>> list = projectMapper.getUserWorkingTimeList(userId, user.getCompanyId(), startDate, endDate, projectId,start,size,departmentId);
-        long total=projectMapper.findCountWithUser(userId, user.getCompanyId(), startDate, endDate, projectId,null,null);
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全公司工时分配");
+        List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责部门工时分配");
+        List<Integer> deptIds=null;
+        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()).eq("company_id",user.getCompanyId()));
+        //判断查看权限
+        if(functionAllList.size()==0){
+            if(functionDeptList.size()>0){
+                    deptIds = departmentList.stream().map(dp -> dp.getDepartmentId()).distinct().collect(Collectors.toList());
+                    deptIds.add(user.getDepartmentId());
+            }else {
+                deptIds=new ArrayList<>();
+                deptIds.add(-1);
+            }
+        }
+        List<Map<String, Object>> list = projectMapper.getUserWorkingTimeList(userId, user.getCompanyId(), startDate, endDate, projectId,start,size,departmentId,deptIds);
+        long total=projectMapper.findCountWithUser(userId, user.getCompanyId(), startDate, endDate, projectId,null,null,departmentId,deptIds);
         list.forEach(li->{
             double isPublic = (double) li.get("isPublic");
             double workingTime = (double) li.get("workingTime");
@@ -3252,7 +3311,21 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
-        List<Map<String, Object>> list = projectMapper.getUserWorkingTimeList(userId, user.getCompanyId(), startDate, endDate, projectId,null,null,null);
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全公司工时分配");
+        List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责部门工时分配");
+        List<Integer> deptIds=null;
+        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()).eq("company_id",user.getCompanyId()));
+        //判断查看权限
+        if(functionAllList.size()==0){
+            if(functionDeptList.size()>0){
+                deptIds = departmentList.stream().map(dp -> dp.getDepartmentId()).distinct().collect(Collectors.toList());
+                deptIds.add(user.getDepartmentId());
+            }else {
+                deptIds=new ArrayList<>();
+                deptIds.add(-1);
+            }
+        }
+        List<Map<String, Object>> list = projectMapper.getUserWorkingTimeList(userId, user.getCompanyId(), startDate, endDate, projectId,null,null,null,deptIds);
         String[] string={"人员","普通项目工时","公共项目工时","总工时","公共项目工时占比"};
         List<List<String>> dataList=new ArrayList<>();
         dataList.add(Arrays.asList(string));
@@ -3291,21 +3364,37 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 days-=1;
             }
         }
-        Integer companyId= userMapper.selectById(request.getHeader("token")).getCompanyId();
-        TimeType timeType = timeTypeMapper.selectById(companyId);
+        User targetUser= userMapper.selectById(request.getHeader("token"));
+        TimeType timeType = timeTypeMapper.selectById(targetUser.getCompanyId());
         Integer timeliness = timeType.getTimeliness();
-        List<Map<String,Object>> reportList=reportMapper.getUserReportTimelinessRate(companyId,startDate,endDate);
-        System.out.println(reportList);
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "全公司工时分配");
+        List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "负责部门工时分配");
+        List<Integer> deptIds=null;
+        List<Department> userDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", targetUser.getId()).eq("company_id",targetUser.getCompanyId()));
+        //判断查看权限
+        if(functionAllList.size()==0){
+            if(functionDeptList.size()>0){
+                deptIds = userDepartmentList.stream().map(dp -> dp.getDepartmentId()).distinct().collect(Collectors.toList());
+                deptIds.add(targetUser.getDepartmentId());
+            }else {
+                deptIds=new ArrayList<>();
+                deptIds.add(-1);
+            }
+        }
+        List<Map<String,Object>> reportList=reportMapper.getUserReportTimelinessRate(targetUser.getCompanyId(),startDate,endDate);
         QueryWrapper<User> queryWrapper=new QueryWrapper();
-        queryWrapper.eq("company_id",companyId);
+        queryWrapper.eq("company_id",targetUser.getCompanyId());
         if(departmentId!=null){
             queryWrapper.eq("department_id",departmentId);
         }
         if(userId!=null){
             queryWrapper.eq("id",userId);
         }
+        if(deptIds!=null){
+            queryWrapper.in("department_id",deptIds);
+        }
         queryWrapper.eq("is_active",1).orderByAsc("department_id");
-        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", targetUser.getCompanyId()));
         List<User> userList;
         long total=0;
         if(pageIndex!=null&&pageSize!=null){
@@ -3391,7 +3480,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     }
 
     @Override
-    public HttpRespMsg getWaitingReviewList(HttpServletRequest request, Integer stateKey, String userId,Integer pageIndex,Integer pageSize,String startDate,String endDate) {
+    public HttpRespMsg getWaitingReviewList(HttpServletRequest request, Integer stateKey, String userId,Integer pageIndex,Integer pageSize,String startDate,String endDate,Integer departmentId) {
         HttpRespMsg msg=new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
         Integer size;
@@ -3403,8 +3492,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             size=null;
             start=null;
         }
-        List<Map<String,Object>>  list=projectMapper.getWaitingReviewList(user.getCompanyId(),userId,start,size,startDate,endDate);
-        long total=projectMapper.findCount(user.getCompanyId(),userId,null,null,startDate,endDate);
+        List<Map<String,Object>>  list=projectMapper.getWaitingReviewList(user.getCompanyId(),userId,start,size,startDate,endDate,departmentId);
+        long total=projectMapper.findCount(user.getCompanyId(),userId,null,null,startDate,endDate,departmentId);
         HashMap map=new HashMap();
         map.put("total",total);
         map.put("result",list);
@@ -3414,7 +3503,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
     @Override
     public HttpRespMsg exportWaitingReviewList(HttpServletRequest request, Integer stateKey, String userId,String startDate,String endDate) {
-        HttpRespMsg msg = getWaitingReviewList(request, stateKey, userId, null, null,startDate,endDate);
+        HttpRespMsg msg = getWaitingReviewList(request, stateKey, userId, null, null,startDate,endDate,null);
         HashMap resultmap= (HashMap) msg.data;
         List<Map<String,Object>> list= (List<Map<String, Object>>) resultmap.get("result");
         List<List<String>> dataList=new ArrayList<>();

+ 34 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -558,6 +558,12 @@
         <if test="departmentId!=null">
             and report.dept_id=#{departmentId}
         </if>
+        <if test="deptIds!=null and deptIds.size()>0">
+            and report.dept_id in
+            <foreach collection="deptIds" open="(" item="item" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
         order by user.create_time asc, report.create_date desc
     </select>
 
@@ -582,6 +588,12 @@
         <if test="departmentId!=null">
             and report.dept_id=#{departmentId}
         </if>
+        <if test="deptIds!=null and deptIds.size()>0">
+            and report.dept_id in
+            <foreach collection="deptIds" open="(" item="item" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
         group by user.id
         order by user.create_time asc, report.create_date desc
         <if test="start!=null and size!=null">
@@ -591,9 +603,9 @@
     <select id="findCountWithUser" resultType="java.lang.Long">
         select count(*)
         from (SELECT  report.`creator_id` AS userId, user.`name` AS username,
-        SUM(if(project.is_public=0,report.working_time,null)) as unPublic,
-        SUM(if(project.is_public=1,report.working_time,null)) as isPublic,
-        SUM(report.`working_time`) AS workingTime
+        ifnull(SUM(if(project.is_public=0,report.working_time,null)),0) as unPublic,
+        ifnull(SUM(if(project.is_public=1,report.working_time,null)),0) as isPublic,
+        ifnull(SUM(report.`working_time`),0) AS workingTime
         FROM report LEFT JOIN user ON user.id = report.`creator_id`
         left join project on project.id = report.project_id
         WHERE
@@ -606,6 +618,15 @@
         <if test="projectId!=null">
             and project.id=#{projectId}
         </if>
+        <if test="departmentId!=null">
+            and report.dept_id=#{departmentId}
+        </if>
+        <if test="deptIds!=null and deptIds.size()>0">
+            and report.dept_id in
+            <foreach collection="deptIds" open="(" item="item" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
         group by user.id
         order by user.create_time asc, report.create_date desc
         <if test="start!=null and size!=null">
@@ -678,13 +699,17 @@
     </select>
 
     <select id="getWaitingReviewList" resultType="java.util.Map">
-        select us.name as userName,COUNT(rp.state=0 or null) as num
+        select us.name as userName,dp.department_name as departmentName,COUNT(rp.state=0 or null) as num
         from user us
         left join report rp on rp.audit_deptid=us.manage_dept_id  or rp.project_auditor_id=us.id
+        left join department dp on dp.department_id=rp.dept_id
         where us.company_id=#{companyId} and  (rp.audit_deptid !=0 or rp.project_id is not null) and rp.create_date between #{startDate} and #{endDate} and us.is_active=1
         <if test="userId!=null">
             and us.id=#{userId}
         </if>
+        <if test="departmentId!=null">
+            and rp.dept_id=#{departmentId}
+        </if>
         group by us.id
         <if test="start!=null and size!=null">
             limit #{start},#{size}
@@ -693,13 +718,17 @@
 
     <select id="findCount" resultType="java.lang.Long">
         select  count(1)
-        from (select us.name as userName,COUNT(rp.state=0 or null) as num
+        from (select us.name as userName,dp.department_name as departmentName,COUNT(rp.state=0 or null) as num
         from user us
         left join report rp on rp.audit_deptid=us.manage_dept_id  or rp.project_auditor_id=us.id
+        left join department dp on dp.department_id=rp.dept_id
         where us.company_id=#{companyId} and  (rp.audit_deptid !=0 or rp.project_id is not null) and rp.create_date between #{startDate} and #{endDate} and us.is_active=1
         <if test="userId!=null">
             and us.id=#{userId}
         </if>
+        <if test="departmentId!=null">
+            and rp.dept_id=#{departmentId}
+        </if>
         group by us.id
         <if test="start!=null and size!=null">
             limit #{start},#{size}