Jelajahi Sumber

部门负责人审核的模式下,支持直属领导审核的通过,驳回,批量操作

seyason 2 tahun lalu
induk
melakukan
dc83a8f138

+ 53 - 10
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -1338,6 +1338,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             httpRespMsg.data = nameList;
         } catch (NullPointerException e) {
             //httpRespMsg.setError("验证失败");
+            e.printStackTrace();
             httpRespMsg.setError(MessageUtils.message("access.verificationError"));
             return httpRespMsg;
         }
@@ -1708,18 +1709,24 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
             }else if(timeType.getReportAuditType() == 5){
                 List<Report> updateReportList = new ArrayList<>();
-                //项目所属BU审核
-                List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, creator_id, create_date, project_id,audit_dept_managerid,department_audit_state").in("id", ids));
+                //人员所属部门负责人审核或者直属领导审核
+                boolean hasAuditAllPri = sysFunctionService.hasPriviledge(user.getRoleId(), "审核全员日报");
+                List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, creator_id, create_date, project_id,audit_dept_managerid,department_audit_state, project_auditor_id").in("id", ids));
                 for (Report r : reportList) {
-                    //部门负责人审核
-                    if(user.getId().equals(r.getAuditDeptManagerid())){
-                        r.setState(1);
-                        r.setDepartmentAuditState(1);
+                    //直属领导审核或者部门负责人审核
+                    Report newReport = new Report();
+                    newReport.setId(r.getId());
+                    if(hasAuditAllPri || ((r.getProjectAuditorId() != null &&  user.getId().equals(r.getProjectAuditorId()))
+                        || (r.getProjectAuditorId() == null && user.getId().equals(r.getAuditDeptManagerid())))){
+                        newReport.setState(1);
+                        newReport.setDepartmentAuditState(1);
+                        newReport.setProjectAuditState(1);
+                        newReport.setProjectAuditTime(LocalDateTime.now());
                     }else {
-                        httpRespMsg.setError("非当前日报所属人员所在部门主要负责人");
+                        httpRespMsg.setError("您无权审核该日报");
                         return httpRespMsg;
                     }
-                    updateReportList.add(r);
+                    updateReportList.add(newReport);
                 }
                 if (updateReportList.size() > 0) {
                     updateBatchById(updateReportList);
@@ -2120,10 +2127,16 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         }
         Report oneReport = reportMapper.selectById(ids.get(0));
         if(timeType.getReportAuditType()==5){
-            //日报审核类型为5时,只有日报所属人员所在部门主要负责人或者有审核全公司日报的权限才能审核
+            //日报审核类型为5时,只有日报所属人员所在部门主要负责人或者有审核全公司日报的权限才能审核,或者填报人的直属审核人
             Integer roleId = user.getRoleId();
             boolean canAuditAllReport = sysFunctionService.hasPriviledge(roleId, "审核全员日报");
-            if(!user.getId().equals(oneReport.getAuditDeptManagerid()) && !canAuditAllReport){
+            boolean isDirectAudit = false;
+            String reporterSuperiorId = userMapper.selectById(oneReport.getCreatorId()).getSuperiorId();
+            if(reporterSuperiorId!=null && reporterSuperiorId.equals(user.getId().toString())){
+                isDirectAudit = true;
+            }
+
+            if(!(isDirectAudit  || (reporterSuperiorId == null && user.getId().equals(oneReport.getAuditDeptManagerid())) || canAuditAllReport)){
                 httpRespMsg.setError("您无权操作权限");
                 return httpRespMsg;
             }
@@ -2763,6 +2776,36 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 if (updateReportList.size() > 0) {
                     updateBatchById(updateReportList);
                 }
+            } else if(timeType.getReportAuditType() == 5){
+                allUsers = userMapper.selectList(new QueryWrapper<User>().select("id, name, department_id").eq("company_id", company.getId()));
+                List<Report> updateReportList = new ArrayList<>();
+                //人员所属部门负责人审核或者直属领导审核
+                boolean hasAuditAllPri = sysFunctionService.hasPriviledge(user.getRoleId(), "审核全员日报");
+                List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, creator_id, create_date, project_id,audit_dept_managerid,department_audit_state, project_auditor_id").in("id", ids));
+                allReports = reportList;
+                for (Report r : reportList) {
+                    //直属领导审核或者部门负责人审核
+                    Report newReport = new Report();
+                    newReport.setId(r.getId());
+                    if(hasAuditAllPri || ((r.getProjectAuditorId() != null &&  user.getId().equals(r.getProjectAuditorId()))
+                            || (r.getProjectAuditorId() == null && user.getId().equals(r.getAuditDeptManagerid())))){
+                        r.setState(1);
+                        r.setDepartmentAuditState(1);
+                        r.setProjectAuditState(1);
+                        r.setProjectAuditTime(LocalDateTime.now());
+                        newReport.setState(1);
+                        newReport.setDepartmentAuditState(1);
+                        newReport.setProjectAuditState(1);
+                        newReport.setProjectAuditTime(LocalDateTime.now());
+                    } else {
+                        httpRespMsg.setError("您无权审核该日报");
+                        return httpRespMsg;
+                    }
+                    updateReportList.add(newReport);
+                }
+                if (updateReportList.size() > 0) {
+                    updateBatchById(updateReportList);
+                }
             } else {
                 List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
                         new QueryWrapper<AuditWorkflowTimeSetting>().eq("company_id", company.getId())

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -433,7 +433,7 @@
         SELECT a.id, b.project_name AS project, a.working_time AS time, a.content, a.state, a.time_type as timeType, a.creator_id as creatorId, a.cost, a.report_time_type as reportTimeType, a.start_time as startTime,
         a.end_time as endTime, d.name as subProjectName,a.task_id as taskId, task.name as taskName,
         b.incharger_id as inchargerId,b.project_code as projectCode,
-        a.is_overtime as isOvertime,a.progress as progress,
+        a.is_overtime as isOvertime,a.progress as progress,audit_dept_managerid as auditDeptManagerid,audit_deptid as auditDeptid,
         a.department_audit_state as departmentAuditState, a.stage, a.pic_str as picStr, multi_worktime as multiWorktime
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,
         department.department_name as auditDeptName, a.is_dept_audit as isDeptAudit, a.project_audit_state as projectAuditState,task_group.name as groupName,a.group_id as groupId, a.custom_data as customData