Merge remote-tracking branch 'refs/remotes/origin/feature/REQ-3282' into feature/REQ-3282-zhh
This commit is contained in:
commit
b884d1c05e
3
.gitignore
vendored
3
.gitignore
vendored
@ -33,4 +33,5 @@ build/
|
|||||||
.vscode/
|
.vscode/
|
||||||
|
|
||||||
### Mac OS ###
|
### Mac OS ###
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
**/.flattened-pom.xml
|
||||||
|
|||||||
39
README.md
39
README.md
@ -24,17 +24,17 @@
|
|||||||
-
|
-
|
||||||
|
|
||||||
## 接口规范
|
## 接口规范
|
||||||
- 所有接口统一采用POST,列表接口需要带上分页且设置默认大小1000条
|
- 所有接口统一采用POST,列表接口需要设置默认大小1000条
|
||||||
- 接口出入参,必须使用可扩展的对象类型。不能直接是 String,Integer,或者List这些无法扩展的类型。
|
- 接口出入参,必须使用可扩展的对象类型。不能直接是 String,Integer,或者List这些无法扩展的类型。
|
||||||
- 为每个接口定义自己的出入参,不要复用出入参
|
- 为每个接口定义自己的出入参,不要复用出入参
|
||||||
- 接口URL使用 【-】符号进行分割,比如: /orgmanax/node/create-team
|
- 接口URL使用 【-】符号进行分割,比如: /orgmanax/node/create-team
|
||||||
- 接口定义规范: 使用```/api/org/${domain}/${affiliateDomain}/${action}``` 形式进行定义。如:
|
- 接口定义规范: 使用```/api/${domain}/${affiliateDomain}/${action}``` 形式进行定义。如:
|
||||||
```
|
```
|
||||||
/api/org/unit/create
|
/api/unit/create
|
||||||
/api/org/unit/update
|
/api/unit/update
|
||||||
/api/org/node-user/list
|
/api/node-user/list
|
||||||
/api/org/org-user/page
|
/api/org-user/page
|
||||||
/api/org/org-user/page
|
/api/org-user/page
|
||||||
```
|
```
|
||||||
* domain 为主要操作/查询的对象。包含以下值
|
* domain 为主要操作/查询的对象。包含以下值
|
||||||
```
|
```
|
||||||
@ -60,14 +60,14 @@
|
|||||||
|
|
||||||
## 模块描述
|
## 模块描述
|
||||||
|
|
||||||
模块名称 | 功能 | 依赖
|
模块名称 | 功能 | 依赖
|
||||||
------ |---------------------------------------------------------------------------------------------------------------------------------------| ----
|
------ |--------------------------------------------------------------------------------------------------------------------------------------------| ----
|
||||||
`orgmanax-api` | API层,提供给org-gateway的接口 |无
|
`orgmanax-api` | API层,提供给org-gateway的接口 |无
|
||||||
`orgmanax-common`| 公共组件、UTIL等 |无
|
`orgmanax-common`| 公共组件、UTIL等 |无
|
||||||
`orgmanax-infra` | 基础设施层,隔离非业务变化,防止外部变化引起内部业务变更。<br/>对接外部依赖,数据库,MQ等中件间 | `orgmanax-common`
|
`orgmanax-infra` | 基础设施层,隔离非业务变化,防止外部变化引起内部业务变更。<br/>对接二方服务,数据库,MQ等中件间 | `orgmanax-common`
|
||||||
`orgmanax-integration`| 封装了非基础业务的API,防止外部API无用依赖影响内部。如:apollo-api、gaia-api等 | `orgmanax-infra`
|
`orgmanax-integration`| 封装了二方服务非纯净版本。如:apollo-api、gaia-api等。等两方服务统一规范后,该层就会移除。 | `orgmanax-infra`
|
||||||
`orgmanax-server`| 业务层,核心分为两层:<br/>1、基础层:`foundation` 单域核心逻辑如:创建部门,创建单位 <br/>2、业务层:`service` 如:创建班组、创建小组 <br/>`service` 依赖本域 `foundation`或他域service完成业务 | `orgmanax-api` `orgmanax-common` `orgmanax-infra`
|
`orgmanax-server`| 核心能力层,分为两块:<br/>1、通用能力:`foundation` 单域核心逻辑如:创建部门,创建单位 <br/>2、人岗架业务能力:`service` 如:创建班组、创建小组 <br/>`service` 依赖本域 `foundation`或他域service完成业务 | `orgmanax-api` `orgmanax-common` `orgmanax-infra`
|
||||||
`orgmanax-starter`| 启动类 | `orgmanax-api` `orgmanax-common` `orgmanax-infra` `orgmanax-server` `orgmanax-integration`
|
`orgmanax-starter`| 启动类 | `orgmanax-api` `orgmanax-common` `orgmanax-infra` `orgmanax-server` `orgmanax-integration`
|
||||||
|
|
||||||
|
|
||||||
## 各模块参数约束
|
## 各模块参数约束
|
||||||
@ -79,7 +79,6 @@
|
|||||||
- XXXUpdate:更新入参
|
- XXXUpdate:更新入参
|
||||||
- DO:数据库实体,DO使用充血模型,包括属性和行为,定义行为的范围:只能是本对象内部属性发生变更的行为
|
- DO:数据库实体,DO使用充血模型,包括属性和行为,定义行为的范围:只能是本对象内部属性发生变更的行为
|
||||||
|
|
||||||
|
|
||||||
## 目录层级
|
## 目录层级
|
||||||
```
|
```
|
||||||
.
|
.
|
||||||
@ -137,7 +136,7 @@
|
|||||||
│ │ │ │ ├── mapper
|
│ │ │ │ ├── mapper
|
||||||
│ │ │ │ └── repository
|
│ │ │ │ └── repository
|
||||||
│ │ │ │ └── impl
|
│ │ │ │ └── impl
|
||||||
├── orgmanax-integration #封装非基础域API,该层会引用其它域的feign
|
├── orgmanax-integration #封装二方非纯净API
|
||||||
│ └── src
|
│ └── src
|
||||||
│ └── main
|
│ └── main
|
||||||
│ └── java
|
│ └── java
|
||||||
@ -153,7 +152,7 @@
|
|||||||
│ ├── elise
|
│ ├── elise
|
||||||
│ ├── gaia
|
│ ├── gaia
|
||||||
│ └── profile
|
│ └── profile
|
||||||
├── orgmanax-server#业务服务层
|
├── orgmanax-server#核心能力层
|
||||||
│ └── src
|
│ └── src
|
||||||
│ ├── main
|
│ ├── main
|
||||||
│ │ └── java
|
│ │ └── java
|
||||||
@ -166,14 +165,14 @@
|
|||||||
│ │ │ ├── event#协同关系事件
|
│ │ │ ├── event#协同关系事件
|
||||||
│ │ │ │ └── inner
|
│ │ │ │ └── inner
|
||||||
│ │ │ │ └── payload
|
│ │ │ │ └── payload
|
||||||
│ │ │ └── service# 协同关系业务
|
│ │ │ └── service# 协同关系相关业务
|
||||||
│ │ │ └── impl
|
│ │ │ └── impl
|
||||||
│ │ ├── node#部门相关
|
│ │ ├── node#部门相关
|
||||||
│ │ │ ├── controller
|
│ │ │ ├── controller
|
||||||
│ │ │ ├── event#部门事件
|
│ │ │ ├── event#部门事件
|
||||||
│ │ │ │ └── inner
|
│ │ │ │ └── inner
|
||||||
│ │ │ │ └── payload
|
│ │ │ │ └── payload
|
||||||
│ │ │ ├── foundation#部门基础功能(如创建部门、更新部门)
|
│ │ │ ├── foundation#部门基础能力层
|
||||||
│ │ │ │ ├── impl
|
│ │ │ │ ├── impl
|
||||||
│ │ │ │ └── req
|
│ │ │ │ └── req
|
||||||
│ │ │ └── service# 部门业务(创建班组、解散班组、更换班组长、创建小组)
|
│ │ │ └── service# 部门业务(创建班组、解散班组、更换班组长、创建小组)
|
||||||
|
|||||||
@ -0,0 +1 @@
|
|||||||
|
-- 待补充
|
||||||
@ -27,7 +27,7 @@ public interface OrgCooperateShipApi {
|
|||||||
* @param req
|
* @param req
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("/api/org/cooperate-ship/list")
|
@PostMapping("/api/cooperate-ship/list")
|
||||||
ApiResult<List<OrgCooperateShipDTO>> list(@RequestBody @Validated ListOrgCooperateShipReq req);
|
ApiResult<List<OrgCooperateShipDTO>> list(@RequestBody @Validated ListOrgCooperateShipReq req);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import lombok.Builder;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@ -14,67 +15,111 @@ import java.util.Set;
|
|||||||
@Data
|
@Data
|
||||||
@Builder
|
@Builder
|
||||||
public class ListOrgCooperateShipReq {
|
public class ListOrgCooperateShipReq {
|
||||||
@CriteriaField
|
/**
|
||||||
private Long id;
|
* 协同关系集合
|
||||||
|
*/
|
||||||
@CriteriaField(field = "id", operator = Operator.IN)
|
@CriteriaField(field = "id", operator = Operator.IN)
|
||||||
private Set<Long> ids;
|
@Builder.Default
|
||||||
@CriteriaField
|
private Set<Long> ids = Collections.emptySet();
|
||||||
private Long parentId;
|
|
||||||
@CriteriaField(field = "parentId", operator = Operator.IN)
|
|
||||||
private Set<Long> parentIds;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用于遍历数据
|
* 工作台id
|
||||||
*/
|
*/
|
||||||
@CriteriaField(field = "id", operator = Operator.GT)
|
|
||||||
private Long idGt;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 工作台ID
|
|
||||||
*/
|
|
||||||
@CriteriaField
|
|
||||||
private Long workspaceId;
|
|
||||||
@CriteriaField(field = "workspaceId", operator = Operator.IN)
|
@CriteriaField(field = "workspaceId", operator = Operator.IN)
|
||||||
private Long workspaceIds;
|
@Builder.Default
|
||||||
|
private Set<Long> workspaceIds = Collections.emptySet();
|
||||||
@CriteriaField
|
|
||||||
private Integer workspaceType;
|
|
||||||
@CriteriaField(field = "workspaceType", operator = Operator.IN)
|
|
||||||
private Set<Integer> workspaceTypes;
|
|
||||||
|
|
||||||
@CriteriaField
|
|
||||||
private Integer status;
|
|
||||||
@CriteriaField(field = "status", operator = Operator.IN)
|
|
||||||
private Set<Integer> statuses;
|
|
||||||
|
|
||||||
@CriteriaField
|
|
||||||
private Integer cooperateType;
|
|
||||||
@CriteriaField(field = "cooperateType", operator = Operator.IN)
|
|
||||||
private Set<Integer> cooperateTypes;
|
|
||||||
|
|
||||||
|
|
||||||
@CriteriaField
|
|
||||||
private Integer partnerShip;
|
|
||||||
@CriteriaField(field = "partnerShip", operator = Operator.IN)
|
|
||||||
private Set<Integer> partnerShips;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 组织节点id
|
* 工作台类型
|
||||||
*/
|
*/
|
||||||
@CriteriaField
|
@CriteriaField(field = "workspaceType", operator = Operator.IN)
|
||||||
private Long organizationalNodeId;
|
@Builder.Default
|
||||||
@CriteriaField(field = "organizationalNodeId", operator = Operator.IN)
|
private Set<Integer> workspaceType = Collections.emptySet();
|
||||||
private Set<Long> organizationalNodeIds;
|
|
||||||
|
|
||||||
@CriteriaField
|
/**
|
||||||
private Long organizationalUnitId;
|
* 单位id集合(如果是班组则插入队伍id)
|
||||||
|
*/
|
||||||
@CriteriaField(field = "organizationalUnitId", operator = Operator.IN)
|
@CriteriaField(field = "organizationalUnitId", operator = Operator.IN)
|
||||||
private Long organizationalUnitIds;
|
@Builder.Default
|
||||||
|
private Set<Long> ouIds = Collections.emptySet();
|
||||||
|
|
||||||
@CriteriaField(ignore = true)
|
/**
|
||||||
private Long personId;
|
* 指定的协同关系类型
|
||||||
|
*/
|
||||||
|
@CriteriaField(field = "cooperateType", operator = Operator.IN)
|
||||||
|
@Builder.Default
|
||||||
|
private Set<Integer> includeCooperateTypes = Collections.emptySet();
|
||||||
|
/**
|
||||||
|
* 待排除的协同关系类型
|
||||||
|
*/
|
||||||
|
@CriteriaField(field = "cooperateType", operator = Operator.NOT_IN)
|
||||||
|
@Builder.Default
|
||||||
|
private Set<Integer> excludeCooperateTypes = Collections.emptySet();
|
||||||
|
|
||||||
@CriteriaField(ignore = true)
|
/**
|
||||||
private Boolean needParent;
|
* 节点id
|
||||||
|
*/
|
||||||
|
@CriteriaField(field = "organizationalNodeId", operator = Operator.IN)
|
||||||
|
@Builder.Default
|
||||||
|
private Set<Long> organizationNodeIds = Collections.emptySet();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合作关系 1.合作 2.直属
|
||||||
|
*/
|
||||||
|
@CriteriaField(field = "partnerShip", operator = Operator.IN)
|
||||||
|
@Builder.Default
|
||||||
|
private Set<Integer> partnerShips = Collections.emptySet();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 在场状态集合
|
||||||
|
*/
|
||||||
|
@CriteriaField(field = "status", operator = Operator.IN)
|
||||||
|
@Builder.Default
|
||||||
|
private Set<Integer> statuses = Collections.emptySet();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 需要过滤的personId
|
||||||
|
* personId
|
||||||
|
*/
|
||||||
|
private Long filterPersonId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当personId有值时,为必填项
|
||||||
|
* 1只过滤当前节点数据 2过滤当前节点及以下数据
|
||||||
|
*/
|
||||||
|
private Integer filterPersonType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否过滤工人
|
||||||
|
*/
|
||||||
|
@Builder.Default
|
||||||
|
private Boolean isFilterWorker = false;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 人员过滤是否包含已退场
|
||||||
|
*/
|
||||||
|
@Builder.Default
|
||||||
|
private Boolean includeExitPerson = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否查询祖先节点
|
||||||
|
*/
|
||||||
|
@Builder.Default
|
||||||
|
private Boolean isSelectAncestors = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否查询子孙节点
|
||||||
|
*/
|
||||||
|
@Builder.Default
|
||||||
|
private Boolean isSelectDescendant = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 条件:当需要查询上下级数据时启用
|
||||||
|
* 是否只查一级
|
||||||
|
*/
|
||||||
|
@Builder.Default
|
||||||
|
private Boolean isSelectLevelOne = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -90,28 +90,4 @@ public class OrgCooperateShipDTO implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private JSONObject ext;
|
private JSONObject ext;
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建时间
|
|
||||||
*/
|
|
||||||
private Date createAt;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改时间
|
|
||||||
*/
|
|
||||||
private Date updateAt;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建人
|
|
||||||
*/
|
|
||||||
private Long createBy;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改人
|
|
||||||
*/
|
|
||||||
private Long updateBy;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否删除
|
|
||||||
*/
|
|
||||||
private Long isDelete = 0L;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,7 +28,7 @@ public interface OrgNodeApi {
|
|||||||
* @param req
|
* @param req
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("/api/org/node/process")
|
@PostMapping("/api/node/process")
|
||||||
ApiResult<JSONObject> process(@RequestBody @Validated ProcessNodeReq req);
|
ApiResult<JSONObject> process(@RequestBody @Validated ProcessNodeReq req);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -39,7 +39,7 @@ public interface OrgNodeApi {
|
|||||||
* @return
|
* @return
|
||||||
* @see ListNodeReq#getPageSize()
|
* @see ListNodeReq#getPageSize()
|
||||||
*/
|
*/
|
||||||
@PostMapping("/api/org/node/list")
|
@PostMapping("/api/node/list")
|
||||||
ApiResult<PageResp<OrgNodeDTO>> list(@RequestBody @Validated ListNodeReq req);
|
ApiResult<PageResp<OrgNodeDTO>> list(@RequestBody @Validated ListNodeReq req);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,36 +16,109 @@ import java.util.Set;
|
|||||||
@Data
|
@Data
|
||||||
@Builder
|
@Builder
|
||||||
public class ListNodeReq implements IPageReq {
|
public class ListNodeReq implements IPageReq {
|
||||||
@CriteriaField
|
/**
|
||||||
private Long id;
|
* 页数
|
||||||
@CriteriaField(field = "id", operator = Operator.IN)
|
*/
|
||||||
|
private Integer page;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 条数
|
||||||
|
*/
|
||||||
|
private Integer pageSize;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ids
|
||||||
|
*/
|
||||||
private Set<Long> ids;
|
private Set<Long> ids;
|
||||||
@CriteriaField
|
|
||||||
private Long parentId;
|
|
||||||
@CriteriaField(field = "parentId", operator = Operator.IN)
|
|
||||||
private Set<Long> parentIds;
|
|
||||||
/**
|
|
||||||
* 用于遍历数据
|
|
||||||
*/
|
|
||||||
@CriteriaField(field = "id", operator = Operator.GT)
|
|
||||||
private Long idGt;
|
|
||||||
@CriteriaField
|
|
||||||
private Long organizationalUnitId;
|
|
||||||
@CriteriaField(field = "organizationalUnitId", operator = Operator.IN)
|
|
||||||
private Long organizationalUnitIds;
|
|
||||||
|
|
||||||
@CriteriaField(ignore = true)
|
|
||||||
private Boolean needParent;
|
|
||||||
|
|
||||||
@CriteriaField(ignore = true)
|
|
||||||
@Builder.Default
|
|
||||||
Integer page = 1;
|
|
||||||
/**
|
/**
|
||||||
* 最大支持1000条数据,不支持单页超过1000的查询,接入方按需分页
|
* 组织单位ids
|
||||||
*/
|
*/
|
||||||
@Builder.Default
|
private Set<Long> ouIds;
|
||||||
@CriteriaField(ignore = true)
|
|
||||||
Integer pageSize = 1000;
|
/**
|
||||||
@CriteriaField(ignore = true)
|
* 节点名称集合
|
||||||
List<String> sort;
|
*/
|
||||||
|
private Set<String> nodeNames;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 节点名称查询(模糊)
|
||||||
|
*/
|
||||||
|
private Set<String> nodeName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 指定部门类型
|
||||||
|
*/
|
||||||
|
private Set<Integer> includeOrgNodeTypes;
|
||||||
|
/**
|
||||||
|
* 排除部门类型
|
||||||
|
*/
|
||||||
|
private Set<Integer> excludeOrgNodeTypes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 顶级节点ID集合
|
||||||
|
*/
|
||||||
|
private Set<Long> topNodeIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否查询祖先节点
|
||||||
|
*/
|
||||||
|
private Boolean isSelectAncestors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否查询子孙节点
|
||||||
|
*/
|
||||||
|
private Boolean isSelectDescendant;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否查询节点用户
|
||||||
|
*/
|
||||||
|
private Boolean isSelectNodeUser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否查询删除的
|
||||||
|
*/
|
||||||
|
private Boolean isSelectDelete;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据权限缓存数据key
|
||||||
|
*/
|
||||||
|
private String dataPermissionCacheKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 只返回topNode
|
||||||
|
*/
|
||||||
|
private Boolean isSelectTopNodeOnly;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据workspace和ouId组合查询
|
||||||
|
*/
|
||||||
|
private Set<WorkspaceOuPair> workspaceOuPairs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 需要返回管理员信息
|
||||||
|
*/
|
||||||
|
private Boolean needAdmin;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 岗位编码
|
||||||
|
*/
|
||||||
|
private Set<String> jobCodes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前用户personId
|
||||||
|
*/
|
||||||
|
private Long personId;
|
||||||
|
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
public static class WorkspaceOuPair {
|
||||||
|
private Long workspaceId;
|
||||||
|
private Long ouId;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,7 +28,7 @@ public interface OrgNodeUserApi {
|
|||||||
* @param req
|
* @param req
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("/api/org/node-user/process")
|
@PostMapping("/api/node-user/process")
|
||||||
ApiResult<JSONObject> process(@RequestBody @Validated ProcessNodeUserReq req);
|
ApiResult<JSONObject> process(@RequestBody @Validated ProcessNodeUserReq req);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -39,7 +39,7 @@ public interface OrgNodeUserApi {
|
|||||||
* @return
|
* @return
|
||||||
* @see ListNodeUserReq#getPageSize()
|
* @see ListNodeUserReq#getPageSize()
|
||||||
*/
|
*/
|
||||||
@PostMapping("/api/org/node-user/list")
|
@PostMapping("/api/node-user/list")
|
||||||
ApiResult<PageResp<OrgNodeUserDTO>> list(@RequestBody @Validated ListNodeUserReq req);
|
ApiResult<PageResp<OrgNodeUserDTO>> list(@RequestBody @Validated ListNodeUserReq req);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,15 +19,15 @@ import java.util.List;
|
|||||||
url = "${axzo.service.orgmanax:http://orgmanax:8080}")
|
url = "${axzo.service.orgmanax:http://orgmanax:8080}")
|
||||||
public interface OrgJobApi {
|
public interface OrgJobApi {
|
||||||
|
|
||||||
@PostMapping("/api/org/job/create")
|
@PostMapping("/api/job/create")
|
||||||
ApiResult<OrgJobDTO> create(@RequestBody @Validated CreateOrgJobReq req);
|
ApiResult<OrgJobDTO> create(@RequestBody @Validated CreateOrgJobReq req);
|
||||||
|
|
||||||
@PostMapping("/api/org/job/update")
|
@PostMapping("/api/job/update")
|
||||||
ApiResult<OrgJobDTO> update(@RequestBody @Validated UpdateOrgJobReq req);
|
ApiResult<OrgJobDTO> update(@RequestBody @Validated UpdateOrgJobReq req);
|
||||||
|
|
||||||
@PostMapping("/api/org/job/delete")
|
@PostMapping("/api/job/delete")
|
||||||
ApiResult<Void> delete(@RequestBody @Validated DeleteOrgJobReq req);
|
ApiResult<Void> delete(@RequestBody @Validated DeleteOrgJobReq req);
|
||||||
|
|
||||||
@PostMapping("/api/org/job/list")
|
@PostMapping("/api/job/list")
|
||||||
ApiResult<PageResp<OrgJobDTO>> list(@RequestBody @Validated ListOrgJobReq req);
|
ApiResult<PageResp<OrgJobDTO>> list(@RequestBody @Validated ListOrgJobReq req);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,7 +33,7 @@ public interface OrgUserApi {
|
|||||||
* @return
|
* @return
|
||||||
* @see ListOrgUserReq#getPageSize()
|
* @see ListOrgUserReq#getPageSize()
|
||||||
*/
|
*/
|
||||||
@PostMapping("/api/org/org-user/list")
|
@PostMapping("/api/org-user/list")
|
||||||
ApiResult<PageResp<OrgUserDTO>> list(@RequestBody @Validated ListOrgUserReq req);
|
ApiResult<PageResp<OrgUserDTO>> list(@RequestBody @Validated ListOrgUserReq req);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,7 @@ public interface OrgUnitApi {
|
|||||||
* @param req
|
* @param req
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("/api/org/unit/create")
|
@PostMapping("/api/unit/create")
|
||||||
ApiResult<CreateUnitResp> create(@RequestBody @Validated CreateUnitReq req);
|
ApiResult<CreateUnitResp> create(@RequestBody @Validated CreateUnitReq req);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -37,7 +37,7 @@ public interface OrgUnitApi {
|
|||||||
* @param req
|
* @param req
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("/api/org/unit/update")
|
@PostMapping("/api/unit/update")
|
||||||
ApiResult<UpdateUnitResp> update(@RequestBody @Validated UpdateUnitReq req);
|
ApiResult<UpdateUnitResp> update(@RequestBody @Validated UpdateUnitReq req);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -48,7 +48,7 @@ public interface OrgUnitApi {
|
|||||||
* @return
|
* @return
|
||||||
* @see ListUnitReq#getPageSize()
|
* @see ListUnitReq#getPageSize()
|
||||||
*/
|
*/
|
||||||
@PostMapping("/api/org/unit/list")
|
@PostMapping("/api/unit/list")
|
||||||
ApiResult<PageResp<OrgUnitDTO>> list(@RequestBody @Validated ListUnitReq req);
|
ApiResult<PageResp<OrgUnitDTO>> list(@RequestBody @Validated ListUnitReq req);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,7 @@ public interface OrgUnitContactApi {
|
|||||||
/**
|
/**
|
||||||
* 通过单位id获取单位联系人列表
|
* 通过单位id获取单位联系人列表
|
||||||
*/
|
*/
|
||||||
@PostMapping("/api/org/unit/contact/list")
|
@PostMapping("/api/unit/contact/list")
|
||||||
ApiResult<List<OrgUnitContactResp>> list(List<Long> ouIds);
|
ApiResult<List<OrgUnitContactResp>> list(List<Long> ouIds);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# 查询协同关系
|
# 查询协同关系
|
||||||
POST {{host}}/api/org/cooperate-ship/list
|
POST {{host}}/api/cooperate-ship/list
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# 处理部门相关的逻辑
|
# 处理部门相关的逻辑
|
||||||
POST {{host}}/api/org/node/process
|
POST {{host}}/api/node/process
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ Accept: application/json
|
|||||||
###
|
###
|
||||||
|
|
||||||
# 处理部门相关的逻辑
|
# 处理部门相关的逻辑
|
||||||
POST {{host}}/api/org/node/list
|
POST {{host}}/api/node/list
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# 分页列表接口
|
# 分页列表接口
|
||||||
POST {{host}}/api/org/node-user/list
|
POST {{host}}/api/node-user/list
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
#创建
|
#创建
|
||||||
POST {{host}}/api/org/job/create
|
POST {{host}}/api/job/create
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
|
|
||||||
@ -12,7 +12,7 @@ Accept: application/json
|
|||||||
###
|
###
|
||||||
|
|
||||||
#修改
|
#修改
|
||||||
POST {{host}}/api/org/job/update
|
POST {{host}}/api/job/update
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ Accept: application/json
|
|||||||
###
|
###
|
||||||
|
|
||||||
#删除
|
#删除
|
||||||
POST {{host}}/api/org/job/delete
|
POST {{host}}/api/job/delete
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ Accept: application/json
|
|||||||
###
|
###
|
||||||
|
|
||||||
# 查询
|
# 查询
|
||||||
POST {{host}}/api/org/job/list
|
POST {{host}}/api/job/list
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# 查询
|
# 查询
|
||||||
POST {{host}}/api/org/org-user/list
|
POST {{host}}/api/org-user/list
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# 创建单位
|
# 创建单位
|
||||||
POST {{host}}/api/org/unit/create
|
POST {{host}}/api/unit/create
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ Accept: application/json
|
|||||||
###
|
###
|
||||||
|
|
||||||
#分页列表接口
|
#分页列表接口
|
||||||
POST {{host}}/api/org/unit/list
|
POST {{host}}/api/unit/list
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1 @@
|
|||||||
|
-- 待补充
|
||||||
@ -0,0 +1 @@
|
|||||||
|
-- 待补充
|
||||||
@ -18,8 +18,8 @@ import lombok.experimental.Accessors;
|
|||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.Objects;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* (SaasCooperateShip)表实体类
|
* (SaasCooperateShip)表实体类
|
||||||
@ -37,6 +37,9 @@ import java.util.Objects;
|
|||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
public class SaasCooperateShip implements Serializable {
|
public class SaasCooperateShip implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
|
public static final String PATH_SPLITER = ",";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主健
|
* 主健
|
||||||
*/
|
*/
|
||||||
@ -164,5 +167,37 @@ public class SaasCooperateShip implements Serializable {
|
|||||||
private final String desc;
|
private final String desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否为根节点
|
||||||
|
* @param path
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean isRootNode(String path) {
|
||||||
|
return !path.contains(PATH_SPLITER);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从path中提取祖先的节点id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<Long> parseAncestorIdsFromPath() {
|
||||||
|
if (isRootNode(path)) {
|
||||||
|
// 根节点没有父节点
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
List<Long> parentIds = parsePath(path);
|
||||||
|
// 移除路径的最后一个结点
|
||||||
|
return parentIds.subList(0, parentIds.size() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析path
|
||||||
|
* @param path
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<Long> parsePath(String path) {
|
||||||
|
return Arrays.stream(path.split(PATH_SPLITER)).map(e -> Long.valueOf(e.trim())).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -15,13 +15,13 @@ import java.util.Optional;
|
|||||||
|
|
||||||
public interface CooperateShipQueryRepository {
|
public interface CooperateShipQueryRepository {
|
||||||
|
|
||||||
List<CooperateShipResp> list(ListOrgCooperateShipReq req);
|
List<SaasCooperateShip> list(ListOrgCooperateShipReq req);
|
||||||
|
|
||||||
default CooperateShipResp one(OneReq req) {
|
default SaasCooperateShip one(OneReq req) {
|
||||||
return oneOpt(req).orElse(null);
|
return oneOpt(req).orElse(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
default Optional<CooperateShipResp> oneOpt(OneReq req) {
|
default Optional<SaasCooperateShip> oneOpt(OneReq req) {
|
||||||
req.check();
|
req.check();
|
||||||
ListOrgCooperateShipReq listReq = BeanUtil.toBean(req, ListOrgCooperateShipReq.class);
|
ListOrgCooperateShipReq listReq = BeanUtil.toBean(req, ListOrgCooperateShipReq.class);
|
||||||
return list(listReq).stream().findFirst();
|
return list(listReq).stream().findFirst();
|
||||||
@ -45,7 +45,7 @@ public interface CooperateShipQueryRepository {
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Data
|
@Data
|
||||||
@SuperBuilder
|
@SuperBuilder
|
||||||
class CooperateShipResp extends SaasCooperateShip {
|
class CooperateShip extends SaasCooperateShip {
|
||||||
// 按需扩展字段,占个位。避免报错
|
// 按需扩展字段,占个位。避免报错
|
||||||
private String todo;
|
private String todo;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,29 +27,29 @@ public class CooperateShipQueryRepositoryImpl implements CooperateShipQueryRepos
|
|||||||
private final NodeUserQueryRepository nodeUserQueryRepository;
|
private final NodeUserQueryRepository nodeUserQueryRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<CooperateShipResp> list(ListOrgCooperateShipReq req) {
|
public List<SaasCooperateShip> list(ListOrgCooperateShipReq req) {
|
||||||
QueryWrapper<SaasCooperateShip> wrapper = QueryWrapperHelper.fromBean(req, SaasCooperateShip.class);
|
QueryWrapper<SaasCooperateShip> wrapper = QueryWrapperHelper.fromBean(req, SaasCooperateShip.class);
|
||||||
if (wrapper.isEmptyOfWhere()) {
|
if (wrapper.isEmptyOfWhere()) {
|
||||||
//
|
//
|
||||||
log.warn("CooperateShipResp empty of where query. return empty list. req = {}", req);
|
log.warn("CooperateShipResp empty of where query. return empty list. req = {}", req);
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
List<CooperateShipResp> results = cooperateShipDao.list(wrapper)
|
List<SaasCooperateShip> results = cooperateShipDao.list(wrapper)
|
||||||
.stream().map(e -> BeanUtil.toBean(e, CooperateShipResp.class)).collect(Collectors.toList());
|
.stream().map(e -> BeanUtil.toBean(e, SaasCooperateShip.class)).collect(Collectors.toList());
|
||||||
|
|
||||||
results = filterByPersonIds(results, req);
|
results = filterByPersonIds(results, req);
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<CooperateShipResp> filterByPersonIds(List<CooperateShipResp> results, ListOrgCooperateShipReq req) {
|
private List<SaasCooperateShip> filterByPersonIds(List<SaasCooperateShip> results, ListOrgCooperateShipReq req) {
|
||||||
if (req.getPersonId() == null) {
|
if (req.getFilterPersonId() == null) {
|
||||||
// filter by personIds
|
// filter by personIds
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
Set<Long> organizationalNodeIds = results.stream().map(SaasCooperateShip::getOrganizationalNodeId).collect(Collectors.toSet());
|
Set<Long> organizationalNodeIds = results.stream().map(SaasCooperateShip::getOrganizationalNodeId).collect(Collectors.toSet());
|
||||||
Set<Long> personInNodeIds = nodeUserQueryRepository.list(ListNodeUserReq.builder()
|
Set<Long> personInNodeIds = nodeUserQueryRepository.list(ListNodeUserReq.builder()
|
||||||
.personId(req.getPersonId())
|
.personId(req.getFilterPersonId())
|
||||||
.organizationalNodeIds(organizationalNodeIds)
|
.organizationalNodeIds(organizationalNodeIds)
|
||||||
.build())
|
.build())
|
||||||
.stream().map(NodeUserQueryRepository.NodeUserResp::getTopNodeId).collect(Collectors.toSet());
|
.stream().map(NodeUserQueryRepository.NodeUserResp::getTopNodeId).collect(Collectors.toSet());
|
||||||
|
|||||||
@ -0,0 +1,23 @@
|
|||||||
|
package cn.axzo.orgmanax.server.cooperateship.foundation;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public interface CooperateShipFoundationService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过person进行过滤
|
||||||
|
* @param filterPersonId
|
||||||
|
* @param list
|
||||||
|
*/
|
||||||
|
void filterByPerson(Long filterPersonId, List<SaasCooperateShip> list);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提取祖级的数据
|
||||||
|
* @param list
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Set<Long> extractAncestorIds(List<SaasCooperateShip> list);
|
||||||
|
}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
package cn.axzo.orgmanax.server.cooperateship.foundation.impl;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.api.nodeuser.req.ListNodeUserReq;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.nodeuser.repository.NodeUserQueryRepository;
|
||||||
|
import cn.axzo.orgmanax.server.cooperateship.foundation.CooperateShipFoundationService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class CooperateShipFoundationServiceImpl implements CooperateShipFoundationService {
|
||||||
|
|
||||||
|
|
||||||
|
private final NodeUserQueryRepository nodeUserQueryRepository;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void filterByPerson(Long filterPersonId, List<SaasCooperateShip> list) {
|
||||||
|
|
||||||
|
if (filterPersonId == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Set<Long> organizationalNodeIds = list.stream().map(SaasCooperateShip::getOrganizationalNodeId).collect(Collectors.toSet());
|
||||||
|
Set<Long> personInNodeIds = nodeUserQueryRepository.list(ListNodeUserReq.builder()
|
||||||
|
.personId(filterPersonId)
|
||||||
|
.organizationalNodeIds(organizationalNodeIds)
|
||||||
|
.build())
|
||||||
|
.stream().map(NodeUserQueryRepository.NodeUserResp::getTopNodeId).collect(Collectors.toSet());
|
||||||
|
list.removeIf(t -> !personInNodeIds.contains(t.getOrganizationalNodeId()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<Long> extractAncestorIds(List<SaasCooperateShip> list) {
|
||||||
|
return list.stream()
|
||||||
|
.flatMap(e -> e.parseAncestorIdsFromPath().stream())
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -3,6 +3,7 @@ package cn.axzo.orgmanax.server.cooperateship.service;
|
|||||||
import cn.axzo.foundation.exception.Axssert;
|
import cn.axzo.foundation.exception.Axssert;
|
||||||
import cn.axzo.orgmanax.api.cooperateship.req.ListOrgCooperateShipReq;
|
import cn.axzo.orgmanax.api.cooperateship.req.ListOrgCooperateShipReq;
|
||||||
import cn.axzo.orgmanax.api.cooperateship.resp.OrgCooperateShipDTO;
|
import cn.axzo.orgmanax.api.cooperateship.resp.OrgCooperateShipDTO;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
||||||
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipQueryRepository;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
@ -13,7 +14,7 @@ import java.util.List;
|
|||||||
|
|
||||||
public interface CooperateShipService {
|
public interface CooperateShipService {
|
||||||
|
|
||||||
CooperateShipQueryRepository.CooperateShipResp create(CreateReq req);
|
SaasCooperateShip create(CreateReq req);
|
||||||
|
|
||||||
List<OrgCooperateShipDTO> list(ListOrgCooperateShipReq req);
|
List<OrgCooperateShipDTO> list(ListOrgCooperateShipReq req);
|
||||||
|
|
||||||
|
|||||||
@ -9,26 +9,29 @@ import cn.axzo.orgmanax.api.cooperateship.req.ListOrgCooperateShipReq;
|
|||||||
import cn.axzo.orgmanax.api.cooperateship.resp.CooperateShipStatusEnum;
|
import cn.axzo.orgmanax.api.cooperateship.resp.CooperateShipStatusEnum;
|
||||||
import cn.axzo.orgmanax.api.cooperateship.resp.CooperateShipTypeEnum;
|
import cn.axzo.orgmanax.api.cooperateship.resp.CooperateShipTypeEnum;
|
||||||
import cn.axzo.orgmanax.api.cooperateship.resp.OrgCooperateShipDTO;
|
import cn.axzo.orgmanax.api.cooperateship.resp.OrgCooperateShipDTO;
|
||||||
|
import cn.axzo.orgmanax.api.nodeuser.req.ListNodeUserReq;
|
||||||
import cn.axzo.orgmanax.common.config.BizResultCode;
|
import cn.axzo.orgmanax.common.config.BizResultCode;
|
||||||
import cn.axzo.orgmanax.infra.client.workspace.WorkspaceGateway;
|
import cn.axzo.orgmanax.infra.client.workspace.WorkspaceGateway;
|
||||||
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
||||||
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipQueryRepository;
|
||||||
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipUpsertRepository;
|
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipUpsertRepository;
|
||||||
import cn.axzo.orgmanax.infra.dao.node.repository.NodeQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.node.repository.NodeQueryRepository;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.nodeuser.repository.NodeUserQueryRepository;
|
||||||
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitQueryRepository;
|
||||||
import cn.axzo.orgmanax.server.cooperateship.event.inner.CooperateShipEventType;
|
import cn.axzo.orgmanax.server.cooperateship.event.inner.CooperateShipEventType;
|
||||||
import cn.axzo.orgmanax.server.cooperateship.event.inner.payload.CoopeateShipUpsertedPayload;
|
import cn.axzo.orgmanax.server.cooperateship.event.inner.payload.CoopeateShipUpsertedPayload;
|
||||||
|
import cn.axzo.orgmanax.server.cooperateship.foundation.CooperateShipFoundationService;
|
||||||
import cn.axzo.orgmanax.server.cooperateship.service.CooperateShipService;
|
import cn.axzo.orgmanax.server.cooperateship.service.CooperateShipService;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.BooleanUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -53,9 +56,11 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
|||||||
private final UnitQueryRepository unitQueryRepository;
|
private final UnitQueryRepository unitQueryRepository;
|
||||||
private final WorkspaceGateway workspaceGateway;
|
private final WorkspaceGateway workspaceGateway;
|
||||||
private final EventProducer eventProducer;
|
private final EventProducer eventProducer;
|
||||||
|
private final CooperateShipFoundationService cooperateShipFoundationService;
|
||||||
|
private final NodeUserQueryRepository nodeUserQueryRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CooperateShipQueryRepository.CooperateShipResp create(CreateReq req) {
|
public SaasCooperateShip create(CreateReq req) {
|
||||||
// node check
|
// node check
|
||||||
NodeQueryRepository.NodeResp node = nodeQueryRepository.oneOpt(NodeQueryRepository.OneReq.builder().id(req.getOrganizationalNodeId()).build())
|
NodeQueryRepository.NodeResp node = nodeQueryRepository.oneOpt(NodeQueryRepository.OneReq.builder().id(req.getOrganizationalNodeId()).build())
|
||||||
.orElseThrow(() -> BizResultCode.ENTITY_NOT_FOUND.toException("部门不存在{}", req.getOrganizationalNodeId()));
|
.orElseThrow(() -> BizResultCode.ENTITY_NOT_FOUND.toException("部门不存在{}", req.getOrganizationalNodeId()));
|
||||||
@ -63,7 +68,7 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
|||||||
// workspace check
|
// workspace check
|
||||||
WorkspaceDetailResp workspace = workspaceGateway.getDetail(WorkspaceDetailReq.builder().id(req.getWorkspaceId()).build());
|
WorkspaceDetailResp workspace = workspaceGateway.getDetail(WorkspaceDetailReq.builder().id(req.getWorkspaceId()).build());
|
||||||
Axssert.checkNonNull(workspace, "工作台不存在{}", req.getWorkspaceId());
|
Axssert.checkNonNull(workspace, "工作台不存在{}", req.getWorkspaceId());
|
||||||
CooperateShipQueryRepository.CooperateShipResp parentShip = null;
|
SaasCooperateShip parentShip = null;
|
||||||
if (!ALLOWED_TOP_COOPERATE_TYPES.contains(req.getCooperateType())) {
|
if (!ALLOWED_TOP_COOPERATE_TYPES.contains(req.getCooperateType())) {
|
||||||
Axssert.check(req.getParentId() > 0L, BizResultCode.INVALID_PARAM, "父级协同类型不能为空");
|
Axssert.check(req.getParentId() > 0L, BizResultCode.INVALID_PARAM, "父级协同类型不能为空");
|
||||||
parentShip = cooperateShipQueryRepository
|
parentShip = cooperateShipQueryRepository
|
||||||
@ -119,9 +124,26 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<OrgCooperateShipDTO> list(ListOrgCooperateShipReq req) {
|
public List<OrgCooperateShipDTO> list(ListOrgCooperateShipReq req) {
|
||||||
List<OrgCooperateShipDTO> results = cooperateShipQueryRepository.list(req).stream()
|
|
||||||
.map(e -> BeanUtil.toBean(e, OrgCooperateShipDTO.class)).collect(Collectors.toList());
|
boolean isFilterCurrentNodeByPerson = ObjectUtil.isNotNull(req.getFilterPersonId()) && Objects.equals(req.getFilterPersonType(), 1);
|
||||||
// assemble other data
|
|
||||||
return results;
|
// 根据入参查询数据
|
||||||
|
List<SaasCooperateShip> list = cooperateShipQueryRepository.list(req);
|
||||||
|
if (CollUtil.isEmpty(list)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 是否根据person过滤当前节点
|
||||||
|
if (isFilterCurrentNodeByPerson) {
|
||||||
|
cooperateShipFoundationService.filterByPerson(req.getFilterPersonId(), list);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 是否查询祖先
|
||||||
|
if (BooleanUtil.isTrue(req.getIsSelectAncestors())) {
|
||||||
|
Set<Long> ancestorIds = cooperateShipFoundationService.extractAncestorIds(list);
|
||||||
|
List<SaasCooperateShip> ancestorShipNodes = cooperateShipQueryRepository.list(ListOrgCooperateShipReq.builder().ids(ancestorIds).build());
|
||||||
|
list.addAll(ancestorShipNodes);
|
||||||
|
}
|
||||||
|
return BeanUtil.copyToList(list, OrgCooperateShipDTO.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import cn.axzo.orgmanax.common.config.BizResultCode;
|
|||||||
import cn.axzo.orgmanax.infra.client.profile.PersonProfileGateway;
|
import cn.axzo.orgmanax.infra.client.profile.PersonProfileGateway;
|
||||||
import cn.axzo.orgmanax.infra.client.profile.dto.ProfileIdentityResp;
|
import cn.axzo.orgmanax.infra.client.profile.dto.ProfileIdentityResp;
|
||||||
import cn.axzo.orgmanax.infra.client.profile.dto.ProfilePersonResp;
|
import cn.axzo.orgmanax.infra.client.profile.dto.ProfilePersonResp;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
||||||
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipQueryRepository;
|
||||||
import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNode;
|
import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNode;
|
||||||
import cn.axzo.orgmanax.infra.dao.node.repository.NodeQueryRepository;
|
import cn.axzo.orgmanax.infra.dao.node.repository.NodeQueryRepository;
|
||||||
@ -134,7 +135,7 @@ public class NodeUserFoundationServiceImpl implements NodeUserFoundationService
|
|||||||
}
|
}
|
||||||
return cooperateShipQueryRepository.oneOpt(CooperateShipQueryRepository.OneReq.builder()
|
return cooperateShipQueryRepository.oneOpt(CooperateShipQueryRepository.OneReq.builder()
|
||||||
.organizationalNodeId(node.getOrganizationalUnitId())
|
.organizationalNodeId(node.getOrganizationalUnitId())
|
||||||
.build()).map(CooperateShipQueryRepository.CooperateShipResp::getWorkspaceId)
|
.build()).map(SaasCooperateShip::getWorkspaceId)
|
||||||
.orElseThrow(() -> BizResultCode.ENTITY_NOT_FOUND.toException("部门人员所属项目未找到,请稍后重试"));
|
.orElseThrow(() -> BizResultCode.ENTITY_NOT_FOUND.toException("部门人员所属项目未找到,请稍后重试"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -29,4 +29,28 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<finalName>orgmanax</finalName>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/java</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.xml</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<includeSystemScope>true</includeSystemScope>
|
||||||
|
<mainClass>cn.axzo.orgmanax.Application</mainClass>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
||||||
Loading…
Reference in New Issue
Block a user