feat(REQ-3282): 岗位相关表结构、mapper、dao引入
This commit is contained in:
parent
ea27e70c08
commit
7c012f63bb
@ -0,0 +1,93 @@
|
|||||||
|
package cn.axzo.orgmanax.api.cooperateship.enums;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author syl
|
||||||
|
* @date 2024/12/20
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum OrganizationalNodeTypeEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认单位,位为65535
|
||||||
|
*/
|
||||||
|
ALL_TYPE(0, "默认节点类型", 65535),
|
||||||
|
/**
|
||||||
|
* 部门(团队也归属于部门)
|
||||||
|
*/
|
||||||
|
DEPARTMENT(1, "部门", 1),
|
||||||
|
/**
|
||||||
|
* 平台班组
|
||||||
|
*/
|
||||||
|
TEAM(2, "平台班组", 2),
|
||||||
|
/**
|
||||||
|
* 小组
|
||||||
|
*/
|
||||||
|
GROUP(3, "小组", 3),
|
||||||
|
/**
|
||||||
|
* 项目内班组
|
||||||
|
*/
|
||||||
|
PROJECT_TEAM(4, "项目内班组", 4),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目内小组
|
||||||
|
*/
|
||||||
|
PROJECT_GROUP(5, "项目内小组", 5),
|
||||||
|
;
|
||||||
|
|
||||||
|
@JsonValue
|
||||||
|
private final Integer value;
|
||||||
|
|
||||||
|
private final String desc;
|
||||||
|
private final Integer bitValue;
|
||||||
|
|
||||||
|
private static Map<Integer, OrganizationalNodeTypeEnum> bitMap;
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isSameOrChildNodeType(Integer nodeType) {
|
||||||
|
OrganizationalNodeTypeEnum typeByeCode = getByNodeType(nodeType);
|
||||||
|
if (typeByeCode == null)
|
||||||
|
throw new RuntimeException("Unknown node type: " + nodeType);
|
||||||
|
return isSameOrChildNodeType(typeByeCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSameOrChildNodeType(OrganizationalNodeTypeEnum type) {
|
||||||
|
if (this == type)
|
||||||
|
return true;
|
||||||
|
if (this == OrganizationalNodeTypeEnum.PROJECT_TEAM)
|
||||||
|
return type == OrganizationalNodeTypeEnum.PROJECT_GROUP;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static OrganizationalNodeTypeEnum bitValueOf(Integer valueBit) {
|
||||||
|
if (valueBit == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (bitMap == null) {
|
||||||
|
bitMap = Arrays.stream(values())
|
||||||
|
.collect(
|
||||||
|
Collectors.toMap(OrganizationalNodeTypeEnum::getBitValue, Function.identity()));
|
||||||
|
|
||||||
|
}
|
||||||
|
return bitMap.get(valueBit);
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
|
||||||
|
public static OrganizationalNodeTypeEnum getByNodeType(Integer value) {
|
||||||
|
return Arrays.stream(values()).filter(o -> o.getValue().equals(value)).findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getCode() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,110 @@
|
|||||||
|
package cn.axzo.orgmanax.api.cooperateship.enums;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public enum SaasCooperateShipCooperateTypeEnum {
|
||||||
|
|
||||||
|
PROJ_PRIMARY_CONTRACTING_UNIT(1, "施工总承包"),
|
||||||
|
PROJ_CONSTRUCTION_UNIT(2, "建设单位"),
|
||||||
|
PROJ_SUPERVISION_UNIT(3, "监理单位"),
|
||||||
|
PROJ_LABOR_SUBCONTRACTING(4, "劳务分包"),
|
||||||
|
PROJ_PROFESSIONAL_SUBCONTRACTING(5, "专业承包"),
|
||||||
|
OMS(6, "OMS"),
|
||||||
|
ENT_COMMON(7, "企业通用"),
|
||||||
|
ENT_TEAM(8, "企业内班组"),
|
||||||
|
PROJ_TEAM(9,"项目内班组"),
|
||||||
|
ENT_GROUP(10, "企业内小组"),
|
||||||
|
PROJ_GROUP(11, "项目内小组"),
|
||||||
|
SURVEY_UNIT(12, "地勘单位"),
|
||||||
|
DESIGN_UNIT(13, "设计单位"),
|
||||||
|
OTHER(30,"其他")
|
||||||
|
;
|
||||||
|
|
||||||
|
private static final Map<Integer, SaasCooperateShipCooperateTypeEnum> mapping = new HashMap<>();
|
||||||
|
static {
|
||||||
|
Arrays.stream(SaasCooperateShipCooperateTypeEnum.values()).forEach(t -> mapping.put(t.getCode(), t));
|
||||||
|
}
|
||||||
|
|
||||||
|
public final Integer code;
|
||||||
|
public final String desc;
|
||||||
|
|
||||||
|
SaasCooperateShipCooperateTypeEnum(Integer code, String desc) {
|
||||||
|
this.code = code;
|
||||||
|
this.desc = desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SaasCooperateShipCooperateTypeEnum getByCode(Integer code) {
|
||||||
|
return mapping.get(code);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 班组类型关系:企业/项目内班组 **/
|
||||||
|
public boolean isTeam() {
|
||||||
|
return this == ENT_TEAM || this == PROJ_TEAM;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 小组类型关系:企业/项目内小组 **/
|
||||||
|
public boolean isGroup() {
|
||||||
|
return this == ENT_GROUP || this == PROJ_GROUP;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<SaasCooperateShipCooperateTypeEnum> getEntEnum() {
|
||||||
|
return Arrays.asList(
|
||||||
|
ENT_COMMON
|
||||||
|
,PROJ_PRIMARY_CONTRACTING_UNIT
|
||||||
|
,PROJ_CONSTRUCTION_UNIT
|
||||||
|
,PROJ_SUPERVISION_UNIT
|
||||||
|
,PROJ_LABOR_SUBCONTRACTING
|
||||||
|
,PROJ_PROFESSIONAL_SUBCONTRACTING
|
||||||
|
,SURVEY_UNIT
|
||||||
|
,DESIGN_UNIT
|
||||||
|
,OTHER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<Integer> getEntEnumCode() {
|
||||||
|
return Arrays.asList(
|
||||||
|
ENT_COMMON.getCode()
|
||||||
|
,PROJ_PRIMARY_CONTRACTING_UNIT.getCode()
|
||||||
|
,PROJ_CONSTRUCTION_UNIT.getCode()
|
||||||
|
,PROJ_SUPERVISION_UNIT.getCode()
|
||||||
|
,PROJ_LABOR_SUBCONTRACTING.getCode()
|
||||||
|
,PROJ_PROFESSIONAL_SUBCONTRACTING.getCode()
|
||||||
|
,SURVEY_UNIT.getCode()
|
||||||
|
,DESIGN_UNIT.getCode()
|
||||||
|
,OTHER.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Integer convertNodeTypeToCooperateType(Integer nodeType) {
|
||||||
|
if (Objects.equals(nodeType, OrganizationalNodeTypeEnum.PROJECT_TEAM.getValue())) {
|
||||||
|
return PROJ_TEAM.getCode();
|
||||||
|
}
|
||||||
|
if (Objects.equals(nodeType, OrganizationalNodeTypeEnum.PROJECT_GROUP.getValue())) {
|
||||||
|
return PROJ_GROUP.getCode();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean is(Integer code) {
|
||||||
|
return this.code.equals(code);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isInScopeAsNode(Integer cooperateType) {
|
||||||
|
SaasCooperateShipCooperateTypeEnum typeByeCode = getByCode(cooperateType);
|
||||||
|
if (typeByeCode == null)
|
||||||
|
throw new RuntimeException("Unknown cooperate type: " + cooperateType);
|
||||||
|
return isInScopeAsNode(typeByeCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isInScopeAsNode(SaasCooperateShipCooperateTypeEnum type) {
|
||||||
|
if (this == type)
|
||||||
|
return true;
|
||||||
|
if (this == SaasCooperateShipCooperateTypeEnum.PROJ_TEAM)
|
||||||
|
return type == SaasCooperateShipCooperateTypeEnum.PROJ_GROUP;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
package cn.axzo.orgmanax.api.orgjob.enums;
|
||||||
|
|
||||||
|
import lombok.AccessLevel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @description 岗位标签枚举
|
||||||
|
* @date 2024/9/20
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
|
public enum OrgJobFlagEnum {
|
||||||
|
|
||||||
|
SYSTEM("系统岗"),
|
||||||
|
BUSINESS("业务岗");
|
||||||
|
|
||||||
|
private final String desc;
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return name();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,108 @@
|
|||||||
|
package cn.axzo.orgmanax.api.orgjob.enums;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.api.cooperateship.enums.SaasCooperateShipCooperateTypeEnum;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
import lombok.AccessLevel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位分组标识枚举
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
|
public enum OrgJobGroupFlagEnum {
|
||||||
|
|
||||||
|
WORKSPACE_ENT("job_group:workspace_ent", null, null, 1, 1, "企业"),
|
||||||
|
WORKSPACE_PROJ("job_group:workspace_proj", null, null, 1, 2, "项目"),
|
||||||
|
WORKSPACE_OMS("job_group:workspace_oms", null, null, 1, 3, "OMS"),
|
||||||
|
|
||||||
|
ENT_COMMON("job_group:ent_common", WORKSPACE_ENT, SaasCooperateShipCooperateTypeEnum.ENT_COMMON, 2, 1, "企业通用"),
|
||||||
|
ENT_TEAM("job_group:ent_team", WORKSPACE_ENT, SaasCooperateShipCooperateTypeEnum.ENT_TEAM, 2, 2, "企业班组"),
|
||||||
|
|
||||||
|
PROJ_PRIMARY_UNIT("job_group:proj_primary_unit", WORKSPACE_PROJ, SaasCooperateShipCooperateTypeEnum.PROJ_PRIMARY_CONTRACTING_UNIT,
|
||||||
|
2, 1, "总包"),
|
||||||
|
PROJ_CONSTRUCTION_UNIT("job_group:proj_construction_unit", WORKSPACE_PROJ, SaasCooperateShipCooperateTypeEnum.PROJ_CONSTRUCTION_UNIT,
|
||||||
|
2, 2, "建设单位"),
|
||||||
|
PROJ_SUPERVISION_UNIT("job_group:proj_supervision_unit", WORKSPACE_PROJ, SaasCooperateShipCooperateTypeEnum.PROJ_SUPERVISION_UNIT,
|
||||||
|
2, 3, "监理单位"),
|
||||||
|
PROJ_LABOR_UNIT("job_group:proj_labor_unit", WORKSPACE_PROJ, SaasCooperateShipCooperateTypeEnum.PROJ_LABOR_SUBCONTRACTING,
|
||||||
|
2, 4, "劳务分包"),
|
||||||
|
PROJ_PROFESSIONAL_UNIT("job_group:proj_professional_unit", WORKSPACE_PROJ,
|
||||||
|
SaasCooperateShipCooperateTypeEnum.PROJ_PROFESSIONAL_SUBCONTRACTING, 2, 5, "专业分包"),
|
||||||
|
PROJ_TEAM("job_group:proj_team", WORKSPACE_PROJ, SaasCooperateShipCooperateTypeEnum.PROJ_TEAM, 2, 9, "项目班组"),
|
||||||
|
OTHER("job_group:other", WORKSPACE_PROJ, SaasCooperateShipCooperateTypeEnum.OTHER, 2, 11, "其他"),
|
||||||
|
|
||||||
|
OMS("job_group:oms", WORKSPACE_OMS, SaasCooperateShipCooperateTypeEnum.OMS, 2, 1, "OMS通用");
|
||||||
|
|
||||||
|
private final String code;
|
||||||
|
private final OrgJobGroupFlagEnum parent;
|
||||||
|
private final SaasCooperateShipCooperateTypeEnum cooperateType;
|
||||||
|
private final Integer level;
|
||||||
|
private final Integer priority;
|
||||||
|
private final String desc;
|
||||||
|
|
||||||
|
public Integer getWorkspaceType() {
|
||||||
|
OrgJobGroupFlagEnum current = this;
|
||||||
|
while (current != null) {
|
||||||
|
Integer workspaceType = current.getWorkspaceTypeInner();
|
||||||
|
if (workspaceType != null)
|
||||||
|
return workspaceType;
|
||||||
|
current = current.parent;
|
||||||
|
}
|
||||||
|
throw new RuntimeException("Should never happen!");
|
||||||
|
}
|
||||||
|
|
||||||
|
private Integer getWorkspaceTypeInner() {
|
||||||
|
if (this == WORKSPACE_ENT)
|
||||||
|
return 1;
|
||||||
|
if (this == WORKSPACE_PROJ)
|
||||||
|
return 2;
|
||||||
|
if (this == WORKSPACE_OMS)
|
||||||
|
return 6;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isElementOfSubtree(OrgJobGroupFlagEnum subtreeParent) {
|
||||||
|
OrgJobGroupFlagEnum current = this;
|
||||||
|
while (current != null) {
|
||||||
|
if (current == subtreeParent)
|
||||||
|
return true;
|
||||||
|
current = current.parent;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分组树的层高
|
||||||
|
*/
|
||||||
|
public static int treeHeight() {
|
||||||
|
return Arrays.stream(values())
|
||||||
|
.mapToInt(OrgJobGroupFlagEnum::getLevel)
|
||||||
|
.max().orElse(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Optional<OrgJobGroupFlagEnum> cooperateTypeOf(Integer cooperateType) {
|
||||||
|
return Arrays.stream(OrgJobGroupFlagEnum.values())
|
||||||
|
.filter(e -> Objects.nonNull(e.getCooperateType()))
|
||||||
|
.filter(e -> e.cooperateType.isInScopeAsNode(cooperateType))
|
||||||
|
.findFirst();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean match(Integer cooperateType) {
|
||||||
|
if (Objects.isNull(this.cooperateType)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (SaasCooperateShipCooperateTypeEnum.ENT_COMMON.is(cooperateType)) {
|
||||||
|
// 单位默认匹配上单位班组
|
||||||
|
return this.cooperateType.is(cooperateType)
|
||||||
|
|| SaasCooperateShipCooperateTypeEnum.ENT_TEAM.equals(this.cooperateType);
|
||||||
|
}
|
||||||
|
return this.cooperateType.is(cooperateType);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
package cn.axzo.orgmanax.api.orgjob.enums;
|
||||||
|
|
||||||
|
import cn.axzo.basics.common.constant.enums.CodeDefinition;
|
||||||
|
import lombok.AccessLevel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位类型枚举
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
|
public enum OrgJobTypeEnum implements CodeDefinition<String> {
|
||||||
|
|
||||||
|
SYSTEM("系统预设"), CUSTOM("自定义");
|
||||||
|
|
||||||
|
private final String desc;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCode() {
|
||||||
|
return name();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,103 @@
|
|||||||
|
package cn.axzo.orgmanax.api.orgjob.req;
|
||||||
|
|
||||||
|
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
|
||||||
|
import cn.axzo.foundation.dao.support.wrapper.Operator;
|
||||||
|
import cn.axzo.foundation.page.IPageReq;
|
||||||
|
import cn.axzo.orgmanax.api.orgjob.enums.OrgJobGroupFlagEnum;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class PageOrgJobReq implements IPageReq {
|
||||||
|
/**
|
||||||
|
* 岗位ids
|
||||||
|
*/
|
||||||
|
@CriteriaField(field = "id", operator = Operator.IN)
|
||||||
|
private Set<Long> jobIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 岗位codes
|
||||||
|
*/
|
||||||
|
@CriteriaField(field = "code", operator = Operator.IN)
|
||||||
|
private Set<String> jobCodes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分组编码集合
|
||||||
|
*/
|
||||||
|
private List<String> orgJobGroupCodes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 岗位分组标识集合
|
||||||
|
*/
|
||||||
|
private List<OrgJobGroupFlagEnum> orgJobGroupFlags;
|
||||||
|
/**
|
||||||
|
* 是否需要查询角色信息
|
||||||
|
*/
|
||||||
|
@Builder.Default
|
||||||
|
private Boolean needSaasRole = false;
|
||||||
|
|
||||||
|
// v1 版本接口入参兼容
|
||||||
|
/**
|
||||||
|
* 单位/团队 ID 列表
|
||||||
|
*/
|
||||||
|
private List<Long> unitIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作台id 列表
|
||||||
|
*/
|
||||||
|
private List<Long> workspaceIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 岗位类型 1:总包单位 2:建设单位 3:监理单位 4:劳务分包 5:专业分包 6:OMS 7:企业通用 9:班组项目内
|
||||||
|
*/
|
||||||
|
private List<Integer> types;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可为空,即加载默认和自定义所有岗位 true预定义岗位 false 自定义岗位
|
||||||
|
*/
|
||||||
|
private Boolean readonly;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 岗位搜索关键字
|
||||||
|
*/
|
||||||
|
private String searchKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 全匹配
|
||||||
|
*/
|
||||||
|
private String equalSearchKey;
|
||||||
|
|
||||||
|
/** 是否需要推荐角色 默认false-不需要**/
|
||||||
|
private boolean needRole = false;
|
||||||
|
|
||||||
|
/** 是否需要推荐角色的详情(id和name) 默认false-不需要**/
|
||||||
|
private boolean needRoleDetail = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否让后端查询unit的workspaceId. 配合unitId使用
|
||||||
|
*/
|
||||||
|
private Boolean queryUnitWorkspaceId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 岗位搜索关键字
|
||||||
|
*/
|
||||||
|
private String keyword;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * 岗位配置code集合
|
||||||
|
// */
|
||||||
|
// private Set<String> jobCodes;
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * jobId 列表
|
||||||
|
// */
|
||||||
|
// private Set<Long> jobIds;
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.constants;
|
||||||
|
|
||||||
|
import lombok.AccessLevel;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位相关的常量
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/12
|
||||||
|
*/
|
||||||
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
|
public final class OrgJobConstant {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统操作人的personId
|
||||||
|
*/
|
||||||
|
public static final long SYSTEM_OPERATOR_ID = -1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认岗位的标识
|
||||||
|
*/
|
||||||
|
public static final int ORG_JOB_DEF_FLAG = 1;
|
||||||
|
}
|
||||||
@ -1,10 +1,60 @@
|
|||||||
package cn.axzo.orgmanax.infra.dao.orgjob.dao;
|
package cn.axzo.orgmanax.infra.dao.orgjob.dao;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.constants.OrgJobConstant;
|
||||||
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob;
|
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob;
|
||||||
import cn.axzo.orgmanax.infra.dao.orgjob.mapper.OrgJobMapper;
|
import cn.axzo.orgmanax.infra.dao.orgjob.mapper.OrgJobMapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public class OrgJobDao extends ServiceImpl<OrgJobMapper, OrgJob> {
|
public class OrgJobDao extends ServiceImpl<OrgJobMapper, OrgJob> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物理删除岗位,慎用
|
||||||
|
*
|
||||||
|
* @param id 岗位id
|
||||||
|
* @return 影响行数
|
||||||
|
*/
|
||||||
|
public int absoluteRemove(Long id) {
|
||||||
|
if (Objects.isNull(id)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return getBaseMapper().absoluteRemove(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 逻辑删除岗位,慎用
|
||||||
|
*
|
||||||
|
* @param id 岗位id
|
||||||
|
* @param operatorId 操作人的personId
|
||||||
|
* @return 影响行数
|
||||||
|
*/
|
||||||
|
public int remove(Long id, Long operatorId) {
|
||||||
|
if (Objects.isNull(id)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
operatorId = Optional.ofNullable(operatorId).orElse(OrgJobConstant.SYSTEM_OPERATOR_ID);
|
||||||
|
return getBaseMapper().remove(id, operatorId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过code查询岗位
|
||||||
|
*
|
||||||
|
* @param code 编码
|
||||||
|
* @return 岗位信息
|
||||||
|
*/
|
||||||
|
public Optional<OrgJob> queryByCode(String code) {
|
||||||
|
if (StringUtils.isBlank(code)) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
return Optional.ofNullable(getBaseMapper().queryByCode(code));
|
||||||
|
}
|
||||||
|
|
||||||
|
// todo
|
||||||
|
// public IPage<OrgJob> oldList(OrganizationalJobConfigQueryReq req) {
|
||||||
|
// return getBaseMapper().oldList(req,req.toPage());
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,20 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.orgjob.dao;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJobGroup;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.orgjob.mapper.OrgJobGroupMapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位分组表数据库访问层
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Repository
|
||||||
|
public class OrgJobGroupDao extends ServiceImpl<OrgJobGroupMapper, OrgJobGroup> {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.orgjob.dao;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJobGroupRelation;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.orgjob.mapper.OrgJobGroupRelationMapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位与分组的关系表数据库访问层
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Repository
|
||||||
|
public class OrgJobGroupRelationDao extends ServiceImpl<OrgJobGroupRelationMapper, OrgJobGroupRelation> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物理删除岗位与分组关联关系,慎用
|
||||||
|
*
|
||||||
|
* @param groupCode 分组编码
|
||||||
|
* @return 影响行数
|
||||||
|
*/
|
||||||
|
public int absoluteRemove(String groupCode) {
|
||||||
|
if (StringUtils.isBlank(groupCode)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return getBaseMapper().absoluteRemove(groupCode);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.orgjob.dao;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJobGroupRelationHistory;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.orgjob.mapper.OrgJobGroupRelationHistoryMapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位与分组的关系历史表数据库访问层
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Repository
|
||||||
|
public class OrgJobGroupRelationHistoryDao extends ServiceImpl<OrgJobGroupRelationHistoryMapper, OrgJobGroupRelationHistory> {
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.orgjob.dao;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJobHistory;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.orgjob.mapper.OrgJobHistoryMapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位变更历史表数据库访问层
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Repository
|
||||||
|
public class OrgJobHistoryDao extends ServiceImpl<OrgJobHistoryMapper, OrgJobHistory> {
|
||||||
|
}
|
||||||
@ -0,0 +1,59 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.orgjob.entity;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.api.orgjob.enums.OrgJobGroupFlagEnum;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位分组表
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@TableName(value = "org_job_group", autoResultMap = true)
|
||||||
|
public class OrgJobGroup implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 5424203030547622211L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父节点id
|
||||||
|
*/
|
||||||
|
private Long parentId;
|
||||||
|
/**
|
||||||
|
* 编码
|
||||||
|
*/
|
||||||
|
@TableField("`code`")
|
||||||
|
private String code;
|
||||||
|
/**
|
||||||
|
* 分组名称
|
||||||
|
*/
|
||||||
|
@TableField("`name`")
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 优先级,同一层级的分组优先级才有意义
|
||||||
|
*/
|
||||||
|
private Integer priority;
|
||||||
|
/**
|
||||||
|
* 分组标识,其与工作台类型及参建类型在后端进行映射
|
||||||
|
*/
|
||||||
|
private OrgJobGroupFlagEnum flag;
|
||||||
|
/**
|
||||||
|
* 变更人的自然人id
|
||||||
|
*/
|
||||||
|
private Long operatorId;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return JSON.toJSONString(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.orgjob.entity;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位与分组的关系表
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@TableName(value = "org_job_group_relation", autoResultMap = true)
|
||||||
|
public class OrgJobGroupRelation implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 2195750914706800541L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分组编码
|
||||||
|
*/
|
||||||
|
private String groupCode;
|
||||||
|
/**
|
||||||
|
* 岗位编码
|
||||||
|
*/
|
||||||
|
private String jobCode;
|
||||||
|
/**
|
||||||
|
* 变更人的自然人id
|
||||||
|
*/
|
||||||
|
private Long operatorId;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return JSON.toJSONString(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.orgjob.entity;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位与分组的关系历史表
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@TableName(value = "org_job_group_relation_history", autoResultMap = true)
|
||||||
|
public class OrgJobGroupRelationHistory implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分组编码
|
||||||
|
*/
|
||||||
|
private String groupCode;
|
||||||
|
/**
|
||||||
|
* 岗位编码列表
|
||||||
|
* todo 之前引用jackson框架,先测试,不行再替换
|
||||||
|
*/
|
||||||
|
// @TableField(typeHandler = StringListTypeHandler.class)
|
||||||
|
private List<String> jobCodes;
|
||||||
|
/**
|
||||||
|
* 变更人的自然人id
|
||||||
|
*/
|
||||||
|
private Long operatorId;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return JSON.toJSONString(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.orgjob.entity;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.api.orgjob.enums.OrgJobTypeEnum;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位变更历史表
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@TableName(value = "org_job_history", autoResultMap = true)
|
||||||
|
public class OrgJobHistory implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -273293135363926439L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编码
|
||||||
|
*/
|
||||||
|
private String code;
|
||||||
|
/**
|
||||||
|
* 岗位类型:SYSTEM - 系统,CUSTOM - 自定义
|
||||||
|
*/
|
||||||
|
private OrgJobTypeEnum type;
|
||||||
|
/**
|
||||||
|
* 变更人的自然人id
|
||||||
|
*/
|
||||||
|
private Long operatorId;
|
||||||
|
/**
|
||||||
|
* 岗位数据
|
||||||
|
*/
|
||||||
|
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||||
|
private OrgJob dataContent;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return JSON.toJSONString(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.orgjob.mapper;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJobGroup;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位分组表数据库访问层
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface OrgJobGroupMapper extends BaseMapper<OrgJobGroup> {
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.orgjob.mapper;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJobGroupRelationHistory;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位与分组的关系历史表数据库访问层
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface OrgJobGroupRelationHistoryMapper extends BaseMapper<OrgJobGroupRelationHistory> {
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.orgjob.mapper;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJobGroupRelation;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Delete;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位与分组关系表数据库访问层
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface OrgJobGroupRelationMapper extends BaseMapper<OrgJobGroupRelation> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* !!! 物理删除 慎用!
|
||||||
|
*/
|
||||||
|
@Delete("<script> " +
|
||||||
|
"DELETE " +
|
||||||
|
"FROM org_job_group_relation " +
|
||||||
|
"WHERE group_code = #{groupCode}" +
|
||||||
|
"</script>")
|
||||||
|
int absoluteRemove(@Param("groupCode") String groupCode);
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.orgjob.mapper;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJobHistory;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 岗位变更历史表数据库访问层
|
||||||
|
* @author luofu
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2024/9/9
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface OrgJobHistoryMapper extends BaseMapper<OrgJobHistory> {
|
||||||
|
}
|
||||||
@ -2,8 +2,49 @@ package cn.axzo.orgmanax.infra.dao.orgjob.mapper;
|
|||||||
|
|
||||||
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob;
|
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Delete;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
import org.apache.ibatis.annotations.Update;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 沿用maokai现有的 OrgJobDao
|
||||||
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface OrgJobMapper extends BaseMapper<OrgJob> {
|
public interface OrgJobMapper extends BaseMapper<OrgJob> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* !!! 物理删除 慎用!
|
||||||
|
*/
|
||||||
|
@Delete("<script> " +
|
||||||
|
"DELETE " +
|
||||||
|
"FROM org_job " +
|
||||||
|
"WHERE id = #{id}" +
|
||||||
|
"</script>")
|
||||||
|
int absoluteRemove(@Param("id") Long id);
|
||||||
|
|
||||||
|
@Update("<script> " +
|
||||||
|
"UPDATE org_job " +
|
||||||
|
"SET is_delete = #{id}, " +
|
||||||
|
"operator_id = #{operatorId} " +
|
||||||
|
"WHERE id = #{id}" +
|
||||||
|
"</script>")
|
||||||
|
int remove(@Param("id") Long id, @Param("operatorId") Long operatorId);
|
||||||
|
|
||||||
|
@Select("<script> " +
|
||||||
|
"SELECT * " +
|
||||||
|
"FROM org_job " +
|
||||||
|
"WHERE code = #{code}" +
|
||||||
|
"</script>")
|
||||||
|
OrgJob queryByCode(@Param("code") String code);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* todo 修改成统一page
|
||||||
|
* 兼容SQL 不会使用太长时间,依赖端更换新接口后就可以下掉
|
||||||
|
* @param req
|
||||||
|
* @param toPage
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
// IPage<OrgJob> oldList(@Param("req") OrganizationalJobConfigQueryReq req, IPage<Object> toPage);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user