feat(REQ-3714) 工人退场流程优化 - 标签系统API对接
This commit is contained in:
parent
01e2b05443
commit
e7380710a7
@ -0,0 +1,20 @@
|
||||
package cn.axzo.orgmanax.infra.client.datatagger;
|
||||
|
||||
import cn.axzo.orgmanax.infra.client.datatagger.dto.RevokeDataTagReq;
|
||||
|
||||
/**
|
||||
* @author luofu
|
||||
* @version 1.0
|
||||
* @description 标签系统的相关API
|
||||
* @date 2025/3/5
|
||||
*/
|
||||
public interface DataTagClient {
|
||||
|
||||
/**
|
||||
* 撤销标签
|
||||
*
|
||||
* @param request 入参
|
||||
* @return 结果,成功返回 {@code true},否则返回 {@code false}
|
||||
*/
|
||||
boolean revokeDataTags(RevokeDataTagReq request);
|
||||
}
|
||||
@ -0,0 +1,50 @@
|
||||
package cn.axzo.orgmanax.infra.client.datatagger.dto;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author luofu
|
||||
* @version 1.0
|
||||
* @description 标签系统查询属性
|
||||
* @date 2025/3/5
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class DataTagQueryProperty {
|
||||
|
||||
/**
|
||||
* 单位id
|
||||
*/
|
||||
private Long ouId;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
private Long workspaceId;
|
||||
|
||||
/**
|
||||
* 平台班组的nodeId
|
||||
*/
|
||||
private Long platTeamNodeId;
|
||||
|
||||
/**
|
||||
* 项目班组的nodeId
|
||||
*/
|
||||
private Long projectTeamNodeId;
|
||||
|
||||
/**
|
||||
* 小组的nodeId
|
||||
*/
|
||||
private Long groupNodeId;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,62 @@
|
||||
package cn.axzo.orgmanax.infra.client.datatagger.dto;
|
||||
|
||||
import cn.axzo.orgmanax.infra.client.datatagger.enums.DataTagTypeEnum;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author luofu
|
||||
* @version 1.0
|
||||
* @description 撤销数据标签入参
|
||||
* @date 2025/3/5
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class RevokeDataTagReq {
|
||||
|
||||
/**
|
||||
* 对象类型 - 必传
|
||||
*/
|
||||
@NonNull
|
||||
private DataTagTypeEnum objectType;
|
||||
|
||||
/**
|
||||
* 标签编码 - 必传
|
||||
*/
|
||||
@NonNull
|
||||
private List<String> tagCodes;
|
||||
|
||||
/**
|
||||
* 标签值编码
|
||||
*/
|
||||
private List<String> tagValueCodes;
|
||||
|
||||
/**
|
||||
* 对象ID
|
||||
*/
|
||||
private List<Long> objectIds;
|
||||
|
||||
/**
|
||||
* 查询对象
|
||||
*/
|
||||
@Builder.Default
|
||||
private DataTagQueryProperty queryProperties = new DataTagQueryProperty();
|
||||
|
||||
/**
|
||||
* 严格模式
|
||||
*/
|
||||
private boolean restrictMode = true;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,57 @@
|
||||
package cn.axzo.orgmanax.infra.client.datatagger.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author luofu
|
||||
* @version 1.0
|
||||
* @description 对象类型 - 与标签系统的枚举对应 {@see cn.axzo.datatagger.common.enums.TagObjectType}
|
||||
* @date 2025/3/5
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum DataTagTypeEnum {
|
||||
|
||||
// queryFields = [], objectId = personId
|
||||
PLAT_PERSON("平台用户"),
|
||||
// queryFields = [ouId], objectId = personId
|
||||
UNIT_PERSON("单位用户"),
|
||||
// queryFields = [workspaceId], objectId = personId
|
||||
PROJECT_PERSON("项目用户"),
|
||||
// queryFields = [workspaceId, ouId], objectId = personId
|
||||
PROJECT_UNIT_PERSON("项目单位用户"),
|
||||
// queryFields = [ouId, platTeamNodeId], objectId = personId
|
||||
UNIT_TERM_PERSON("单位班组用户"),
|
||||
// queryFields = [workspaceId, projectTeamNodeId], objectId = personId
|
||||
PROJECT_TERM_PERSON("项目班组用户"),
|
||||
// queryFields = [workspaceId, groupNodeId], objectId = personId
|
||||
PROJECT_GROUP_PERSON("项目小组用户"),
|
||||
// queryFields = [workspaceId?], objectId = ouId
|
||||
PLAT_OR_PROJECT_UNIT("全部"),
|
||||
// queryFields = [], objectId = ouId
|
||||
PLAT_UNIT("平台单位"),
|
||||
// queryFields = [workspaceId], objectId = ouId
|
||||
PROJECT_UNIT("项目单位"),
|
||||
WORKSPACE("租户"),
|
||||
// queryFields = [], objectId = workspaceId
|
||||
PROJECT("项目"),
|
||||
// !! 班组
|
||||
// queryFields = [], objectId = platTeamNodeId / projectTeamNodeId
|
||||
PLAT_OR_PROJECT_TEAM("全部"),
|
||||
// queryFields = [], objectId = platTeamNodeId
|
||||
PLAT_TEAM("平台班组"),
|
||||
// queryFields = [], objectId = projectTeamNodeId
|
||||
PROJECT_TEAM("项目班组"),
|
||||
// !! 小组
|
||||
// queryFields = [], objectId = groupNodeId
|
||||
GROUP("小组"),
|
||||
// !! 部门
|
||||
// queryFields = [ouId], objectId = departmentNodeId
|
||||
UNIT_DEPARTMENT("单位普通部门"),
|
||||
// queryFields = [workspaceId], objectId = departmentNodeId
|
||||
PROJECT_DEPARTMENT("项目普通部门"),
|
||||
;
|
||||
|
||||
private final String desc;
|
||||
}
|
||||
@ -62,12 +62,20 @@
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<!-- 考勤依赖 -->
|
||||
|
||||
<!-- 考勤依赖 -->
|
||||
<dependency>
|
||||
<groupId>cn.axzo.attendance</groupId>
|
||||
<artifactId>attendance-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 标签系统依赖 -->
|
||||
<dependency>
|
||||
<groupId>cn.axzo.data-tagger</groupId>
|
||||
<artifactId>data-tagger-api</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@ -0,0 +1,56 @@
|
||||
package cn.axzo.orgmanax.integration.sdk.datatagger;
|
||||
|
||||
import cn.axzo.datatagger.api.objecttag.ObjectTagClient;
|
||||
import cn.axzo.datatagger.api.objecttag.request.ObjectTagQueryProperties;
|
||||
import cn.axzo.datatagger.api.objecttag.request.RevokeObjectTagRequest;
|
||||
import cn.axzo.datatagger.common.enums.TagObjectType;
|
||||
import cn.axzo.orgmanax.infra.client.datatagger.DataTagClient;
|
||||
import cn.axzo.orgmanax.infra.client.datatagger.dto.DataTagQueryProperty;
|
||||
import cn.axzo.orgmanax.infra.client.datatagger.dto.RevokeDataTagReq;
|
||||
import cn.axzo.orgmanax.integration.core.RpcWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author luofu
|
||||
* @version 1.0
|
||||
* @description 标签系统相关API
|
||||
* @date 2025/3/5
|
||||
*/
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class DataTagClientImpl implements DataTagClient {
|
||||
|
||||
private final ObjectTagClient objectTagClient;
|
||||
|
||||
@Override
|
||||
public boolean revokeDataTags(RevokeDataTagReq request) {
|
||||
return RpcWrapper.commonRes(() -> objectTagClient.revokeObjectTags(toRevokeRequest(request)));
|
||||
}
|
||||
|
||||
private static RevokeObjectTagRequest toRevokeRequest(RevokeDataTagReq request) {
|
||||
RevokeObjectTagRequest req = new RevokeObjectTagRequest();
|
||||
BeanUtils.copyProperties(request, req);
|
||||
req.setObjectType(TagObjectType.valueOf(request.getObjectType().name()));
|
||||
req.setQueryProperties(toQueryProperties(request.getQueryProperties()));
|
||||
return req;
|
||||
}
|
||||
|
||||
private static ObjectTagQueryProperties toQueryProperties(DataTagQueryProperty queryProperties) {
|
||||
ObjectTagQueryProperties properties = new ObjectTagQueryProperties();
|
||||
// ouId
|
||||
Optional.ofNullable(queryProperties.getOuId()).ifPresent(properties::setOuId);
|
||||
// workspaceId
|
||||
Optional.ofNullable(queryProperties.getWorkspaceId()).ifPresent(properties::setWorkspaceId);
|
||||
// projectTeamNodeId
|
||||
Optional.ofNullable(queryProperties.getPlatTeamNodeId()).ifPresent(properties::setPlatTeamNodeId);
|
||||
// projectTeamNodeId
|
||||
Optional.ofNullable(queryProperties.getProjectTeamNodeId()).ifPresent(properties::setProjectTeamNodeId);
|
||||
// groupNodeId
|
||||
Optional.ofNullable(queryProperties.getGroupNodeId()).ifPresent(properties::setGroupNodeId);
|
||||
return properties;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user