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

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper into master

seyason 2 лет назад
Родитель
Сommit
2bcacfe570
14 измененных файлов с 259 добавлено и 20 удалено
  1. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectCategoryController.java
  2. 3 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  3. 40 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  4. 7 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java
  5. 13 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectCategory.java
  6. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java
  7. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java
  8. 9 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  9. 170 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  10. 7 5
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java
  11. 3 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectCategoryMapper.xml
  12. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  13. 1 1
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/TimeType.java
  14. 1 0
      fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectCategoryController.java

@@ -71,7 +71,7 @@ public class ProjectCategoryController {
             } else {
                 //检查名称是否有变化
                 ProjectCategory oldSetting = projectCategoryMapper.selectById(setting.getId());
-                if (!setting.getName().equals(oldSetting.getName())) {
+                if ((!setting.getName().equals(oldSetting.getName()))||(!setting.getProBuAudit().equals(oldSetting.getProBuAudit()))||(!setting.getProInchargerAudit().equals(oldSetting.getProInchargerAudit()))) {
                     projectCategoryMapper.updateById(setting);
                     Project cost = new Project();
                     cost.setCategoryName(setting.getName());

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

@@ -161,12 +161,12 @@ public class ProjectController {
                                    ProjectSeparate projectSeparate,
                                    Double outputValue,
                                    Integer deptId,
-                                   @RequestParam(defaultValue = "false") boolean onlyChangeParticipate
-                                   ) {
+                                   @RequestParam(defaultValue = "false") boolean onlyChangeParticipate,
+                                   String buId) {
         return projectService.editProject(id, name, code, userId, inchargerId, isPublic, planStartDate, planEndDate, level, contractAmount,changeContractReason,
                 projectBaseCostData,projectKeyNodesData,
                  budget,customerId,chosenLeaders, associateDegrees, associateDegreeNames,
-                taskGpIncharge,auditUserIds, category, projectDesc,projectMainId, providerIds, providerNames, request,projectSeparate,outputValue,deptId,onlyChangeParticipate);
+                taskGpIncharge,auditUserIds, category, projectDesc,projectMainId, providerIds, providerNames, request,projectSeparate,outputValue,deptId,onlyChangeParticipate,buId);
     }
 
     @RequestMapping("/adjustBase")

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

@@ -18,6 +18,7 @@ import com.management.platform.util.WorkDayCalculateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.*;
 import org.springframework.http.client.ClientHttpResponse;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.DefaultResponseErrorHandler;
 import org.springframework.web.multipart.MultipartFile;
@@ -79,6 +80,8 @@ public class ReportController {
     @Resource
     private SysFunctionMapper sysFunctionMapper;
     @Resource
+    ProjectCategoryMapper projectCategoryMapper;
+    @Resource
     private UserCorpwxTimeMapper userCorpwxTimeMapper;
     @Resource
     private UserMapper userMapper;
@@ -302,6 +305,16 @@ 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());
         List<ReportAuditorSetting> auditorSettingList = null;
         if (comTimeType.getReportAuditType() == 3) {
@@ -343,7 +356,7 @@ public class ReportController {
                     projectAuditorId[i] = reportAuditorSetting.getAuditorFirst();
                 }
             }
-        } else {
+        }else {
             //自动填充项目审核人
             for (int i=0;i<projectAuditorId.length; i++) {
                 if (projectAuditorId[i] == null) {
@@ -903,6 +916,32 @@ public class ReportController {
             }
 
         }
+        for (Report report : reportList) {
+            if(comTimeType.getReportAuditType()==4){
+                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();
+                if(category.isPresent()){
+                    //默认按照项目审核人审核 优先考虑
+                    if(category.get().getProInchargerAudit()==0){
+                        if(category.get().getProBuAudit()==1){
+                            report.setDepartmentAuditState(0);
+                            if(StringUtils.isEmpty(project.get().getBuId())){
+                                HttpRespMsg msg=new HttpRespMsg();
+                                msg.setError("项目["+project.get().getProjectName()+"]未设置BU");
+                                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();
+                            report.setAuditDeptid(department.get().getDepartmentId());
+                            report.setAuditDeptManagerid(department.get().getManagerId());
+                            report.setIsDeptAudit(1);
+                        }else {
+                            report.setState(1);
+                        }
+                    }
+                }
+            }
+        }
 
 
 

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

@@ -22,7 +22,7 @@ import org.springframework.format.annotation.DateTimeFormat;
  * </p>
  *
  * @author Seyason
- * @since 2022-09-30
+ * @since 2023-02-23
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -342,6 +342,12 @@ public class Project extends Model<Project> {
     @TableField("dept_cascade")
     private String deptCascade;
 
+    /**
+     * buId
+     */
+    @TableField("bu_id")
+    private String buId;
+
     @TableField(exist = false)
     ProjectSeparate projectSeparate;
 

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

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2022-03-24
+ * @since 2023-02-23
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -33,6 +33,18 @@ public class ProjectCategory extends Model<ProjectCategory> {
     @TableField("company_id")
     private Integer companyId;
 
+    /**
+     * 项目审核人审核
+     */
+    @TableField("pro_incharger_audit")
+    private Integer proInchargerAudit;
+
+    /**
+     * 项目bu负责人审核
+     */
+    @TableField("pro_bu_audit")
+    private Integer proBuAudit;
+
 
     @Override
     protected Serializable pkVal() {

+ 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-员工自由选择审批人
+     * 日报的审核类型, 0-项目审核人审核,1-分组负责人审核,2-先分组负责人审核再项目负责人(PM)审核;3-员工自由选择审批人;4-项目所属BU审核
      */
     @TableField("report_audit_type")
     private Integer reportAuditType;

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -47,7 +47,7 @@ public interface ProjectService extends IService<Project> {
                             String providerIds,
                             String providerNames,
                             HttpServletRequest request,
-                            ProjectSeparate projectSeparate,Double outputValue,Integer deptId,boolean onlyChangeParticipate);
+                            ProjectSeparate projectSeparate,Double outputValue,Integer deptId,boolean onlyChangeParticipate,String buId);
 
     HttpRespMsg deleteProject(Integer id, Integer force);
 

+ 9 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -497,7 +497,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                    String providerIds,
                                    String providerNames,
                                    HttpServletRequest request,
-                                   ProjectSeparate projectSeparate,Double outputValue,Integer deptId,boolean onlyChangeParticipate) {
+                                   ProjectSeparate projectSeparate,Double outputValue,Integer deptId,boolean onlyChangeParticipate,String buId) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
@@ -561,6 +561,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                     convertDepartmentIdToCascade(0) :
                                     convertDepartmentIdToCascade(deptId))
                             .setProviderNames(providerNames);
+                    if(companyId==862){
+                        project.setBuId(buId);
+                    }
                     if(timeType.getOutputValueStatus()==1){
                         project.setOutputValue(outputValue==null?0.00:outputValue);
                     }
@@ -664,6 +667,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                 convertDepartmentIdToCascade(0) :
                                 convertDepartmentIdToCascade(deptId))
                         .setProviderNames(providerNames);
+                if(companyId==862){
+                        p.setBuId(buId);
+                }
                 //编辑项目合同修改 添加记录
                 if(contractAmount!=null&&project.getContractAmount().doubleValue()!=contractAmount){
                     ContractModifyRecord contractModifyRecord=new ContractModifyRecord();
@@ -7847,7 +7853,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                     //项目负责人要加到参与人中
                     Participation participation=new Participation();
-                    if(project.getInchargerId()!=null){
+                    if(project.getInchargerId()!=null&&project.getInchargerId().length()==19){
                         participation.setUserId(project.getInchargerId());
                         participation.setProjectId(project.getId());
                         participationMapper.insert(participation);
@@ -7897,7 +7903,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                     //项目负责人要加到参与人中
                     Participation participation=new Participation();
-                    if(project.getInchargerId()!=null){
+                    if(project.getInchargerId()!=null&&project.getInchargerId().length()==19){
                         participationMapper.delete(new QueryWrapper<Participation>().eq("project_id",project.getId()).eq("user_id",project.getId()));
                         participation.setUserId(project.getInchargerId());
                         participation.setProjectId(project.getId());

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

@@ -114,6 +114,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     @Resource
     WxCorpInfoService wxCorpInfoService;
     @Resource
+    ProjectCategoryMapper projectCategoryMapper;
+    @Resource
     UserCorpwxTimeMapper userCorpwxTimeMapper;
     @Resource
     WxCorpInfoMapper wxCorpInfoMapper;
@@ -1571,6 +1573,89 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         reportAuditorSettingService.updateBatchById(updateReportAuditorSettingList);
                     }
                 }
+            }else if(timeType.getReportAuditType() == 4){
+                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, project_audit_state,project_auditor_id,department_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,project_name,incharger_id,bu_id,category").in("id", assProjectIds));
+                List<ProjectCategory> categoryList = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().eq("company_id",company.getId()));
+                List<Integer> collect = projectList.stream().map(pl -> {
+                    if (!pl.getBuId().equals("")) {
+                        String[] split = pl.getBuId().split(",");
+                        return Integer.parseInt(split[split.length - 1]);
+                    }
+                    return null;
+                }).collect(Collectors.toList());
+                collect.add(-1);
+                List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().in("department_id", collect));
+                Optional<Project> first = projectList.stream().filter(p -> StringUtils.isEmpty(p.getInchargerId())).findFirst();
+                if (first.isPresent()) {
+                    String projectName = first.get().getProjectName();
+                    //httpRespMsg.setError("请给["+projectName+"]项目设置项目负责人");
+                    httpRespMsg.setError("请给["+projectName+"]项目设置项目负责人");
+                    return httpRespMsg;
+                }
+                for (Report r : reportList) {
+                    //根据项目阶段来调整审核流程
+                    /*任务所属项目*/
+                    Optional<Project> p = projectList.stream().filter(pl-> pl.getId().equals(r.getProjectId())).findFirst();
+                    Optional<ProjectCategory> category = categoryList.stream().filter(cl -> cl.getId().equals(p.get().getCategory())).findFirst();
+                    if(category.isPresent()){
+                        //默认按照项目审核人审核 优先考虑
+                        if(category.get().getProInchargerAudit()==1){
+                            if (r.getProjectAuditState() == 0) {
+                                r.setProjectAuditState(1);
+                                r.setProjectAuditTime(LocalDateTime.now());
+                                //项目审核人核完,该项目所属BU审核了
+                                if(category.get().getProBuAudit()==1){
+                                    Project project1 = projectList.stream().filter(project -> project.getId().equals(r.getProjectId())).findFirst().get();
+                                    if(StringUtils.isEmpty(project1.getBuId())){
+                                        //httpRespMsg.setError("请给["+projectName+"]项目设置项目负责人");
+                                        httpRespMsg.setError("请给["+project1.getProjectName()+"]项目设置项目BU负责人");
+                                        return httpRespMsg;
+                                    }
+                                    String[] split = project1.getBuId().split(",");
+                                    Optional<Department> department = departmentList.stream().filter(dl -> dl.getDepartmentId().equals(Integer.parseInt(split[split.length - 1]))).findFirst();
+                                    r.setDepartmentAuditState(0);
+                                    r.setAuditDeptManagerid(department.get().getManagerId());
+                                    r.setIsDeptAudit(1);
+                                    r.setAuditDeptid(department.get().getDepartmentId());
+                                    if(department.get().getManagerId().equals(r.getProjectAuditorId())){
+                                        r.setState(1);
+                                        r.setDepartmentAuditState(1);
+                                    }
+                                }else r.setState(1);
+                            } else if (r.getDepartmentAuditState() == 0) {
+                                r.setDepartmentAuditState(1);
+                                r.setState(1);
+                            }
+                        }else{
+                            if(category.get().getProBuAudit()==1){
+                                Project project1 = projectList.stream().filter(project -> project.getId().equals(r.getProjectId())).findFirst().get();
+                                if(StringUtils.isEmpty(project1.getBuId())){
+                                    //httpRespMsg.setError("请给["+projectName+"]项目设置项目负责人");
+                                    httpRespMsg.setError("请给["+project1.getProjectName()+"]项目设置项目BU负责人");
+                                    return httpRespMsg;
+                                }
+                                String[] split = project1.getBuId().split(",");
+                                Optional<Department> department = departmentList.stream().filter(dl -> dl.getDepartmentId().equals(Integer.parseInt(split[split.length - 1]))).findFirst();
+                                r.setDepartmentAuditState(0);
+                                r.setAuditDeptManagerid(department.get().getManagerId());
+                                r.setIsDeptAudit(1);
+                                r.setAuditDeptid(department.get().getDepartmentId());
+                                if(department.get().getManagerId().equals(r.getProjectAuditorId())){
+                                    r.setState(1);
+                                    r.setDepartmentAuditState(1);
+                                }
+                            }else r.setState(1);
+                        }
+                    }
+                    updateReportList.add(r);
+                }
+                if (updateReportList.size() > 0) {
+                    updateBatchById(updateReportList);
+                }
             } else {
                 //之前的流程逻辑,综合了一层项目审核,或者一层任务分组审核。 可叠加部门审批流
                 List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
@@ -2479,6 +2564,91 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         reportAuditorSettingService.updateBatchById(updateReportAuditorSettingList);
                     }
                 }
+            }else if(timeType.getReportAuditType() == 4){
+                List<Report> updateReportList = new ArrayList<>();
+                //项目所属BU审核
+                allUsers = userMapper.selectList(new QueryWrapper<User>().select("id, name, department_id").eq("company_id", company.getId()));
+                List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, creator_id, create_date, project_id, project_audit_state,project_auditor_id,department_audit_state").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,project_name,incharger_id,bu_id,category").in("id", assProjectIds));
+                List<ProjectCategory> categoryList = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().eq("company_id",company.getId()));
+                List<Integer> collect = projectList.stream().map(pl -> {
+                    if (!pl.getBuId().equals("")) {
+                        String[] split = pl.getBuId().split(",");
+                        return Integer.parseInt(split[split.length - 1]);
+                    }
+                    return null;
+                }).collect(Collectors.toList());
+                collect.add(-1);
+                List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().in("department_id", collect));
+                Optional<Project> first = projectList.stream().filter(p -> StringUtils.isEmpty(p.getInchargerId())).findFirst();
+                if (first.isPresent()) {
+                    String projectName = first.get().getProjectName();
+                    //httpRespMsg.setError("请给["+projectName+"]项目设置项目负责人");
+                    httpRespMsg.setError("请给["+projectName+"]项目设置项目负责人");
+                    return httpRespMsg;
+                }
+                for (Report r : reportList) {
+                    //根据项目阶段来调整审核流程
+                    /*任务所属项目*/
+                    Optional<Project> p = projectList.stream().filter(pl-> pl.getId().equals(r.getProjectId())).findFirst();
+                    Optional<ProjectCategory> category = categoryList.stream().filter(cl -> cl.getId().equals(p.get().getCategory())).findFirst();
+                    if(category.isPresent()){
+                        //默认按照项目审核人审核 优先考虑
+                        if(category.get().getProInchargerAudit()==1){
+                            if (r.getProjectAuditState() == 0) {
+                                r.setProjectAuditState(1);
+                                r.setProjectAuditTime(LocalDateTime.now());
+                                //项目审核人核完,该项目所属BU审核了
+                                if(category.get().getProBuAudit()==1){
+                                    Project project1 = projectList.stream().filter(project -> project.getId().equals(r.getProjectId())).findFirst().get();
+                                    if(StringUtils.isEmpty(project1.getBuId())){
+                                        //httpRespMsg.setError("请给["+projectName+"]项目设置项目负责人");
+                                        httpRespMsg.setError("请给["+project1.getProjectName()+"]项目设置项目BU负责人");
+                                        return httpRespMsg;
+                                    }
+                                    String[] split = project1.getBuId().split(",");
+                                    Optional<Department> department = departmentList.stream().filter(dl -> dl.getDepartmentId().equals(Integer.parseInt(split[split.length - 1]))).findFirst();
+                                    r.setDepartmentAuditState(0);
+                                    r.setAuditDeptManagerid(department.get().getManagerId());
+                                    r.setIsDeptAudit(1);
+                                    r.setAuditDeptid(department.get().getDepartmentId());
+                                    if(department.get().getManagerId().equals(r.getProjectAuditorId())){
+                                        r.setState(1);
+                                        r.setDepartmentAuditState(1);
+                                    }
+                                }else r.setState(1);
+                            } else if (r.getDepartmentAuditState() == 0) {
+                                r.setDepartmentAuditState(1);
+                                r.setState(1);
+                            }
+                        }else{
+                            if(category.get().getProBuAudit()==1){
+                                Project project1 = projectList.stream().filter(project -> project.getId().equals(r.getProjectId())).findFirst().get();
+                                if(StringUtils.isEmpty(project1.getBuId())){
+                                    //httpRespMsg.setError("请给["+projectName+"]项目设置项目负责人");
+                                    httpRespMsg.setError("请给["+project1.getProjectName()+"]项目设置项目BU负责人");
+                                    return httpRespMsg;
+                                }
+                                String[] split = project1.getBuId().split(",");
+                                Optional<Department> department = departmentList.stream().filter(dl -> dl.getDepartmentId().equals(Integer.parseInt(split[split.length - 1]))).findFirst();
+                                r.setDepartmentAuditState(0);
+                                r.setAuditDeptManagerid(department.get().getManagerId());
+                                r.setIsDeptAudit(1);
+                                r.setAuditDeptid(department.get().getDepartmentId());
+                                if(department.get().getManagerId().equals(r.getProjectAuditorId())){
+                                    r.setState(1);
+                                    r.setDepartmentAuditState(1);
+                                }
+                            }else r.setState(1);
+                        }
+                    }
+                    updateReportList.add(r);
+                }
+                if (updateReportList.size() > 0) {
+                    updateBatchById(updateReportList);
+                }
             } else {
                 List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
                         new QueryWrapper<AuditWorkflowTimeSetting>().eq("company_id", company.getId())

+ 7 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -397,7 +397,7 @@ public class TimingTask {
             HttpRespMsg leaveRecordMsg = dockWithMLD.getResult("http://10.1.10.51:20175/api/cube/restful/interface/getModeDataPageList/getLeaveRecord", jsonString);
             List<Map<String,Object>> leaveRecordList= (List<Map<String, Object>>) leaveRecordMsg.data;
             for (Map<String, Object> map : leaveRecordList) {
-                Optional<User> optional=allUserList.stream().filter(al->al.getJobNumber()!=null&&al.getJobNumber().equals(map.get("rybh"))).findFirst();
+                Optional<User> optional=allUserList.stream().filter(al->al.getJobNumber()!=null&&al.getJobNumber().equals(map.get("userId"))).findFirst();
                 if(!optional.isPresent()){
                     continue;
                 }
@@ -448,7 +448,8 @@ public class TimingTask {
                     leaveSheet.setLeaveType(leaveType);
                     leaveSheet.setProcinstId(String.valueOf(map.get("procinstId")));
                     leaveSheet.setGmtFinished(String.valueOf(map.get("gmtFinished")));
-                    Optional<LeaveSheet> first = oldLeaveSheetList.stream().filter(ol -> ol.getStartDate().isEqual(leaveSheet.getStartDate())&&ol.getEndDate().isEqual(leaveSheet.getEndDate()) && ol.getOwnerId().equals(leaveSheet.getOwnerId())&&ol.getProcinstId().equals(leaveSheet.getProcinstId())).findFirst();
+                    /*&& ol.getOwnerId().equals(businessTrip.getOwnerId())*/
+                    Optional<LeaveSheet> first = oldLeaveSheetList.stream().filter(ol -> ol.getStartDate().isEqual(leaveSheet.getStartDate())&&ol.getEndDate().isEqual(leaveSheet.getEndDate())&&ol.getProcinstId().equals(leaveSheet.getProcinstId())).findFirst();
                     if(first.isPresent()){
                         leaveSheet.setId(first.get().getId());
                     }
@@ -463,7 +464,7 @@ public class TimingTask {
             HttpRespMsg travelRecordMsg = dockWithMLD.getResult("http://10.1.10.51:20175/api/cube/restful/interface/getModeDataPageList/getTravelRecord", jsonString);
             List<Map<String,Object>> travelRecordList= (List<Map<String, Object>>) travelRecordMsg.data;
             for (Map<String, Object> map : travelRecordList) {
-                Optional<User> optional=allUserList.stream().filter(al->al.getJobNumber()!=null&&al.getJobNumber().equals(map.get("rybh"))).findFirst();
+                Optional<User> optional=allUserList.stream().filter(al->al.getJobNumber()!=null&&al.getJobNumber().equals(map.get("userId"))).findFirst();
                 if(!optional.isPresent()){
                     continue;
                 }
@@ -503,7 +504,8 @@ public class TimingTask {
                     businessTrip.setDayCount(dayCount.intValue());
                     businessTrip.setProcinstId((String) map.get("procinstId"));
                     businessTrip.setGmtFinished((String)map.get("gmtFinished"));
-                    Optional<BusinessTrip> first = oldBusinessTripList.stream().filter(ol -> ol.getStartDate().isEqual(businessTrip.getStartDate())&&ol.getEndDate().isEqual(businessTrip.getEndDate()) && ol.getOwnerId().equals(businessTrip.getOwnerId())&&ol.getProcinstId().equals(businessTrip.getProcinstId())).findFirst();
+                    /*&& ol.getOwnerId().equals(businessTrip.getOwnerId())*/
+                    Optional<BusinessTrip> first = oldBusinessTripList.stream().filter(ol -> ol.getStartDate().isEqual(businessTrip.getStartDate())&&ol.getEndDate().isEqual(businessTrip.getEndDate())&&ol.getProcinstId().equals(businessTrip.getProcinstId())).findFirst();
                     if(first.isPresent()){
                         businessTrip.setId(first.get().getId());
                     }
@@ -661,7 +663,7 @@ public class TimingTask {
             List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", wxCorpInfo.getCompanyId()));
             List<Integer> taskIds = taskList.stream().map(Task::getId).distinct().collect(Collectors.toList());
             taskIds.add(-1);
-            List<TaskExecutor> taskExecutorList = taskExecutorMapper.selectList(new QueryWrapper<TaskExecutor>().in("task_id", taskIds));
+            List<TaskExecutor> taskExecutorList = taskExecutorMapper.selectList(new QueryWrapper<TaskExecutor>().in("task_id", taskIds).eq("task_status",0));
             for (Task task : taskList) {
                 List<String> list = taskExecutorList.stream().filter(tl -> tl.getTaskId().equals(task.getId())).map(TaskExecutor::getExecutorId).distinct().collect(Collectors.toList());
                 String corpUserid = userList.stream().filter(ul -> list.contains(ul.getId())).map(User::getCorpwxUserid).distinct().collect(Collectors.joining(","));

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

@@ -7,11 +7,13 @@
         <id column="id" property="id" />
         <result column="name" property="name" />
         <result column="company_id" property="companyId" />
+        <result column="pro_incharger_audit" property="proInchargerAudit" />
+        <result column="pro_bu_audit" property="proBuAudit" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, name, company_id
+        id, name, company_id, pro_incharger_audit, pro_bu_audit
     </sql>
 
 </mapper>

Разница между файлами не показана из-за своего большого размера
+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml


+ 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-员工自由选择审批人
+     * 日报的审核类型, 0-项目审核人审核,1-分组负责人审核,2-先分组负责人审核再项目负责人(PM)审核;3-员工自由选择审批人;4-项目所属BU审核
      */
     @TableField("report_audit_type")
     private Integer reportAuditType;

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

@@ -991,6 +991,7 @@
                 <el-form-item :label="$t('AuditProcess')" prop="name">
                     <template>
                     <el-checkbox v-model="addClf.proInchargerAudit" >项目审核人审核</el-checkbox>
+                    <div style="width: 120px ; text-align: center;"><i class="el-icon-bottom"></i></div>
                     <el-checkbox v-model="addClf.proBuAudit" >项目所属BU负责人审核</el-checkbox>
                     </template>
                 </el-form-item>