|
|
@@ -171,6 +171,8 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
BpmTaskApproveReqVO agreeReqVO = new BpmTaskApproveReqVO();
|
|
|
agreeReqVO.setId(task.getId());
|
|
|
agreeReqVO.setReason("[首次提交]");
|
|
|
+ agreeReqVO.setTaskStatus(Integer.valueOf(DictDataConstants.OA_AUDIT_STATUS_COMMITTED));
|
|
|
+ taskService.setVariable(task.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_COMMITTED);
|
|
|
taskService.setVariable(task.getId(), "auditPass", "true");
|
|
|
bpmTaskService.approveTask(loginUserId, agreeReqVO);
|
|
|
|
|
|
@@ -204,21 +206,35 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
if (currentTask == null) {
|
|
|
throw exception(ErrorCodeConstants.TASK_NOT_EXISTS);
|
|
|
}
|
|
|
+ // 先更新为审批中
|
|
|
+ taskService.setVariable(currentTask.getId(), BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_AUDITING);
|
|
|
LambdaQueryWrapper<OaUniversalDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
lambdaQueryWrapper.eq(OaUniversalDO::getProcInstId, currentTask.getProcessInstanceId());
|
|
|
OaUniversalDO oaUniversal = oaUniversalMapper.selectOne(lambdaQueryWrapper);
|
|
|
+ // 如果是最后一个人审批同意,设置流程审批状态为已审核
|
|
|
+ String[] auditPersons = oaUniversal.getStartUserSelectAssignees().split(",");
|
|
|
+ String lastAuditPerson = Arrays.stream(auditPersons)
|
|
|
+ .reduce((first, second) -> second)
|
|
|
+ .orElse(null);
|
|
|
+ if (currentTask.getAssignee().equals(lastAuditPerson)) {
|
|
|
+ // 更新为已审核(暂时未生效,未找到原因,先不处理)
|
|
|
+ taskService.setVariable(agreeReqVO.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_AUDITED);
|
|
|
+ }
|
|
|
// 审批同意
|
|
|
String reason = "[同意]";
|
|
|
if (StrUtil.isNotBlank(agreeReqVO.getReason())) {
|
|
|
reason = reason + agreeReqVO.getReason();
|
|
|
}
|
|
|
agreeReqVO.setReason(reason);
|
|
|
+ agreeReqVO.setTaskStatus(Integer.valueOf(DictDataConstants.OA_AUDIT_STATUS_AUDITING));
|
|
|
taskService.setVariable(agreeReqVO.getId(), "auditPass", "true");
|
|
|
bpmTaskService.approveTask(loginUserId, agreeReqVO);
|
|
|
|
|
|
Task nextTask = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).singleResult();
|
|
|
OaUniversalDO oaUniversalDO = new OaUniversalDO();
|
|
|
if (nextTask != null) {
|
|
|
+ // 如果审批人重复,实际未结束,再次更新为审核中
|
|
|
+ taskService.setVariable(nextTask.getId(), BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_AUDITING);
|
|
|
oaUniversalDO.setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_AUDITING)
|
|
|
.setCurrentAuditEmployeeId(Long.valueOf(nextTask.getAssignee()))
|
|
|
.setFinalAuditDate(LocalDateTime.now())
|
|
|
@@ -251,7 +267,9 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
|
|
|
disagreeReqVO.setTargetTaskDefinitionKey("modifyApply");
|
|
|
disagreeReqVO.setReason("[驳回]" + disagreeReqVO.getReason());
|
|
|
+ disagreeReqVO.setTaskStatus(Integer.valueOf(DictDataConstants.OA_AUDIT_STATUS_RETURNED));
|
|
|
taskService.setVariable(disagreeReqVO.getId(), "auditPass", "false");
|
|
|
+ taskService.setVariable(disagreeReqVO.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_RETURNED);
|
|
|
bpmTaskService.returnTask(loginUserId, disagreeReqVO);
|
|
|
|
|
|
Task nextTask = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).singleResult();
|
|
|
@@ -295,6 +313,8 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
reason = reason + returnReqVO.getReason();
|
|
|
}
|
|
|
returnReqVO.setReason(reason);
|
|
|
+ returnReqVO.setTaskStatus(Integer.valueOf(DictDataConstants.OA_AUDIT_STATUS_RECALLED));
|
|
|
+ taskService.setVariable(currentTask.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_RECALLED);
|
|
|
bpmTaskService.revocationTask(loginUserId, returnReqVO);
|
|
|
|
|
|
Task nextTask = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).singleResult();
|
|
|
@@ -331,6 +351,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
BpmTaskApproveReqVO approveReqVO = new BpmTaskApproveReqVO();
|
|
|
approveReqVO.setId(currentTask.getId())
|
|
|
.setReason("[再次提交]");
|
|
|
+ approveReqVO.setTaskStatus(Integer.valueOf(DictDataConstants.OA_AUDIT_STATUS_COMMITTED));
|
|
|
if (CollectionUtil.isNotEmpty(reCommitReqVO.getStartUserSelectAssignees())) {
|
|
|
// 添加审批人信息到流程参数中
|
|
|
Map<String, List<Long>> startUserSelectAssignees = new HashMap<>();
|
|
|
@@ -341,6 +362,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
oaUniversalNew.setStartUserSelectAssignees(selectAssignees.stream().map(String::valueOf).collect(Collectors.joining(",")));
|
|
|
}
|
|
|
taskService.setVariable(currentTask.getId(), "auditPass", "true");
|
|
|
+ taskService.setVariable(currentTask.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_COMMITTED);
|
|
|
// 再次提交,和审批通过逻辑相同
|
|
|
bpmTaskService.approveTask(loginUserId, approveReqVO);
|
|
|
|
|
|
@@ -373,7 +395,9 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
BpmTaskApproveReqVO approveReqVO = new BpmTaskApproveReqVO();
|
|
|
approveReqVO.setId(currentTask.getId())
|
|
|
.setReason("[关闭]");
|
|
|
+ approveReqVO.setTaskStatus(Integer.valueOf(DictDataConstants.OA_AUDIT_STATUS_CLOSED));
|
|
|
taskService.setVariable(currentTask.getId(), "auditPass", "false");
|
|
|
+ taskService.setVariable(currentTask.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_CLOSED);
|
|
|
// 关闭,使用审批通过的方法实现
|
|
|
bpmTaskService.approveTask(loginUserId, approveReqVO);
|
|
|
|
|
|
@@ -397,6 +421,54 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
public OaUniversalRespVO getOaUniversal(Long id) {
|
|
|
OaUniversalDO oaUniversalDO = oaUniversalMapper.selectById(id);
|
|
|
OaUniversalRespVO oaUniversalRespVO = BeanUtils.toBean(oaUniversalDO, OaUniversalRespVO.class);
|
|
|
+ if (oaUniversalDO.getDeptId() != null) {
|
|
|
+ DeptRespDTO dept = deptApi.getDept(oaUniversalDO.getDeptId());
|
|
|
+ if (dept != null) {
|
|
|
+ oaUniversalRespVO.setDeptName(dept.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 附件列表
|
|
|
+ List<FileDTO> fileList = fileApi.getFileDTOListByBiz(oaUniversalDO.getUniversalId());
|
|
|
+ oaUniversalRespVO.setFileList(fileList);
|
|
|
+
|
|
|
+ // 审批记录
|
|
|
+ if (StrUtil.isNotBlank(oaUniversalDO.getProcInstId())) {
|
|
|
+ List<BpmTaskRespVO> auditRecordList = bpmTaskService.getAuditRecordListByProcessInstanceId(oaUniversalDO.getProcInstId());
|
|
|
+ oaUniversalRespVO.setAuditRecordList(auditRecordList);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 审批人
|
|
|
+ String startUserSelectAssignees = oaUniversalDO.getStartUserSelectAssignees();
|
|
|
+ if (StrUtil.isNotEmpty(startUserSelectAssignees)) {
|
|
|
+ List<Long> userIdList = Arrays.stream(startUserSelectAssignees.split(","))
|
|
|
+ .map(Long::valueOf).collect(Collectors.toList());
|
|
|
+ List<AdminUserRespDTO> userList = adminUserApi.getUserList(userIdList);
|
|
|
+ List<AdminUserRespDTO> auditUserList = new ArrayList<>();
|
|
|
+ for (Long userId : userIdList) {
|
|
|
+ for (AdminUserRespDTO adminUserRespDTO : userList) {
|
|
|
+ if (Objects.equals(userId, adminUserRespDTO.getId())) {
|
|
|
+ auditUserList.add(adminUserRespDTO);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ oaUniversalRespVO.setAuditUserList(auditUserList);
|
|
|
+ }
|
|
|
+
|
|
|
+ return oaUniversalRespVO;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public OaUniversalRespVO getOaUniversalByProcInstId(String procInstId) {
|
|
|
+ OaUniversalDO oaUniversalDO = oaUniversalMapper.selectOne(OaUniversalDO::getProcInstId, procInstId);
|
|
|
+ OaUniversalRespVO oaUniversalRespVO = BeanUtils.toBean(oaUniversalDO, OaUniversalRespVO.class);
|
|
|
+ if (oaUniversalDO.getDeptId() != null) {
|
|
|
+ DeptRespDTO dept = deptApi.getDept(oaUniversalDO.getDeptId());
|
|
|
+ if (dept != null) {
|
|
|
+ oaUniversalRespVO.setDeptName(dept.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
// 附件列表
|
|
|
List<FileDTO> fileList = fileApi.getFileDTOListByBiz(oaUniversalDO.getUniversalId());
|