feat(REQ-3714) 工人退场流程优化 - 标签系统API对接

This commit is contained in:
luofu 2025-03-05 16:14:21 +08:00
parent 01e2b05443
commit e7380710a7
6 changed files with 254 additions and 1 deletions

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -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>

View File

@ -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;
}
}