lipenghui пре 1 месец
родитељ
комит
696078c78d
24 измењених фајлова са 1351 додато и 9 уклоњено
  1. 3 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotDeviceController.java
  2. 40 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaCompanyPageReqVO.java
  3. 47 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaCompanyRespVO.java
  4. 33 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaCompanySaveReqVO.java
  5. 43 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaDepartPageReqVO.java
  6. 51 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaDepartRespVO.java
  7. 36 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaDepartSaveReqVO.java
  8. 78 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaPersonPageReqVO.java
  9. 95 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaPersonRespVO.java
  10. 69 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaPersonSaveReqVO.java
  11. 55 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/oa/IotOaCompanyDO.java
  12. 59 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/oa/IotOaDepartDO.java
  13. 103 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/oa/IotOaPersonDO.java
  14. 30 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/oa/IotOaCompanyMapper.java
  15. 33 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/oa/IotOaDepartMapper.java
  16. 44 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/oa/IotOaPersonMapper.java
  17. 139 8
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/oa/OaFlow.java
  18. 55 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/oa/IotOaCompanyService.java
  19. 75 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/oa/IotOaCompanyServiceImpl.java
  20. 55 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/oa/IotOaDepartService.java
  21. 75 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/oa/IotOaDepartServiceImpl.java
  22. 56 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/oa/IotOaPersonService.java
  23. 75 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/oa/IotOaPersonServiceImpl.java
  24. 2 0
      yudao-server/src/main/resources/application-dev.yaml

+ 3 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotDeviceController.java

@@ -557,7 +557,9 @@ public class IotDeviceController {
     @GetMapping("/oa/register")
     public void oaRegister() {
         try {
-            oaFlow.getToken();
+            oaFlow.getCompany();
+//            oaFlow.getDepart();
+//            oaFlow.getPerson();
         } catch (Exception e) {
             throw new RuntimeException(e);
         }

+ 40 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaCompanyPageReqVO.java

@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.pms.controller.admin.oa;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+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;
+
+@Schema(description = "管理后台 - oa公司分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class IotOaCompanyPageReqVO extends PageParam {
+
+    @Schema(description = "公司描述")
+    private String subcompanydesc;
+
+    @Schema(description = "公司代码")
+    private String subcompanycode;
+
+    @Schema(description = "无", example = "407")
+    private String supsubcomid;
+
+    @Schema(description = "oaId", example = "27563")
+    private String oaId;
+
+    @Schema(description = "公司名称", example = "赵六")
+    private String subcompanyname;
+
+    @Schema(description = "排序")
+    private String showorder;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 47 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaCompanyRespVO.java

@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.pms.controller.admin.oa;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - oa公司 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotOaCompanyRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1921")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "公司描述")
+    @ExcelProperty("公司描述")
+    private String subcompanydesc;
+
+    @Schema(description = "公司代码")
+    @ExcelProperty("公司代码")
+    private String subcompanycode;
+
+    @Schema(description = "无", example = "407")
+    @ExcelProperty("无")
+    private String supsubcomid;
+
+    @Schema(description = "oaId", example = "27563")
+    @ExcelProperty("oaId")
+    private String oaId;
+
+    @Schema(description = "公司名称", example = "赵六")
+    @ExcelProperty("公司名称")
+    private String subcompanyname;
+
+    @Schema(description = "排序")
+    @ExcelProperty("排序")
+    private String showorder;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 33 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaCompanySaveReqVO.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.pms.controller.admin.oa;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - oa公司新增/修改 Request VO")
+@Data
+public class IotOaCompanySaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1921")
+    private Long id;
+
+    @Schema(description = "公司描述")
+    private String subcompanydesc;
+
+    @Schema(description = "公司代码")
+    private String subcompanycode;
+
+    @Schema(description = "无", example = "407")
+    private String supsubcomid;
+
+    @Schema(description = "oaId", example = "27563")
+    private String oaId;
+
+    @Schema(description = "公司名称", example = "赵六")
+    private String subcompanyname;
+
+    @Schema(description = "排序")
+    private String showorder;
+
+}

+ 43 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaDepartPageReqVO.java

@@ -0,0 +1,43 @@
+package cn.iocoder.yudao.module.pms.controller.admin.oa;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+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;
+
+@Schema(description = "管理后台 - oa部门分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class IotOaDepartPageReqVO extends PageParam {
+
+    @Schema(description = "无", example = "21826")
+    private String supdepid;
+
+    @Schema(description = "部门描述")
+    private String departmentmark;
+
+    @Schema(description = "部门名称", example = "王五")
+    private String departmentname;
+
+    @Schema(description = "部门编码")
+    private String departmentcode;
+
+    @Schema(description = "oaid", example = "13606")
+    private String oaId;
+
+    @Schema(description = "无")
+    private String subcompanyid1;
+
+    @Schema(description = "排序")
+    private String showorder;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 51 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaDepartRespVO.java

@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.pms.controller.admin.oa;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - oa部门 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotOaDepartRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27509")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "无", example = "21826")
+    @ExcelProperty("无")
+    private String supdepid;
+
+    @Schema(description = "部门描述")
+    @ExcelProperty("部门描述")
+    private String departmentmark;
+
+    @Schema(description = "部门名称", example = "王五")
+    @ExcelProperty("部门名称")
+    private String departmentname;
+
+    @Schema(description = "部门编码")
+    @ExcelProperty("部门编码")
+    private String departmentcode;
+
+    @Schema(description = "oaid", example = "13606")
+    @ExcelProperty("oaid")
+    private String oaId;
+
+    @Schema(description = "无")
+    @ExcelProperty("无")
+    private String subcompanyid1;
+
+    @Schema(description = "排序")
+    @ExcelProperty("排序")
+    private String showorder;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 36 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaDepartSaveReqVO.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.pms.controller.admin.oa;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - oa部门新增/修改 Request VO")
+@Data
+public class IotOaDepartSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27509")
+    private Long id;
+
+    @Schema(description = "无", example = "21826")
+    private String supdepid;
+
+    @Schema(description = "部门描述")
+    private String departmentmark;
+
+    @Schema(description = "部门名称", example = "王五")
+    private String departmentname;
+
+    @Schema(description = "部门编码")
+    private String departmentcode;
+
+    @Schema(description = "oaid", example = "13606")
+    private String oaId;
+
+    @Schema(description = "无")
+    private String subcompanyid1;
+
+    @Schema(description = "排序")
+    private String showorder;
+
+}

+ 78 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaPersonPageReqVO.java

@@ -0,0 +1,78 @@
+package cn.iocoder.yudao.module.pms.controller.admin.oa;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+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;
+
+@Schema(description = "管理后台 - oa人员分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class IotOaPersonPageReqVO extends PageParam {
+
+    @Schema(description = "公司开始日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String[] companystartdate;
+
+    @Schema(description = "所属分部1")
+    private String subcompanyid1;
+
+    @Schema(description = "所属分部名称", example = "张三")
+    private String subcompanyname;
+
+    @Schema(description = "工作序列", example = "王五")
+    private String jobgroupname;
+
+    @Schema(description = "无", example = "11411")
+    private String belongtoid;
+
+    @Schema(description = "所属集团编码")
+    private String subcompanycode;
+
+    @Schema(description = "oaid", example = "32027")
+    private String oaId;
+
+    @Schema(description = "姓名", example = "王五")
+    private String lastname;
+
+    @Schema(description = "合同结束日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String[] enddate;
+
+    @Schema(description = "所属部门名称", example = "芋艿")
+    private String departmentname;
+
+    @Schema(description = "状态", example = "2")
+    private String status;
+
+    @Schema(description = "工作职务", example = "王五")
+    private String jobtitlename;
+
+    @Schema(description = "部门编码")
+    private String departmentcode;
+
+    @Schema(description = "工号")
+    private String workcode;
+
+    @Schema(description = "性别")
+    private String sex;
+
+    @Schema(description = "部门id", example = "12290")
+    private String departmentid;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "工作地点", example = "22757")
+    private String locationid;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 95 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaPersonRespVO.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.pms.controller.admin.oa;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - oa人员 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotOaPersonRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "10139")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "公司开始日期")
+    @ExcelProperty("公司开始日期")
+    private String companystartdate;
+
+    @Schema(description = "所属分部1")
+    @ExcelProperty("所属分部1")
+    private String subcompanyid1;
+
+    @Schema(description = "所属分部名称", example = "张三")
+    @ExcelProperty("所属分部名称")
+    private String subcompanyname;
+
+    @Schema(description = "工作序列", example = "王五")
+    @ExcelProperty("工作序列")
+    private String jobgroupname;
+
+    @Schema(description = "无", example = "11411")
+    @ExcelProperty("无")
+    private String belongtoid;
+
+    @Schema(description = "所属集团编码")
+    @ExcelProperty("所属集团编码")
+    private String subcompanycode;
+
+    @Schema(description = "oaid", example = "32027")
+    @ExcelProperty("oaid")
+    private String oaId;
+
+    @Schema(description = "姓名", example = "王五")
+    @ExcelProperty("姓名")
+    private String lastname;
+
+    @Schema(description = "合同结束日期")
+    @ExcelProperty("合同结束日期")
+    private String enddate;
+
+    @Schema(description = "所属部门名称", example = "芋艿")
+    @ExcelProperty("所属部门名称")
+    private String departmentname;
+
+    @Schema(description = "状态", example = "2")
+    @ExcelProperty("状态")
+    private String status;
+
+    @Schema(description = "工作职务", example = "王五")
+    @ExcelProperty("工作职务")
+    private String jobtitlename;
+
+    @Schema(description = "部门编码")
+    @ExcelProperty("部门编码")
+    private String departmentcode;
+
+    @Schema(description = "工号")
+    @ExcelProperty("工号")
+    private String workcode;
+
+    @Schema(description = "性别")
+    @ExcelProperty("性别")
+    private String sex;
+
+    @Schema(description = "部门id", example = "12290")
+    @ExcelProperty("部门id")
+    private String departmentid;
+
+    @Schema(description = "手机号")
+    @ExcelProperty("手机号")
+    private String mobile;
+
+    @Schema(description = "工作地点", example = "22757")
+    @ExcelProperty("工作地点")
+    private String locationid;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 69 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/oa/IotOaPersonSaveReqVO.java

@@ -0,0 +1,69 @@
+package cn.iocoder.yudao.module.pms.controller.admin.oa;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - oa人员新增/修改 Request VO")
+@Data
+public class IotOaPersonSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "10139")
+    private Long id;
+
+    @Schema(description = "公司开始日期")
+    private String companystartdate;
+
+    @Schema(description = "所属分部1")
+    private String subcompanyid1;
+
+    @Schema(description = "所属分部名称", example = "张三")
+    private String subcompanyname;
+
+    @Schema(description = "工作序列", example = "王五")
+    private String jobgroupname;
+
+    @Schema(description = "无", example = "11411")
+    private String belongtoid;
+
+    @Schema(description = "所属集团编码")
+    private String subcompanycode;
+
+    @Schema(description = "oaid", example = "32027")
+    private String oaId;
+
+    @Schema(description = "姓名", example = "王五")
+    private String lastname;
+
+    @Schema(description = "合同结束日期")
+    private String enddate;
+
+    @Schema(description = "所属部门名称", example = "芋艿")
+    private String departmentname;
+
+    @Schema(description = "状态", example = "2")
+    private String status;
+
+    @Schema(description = "工作职务", example = "王五")
+    private String jobtitlename;
+
+    @Schema(description = "部门编码")
+    private String departmentcode;
+
+    @Schema(description = "工号")
+    private String workcode;
+
+    @Schema(description = "性别")
+    private String sex;
+
+    @Schema(description = "部门id", example = "12290")
+    private String departmentid;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "工作地点", example = "22757")
+    private String locationid;
+
+}

+ 55 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/oa/IotOaCompanyDO.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.oa;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * oa公司 DO
+ *
+ * @author 超级管理员
+ */
+@TableName("rq_iot_oa_company")
+@KeySequence("rq_iot_oa_company_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotOaCompanyDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 公司描述
+     */
+    private String subcompanydesc;
+    /**
+     * 公司代码
+     */
+    private String subcompanycode;
+    /**
+     * 无
+     */
+    private String supsubcomid;
+    /**
+     * oaId
+     */
+    private String oaId;
+    /**
+     * 公司名称
+     */
+    private String subcompanyname;
+    /**
+     * 排序
+     */
+    private String showorder;
+
+}

+ 59 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/oa/IotOaDepartDO.java

@@ -0,0 +1,59 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.oa;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * oa部门 DO
+ *
+ * @author 超级管理员
+ */
+@TableName("rq_iot_oa_depart")
+@KeySequence("rq_iot_oa_depart_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotOaDepartDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 无
+     */
+    private String supdepid;
+    /**
+     * 部门描述
+     */
+    private String departmentmark;
+    /**
+     * 部门名称
+     */
+    private String departmentname;
+    /**
+     * 部门编码
+     */
+    private String departmentcode;
+    /**
+     * oaid
+     */
+    private String oaId;
+    /**
+     * 无
+     */
+    private String subcompanyid1;
+    /**
+     * 排序
+     */
+    private String showorder;
+
+}

+ 103 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/oa/IotOaPersonDO.java

@@ -0,0 +1,103 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.oa;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * oa人员 DO
+ *
+ * @author 超级管理员
+ */
+@TableName("rq_iot_oa_person")
+@KeySequence("rq_iot_oa_person_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotOaPersonDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 公司开始日期
+     */
+    private String companystartdate;
+    /**
+     * 所属分部1
+     */
+    private String subcompanyid1;
+    /**
+     * 所属分部名称
+     */
+    private String subcompanyname;
+    /**
+     * 工作序列
+     */
+    private String jobgroupname;
+    /**
+     * 无
+     */
+    private String belongtoid;
+    /**
+     * 所属集团编码
+     */
+    private String subcompanycode;
+    /**
+     * oaid
+     */
+    private String oaId;
+    /**
+     * 姓名
+     */
+    private String lastname;
+    /**
+     * 合同结束日期
+     */
+    private String enddate;
+    /**
+     * 所属部门名称
+     */
+    private String departmentname;
+    /**
+     * 状态
+     */
+    private String status;
+    /**
+     * 工作职务
+     */
+    private String jobtitlename;
+    /**
+     * 部门编码
+     */
+    private String departmentcode;
+    /**
+     * 工号
+     */
+    private String workcode;
+    /**
+     * 性别
+     */
+    private String sex;
+    /**
+     * 部门id
+     */
+    private String departmentid;
+    /**
+     * 手机号
+     */
+    private String mobile;
+    /**
+     * 工作地点
+     */
+    private String locationid;
+
+}

+ 30 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/oa/IotOaCompanyMapper.java

@@ -0,0 +1,30 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.oa;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaCompanyPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.oa.IotOaCompanyDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * oa公司 Mapper
+ *
+ * @author 超级管理员
+ */
+@Mapper
+public interface IotOaCompanyMapper extends BaseMapperX<IotOaCompanyDO> {
+
+    default PageResult<IotOaCompanyDO> selectPage(IotOaCompanyPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotOaCompanyDO>()
+                .eqIfPresent(IotOaCompanyDO::getSubcompanydesc, reqVO.getSubcompanydesc())
+                .eqIfPresent(IotOaCompanyDO::getSubcompanycode, reqVO.getSubcompanycode())
+                .eqIfPresent(IotOaCompanyDO::getSupsubcomid, reqVO.getSupsubcomid())
+                .eqIfPresent(IotOaCompanyDO::getOaId, reqVO.getOaId())
+                .likeIfPresent(IotOaCompanyDO::getSubcompanyname, reqVO.getSubcompanyname())
+                .eqIfPresent(IotOaCompanyDO::getShoworder, reqVO.getShoworder())
+                .betweenIfPresent(IotOaCompanyDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotOaCompanyDO::getId));
+    }
+
+}

+ 33 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/oa/IotOaDepartMapper.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.oa;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaDepartPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.oa.IotOaDepartDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * oa部门 Mapper
+ *
+ * @author 超级管理员
+ */
+@Mapper
+public interface IotOaDepartMapper extends BaseMapperX<IotOaDepartDO> {
+
+    default PageResult<IotOaDepartDO> selectPage(IotOaDepartPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotOaDepartDO>()
+                .eqIfPresent(IotOaDepartDO::getSupdepid, reqVO.getSupdepid())
+                .eqIfPresent(IotOaDepartDO::getDepartmentmark, reqVO.getDepartmentmark())
+                .likeIfPresent(IotOaDepartDO::getDepartmentname, reqVO.getDepartmentname())
+                .eqIfPresent(IotOaDepartDO::getDepartmentcode, reqVO.getDepartmentcode())
+                .eqIfPresent(IotOaDepartDO::getOaId, reqVO.getOaId())
+                .eqIfPresent(IotOaDepartDO::getSubcompanyid1, reqVO.getSubcompanyid1())
+                .eqIfPresent(IotOaDepartDO::getShoworder, reqVO.getShoworder())
+                .betweenIfPresent(IotOaDepartDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotOaDepartDO::getId));
+    }
+
+}

+ 44 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/oa/IotOaPersonMapper.java

@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.oa;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaPersonPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.oa.IotOaPersonDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * oa人员 Mapper
+ *
+ * @author 超级管理员
+ */
+@Mapper
+public interface IotOaPersonMapper extends BaseMapperX<IotOaPersonDO> {
+
+    default PageResult<IotOaPersonDO> selectPage(IotOaPersonPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotOaPersonDO>()
+                .betweenIfPresent(IotOaPersonDO::getCompanystartdate, reqVO.getCompanystartdate())
+                .eqIfPresent(IotOaPersonDO::getSubcompanyid1, reqVO.getSubcompanyid1())
+                .likeIfPresent(IotOaPersonDO::getSubcompanyname, reqVO.getSubcompanyname())
+                .likeIfPresent(IotOaPersonDO::getJobgroupname, reqVO.getJobgroupname())
+                .eqIfPresent(IotOaPersonDO::getBelongtoid, reqVO.getBelongtoid())
+                .eqIfPresent(IotOaPersonDO::getSubcompanycode, reqVO.getSubcompanycode())
+                .eqIfPresent(IotOaPersonDO::getOaId, reqVO.getOaId())
+                .likeIfPresent(IotOaPersonDO::getLastname, reqVO.getLastname())
+                .betweenIfPresent(IotOaPersonDO::getEnddate, reqVO.getEnddate())
+                .likeIfPresent(IotOaPersonDO::getDepartmentname, reqVO.getDepartmentname())
+                .eqIfPresent(IotOaPersonDO::getStatus, reqVO.getStatus())
+                .likeIfPresent(IotOaPersonDO::getJobtitlename, reqVO.getJobtitlename())
+                .eqIfPresent(IotOaPersonDO::getDepartmentcode, reqVO.getDepartmentcode())
+                .eqIfPresent(IotOaPersonDO::getWorkcode, reqVO.getWorkcode())
+                .eqIfPresent(IotOaPersonDO::getSex, reqVO.getSex())
+                .eqIfPresent(IotOaPersonDO::getDepartmentid, reqVO.getDepartmentid())
+                .eqIfPresent(IotOaPersonDO::getMobile, reqVO.getMobile())
+                .eqIfPresent(IotOaPersonDO::getLocationid, reqVO.getLocationid())
+                .betweenIfPresent(IotOaPersonDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotOaPersonDO::getId));
+    }
+
+}

+ 139 - 8
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/oa/OaFlow.java

@@ -1,17 +1,34 @@
 package cn.iocoder.yudao.module.pms.oa;
 
+import cn.iocoder.yudao.module.pms.dal.dataobject.oa.IotOaCompanyDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.oa.IotOaDepartDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.oa.IotOaPersonDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.oa.IotOaCompanyMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.oa.IotOaDepartMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.oa.IotOaPersonMapper;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
 @Component
 public class OaFlow {
+    private final IotOaCompanyMapper iotOaCompanyMapper;
+    private final IotOaDepartMapper iotOaDepartMapper;
+    private final IotOaPersonMapper iotOaPersonMapper;
     @Value("${oa.appid}")
     private String appid;
     @Value("${oa.cpk}")
@@ -20,13 +37,23 @@ public class OaFlow {
     private String registerUrl;
     @Value("${oa.gettoken}")
     private String tokenUrl;
+    @Value("${oa.companyUrl}")
+    private String companyUrl;
+    @Value("${oa.departmentUrl}")
+    private String departmentUrl;
     @Value("${oa.userUrl}")
     private String userUrl;
     private static String spk = "";
     private static String secret = "";
 
+    public OaFlow(IotOaCompanyMapper iotOaCompanyMapper, IotOaDepartMapper iotOaDepartMapper, IotOaPersonMapper iotOaPersonMapper) {
+        this.iotOaCompanyMapper = iotOaCompanyMapper;
+        this.iotOaDepartMapper = iotOaDepartMapper;
+        this.iotOaPersonMapper = iotOaPersonMapper;
+    }
+
 
-    public void regist() throws Exception{
+    public void register() throws Exception{
         HttpHeaders headers = new HttpHeaders();
         headers.add("appid", appid);
         headers.add("cpk", cpk);
@@ -42,9 +69,9 @@ public class OaFlow {
 
     }
 
-    public void getToken() throws Exception{
+    public String getToken() throws Exception{
         if (StringUtils.isBlank(spk) || StringUtils.isBlank(secret)) {
-            regist();
+            register();
         }
         String secretEn = E9ApiTokenUtil.encryptString(spk, secret);
         HttpHeaders headers = new HttpHeaders();
@@ -58,13 +85,117 @@ public class OaFlow {
         JSONObject jsonObject = JSON.parseObject(result);
         String token = String.valueOf(jsonObject.get("token"));
         System.out.println("result:" + result);
+        return token;
+    }
+
+    public void getCompany() throws Exception{
+        String token = getToken();
+        HttpHeaders headersOut = new HttpHeaders();
+        headersOut.add("token", token);
+        headersOut.add("appid", appid);
+        headersOut.add("userid", "cLPEaFs9moW6b3xZMl1kNNWAAo7bp61ZRRTKmpiJUe56hSxQvrC2vWtY5ogj7g5FAnUOlzYjYg9MRktKXcseh/nsvZCQGa3BAlYixlDJruV19y4Omx5dYnqu/qv2rJAqTzUS71sOwuB1M2nKlLVsphw1GF74UhGP4xsjpZP7mC8=");
+
+        Map<String, Object> params = new HashMap<>();
+        Map<String, Object> map = new HashMap<>();
+        map.put("pagesize",1000000);
+        params.put("params", map);
+        // 3. 组合请求头和请求体
+        HttpEntity<Map<String, Object>> requestEntityOut = new HttpEntity<>(params, headersOut);
+        RestTemplate restTemplate = SslSkippingRestTemplate.createRestTemplate();
+        String company = restTemplate.postForObject(companyUrl, requestEntityOut, String.class);
+        JSONObject companyInfo = JSON.parseObject(company);
+        //请求成功
+        if (Objects.nonNull(companyInfo)&&"1".equals(String.valueOf(companyInfo.get("code")))){
+            if (Objects.nonNull(companyInfo.get("data"))) {
+                JSONObject resultJson = JSON.parseObject(companyInfo.get("data").toString());
+                if (Objects.nonNull(resultJson.get("dataList"))) {
+                    //先删除
+                    List<Long> ids = iotOaCompanyMapper.selectList().stream().map(IotOaCompanyDO::getId).collect(Collectors.toList());
+                    iotOaCompanyMapper.deleteByIds(ids);
+                    JSON.parseArray(resultJson.get("dataList").toString(),IotOaCompanyDO.class).forEach(item -> {
+                        IotOaCompanyDO companyDO = new IotOaCompanyDO();
+                        BeanUtils.copyProperties(item,companyDO);
+                        companyDO.setOaId(String.valueOf(companyDO.getId()));
+                        companyDO.setId(null);
+                        companyDO.setDeleted(false);
+                        iotOaCompanyMapper.insert(companyDO);
+                    });
+                }
+            }
+        }
+    }
 
+    public void getDepart() throws Exception {
+        String token = getToken();
         HttpHeaders headersOut = new HttpHeaders();
-        headersOut.add("Authorization", token);
+        headersOut.add("token", token);
+        headersOut.add("appid", appid);
+        headersOut.add("userid", "cLPEaFs9moW6b3xZMl1kNNWAAo7bp61ZRRTKmpiJUe56hSxQvrC2vWtY5ogj7g5FAnUOlzYjYg9MRktKXcseh/nsvZCQGa3BAlYixlDJruV19y4Omx5dYnqu/qv2rJAqTzUS71sOwuB1M2nKlLVsphw1GF74UhGP4xsjpZP7mC8=");
+
+        Map<String, Object> params = new HashMap<>();
+        Map<String, Object> map = new HashMap<>();
+        map.put("pagesize",1000000);
+        params.put("params", map);
+        // 3. 组合请求头和请求体
+        HttpEntity<Map<String, Object>> requestEntityOut = new HttpEntity<>(params, headersOut);
+        RestTemplate restTemplate = SslSkippingRestTemplate.createRestTemplate();
+        String company = restTemplate.postForObject(departmentUrl, requestEntityOut, String.class);
+        JSONObject companyInfo = JSON.parseObject(company);
+        //请求成功
+        if (Objects.nonNull(companyInfo) && "1".equals(String.valueOf(companyInfo.get("code")))) {
+            if (Objects.nonNull(companyInfo.get("data"))) {
+                JSONObject resultJson = JSON.parseObject(companyInfo.get("data").toString());
+                if (Objects.nonNull(resultJson.get("dataList"))) {
+                    //先删除
+                    List<Long> ids = iotOaDepartMapper.selectList().stream().map(IotOaDepartDO::getId).collect(Collectors.toList());
+                    iotOaDepartMapper.deleteByIds(ids);
+                    JSON.parseArray(resultJson.get("dataList").toString(), IotOaDepartDO.class).forEach(item -> {
+                        IotOaDepartDO iotOaDepartDO = new IotOaDepartDO();
+                        BeanUtils.copyProperties(item, iotOaDepartDO);
+                        iotOaDepartDO.setOaId(String.valueOf(iotOaDepartDO.getId()));
+                        iotOaDepartDO.setId(null);
+                        iotOaDepartDO.setDeleted(false);
+                        iotOaDepartMapper.insert(iotOaDepartDO);
+                    });
+                }
+            }
+        }
+    }
 
-        HttpEntity<MultiValueMap<String, String>> requestEntityOut = new HttpEntity<>(headersOut);
-        String user = restTemplate.postForObject(userUrl, requestEntityOut, String.class);
-        JSONObject userInfo = JSON.parseObject(result);
-        System.out.println("user:" + user);
+    public void getPerson() throws Exception {
+        String token = getToken();
+        HttpHeaders headersOut = new HttpHeaders();
+        headersOut.add("token", token);
+        headersOut.add("appid", appid);
+        headersOut.add("userid", "cLPEaFs9moW6b3xZMl1kNNWAAo7bp61ZRRTKmpiJUe56hSxQvrC2vWtY5ogj7g5FAnUOlzYjYg9MRktKXcseh/nsvZCQGa3BAlYixlDJruV19y4Omx5dYnqu/qv2rJAqTzUS71sOwuB1M2nKlLVsphw1GF74UhGP4xsjpZP7mC8=");
+
+        Map<String, Object> params = new HashMap<>();
+        Map<String, Object> map = new HashMap<>();
+        map.put("pagesize",1000000);
+        params.put("params", map);
+        // 3. 组合请求头和请求体
+        HttpEntity<Map<String, Object>> requestEntityOut = new HttpEntity<>(params, headersOut);
+        RestTemplate restTemplate = SslSkippingRestTemplate.createRestTemplate();
+        String company = restTemplate.postForObject(userUrl, requestEntityOut, String.class);
+        JSONObject companyInfo = JSON.parseObject(company);
+        //请求成功
+        if (Objects.nonNull(companyInfo) && "1".equals(String.valueOf(companyInfo.get("code")))) {
+            if (Objects.nonNull(companyInfo.get("data"))) {
+                JSONObject resultJson = JSON.parseObject(companyInfo.get("data").toString());
+                if (Objects.nonNull(resultJson.get("dataList"))) {
+                    //先删除
+                    List<Long> ids = iotOaPersonMapper.selectList().stream().map(IotOaPersonDO::getId).collect(Collectors.toList());
+                    iotOaPersonMapper.deleteByIds(ids);
+                    JSON.parseArray(resultJson.get("dataList").toString(), IotOaPersonDO.class).forEach(item -> {
+                        IotOaPersonDO iotOaPersonDO = new IotOaPersonDO();
+                        BeanUtils.copyProperties(item, iotOaPersonDO);
+                        iotOaPersonDO.setOaId(String.valueOf(iotOaPersonDO.getId()));
+                        iotOaPersonDO.setId(null);
+                        iotOaPersonDO.setDeleted(false);
+                        iotOaPersonMapper.insert(iotOaPersonDO);
+                    });
+                }
+            }
+        }
     }
 }

+ 55 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/oa/IotOaCompanyService.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.service.oa;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaCompanyPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaCompanySaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.oa.IotOaCompanyDO;
+
+import javax.validation.Valid;
+
+/**
+ * oa公司 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface IotOaCompanyService {
+
+    /**
+     * 创建oa公司
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotOaCompany(@Valid IotOaCompanySaveReqVO createReqVO);
+
+    /**
+     * 更新oa公司
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotOaCompany(@Valid IotOaCompanySaveReqVO updateReqVO);
+
+    /**
+     * 删除oa公司
+     *
+     * @param id 编号
+     */
+    void deleteIotOaCompany(Long id);
+
+    /**
+     * 获得oa公司
+     *
+     * @param id 编号
+     * @return oa公司
+     */
+    IotOaCompanyDO getIotOaCompany(Long id);
+
+    /**
+     * 获得oa公司分页
+     *
+     * @param pageReqVO 分页查询
+     * @return oa公司分页
+     */
+    PageResult<IotOaCompanyDO> getIotOaCompanyPage(IotOaCompanyPageReqVO pageReqVO);
+
+}

+ 75 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/oa/IotOaCompanyServiceImpl.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.pms.service.oa;
+
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaCompanyPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaCompanySaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.oa.IotOaCompanyDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.oa.IotOaCompanyMapper;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * oa公司 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class IotOaCompanyServiceImpl implements IotOaCompanyService {
+
+    @Resource
+    private IotOaCompanyMapper iotOaCompanyMapper;
+
+    @Override
+    public Long createIotOaCompany(IotOaCompanySaveReqVO createReqVO) {
+        // 插入
+        IotOaCompanyDO iotOaCompany = BeanUtils.toBean(createReqVO, IotOaCompanyDO.class);
+        iotOaCompanyMapper.insert(iotOaCompany);
+        // 返回
+        return iotOaCompany.getId();
+    }
+
+    @Override
+    public void updateIotOaCompany(IotOaCompanySaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotOaCompanyExists(updateReqVO.getId());
+        // 更新
+        IotOaCompanyDO updateObj = BeanUtils.toBean(updateReqVO, IotOaCompanyDO.class);
+        iotOaCompanyMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotOaCompany(Long id) {
+        // 校验存在
+        validateIotOaCompanyExists(id);
+        // 删除
+        iotOaCompanyMapper.deleteById(id);
+    }
+
+    private void validateIotOaCompanyExists(Long id) {
+        if (iotOaCompanyMapper.selectById(id) == null) {
+            throw exception(new ErrorCode(222,"oa公司信息不存在"));
+        }
+    }
+
+    @Override
+    public IotOaCompanyDO getIotOaCompany(Long id) {
+        return iotOaCompanyMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotOaCompanyDO> getIotOaCompanyPage(IotOaCompanyPageReqVO pageReqVO) {
+        return iotOaCompanyMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/oa/IotOaDepartService.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.service.oa;
+
+import java.util.*;
+import javax.validation.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaDepartPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaDepartSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.oa.IotOaDepartDO;
+
+/**
+ * oa部门 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface IotOaDepartService {
+
+    /**
+     * 创建oa部门
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotOaDepart(@Valid IotOaDepartSaveReqVO createReqVO);
+
+    /**
+     * 更新oa部门
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotOaDepart(@Valid IotOaDepartSaveReqVO updateReqVO);
+
+    /**
+     * 删除oa部门
+     *
+     * @param id 编号
+     */
+    void deleteIotOaDepart(Long id);
+
+    /**
+     * 获得oa部门
+     *
+     * @param id 编号
+     * @return oa部门
+     */
+    IotOaDepartDO getIotOaDepart(Long id);
+
+    /**
+     * 获得oa部门分页
+     *
+     * @param pageReqVO 分页查询
+     * @return oa部门分页
+     */
+    PageResult<IotOaDepartDO> getIotOaDepartPage(IotOaDepartPageReqVO pageReqVO);
+
+}

+ 75 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/oa/IotOaDepartServiceImpl.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.pms.service.oa;
+
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaDepartPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaDepartSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.oa.IotOaDepartDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.oa.IotOaDepartMapper;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * oa部门 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class IotOaDepartServiceImpl implements IotOaDepartService {
+
+    @Resource
+    private IotOaDepartMapper iotOaDepartMapper;
+
+    @Override
+    public Long createIotOaDepart(IotOaDepartSaveReqVO createReqVO) {
+        // 插入
+        IotOaDepartDO iotOaDepart = BeanUtils.toBean(createReqVO, IotOaDepartDO.class);
+        iotOaDepartMapper.insert(iotOaDepart);
+        // 返回
+        return iotOaDepart.getId();
+    }
+
+    @Override
+    public void updateIotOaDepart(IotOaDepartSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotOaDepartExists(updateReqVO.getId());
+        // 更新
+        IotOaDepartDO updateObj = BeanUtils.toBean(updateReqVO, IotOaDepartDO.class);
+        iotOaDepartMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotOaDepart(Long id) {
+        // 校验存在
+        validateIotOaDepartExists(id);
+        // 删除
+        iotOaDepartMapper.deleteById(id);
+    }
+
+    private void validateIotOaDepartExists(Long id) {
+        if (iotOaDepartMapper.selectById(id) == null) {
+            throw exception(new ErrorCode(224, "oa部门信息不存咋"));
+        }
+    }
+
+    @Override
+    public IotOaDepartDO getIotOaDepart(Long id) {
+        return iotOaDepartMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotOaDepartDO> getIotOaDepartPage(IotOaDepartPageReqVO pageReqVO) {
+        return iotOaDepartMapper.selectPage(pageReqVO);
+    }
+
+}

+ 56 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/oa/IotOaPersonService.java

@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.pms.service.oa;
+
+import java.util.*;
+import javax.validation.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaPersonPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaPersonSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.oa.IotOaPersonDO;
+
+/**
+ * oa人员 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface IotOaPersonService {
+
+    /**
+     * 创建oa人员
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotOaPerson(@Valid IotOaPersonSaveReqVO createReqVO);
+
+    /**
+     * 更新oa人员
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotOaPerson(@Valid IotOaPersonSaveReqVO updateReqVO);
+
+    /**
+     * 删除oa人员
+     *
+     * @param id 编号
+     */
+    void deleteIotOaPerson(Long id);
+
+    /**
+     * 获得oa人员
+     *
+     * @param id 编号
+     * @return oa人员
+     */
+    IotOaPersonDO getIotOaPerson(Long id);
+
+    /**
+     * 获得oa人员分页
+     *
+     * @param pageReqVO 分页查询
+     * @return oa人员分页
+     */
+    PageResult<IotOaPersonDO> getIotOaPersonPage(IotOaPersonPageReqVO pageReqVO);
+
+}

+ 75 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/oa/IotOaPersonServiceImpl.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.pms.service.oa;
+
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaPersonPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.oa.IotOaPersonSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.oa.IotOaPersonDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.oa.IotOaPersonMapper;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * oa人员 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class IotOaPersonServiceImpl implements IotOaPersonService {
+
+    @Resource
+    private IotOaPersonMapper iotOaPersonMapper;
+
+    @Override
+    public Long createIotOaPerson(IotOaPersonSaveReqVO createReqVO) {
+        // 插入
+        IotOaPersonDO iotOaPerson = BeanUtils.toBean(createReqVO, IotOaPersonDO.class);
+        iotOaPersonMapper.insert(iotOaPerson);
+        // 返回
+        return iotOaPerson.getId();
+    }
+
+    @Override
+    public void updateIotOaPerson(IotOaPersonSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotOaPersonExists(updateReqVO.getId());
+        // 更新
+        IotOaPersonDO updateObj = BeanUtils.toBean(updateReqVO, IotOaPersonDO.class);
+        iotOaPersonMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotOaPerson(Long id) {
+        // 校验存在
+        validateIotOaPersonExists(id);
+        // 删除
+        iotOaPersonMapper.deleteById(id);
+    }
+
+    private void validateIotOaPersonExists(Long id) {
+        if (iotOaPersonMapper.selectById(id) == null) {
+            throw exception(new ErrorCode(225,"oa人员信息不存在"));
+        }
+    }
+
+    @Override
+    public IotOaPersonDO getIotOaPerson(Long id) {
+        return iotOaPersonMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotOaPersonDO> getIotOaPersonPage(IotOaPersonPageReqVO pageReqVO) {
+        return iotOaPersonMapper.selectPage(pageReqVO);
+    }
+
+}

+ 2 - 0
yudao-server/src/main/resources/application-dev.yaml

@@ -279,6 +279,8 @@ oa:
   register: https://172.17.25.231/api/ec/dev/auth/regist
   gettoken: https://172.17.25.231/api/ec/dev/auth/applytoken
   outMaintain: https://172.17.25.231/api/workflow/paService/doCreateRequest
+  companyUrl: https://172.17.25.231/api/hrm/resful/getHrmsubcompanyWithPage
+  departmentUrl: https://172.17.25.231/api/hrm/resful/getHrmdepartmentWithPage
   userUrl: https://172.17.25.231/api/hrm/resful/getHrmUserInfoWithPage
   #  appid: EEAA5436-7577-4BE0-8C6C-89E9D88805EE
 #  appid: EEAA5436-7577-4BE0-8C6C-89E9D88805E1