|
@@ -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())
|