瀏覽代碼

日报审核模式修改

seyason 2 年之前
父節點
當前提交
c60529ce15

+ 22 - 21
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -171,8 +171,28 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             } else if (checkBranch(departmentId)) {
                 httpRespMsg.setError("不能在有子级部门时删除部门");
             } else {
+                Integer reportCut = reportMapper.selectCount(new QueryWrapper<Report>().eq("dept_id", departmentId));
+                if(reportCut>0){
+                    httpRespMsg.setError("当前部门已被日报数据使用");
+                    return httpRespMsg;
+                }
+                Integer auditDeptidCut = leaveSheetMapper.selectCount(new QueryWrapper<LeaveSheet>().eq("audit_deptid", departmentId));
+                if(auditDeptidCut>0){
+                    httpRespMsg.setError("当前部门已被请假数据使用");
+                    return httpRespMsg;
+                }
+                Integer auditWorkflowTimeSettingCut = auditWorkflowTimeSettingMapper.selectCount(new QueryWrapper<AuditWorkflowTimeSetting>().eq("audit_dept_id", departmentId));
+                if(auditWorkflowTimeSettingCut>0){
+                    httpRespMsg.setError("当前部门已被工时审批流数据使用");
+                    return httpRespMsg;
+                }
+                Integer auditWorkflowSettingCut = auditWorkflowSettingMapper.selectCount(new QueryWrapper<AuditWorkflowSetting>().eq("audit_dept_id", departmentId));
+                if(auditWorkflowSettingCut>0){
+                    httpRespMsg.setError("当前部门已被请假出差审批流数据使用");
+                    return httpRespMsg;
+                }
                 if (departmentMapper.deleteById(department) == 0) {
-                    httpRespMsg.setError("修改失败");
+                    httpRespMsg.setError("删除失败");
                 } else {
                     userMapper.update(new User().setDepartmentId(0).setDepartmentCascade("0"), new QueryWrapper<User>()
                             .eq("company_id", companyId)
@@ -182,26 +202,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                             .eq("manage_dept_id", departmentId));
                 }
             }
-            Integer reportCut = reportMapper.selectCount(new QueryWrapper<Report>().eq("dept_id", departmentId));
-            if(reportCut>0){
-                httpRespMsg.setError("当前部门已被日报数据使用");
-                return httpRespMsg;
-            }
-            Integer auditDeptidCut = leaveSheetMapper.selectCount(new QueryWrapper<LeaveSheet>().eq("audit_deptid", departmentId));
-            if(auditDeptidCut>0){
-                httpRespMsg.setError("当前部门已被请假数据使用");
-                return httpRespMsg;
-            }
-            Integer auditWorkflowTimeSettingCut = auditWorkflowTimeSettingMapper.selectCount(new QueryWrapper<AuditWorkflowTimeSetting>().eq("audit_dept_id", departmentId));
-            if(auditWorkflowTimeSettingCut>0){
-                httpRespMsg.setError("当前部门已被工时审批流数据使用");
-                return httpRespMsg;
-            }
-            Integer auditWorkflowSettingCut = auditWorkflowSettingMapper.selectCount(new QueryWrapper<AuditWorkflowSetting>().eq("audit_dept_id", departmentId));
-            if(auditWorkflowSettingCut>0){
-                httpRespMsg.setError("当前部门已被请假出差审批流数据使用");
-                return httpRespMsg;
-            }
+
         } catch (NullPointerException e) {
             httpRespMsg.setError("验证失败");
             return httpRespMsg;

+ 226 - 153
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -550,10 +550,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     r.setDegreeList(degreeMapList);
                 }
                 //检查是否是按照任务分组负责人审核
-                Project curProject = allProjectList.stream().filter(ap->ap.getId().equals(r.getProjectId())).findFirst().get();
+//                Project curProject = allProjectList.stream().filter(ap->ap.getId().equals(r.getProjectId())).findFirst().get();
+                int reportAuditType = timeTypeMapper.selectById(companyId).getReportAuditType();
                 //分组
                 if (company.getPackageProject() == 1) {
-                    if (curProject.getTaskGpIncharge() == 0) {
+                    if (reportAuditType == 0) {
                         r.setTaskGroups(taskGroups.stream().filter(tg->tg.getProjectId().equals(r.getProjectId())).collect(Collectors.toList()));
                         if (r.getGroupId() != null && r.getGroupId() != 0) {
                             Optional<TaskGroup> optinal = taskGroups.stream().filter(tg->tg.getId().equals(r.getGroupId())).findFirst();
@@ -577,7 +578,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     }
                 }
                 //项目的审核人
-                if (curProject.getTaskGpIncharge() == 0) {
+                if (reportAuditType == 0) {
                     r.setAuditUserList(auditorList.stream().filter(au->au.getProjectId().equals(r.getProjectId())).collect(Collectors.toList()));
                     if (r.getProjectAuditorId() != null) {
                         Optional<ProjectAuditor> auItem = auditorList.stream().filter(au->au.getAuditorId().equals(r.getProjectAuditorId())).findFirst();
@@ -1219,7 +1220,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 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").in("id", ids));
+                    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();
@@ -1567,7 +1568,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     .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>().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<>();
@@ -1807,146 +1808,201 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             }
 
         } else {
+            TimeType timeType = timeTypeMapper.selectById(company.getId());
             LocalDateTime now = LocalDateTime.now();
-            List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
-                    new QueryWrapper<AuditWorkflowTimeSetting>().eq("company_id", company.getId())
-                            .orderByAsc("seq"));
+
             Report oneReport = reportMapper.selectById(ids.get(0));
             int oldState = oneReport.getState();
             List<User> allUsers = null;
             List<Report> allReports = null;
-            if (settings.size() == 0) {
-                //公司没有自定义流程,直接进行项目经理审核
-                reportMapper.update(new Report().setState(1).setProjectAuditTime(now),
-                        new QueryWrapper<Report>().in("id", ids));
-                allUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()));
-                allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
+            if (timeType.getReportAuditType() == 2) {
+                allUsers = userMapper.selectList(new QueryWrapper<User>().select("id, name").eq("company_id", company.getId()));
+                //先分组负责人审核,再项目负责人审核
+                List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, project_id, project_audit_state, creator_id, create_date").in("id", ids));
+                allReports = reportList;
+                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);
             } else {
-                allUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()));
-                allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
-                List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", company.getId()));
-                //ids是来自不同人不同日期的报告id
-                List<Report> updateReportList = new ArrayList<Report>();
-                for (Integer rid : ids) {
-                    String creatorId = allReports.stream().filter(a->a.getId().equals(rid)).findFirst().get().getCreatorId();
-                    User auditTargetUser = allUsers.stream().filter(a->a.getId().equals(creatorId)).findFirst().get();
-                    List<AuditWorkflowTimeSetting> deptSettings = settings.stream().filter(s->s.getDeptId().equals(auditTargetUser.getDepartmentId())).collect(Collectors.toList());
-                    Report curReport = new Report().setId(rid);
-                    if (deptSettings.size() == 0) {
-                        //直接进行项目经理审核
-                        curReport.setState(1).setProjectAuditTime(now);
-                    } else {
-                        //按流程走, 取到当前报告的数据
-                        Report item = allReports.stream().filter(a->a.getId().equals(rid)).findFirst().get();
-                        if (item.getIsFinalAudit() == 1) {
-                            //最终审核了,审核通过
-                            if (item.getIsDeptAudit() == 1) {
-                                //如果最终是部门审核,直接通过
-                                //如果最终是项目审核
-                                curReport.setState(1).setProjectAuditTime(now);
-                            } else {
-                                //如果最终是项目审核,流程中的项目审核字段也要更新: state为最终审核状态,projectAuditState为阶段性的项目审核状态
-                                curReport.setState(1).setProjectAuditState(1).setProjectAuditTime(now);
-                            }
+                List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
+                        new QueryWrapper<AuditWorkflowTimeSetting>().eq("company_id", company.getId())
+                                .orderByAsc("seq"));
+                if (settings.size() == 0) {
+                    //公司没有自定义流程,直接进行项目经理审核
+                    reportMapper.update(new Report().setState(1).setProjectAuditTime(now),
+                            new QueryWrapper<Report>().in("id", ids));
+                    allUsers = userMapper.selectList(new QueryWrapper<User>().select("id, name").eq("company_id", company.getId()));
+                    allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
+                } else {
+                    allUsers = userMapper.selectList(new QueryWrapper<User>().select("id, name").eq("company_id", company.getId()));
+                    allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
+                    List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", company.getId()));
+                    //ids是来自不同人不同日期的报告id
+                    List<Report> updateReportList = new ArrayList<Report>();
+                    for (Integer rid : ids) {
+                        String creatorId = allReports.stream().filter(a->a.getId().equals(rid)).findFirst().get().getCreatorId();
+                        User auditTargetUser = allUsers.stream().filter(a->a.getId().equals(creatorId)).findFirst().get();
+                        List<AuditWorkflowTimeSetting> deptSettings = settings.stream().filter(s->s.getDeptId().equals(auditTargetUser.getDepartmentId())).collect(Collectors.toList());
+                        Report curReport = new Report().setId(rid);
+                        if (deptSettings.size() == 0) {
+                            //直接进行项目经理审核
+                            curReport.setState(1).setProjectAuditTime(now);
                         } else {
-                            if (item.getIsDeptAudit() == 1) {
-                                //当前是部门审核,获取审核部门id
-                                Integer auditDeptid = item.getAuditDeptid();
-                                for (int m=0;m<deptSettings.size(); m++) {
-                                    if (auditDeptid.equals(deptSettings.get(m).getAuditDeptId()) && m < deptSettings.size() -1) {
-                                        AuditWorkflowTimeSetting nextNode = deptSettings.get(m + 1);
-                                        curReport.setIsDeptAudit(nextNode.getIsDeptAudit());
-                                        if (curReport.getIsDeptAudit() == 1) {
-                                            curReport.setAuditDeptid(nextNode.getAuditDeptId());
-                                            Optional<Department> first = allDepts.stream()
-                                                    .filter(ad -> ad.getDepartmentId().equals(nextNode.getAuditDeptId())).findFirst();
-                                            if (!first.isPresent()) {
-
-                                                System.out.println(item.getId()+"下个节点找不到: "+nextNode.getAuditDeptId()+", "+nextNode.getAuditDeptName());
-
-                                            }
-                                            String managerId = first.get().getManagerId();
-                                            curReport.setAuditDeptManagerid(managerId);
-                                        }
-                                        curReport.setIsFinalAudit(nextNode.getIsFinal());
-                                        break;
-                                    }
+                            //按流程走, 取到当前报告的数据
+                            Report item = allReports.stream().filter(a->a.getId().equals(rid)).findFirst().get();
+                            if (item.getIsFinalAudit() == 1) {
+                                //最终审核了,审核通过
+                                if (item.getIsDeptAudit() == 1) {
+                                    //如果最终是部门审核,直接通过
+                                    //如果最终是项目审核
+                                    curReport.setState(1).setProjectAuditTime(now);
+                                } else {
+                                    //如果最终是项目审核,流程中的项目审核字段也要更新: state为最终审核状态,projectAuditState为阶段性的项目审核状态
+                                    curReport.setState(1).setProjectAuditState(1).setProjectAuditTime(now);
                                 }
                             } else {
-                                //当前的先审核通过
-                                curReport.setProjectAuditState(1);
-//                                reportMapper.update(new Report().setProjectAuditState(1),
-//                                        new QueryWrapper<Report>().in("id", ids));
-                                //项目审核的情况下,需要判断是否该员工的所有项目都审核通过了
-                                //只看同一天的
-                                Report reportItem = allReports.stream().filter(a->a.getId().equals(rid)).findFirst().get();
-                                List<Report> sameUserSameDayOtherReports = reportMapper.selectList(new QueryWrapper<Report>()
-                                                    .eq("create_date", reportItem.getCreateDate())
-                                                    .eq("creator_id", reportItem.getCreatorId())
-                                                    .notIn("id", ids));
-                                long pendingNum = sameUserSameDayOtherReports.stream().filter(s->s.getProjectAuditState() == 0).count();
-                                if (pendingNum == 0) {
-                                    System.out.println("没有其他等待的项目了,继续更新到下个流程");
-                                    //没有其他待审核的项目了,流程往下走
-                                    Report upR = new Report();
+                                if (item.getIsDeptAudit() == 1) {
+                                    //当前是部门审核,获取审核部门id
+                                    Integer auditDeptid = item.getAuditDeptid();
                                     for (int m=0;m<deptSettings.size(); m++) {
-                                        if (deptSettings.get(m).getIsDeptAudit()== 0) {//找到项目审核的那个节点
+                                        if (auditDeptid.equals(deptSettings.get(m).getAuditDeptId()) && m < deptSettings.size() -1) {
                                             AuditWorkflowTimeSetting nextNode = deptSettings.get(m + 1);
                                             curReport.setIsDeptAudit(nextNode.getIsDeptAudit());
                                             if (curReport.getIsDeptAudit() == 1) {
                                                 curReport.setAuditDeptid(nextNode.getAuditDeptId());
-                                                curReport.setAuditDeptManagerid(allDepts.stream()
-                                                        .filter(ad->ad.getDepartmentId().equals(nextNode.getAuditDeptId())).findFirst().get().getManagerId());
+                                                Optional<Department> first = allDepts.stream()
+                                                        .filter(ad -> ad.getDepartmentId().equals(nextNode.getAuditDeptId())).findFirst();
+                                                if (!first.isPresent()) {
+
+                                                    System.out.println(item.getId()+"下个节点找不到: "+nextNode.getAuditDeptId()+", "+nextNode.getAuditDeptName());
+
+                                                }
+                                                String managerId = first.get().getManagerId();
+                                                curReport.setAuditDeptManagerid(managerId);
                                             }
                                             curReport.setIsFinalAudit(nextNode.getIsFinal());
-                                            upR = curReport;
                                             break;
                                         }
                                     }
+                                } else {
+                                    //当前的先审核通过
+                                    curReport.setProjectAuditState(1);
+//                                reportMapper.update(new Report().setProjectAuditState(1),
+//                                        new QueryWrapper<Report>().in("id", ids));
+                                    //项目审核的情况下,需要判断是否该员工的所有项目都审核通过了
+                                    //只看同一天的
+                                    Report reportItem = allReports.stream().filter(a->a.getId().equals(rid)).findFirst().get();
+                                    List<Report> sameUserSameDayOtherReports = reportMapper.selectList(new QueryWrapper<Report>()
+                                            .eq("create_date", reportItem.getCreateDate())
+                                            .eq("creator_id", reportItem.getCreatorId())
+                                            .notIn("id", ids));
+                                    long pendingNum = sameUserSameDayOtherReports.stream().filter(s->s.getProjectAuditState() == 0).count();
+                                    if (pendingNum == 0) {
+                                        System.out.println("没有其他等待的项目了,继续更新到下个流程");
+                                        //没有其他待审核的项目了,流程往下走
+                                        Report upR = new Report();
+                                        for (int m=0;m<deptSettings.size(); m++) {
+                                            if (deptSettings.get(m).getIsDeptAudit()== 0) {//找到项目审核的那个节点
+                                                AuditWorkflowTimeSetting nextNode = deptSettings.get(m + 1);
+                                                curReport.setIsDeptAudit(nextNode.getIsDeptAudit());
+                                                if (curReport.getIsDeptAudit() == 1) {
+                                                    curReport.setAuditDeptid(nextNode.getAuditDeptId());
+                                                    curReport.setAuditDeptManagerid(allDepts.stream()
+                                                            .filter(ad->ad.getDepartmentId().equals(nextNode.getAuditDeptId())).findFirst().get().getManagerId());
+                                                }
+                                                curReport.setIsFinalAudit(nextNode.getIsFinal());
+                                                upR = curReport;
+                                                break;
+                                            }
+                                        }
 
-                                    //判断下一个审核节点(部门审核)的审核人和当前审核的是不是同一个人,如果是的,则可直接进入下一步审核或者结束
-                                    if (upR.getAuditDeptManagerid() != null && upR.getAuditDeptManagerid().equals(token)) {
-                                        if (upR.getIsFinalAudit() == 1) {
-                                            //最终审核了
-                                            upR.setState(1).setProjectAuditTime(LocalDateTime.now());
-                                            //可能存在当天的其他已经通过项目负责人审核的数据,也一起更新到审核通过
-                                            for (Report r : sameUserSameDayOtherReports) {
-                                                Integer oid = r.getId();
-                                                //检查是否已经添加过了
-                                                boolean hasAdded = false;
-                                                for (int m = 0; m<updateReportList.size(); m++) {
-                                                    if (updateReportList.get(m).getId().equals(oid)) {
-                                                        hasAdded = true;
-                                                        break;
+                                        //判断下一个审核节点(部门审核)的审核人和当前审核的是不是同一个人,如果是的,则可直接进入下一步审核或者结束
+                                        if (upR.getAuditDeptManagerid() != null && upR.getAuditDeptManagerid().equals(token)) {
+                                            if (upR.getIsFinalAudit() == 1) {
+                                                //最终审核了
+                                                upR.setState(1).setProjectAuditTime(LocalDateTime.now());
+                                                //可能存在当天的其他已经通过项目负责人审核的数据,也一起更新到审核通过
+                                                for (Report r : sameUserSameDayOtherReports) {
+                                                    Integer oid = r.getId();
+                                                    //检查是否已经添加过了
+                                                    boolean hasAdded = false;
+                                                    for (int m = 0; m<updateReportList.size(); m++) {
+                                                        if (updateReportList.get(m).getId().equals(oid)) {
+                                                            hasAdded = true;
+                                                            break;
+                                                        }
+                                                    }
+                                                    if (!hasAdded) {
+                                                        Report addReport = new Report();
+                                                        addReport.setId(oid);
+                                                        addReport.setIsDeptAudit(upR.getIsDeptAudit());
+                                                        addReport.setAuditDeptid(upR.getAuditDeptid());
+                                                        addReport.setAuditDeptManagerid(upR.getAuditDeptManagerid());
+                                                        addReport.setIsFinalAudit(upR.getIsFinalAudit());
+                                                        addReport.setState(1).setProjectAuditTime(LocalDateTime.now());
+                                                        updateReportList.add(addReport);
                                                     }
                                                 }
-                                                if (!hasAdded) {
-                                                    Report addReport = new Report();
-                                                    addReport.setId(oid);
-                                                    addReport.setIsDeptAudit(upR.getIsDeptAudit());
-                                                    addReport.setAuditDeptid(upR.getAuditDeptid());
-                                                    addReport.setAuditDeptManagerid(upR.getAuditDeptManagerid());
-                                                    addReport.setIsFinalAudit(upR.getIsFinalAudit());
-                                                    addReport.setState(1).setProjectAuditTime(LocalDateTime.now());
-                                                    updateReportList.add(addReport);
+                                            } 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;
+                                                    }
                                                 }
-                                            }
-                                        } 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());
+                                                //可能存在当天的其他已经通过项目负责人审核的数据,也一起更新到下个流程节点
+                                                for (Report r : sameUserSameDayOtherReports) {
+                                                    Integer oid = r.getId();
+                                                    //检查是否已经添加过了
+                                                    boolean hasAdded = false;
+                                                    for (int m = 0; m<updateReportList.size(); m++) {
+                                                        if (updateReportList.get(m).getId().equals(oid)) {
+                                                            hasAdded = true;
+                                                            break;
+                                                        }
+                                                    }
+                                                    if (!hasAdded) {
+                                                        Report addReport = new Report();
+                                                        addReport.setId(oid);
+                                                        addReport.setIsDeptAudit(upR.getIsDeptAudit());
+                                                        addReport.setAuditDeptid(upR.getAuditDeptid());
+                                                        addReport.setAuditDeptManagerid(upR.getAuditDeptManagerid());
+                                                        addReport.setIsFinalAudit(upR.getIsFinalAudit());
+                                                        updateReportList.add(addReport);
                                                     }
-                                                    upR.setIsFinalAudit(nextNode.getIsFinal());
-                                                    break;
                                                 }
                                             }
+                                        } else {
                                             //可能存在当天的其他已经通过项目负责人审核的数据,也一起更新到下个流程节点
                                             for (Report r : sameUserSameDayOtherReports) {
                                                 Integer oid = r.getId();
@@ -1969,37 +2025,15 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                                 }
                                             }
                                         }
-                                    } else {
-                                        //可能存在当天的其他已经通过项目负责人审核的数据,也一起更新到下个流程节点
-                                        for (Report r : sameUserSameDayOtherReports) {
-                                            Integer oid = r.getId();
-                                            //检查是否已经添加过了
-                                            boolean hasAdded = false;
-                                            for (int m = 0; m<updateReportList.size(); m++) {
-                                                if (updateReportList.get(m).getId().equals(oid)) {
-                                                    hasAdded = true;
-                                                    break;
-                                                }
-                                            }
-                                            if (!hasAdded) {
-                                                Report addReport = new Report();
-                                                addReport.setId(oid);
-                                                addReport.setIsDeptAudit(upR.getIsDeptAudit());
-                                                addReport.setAuditDeptid(upR.getAuditDeptid());
-                                                addReport.setAuditDeptManagerid(upR.getAuditDeptManagerid());
-                                                addReport.setIsFinalAudit(upR.getIsFinalAudit());
-                                                updateReportList.add(addReport);
-                                            }
-                                        }
                                     }
                                 }
                             }
                         }
+                        updateReportList.add(curReport);
+                    }
+                    if (updateReportList.size() > 0) {
+                        reportService.updateBatchById(updateReportList);
                     }
-                    updateReportList.add(curReport);
-                }
-                if (updateReportList.size() > 0) {
-                    reportService.updateBatchById(updateReportList);
                 }
             }
             List<Integer> collect = allReports.stream().map(ar -> ar.getProjectId()).distinct().collect(Collectors.toList());
@@ -2023,6 +2057,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             for (Report r : allReports) {
                 LocalDate date = r.getCreateDate();
                 String creatorId = r.getCreatorId();
+                System.out.println("creatorId========="+creatorId);
                 if (!membList.stream().anyMatch(m->m.getCreateDate().isEqual(date) && m.getUserId().equals(creatorId))) {
                     //没有的话,存进去
                     ReportAlogMembdate membdate = new ReportAlogMembdate();
@@ -2040,9 +2075,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             if (membList.size() > 0) {
                 reportAlogMembdateService.saveBatch(membList);
             }
-//            //直接进行项目经理审核
-//            reportMapper.update(new Report().setState(1),
-//                    new QueryWrapper<Report>().in("id", ids));
         }
         return httpRespMsg;
     }
@@ -2100,6 +2132,22 @@ 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)));
+        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<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
         List<Integer> collect = reportList.stream().map(rl -> rl.getProjectId()).distinct().collect(Collectors.toList());
@@ -2116,7 +2164,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         reportAuditLogMapper.insert(log);
         List<Report> allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
         saveDenyReportLog(allReports, user.getId(), user.getName(), null);
-        List<User> allUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()));
+        List<User> allUsers = userMapper.selectList(new QueryWrapper<User>().select("id, name").eq("company_id", company.getId()));
         //当前所有员工的日期
         List<ReportAlogMembdate> membList = new ArrayList<>();
         for (Report r : allReports) {
@@ -3636,20 +3684,45 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             if (list.size() == 0) {
                 httpRespMsg.setError("日报已不存在");
                 return httpRespMsg;
-            } else if (list.get(0).getState() != 1) {
-                //只有已通过的历史记录才能撤销
-                httpRespMsg.setError("只有已通过的才可撤回审核");
-                return httpRespMsg;
+            } else  {
+                if (list.get(0).getState() == 3) {
+                    //只有已通过的历史记录才能撤销
+                    httpRespMsg.setError("操作错误,日报状态不对:"+list.get(0).getState());
+                    return httpRespMsg;
+                } else if (list.get(0).getState() == 2) {
+                    //只有已通过的历史记录才能撤销
+                    httpRespMsg.setError("该日报已被撤销,无法重复操作");
+                    return httpRespMsg;
+                }
             }
             oneReport = list.get(0);
             //直接进行项目经理审核驳回
             reportMapper.update(new Report().setState(2)
                             .setRejectReason(reason).setRejectUserid(user.getId()).setRejectUsername(user.getName()),
                     eq);
+
+            if (timeTypeMapper.selectById(company.getId()).getReportAuditType() == 2) {
+                List<Report> rList = list;
+                //退回任务分组审核状态
+                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);
+            }
+
             //修改审核记录的状态
             log.setState(3);
             reportAlogMembdateMapper.updateById(log);
 
+            saveDenyReportLog(list, user.getId(), user.getName(), reason);
+
             List<Integer> collect = list.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(", ", "[", "]"));

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -57,6 +57,10 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
     @Value(value = "${upload.path}")
     private String path;
 
+
+    @Value(value = "${configEnv.isDev}")
+    private boolean isDev;
+
     @Autowired
     RestTemplate restTemplate;
 
@@ -73,6 +77,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
     @Override
     public void sendWXCorpMsg(WxCorpInfo corpInfo, String corpUserid, String msg) {
         try {
+            if (isDev) return;
             log.info("发送企业微信消息==="+corpUserid);
             System.out.println("发送企业微信消息==="+corpUserid);
             String accessToken = getCorpAccessToken(corpInfo);
@@ -115,6 +120,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
     @Override
     public void sendWXCorpTemplateMsg(WxCorpInfo corpInfo, String corpUserid, JSONObject msg) {
         try {
+            if (isDev) return;
             log.info("发送企业微信模板消息==="+corpUserid);
             System.out.println("发送企业微信模板消息==="+corpUserid);
             String accessToken = getCorpAccessToken(corpInfo);

+ 22 - 15
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -2841,7 +2841,6 @@
                         });
                     });
                 //检查当前的项目是否需要获取分组的负责人
-                var curProject = this.projectList.filter(p=>p.id == domain.projectId)[0];
                 if (this.user.timeType.reportAuditType >= 1) {
                     this.http.post("/task-group/getGroupIncharger", {groupId: domain.groupId},
                         res => {
@@ -2851,6 +2850,9 @@
                                 if (res.data.length==1) {
                                     domain.projectAuditorId = domain.auditUserList[0].auditorId;
                                     domain.projectAuditorName = domain.auditUserList[0].auditorName;
+                                } else if (res.data.length==0) {
+                                    domain.projectAuditorId = null;
+                                    domain.projectAuditorName = null;
                                 }
                                 this.$forceUpdate();
                             }
@@ -2864,8 +2866,6 @@
                 }
             },
 
-
-
             getProjectProfessions(domain, index) {
                 this.http.post("/project-profession/getMyProfession", {projectId: domain.projectId},
                     res => {
@@ -5090,19 +5090,26 @@
                                         message: "请指定项目审核人",
                                         type: "error"
                                     });
-                                } else if (this.workForm.domains[i].taskGroups.length == 0) {
-                                    this.$message({
-                                        message: "您在["+this.workForm.domains[i].projectName+"]项目上尚无参与的任务分组",
-                                        type: "error"
-                                    });
-                                } else if (this.workForm.domains[i].taskGroups.length > 0 && !this.workForm.domains[i].groupId) {
-                                    // console.log(this.workForm.domains[i]);
-                                    this.$message({
-                                        message: "请选择["+this.workForm.domains[i].projectName+"]项目的任务分组",
-                                        type: "error"
-                                    });
+                                } else {
+                                    //分组负责人先审核, 确定是选择了任务分组
+                                    if (this.workForm.domains[i].taskGroups.length == 0) {
+                                        this.$message({
+                                            message: "您在["+this.workForm.domains[i].projectName+"]项目上尚无参与的任务分组",
+                                            type: "error"
+                                        });
+                                    } else if (!this.workForm.domains[i].groupId) {
+                                        // console.log(this.workForm.domains[i]);
+                                        this.$message({
+                                            message: "请选择["+this.workForm.domains[i].projectName+"]项目的任务分组",
+                                            type: "error"
+                                        });
+                                    } else {
+                                        this.$message({
+                                            message: "请设置["+this.workForm.domains[i].projectName+"]项目的分组负责人",
+                                            type: "error"
+                                        });
+                                    }
                                 }
-                                
                                 return;
                             }
                         }

+ 12 - 8
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -51,7 +51,7 @@
                             @cancel="item.showPickerSubProject = false;$forceUpdate();" />
                     </van-popup>
                     <!--任务分组 -->
-                    <van-field  readonly  name="groupId" v-if="item.taskGpIncharge == 1 || (user.company.packageProject==1&&item.taskGroups != null && item.taskGroups.length > 0)" clickable 
+                    <van-field  readonly  name="groupId" v-if="user.timeType.reportAuditType >= 1 || (user.company.packageProject==1&&item.taskGroups != null && item.taskGroups.length > 0)" clickable 
                         :value="item.groupName" label="任务分组" placeholder="请选择任务分组" 
                     @click="clickPickTaskGroup(index, item)" />
                     <van-popup v-model="item.showPickerTaskGroup" position="bottom">
@@ -519,10 +519,9 @@
                 //获取项目审核人
                 console.log(domainItem.projectId,this.project);
                 var curProject = this.project.filter(p=>p.id == domainItem.projectId)[0];
-                if (curProject && curProject.taskGpIncharge == 0) {
+                if (curProject && this.user.timeType.reportAuditType == 0) {
                     this.getProjectAuditorList(domainItem, index);
                 }
-                domainItem.taskGpIncharge = curProject.taskGpIncharge;
             },
             //获取项目下的任务分组
             getTaskGroups(domainItem, index) {
@@ -1137,7 +1136,7 @@
                 
                 //检查当前的项目是否需要获取分组的负责人
                 var curProject = this.project.filter(p=>p.id == this.form.domains[this.clickIndex].projectId)[0];
-                if (curProject && curProject.taskGpIncharge == 1) {
+                if (curProject && this.user.timeType.reportAuditType >= 1) {
                     this.$axios.post("/task-group/getGroupIncharger", {groupId: domainItem.groupId})
                     .then(res => {
                         if(res.code == "ok") {
@@ -1529,12 +1528,17 @@
                     if (this.form.domains[i].projectAuditorId) {
                         formData.append("projectAuditorId", this.form.domains[i].projectAuditorId);
                     } else {
-                        if (this.form.domains[i].taskGpIncharge == 0) {
+                        if (this.user.timeType.reportAuditType == 0) {
                             this.$toast.fail("请指定["+this.form.domains[i].projectName+']项目的审核人');
-                        } else if (this.form.domains[i].taskGroups.length == 0) {
-                            this.$toast.fail("您在["+this.form.domains[i].projectName+"]项目上尚无参与的任务分组");
+                        } else {
+                            if (this.form.domains[i].taskGroups.length == 0) {
+                                this.$toast.fail("您在["+this.form.domains[i].projectName+"]项目上尚无参与的任务分组");
+                            } else if (!this.form.domains[i].groupId) {
+                                this.$toast.fail("请选择["+this.form.domains[i].projectName+"]项目的任务分组");
+                            } else {
+                                this.$toast.fail("请先设置["+this.form.domains[i].projectName+']-['+this.form.domains[i].groupName+']的分组负责人');
+                            }
                         }
-                        
                         return;
                     }
                 }

+ 2 - 3
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit.vue

@@ -569,10 +569,9 @@
                 domainItem.auditUserList = null;
                 //获取项目审核人
                 var curProject = this.project.filter(p=>p.id == domainItem.projectId)[0];
-                if (curProject.taskGpIncharge == 0) {
+                if (this.user.timeType.reportAuditType == 0) {
                     this.getProjectAuditorList(domainItem, index);
                 }
-                domainItem.taskGpIncharge = curProject.taskGpIncharge;
             },
             //获取项目下的任务分组
             getTaskGroups(domainItem, index) {
@@ -1149,7 +1148,7 @@
                 
                 //检查当前的项目是否需要获取分组的负责人
                 var curProject = this.project.filter(p=>p.id == this.currentForm.domains[this.clickIndex].projectId)[0];
-                if (curProject.taskGpIncharge == 1) {
+                if (this.user.timeType.reportAuditType >= 1) {
                     this.$axios.post("/task-group/getGroupIncharger", {groupId: domainItem.groupId})
                     .then(res => {
                         if(res.code == "ok") {