소스 검색

增加了公司的日报审核类型

seyason 2 년 전
부모
커밋
742d275c22

+ 18 - 11
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Report.java

@@ -1,9 +1,16 @@
 package com.management.platform.entity;
 
+import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.management.platform.entity.vo.WorktimeItem;
 import lombok.Data;
@@ -11,20 +18,13 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.List;
-
 /**
  * <p>
  * 
  * </p>
  *
  * @author Seyason
- * @since 2022-05-21
+ * @since 2022-07-24
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -332,8 +332,15 @@ public class Report extends Model<Report> {
     private LocalDateTime projectAuditTime;
 
 
+    /**
+     * 任务分组负责人审核状态: 0-待审核,1-审核通过
+     */
+    @TableField("group_audit_state")
+    private Integer groupAuditState;
+
+
     @Override
-    protected Serializable pkVal(){
+    protected Serializable pkVal() {
         return this.id;
     }
 

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

@@ -1,23 +1,23 @@
 package com.management.platform.entity;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
+import java.math.BigDecimal;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.List;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.List;
-
 /**
  * <p>
  * 
  * </p>
  *
  * @author Seyason
- * @since 2022-06-28
+ * @since 2022-07-24
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -272,6 +272,12 @@ public class TimeType extends Model<TimeType> {
     @TableField("main_project_state")
     private Integer mainProjectState;
 
+    /**
+     * 日报的审核类型, 0-项目审核人审核,1-分组负责人审核,2-先分组负责人审核再项目负责人(PM)审核
+     */
+    @TableField("report_audit_type")
+    private Integer reportAuditType;
+
     @TableField(exist = false)
     private List<User> userList;
 

+ 0 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java

@@ -45,10 +45,6 @@ public interface ReportService extends IService<Report> {
 
     HttpRespMsg denyReport(String date, String reportIds, String reason, Integer isDepartment, HttpServletRequest request);
 
-    HttpRespMsg singleApproveReport(Integer id, HttpServletRequest request);
-
-    HttpRespMsg singleDenyReport(Integer id, HttpServletRequest request);
-
     HttpRespMsg getMembList(String date, Integer manageDeptId, HttpServletRequest request);
 
     HttpRespMsg batchApproveReport(String ids, Integer isDepartment, HttpServletRequest request);

+ 234 - 112
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -90,8 +90,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     @Resource
     WxCorpInfoService wxCorpInfoService;
     @Resource
-    CompanyDingdingMapper companyDingdingMapper;
-    @Resource
     UserCorpwxTimeMapper userCorpwxTimeMapper;
     @Resource
     WxCorpInfoMapper wxCorpInfoMapper;
@@ -981,7 +979,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                       String userId,HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
             User curUser = userMapper.selectById(request.getHeader("Token"));
             Integer companyId = curUser.getCompanyId();
             TimeType timeType = timeTypeMapper.selectById(companyId);
@@ -1018,18 +1015,21 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 //每组日报数据都加上去
                 userDailyReportList.add(a);
             }
-
-            List<Profession> professions = professionMapper.selectList(new QueryWrapper<Profession>().eq("company_id", curUser.getCompanyId()));
+            List<Profession> professions = new ArrayList<>();
+            if (isEngeering == 1) {
+                professions = professionMapper.selectList(new QueryWrapper<Profession>().eq("company_id", curUser.getCompanyId()));
+            }
             for (int index=0;index<nameList.size(); index++) {
                 Map<String, Object> map2 = nameList.get(index);
                 List<Map<String, Object>> list2 = (List)map2.get("data");
                 //项目专业进度
                 if (isEngeering == 1) {
+                    final List<Profession> fProfessList = professions;
                     for (Map<String, Object> map : list2) {
                         //获取当前项目的工程专业进度
                         List<ReportProfessionProgress> progressList = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().eq("report_id", (int)map.get("id")));
                         progressList.stream().forEach(p->{
-                            p.setProfessionName(professions.stream().filter(m->m.getId().equals(p.getProfessionId())).findFirst().get().getName());
+                            p.setProfessionName(fProfessList.stream().filter(m->m.getId().equals(p.getProfessionId())).findFirst().get().getName());
                         });
                         map.put("professionProgressList", progressList);
                     }
@@ -1049,6 +1049,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 map2.put("state", list2.get(0).get("state"));
                 map2.put("auditDeptName", list2.get(0).get("auditDeptName"));
                 map2.put("isDeptAudit", list2.get(0).get("isDeptAudit"));
+                map2.put("groupAuditState", list2.get(0).get("groupAuditState"));
                 map2.put("deptAuditorName", list2.get(0).get("deptAuditorName"));
                 //增加填报人所属部门
                 map2.put("departmentName", list2.get(0).get("departmentName"));
@@ -1135,7 +1136,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     public HttpRespMsg approveReport(String reportIds, Integer isDepartment, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
-            User user = userMapper.selectById(request.getHeader("Token"));
+            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) {
@@ -1209,70 +1211,72 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     }
                 }
             } 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);
-                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<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 (timeType.getReportAuditType() == 2) {
+                    //先按分组审核,再进行项目经理审核
+                    List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, project_id").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);
+                } 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 {
-                        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;
-                                }
+                        //按流程走
+                        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));
                             }
-                            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) {
-                                //没有其他待审核的项目了,流程往下走
+                            if (item.getIsDeptAudit() == 1) {
+                                //当前是部门审核,获取审核部门id
                                 Report upR = new Report();
+                                Integer auditDeptid = item.getAuditDeptid();
                                 for (int m=0;m<settings.size(); m++) {
-                                    if (settings.get(m).getIsDeptAudit()== 0) {//找到项目审核的那个节点
+                                    if (auditDeptid.equals(settings.get(m).getAuditDeptId()) && m < settings.size() -1) {
                                         AuditWorkflowTimeSetting nextNode = settings.get(m + 1);
-//                                        System.out.println("nextNode=="+nextNode.getAuditDeptName());
                                         upR.setIsDeptAudit(nextNode.getIsDeptAudit());
                                         if (upR.getIsDeptAudit() == 1) {
                                             upR.setAuditDeptid(nextNode.getAuditDeptId());
@@ -1283,16 +1287,77 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                         break;
                                     }
                                 }
-                                //全部更新到下一个审核阶段
-                                List<Integer> allRids = sameUserSameDayOtherReports.stream().map(Report::getId).collect(Collectors.toList());
-                                allRids.addAll(ids);
-//                                System.out.println("更新全部的日报到下个阶段:getIsDeptAudit="+upR.getIsDeptAudit()+", ");
                                 reportMapper.update(upR,
-                                        new QueryWrapper<Report>().in("id", allRids));
+                                        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;
+                                                }
+                                            }
+                                            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));
@@ -1498,10 +1563,25 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
             }
             //直接进行项目经理审核驳回
-            reportMapper.update(new Report().setState(2)
-                            .setRejectReason(reason).setRejectUserid(user.getId()).setRejectUsername(user.getName()),
+            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>().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(", ", "[", "]"));
@@ -1558,33 +1638,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         return httpRespMsg;
     }
 
-    //审核通过某条
-    @Override
-    public HttpRespMsg singleApproveReport(Integer id, HttpServletRequest request) {
-        HttpRespMsg httpRespMsg = new HttpRespMsg();
-        try {
-            User user = userMapper.selectById(request.getHeader("Token"));
-            reportMapper.updateById(reportMapper.selectById(id).setState(1));
-        } catch (NullPointerException e) {
-            httpRespMsg.setError("验证失败");
-            return httpRespMsg;
-        }
-        return httpRespMsg;
-    }
-
-    //审核未通过 以及 撤销审核某条
-    @Override
-    public HttpRespMsg singleDenyReport(Integer id, HttpServletRequest request) {
-        HttpRespMsg httpRespMsg = new HttpRespMsg();
-        try {
-            User user = userMapper.selectById(request.getHeader("Token"));
-            reportMapper.updateById(reportMapper.selectById(id).setState(2));
-        } catch (NullPointerException e) {
-            httpRespMsg.setError("验证失败");
-            return httpRespMsg;
-        }
-        return httpRespMsg;
-    }
 
     private List<DepartmentVO> getSpecifiedDept(List<DepartmentVO> list, Integer id) {
         DepartmentVO item = null;
@@ -1691,7 +1744,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
     @Override
     public HttpRespMsg batchApproveReport(String reportIds, Integer isDepartment, HttpServletRequest request) {
-        User user = userMapper.selectById(request.getHeader("Token"));
+        String token = request.getHeader("Token");
+        User user = userMapper.selectById(token);
         Company company = companyMapper.selectById(user.getCompanyId());
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         final List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(reportIds);
@@ -1849,25 +1903,93 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                             break;
                                         }
                                     }
-                                    //可能存在当天的其他已经通过项目负责人审核的数据,也一起更新到下个流程节点
-                                    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);
+                                                }
+                                            }
+                                        } 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;
+                                                }
+                                            }
+                                            //可能存在当天的其他已经通过项目负责人审核的数据,也一起更新到下个流程节点
+                                            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);
+                                                }
                                             }
                                         }
-                                        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);
+                                    } 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);
+                                            }
                                         }
                                     }
                                 }

+ 7 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskGroupServiceImpl.java

@@ -105,16 +105,19 @@ public class TaskGroupServiceImpl extends ServiceImpl<TaskGroupMapper, TaskGroup
                     task.setCreaterId(user.getId());
                     task.setCreaterName(user.getName());
                     task.setCreatorColor(user.getColor());
-                    task.setExecutorId(inchargerUser.getId());
-                    task.setExecutorName(inchargerUser.getName());
-                    task.setExecutorColor(inchargerUser.getColor());
+                    if(task.getTaskType()==1 && inchargerUser != null){
+                        task.setExecutorId(inchargerUser.getId());
+                        task.setExecutorName(inchargerUser.getName());
+                        task.setExecutorColor(inchargerUser.getColor());
+                    }
+
                     taskList.add(task);
                 });
                 taskService.saveBatch(taskList);
                 taskList.forEach(tl->{
                     TaskExecutor taskExecutor=new TaskExecutor();
                     //当为里程碑任务时
-                    if(tl.getTaskType()==1){
+                    if(tl.getTaskType()==1 && inchargerUser != null){
                         taskExecutor.setTaskId(tl.getId());
                         taskExecutor.setExecutorId(inchargerUser.getId());
                         taskExecutor.setExecutorName(inchargerUser.getName());

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -352,8 +352,9 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                 reqOnceCardTime(wxCorpInfo, startTime, endTime, objects, false);
             }
             //查询日报中的人员姓名,更新用户表
+            System.out.println(""+corpwxUserIds.size());
             List<UserCorpwxTime> cardTimeList = userCorpwxTimeMapper.selectList(
-                    new QueryWrapper<UserCorpwxTime>().select("corpwx_userid, name").eq("company_id", wxCorpInfo.getCompanyId()).in("corpwx_userid", corpwxUserIds));
+                    new QueryWrapper<UserCorpwxTime>().select("distinct corpwx_userid, name").eq("company_id", wxCorpInfo.getCompanyId()).in("corpwx_userid", corpwxUserIds));
             List<User> updateUserList = new ArrayList<>();
             for (UserCorpwxTime userCorpwxTime : cardTimeList) {
                 User user = userMapper.selectOne(new QueryWrapper<User>().eq("name", userCorpwxTime.getName()).eq("company_id", wxCorpInfo.getCompanyId()));

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 4 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 3 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml


+ 1 - 13
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -359,15 +359,7 @@
                         <el-option v-for="item in participator" :key="item.id" :label="item.name" :value="item.id"></el-option>
                     </el-select>
                 </el-form-item>
-                <!--非建筑工程专业版设置 -->
-                <el-form-item label="日报审核权限" v-if="user.company.packageProject==1 && user.company.packageEngineering == 0">
-                    <el-radio-group v-model="addForm.taskGpIncharge" >
-                        <el-radio :label="0">由项目设置的审核人审核</el-radio>
-                        <el-radio :label="1">由各任务分组负责人审核</el-radio>
-                    </el-radio-group>
-                </el-form-item>
-                
-                <el-form-item label="日报审核人" v-show="addForm.taskGpIncharge==0">
+                <el-form-item label="日报审核人" v-show="user.timeType.reportAuditType==0">
                     <el-select v-model="addForm.auditUserIds" multiple="true" :disabled=" !(permissions.projectManagement|| user.id == addForm.inchargerId || user.id == addForm.creatorId)" filterable placeholder="默认为项目负责人" style="width:100%;" >
                         <el-option v-for="item in participator" :key="item.id" :label="item.name" :value="item.id"></el-option>
                     </el-select>
@@ -936,7 +928,6 @@ a {
                     name: '',
                     userId: [],
                     level:1,
-                    taskGpIncharge: 0,
                     id: '',
                     code: '',
                     projectDesc: '',
@@ -2702,7 +2693,6 @@ a {
                         customerId:null,
                         notifyUserNames:'',
                         chosenLeaders:[],
-                        taskGpIncharge: 0,
                         category:null,
                         creatorId: this.user.id,
                         projectMainId: ''
@@ -2747,7 +2737,6 @@ a {
                         baseRisk2: item.baseRisk2,
                         baseOutsourcing: item.baseOutsourcing,
                         customerId:item.customerId==0?null:item.customerId,
-                        taskGpIncharge: item.taskGpIncharge,
                         category:item.category,
                         projectDesc: item.projectDesc,
                         projectMainId: item.projectMainId,
@@ -2989,7 +2978,6 @@ a {
                         listName.toString()
                         formData.append("associateDegrees", listId)
                         formData.append("associateDegreeNames", listName)
-                        formData.append("taskGpIncharge", this.addForm.taskGpIncharge)
                         //日报审核人
                         formData.append("auditUserIds", JSON.stringify(this.addForm.auditUserIds));
 

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

@@ -2736,8 +2736,7 @@
                 //获取项目下的任务分组
                 this.getTaskGroups(domain, index);
                 //获取项目审核人
-                var curProject = this.projectList.filter(p=>p.id == domain.projectId)[0];
-                if (curProject.taskGpIncharge == 0) {
+                if (this.user.timeType.reportAuditType == 0) {
                     this.getProjectAuditorList(domain, index);
                 } else {
                     //按分组的负责人来审核
@@ -2745,9 +2744,6 @@
                     domain.projectAuditorName = null;
                     domain.auditUserList = null;
                 }
-                // // this.$set(this.workForm.domains[index], "taskGpIncharge", curProject.taskGpIncharge);
-                domain.taskGpIncharge = curProject.taskGpIncharge;
-                // this.$forceUpdate();
             },
 
             //获取项目审核人
@@ -2824,8 +2820,7 @@
                 if(!domain.groupId){
                     domain.projectAuditorId = ''
                     domain.stages = []
-                    let curProject = this.projectList.filter(p=>p.id == domain.projectId)[0];
-                    if(curProject.taskGpIncharge == 1){
+                    if(this.user.timeType.reportAuditType >= 1){
                         domain.auditUserList = []
                     }
                     this.$forceUpdate();
@@ -2847,7 +2842,7 @@
                     });
                 //检查当前的项目是否需要获取分组的负责人
                 var curProject = this.projectList.filter(p=>p.id == domain.projectId)[0];
-                if (curProject.taskGpIncharge == 1) {
+                if (this.user.timeType.reportAuditType >= 1) {
                     this.http.post("/task-group/getGroupIncharger", {groupId: domain.groupId},
                         res => {
                             if (res.code == "ok") {
@@ -3816,7 +3811,6 @@
                                     timeType:0,
                                     multiWorktime: this.reportTimeType.multiWorktime,
                                     worktimeList:[{}],
-                                    taskGpIncharge:1,
                                 }],
                                 userId:null,
                                 userNames:null,
@@ -5091,7 +5085,7 @@
                             if (this.workForm.domains[i].projectAuditorId) {
                                 formData.append("projectAuditorId", this.workForm.domains[i].projectAuditorId);
                             } else {
-                                if (this.workForm.domains[i].taskGpIncharge == 0) {
+                                if (this.user.timeType.reportAuditType == 0) {
                                     this.$message({
                                         message: "请指定项目审核人",
                                         type: "error"