|
@@ -23,6 +23,7 @@ import org.apache.poi.hssf.usermodel.*;
|
|
|
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|
|
import org.apache.poi.ss.usermodel.*;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.core.task.AsyncTaskExecutor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.StringUtils;
|
|
@@ -57,8 +58,8 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
@Transactional
|
|
|
public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> implements ReportService {
|
|
|
-// @Resource
|
|
|
-// AsyncTaskExecutor asyncTaskExecutor;//注入线程池对象
|
|
|
+ @Resource
|
|
|
+ AsyncTaskExecutor asyncTaskExecutor;//注入线程池对象
|
|
|
|
|
|
@Value("${wx.template_report_pass}")
|
|
|
public String TEMPLATE_REPORT_PASS;
|
|
@@ -157,6 +158,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
private ReportLogMapper reportLogMapper;
|
|
|
@Resource
|
|
|
private ThirdPartyInterfaceMapper thirdPartyInterfaceMapper;
|
|
|
+ @Resource
|
|
|
+ private DepartmentOtherManagerMapper departmentOtherManagerMapper;
|
|
|
|
|
|
@Value(value = "${upload.path}")
|
|
|
private String path;
|
|
@@ -217,13 +220,22 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
if (hasDeptWorktimePriv || (user.getManageDeptId() != null && user.getManageDeptId() > 0)) {
|
|
|
//找到该部门的所有子部门
|
|
|
List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
|
|
|
- //查找当前部门经理负责的部门
|
|
|
+ //查找当前部门经理负责的部门 或者作为其他负责人的部分
|
|
|
List<Department> queryDeptList = null;
|
|
|
if (deptId != null) {
|
|
|
queryDeptList = allDepts.stream().filter(dp->dp.getDepartmentId().equals(deptId)).collect(Collectors.toList());
|
|
|
} else {
|
|
|
queryDeptList = allDepts.stream().filter(
|
|
|
dp -> user.getId().equals(dp.getManagerId()) || (hasDeptWorktimePriv && dp.getDepartmentId().equals(user.getDepartmentId()))).collect(Collectors.toList());
|
|
|
+ List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
|
|
|
+ List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
|
|
|
+ for (Integer integer : otherCollect) {
|
|
|
+ Optional<Department> first = allDepts.stream().filter(ad -> ad.getDepartmentId().equals(integer)).findFirst();
|
|
|
+ if(first.isPresent()){
|
|
|
+ queryDeptList.add(first.get());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
if (queryDeptList.size() > 0) {
|
|
@@ -1136,147 +1148,174 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
@Override
|
|
|
public HttpRespMsg approveReport(String reportIds, Integer isDepartment, HttpServletRequest request) {
|
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
- try {
|
|
|
- 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) {
|
|
|
- //检查是否有专业进度待审核
|
|
|
- List<ReportProfessionProgress> list = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).eq("audit_state", 0));
|
|
|
- if (isDepartment != null) {
|
|
|
- //进行的是部门审核, 需要专业审核都通过才能进行部门审核
|
|
|
- if (list.size() > 0) {
|
|
|
- httpRespMsg.setError("只有专业审核全部通过才能进行操作");
|
|
|
- return httpRespMsg;
|
|
|
+ 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) {
|
|
|
+ //检查是否有专业进度待审核
|
|
|
+ List<ReportProfessionProgress> list = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).eq("audit_state", 0));
|
|
|
+ if (isDepartment != null) {
|
|
|
+ //进行的是部门审核, 需要专业审核都通过才能进行部门审核
|
|
|
+ if (list.size() > 0) {
|
|
|
+ httpRespMsg.setError("只有专业审核全部通过才能进行操作");
|
|
|
+ return httpRespMsg;
|
|
|
+ } else {
|
|
|
+ Report report = reportMapper.selectById(ids.get(0));
|
|
|
+ //部门待审核,部门审核通过
|
|
|
+ if (report.getDepartmentAuditState() == 0){
|
|
|
+ report = new Report();
|
|
|
+ report.setDepartmentAuditState(1);
|
|
|
+ reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //专业审核或者项目审核
|
|
|
+ if (list.size() > 0) {
|
|
|
+ //专业待审核的状态,进行专业审核
|
|
|
+ List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
+ List<Integer> projectIds = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<ProjectProfession> myProfessionList = projectProfessionMapper.selectList(new QueryWrapper<ProjectProfession>().eq("incharger_id", user.getId()).in("project_id", projectIds));
|
|
|
+ if (myProfessionList.size() == 0) {
|
|
|
+ httpRespMsg.setError("只有专业负责人才能进行专业审核");
|
|
|
} else {
|
|
|
- Report report = reportMapper.selectById(ids.get(0));
|
|
|
- //部门待审核,部门审核通过
|
|
|
- if (report.getDepartmentAuditState() == 0){
|
|
|
- report = new Report();
|
|
|
- report.setDepartmentAuditState(1);
|
|
|
+ List<Integer> collect = myProfessionList.stream().map(ProjectProfession::getProfessionId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ ReportProfessionProgress item = new ReportProfessionProgress();
|
|
|
+ item.setAuditState(1);
|
|
|
+ reportProfessionProgressService.update(item, new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).in("profession_id", collect));
|
|
|
+
|
|
|
+ //全部的专业都审核通过的情况下,更新部门待审核状态
|
|
|
+ int count = reportProfessionProgressService.count(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).ne("audit_state", 1));
|
|
|
+ if (count == 0) {
|
|
|
+ Report report = new Report();
|
|
|
+ report.setDepartmentAuditState(0);
|
|
|
reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- //专业审核或者项目审核
|
|
|
- if (list.size() > 0) {
|
|
|
- //专业待审核的状态,进行专业审核
|
|
|
- List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
- List<Integer> projectIds = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
|
|
|
-
|
|
|
- List<ProjectProfession> myProfessionList = projectProfessionMapper.selectList(new QueryWrapper<ProjectProfession>().eq("incharger_id", user.getId()).in("project_id", projectIds));
|
|
|
- if (myProfessionList.size() == 0) {
|
|
|
- httpRespMsg.setError("只有专业负责人才能进行专业审核");
|
|
|
- } else {
|
|
|
- List<Integer> collect = myProfessionList.stream().map(ProjectProfession::getProfessionId).collect(Collectors.toList());
|
|
|
-
|
|
|
- ReportProfessionProgress item = new ReportProfessionProgress();
|
|
|
- item.setAuditState(1);
|
|
|
- reportProfessionProgressService.update(item, new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).in("profession_id", collect));
|
|
|
-
|
|
|
- //全部的专业都审核通过的情况下,更新部门待审核状态
|
|
|
- int count = reportProfessionProgressService.count(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).ne("audit_state", 1));
|
|
|
- if (count == 0) {
|
|
|
- Report report = new Report();
|
|
|
- report.setDepartmentAuditState(0);
|
|
|
- reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
|
|
|
- }
|
|
|
- }
|
|
|
+ Report report = reportMapper.selectById(ids.get(0));
|
|
|
+ //部门待审核,部门审核通过
|
|
|
+ if (report.getDepartmentAuditState() == 0) {
|
|
|
+ report = new Report();
|
|
|
+ report.setDepartmentAuditState(1);
|
|
|
+ reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
|
|
|
} else {
|
|
|
- Report report = reportMapper.selectById(ids.get(0));
|
|
|
- //部门待审核,部门审核通过
|
|
|
- if (report.getDepartmentAuditState() == 0) {
|
|
|
- report = new Report();
|
|
|
- report.setDepartmentAuditState(1);
|
|
|
- reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
|
|
|
- } else {
|
|
|
- //最终进行项目经理审核
|
|
|
- reportMapper.update(new Report().setState(1).setProjectAuditTime(LocalDateTime.now()),
|
|
|
- new QueryWrapper<Report>().in("id", ids));
|
|
|
- List<Report> finalReportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
- List<ReportProfessionProgress> professionProgressList = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids));
|
|
|
-
|
|
|
- //审核通过时,才会更新到个人的专业进度上去
|
|
|
- professionProgressList.forEach(pro->{
|
|
|
- PpMembs memb = new PpMembs();
|
|
|
- memb.setProgress(pro.getProgress());
|
|
|
- Report report1 = finalReportList.stream().filter(f -> f.getId().equals(pro.getReportId())).findFirst().get();
|
|
|
- Integer projectId = report1.getProjectId();
|
|
|
- //更新个人在项目中的专业进度
|
|
|
- ppMembsMapper.update(memb, new QueryWrapper<PpMembs>().eq("project_id", projectId)
|
|
|
- .eq("memb_id", report1.getCreatorId()).eq("profession_id", pro.getProfessionId()));
|
|
|
- });
|
|
|
- notifyLeaders(finalReportList);
|
|
|
- }
|
|
|
+ //最终进行项目经理审核
|
|
|
+ reportMapper.update(new Report().setState(1).setProjectAuditTime(LocalDateTime.now()),
|
|
|
+ new QueryWrapper<Report>().in("id", ids));
|
|
|
+ List<Report> finalReportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
+ List<ReportProfessionProgress> professionProgressList = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids));
|
|
|
+
|
|
|
+ //审核通过时,才会更新到个人的专业进度上去
|
|
|
+ professionProgressList.forEach(pro->{
|
|
|
+ PpMembs memb = new PpMembs();
|
|
|
+ memb.setProgress(pro.getProgress());
|
|
|
+ Report report1 = finalReportList.stream().filter(f -> f.getId().equals(pro.getReportId())).findFirst().get();
|
|
|
+ Integer projectId = report1.getProjectId();
|
|
|
+ //更新个人在项目中的专业进度
|
|
|
+ ppMembsMapper.update(memb, new QueryWrapper<PpMembs>().eq("project_id", projectId)
|
|
|
+ .eq("memb_id", report1.getCreatorId()).eq("profession_id", pro.getProfessionId()));
|
|
|
+ });
|
|
|
+ notifyLeaders(finalReportList);
|
|
|
}
|
|
|
}
|
|
|
- } 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);
|
|
|
- if (timeType.getReportAuditType() == 2) {
|
|
|
- //先按分组审核,再进行项目经理审核
|
|
|
- List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, project_id, project_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, 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);
|
|
|
- }
|
|
|
+ }
|
|
|
+ } 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);
|
|
|
+ if (timeType.getReportAuditType() == 2) {
|
|
|
+ //先按分组审核,再进行项目经理审核
|
|
|
+ List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, project_id, project_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, 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);
|
|
|
+ }
|
|
|
+ //批量更新
|
|
|
+ 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 {
|
|
|
- //之前的流程逻辑,综合了一层项目审核,或者一层任务分组审核。 可叠加部门审批流
|
|
|
- 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));
|
|
|
+ //按流程走
|
|
|
+ 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));
|
|
|
+ }
|
|
|
} 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 (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;
|
|
|
+ }
|
|
|
}
|
|
|
+ reportMapper.update(upR,
|
|
|
+ new QueryWrapper<Report>().in("id", ids));
|
|
|
} else {
|
|
|
- if (item.getIsDeptAudit() == 1) {
|
|
|
- //当前是部门审核,获取审核部门id
|
|
|
+ //当前的先审核通过
|
|
|
+ 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();
|
|
|
- Integer auditDeptid = item.getAuditDeptid();
|
|
|
for (int m=0;m<settings.size(); m++) {
|
|
|
- if (auditDeptid.equals(settings.get(m).getAuditDeptId()) && m < settings.size() -1) {
|
|
|
+ if (settings.get(m).getIsDeptAudit()== 0) {//找到项目审核的那个节点
|
|
|
AuditWorkflowTimeSetting nextNode = settings.get(m + 1);
|
|
|
upR.setIsDeptAudit(nextNode.getIsDeptAudit());
|
|
|
if (upR.getIsDeptAudit() == 1) {
|
|
@@ -1288,107 +1327,74 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- 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) {
|
|
|
- //没有其他待审核的项目了,流程往下走
|
|
|
- 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;
|
|
|
+ //判断下一个审核节点(部门审核)的审核人和当前审核的是不是同一个人,如果是的,则可直接进入下一步审核或者结束
|
|
|
+ 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));
|
|
|
}
|
|
|
+ } 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));
|
|
|
- String pNames = projectList.stream().map(Project::getProjectName).collect(Collectors.joining(", ", "[", "]"));
|
|
|
- //对导入审核,添加记录
|
|
|
- int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
|
|
|
- ReportAuditLog log = new ReportAuditLog();
|
|
|
- log.setAuditChannel(channel);
|
|
|
- log.setCompanyId(company.getId());
|
|
|
- log.setResult("通过");
|
|
|
- log.setUserId(user.getId());
|
|
|
- log.setUserName(user.getName());
|
|
|
- log.setProjectName(pNames);
|
|
|
- reportAuditLogMapper.insert(log);
|
|
|
- //员工的日期
|
|
|
- ReportAlogMembdate membdate = new ReportAlogMembdate();
|
|
|
- membdate.setRlogId(log.getId());
|
|
|
- membdate.setState(1);//通过
|
|
|
- membdate.setCreateDate(oneReport.getCreateDate());
|
|
|
- membdate.setUserId(oneReport.getCreatorId());
|
|
|
- membdate.setUserName(userMapper.selectById(oneReport.getCreatorId()).getName());
|
|
|
- reportAlogMembdateMapper.insert(membdate);
|
|
|
+ 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));
|
|
|
+ String pNames = projectList.stream().map(Project::getProjectName).collect(Collectors.joining(", ", "[", "]"));
|
|
|
+ //对导入审核,添加记录
|
|
|
+ int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
|
|
|
+ ReportAuditLog log = new ReportAuditLog();
|
|
|
+ log.setAuditChannel(channel);
|
|
|
+ log.setCompanyId(company.getId());
|
|
|
+ log.setResult("通过");
|
|
|
+ log.setUserId(user.getId());
|
|
|
+ log.setUserName(user.getName());
|
|
|
+ log.setProjectName(pNames);
|
|
|
+ reportAuditLogMapper.insert(log);
|
|
|
+ //员工的日期
|
|
|
+ ReportAlogMembdate membdate = new ReportAlogMembdate();
|
|
|
+ membdate.setRlogId(log.getId());
|
|
|
+ membdate.setState(1);//通过
|
|
|
+ membdate.setCreateDate(oneReport.getCreateDate());
|
|
|
+ membdate.setUserId(oneReport.getCreatorId());
|
|
|
+ membdate.setUserName(userMapper.selectById(oneReport.getCreatorId()).getName());
|
|
|
+ reportAlogMembdateMapper.insert(membdate);
|
|
|
|
|
|
- //日报的审核过程记录
|
|
|
- saveApproveReportLog(reportList, user.getId(), user.getName());
|
|
|
- }
|
|
|
- } catch (NullPointerException e) {
|
|
|
- httpRespMsg.setError("验证失败");
|
|
|
- e.printStackTrace();
|
|
|
- return httpRespMsg;
|
|
|
+ //日报的审核过程记录
|
|
|
+ saveApproveReportLog(reportList, user.getId(), user.getName());
|
|
|
}
|
|
|
return httpRespMsg;
|
|
|
}
|
|
@@ -1510,132 +1516,127 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
@Override
|
|
|
public HttpRespMsg denyReport(String date, String reportIds, String reason, Integer isDepartment, HttpServletRequest request) {
|
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
- try {
|
|
|
- User user = userMapper.selectById(request.getHeader("Token"));
|
|
|
- Company company = companyMapper.selectById(user.getCompanyId());
|
|
|
- final List<Long> ids = ListUtil.convertIdsArrayToList(reportIds);
|
|
|
- if (reason == null) {
|
|
|
- reason = "-";
|
|
|
- }
|
|
|
- Report oneReport = reportMapper.selectById(ids.get(0));
|
|
|
- int oldState = oneReport.getState();
|
|
|
- if (company.getPackageEngineering() == 1) {
|
|
|
- //检查是否有专业进度待审核
|
|
|
- List<ReportProfessionProgress> list = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).eq("audit_state", 0));
|
|
|
- if (isDepartment != null) {
|
|
|
- if (list.size() > 0) {
|
|
|
- httpRespMsg.setError("只有专业审核全部通过才可操作");
|
|
|
- return httpRespMsg;
|
|
|
- } else {
|
|
|
- Report report = oneReport;
|
|
|
- //部门待审核,部门审核驳回
|
|
|
- if (report.getDepartmentAuditState() == 0) {
|
|
|
- report = new Report();
|
|
|
- report.setDepartmentAuditState(2);
|
|
|
- reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
|
|
|
- }
|
|
|
- }
|
|
|
+ User user = userMapper.selectById(request.getHeader("Token"));
|
|
|
+ Company company = companyMapper.selectById(user.getCompanyId());
|
|
|
+ final List<Long> ids = ListUtil.convertIdsArrayToList(reportIds);
|
|
|
+ if (reason == null) {
|
|
|
+ reason = "-";
|
|
|
+ }
|
|
|
+ Report oneReport = reportMapper.selectById(ids.get(0));
|
|
|
+ int oldState = oneReport.getState();
|
|
|
+ if (company.getPackageEngineering() == 1) {
|
|
|
+ //检查是否有专业进度待审核
|
|
|
+ List<ReportProfessionProgress> list = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).eq("audit_state", 0));
|
|
|
+ if (isDepartment != null) {
|
|
|
+ if (list.size() > 0) {
|
|
|
+ httpRespMsg.setError("只有专业审核全部通过才可操作");
|
|
|
+ return httpRespMsg;
|
|
|
} else {
|
|
|
- if (list.size() > 0) {
|
|
|
- //只能是自己负责的专业
|
|
|
- List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
- List<Integer> projectIds = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
|
|
|
-
|
|
|
- List<ProjectProfession> myProfessionList = projectProfessionMapper.selectList(new QueryWrapper<ProjectProfession>().eq("incharger_id", user.getId()).in("project_id", projectIds));
|
|
|
- if (myProfessionList.size() == 0) {
|
|
|
- httpRespMsg.setError("只有专业负责人才能进行专业审核");
|
|
|
- } else {
|
|
|
- List<Integer> collect = myProfessionList.stream().map(ProjectProfession::getProfessionId).collect(Collectors.toList());
|
|
|
- //专业待审核的状态,进行专业审核驳回
|
|
|
- ReportProfessionProgress item = new ReportProfessionProgress();
|
|
|
- item.setAuditState(2);
|
|
|
- reportProfessionProgressService.update(item, new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).in("profession_id", collect));
|
|
|
- }
|
|
|
- } else {
|
|
|
- Report report = reportMapper.selectById(ids.get(0));
|
|
|
- //部门待审核,部门审核驳回
|
|
|
- if (report.getDepartmentAuditState() == 0) {
|
|
|
- report = new Report();
|
|
|
- report.setDepartmentAuditState(2);
|
|
|
- reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
|
|
|
- }
|
|
|
+ Report report = oneReport;
|
|
|
+ //部门待审核,部门审核驳回
|
|
|
+ if (report.getDepartmentAuditState() == 0) {
|
|
|
+ report = new Report();
|
|
|
+ report.setDepartmentAuditState(2);
|
|
|
+ reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
|
|
|
}
|
|
|
}
|
|
|
+ } else {
|
|
|
+ if (list.size() > 0) {
|
|
|
+ //只能是自己负责的专业
|
|
|
+ List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
+ List<Integer> projectIds = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
|
|
|
|
|
|
- }
|
|
|
- //直接进行项目经理审核驳回
|
|
|
- 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>().select("id, group_id, project_id").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);
|
|
|
+ List<ProjectProfession> myProfessionList = projectProfessionMapper.selectList(new QueryWrapper<ProjectProfession>().eq("incharger_id", user.getId()).in("project_id", projectIds));
|
|
|
+ if (myProfessionList.size() == 0) {
|
|
|
+ httpRespMsg.setError("只有专业负责人才能进行专业审核");
|
|
|
+ } else {
|
|
|
+ List<Integer> collect = myProfessionList.stream().map(ProjectProfession::getProfessionId).collect(Collectors.toList());
|
|
|
+ //专业待审核的状态,进行专业审核驳回
|
|
|
+ ReportProfessionProgress item = new ReportProfessionProgress();
|
|
|
+ item.setAuditState(2);
|
|
|
+ reportProfessionProgressService.update(item, new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).in("profession_id", collect));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Report report = reportMapper.selectById(ids.get(0));
|
|
|
+ //部门待审核,部门审核驳回
|
|
|
+ if (report.getDepartmentAuditState() == 0) {
|
|
|
+ report = new Report();
|
|
|
+ report.setDepartmentAuditState(2);
|
|
|
+ reportMapper.update(report, new QueryWrapper<Report>().in("id", ids));
|
|
|
+ }
|
|
|
}
|
|
|
- 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(", ", "[", "]"));
|
|
|
- String str = null;
|
|
|
- String fillUserId = null;
|
|
|
- if (oneReport.getState() == -1) {//待部门直属领导审核
|
|
|
- str = "您"+date+"导入的日报中"+pNames+"项目被["+user.getName()+"]驳回。原因:" + reason+",请重新导入。";
|
|
|
- fillUserId = oneReport.getFillUserid();
|
|
|
- } else {
|
|
|
- str = "您"+date+"填写的日报中"+pNames+"项目被["+user.getName()+"]驳回。原因:" + reason;
|
|
|
- fillUserId = oneReport.getCreatorId();
|
|
|
}
|
|
|
|
|
|
- informationMapper.insert(new Information().setType(0).setContent(date).setUserId(fillUserId).setMsg(str));
|
|
|
- //对导入审核,添加记录
|
|
|
- int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
|
|
|
- ReportAuditLog log = new ReportAuditLog();
|
|
|
- log.setAuditChannel(channel);//导入审核
|
|
|
- log.setCompanyId(company.getId());
|
|
|
- log.setResult("驳回"+(StringUtils.isEmpty(reason)?"":"("+reason+")"));
|
|
|
- log.setUserId(user.getId());
|
|
|
- log.setUserName(user.getName());
|
|
|
- log.setProjectName(pNames);
|
|
|
- reportAuditLogMapper.insert(log);
|
|
|
- //员工的日期
|
|
|
- ReportAlogMembdate membdate = new ReportAlogMembdate();
|
|
|
- membdate.setRlogId(log.getId());
|
|
|
- membdate.setState(2);//驳回
|
|
|
- membdate.setCreateDate(oneReport.getCreateDate());
|
|
|
- membdate.setUserId(oneReport.getCreatorId());
|
|
|
- membdate.setUserName(userMapper.selectById(oneReport.getCreatorId()).getName());
|
|
|
- reportAlogMembdateMapper.insert(membdate);
|
|
|
- saveDenyReportLog(rList, user.getId(), user.getName(), reason);
|
|
|
- //发送企业微信通知消息
|
|
|
- User reporter = userMapper.selectById(fillUserId);
|
|
|
- String corpwxUserid = reporter.getCorpwxUserid();
|
|
|
- //先判断钉钉
|
|
|
- if (reporter.getDingdingUserid() != null) {
|
|
|
- projectMapper.selectById(oneReport.getProjectId()).getProjectName();
|
|
|
- companyDingdingService.sendRejectReportMsg(reporter.getCompanyId(), date, pNames, reason, user.getName(), reporter.getDingdingUserid());
|
|
|
- }
|
|
|
- if (corpwxUserid != null) {
|
|
|
- WxCorpInfo info = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", company.getId()));
|
|
|
- wxCorpInfoService.sendWXCorpMsg(info, corpwxUserid, str);
|
|
|
- } else if (reporter.getWxOpenid() != null){
|
|
|
- //发送个人微信通知
|
|
|
- pushReject(str, reporter, user.getName(), reason);
|
|
|
+ }
|
|
|
+ //直接进行项目经理审核驳回
|
|
|
+ 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>().select("id, group_id, project_id, creator_id, create_date").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(", ", "[", "]"));
|
|
|
+ String str = null;
|
|
|
+ String fillUserId = null;
|
|
|
+ if (oneReport.getState() == -1) {//待部门直属领导审核
|
|
|
+ str = "您"+date+"导入的日报中"+pNames+"项目被["+user.getName()+"]驳回。原因:" + reason+",请重新导入。";
|
|
|
+ fillUserId = oneReport.getFillUserid();
|
|
|
+ } else {
|
|
|
+ str = "您"+date+"填写的日报中"+pNames+"项目被["+user.getName()+"]驳回。原因:" + reason;
|
|
|
+ fillUserId = oneReport.getCreatorId();
|
|
|
+ }
|
|
|
|
|
|
- } catch (NullPointerException e) {
|
|
|
- httpRespMsg.setError("验证失败");
|
|
|
- return httpRespMsg;
|
|
|
+ informationMapper.insert(new Information().setType(0).setContent(date).setUserId(fillUserId).setMsg(str));
|
|
|
+ //对导入审核,添加记录
|
|
|
+ int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
|
|
|
+ ReportAuditLog log = new ReportAuditLog();
|
|
|
+ log.setAuditChannel(channel);//导入审核
|
|
|
+ log.setCompanyId(company.getId());
|
|
|
+ log.setResult("驳回"+(StringUtils.isEmpty(reason)?"":"("+reason+")"));
|
|
|
+ log.setUserId(user.getId());
|
|
|
+ log.setUserName(user.getName());
|
|
|
+ log.setProjectName(pNames);
|
|
|
+ reportAuditLogMapper.insert(log);
|
|
|
+ //员工的日期
|
|
|
+ ReportAlogMembdate membdate = new ReportAlogMembdate();
|
|
|
+ membdate.setRlogId(log.getId());
|
|
|
+ membdate.setState(2);//驳回
|
|
|
+ membdate.setCreateDate(oneReport.getCreateDate());
|
|
|
+ membdate.setUserId(oneReport.getCreatorId());
|
|
|
+ membdate.setUserName(userMapper.selectById(oneReport.getCreatorId()).getName());
|
|
|
+ reportAlogMembdateMapper.insert(membdate);
|
|
|
+ saveDenyReportLog(rList, user.getId(), user.getName(), reason);
|
|
|
+ //发送驳回通知消息
|
|
|
+ User reporter = userMapper.selectById(fillUserId);
|
|
|
+ String corpwxUserid = reporter.getCorpwxUserid();
|
|
|
+ //先判断钉钉
|
|
|
+ if (reporter.getDingdingUserid() != null) {
|
|
|
+ projectMapper.selectById(oneReport.getProjectId()).getProjectName();
|
|
|
+ companyDingdingService.sendRejectReportMsg(reporter.getCompanyId(), date, pNames, reason, user.getName(), reporter.getDingdingUserid());
|
|
|
+ }
|
|
|
+ if (corpwxUserid != null) {
|
|
|
+ WxCorpInfo info = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", company.getId()));
|
|
|
+ wxCorpInfoService.sendWXCorpMsg(info, corpwxUserid, str);
|
|
|
+ } else if (reporter.getWxOpenid() != null){
|
|
|
+ //发送个人微信通知
|
|
|
+ pushReject(str, reporter, user.getName(), reason);
|
|
|
}
|
|
|
+
|
|
|
return httpRespMsg;
|
|
|
}
|
|
|
|
|
@@ -2081,7 +2082,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public HttpRespMsg batchDenyReport(String reportIds, Integer isDepartment, HttpServletRequest request) {
|
|
|
+ public HttpRespMsg batchDenyReport(String reportIds, Integer isDepartment, String reason, HttpServletRequest request) {
|
|
|
User user = userMapper.selectById(request.getHeader("Token"));
|
|
|
Company company = companyMapper.selectById(user.getCompanyId());
|
|
|
final List<Long> ids = ListUtil.convertIdsArrayToList(reportIds);
|
|
@@ -2132,7 +2133,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
Report oneReport = reportMapper.selectById(ids.get(0));
|
|
|
int oldState = oneReport.getState();
|
|
|
int channel = oldState == -1?0:1; //0-导入审核, 项目报告审核
|
|
|
- List<Report> rList = reportMapper.selectList(new QueryWrapper<Report>().select("id, group_id, project_id").in("id", ListUtil.convertIdsArrayToList(reportIds)));
|
|
|
+ List<Report> rList = reportMapper.selectList(new QueryWrapper<Report>().select("id, group_id, project_id, creator_id, create_date").in("id", ListUtil.convertIdsArrayToList(reportIds)));
|
|
|
if (timeTypeMapper.selectById(company.getId()).getReportAuditType() == 2) {
|
|
|
//退回任务分组审核状态
|
|
|
List<Report> newList = new ArrayList<>();
|
|
@@ -2157,13 +2158,13 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
ReportAuditLog log = new ReportAuditLog();
|
|
|
log.setAuditChannel(channel);//导入审核
|
|
|
log.setCompanyId(company.getId());
|
|
|
- log.setResult("批量驳回");
|
|
|
+ log.setResult("批量驳回,原因:" + (StringUtils.isEmpty(reason)?"无":reason));
|
|
|
log.setUserId(user.getId());
|
|
|
log.setUserName(user.getName());
|
|
|
log.setProjectName(s);
|
|
|
reportAuditLogMapper.insert(log);
|
|
|
List<Report> allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
|
|
|
- saveDenyReportLog(allReports, user.getId(), user.getName(), null);
|
|
|
+ saveDenyReportLog(allReports, user.getId(), user.getName(), reason);
|
|
|
List<User> allUsers = userMapper.selectList(new QueryWrapper<User>().select("id, name").eq("company_id", company.getId()));
|
|
|
//当前所有员工的日期
|
|
|
List<ReportAlogMembdate> membList = new ArrayList<>();
|
|
@@ -2188,8 +2189,31 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
reportAlogMembdateService.saveBatch(membList);
|
|
|
}
|
|
|
//直接进行项目经理审核驳回
|
|
|
+
|
|
|
reportMapper.update(new Report().setState(2),
|
|
|
new QueryWrapper<Report>().in("id", ListUtil.convertIdsArrayToList(reportIds)));
|
|
|
+// asyncTaskExecutor.execute(new Runnable() {
|
|
|
+// @Override
|
|
|
+// public void run() {
|
|
|
+//
|
|
|
+// //开启线程任务进行发送驳回提醒
|
|
|
+// //发送驳回通知消息
|
|
|
+// User reporter = userMapper.selectById(fillUserId);
|
|
|
+// String corpwxUserid = reporter.getCorpwxUserid();
|
|
|
+// //先判断钉钉
|
|
|
+// if (reporter.getDingdingUserid() != null) {
|
|
|
+// projectMapper.selectById(oneReport.getProjectId()).getProjectName();
|
|
|
+// companyDingdingService.sendRejectReportMsg(reporter.getCompanyId(), date, pNames, reason, user.getName(), reporter.getDingdingUserid());
|
|
|
+// }
|
|
|
+// if (corpwxUserid != null) {
|
|
|
+// WxCorpInfo info = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", company.getId()));
|
|
|
+// wxCorpInfoService.sendWXCorpMsg(info, corpwxUserid, str);
|
|
|
+// } else if (reporter.getWxOpenid() != null){
|
|
|
+// //发送个人微信通知
|
|
|
+// pushReject(str, reporter, user.getName(), reason);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// });
|
|
|
|
|
|
return httpRespMsg;
|
|
|
}
|