|
|
@@ -6,7 +6,9 @@ import cn.hutool.core.util.StrUtil;
|
|
|
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
+import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
+import cn.iocoder.yudao.framework.security.core.LoginUser;
|
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
|
|
|
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
|
|
|
@@ -22,6 +24,8 @@ import cn.iocoder.yudao.module.bpm.enums.DictDataConstants;
|
|
|
import cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants;
|
|
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmConstants;
|
|
|
import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService;
|
|
|
+import cn.iocoder.yudao.module.employee.api.EmployeeApi;
|
|
|
+import cn.iocoder.yudao.module.employee.api.dto.EmployeeRespDTO;
|
|
|
import cn.iocoder.yudao.module.infra.api.file.FileApi;
|
|
|
import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
|
|
|
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
|
|
|
@@ -81,14 +85,18 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
@Resource
|
|
|
private DeptApi deptApi;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private EmployeeApi employeeApi;
|
|
|
+
|
|
|
@Override
|
|
|
- @Transactional
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Long stagingOaUniversal(OaUniversalSaveReqVO stagingReqVO) {
|
|
|
// 登录人信息
|
|
|
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
|
|
AdminUserRespDTO loginUser = adminUserApi.getUser(loginUserId);
|
|
|
Objects.requireNonNull(loginUser, "登录用户不能为空");
|
|
|
- // TODO DP 根据登录人查询出对应的员工信息
|
|
|
+ // 根据登录人查询出对应的员工信息
|
|
|
+ EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
|
|
|
|
|
|
OaUniversalDO oaUniversal = BeanUtils.toBean(stagingReqVO, OaUniversalDO.class);
|
|
|
if (StringUtils.isBlank(oaUniversal.getUniversalId())) {
|
|
|
@@ -96,12 +104,14 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
String uuid = IdUtil.fastSimpleUUID();
|
|
|
oaUniversal.setUniversalId(uuid);
|
|
|
}
|
|
|
- oaUniversal.setEmployeeId(loginUser.getId());
|
|
|
- oaUniversal.setEmployeeName(loginUser.getNickname());
|
|
|
- oaUniversal.setEmployeePhone(loginUser.getMobile());
|
|
|
- oaUniversal.setDeptId(loginUser.getDeptId());
|
|
|
- oaUniversal.setPosition("员工职位");
|
|
|
- oaUniversal.setUserId(loginUser.getId());
|
|
|
+ oaUniversal.setEmployeeId(loginEmployee.getId());
|
|
|
+ oaUniversal.setEmployeeName(loginEmployee.getName());
|
|
|
+ oaUniversal.setEmployeePhone(loginEmployee.getPhone());
|
|
|
+ oaUniversal.setDeptId(loginEmployee.getDeptId());
|
|
|
+ oaUniversal.setPostId(loginEmployee.getPostId());
|
|
|
+ oaUniversal.setPosition(loginEmployee.getPosition());
|
|
|
+ oaUniversal.setCreator(String.valueOf(loginEmployee.getId()));
|
|
|
+ oaUniversal.setUserId(loginUserId);
|
|
|
oaUniversal.setUserPhone(loginUser.getMobile());
|
|
|
oaUniversal.setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_STAGING);
|
|
|
oaUniversal.setInfoSource("0");
|
|
|
@@ -121,7 +131,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Transactional
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Long commitOaUniversal(OaUniversalSaveReqVO commitReqVO) {
|
|
|
if (CollectionUtil.isEmpty(commitReqVO.getStartUserSelectAssignees())) {
|
|
|
throw exception(ErrorCodeConstants.TASK_CREATE_FAIL_NO_START_SELECT_ASSIGNEE);
|
|
|
@@ -130,7 +140,8 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
|
|
AdminUserRespDTO loginUser = adminUserApi.getUser(loginUserId);
|
|
|
Objects.requireNonNull(loginUser, "登录用户不能为空");
|
|
|
- // TODO DP 根据登录人查询出对应的员工信息
|
|
|
+ // 根据登录人查询出对应的员工信息
|
|
|
+ EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
|
|
|
|
|
|
OaUniversalDO oaUniversal = BeanUtils.toBean(commitReqVO, OaUniversalDO.class);
|
|
|
if (StringUtils.isBlank(oaUniversal.getUniversalId())) {
|
|
|
@@ -138,11 +149,13 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
String uuid = IdUtil.fastSimpleUUID();
|
|
|
oaUniversal.setUniversalId(uuid);
|
|
|
}
|
|
|
- oaUniversal.setEmployeeId(loginUser.getId());
|
|
|
- oaUniversal.setEmployeeName(loginUser.getNickname());
|
|
|
- oaUniversal.setEmployeePhone(loginUser.getMobile());
|
|
|
- oaUniversal.setDeptId(loginUser.getDeptId());
|
|
|
- oaUniversal.setPosition("员工职位");
|
|
|
+ oaUniversal.setEmployeeId(loginEmployee.getId());
|
|
|
+ oaUniversal.setEmployeeName(loginEmployee.getName());
|
|
|
+ oaUniversal.setEmployeePhone(loginEmployee.getPhone());
|
|
|
+ oaUniversal.setDeptId(loginEmployee.getDeptId());
|
|
|
+ oaUniversal.setPostId(loginEmployee.getPostId());
|
|
|
+ oaUniversal.setPosition(loginEmployee.getPosition());
|
|
|
+ oaUniversal.setCreator(String.valueOf(loginEmployee.getId()));
|
|
|
oaUniversal.setUserId(loginUser.getId());
|
|
|
oaUniversal.setUserPhone(loginUser.getMobile());
|
|
|
oaUniversal.setInfoSource("0");
|
|
|
@@ -164,7 +177,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
List<Long> selectAssignees = commitReqVO.getStartUserSelectAssignees();
|
|
|
startUserSelectAssignees.put("approver", selectAssignees);
|
|
|
String processInstanceId = processInstanceApi
|
|
|
- .createProcessInstance(loginUser.getId(),
|
|
|
+ .createProcessInstance(loginEmployee.getId(),
|
|
|
new BpmProcessInstanceCreateReqDTO()
|
|
|
.setProcessDefinitionKey(PROCESS_KEY)
|
|
|
.setVariables(processInstanceVariables)
|
|
|
@@ -181,7 +194,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
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);
|
|
|
+ bpmTaskService.approveTask(loginEmployee.getId(), agreeReqVO);
|
|
|
|
|
|
Task nextTask = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
|
|
|
if (nextTask == null) {
|
|
|
@@ -203,11 +216,12 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Transactional
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Long agreeOaUniversal(BpmTaskApproveReqVO agreeReqVO) {
|
|
|
// 登录人信息
|
|
|
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
|
|
- // TODO DP 根据登录人查询出对应的员工信息
|
|
|
+ // 根据登录人查询出对应的员工信息
|
|
|
+ EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
|
|
|
|
|
|
Task currentTask = bpmTaskService.getTask(agreeReqVO.getId());
|
|
|
if (currentTask == null) {
|
|
|
@@ -235,7 +249,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
agreeReqVO.setReason(reason);
|
|
|
agreeReqVO.setTaskStatus(Integer.valueOf(DictDataConstants.OA_AUDIT_STATUS_AUDITING));
|
|
|
taskService.setVariable(agreeReqVO.getId(), "auditPass", "true");
|
|
|
- bpmTaskService.approveTask(loginUserId, agreeReqVO);
|
|
|
+ bpmTaskService.approveTask(loginEmployee.getId(), agreeReqVO);
|
|
|
|
|
|
Task nextTask = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).singleResult();
|
|
|
OaUniversalDO oaUniversalDO = new OaUniversalDO();
|
|
|
@@ -253,7 +267,8 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
.setFinalAuditDate(LocalDateTime.now())
|
|
|
.setId(oaUniversal.getId());
|
|
|
|
|
|
- // TODO 复制业务单据信息到业务模块单据表
|
|
|
+ // 复制业务单据信息到业务模块单据表
|
|
|
+ // 通用审批没有业务模块
|
|
|
|
|
|
}
|
|
|
oaUniversalMapper.updateById(oaUniversalDO);
|
|
|
@@ -264,11 +279,12 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Transactional
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Long disagreeOaUniversal(BpmTaskReturnReqVO disagreeReqVO) {
|
|
|
// 登录人信息
|
|
|
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
|
|
- // TODO DP 根据登录人查询出对应的员工信息
|
|
|
+ // 根据登录人查询出对应的员工信息
|
|
|
+ EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
|
|
|
|
|
|
Task currentTask = bpmTaskService.getTask(disagreeReqVO.getId());
|
|
|
|
|
|
@@ -277,7 +293,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
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);
|
|
|
+ bpmTaskService.returnTask(loginEmployee.getId(), disagreeReqVO);
|
|
|
|
|
|
Task nextTask = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).singleResult();
|
|
|
|
|
|
@@ -299,7 +315,8 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
public Long revocationOaUniversal(BpmTaskApproveReqVO revocationReqVO) {
|
|
|
// 登录人信息
|
|
|
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
|
|
- // TODO DP 根据登录人查询出对应的员工信息
|
|
|
+ // 根据登录人查询出对应的员工信息
|
|
|
+ EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
|
|
|
|
|
|
Task currentTask = bpmTaskService.getTask(revocationReqVO.getId());
|
|
|
if (currentTask == null) {
|
|
|
@@ -309,7 +326,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
.eq(OaUniversalDO::getProcInstId, currentTask.getProcessInstanceId());
|
|
|
OaUniversalDO oaUniversalDO = oaUniversalMapper.selectOne(lambdaQueryWrapper);
|
|
|
if (!DictDataConstants.OA_AUDIT_STATUS_COMMITTED.equals(oaUniversalDO.getAuditStatus())
|
|
|
- || !Objects.equals(String.valueOf(loginUserId), oaUniversalDO.getCreator())) {
|
|
|
+ || !Objects.equals(String.valueOf(loginEmployee.getId()), oaUniversalDO.getCreator())) {
|
|
|
throw ServiceExceptionUtil.exception(ErrorCodeConstants.TASK_REVOCATION_NOT_ALLOWED);
|
|
|
}
|
|
|
|
|
|
@@ -322,7 +339,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
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);
|
|
|
+ bpmTaskService.revocationTask(loginEmployee.getId(), returnReqVO);
|
|
|
|
|
|
Task nextTask = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).singleResult();
|
|
|
|
|
|
@@ -347,7 +364,8 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
}
|
|
|
// 登录人信息
|
|
|
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
|
|
- // TODO DP 根据登录人查询出对应的员工信息
|
|
|
+ // 根据登录人查询出对应的员工信息
|
|
|
+ EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
|
|
|
|
|
|
OaUniversalDO oaUniversalNew = BeanUtils.toBean(reCommitReqVO, OaUniversalDO.class);
|
|
|
OaUniversalDO oaUniversalOld = validateOaUniversalExists(oaUniversalNew.getId());
|
|
|
@@ -371,7 +389,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
taskService.setVariable(currentTask.getId(), "auditPass", "true");
|
|
|
taskService.setVariable(currentTask.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_COMMITTED);
|
|
|
// 再次提交,和审批通过逻辑相同
|
|
|
- bpmTaskService.approveTask(loginUserId, approveReqVO);
|
|
|
+ bpmTaskService.approveTask(loginEmployee.getId(), approveReqVO);
|
|
|
|
|
|
Task nextTask = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).singleResult();
|
|
|
oaUniversalNew.setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_COMMITTED)
|
|
|
@@ -393,7 +411,8 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
}
|
|
|
// 登录人信息
|
|
|
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
|
|
- // TODO DP 根据登录人查询出对应的员工信息
|
|
|
+ // 根据登录人查询出对应的员工信息
|
|
|
+ EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
|
|
|
|
|
|
OaUniversalDO oaUniversalDO = validateOaUniversalExists(id);
|
|
|
if (!DictDataConstants.OA_AUDIT_STATUS_RETURNED.equals(oaUniversalDO.getAuditStatus())
|
|
|
@@ -409,7 +428,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
taskService.setVariable(currentTask.getId(), "auditPass", "false");
|
|
|
taskService.setVariable(currentTask.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_CLOSED);
|
|
|
// 关闭,使用审批通过的方法实现
|
|
|
- bpmTaskService.approveTask(loginUserId, approveReqVO);
|
|
|
+ bpmTaskService.approveTask(loginEmployee.getId(), approveReqVO);
|
|
|
|
|
|
LambdaUpdateWrapper<OaUniversalDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
|
|
lambdaUpdateWrapper.set(OaUniversalDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_CLOSED)
|
|
|
@@ -433,7 +452,8 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
public OaUniversalRespVO getOaUniversal(Long id) {
|
|
|
// 登录人信息
|
|
|
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
|
|
- // TODO DP 根据登录人查询出对应的员工信息
|
|
|
+ // 根据登录人查询出对应的员工信息
|
|
|
+ EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
|
|
|
|
|
|
OaUniversalDO oaUniversalDO = validateOaUniversalExists(id);
|
|
|
OaUniversalRespVO oaUniversalRespVO = BeanUtils.toBean(oaUniversalDO, OaUniversalRespVO.class);
|
|
|
@@ -448,7 +468,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
if (StrUtil.isNotBlank(procInstId)) {
|
|
|
Task task = taskService.createTaskQuery()
|
|
|
.processInstanceId(procInstId)
|
|
|
- .taskAssignee(String.valueOf(loginUserId))
|
|
|
+ .taskAssignee(String.valueOf(loginEmployee.getId()))
|
|
|
.singleResult();
|
|
|
if (DictDataConstants.OA_AUDIT_STATUS_COMMITTED.equals(oaUniversalDO.getAuditStatus())) {
|
|
|
// 如果是已提交,不限制任务处理人是当前登录人,用于直接撤回
|
|
|
@@ -474,16 +494,15 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
// 审批人
|
|
|
String startUserSelectAssignees = oaUniversalDO.getStartUserSelectAssignees();
|
|
|
if (StrUtil.isNotEmpty(startUserSelectAssignees)) {
|
|
|
- List<Long> userIdList = Arrays.stream(startUserSelectAssignees.split(","))
|
|
|
+ List<Long> employeeIdList = 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;
|
|
|
- }
|
|
|
+ List<EmployeeRespDTO> employeeRespDTOList = employeeApi.getEmployeeListByIds(employeeIdList);
|
|
|
+ Map<Long, EmployeeRespDTO> longEmployeeRespDTOMap = CollectionUtils.convertMap(employeeRespDTOList, EmployeeRespDTO::getId);
|
|
|
+ List<EmployeeRespDTO> auditUserList = new ArrayList<>();
|
|
|
+ for (Long employeeId : employeeIdList) {
|
|
|
+ EmployeeRespDTO employeeRespDTO = longEmployeeRespDTOMap.get(employeeId);
|
|
|
+ if (employeeRespDTO != null) {
|
|
|
+ auditUserList.add(employeeRespDTO);
|
|
|
}
|
|
|
}
|
|
|
oaUniversalRespVO.setAuditUserList(auditUserList);
|
|
|
@@ -516,16 +535,15 @@ public class OaUniversalServiceImpl implements OaUniversalService {
|
|
|
// 审批人
|
|
|
String startUserSelectAssignees = oaUniversalDO.getStartUserSelectAssignees();
|
|
|
if (StrUtil.isNotEmpty(startUserSelectAssignees)) {
|
|
|
- List<Long> userIdList = Arrays.stream(startUserSelectAssignees.split(","))
|
|
|
+ List<Long> employeeIdList = 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;
|
|
|
- }
|
|
|
+ List<EmployeeRespDTO> employeeRespDTOList = employeeApi.getEmployeeListByIds(employeeIdList);
|
|
|
+ Map<Long, EmployeeRespDTO> longEmployeeRespDTOMap = CollectionUtils.convertMap(employeeRespDTOList, EmployeeRespDTO::getId);
|
|
|
+ List<EmployeeRespDTO> auditUserList = new ArrayList<>();
|
|
|
+ for (Long employeeId : employeeIdList) {
|
|
|
+ EmployeeRespDTO employeeRespDTO = longEmployeeRespDTOMap.get(employeeId);
|
|
|
+ if (employeeRespDTO != null) {
|
|
|
+ auditUserList.add(employeeRespDTO);
|
|
|
}
|
|
|
}
|
|
|
oaUniversalRespVO.setAuditUserList(auditUserList);
|