Browse Source

1、采购、报销、用印接口员工化

dongpo 1 year ago
parent
commit
44009109d4
15 changed files with 393 additions and 327 deletions
  1. 7 6
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/expense/vo/OaExpensePageReqVO.java
  2. 6 2
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/expense/vo/OaExpenseRespVO.java
  3. 2 3
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/purchase/vo/OaPurchasePageReqVO.java
  4. 11 7
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/purchase/vo/OaPurchaseRespVO.java
  5. 2 2
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/stamp/vo/OaStampPageReqVO.java
  6. 6 2
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/stamp/vo/OaStampRespVO.java
  7. 9 5
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/expense/OaExpenseDO.java
  8. 9 5
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/purchase/OaPurchaseDO.java
  9. 9 5
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/stamp/OaStampDO.java
  10. 1 1
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/expense/OaExpenseMapper.java
  11. 1 1
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/purchase/OaPurchaseMapper.java
  12. 1 1
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/stamp/OaStampMapper.java
  13. 111 97
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/expense/OaExpenseServiceImpl.java
  14. 109 95
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/purchase/OaPurchaseServiceImpl.java
  15. 109 95
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/stamp/OaStampServiceImpl.java

+ 7 - 6
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/expense/vo/OaExpensePageReqVO.java

@@ -1,11 +1,12 @@
 package cn.iocoder.yudao.module.bpm.controller.admin.oa.expense.vo;
 
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import java.math.BigDecimal;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
 import org.springframework.format.annotation.DateTimeFormat;
+
 import java.time.LocalDateTime;
 
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -25,8 +26,8 @@ public class OaExpensePageReqVO extends PageParam {
     @Schema(description = "部门id")
     private Long deptId;
 
-    @Schema(description = "员工职位")
-    private String position;
+    @Schema(description = "职位id")
+    private Long postId;
 
     @Schema(description = "报销类型主键id")
     private Long expenseTypeId;

+ 6 - 2
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/expense/vo/OaExpenseRespVO.java

@@ -2,8 +2,8 @@ package cn.iocoder.yudao.module.bpm.controller.admin.oa.expense.vo;
 
 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRespVO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.expense.OaExpenseObjDO;
+import cn.iocoder.yudao.module.employee.api.dto.EmployeeRespDTO;
 import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -46,6 +46,10 @@ public class OaExpenseRespVO {
     @ExcelProperty("部门名称")
     private String deptName;
 
+    @Schema(description = "职位id", example = "1")
+    @ExcelProperty("职位id")
+    private Long postId;
+
     @Schema(description = "员工职位")
     @ExcelProperty("员工职位")
     private String position;
@@ -116,7 +120,7 @@ public class OaExpenseRespVO {
     private List<BpmTaskRespVO> auditRecordList;
 
     @Schema(description = "审批人员列表")
-    private List<AdminUserRespDTO> auditUserList;
+    private List<EmployeeRespDTO> auditUserList;
 
     @Schema(description = "当前用户待处理的任务id")
     private String taskId;

+ 2 - 3
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/purchase/vo/OaPurchasePageReqVO.java

@@ -7,7 +7,6 @@ import lombok.EqualsAndHashCode;
 import lombok.ToString;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -27,8 +26,8 @@ public class OaPurchasePageReqVO extends PageParam {
     @Schema(description = "部门id", example = "32213")
     private Long deptId;
 
-    @Schema(description = "员工职位")
-    private String position;
+    @Schema(description = "职位id")
+    private Long postId;
 
     @Schema(description = "预期供应商", example = "赵六")
     private String supplierName;

+ 11 - 7
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/purchase/vo/OaPurchaseRespVO.java

@@ -2,16 +2,16 @@ package cn.iocoder.yudao.module.bpm.controller.admin.oa.purchase.vo;
 
 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRespVO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.purchase.OaPurchaseObjDO;
+import cn.iocoder.yudao.module.employee.api.dto.EmployeeRespDTO;
 import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import java.util.*;
+import lombok.Data;
+
 import java.math.BigDecimal;
-import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
+import java.util.List;
 
 @Schema(description = "管理后台 - 采购流程信息 Response VO")
 @Data
@@ -46,6 +46,10 @@ public class OaPurchaseRespVO {
     @ExcelProperty("部门名称")
     private String deptName;
 
+    @Schema(description = "职位id", example = "1")
+    @ExcelProperty("职位id")
+    private Long postId;
+
     @Schema(description = "员工职位")
     @ExcelProperty("员工职位")
     private String position;
@@ -108,7 +112,7 @@ public class OaPurchaseRespVO {
     private List<BpmTaskRespVO> auditRecordList;
 
     @Schema(description = "审批人员列表")
-    private List<AdminUserRespDTO> auditUserList;
+    private List<EmployeeRespDTO> auditUserList;
 
     @Schema(description = "当前用户待处理的任务id")
     private String taskId;

+ 2 - 2
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/stamp/vo/OaStampPageReqVO.java

@@ -26,8 +26,8 @@ public class OaStampPageReqVO extends PageParam {
     @Schema(description = "部门id", example = "30975")
     private Long deptId;
 
-    @Schema(description = "员工职位")
-    private String position;
+    @Schema(description = "职位id")
+    private Long postId;
 
     @Schema(description = "用印标题")
     private String stampTitle;

+ 6 - 2
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/stamp/vo/OaStampRespVO.java

@@ -1,8 +1,8 @@
 package cn.iocoder.yudao.module.bpm.controller.admin.oa.stamp.vo;
 
 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRespVO;
+import cn.iocoder.yudao.module.employee.api.dto.EmployeeRespDTO;
 import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -44,6 +44,10 @@ public class OaStampRespVO {
     @ExcelProperty("部门名称")
     private String deptName;
 
+    @Schema(description = "职位id", example = "1")
+    @ExcelProperty("职位id")
+    private Long postId;
+
     @Schema(description = "员工职位")
     @ExcelProperty("员工职位")
     private String position;
@@ -111,7 +115,7 @@ public class OaStampRespVO {
     private List<BpmTaskRespVO> auditRecordList;
 
     @Schema(description = "审批人员列表")
-    private List<AdminUserRespDTO> auditUserList;
+    private List<EmployeeRespDTO> auditUserList;
 
     @Schema(description = "当前用户待处理的任务id")
     private String taskId;

+ 9 - 5
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/expense/OaExpenseDO.java

@@ -1,13 +1,13 @@
 package cn.iocoder.yudao.module.bpm.dal.dataobject.oa.expense;
 
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.*;
-import java.util.*;
+
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.*;
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 
 /**
  * 报销流程信息 DO
@@ -65,6 +65,10 @@ public class OaExpenseDO extends BaseDO {
      * 部门uuid
      */
     private String deptUuid;
+    /**
+     * 职位id
+     */
+    private Long postId;
     /**
      * 员工职位
      */

+ 9 - 5
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/purchase/OaPurchaseDO.java

@@ -1,13 +1,13 @@
 package cn.iocoder.yudao.module.bpm.dal.dataobject.oa.purchase;
 
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.*;
-import java.util.*;
+
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.*;
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 
 /**
  * 采购流程信息 DO
@@ -65,6 +65,10 @@ public class OaPurchaseDO extends BaseDO {
      * 部门uuid
      */
     private String deptUuid;
+    /**
+     * 职位id
+     */
+    private Long postId;
     /**
      * 员工职位
      */

+ 9 - 5
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/stamp/OaStampDO.java

@@ -1,12 +1,12 @@
 package cn.iocoder.yudao.module.bpm.dal.dataobject.oa.stamp;
 
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.*;
-import java.util.*;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
+
 import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.*;
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 
 /**
  * 用印流程信息 DO
@@ -64,6 +64,10 @@ public class OaStampDO extends BaseDO {
      * 部门uuid
      */
     private String deptUuid;
+    /**
+     * 职位id
+     */
+    private Long postId;
     /**
      * 员工职位
      */

+ 1 - 1
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/expense/OaExpenseMapper.java

@@ -20,7 +20,7 @@ public interface OaExpenseMapper extends BaseMapperX<OaExpenseDO> {
                 .likeIfPresent(OaExpenseDO::getEmployeeName, reqVO.getEmployeeName())
                 .likeIfPresent(OaExpenseDO::getEmployeePhone, reqVO.getEmployeePhone())
                 .eqIfPresent(OaExpenseDO::getDeptId, reqVO.getDeptId())
-                .eqIfPresent(OaExpenseDO::getPosition, reqVO.getPosition())
+                .eqIfPresent(OaExpenseDO::getPostId, reqVO.getPostId())
                 .eqIfPresent(OaExpenseDO::getExpenseTypeId, reqVO.getExpenseTypeId())
                 .eqIfPresent(OaExpenseDO::getAuditStatus, reqVO.getAuditStatus())
                 .likeIfPresent(OaExpenseDO::getApplyEmployeeName, reqVO.getApplyEmployeeName())

+ 1 - 1
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/purchase/OaPurchaseMapper.java

@@ -20,7 +20,7 @@ public interface OaPurchaseMapper extends BaseMapperX<OaPurchaseDO> {
                 .likeIfPresent(OaPurchaseDO::getEmployeeName, reqVO.getEmployeeName())
                 .eqIfPresent(OaPurchaseDO::getEmployeePhone, reqVO.getEmployeePhone())
                 .eqIfPresent(OaPurchaseDO::getDeptId, reqVO.getDeptId())
-                .eqIfPresent(OaPurchaseDO::getPosition, reqVO.getPosition())
+                .eqIfPresent(OaPurchaseDO::getPostId, reqVO.getPostId())
                 .likeIfPresent(OaPurchaseDO::getSupplierName, reqVO.getSupplierName())
                 .eqIfPresent(OaPurchaseDO::getAuditStatus, reqVO.getAuditStatus())
                 .likeIfPresent(OaPurchaseDO::getApplyEmployeeName, reqVO.getApplyEmployeeName())

+ 1 - 1
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/stamp/OaStampMapper.java

@@ -20,7 +20,7 @@ public interface OaStampMapper extends BaseMapperX<OaStampDO> {
                 .likeIfPresent(OaStampDO::getEmployeeName, reqVO.getEmployeeName())
                 .likeIfPresent(OaStampDO::getEmployeePhone, reqVO.getEmployeePhone())
                 .eqIfPresent(OaStampDO::getDeptId, reqVO.getDeptId())
-                .eqIfPresent(OaStampDO::getPosition, reqVO.getPosition())
+                .eqIfPresent(OaStampDO::getPostId, reqVO.getPostId())
                 .likeIfPresent(OaStampDO::getStampTitle, reqVO.getStampTitle())
                 .eqIfPresent(OaStampDO::getAuditStatus, reqVO.getAuditStatus())
                 .likeIfPresent(OaStampDO::getApplyEmployeeName, reqVO.getApplyEmployeeName())

+ 111 - 97
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/expense/OaExpenseServiceImpl.java

@@ -25,6 +25,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.expense.api.expenseitem.ExpenseItemApi;
 import cn.iocoder.yudao.module.expense.api.expenseitem.dto.ExpenseItemRespDTO;
 import cn.iocoder.yudao.module.expense.api.expensetype.ExpenseTypeApi;
@@ -33,8 +35,6 @@ 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;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.apache.commons.lang3.StringUtils;
@@ -88,7 +88,7 @@ public class OaExpenseServiceImpl implements OaExpenseService {
     private FileApi fileApi;
 
     @Resource
-    private AdminUserApi adminUserApi;
+    private EmployeeApi employeeApi;
 
     @Resource
     private DeptApi deptApi;
@@ -104,10 +104,11 @@ public class OaExpenseServiceImpl implements OaExpenseService {
     public Long stagingOaExpense(OaExpenseSaveReqVO stagingReqVO) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        AdminUserRespDTO loginUser = adminUserApi.getUser(loginUserId);
-        Objects.requireNonNull(loginUser, "登录用户不能为空");
-        // 人信息
-        AdminUserRespDTO employee = adminUserApi.getUser(loginUserId);
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         OaExpenseDO oaExpense = BeanUtils.toBean(stagingReqVO, OaExpenseDO.class);
         if (StringUtils.isBlank(oaExpense.getExpenseUuid())) {
@@ -115,18 +116,18 @@ public class OaExpenseServiceImpl implements OaExpenseService {
             String uuid = IdUtil.fastSimpleUUID();
             oaExpense.setExpenseUuid(uuid);
         }
-        if (employee != null) {
-            oaExpense.setEmployeeId(loginUser.getId());
-            oaExpense.setEmployeeName(loginUser.getNickname());
-            oaExpense.setEmployeePhone(loginUser.getMobile());
-            oaExpense.setDeptId(loginUser.getDeptId());
-            oaExpense.setPosition("员工职位");
-            oaExpense.setUserId(loginUser.getId());
-        }
+        oaExpense.setEmployeeId(loginEmployee.getId());
+        oaExpense.setEmployeeName(loginEmployee.getName());
+        oaExpense.setEmployeePhone(loginEmployee.getPhone());
+        oaExpense.setDeptId(loginEmployee.getDeptId());
+        oaExpense.setPostId(loginEmployee.getPostId());
+        oaExpense.setPosition(loginEmployee.getPosition());
+        oaExpense.setUserId(loginUserId);
         oaExpense.setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_STAGING);
         oaExpense.setInfoSource("0");
-        oaExpense.setApplyEmployeeId(loginUser.getId());
-        oaExpense.setApplyEmployeeName(loginUser.getNickname());
+        oaExpense.setApplyEmployeeId(loginEmployee.getId());
+        oaExpense.setApplyEmployeeName(loginEmployee.getName());
+        oaExpense.setCreator(String.valueOf(loginEmployee.getId()));
         // 暂存不保存审批人信息
         oaExpense.setStartUserSelectAssignees(null);
 
@@ -157,13 +158,9 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         }
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        AdminUserRespDTO loginUser = adminUserApi.getUser(loginUserId);
-        if (loginUser == null) {
-            throw exception(ErrorCodeConstants.OA_LOGIN_USER_NOT_EXISTS);
-        }
-        // 人信息
-        AdminUserRespDTO employee = adminUserApi.getUser(loginUserId);
-        if (employee == null) {
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
             throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
         }
 
@@ -174,15 +171,17 @@ public class OaExpenseServiceImpl implements OaExpenseService {
             String uuid = IdUtil.fastSimpleUUID();
             oaExpense.setExpenseUuid(uuid);
         }
-        oaExpense.setEmployeeId(employee.getId());
-        oaExpense.setEmployeeName(employee.getNickname());
-        oaExpense.setEmployeePhone(employee.getMobile());
-        oaExpense.setDeptId(employee.getDeptId());
-        oaExpense.setPosition("员工职位");
-        oaExpense.setUserId(loginUser.getId());
+        oaExpense.setEmployeeId(loginEmployee.getId());
+        oaExpense.setEmployeeName(loginEmployee.getName());
+        oaExpense.setEmployeePhone(loginEmployee.getPhone());
+        oaExpense.setDeptId(loginEmployee.getDeptId());
+        oaExpense.setPostId(loginEmployee.getPostId());
+        oaExpense.setPosition(loginEmployee.getPosition());
+        oaExpense.setUserId(loginUserId);
         oaExpense.setInfoSource("0");
-        oaExpense.setApplyEmployeeId(loginUser.getId());
-        oaExpense.setApplyEmployeeName(loginUser.getNickname());
+        oaExpense.setApplyEmployeeId(loginEmployee.getId());
+        oaExpense.setApplyEmployeeName(loginEmployee.getName());
+        oaExpense.setCreator(String.valueOf(loginEmployee.getId()));
 
         // 子表信息
         List<OaExpenseObjDO> oaExpenseObjs = commitReqVO.getOaExpenseObjs();
@@ -224,7 +223,7 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         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)
@@ -241,14 +240,14 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         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) {
             throw exception(ErrorCodeConstants.TASK_CREATE_FAIL_NO_START_SELECT_ASSIGNEE);
         }
         Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-        AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+        EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
 
 
         // 将工作流的流程实例ID、单据状态、最后一次审批时间、当前审批人更新到单据信息中
@@ -258,7 +257,7 @@ public class OaExpenseServiceImpl implements OaExpenseService {
                 .setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_COMMITTED)
                 .setFinalAuditDate(LocalDateTime.now())
                 .setCurrentAuditEmployeeId(currentAuditEmployeeId)
-                .setCurrentAuditEmployeeName(currentAuditEmployee.getNickname())
+                .setCurrentAuditEmployeeName(currentAuditEmployee.getName())
                 .setStartUserSelectAssignees(selectAssignees.stream().map(String::valueOf).collect(Collectors.joining(","))));
         // 保存业务uuid到附件中
         saveFileList(commitReqVO.getFileIdList(), oaExpense.getExpenseUuid());
@@ -271,7 +270,11 @@ public class OaExpenseServiceImpl implements OaExpenseService {
     public Long agreeOaExpense(BpmTaskApproveReqVO agreeReqVO) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         Task currentTask = bpmTaskService.getTask(agreeReqVO.getId());
         if (currentTask == null) {
@@ -299,19 +302,19 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         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();
         OaExpenseDO oaExpenseDO = new OaExpenseDO();
         if (nextTask != null) {
             Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-            AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+            EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
 
             // 如果审批人重复,实际未结束,再次更新为审核中
             taskService.setVariable(nextTask.getId(), BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_AUDITING);
             oaExpenseDO.setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_AUDITING)
                     .setCurrentAuditEmployeeId(currentAuditEmployeeId)
-                    .setCurrentAuditEmployeeName(currentAuditEmployee.getNickname())
+                    .setCurrentAuditEmployeeName(currentAuditEmployee.getName())
                     .setFinalAuditDate(LocalDateTime.now())
                     .setId(oaExpense.getId());
 
@@ -337,7 +340,11 @@ public class OaExpenseServiceImpl implements OaExpenseService {
     public Long disagreeOaExpense(BpmTaskReturnReqVO disagreeReqVO) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         Task currentTask = bpmTaskService.getTask(disagreeReqVO.getId());
 
@@ -346,16 +353,16 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         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();
         Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-        AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+        EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
 
         // 更新单据状态,当前处理人,最后处理时间
         LambdaUpdateWrapper<OaExpenseDO> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper.set(OaExpenseDO::getCurrentAuditEmployeeId, currentAuditEmployeeId)
-                .set(OaExpenseDO::getCurrentAuditEmployeeName, currentAuditEmployee.getNickname())
+                .set(OaExpenseDO::getCurrentAuditEmployeeName, currentAuditEmployee.getName())
                 .set(OaExpenseDO::getFinalAuditDate, LocalDateTime.now())
                 .set(OaExpenseDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_RETURNED)
                 .eq(OaExpenseDO::getProcInstId, currentTask.getProcessInstanceId());
@@ -371,7 +378,11 @@ public class OaExpenseServiceImpl implements OaExpenseService {
     public Long revocationOaExpense(BpmTaskApproveReqVO revocationReqVO) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         Task currentTask = bpmTaskService.getTask(revocationReqVO.getId());
         if (currentTask == null) {
@@ -381,7 +392,7 @@ public class OaExpenseServiceImpl implements OaExpenseService {
                 .eq(OaExpenseDO::getProcInstId, currentTask.getProcessInstanceId());
         OaExpenseDO oaExpenseDO = oaExpenseMapper.selectOne(lambdaQueryWrapper);
         if (!DictDataConstants.OA_AUDIT_STATUS_COMMITTED.equals(oaExpenseDO.getAuditStatus())
-                || !Objects.equals(String.valueOf(loginUserId), oaExpenseDO.getCreator())) {
+                || !Objects.equals(String.valueOf(loginEmployee.getId()), oaExpenseDO.getCreator())) {
             throw ServiceExceptionUtil.exception(ErrorCodeConstants.TASK_REVOCATION_NOT_ALLOWED);
         }
 
@@ -394,16 +405,16 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         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();
         Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-        AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+        EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
 
         // 更新单据状态,当前处理人,最后处理时间
         LambdaUpdateWrapper<OaExpenseDO> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper.set(OaExpenseDO::getCurrentAuditEmployeeId, currentAuditEmployeeId)
-                .set(OaExpenseDO::getCurrentAuditEmployeeName, currentAuditEmployee.getNickname())
+                .set(OaExpenseDO::getCurrentAuditEmployeeName, currentAuditEmployee.getName())
                 .set(OaExpenseDO::getFinalAuditDate, LocalDateTime.now())
                 .set(OaExpenseDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_RECALLED)
                 .eq(OaExpenseDO::getProcInstId, currentTask.getProcessInstanceId());
@@ -422,13 +433,9 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         }
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        AdminUserRespDTO loginUser = adminUserApi.getUser(loginUserId);
-        if (loginUser == null) {
-            throw exception(ErrorCodeConstants.OA_LOGIN_USER_NOT_EXISTS);
-        }
-        // 人信息
-        AdminUserRespDTO employee = adminUserApi.getUser(loginUserId);
-        if (employee == null) {
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
             throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
         }
 
@@ -437,14 +444,15 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         oaExpenseNew.setExpenseUuid(oaExpenseOld.getExpenseUuid())
                 .setProcInstId(oaExpenseOld.getProcInstId());
 
-        oaExpenseNew.setEmployeeId(employee.getId());
-        oaExpenseNew.setEmployeeName(employee.getNickname());
-        oaExpenseNew.setEmployeePhone(employee.getMobile());
-        oaExpenseNew.setDeptId(employee.getDeptId());
-        oaExpenseNew.setPosition("员工职位");
-        oaExpenseNew.setUserId(loginUser.getId());
-        oaExpenseNew.setApplyEmployeeId(loginUser.getId());
-        oaExpenseNew.setApplyEmployeeName(loginUser.getNickname());
+        oaExpenseNew.setEmployeeId(loginEmployee.getId());
+        oaExpenseNew.setEmployeeName(loginEmployee.getName());
+        oaExpenseNew.setEmployeePhone(loginEmployee.getPhone());
+        oaExpenseNew.setDeptId(loginEmployee.getDeptId());
+        oaExpenseNew.setPostId(loginEmployee.getPostId());
+        oaExpenseNew.setPosition(loginEmployee.getPosition());
+        oaExpenseNew.setUserId(loginUserId);
+        oaExpenseNew.setApplyEmployeeId(loginEmployee.getId());
+        oaExpenseNew.setApplyEmployeeName(loginEmployee.getName());
 
         // 子表信息
         List<OaExpenseObjDO> oaExpenseObjs = reCommitReqVO.getOaExpenseObjs();
@@ -480,14 +488,14 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         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();
         Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-        AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+        EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
         oaExpenseNew.setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_COMMITTED)
                 .setCurrentAuditEmployeeId(currentAuditEmployeeId)
-                .setCurrentAuditEmployeeName(currentAuditEmployee.getNickname())
+                .setCurrentAuditEmployeeName(currentAuditEmployee.getName())
                 .setFinalAuditDate(LocalDateTime.now());
         oaExpenseMapper.updateById(oaExpenseNew);
 
@@ -510,7 +518,11 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         }
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         OaExpenseDO oaExpenseDO = oaExpenseMapper.selectById(id);
         if (!DictDataConstants.OA_AUDIT_STATUS_RETURNED.equals(oaExpenseDO.getAuditStatus())
@@ -526,7 +538,7 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         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<OaExpenseDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
         lambdaUpdateWrapper.set(OaExpenseDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_CLOSED)
@@ -553,7 +565,11 @@ public class OaExpenseServiceImpl implements OaExpenseService {
     public OaExpenseRespVO getOaExpense(Long id) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         OaExpenseDO oaExpenseDO = validateOaExpenseExists(id);
         OaExpenseRespVO oaExpenseRespVO = BeanUtils.toBean(oaExpenseDO, OaExpenseRespVO.class);
@@ -592,7 +608,7 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         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(oaExpenseDO.getAuditStatus())) {
                 // 如果是已提交,不限制任务处理人是当前登录人,用于直接撤回
@@ -618,16 +634,15 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         // 审批人
         String startUserSelectAssignees = oaExpenseDO.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);
                 }
             }
             oaExpenseRespVO.setAuditUserList(auditUserList);
@@ -660,16 +675,15 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         // 审批人
         String startUserSelectAssignees = oaExpenseDO.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);
                 }
             }
             oaExpenseRespVO.setAuditUserList(auditUserList);
@@ -687,7 +701,14 @@ public class OaExpenseServiceImpl implements OaExpenseService {
         if (CollectionUtil.isNotEmpty(oaExpenseRespVOList)) {
             // 当前审核人名称
             List<Long> employeeIdList = oaExpenseRespVOList.stream().map(OaExpenseRespVO::getCurrentAuditEmployeeId).collect(Collectors.toList());
-            List<AdminUserRespDTO> employeeList = adminUserApi.getUserList(employeeIdList);
+            List<EmployeeRespDTO> employeeRespDTOList = employeeApi.getEmployeeListByIds(employeeIdList);
+            Map<Long, EmployeeRespDTO> longEmployeeRespDTOMap = CollectionUtils.convertMap(employeeRespDTOList, EmployeeRespDTO::getId);
+            for (OaExpenseRespVO respVO : oaExpenseRespVOList) {
+                EmployeeRespDTO employeeRespDTO = longEmployeeRespDTOMap.get(respVO.getCurrentAuditEmployeeId());
+                if (employeeRespDTO != null) {
+                    respVO.setCurrentAuditEmployeeName(employeeRespDTO.getName());
+                }
+            }
 
             // 部门名称
             List<Long> deptIdList = oaExpenseRespVOList.stream().map(OaExpenseRespVO::getDeptId).collect(Collectors.toList());
@@ -699,13 +720,6 @@ public class OaExpenseServiceImpl implements OaExpenseService {
 
             for (OaExpenseRespVO respVO : oaExpenseRespVOList) {
 
-                for (AdminUserRespDTO employee : employeeList) {
-                    if (employee.getId() != null && employee.getId().equals(respVO.getCurrentAuditEmployeeId())) {
-                        respVO.setCurrentAuditEmployeeName(employee.getNickname());
-                        break;
-                    }
-                }
-
                 for (DeptRespDTO dept : deptList) {
                     if (dept.getId() != null && dept.getId().equals(respVO.getDeptId())) {
                         respVO.setDeptName(dept.getName());

+ 109 - 95
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/purchase/OaPurchaseServiceImpl.java

@@ -6,6 +6,7 @@ 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.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
@@ -24,12 +25,12 @@ 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;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.apache.commons.lang3.StringUtils;
@@ -81,7 +82,7 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
     private FileApi fileApi;
 
     @Resource
-    private AdminUserApi adminUserApi;
+    private EmployeeApi employeeApi;
 
     @Resource
     private DeptApi deptApi;
@@ -91,10 +92,11 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
     public Long stagingOaPurchase(OaPurchaseSaveReqVO stagingReqVO) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        AdminUserRespDTO loginUser = adminUserApi.getUser(loginUserId);
-        Objects.requireNonNull(loginUser, "登录用户不能为空");
-        // 人信息
-        AdminUserRespDTO employee = adminUserApi.getUser(loginUserId);
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         OaPurchaseDO oaPurchase = BeanUtils.toBean(stagingReqVO, OaPurchaseDO.class);
         if (StringUtils.isBlank(oaPurchase.getPurchaseUuid())) {
@@ -102,18 +104,18 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
             String uuid = IdUtil.fastSimpleUUID();
             oaPurchase.setPurchaseUuid(uuid);
         }
-        if (employee != null) {
-            oaPurchase.setEmployeeId(loginUser.getId());
-            oaPurchase.setEmployeeName(loginUser.getNickname());
-            oaPurchase.setEmployeePhone(loginUser.getMobile());
-            oaPurchase.setDeptId(loginUser.getDeptId());
-            oaPurchase.setPosition("员工职位");
-            oaPurchase.setUserId(loginUser.getId());
-        }
+        oaPurchase.setEmployeeId(loginEmployee.getId());
+        oaPurchase.setEmployeeName(loginEmployee.getName());
+        oaPurchase.setEmployeePhone(loginEmployee.getPhone());
+        oaPurchase.setDeptId(loginEmployee.getDeptId());
+        oaPurchase.setPostId(loginEmployee.getPostId());
+        oaPurchase.setPosition(loginEmployee.getPosition());
+        oaPurchase.setUserId(loginUserId);
         oaPurchase.setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_STAGING);
         oaPurchase.setInfoSource("0");
-        oaPurchase.setApplyEmployeeId(loginUser.getId());
-        oaPurchase.setApplyEmployeeName(loginUser.getNickname());
+        oaPurchase.setApplyEmployeeId(loginEmployee.getId());
+        oaPurchase.setApplyEmployeeName(loginEmployee.getName());
+        oaPurchase.setCreator(String.valueOf(loginEmployee.getId()));
         // 暂存不保存审批人信息
         oaPurchase.setStartUserSelectAssignees(null);
 
@@ -144,13 +146,9 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         }
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        AdminUserRespDTO loginUser = adminUserApi.getUser(loginUserId);
-        if (loginUser == null) {
-            throw exception(ErrorCodeConstants.OA_LOGIN_USER_NOT_EXISTS);
-        }
-        // 人信息
-        AdminUserRespDTO employee = adminUserApi.getUser(loginUserId);
-        if (employee == null) {
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
             throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
         }
 
@@ -161,15 +159,17 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
             String uuid = IdUtil.fastSimpleUUID();
             oaPurchase.setPurchaseUuid(uuid);
         }
-        oaPurchase.setEmployeeId(employee.getId());
-        oaPurchase.setEmployeeName(employee.getNickname());
-        oaPurchase.setEmployeePhone(employee.getMobile());
-        oaPurchase.setDeptId(employee.getDeptId());
-        oaPurchase.setPosition("员工职位");
-        oaPurchase.setUserId(loginUser.getId());
+        oaPurchase.setEmployeeId(loginEmployee.getId());
+        oaPurchase.setEmployeeName(loginEmployee.getName());
+        oaPurchase.setEmployeePhone(loginEmployee.getPhone());
+        oaPurchase.setDeptId(loginEmployee.getDeptId());
+        oaPurchase.setPostId(loginEmployee.getPostId());
+        oaPurchase.setPosition(loginEmployee.getPosition());
+        oaPurchase.setUserId(loginUserId);
         oaPurchase.setInfoSource("0");
-        oaPurchase.setApplyEmployeeId(loginUser.getId());
-        oaPurchase.setApplyEmployeeName(loginUser.getNickname());
+        oaPurchase.setApplyEmployeeId(loginEmployee.getId());
+        oaPurchase.setApplyEmployeeName(loginEmployee.getName());
+        oaPurchase.setCreator(String.valueOf(loginEmployee.getId()));
 
         // 子表信息
         List<OaPurchaseObjDO> oaPurchaseObjs = commitReqVO.getOaPurchaseObjs();
@@ -208,7 +208,7 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         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)
@@ -225,14 +225,14 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         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) {
             throw exception(ErrorCodeConstants.TASK_CREATE_FAIL_NO_START_SELECT_ASSIGNEE);
         }
         Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-        AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+        EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
 
 
         // 将工作流的流程实例ID、单据状态、最后一次审批时间、当前审批人更新到单据信息中
@@ -242,7 +242,7 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
                 .setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_COMMITTED)
                 .setFinalAuditDate(LocalDateTime.now())
                 .setCurrentAuditEmployeeId(currentAuditEmployeeId)
-                .setCurrentAuditEmployeeName(currentAuditEmployee.getNickname())
+                .setCurrentAuditEmployeeName(currentAuditEmployee.getName())
                 .setStartUserSelectAssignees(selectAssignees.stream().map(String::valueOf).collect(Collectors.joining(","))));
         // 保存业务uuid到附件中
         saveFileList(commitReqVO.getFileIdList(), oaPurchase.getPurchaseUuid());
@@ -255,7 +255,11 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
     public Long agreeOaPurchase(BpmTaskApproveReqVO agreeReqVO) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         Task currentTask = bpmTaskService.getTask(agreeReqVO.getId());
         if (currentTask == null) {
@@ -283,19 +287,19 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         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();
         OaPurchaseDO oaPurchaseDO = new OaPurchaseDO();
         if (nextTask != null) {
             Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-            AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+            EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
 
             // 如果审批人重复,实际未结束,再次更新为审核中
             taskService.setVariable(nextTask.getId(), BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_AUDITING);
             oaPurchaseDO.setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_AUDITING)
                     .setCurrentAuditEmployeeId(currentAuditEmployeeId)
-                    .setCurrentAuditEmployeeName(currentAuditEmployee.getNickname())
+                    .setCurrentAuditEmployeeName(currentAuditEmployee.getName())
                     .setFinalAuditDate(LocalDateTime.now())
                     .setId(oaPurchase.getId());
 
@@ -321,7 +325,11 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
     public Long disagreeOaPurchase(BpmTaskReturnReqVO disagreeReqVO) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         Task currentTask = bpmTaskService.getTask(disagreeReqVO.getId());
 
@@ -330,16 +338,16 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         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();
         Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-        AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+        EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
 
         // 更新单据状态,当前处理人,最后处理时间
         LambdaUpdateWrapper<OaPurchaseDO> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper.set(OaPurchaseDO::getCurrentAuditEmployeeId, currentAuditEmployeeId)
-                .set(OaPurchaseDO::getCurrentAuditEmployeeName, currentAuditEmployee.getNickname())
+                .set(OaPurchaseDO::getCurrentAuditEmployeeName, currentAuditEmployee.getName())
                 .set(OaPurchaseDO::getFinalAuditDate, LocalDateTime.now())
                 .set(OaPurchaseDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_RETURNED)
                 .eq(OaPurchaseDO::getProcInstId, currentTask.getProcessInstanceId());
@@ -355,7 +363,11 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
     public Long revocationOaPurchase(BpmTaskApproveReqVO revocationReqVO) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         Task currentTask = bpmTaskService.getTask(revocationReqVO.getId());
         if (currentTask == null) {
@@ -365,7 +377,7 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
                 .eq(OaPurchaseDO::getProcInstId, currentTask.getProcessInstanceId());
         OaPurchaseDO oaPurchaseDO = oaPurchaseMapper.selectOne(lambdaQueryWrapper);
         if (!DictDataConstants.OA_AUDIT_STATUS_COMMITTED.equals(oaPurchaseDO.getAuditStatus())
-                || !Objects.equals(String.valueOf(loginUserId), oaPurchaseDO.getCreator())) {
+                || !Objects.equals(String.valueOf(loginEmployee.getId()), oaPurchaseDO.getCreator())) {
             throw ServiceExceptionUtil.exception(ErrorCodeConstants.TASK_REVOCATION_NOT_ALLOWED);
         }
 
@@ -378,16 +390,16 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         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();
         Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-        AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+        EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
 
         // 更新单据状态,当前处理人,最后处理时间
         LambdaUpdateWrapper<OaPurchaseDO> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper.set(OaPurchaseDO::getCurrentAuditEmployeeId, currentAuditEmployeeId)
-                .set(OaPurchaseDO::getCurrentAuditEmployeeName, currentAuditEmployee.getNickname())
+                .set(OaPurchaseDO::getCurrentAuditEmployeeName, currentAuditEmployee.getName())
                 .set(OaPurchaseDO::getFinalAuditDate, LocalDateTime.now())
                 .set(OaPurchaseDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_RECALLED)
                 .eq(OaPurchaseDO::getProcInstId, currentTask.getProcessInstanceId());
@@ -406,13 +418,9 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         }
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        AdminUserRespDTO loginUser = adminUserApi.getUser(loginUserId);
-        if (loginUser == null) {
-            throw exception(ErrorCodeConstants.OA_LOGIN_USER_NOT_EXISTS);
-        }
-        // 人信息
-        AdminUserRespDTO employee = adminUserApi.getUser(loginUserId);
-        if (employee == null) {
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
             throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
         }
 
@@ -421,14 +429,15 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         oaPurchaseNew.setPurchaseUuid(oaPurchaseOld.getPurchaseUuid())
                 .setProcInstId(oaPurchaseOld.getProcInstId());
 
-        oaPurchaseNew.setEmployeeId(employee.getId());
-        oaPurchaseNew.setEmployeeName(employee.getNickname());
-        oaPurchaseNew.setEmployeePhone(employee.getMobile());
-        oaPurchaseNew.setDeptId(employee.getDeptId());
-        oaPurchaseNew.setPosition("员工职位");
-        oaPurchaseNew.setUserId(loginUser.getId());
-        oaPurchaseNew.setApplyEmployeeId(loginUser.getId());
-        oaPurchaseNew.setApplyEmployeeName(loginUser.getNickname());
+        oaPurchaseNew.setEmployeeId(loginEmployee.getId());
+        oaPurchaseNew.setEmployeeName(loginEmployee.getName());
+        oaPurchaseNew.setEmployeePhone(loginEmployee.getPhone());
+        oaPurchaseNew.setDeptId(loginEmployee.getDeptId());
+        oaPurchaseNew.setPostId(loginEmployee.getPostId());
+        oaPurchaseNew.setPosition(loginEmployee.getPosition());
+        oaPurchaseNew.setUserId(loginUserId);
+        oaPurchaseNew.setApplyEmployeeId(loginEmployee.getId());
+        oaPurchaseNew.setApplyEmployeeName(loginEmployee.getName());
 
         // 子表信息
         List<OaPurchaseObjDO> oaPurchaseObjs = reCommitReqVO.getOaPurchaseObjs();
@@ -458,14 +467,14 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         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();
         Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-        AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+        EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
         oaPurchaseNew.setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_COMMITTED)
                 .setCurrentAuditEmployeeId(currentAuditEmployeeId)
-                .setCurrentAuditEmployeeName(currentAuditEmployee.getNickname())
+                .setCurrentAuditEmployeeName(currentAuditEmployee.getName())
                 .setFinalAuditDate(LocalDateTime.now());
         oaPurchaseMapper.updateById(oaPurchaseNew);
 
@@ -488,7 +497,11 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         }
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         OaPurchaseDO oaPurchaseDO = oaPurchaseMapper.selectById(id);
         if (!DictDataConstants.OA_AUDIT_STATUS_RETURNED.equals(oaPurchaseDO.getAuditStatus())
@@ -504,7 +517,7 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         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<OaPurchaseDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
         lambdaUpdateWrapper.set(OaPurchaseDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_CLOSED)
@@ -531,7 +544,11 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
     public OaPurchaseRespVO getOaPurchase(Long id) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         OaPurchaseDO oaPurchaseDO = validateOaPurchaseExists(id);
         OaPurchaseRespVO oaPurchaseRespVO = BeanUtils.toBean(oaPurchaseDO, OaPurchaseRespVO.class);
@@ -549,7 +566,7 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         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(oaPurchaseDO.getAuditStatus())) {
                 // 如果是已提交,不限制任务处理人是当前登录人,用于直接撤回
@@ -575,16 +592,15 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         // 审批人
         String startUserSelectAssignees = oaPurchaseDO.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);
                 }
             }
             oaPurchaseRespVO.setAuditUserList(auditUserList);
@@ -617,16 +633,15 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         // 审批人
         String startUserSelectAssignees = oaPurchaseDO.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);
                 }
             }
             oaPurchaseRespVO.setAuditUserList(auditUserList);
@@ -643,13 +658,12 @@ public class OaPurchaseServiceImpl implements OaPurchaseService {
         List<OaPurchaseRespVO> oaPurchaseRespVOList = oaPurchaseRespVOPageResult.getList();
         if (CollectionUtil.isNotEmpty(oaPurchaseRespVOList)) {
             List<Long> employeeIdList = oaPurchaseRespVOList.stream().map(OaPurchaseRespVO::getCurrentAuditEmployeeId).collect(Collectors.toList());
-            List<AdminUserRespDTO> employeeList = adminUserApi.getUserList(employeeIdList);
+            List<EmployeeRespDTO> employeeRespDTOList = employeeApi.getEmployeeListByIds(employeeIdList);
+            Map<Long, EmployeeRespDTO> longEmployeeRespDTOMap = CollectionUtils.convertMap(employeeRespDTOList, EmployeeRespDTO::getId);
             for (OaPurchaseRespVO respVO : oaPurchaseRespVOList) {
-                for (AdminUserRespDTO employee : employeeList) {
-                    if (employee.getId() != null && employee.getId().equals(respVO.getCurrentAuditEmployeeId())) {
-                        respVO.setCurrentAuditEmployeeName(employee.getNickname());
-                        break;
-                    }
+                EmployeeRespDTO employeeRespDTO = longEmployeeRespDTOMap.get(respVO.getCurrentAuditEmployeeId());
+                if (employeeRespDTO != null) {
+                    respVO.setCurrentAuditEmployeeName(employeeRespDTO.getName());
                 }
             }
 

+ 109 - 95
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/stamp/OaStampServiceImpl.java

@@ -6,6 +6,7 @@ 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.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
@@ -22,12 +23,12 @@ 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;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.apache.commons.lang3.StringUtils;
@@ -76,7 +77,7 @@ public class OaStampServiceImpl implements OaStampService {
     private FileApi fileApi;
 
     @Resource
-    private AdminUserApi adminUserApi;
+    private EmployeeApi employeeApi;
 
     @Resource
     private DeptApi deptApi;
@@ -86,10 +87,11 @@ public class OaStampServiceImpl implements OaStampService {
     public Long stagingOaStamp(OaStampSaveReqVO stagingReqVO) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        AdminUserRespDTO loginUser = adminUserApi.getUser(loginUserId);
-        Objects.requireNonNull(loginUser, "登录用户不能为空");
-        // 人信息
-        AdminUserRespDTO employee = adminUserApi.getUser(loginUserId);
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         OaStampDO oaStamp = BeanUtils.toBean(stagingReqVO, OaStampDO.class);
         if (StringUtils.isBlank(oaStamp.getStampUuid())) {
@@ -97,18 +99,18 @@ public class OaStampServiceImpl implements OaStampService {
             String uuid = IdUtil.fastSimpleUUID();
             oaStamp.setStampUuid(uuid);
         }
-        if (employee != null) {
-            oaStamp.setEmployeeId(loginUser.getId());
-            oaStamp.setEmployeeName(loginUser.getNickname());
-            oaStamp.setEmployeePhone(loginUser.getMobile());
-            oaStamp.setDeptId(loginUser.getDeptId());
-            oaStamp.setPosition("员工职位");
-            oaStamp.setUserId(loginUser.getId());
-        }
+        oaStamp.setEmployeeId(loginEmployee.getId());
+        oaStamp.setEmployeeName(loginEmployee.getName());
+        oaStamp.setEmployeePhone(loginEmployee.getPhone());
+        oaStamp.setDeptId(loginEmployee.getDeptId());
+        oaStamp.setPostId(loginEmployee.getPostId());
+        oaStamp.setPosition(loginEmployee.getPosition());
+        oaStamp.setUserId(loginUserId);
         oaStamp.setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_STAGING);
         oaStamp.setInfoSource("0");
-        oaStamp.setApplyEmployeeId(loginUser.getId());
-        oaStamp.setApplyEmployeeName(loginUser.getNickname());
+        oaStamp.setApplyEmployeeId(loginEmployee.getId());
+        oaStamp.setApplyEmployeeName(loginEmployee.getName());
+        oaStamp.setCreator(String.valueOf(loginEmployee.getId()));
         List<Long> stampSealId = stagingReqVO.getStampSealId();
         if (CollectionUtil.isNotEmpty(stampSealId)) {
             oaStamp.setStampSealId(stampSealId.stream().map(String::valueOf).collect(Collectors.joining(",")));
@@ -138,13 +140,9 @@ public class OaStampServiceImpl implements OaStampService {
         }
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        AdminUserRespDTO loginUser = adminUserApi.getUser(loginUserId);
-        if (loginUser == null) {
-            throw exception(ErrorCodeConstants.OA_LOGIN_USER_NOT_EXISTS);
-        }
-        // 人信息
-        AdminUserRespDTO employee = adminUserApi.getUser(loginUserId);
-        if (employee == null) {
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
             throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
         }
 
@@ -155,15 +153,17 @@ public class OaStampServiceImpl implements OaStampService {
             String uuid = IdUtil.fastSimpleUUID();
             oaStamp.setStampUuid(uuid);
         }
-        oaStamp.setEmployeeId(employee.getId());
-        oaStamp.setEmployeeName(employee.getNickname());
-        oaStamp.setEmployeePhone(employee.getMobile());
-        oaStamp.setDeptId(employee.getDeptId());
-        oaStamp.setPosition("员工职位");
-        oaStamp.setUserId(loginUser.getId());
+        oaStamp.setEmployeeId(loginEmployee.getId());
+        oaStamp.setEmployeeName(loginEmployee.getName());
+        oaStamp.setEmployeePhone(loginEmployee.getPhone());
+        oaStamp.setDeptId(loginEmployee.getDeptId());
+        oaStamp.setPostId(loginEmployee.getPostId());
+        oaStamp.setPosition(loginEmployee.getPosition());
+        oaStamp.setUserId(loginUserId);
         oaStamp.setInfoSource("0");
-        oaStamp.setApplyEmployeeId(loginUser.getId());
-        oaStamp.setApplyEmployeeName(loginUser.getNickname());
+        oaStamp.setApplyEmployeeId(loginEmployee.getId());
+        oaStamp.setApplyEmployeeName(loginEmployee.getName());
+        oaStamp.setCreator(String.valueOf(loginEmployee.getId()));
         List<Long> stampSealId = commitReqVO.getStampSealId();
         if (CollectionUtil.isNotEmpty(stampSealId)) {
             oaStamp.setStampSealId(stampSealId.stream().map(String::valueOf).collect(Collectors.joining(",")));
@@ -188,7 +188,7 @@ public class OaStampServiceImpl implements OaStampService {
         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)
@@ -205,14 +205,14 @@ public class OaStampServiceImpl implements OaStampService {
         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) {
             throw exception(ErrorCodeConstants.TASK_CREATE_FAIL_NO_START_SELECT_ASSIGNEE);
         }
         Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-        AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+        EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
 
 
         // 将工作流的流程实例ID、单据状态、最后一次审批时间、当前审批人更新到单据信息中
@@ -222,7 +222,7 @@ public class OaStampServiceImpl implements OaStampService {
                 .setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_COMMITTED)
                 .setFinalAuditDate(LocalDateTime.now())
                 .setCurrentAuditEmployeeId(currentAuditEmployeeId)
-                .setCurrentAuditEmployeeName(currentAuditEmployee.getNickname())
+                .setCurrentAuditEmployeeName(currentAuditEmployee.getName())
                 .setStartUserSelectAssignees(selectAssignees.stream().map(String::valueOf).collect(Collectors.joining(","))));
         // 保存业务uuid到附件中
         saveFileList(commitReqVO.getFileIdList(), oaStamp.getStampUuid());
@@ -235,7 +235,11 @@ public class OaStampServiceImpl implements OaStampService {
     public Long agreeOaStamp(BpmTaskApproveReqVO agreeReqVO) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         Task currentTask = bpmTaskService.getTask(agreeReqVO.getId());
         if (currentTask == null) {
@@ -263,19 +267,19 @@ public class OaStampServiceImpl implements OaStampService {
         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();
         OaStampDO oaStampDO = new OaStampDO();
         if (nextTask != null) {
             Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-            AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+            EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
 
             // 如果审批人重复,实际未结束,再次更新为审核中
             taskService.setVariable(nextTask.getId(), BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_AUDITING);
             oaStampDO.setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_AUDITING)
                     .setCurrentAuditEmployeeId(currentAuditEmployeeId)
-                    .setCurrentAuditEmployeeName(currentAuditEmployee.getNickname())
+                    .setCurrentAuditEmployeeName(currentAuditEmployee.getName())
                     .setFinalAuditDate(LocalDateTime.now())
                     .setId(oaStamp.getId());
 
@@ -301,7 +305,11 @@ public class OaStampServiceImpl implements OaStampService {
     public Long disagreeOaStamp(BpmTaskReturnReqVO disagreeReqVO) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         Task currentTask = bpmTaskService.getTask(disagreeReqVO.getId());
 
@@ -310,16 +318,16 @@ public class OaStampServiceImpl implements OaStampService {
         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();
         Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-        AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+        EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
 
         // 更新单据状态,当前处理人,最后处理时间
         LambdaUpdateWrapper<OaStampDO> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper.set(OaStampDO::getCurrentAuditEmployeeId, currentAuditEmployeeId)
-                .set(OaStampDO::getCurrentAuditEmployeeName, currentAuditEmployee.getNickname())
+                .set(OaStampDO::getCurrentAuditEmployeeName, currentAuditEmployee.getName())
                 .set(OaStampDO::getFinalAuditDate, LocalDateTime.now())
                 .set(OaStampDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_RETURNED)
                 .eq(OaStampDO::getProcInstId, currentTask.getProcessInstanceId());
@@ -335,7 +343,11 @@ public class OaStampServiceImpl implements OaStampService {
     public Long revocationOaStamp(BpmTaskApproveReqVO revocationReqVO) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         Task currentTask = bpmTaskService.getTask(revocationReqVO.getId());
         if (currentTask == null) {
@@ -345,7 +357,7 @@ public class OaStampServiceImpl implements OaStampService {
                 .eq(OaStampDO::getProcInstId, currentTask.getProcessInstanceId());
         OaStampDO oaStampDO = oaStampMapper.selectOne(lambdaQueryWrapper);
         if (!DictDataConstants.OA_AUDIT_STATUS_COMMITTED.equals(oaStampDO.getAuditStatus())
-                || !Objects.equals(String.valueOf(loginUserId), oaStampDO.getCreator())) {
+                || !Objects.equals(String.valueOf(loginEmployee.getId()), oaStampDO.getCreator())) {
             throw ServiceExceptionUtil.exception(ErrorCodeConstants.TASK_REVOCATION_NOT_ALLOWED);
         }
 
@@ -358,16 +370,16 @@ public class OaStampServiceImpl implements OaStampService {
         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();
         Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-        AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+        EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
 
         // 更新单据状态,当前处理人,最后处理时间
         LambdaUpdateWrapper<OaStampDO> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper.set(OaStampDO::getCurrentAuditEmployeeId, currentAuditEmployeeId)
-                .set(OaStampDO::getCurrentAuditEmployeeName, currentAuditEmployee.getNickname())
+                .set(OaStampDO::getCurrentAuditEmployeeName, currentAuditEmployee.getName())
                 .set(OaStampDO::getFinalAuditDate, LocalDateTime.now())
                 .set(OaStampDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_RECALLED)
                 .eq(OaStampDO::getProcInstId, currentTask.getProcessInstanceId());
@@ -386,13 +398,9 @@ public class OaStampServiceImpl implements OaStampService {
         }
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        AdminUserRespDTO loginUser = adminUserApi.getUser(loginUserId);
-        if (loginUser == null) {
-            throw exception(ErrorCodeConstants.OA_LOGIN_USER_NOT_EXISTS);
-        }
-        // 人信息
-        AdminUserRespDTO employee = adminUserApi.getUser(loginUserId);
-        if (employee == null) {
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
             throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
         }
 
@@ -401,14 +409,15 @@ public class OaStampServiceImpl implements OaStampService {
         oaStampNew.setStampSealId(oaStampOld.getStampUuid())
                 .setProcInstId(oaStampOld.getProcInstId());
 
-        oaStampNew.setEmployeeId(employee.getId());
-        oaStampNew.setEmployeeName(employee.getNickname());
-        oaStampNew.setEmployeePhone(employee.getMobile());
-        oaStampNew.setDeptId(employee.getDeptId());
-        oaStampNew.setPosition("员工职位");
-        oaStampNew.setUserId(loginUser.getId());
-        oaStampNew.setApplyEmployeeId(loginUser.getId());
-        oaStampNew.setApplyEmployeeName(loginUser.getNickname());
+        oaStampNew.setEmployeeId(loginEmployee.getId());
+        oaStampNew.setEmployeeName(loginEmployee.getName());
+        oaStampNew.setEmployeePhone(loginEmployee.getPhone());
+        oaStampNew.setDeptId(loginEmployee.getDeptId());
+        oaStampNew.setPostId(loginEmployee.getPostId());
+        oaStampNew.setPosition(loginEmployee.getPosition());
+        oaStampNew.setUserId(loginUserId);
+        oaStampNew.setApplyEmployeeId(loginEmployee.getId());
+        oaStampNew.setApplyEmployeeName(loginEmployee.getName());
         List<Long> stampSealId = reCommitReqVO.getStampSealId();
         if (CollectionUtil.isNotEmpty(stampSealId)) {
             oaStampNew.setStampSealId(stampSealId.stream().map(String::valueOf).collect(Collectors.joining(",")));
@@ -433,14 +442,14 @@ public class OaStampServiceImpl implements OaStampService {
         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();
         Long currentAuditEmployeeId = Long.valueOf(nextTask.getAssignee());
-        AdminUserRespDTO currentAuditEmployee = adminUserApi.getUser(currentAuditEmployeeId);
+        EmployeeRespDTO currentAuditEmployee = employeeApi.getEmployeeById(currentAuditEmployeeId);
         oaStampNew.setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_COMMITTED)
                 .setCurrentAuditEmployeeId(currentAuditEmployeeId)
-                .setCurrentAuditEmployeeName(currentAuditEmployee.getNickname())
+                .setCurrentAuditEmployeeName(currentAuditEmployee.getName())
                 .setFinalAuditDate(LocalDateTime.now());
         oaStampMapper.updateById(oaStampNew);
 
@@ -458,7 +467,11 @@ public class OaStampServiceImpl implements OaStampService {
         }
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         OaStampDO oaStampDO = oaStampMapper.selectById(id);
         if (!DictDataConstants.OA_AUDIT_STATUS_RETURNED.equals(oaStampDO.getAuditStatus())
@@ -474,7 +487,7 @@ public class OaStampServiceImpl implements OaStampService {
         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<OaStampDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
         lambdaUpdateWrapper.set(OaStampDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_CLOSED)
@@ -498,7 +511,11 @@ public class OaStampServiceImpl implements OaStampService {
     public OaStampRespVO getOaStamp(Long id) {
         // 登录人信息
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        // TODO DP 根据登录人查询出对应的员工信息
+        // 根据登录人查询出对应的员工信息
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (loginEmployee == null) {
+            throw exception(ErrorCodeConstants.OA_EMPLOYEE_NOT_EXISTS);
+        }
 
         OaStampDO oaStampDO = validateOaStampExists(id);
         OaStampRespVO oaStampRespVO = BeanUtils.toBean(oaStampDO, OaStampRespVO.class);
@@ -523,7 +540,7 @@ public class OaStampServiceImpl implements OaStampService {
         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(oaStampDO.getAuditStatus())) {
                 // 如果是已提交,不限制任务处理人是当前登录人,用于直接撤回
@@ -549,16 +566,15 @@ public class OaStampServiceImpl implements OaStampService {
         // 审批人
         String startUserSelectAssignees = oaStampDO.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);
                 }
             }
             oaStampRespVO.setAuditUserList(auditUserList);
@@ -601,16 +617,15 @@ public class OaStampServiceImpl implements OaStampService {
         // 审批人
         String startUserSelectAssignees = oaStampDO.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);
                 }
             }
             oaStampRespVO.setAuditUserList(auditUserList);
@@ -627,13 +642,12 @@ public class OaStampServiceImpl implements OaStampService {
         List<OaStampRespVO> oaStampRespVOList = oaStampRespVOPageResult.getList();
         if (CollectionUtil.isNotEmpty(oaStampRespVOList)) {
             List<Long> employeeIdList = oaStampRespVOList.stream().map(OaStampRespVO::getCurrentAuditEmployeeId).collect(Collectors.toList());
-            List<AdminUserRespDTO> employeeList = adminUserApi.getUserList(employeeIdList);
+            List<EmployeeRespDTO> employeeRespDTOList = employeeApi.getEmployeeListByIds(employeeIdList);
+            Map<Long, EmployeeRespDTO> longEmployeeRespDTOMap = CollectionUtils.convertMap(employeeRespDTOList, EmployeeRespDTO::getId);
             for (OaStampRespVO respVO : oaStampRespVOList) {
-                for (AdminUserRespDTO employee : employeeList) {
-                    if (employee.getId() != null && employee.getId().equals(respVO.getCurrentAuditEmployeeId())) {
-                        respVO.setCurrentAuditEmployeeName(employee.getNickname());
-                        break;
-                    }
+                EmployeeRespDTO employeeRespDTO = longEmployeeRespDTOMap.get(respVO.getCurrentAuditEmployeeId());
+                if (employeeRespDTO != null) {
+                    respVO.setCurrentAuditEmployeeName(employeeRespDTO.getName());
                 }
             }