Browse Source

导入审核支持按照正常模式审核

seyason 11 months ago
parent
commit
25291efae6

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

@@ -1061,11 +1061,11 @@ public class ReportController {
                                     .setSubProjectId(subProjectId[i])
                                     .setGroupId(groupId[i])
                                     .setReportTimeType(reportTimeType[i])
-                                    .setMultiWorktime(multiWorktime[i])
-                                    .setContent(content[i])
+                                    .setMultiWorktime(multiWorktime.length > 0?multiWorktime[i]:0)
+                                    .setContent(content.length > 0?content[i]:"-")
                                     .setDegreeId(degreeId.length > 0?degreeId[i]:null)
                                     .setCustomData(customData[i])
-                                    .setStage(stage[i])
+                                    .setStage(stage != null && stage.length>0?stage[i]:"-")
 //                                    .setState(auditWorkflowList.size() == 0?1:0)//代填的如果没有自定义审核流程就直接审核通过了
                                     .setCompanyId(user.getCompanyId())
                                     .setPicAdd(pics!=null?pics[i]:null)

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

@@ -17,7 +17,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2024-06-06
+ * @since 2024-06-22
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -584,6 +584,12 @@ public class TimeType extends Model<TimeType> {
     @TableField("alert_check_msg")
     private String alertCheckMsg;
 
+    /**
+     * 导入的日报,按照正常审批来处理,非单独设置的部门直属领导审核
+     */
+    @TableField("import_report_audit_normal")
+    private Integer importReportAuditNormal;
+
 
     @TableField(exist = false)
     private List<User> userList;
@@ -592,7 +598,6 @@ public class TimeType extends Model<TimeType> {
     @TableField(exist = false)
     private Integer saasSyncContact;
 
-
     @Override
     protected Serializable pkVal() {
         return this.companyId;

+ 65 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -5299,12 +5299,32 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             report.setContent(workContent);
                             report.setMultiWorktime(timeType.getMultiWorktime());
                             report.setFillUserid(user.getId());
-                            if (timeType.getNeedDeptAudit() == 0) {
-                                report.setState(1);//导入的直接算审核通过
+                            if (timeType.getImportReportAuditNormal() == 0) {
+                                //老的导入日报审核模式
+                                if (timeType.getNeedDeptAudit() == 0) {
+                                    report.setState(1);//导入的直接算审核通过
+                                } else {
+                                    report.setState(-1);//待部门上级审核员审核
+                                    report.setDepartmentAuditState(1);//部门已审核,到上层领导审核
+                                }
                             } else {
-                                report.setState(-1);//待部门上级审核员审核
-                                report.setDepartmentAuditState(1);//部门已审核,到上层领导审核
+                                report.setState(0);//待审核
+                                //目前仅支持项目审核人审核的模式,叠加审批流
+                                if (timeType.getReportAuditType() == 0) {
+                                    //设置日报审核人
+                                    List<ProjectAuditor> projectAuditors = projectAuditorMapper.selectList(new QueryWrapper<ProjectAuditor>().eq("project_id", project.getId()));
+                                    if (projectAuditors.size() > 0) {
+                                        report.setProjectAuditorId(projectAuditors.get(0).getAuditorId());
+                                    }
+
+                                    List<AuditWorkflowTimeSetting> auditWorkflowList
+                                            = auditWorkflowTimeSettingMapper.selectList(
+                                            new QueryWrapper<AuditWorkflowTimeSetting>().eq("dept_id", reportCreator.getDepartmentId()).orderByAsc("seq"));
+                                    List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", reportCreator.getCompanyId()));
+                                    setReportWorkflowAuditor(auditWorkflowList, allDeptList, report,timeType);
+                                }
                             }
+
                             report.setCreateDate(LocalDate.parse(reportDate, dtf));
                             report.setCost(reportCreator.getCost()==null?new BigDecimal(0) : reportCreator.getCost().multiply(new BigDecimal(time)));
                             reportList.add(report);
@@ -5317,9 +5337,15 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             }
 
             if (reportList.size() > 0) {
+                int shouldSkipPassData = 0;
+                if (timeType.getImportReportAuditNormal() == 1) {
+                    shouldSkipPassData = 1;
+                } else {
+                    shouldSkipPassData = timeType.getNeedDeptAudit();
+                }
                 //依赖于对是否需要部门审核的判断,如果不需要则认为导入的就是审核通过的,重新导入就直接覆盖之前的。
-                reportMapper.deleteUserSameDayReport(companyId, reportList, timeType.getNeedDeptAudit());
-                if (timeType.getNeedDeptAudit() == 1) {
+                reportMapper.deleteUserSameDayReport(companyId, reportList, shouldSkipPassData);
+                if (shouldSkipPassData == 1) {
                     //如果需要导入审核,则对审核通过的进行排除
                     List<Map> passReports = reportMapper.getSameDayPassReport(companyId, reportList);
                     StringBuilder sb = new StringBuilder();
@@ -5421,7 +5447,39 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         return msg;
     }
 
-
+    private void setReportWorkflowAuditor(List<AuditWorkflowTimeSetting> auditWorkflowList, List<Department> allDeptList, Report report, TimeType comTimeType) {
+        if (auditWorkflowList.size() == 0) {
+            //没有自定义审核流,默认的直接是项目负责人审核
+            report.setIsDeptAudit(0);
+            report.setIsFinalAudit(1);
+        } else {
+            //取第一个审核节点
+            AuditWorkflowTimeSetting firstNode = auditWorkflowList.get(0);
+            report.setIsFinalAudit(auditWorkflowList.size() > 1?0:1);
+            report.setIsDeptAudit(firstNode.getIsDeptAudit());
+            report.setAuditDeptid(firstNode.getAuditDeptId());
+            if (firstNode.getIsDeptAudit() == 1) {
+                Department curDept = allDeptList.stream()
+                        .filter(ad->ad.getDepartmentId().equals(firstNode.getAuditDeptId())).findFirst().get();
+                String curDeptManagerId = curDept.getManagerId();
+                //启用了本部门负责人的日报由上级部门主要负责人审核
+                if (comTimeType.getReportAuditFlowEnableSuperDeptAduit() == 1 && curDeptManagerId.equals(report.getCreatorId())) {
+                    //当前提交的人是这个部门的主要负责人,那么要取该部门的上一级部门的主要负责人来审核
+                    Integer parentDeptId = curDept.getSuperiorId();
+                    if (parentDeptId == null) {
+                        //没有上级部门,直接取当前部门的负责人
+                        report.setAuditDeptManagerid(curDeptManagerId);
+                    } else {
+//                        report.setAuditDeptid(parentDeptId);
+                        report.setAuditDeptManagerid(allDeptList.stream()
+                                .filter(ad->ad.getDepartmentId().equals(parentDeptId)).findFirst().get().getManagerId());
+                    }
+                } else {
+                    report.setAuditDeptManagerid(curDeptManagerId);
+                }
+            }
+        }
+    }
     private void fillDeptUser(List<DepartmentVO> list, List<HashMap> userList) {
         list.forEach(l->{
             List<HashMap> collect = userList.stream().filter(u -> u.get("departmentId").equals(l.getId())).collect(Collectors.toList());

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

@@ -389,7 +389,7 @@
             <foreach collection="deptIds" item="deptId" separator="," close=")" open="(" index="index">
                 #{deptId}
             </foreach>
-        or a.creator_id=#{viewerId})
+        or a.creator_id=#{viewUserId})
         </if>
         ORDER BY a.creator_id, a.create_date desc
     </select>

File diff suppressed because it is too large
+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml


+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue

@@ -440,7 +440,7 @@
             <span style="margin-left:10px;color:#999;">{{ $t('parametermandatory') }}</span>
         </div>
         <!-- 是否开启导入审核 -->
-        <div class="yanjiu">
+        <div class="yanjiu" v-if="timeType.importReportAuditNormal == 0">
             <p style="margin-left:10px;color:#666;">{{ $t('importauditing') }}</p>
             <el-switch style="margin-left: 55px" v-model="timeType.needDeptAudit" active-color="#20a0ff" > </el-switch>
             <span v-if="timeType.needDeptAudit == 1" style="margin-left:10px;color:#999;">{{ $t('eachdepartment') }}</span>

File diff suppressed because it is too large
+ 2 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue