Преглед на файлове

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper

ggooalice преди 2 години
родител
ревизия
5ac13a2165

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -1092,8 +1092,8 @@ public class ReportController {
     }
 
     @RequestMapping("/batchDenyReport")
-    public HttpRespMsg batchDenyReport(@RequestParam String ids, Integer isDepartment, HttpServletRequest request) {
-        return reportService.batchDenyReport(ids, isDepartment, request);
+    public HttpRespMsg batchDenyReport(@RequestParam String ids, Integer isDepartment, String reason, HttpServletRequest request) {
+        return reportService.batchDenyReport(ids, isDepartment, reason, request);
     }
 
     @RequestMapping("/getUserDailyWorkTime")

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

@@ -73,7 +73,7 @@ public interface ProjectMapper extends BaseMapper<Project> {
 
 //    List<Map<String, Object>> getOvertimeList(String userId, Integer companyId, String startDate, String endDate, Integer projectId);
 
-    List<Map<String, Object>> getDegreeCost(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("projectId") Integer projectId, @Param("companyId") Integer companyId);
+    List<Map<String, Object>> getDegreeCost(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("projectId") Integer projectId, @Param("companyId") Integer companyId,List<Integer> departmentIds);
 
     //获取导出的项目数据
     List<HashMap<String, Object>> getExportData(Integer companyId, String userId);

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java

@@ -48,7 +48,7 @@ public interface ReportService extends IService<Report> {
     HttpRespMsg getMembList(String date, Integer manageDeptId, HttpServletRequest request);
 
     HttpRespMsg batchApproveReport(String ids, Integer isDepartment, HttpServletRequest request);
-    HttpRespMsg batchDenyReport(String ids, Integer isDepartment, HttpServletRequest request);
+    HttpRespMsg batchDenyReport(String ids, Integer isDepartment, String reason, HttpServletRequest request);
 
     HttpRespMsg cancelReport(String userId, String reportIds, HttpServletRequest request);
 

+ 8 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/CompanyDingdingServiceImpl.java

@@ -74,6 +74,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
 
     @Override
     public void sendFillReportAlertMsg(Integer companyId, Long agentId, String msg, String useridList) {
+        if (isDev) return;
         CompanyDingding dingding = getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
         if (isPrivateDeploy) {
             List<OapiMessageCorpconversationAsyncsendV2Request.Form> form=new ArrayList<>();
@@ -109,6 +110,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
 
     @Override
     public void sendRejectReportMsg(Integer companyId, String date, String projectNames, String reason, String auditorName, String useridList) {
+        if (isDev) return;
         CompanyDingding dingding = getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
         if (isPrivateDeploy) {
             List<OapiMessageCorpconversationAsyncsendV2Request.Form> form=new ArrayList<>();
@@ -156,6 +158,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
     }
     @Override
     public void sendLeaveApplyAlertMsg(Integer companyId, Long agentId, String msg, String useridList) {
+        if (isDev) return;
         CompanyDingding dingding = getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
         if (isPrivateDeploy) {
             List<OapiMessageCorpconversationAsyncsendV2Request.Form> form=new ArrayList<>();
@@ -193,6 +196,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
     }
     @Override
     public void sendReportWaitingApplyMsg(Integer companyId, Long agentId, Long auditNum, String useridList) {
+        if (isDev) return;
         CompanyDingding dingding = getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
         if (isPrivateDeploy) {
             List<OapiMessageCorpconversationAsyncsendV2Request.Form> form=new ArrayList<>();
@@ -226,6 +230,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
     }
     @Override
     public void sendBusinessTripSettingMsg(Integer companyId, Long agentId, String useridList) {
+        if (isDev) return;
         CompanyDingding dingding = getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
         if (isPrivateDeploy) {
             sendOAMsg(dingding,useridList,"关联出差提醒","您还有出差记录尚未关联到项目",null,null);
@@ -297,6 +302,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
 
     @Override
     public void sendFinishMileStoneMsg(CompanyDingding dingding, String useridList, String taskName, Integer projectId, String project, String finishDate) {
+        if (isDev) return;
         if (isPrivateDeploy) {
             List<OapiMessageCorpconversationAsyncsendV2Request.Form> form=new ArrayList<>();
             OapiMessageCorpconversationAsyncsendV2Request.Form item=new OapiMessageCorpconversationAsyncsendV2Request.Form();
@@ -341,6 +347,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
 
     @Override
     public void sendOAMsg(CompanyDingding dingding, String useridList,String titleText,String content,List<OapiMessageCorpconversationAsyncsendV2Request.Form> form,Integer projectId) {
+        if (isDev) return;
         DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
         OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
         request.setAgentId(dingding.getAgentId());
@@ -419,6 +426,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
 
     @Override
     public void sendInnerLinkMsg(CompanyDingding dingding, String useridList, String title, String alertMsg) {
+        if (isDev) return;
         DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
         OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
         request.setAgentId(dingding.getAgentId());

+ 4 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -334,6 +334,8 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             //判断查看权限
             if(functionAllList.size()==0){
                 deptIds=new ArrayList<>();
+                //是不是要加
+                deptIds.add(-1);
                 if(functionDpartList.size()>0){
                     if(functionTimeList.size()>0||functionCostList.size()>0){
                         List<Integer> collect = departmentList.stream().map(dp -> dp.getDepartmentId()).distinct().collect(Collectors.toList());
@@ -341,9 +343,6 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                         collect.addAll(otherCollect);
                         deptIds.addAll(collect);
                     }
-                }else {
-                    //是不是要加
-                    deptIds.add(-1);
                 }
             }
             QueryWrapper<Department> queryWrapper = new QueryWrapper<Department>()
@@ -426,6 +425,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             //判断查看权限
             if(functionAllList.size()==0){
                 deptIds=new ArrayList<>();
+                deptIds.add(-1);
                 if(functionDpartList.size()>0){
                     if(functionTimeList.size()>0||functionCostList.size()>0){
                         List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
@@ -436,8 +436,6 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                             deptIds.addAll(branchDepartment);
                         }
                     }
-                }else {
-                    deptIds.add(-1);
                 }
             }
             //首先校验有无权限
@@ -542,6 +540,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             //判断查看权限
             if(functionAllList.size()==0){
                 deptIds=new ArrayList<>();
+                deptIds.add(-1);
                 if(functionDpartList.size()>0){
                     if(functionTimeList.size()>0||functionCostList.size()>0){
                         List<Integer> collect = departmentList.stream().map(dp -> dp.getDepartmentId()).distinct().collect(Collectors.toList());
@@ -549,8 +548,6 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                         collect.addAll(otherCollect);
                         deptIds.addAll(collect);
                     }
-                }else {
-                    deptIds.add(-1);
                 }
             }
             List<String> allUserIds = null;

+ 44 - 40
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -770,8 +770,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             List<SysRichFunction> functionCostList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看成本统计");
             //判断查看权限
             if(functionAllList.size()==0){
+                deptIds=new ArrayList<>();
+                deptIds.add(-1);
                 if(functionDpartList.size()>0){
-                    deptIds=new ArrayList<>();
                     if(functionTimeList.size()>0||functionCostList.size()>0){
                         List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
                         List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
@@ -781,9 +782,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             deptIds.addAll(branchDepartment);
                         }
                     }
-                }else {
-                    deptIds=new ArrayList<>();
-                    deptIds.add(-1);
                 }
             }
             TimeType timeType = timeTypeMapper.selectById(companyId);
@@ -917,6 +915,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             //判断查看权限
             if(functionAllList.size()==0){
                 deptIds=new ArrayList<>();
+                deptIds.add(-1);
                 if(functionDpartList.size()>0){
                     if(functionTimeList.size()>0||functionCostList.size()>0){
                         List<Integer> collect = departmentList.stream().map(dp -> dp.getDepartmentId()).distinct().collect(Collectors.toList());
@@ -924,8 +923,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         collect.addAll(otherCollect);
                         deptIds.addAll(otherCollect);
                     }
-                }else {
-                    deptIds.add(-1);
                 }
             }
             List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userId,deptIds);
@@ -2285,6 +2282,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         if(functionAllList.size()==0){
             if(functionDeptList.size()>0){
                 deptIds=new ArrayList<>();
+                deptIds.add(-1);
                 List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
                 List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
                 collect.addAll(otherCollect);
@@ -2292,9 +2290,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
                     deptIds.addAll(branchDepartment);
                 }
-            }else {
-                deptIds=new ArrayList<>();
-                deptIds.add(-1);
             }
         }
         List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,departmentId,deptIds);
@@ -2328,6 +2323,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             if(functionAllList.size()==0){
                 if(functionDeptList.size()>0){
                     deptIds=new ArrayList<>();
+                    deptIds.add(-1);
                     List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
                     List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
                     collect.addAll(otherCollect);
@@ -2335,9 +2331,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
                         deptIds.addAll(branchDepartment);
                     }
-                }else {
-                    deptIds=new ArrayList<>();
-                    deptIds.add(-1);
                 }
             }
             List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,null,deptIds);
@@ -3016,7 +3009,32 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
-        msg.data = projectMapper.getDegreeCost(startDate, endDate, projectId, user.getCompanyId());
+        //当前用户管理部门
+        List<Integer> deptIds=null;
+        List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",user.getCompanyId()));
+        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()).eq("company_id", user.getCompanyId()));
+        List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司");
+        List<SysRichFunction> functionDpartList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看负责部门");
+        List<SysRichFunction> functionTimeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看工时统计");
+        List<SysRichFunction> functionCostList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看成本统计");
+        //判断查看权限
+        if(functionAllList.size()==0){
+            deptIds=new ArrayList<>();
+            deptIds.add(-1);
+            if(functionDpartList.size()>0){
+                if(functionTimeList.size()>0||functionCostList.size()>0){
+                    List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
+                    List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
+                    collect.addAll(otherCollect);
+                    for (Integer integer : collect) {
+                        List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
+                        deptIds.addAll(branchDepartment);
+                    }
+                }
+            }
+        }
+        msg.data = projectMapper.getDegreeCost(startDate, endDate, projectId, user.getCompanyId(),deptIds);
         return msg;
     }
 
@@ -3329,8 +3347,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
         //判断查看权限
         if(functionAllList.size()==0){
+            deptIds=new ArrayList<>();
+            deptIds.add(-1);
             if(functionDeptList.size()>0){
-                deptIds=new ArrayList<>();
                 List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
                 List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
                 collect.addAll(otherCollect);
@@ -3339,9 +3358,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     deptIds.addAll(branchDepartment);
                 }
 
-            }else {
-                deptIds=new ArrayList<>();
-                deptIds.add(-1);
             }
         }
         List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,null,deptIds);
@@ -3730,8 +3746,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             List<SysRichFunction> functionCostList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看成本统计");
             //判断查看权限
             if(functionAllList.size()==0){
+                deptIds=new ArrayList<>();
+                deptIds.add(-1);
                 if(functionDpartList.size()>0){
-                    deptIds=new ArrayList<>();
                     if(functionTimeList.size()>0||functionCostList.size()>0){
                         List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
                         List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
@@ -3741,9 +3758,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             deptIds.addAll(branchDepartment);
                         }
                     }
-                }else {
-                    deptIds=new ArrayList<>();
-                    deptIds.add(-1);
                 }
             }
             TimeType timeType = timeTypeMapper.selectById(companyId);
@@ -3877,6 +3891,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             //判断查看权限
             if(functionAllList.size()==0){
                 deptIds=new ArrayList<>();
+                deptIds.add(-1);
                 if(functionDpartList.size()>0){
                     if(functionTimeList.size()>0||functionCostList.size()>0){
                         List<Integer> collect  = departmentList.stream().map(dp -> dp.getDepartmentId()).distinct().collect(Collectors.toList());
@@ -3884,8 +3899,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         collect.addAll(otherCollect);
                         deptIds.addAll(collect);
                     }
-                }else {
-                    deptIds.add(-1);
                 }
             }
             List<Map<String, Object>> list = projectMapper.getTimeCostByCategory(companyId, startDate, endDate, projectCategoryId, userId,deptIds);
@@ -4023,8 +4036,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
         //判断查看权限
         if(functionAllList.size()==0){
+            deptIds=new ArrayList<>();
+            deptIds.add(-1);
             if(functionDeptList.size()>0){
-                deptIds=new ArrayList<>();
                 List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
                 List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
                 collect.addAll(otherCollect);
@@ -4032,9 +4046,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
                     deptIds.addAll(branchDepartment);
                 }
-            }else {
-                deptIds=new ArrayList<>();
-                deptIds.add(-1);
             }
         }
         List<Map<String, Object>> list = projectMapper.getUserWorkingTimeList(userId, user.getCompanyId(), startDate, endDate, projectId,start,size,departmentId,deptIds);
@@ -4067,8 +4078,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
         //判断查看权限
         if(functionAllList.size()==0){
+            deptIds=new ArrayList<>();
+            deptIds.add(-1);
             if(functionDeptList.size()>0){
-                deptIds=new ArrayList<>();
                 List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
                 List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
                 collect.addAll(otherCollect);
@@ -4076,9 +4088,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
                     deptIds.addAll(branchDepartment);
                 }
-            }else {
-                deptIds=new ArrayList<>();
-                deptIds.add(-1);
             }
         }
         List<Map<String, Object>> list = projectMapper.getUserWorkingTimeList(userId, user.getCompanyId(), startDate, endDate, projectId,null,null,null,deptIds);
@@ -4124,8 +4133,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", targetUser.getId()));
         //判断查看权限
         if(functionAllList.size()==0){
+            deptIds=new ArrayList<>();
+            deptIds.add(-1);
             if(functionDeptList.size()>0){
-                deptIds=new ArrayList<>();
                 List<Integer> collect = userDepartmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
                 List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
                 collect.addAll(otherCollect);
@@ -4133,10 +4143,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
                     deptIds.addAll(branchDepartment);
                 }
-
-            }else {
-                deptIds=new ArrayList<>();
-                deptIds.add(-1);
             }
         }
         List<Map<String,Object>> reportList=reportMapper.getUserReportTimelinessRate(targetUser.getCompanyId(),startDate,endDate);
@@ -4364,8 +4370,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", targetUser.getId()));
         //判断查看权限
         if(functionAllList.size()==0){
+            deptIds=new ArrayList<>();
+            deptIds.add(-1);
             if(functionDeptList.size()>0){
-                deptIds=new ArrayList<>();
                 List<Integer> collect = userDepartmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
                 List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
                 collect.addAll(otherCollect);
@@ -4373,9 +4380,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
                     deptIds.addAll(branchDepartment);
                 }
-            }else {
-                deptIds=new ArrayList<>();
-                deptIds.add(-1);
             }
         }
         long total;

+ 359 - 335
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -23,6 +23,7 @@ import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.task.AsyncTaskExecutor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
@@ -57,8 +58,8 @@ import java.util.stream.Collectors;
 @Service
 @Transactional
 public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> implements ReportService {
-//    @Resource
-//    AsyncTaskExecutor asyncTaskExecutor;//注入线程池对象
+    @Resource
+    AsyncTaskExecutor asyncTaskExecutor;//注入线程池对象
 
     @Value("${wx.template_report_pass}")
     public String TEMPLATE_REPORT_PASS;
@@ -157,6 +158,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     private ReportLogMapper reportLogMapper;
     @Resource
     private ThirdPartyInterfaceMapper thirdPartyInterfaceMapper;
+    @Resource
+    private DepartmentOtherManagerMapper departmentOtherManagerMapper;
 
     @Value(value = "${upload.path}")
     private String path;
@@ -217,13 +220,22 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 if (hasDeptWorktimePriv || (user.getManageDeptId() != null &&  user.getManageDeptId() > 0)) {
                     //找到该部门的所有子部门
                     List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
-                    //查找当前部门经理负责的部门
+                    //查找当前部门经理负责的部门 或者作为其他负责人的部分
                     List<Department> queryDeptList = null;
                     if (deptId != null) {
                         queryDeptList = allDepts.stream().filter(dp->dp.getDepartmentId().equals(deptId)).collect(Collectors.toList());
                     } else {
                         queryDeptList = allDepts.stream().filter(
                                 dp -> user.getId().equals(dp.getManagerId()) || (hasDeptWorktimePriv && dp.getDepartmentId().equals(user.getDepartmentId()))).collect(Collectors.toList());
+                        List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
+                        List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
+                        for (Integer integer : otherCollect) {
+                            Optional<Department> first = allDepts.stream().filter(ad -> ad.getDepartmentId().equals(integer)).findFirst();
+                            if(first.isPresent()){
+                                queryDeptList.add(first.get());
+                            }
+                        }
+
                     }
 
                     if (queryDeptList.size() > 0) {
@@ -1136,147 +1148,174 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     @Override
     public HttpRespMsg approveReport(String reportIds, Integer isDepartment, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
-        try {
-            String token = request.getHeader("Token");
-            User user = userMapper.selectById(token);
-            Company company = companyMapper.selectById(user.getCompanyId());
-            final List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(reportIds);
-            if (company.getPackageEngineering() == 1) {
-                //检查是否有专业进度待审核
-                List<ReportProfessionProgress> list = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).eq("audit_state", 0));
-                if (isDepartment != null) {
-                    //进行的是部门审核, 需要专业审核都通过才能进行部门审核
-                    if (list.size() > 0) {
-                        httpRespMsg.setError("只有专业审核全部通过才能进行操作");
-                        return httpRespMsg;
+        String token = request.getHeader("Token");
+        User user = userMapper.selectById(token);
+        Company company = companyMapper.selectById(user.getCompanyId());
+        final List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(reportIds);
+        if (company.getPackageEngineering() == 1) {
+            //检查是否有专业进度待审核
+            List<ReportProfessionProgress> list = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).eq("audit_state", 0));
+            if (isDepartment != null) {
+                //进行的是部门审核, 需要专业审核都通过才能进行部门审核
+                if (list.size() > 0) {
+                    httpRespMsg.setError("只有专业审核全部通过才能进行操作");
+                    return httpRespMsg;
+                } else {
+                    Report report = reportMapper.selectById(ids.get(0));
+                    //部门待审核,部门审核通过
+                    if (report.getDepartmentAuditState() == 0){
+                        report = new Report();
+                        report.setDepartmentAuditState(1);
+                        reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
+                    }
+                }
+            } else {
+                //专业审核或者项目审核
+                if (list.size() > 0) {
+                    //专业待审核的状态,进行专业审核
+                    List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
+                    List<Integer> projectIds = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
+
+                    List<ProjectProfession> myProfessionList = projectProfessionMapper.selectList(new QueryWrapper<ProjectProfession>().eq("incharger_id", user.getId()).in("project_id", projectIds));
+                    if (myProfessionList.size() == 0) {
+                        httpRespMsg.setError("只有专业负责人才能进行专业审核");
                     } else {
-                        Report report = reportMapper.selectById(ids.get(0));
-                        //部门待审核,部门审核通过
-                        if (report.getDepartmentAuditState() == 0){
-                            report = new Report();
-                            report.setDepartmentAuditState(1);
+                        List<Integer> collect = myProfessionList.stream().map(ProjectProfession::getProfessionId).collect(Collectors.toList());
+
+                        ReportProfessionProgress item = new ReportProfessionProgress();
+                        item.setAuditState(1);
+                        reportProfessionProgressService.update(item, new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).in("profession_id", collect));
+
+                        //全部的专业都审核通过的情况下,更新部门待审核状态
+                        int count = reportProfessionProgressService.count(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).ne("audit_state", 1));
+                        if (count == 0) {
+                            Report report = new Report();
+                            report.setDepartmentAuditState(0);
                             reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
                         }
                     }
                 } else {
-                    //专业审核或者项目审核
-                    if (list.size() > 0) {
-                        //专业待审核的状态,进行专业审核
-                        List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
-                        List<Integer> projectIds = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
-
-                        List<ProjectProfession> myProfessionList = projectProfessionMapper.selectList(new QueryWrapper<ProjectProfession>().eq("incharger_id", user.getId()).in("project_id", projectIds));
-                        if (myProfessionList.size() == 0) {
-                            httpRespMsg.setError("只有专业负责人才能进行专业审核");
-                        } else {
-                            List<Integer> collect = myProfessionList.stream().map(ProjectProfession::getProfessionId).collect(Collectors.toList());
-
-                            ReportProfessionProgress item = new ReportProfessionProgress();
-                            item.setAuditState(1);
-                            reportProfessionProgressService.update(item, new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).in("profession_id", collect));
-
-                            //全部的专业都审核通过的情况下,更新部门待审核状态
-                            int count = reportProfessionProgressService.count(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).ne("audit_state", 1));
-                            if (count == 0) {
-                                Report report = new Report();
-                                report.setDepartmentAuditState(0);
-                                reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
-                            }
-                        }
+                    Report report = reportMapper.selectById(ids.get(0));
+                    //部门待审核,部门审核通过
+                    if (report.getDepartmentAuditState() == 0) {
+                        report = new Report();
+                        report.setDepartmentAuditState(1);
+                        reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
                     } else {
-                        Report report = reportMapper.selectById(ids.get(0));
-                        //部门待审核,部门审核通过
-                        if (report.getDepartmentAuditState() == 0) {
-                            report = new Report();
-                            report.setDepartmentAuditState(1);
-                            reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
-                        } else {
-                            //最终进行项目经理审核
-                            reportMapper.update(new Report().setState(1).setProjectAuditTime(LocalDateTime.now()),
-                                    new QueryWrapper<Report>().in("id", ids));
-                            List<Report> finalReportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
-                            List<ReportProfessionProgress> professionProgressList = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids));
-
-                            //审核通过时,才会更新到个人的专业进度上去
-                            professionProgressList.forEach(pro->{
-                                PpMembs memb = new PpMembs();
-                                memb.setProgress(pro.getProgress());
-                                Report report1 = finalReportList.stream().filter(f -> f.getId().equals(pro.getReportId())).findFirst().get();
-                                Integer projectId = report1.getProjectId();
-                                //更新个人在项目中的专业进度
-                                ppMembsMapper.update(memb, new QueryWrapper<PpMembs>().eq("project_id", projectId)
-                                        .eq("memb_id", report1.getCreatorId()).eq("profession_id", pro.getProfessionId()));
-                            });
-                            notifyLeaders(finalReportList);
-                        }
+                        //最终进行项目经理审核
+                        reportMapper.update(new Report().setState(1).setProjectAuditTime(LocalDateTime.now()),
+                                new QueryWrapper<Report>().in("id", ids));
+                        List<Report> finalReportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
+                        List<ReportProfessionProgress> professionProgressList = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids));
+
+                        //审核通过时,才会更新到个人的专业进度上去
+                        professionProgressList.forEach(pro->{
+                            PpMembs memb = new PpMembs();
+                            memb.setProgress(pro.getProgress());
+                            Report report1 = finalReportList.stream().filter(f -> f.getId().equals(pro.getReportId())).findFirst().get();
+                            Integer projectId = report1.getProjectId();
+                            //更新个人在项目中的专业进度
+                            ppMembsMapper.update(memb, new QueryWrapper<PpMembs>().eq("project_id", projectId)
+                                    .eq("memb_id", report1.getCreatorId()).eq("profession_id", pro.getProfessionId()));
+                        });
+                        notifyLeaders(finalReportList);
                     }
                 }
-            } else {
-                //先按照大的审核模式进行分类
-                TimeType timeType = timeTypeMapper.selectById(company.getId());
-                Report oneReport = reportMapper.selectById(ids.get(0));
-                int oldState = oneReport.getState();
-                String creatorId = oneReport.getCreatorId();
-                User auditTargetUser = userMapper.selectById(creatorId);
-                if (timeType.getReportAuditType() == 2) {
-                    //先按分组审核,再进行项目经理审核
-                    List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, project_id, project_audit_state").in("id", ids));
-                    List<Integer> assProjectIds = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
-                    List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id, incharger_id").in("id", assProjectIds));
-                    Optional<Project> first = projectList.stream().filter(p -> StringUtils.isEmpty(p.getInchargerId())).findFirst();
-                    if (first.isPresent()) {
-                        String projectName = first.get().getProjectName();
-                        httpRespMsg.setError("请给["+projectName+"]项目设置项目负责人");
-                        return httpRespMsg;
-                    }
-                    for (Report r : reportList) {
-                        if (r.getGroupAuditState() == 0) {
-                            r.setGroupAuditState(1);
-                            r.setProjectAuditTime(LocalDateTime.now());
-                            //分组审核完,该项目的pm审核了
-                            Project project1 = projectList.stream().filter(project -> project.getId().equals(r.getProjectId())).findFirst().get();
-                            r.setProjectAuditorId(project1.getInchargerId());
-                            r.setProjectAuditorName(userMapper.selectById(project1.getInchargerId()).getName());
-                        } else if (r.getProjectAuditState() == 0) {
-                            r.setProjectAuditState(1);
-                            r.setProjectAuditTime(LocalDateTime.now());
-                            r.setState(1);
-                        }
+            }
+        } else {
+            //先按照大的审核模式进行分类
+            TimeType timeType = timeTypeMapper.selectById(company.getId());
+            Report oneReport = reportMapper.selectById(ids.get(0));
+            int oldState = oneReport.getState();
+            String creatorId = oneReport.getCreatorId();
+            User auditTargetUser = userMapper.selectById(creatorId);
+            if (timeType.getReportAuditType() == 2) {
+                //先按分组审核,再进行项目经理审核
+                List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, project_id, project_audit_state").in("id", ids));
+                List<Integer> assProjectIds = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
+                List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id, incharger_id").in("id", assProjectIds));
+                Optional<Project> first = projectList.stream().filter(p -> StringUtils.isEmpty(p.getInchargerId())).findFirst();
+                if (first.isPresent()) {
+                    String projectName = first.get().getProjectName();
+                    httpRespMsg.setError("请给["+projectName+"]项目设置项目负责人");
+                    return httpRespMsg;
+                }
+                for (Report r : reportList) {
+                    if (r.getGroupAuditState() == 0) {
+                        r.setGroupAuditState(1);
+                        r.setProjectAuditTime(LocalDateTime.now());
+                        //分组审核完,该项目的pm审核了
+                        Project project1 = projectList.stream().filter(project -> project.getId().equals(r.getProjectId())).findFirst().get();
+                        r.setProjectAuditorId(project1.getInchargerId());
+                        r.setProjectAuditorName(userMapper.selectById(project1.getInchargerId()).getName());
+                    } else if (r.getProjectAuditState() == 0) {
+                        r.setProjectAuditState(1);
+                        r.setProjectAuditTime(LocalDateTime.now());
+                        r.setState(1);
                     }
-                    //批量更新
-                    updateBatchById(reportList);
+                }
+                //批量更新
+                updateBatchById(reportList);
+            } else {
+                //之前的流程逻辑,综合了一层项目审核,或者一层任务分组审核。 可叠加部门审批流
+                List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
+                        new QueryWrapper<AuditWorkflowTimeSetting>().eq("dept_id", auditTargetUser.getDepartmentId())
+                                .orderByAsc("seq"));
+                if (settings.size() == 0) {
+                    //直接进行项目经理审核
+                    reportMapper.update(new Report().setState(1).setProjectAuditState(1).setProjectAuditTime(LocalDateTime.now()),
+                            new QueryWrapper<Report>().in("id", ids));
                 } else {
-                    //之前的流程逻辑,综合了一层项目审核,或者一层任务分组审核。 可叠加部门审批流
-                    List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
-                            new QueryWrapper<AuditWorkflowTimeSetting>().eq("dept_id", auditTargetUser.getDepartmentId())
-                                    .orderByAsc("seq"));
-                    if (settings.size() == 0) {
-                        //直接进行项目经理审核
-                        reportMapper.update(new Report().setState(1).setProjectAuditState(1).setProjectAuditTime(LocalDateTime.now()),
-                                new QueryWrapper<Report>().in("id", ids));
+                    //按流程走
+                    List<Report> allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
+                    List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", company.getId()));
+                    Report item = allReports.get(0);
+                    if (item.getIsFinalAudit() == 1) {
+                        //最终审核了,审核通过
+                        if (item.getIsDeptAudit() == 1) {
+                            //如果最终是部门审核,直接通过
+                            reportMapper.update(new Report().setState(1).setProjectAuditTime(LocalDateTime.now()),
+                                    new QueryWrapper<Report>().in("id", ids));
+                        } else {
+                            //如果最终是项目审核,流程中的项目审核字段也要更新: state为最终审核状态,projectAuditState为阶段性的项目审核状态
+                            reportMapper.update(new Report().setState(1).setProjectAuditState(1).setProjectAuditTime(LocalDateTime.now()),
+                                    new QueryWrapper<Report>().in("id", ids));
+                        }
                     } else {
-                        //按流程走
-                        List<Report> allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
-                        List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", company.getId()));
-                        Report item = allReports.get(0);
-                        if (item.getIsFinalAudit() == 1) {
-                            //最终审核了,审核通过
-                            if (item.getIsDeptAudit() == 1) {
-                                //如果最终是部门审核,直接通过
-                                reportMapper.update(new Report().setState(1).setProjectAuditTime(LocalDateTime.now()),
-                                        new QueryWrapper<Report>().in("id", ids));
-                            } else {
-                                //如果最终是项目审核,流程中的项目审核字段也要更新: state为最终审核状态,projectAuditState为阶段性的项目审核状态
-                                reportMapper.update(new Report().setState(1).setProjectAuditState(1).setProjectAuditTime(LocalDateTime.now()),
-                                        new QueryWrapper<Report>().in("id", ids));
+                        if (item.getIsDeptAudit() == 1) {
+                            //当前是部门审核,获取审核部门id
+                            Report upR = new Report();
+                            Integer auditDeptid = item.getAuditDeptid();
+                            for (int m=0;m<settings.size(); m++) {
+                                if (auditDeptid.equals(settings.get(m).getAuditDeptId()) && m < settings.size() -1) {
+                                    AuditWorkflowTimeSetting nextNode = settings.get(m + 1);
+                                    upR.setIsDeptAudit(nextNode.getIsDeptAudit());
+                                    if (upR.getIsDeptAudit() == 1) {
+                                        upR.setAuditDeptid(nextNode.getAuditDeptId());
+                                        upR.setAuditDeptManagerid(allDepts.stream()
+                                                .filter(ad->ad.getDepartmentId().equals(nextNode.getAuditDeptId())).findFirst().get().getManagerId());
+                                    }
+                                    upR.setIsFinalAudit(nextNode.getIsFinal());
+                                    break;
+                                }
                             }
+                            reportMapper.update(upR,
+                                    new QueryWrapper<Report>().in("id", ids));
                         } else {
-                            if (item.getIsDeptAudit() == 1) {
-                                //当前是部门审核,获取审核部门id
+                            //当前的先审核通过
+                            reportMapper.update(new Report().setProjectAuditState(1),
+                                    new QueryWrapper<Report>().in("id", ids));
+                            //项目审核的情况下,需要判断是否该员工当天所有项目是否都是项目经理审核通过了
+                            List<Report> sameUserSameDayOtherReports = reportMapper.selectList(new QueryWrapper<Report>()
+                                    .eq("create_date", item.getCreateDate())
+                                    .eq("creator_id", item.getCreatorId())
+                                    .notIn("id", ids));
+                            long pendingNum = sameUserSameDayOtherReports.stream().filter(s->s.getProjectAuditState() == 0).count();
+                            if (pendingNum == 0) {
+                                //没有其他待审核的项目了,流程往下走
                                 Report upR = new Report();
-                                Integer auditDeptid = item.getAuditDeptid();
                                 for (int m=0;m<settings.size(); m++) {
-                                    if (auditDeptid.equals(settings.get(m).getAuditDeptId()) && m < settings.size() -1) {
+                                    if (settings.get(m).getIsDeptAudit()== 0) {//找到项目审核的那个节点
                                         AuditWorkflowTimeSetting nextNode = settings.get(m + 1);
                                         upR.setIsDeptAudit(nextNode.getIsDeptAudit());
                                         if (upR.getIsDeptAudit() == 1) {
@@ -1288,107 +1327,74 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                         break;
                                     }
                                 }
-                                reportMapper.update(upR,
-                                        new QueryWrapper<Report>().in("id", ids));
-                            } else {
-                                //当前的先审核通过
-                                reportMapper.update(new Report().setProjectAuditState(1),
-                                        new QueryWrapper<Report>().in("id", ids));
-                                //项目审核的情况下,需要判断是否该员工当天所有项目是否都是项目经理审核通过了
-                                List<Report> sameUserSameDayOtherReports = reportMapper.selectList(new QueryWrapper<Report>()
-                                        .eq("create_date", item.getCreateDate())
-                                        .eq("creator_id", item.getCreatorId())
-                                        .notIn("id", ids));
-                                long pendingNum = sameUserSameDayOtherReports.stream().filter(s->s.getProjectAuditState() == 0).count();
-                                if (pendingNum == 0) {
-                                    //没有其他待审核的项目了,流程往下走
-                                    Report upR = new Report();
-                                    for (int m=0;m<settings.size(); m++) {
-                                        if (settings.get(m).getIsDeptAudit()== 0) {//找到项目审核的那个节点
-                                            AuditWorkflowTimeSetting nextNode = settings.get(m + 1);
-                                            upR.setIsDeptAudit(nextNode.getIsDeptAudit());
-                                            if (upR.getIsDeptAudit() == 1) {
-                                                upR.setAuditDeptid(nextNode.getAuditDeptId());
-                                                upR.setAuditDeptManagerid(allDepts.stream()
-                                                        .filter(ad->ad.getDepartmentId().equals(nextNode.getAuditDeptId())).findFirst().get().getManagerId());
-                                            }
-                                            upR.setIsFinalAudit(nextNode.getIsFinal());
-                                            break;
-                                        }
-                                    }
-                                    //判断下一个审核节点(部门审核)的审核人和当前审核的是不是同一个人,如果是的,则可直接进入下一步审核或者结束
-                                    if (upR.getAuditDeptManagerid() != null && upR.getAuditDeptManagerid().equals(token)) {
-                                        if (upR.getIsFinalAudit() == 1) {
-                                            //最终审核了
-                                            List<Integer> allRids = sameUserSameDayOtherReports.stream().map(Report::getId).collect(Collectors.toList());
-                                            allRids.addAll(ids);
-                                            upR.setState(1).setProjectAuditTime(LocalDateTime.now());
-                                            reportMapper.update(upR,
-                                                    new QueryWrapper<Report>().in("id", allRids));
-                                        } else {
-                                            //还有下个节点
-                                            Integer auditDeptid = upR.getAuditDeptid();
-                                            for (int m=0;m<settings.size(); m++) {
-                                                if (auditDeptid.equals(settings.get(m).getAuditDeptId()) && m < settings.size() -1) {
-                                                    AuditWorkflowTimeSetting nextNode = settings.get(m + 1);
-                                                    upR.setIsDeptAudit(nextNode.getIsDeptAudit());
-                                                    if (upR.getIsDeptAudit() == 1) {
-                                                        upR.setAuditDeptid(nextNode.getAuditDeptId());
-                                                        upR.setAuditDeptManagerid(allDepts.stream()
-                                                                .filter(ad->ad.getDepartmentId().equals(nextNode.getAuditDeptId())).findFirst().get().getManagerId());
-                                                    }
-                                                    upR.setIsFinalAudit(nextNode.getIsFinal());
-                                                    break;
+                                //判断下一个审核节点(部门审核)的审核人和当前审核的是不是同一个人,如果是的,则可直接进入下一步审核或者结束
+                                if (upR.getAuditDeptManagerid() != null && upR.getAuditDeptManagerid().equals(token)) {
+                                    if (upR.getIsFinalAudit() == 1) {
+                                        //最终审核了
+                                        List<Integer> allRids = sameUserSameDayOtherReports.stream().map(Report::getId).collect(Collectors.toList());
+                                        allRids.addAll(ids);
+                                        upR.setState(1).setProjectAuditTime(LocalDateTime.now());
+                                        reportMapper.update(upR,
+                                                new QueryWrapper<Report>().in("id", allRids));
+                                    } else {
+                                        //还有下个节点
+                                        Integer auditDeptid = upR.getAuditDeptid();
+                                        for (int m=0;m<settings.size(); m++) {
+                                            if (auditDeptid.equals(settings.get(m).getAuditDeptId()) && m < settings.size() -1) {
+                                                AuditWorkflowTimeSetting nextNode = settings.get(m + 1);
+                                                upR.setIsDeptAudit(nextNode.getIsDeptAudit());
+                                                if (upR.getIsDeptAudit() == 1) {
+                                                    upR.setAuditDeptid(nextNode.getAuditDeptId());
+                                                    upR.setAuditDeptManagerid(allDepts.stream()
+                                                            .filter(ad->ad.getDepartmentId().equals(nextNode.getAuditDeptId())).findFirst().get().getManagerId());
                                                 }
+                                                upR.setIsFinalAudit(nextNode.getIsFinal());
+                                                break;
                                             }
-                                            List<Integer> allRids = sameUserSameDayOtherReports.stream().map(Report::getId).collect(Collectors.toList());
-                                            allRids.addAll(ids);
-                                            reportMapper.update(upR,
-                                                    new QueryWrapper<Report>().in("id", allRids));
                                         }
-                                    } else {
-                                        //全部更新到下一个审核阶段
                                         List<Integer> allRids = sameUserSameDayOtherReports.stream().map(Report::getId).collect(Collectors.toList());
                                         allRids.addAll(ids);
                                         reportMapper.update(upR,
                                                 new QueryWrapper<Report>().in("id", allRids));
                                     }
+                                } else {
+                                    //全部更新到下一个审核阶段
+                                    List<Integer> allRids = sameUserSameDayOtherReports.stream().map(Report::getId).collect(Collectors.toList());
+                                    allRids.addAll(ids);
+                                    reportMapper.update(upR,
+                                            new QueryWrapper<Report>().in("id", allRids));
                                 }
                             }
                         }
                     }
                 }
+            }
 
-                List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
-                List<Integer> collect = reportList.stream().map(rl -> rl.getProjectId()).distinct().collect(Collectors.toList());
-                List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", collect));
-                String pNames = projectList.stream().map(Project::getProjectName).collect(Collectors.joining(", ", "[", "]"));
-                //对导入审核,添加记录
-                int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
-                ReportAuditLog log = new ReportAuditLog();
-                log.setAuditChannel(channel);
-                log.setCompanyId(company.getId());
-                log.setResult("通过");
-                log.setUserId(user.getId());
-                log.setUserName(user.getName());
-                log.setProjectName(pNames);
-                reportAuditLogMapper.insert(log);
-                //员工的日期
-                ReportAlogMembdate membdate = new ReportAlogMembdate();
-                membdate.setRlogId(log.getId());
-                membdate.setState(1);//通过
-                membdate.setCreateDate(oneReport.getCreateDate());
-                membdate.setUserId(oneReport.getCreatorId());
-                membdate.setUserName(userMapper.selectById(oneReport.getCreatorId()).getName());
-                reportAlogMembdateMapper.insert(membdate);
+            List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
+            List<Integer> collect = reportList.stream().map(rl -> rl.getProjectId()).distinct().collect(Collectors.toList());
+            List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", collect));
+            String pNames = projectList.stream().map(Project::getProjectName).collect(Collectors.joining(", ", "[", "]"));
+            //对导入审核,添加记录
+            int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
+            ReportAuditLog log = new ReportAuditLog();
+            log.setAuditChannel(channel);
+            log.setCompanyId(company.getId());
+            log.setResult("通过");
+            log.setUserId(user.getId());
+            log.setUserName(user.getName());
+            log.setProjectName(pNames);
+            reportAuditLogMapper.insert(log);
+            //员工的日期
+            ReportAlogMembdate membdate = new ReportAlogMembdate();
+            membdate.setRlogId(log.getId());
+            membdate.setState(1);//通过
+            membdate.setCreateDate(oneReport.getCreateDate());
+            membdate.setUserId(oneReport.getCreatorId());
+            membdate.setUserName(userMapper.selectById(oneReport.getCreatorId()).getName());
+            reportAlogMembdateMapper.insert(membdate);
 
-                //日报的审核过程记录
-                saveApproveReportLog(reportList, user.getId(), user.getName());
-            }
-        } catch (NullPointerException e) {
-            httpRespMsg.setError("验证失败");
-            e.printStackTrace();
-            return httpRespMsg;
+            //日报的审核过程记录
+            saveApproveReportLog(reportList, user.getId(), user.getName());
         }
         return httpRespMsg;
     }
@@ -1510,132 +1516,127 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     @Override
     public HttpRespMsg denyReport(String date, String reportIds, String reason, Integer isDepartment, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
-        try {
-            User user = userMapper.selectById(request.getHeader("Token"));
-            Company company = companyMapper.selectById(user.getCompanyId());
-            final List<Long> ids = ListUtil.convertIdsArrayToList(reportIds);
-            if (reason == null) {
-                reason = "-";
-            }
-            Report oneReport = reportMapper.selectById(ids.get(0));
-            int oldState = oneReport.getState();
-            if (company.getPackageEngineering() == 1) {
-                //检查是否有专业进度待审核
-                List<ReportProfessionProgress> list = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).eq("audit_state", 0));
-                if (isDepartment != null) {
-                    if (list.size() > 0) {
-                        httpRespMsg.setError("只有专业审核全部通过才可操作");
-                        return httpRespMsg;
-                    } else {
-                        Report report = oneReport;
-                        //部门待审核,部门审核驳回
-                        if (report.getDepartmentAuditState() == 0) {
-                            report = new Report();
-                            report.setDepartmentAuditState(2);
-                            reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
-                        }
-                    }
+        User user = userMapper.selectById(request.getHeader("Token"));
+        Company company = companyMapper.selectById(user.getCompanyId());
+        final List<Long> ids = ListUtil.convertIdsArrayToList(reportIds);
+        if (reason == null) {
+            reason = "-";
+        }
+        Report oneReport = reportMapper.selectById(ids.get(0));
+        int oldState = oneReport.getState();
+        if (company.getPackageEngineering() == 1) {
+            //检查是否有专业进度待审核
+            List<ReportProfessionProgress> list = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).eq("audit_state", 0));
+            if (isDepartment != null) {
+                if (list.size() > 0) {
+                    httpRespMsg.setError("只有专业审核全部通过才可操作");
+                    return httpRespMsg;
                 } else {
-                    if (list.size() > 0) {
-                        //只能是自己负责的专业
-                        List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
-                        List<Integer> projectIds = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
-
-                        List<ProjectProfession> myProfessionList = projectProfessionMapper.selectList(new QueryWrapper<ProjectProfession>().eq("incharger_id", user.getId()).in("project_id", projectIds));
-                        if (myProfessionList.size() == 0) {
-                            httpRespMsg.setError("只有专业负责人才能进行专业审核");
-                        } else {
-                            List<Integer> collect = myProfessionList.stream().map(ProjectProfession::getProfessionId).collect(Collectors.toList());
-                            //专业待审核的状态,进行专业审核驳回
-                            ReportProfessionProgress item = new ReportProfessionProgress();
-                            item.setAuditState(2);
-                            reportProfessionProgressService.update(item, new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).in("profession_id", collect));
-                        }
-                    } else {
-                        Report report = reportMapper.selectById(ids.get(0));
-                        //部门待审核,部门审核驳回
-                        if (report.getDepartmentAuditState() == 0) {
-                            report = new Report();
-                            report.setDepartmentAuditState(2);
-                            reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
-                        }
+                    Report report = oneReport;
+                    //部门待审核,部门审核驳回
+                    if (report.getDepartmentAuditState() == 0) {
+                        report = new Report();
+                        report.setDepartmentAuditState(2);
+                        reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
                     }
                 }
+            } else {
+                if (list.size() > 0) {
+                    //只能是自己负责的专业
+                    List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
+                    List<Integer> projectIds = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
 
-            }
-            //直接进行项目经理审核驳回
-            Report upReport = new Report().setState(2)
-                    .setRejectReason(reason).setRejectUserid(user.getId()).setRejectUsername(user.getName());
-            reportMapper.update(upReport,
-                    new QueryWrapper<Report>().in("id", ListUtil.convertIdsArrayToList(reportIds)));
-            List<Report> rList = reportMapper.selectList(new QueryWrapper<Report>().select("id, group_id, project_id").in("id", ListUtil.convertIdsArrayToList(reportIds)));
-            if (timeTypeMapper.selectById(company.getId()).getReportAuditType() == 2) {
-                //退回任务分组审核状态
-                List<Report> newList = new ArrayList<>();
-                for (Report r : rList) {
-                    Report upR = new Report();
-                    upR.setId(r.getId());
-                    upR.setGroupAuditState(0);
-                    String inchargerId = taskGroupMapper.selectById(r.getGroupId()).getInchargerId();
-                    upR.setProjectAuditorId(inchargerId);
-                    upR.setProjectAuditorName(userMapper.selectById(inchargerId).getName());
-                    newList.add(upR);
+                    List<ProjectProfession> myProfessionList = projectProfessionMapper.selectList(new QueryWrapper<ProjectProfession>().eq("incharger_id", user.getId()).in("project_id", projectIds));
+                    if (myProfessionList.size() == 0) {
+                        httpRespMsg.setError("只有专业负责人才能进行专业审核");
+                    } else {
+                        List<Integer> collect = myProfessionList.stream().map(ProjectProfession::getProfessionId).collect(Collectors.toList());
+                        //专业待审核的状态,进行专业审核驳回
+                        ReportProfessionProgress item = new ReportProfessionProgress();
+                        item.setAuditState(2);
+                        reportProfessionProgressService.update(item, new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).in("profession_id", collect));
+                    }
+                } else {
+                    Report report = reportMapper.selectById(ids.get(0));
+                    //部门待审核,部门审核驳回
+                    if (report.getDepartmentAuditState() == 0) {
+                        report = new Report();
+                        report.setDepartmentAuditState(2);
+                        reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
+                    }
                 }
-                updateBatchById(newList);
-            }
-            List<Integer> collect = rList.stream().map(Report::getProjectId).collect(Collectors.toList());
-            List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", collect));
-            String pNames = projectList.stream().map(Project::getProjectName).collect(Collectors.joining(", ", "[", "]"));
-            String str = null;
-            String fillUserId = null;
-            if (oneReport.getState() == -1) {//待部门直属领导审核
-                str = "您"+date+"导入的日报中"+pNames+"项目被["+user.getName()+"]驳回。原因:" + reason+",请重新导入。";
-                fillUserId = oneReport.getFillUserid();
-            } else {
-                str = "您"+date+"填写的日报中"+pNames+"项目被["+user.getName()+"]驳回。原因:" + reason;
-                fillUserId = oneReport.getCreatorId();
             }
 
-            informationMapper.insert(new Information().setType(0).setContent(date).setUserId(fillUserId).setMsg(str));
-            //对导入审核,添加记录
-            int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
-            ReportAuditLog log = new ReportAuditLog();
-            log.setAuditChannel(channel);//导入审核
-            log.setCompanyId(company.getId());
-            log.setResult("驳回"+(StringUtils.isEmpty(reason)?"":"("+reason+")"));
-            log.setUserId(user.getId());
-            log.setUserName(user.getName());
-            log.setProjectName(pNames);
-            reportAuditLogMapper.insert(log);
-            //员工的日期
-            ReportAlogMembdate membdate = new ReportAlogMembdate();
-            membdate.setRlogId(log.getId());
-            membdate.setState(2);//驳回
-            membdate.setCreateDate(oneReport.getCreateDate());
-            membdate.setUserId(oneReport.getCreatorId());
-            membdate.setUserName(userMapper.selectById(oneReport.getCreatorId()).getName());
-            reportAlogMembdateMapper.insert(membdate);
-            saveDenyReportLog(rList, user.getId(), user.getName(), reason);
-            //发送企业微信通知消息
-            User reporter = userMapper.selectById(fillUserId);
-            String corpwxUserid = reporter.getCorpwxUserid();
-            //先判断钉钉
-            if (reporter.getDingdingUserid() != null) {
-                projectMapper.selectById(oneReport.getProjectId()).getProjectName();
-                companyDingdingService.sendRejectReportMsg(reporter.getCompanyId(), date, pNames, reason, user.getName(), reporter.getDingdingUserid());
-            }
-            if (corpwxUserid != null) {
-                WxCorpInfo info = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", company.getId()));
-                wxCorpInfoService.sendWXCorpMsg(info, corpwxUserid, str);
-            } else if (reporter.getWxOpenid() != null){
-                //发送个人微信通知
-                pushReject(str, reporter, user.getName(), reason);
+        }
+        //直接进行项目经理审核驳回
+        Report upReport = new Report().setState(2)
+                .setRejectReason(reason).setRejectUserid(user.getId()).setRejectUsername(user.getName());
+        reportMapper.update(upReport,
+                new QueryWrapper<Report>().in("id", ListUtil.convertIdsArrayToList(reportIds)));
+        List<Report> rList = reportMapper.selectList(new QueryWrapper<Report>().select("id, group_id, project_id, creator_id, create_date").in("id", ListUtil.convertIdsArrayToList(reportIds)));
+        if (timeTypeMapper.selectById(company.getId()).getReportAuditType() == 2) {
+            //退回任务分组审核状态
+            List<Report> newList = new ArrayList<>();
+            for (Report r : rList) {
+                Report upR = new Report();
+                upR.setId(r.getId());
+                upR.setGroupAuditState(0);
+                String inchargerId = taskGroupMapper.selectById(r.getGroupId()).getInchargerId();
+                upR.setProjectAuditorId(inchargerId);
+                upR.setProjectAuditorName(userMapper.selectById(inchargerId).getName());
+                newList.add(upR);
             }
+            updateBatchById(newList);
+        }
+        List<Integer> collect = rList.stream().map(Report::getProjectId).collect(Collectors.toList());
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", collect));
+        String pNames = projectList.stream().map(Project::getProjectName).collect(Collectors.joining(", ", "[", "]"));
+        String str = null;
+        String fillUserId = null;
+        if (oneReport.getState() == -1) {//待部门直属领导审核
+            str = "您"+date+"导入的日报中"+pNames+"项目被["+user.getName()+"]驳回。原因:" + reason+",请重新导入。";
+            fillUserId = oneReport.getFillUserid();
+        } else {
+            str = "您"+date+"填写的日报中"+pNames+"项目被["+user.getName()+"]驳回。原因:" + reason;
+            fillUserId = oneReport.getCreatorId();
+        }
 
-        } catch (NullPointerException e) {
-            httpRespMsg.setError("验证失败");
-            return httpRespMsg;
+        informationMapper.insert(new Information().setType(0).setContent(date).setUserId(fillUserId).setMsg(str));
+        //对导入审核,添加记录
+        int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
+        ReportAuditLog log = new ReportAuditLog();
+        log.setAuditChannel(channel);//导入审核
+        log.setCompanyId(company.getId());
+        log.setResult("驳回"+(StringUtils.isEmpty(reason)?"":"("+reason+")"));
+        log.setUserId(user.getId());
+        log.setUserName(user.getName());
+        log.setProjectName(pNames);
+        reportAuditLogMapper.insert(log);
+        //员工的日期
+        ReportAlogMembdate membdate = new ReportAlogMembdate();
+        membdate.setRlogId(log.getId());
+        membdate.setState(2);//驳回
+        membdate.setCreateDate(oneReport.getCreateDate());
+        membdate.setUserId(oneReport.getCreatorId());
+        membdate.setUserName(userMapper.selectById(oneReport.getCreatorId()).getName());
+        reportAlogMembdateMapper.insert(membdate);
+        saveDenyReportLog(rList, user.getId(), user.getName(), reason);
+        //发送驳回通知消息
+        User reporter = userMapper.selectById(fillUserId);
+        String corpwxUserid = reporter.getCorpwxUserid();
+        //先判断钉钉
+        if (reporter.getDingdingUserid() != null) {
+            projectMapper.selectById(oneReport.getProjectId()).getProjectName();
+            companyDingdingService.sendRejectReportMsg(reporter.getCompanyId(), date, pNames, reason, user.getName(), reporter.getDingdingUserid());
+        }
+        if (corpwxUserid != null) {
+            WxCorpInfo info = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", company.getId()));
+            wxCorpInfoService.sendWXCorpMsg(info, corpwxUserid, str);
+        } else if (reporter.getWxOpenid() != null){
+            //发送个人微信通知
+            pushReject(str, reporter, user.getName(), reason);
         }
+
         return httpRespMsg;
     }
 
@@ -2081,7 +2082,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
 
     @Override
-    public HttpRespMsg batchDenyReport(String reportIds, Integer isDepartment, HttpServletRequest request) {
+    public HttpRespMsg batchDenyReport(String reportIds, Integer isDepartment, String reason, HttpServletRequest request) {
         User user = userMapper.selectById(request.getHeader("Token"));
         Company company = companyMapper.selectById(user.getCompanyId());
         final List<Long> ids = ListUtil.convertIdsArrayToList(reportIds);
@@ -2132,7 +2133,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         Report oneReport = reportMapper.selectById(ids.get(0));
         int oldState = oneReport.getState();
         int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
-        List<Report> rList = reportMapper.selectList(new QueryWrapper<Report>().select("id, group_id, project_id").in("id", ListUtil.convertIdsArrayToList(reportIds)));
+        List<Report> rList = reportMapper.selectList(new QueryWrapper<Report>().select("id, group_id, project_id, creator_id, create_date").in("id", ListUtil.convertIdsArrayToList(reportIds)));
         if (timeTypeMapper.selectById(company.getId()).getReportAuditType() == 2) {
             //退回任务分组审核状态
             List<Report> newList = new ArrayList<>();
@@ -2157,13 +2158,13 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         ReportAuditLog log = new ReportAuditLog();
         log.setAuditChannel(channel);//导入审核
         log.setCompanyId(company.getId());
-        log.setResult("批量驳回");
+        log.setResult("批量驳回,原因:" + (StringUtils.isEmpty(reason)?"无":reason));
         log.setUserId(user.getId());
         log.setUserName(user.getName());
         log.setProjectName(s);
         reportAuditLogMapper.insert(log);
         List<Report> allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
-        saveDenyReportLog(allReports, user.getId(), user.getName(), null);
+        saveDenyReportLog(allReports, user.getId(), user.getName(), reason);
         List<User> allUsers = userMapper.selectList(new QueryWrapper<User>().select("id, name").eq("company_id", company.getId()));
         //当前所有员工的日期
         List<ReportAlogMembdate> membList = new ArrayList<>();
@@ -2188,8 +2189,31 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             reportAlogMembdateService.saveBatch(membList);
         }
         //直接进行项目经理审核驳回
+
         reportMapper.update(new Report().setState(2),
                 new QueryWrapper<Report>().in("id", ListUtil.convertIdsArrayToList(reportIds)));
+//        asyncTaskExecutor.execute(new Runnable() {
+//            @Override
+//            public void run() {
+//
+//                //开启线程任务进行发送驳回提醒
+//                //发送驳回通知消息
+//                User reporter = userMapper.selectById(fillUserId);
+//                String corpwxUserid = reporter.getCorpwxUserid();
+//                //先判断钉钉
+//                if (reporter.getDingdingUserid() != null) {
+//                    projectMapper.selectById(oneReport.getProjectId()).getProjectName();
+//                    companyDingdingService.sendRejectReportMsg(reporter.getCompanyId(), date, pNames, reason, user.getName(), reporter.getDingdingUserid());
+//                }
+//                if (corpwxUserid != null) {
+//                    WxCorpInfo info = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", company.getId()));
+//                    wxCorpInfoService.sendWXCorpMsg(info, corpwxUserid, str);
+//                } else if (reporter.getWxOpenid() != null){
+//                    //发送个人微信通知
+//                    pushReject(str, reporter, user.getName(), reason);
+//                }
+//            }
+//        });
 
         return httpRespMsg;
     }

+ 7 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/DepartmentMapper.xml

@@ -24,10 +24,12 @@
         SELECT SUM(b.working_time) AS time, SUM(b.cost) AS money
         FROM report AS b
         WHERE b.state = 1
-        AND b.dept_id IN
-        <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
-            #{departmentId}
-        </foreach>
+        <if test="departmentIds != null and departmentIds.size()>0">
+            AND b.dept_id IN
+            <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
+                #{departmentId}
+            </foreach>
+        </if>
         <if test="startDate != null and endDate != null">
             AND b.create_date between #{startDate} and #{endDate}
         </if>
@@ -41,7 +43,7 @@
         LEFT JOIN report AS b ON a.id = b.creator_id
         LEFT JOIN project AS c ON b.project_id = c.id
         WHERE b.state = 1
-        <if test="departmentIds != null">
+        <if test="departmentIds != null and departmentIds.size()>0">
             AND b.dept_id IN
             <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
                 #{departmentId}

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -662,6 +662,12 @@
         WHERE
         a.state = 1
         and a.company_id = #{companyId}
+        <if test="departmentIds!=null and departmentIds.size()>0">
+            and a.dept_id in
+            <foreach collection="departmentIds" open="(" item="item" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
         <if test="projectId != null">
             and a.project_id = #{projectId}
         </if>