Prechádzať zdrojové kódy

批量驳回接口增加驳回原因

seyason 2 rokov pred
rodič
commit
777425d339

+ 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/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());

+ 347 - 334
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;
@@ -1136,147 +1137,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 +1316,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 +1505,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 +2071,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 +2122,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 +2147,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 +2178,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;
     }