Просмотр исходного кода

增加部门负责人审核模式

yurk 2 лет назад
Родитель
Сommit
6951937e56

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

@@ -310,16 +310,6 @@ public class ReportController {
         //检查项目是否可填报; 修改为不校验项目,前端加载的项目已经过滤掉了完成和撤销的
         List<Integer> integers = Arrays.asList(projectId);
         List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", integers));
-        List<ProjectCategory> categoryList = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().eq("company_id",company.getId()));
-        List<Integer> buIds = projectList.stream().map(pl -> {
-            if (!StringUtils.isEmpty(pl.getBuId())) {
-                String[] split = pl.getBuId().split(",");
-                return Integer.parseInt(split[split.length - 1]);
-            }
-            return null;
-        }).collect(Collectors.toList());
-        buIds.add(-1);
-        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().in("department_id", buIds));
         TimeType comTimeType = timeTypeMapper.selectById(user.getCompanyId());
 
 
@@ -876,7 +866,7 @@ public class ReportController {
                     double sum = reportList.stream().filter(rl -> rl.getCreateDate().equals(report.getCreateDate()) && rl.getCreatorId().equals(report.getCreatorId())).mapToDouble(Report::getWorkingTime).sum();
                     BigDecimal bigDecimal=new BigDecimal(sum);
                     bigDecimal=bigDecimal.subtract(new BigDecimal(comTimeType.getAllday()));
-                    if(report.getOvertimeHours()>bigDecimal.doubleValue()){
+                    if(report.getOvertimeHours()>0&&report.getOvertimeHours()>bigDecimal.doubleValue()){
                         httpRespMsg.setError("加班时长不得超过总工作时长-正常工作时长");
                         return httpRespMsg;
                     }
@@ -963,7 +953,18 @@ public class ReportController {
             }
 
         }
+        //项目所属bu审核
         if(comTimeType.getReportAuditType()==4){
+            List<ProjectCategory> categoryList = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().eq("company_id",company.getId()));
+            List<Integer> buIds = projectList.stream().map(pl -> {
+                if (!StringUtils.isEmpty(pl.getBuId())) {
+                    String[] split = pl.getBuId().split(",");
+                    return Integer.parseInt(split[split.length - 1]);
+                }
+                return null;
+            }).collect(Collectors.toList());
+            buIds.add(-1);
+            List<Department> buDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().in("department_id", buIds));
             for (Report report : reportList) {
                 Optional<Project> project = projectList.stream().filter(pl -> pl.getId().equals(report.getProjectId())).findFirst();
                 Optional<ProjectCategory> category = categoryList.stream().filter(cl -> cl.getId().equals(project.get().getCategory())).findFirst();
@@ -978,7 +979,7 @@ public class ReportController {
                                 return msg;
                             }
                             String[] split = project.get().getBuId().split(",");
-                            Optional<Department> department = departmentList.stream().filter(dl -> dl.getDepartmentId().equals(Integer.parseInt(split[split.length - 1]))).findFirst();
+                            Optional<Department> department = buDepartmentList.stream().filter(dl -> dl.getDepartmentId().equals(Integer.parseInt(split[split.length - 1]))).findFirst();
                             report.setAuditDeptid(department.get().getDepartmentId());
                             report.setAuditDeptManagerid(department.get().getManagerId());
                             report.setIsDeptAudit(1);
@@ -990,6 +991,29 @@ public class ReportController {
             }
         }
 
+        if(comTimeType.getReportAuditType()==5){
+            List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",user.getCompanyId()));
+            for (Report report : reportList) {
+                report.setDepartmentAuditState(0);
+                Optional<Department> first = departmentList.stream().filter(dl -> dl.getDepartmentId().equals(report.getDeptId())).findFirst();
+                if(first.isPresent()){
+                    if(StringUtils.isEmpty(first.get().getManagerId())){
+                        HttpRespMsg httpRespMsg=new HttpRespMsg();
+                        httpRespMsg.setError("当前所在部门["+first.get().getDepartmentName()+"]不存在负责人,请联系管理员设置");
+                        return httpRespMsg;
+                    }
+                    report.setAuditDeptid(first.get().getDepartmentId());
+                    report.setProjectAuditorId(null);
+                    report.setProjectAuditState(0);
+                    report.setAuditDeptManagerid(first.get().getManagerId());
+                    report.setIsDeptAudit(1);
+                    if(report.getCreatorId().equals(first.get().getManagerId())){
+                        report.setState(0);
+                    }
+                }
+            }
+        }
+
 
 
         //只有项目管理专业版才要检查成本预算

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java

@@ -303,7 +303,7 @@ public class TimeType extends Model<TimeType> {
     private Integer mainProjectState;
 
     /**
-     * 日报的审核类型, 0-项目审核人审核,1-分组负责人审核,2-先分组负责人审核再项目负责人(PM)审核;3-员工自由选择审批人 4-项目所属BU审核
+     * 日报的审核类型, 0-项目审核人审核,1-分组负责人审核,2-先分组负责人审核再项目负责人(PM)审核;3-员工自由选择审批人 4-项目所属BU审核 5-部门审核人审核
      */
     @TableField("report_audit_type")
     private Integer reportAuditType;

+ 25 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -1656,6 +1656,24 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 if (updateReportList.size() > 0) {
                     updateBatchById(updateReportList);
                 }
+            }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));
+                for (Report r : reportList) {
+                    //部门负责人审核
+                    if(user.getId().equals(r.getAuditDeptManagerid())){
+                        r.setState(1);
+                        r.setDepartmentAuditState(1);
+                    }else {
+                        httpRespMsg.setError("非当前日报所属人员所在部门主要负责人");
+                        return httpRespMsg;
+                    }
+                    updateReportList.add(r);
+                }
+                if (updateReportList.size() > 0) {
+                    updateBatchById(updateReportList);
+                }
             } else {
                 //之前的流程逻辑,综合了一层项目审核,或者一层任务分组审核。 可叠加部门审批流
                 List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
@@ -2022,11 +2040,18 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("Token"));
         Company company = companyMapper.selectById(user.getCompanyId());
+        TimeType timeType = timeTypeMapper.selectById(company.getId());
         final List<Long> ids = ListUtil.convertIdsArrayToList(reportIds);
         if (reason == null) {
             reason = "-";
         }
         Report oneReport = reportMapper.selectById(ids.get(0));
+        if(timeType.getReportAuditType()==5){
+            if(!user.getId().equals(oneReport.getAuditDeptManagerid())){
+                httpRespMsg.setError("非当前日报所属人员所在部门主要负责人");
+                return httpRespMsg;
+            }
+        }
         int oldState = oneReport.getState();
         if (company.getPackageEngineering() == 1) {
             //检查是否有专业进度待审核

+ 1 - 0
fhKeeper/formulahousekeeper/octopus/src/views/customer/list.vue

@@ -226,6 +226,7 @@
                             <el-option :value="2" label="先分组审核再PM审核"></el-option>
                             <el-option :value="3" label="员工自由选择审批人"></el-option>
                             <el-option :value="4" label="项目所属BU审核"></el-option>
+                            <el-option :value="5" label="所属部门负责人审核"></el-option>
                         </el-select>
                     </el-form-item>
                     <el-form-item>

+ 1 - 1
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/TimeType.java

@@ -291,7 +291,7 @@ public class TimeType extends Model<TimeType> {
     private Integer mainProjectState;
 
     /**
-     * 日报的审核类型, 0-项目审核人审核,1-分组负责人审核,2-先分组负责人审核再项目负责人(PM)审核;3-员工自由选择审批人;4-项目所属BU审核
+     * 日报的审核类型, 0-项目审核人审核,1-分组负责人审核,2-先分组负责人审核再项目负责人(PM)审核;3-员工自由选择审批人;4-项目所属BU审核;5-部门审核人审核
      */
     @TableField("report_audit_type")
     private Integer reportAuditType;

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

@@ -487,7 +487,7 @@
                                 <el-option v-for="item in domain.stages" :key="item.id" :label="item.stagesName" :value="item.stagesName"></el-option>
                             </el-select>
                         </el-form-item>
-                        <el-form-item :label="user.companyId==781? $t('other.reviewer') : $t('other.projectAuditor')" v-if="user.timeType.reportAuditType != 3">
+                        <el-form-item :label="user.companyId==781? $t('other.reviewer') : $t('other.projectAuditor')" v-if="user.timeType.reportAuditType != 3 && user.timeType.reportAuditType != 5">
                             
                             <el-select v-model="domain.projectAuditorId" :disabled="!domain.canEdit" @change="$forceUpdate()" v-if="user.userNameNeedTranslate != '1'" style="width:200px;">
                                 <el-option v-for="item in domain.auditUserList" :label="item.auditorName" :value="item.auditorId" :key="item.id">