feat(REQ-3282): 岗位相关表结构、mapper、dao引入

This commit is contained in:
songyuanlun 2024-12-20 18:24:46 +08:00
parent ea27e70c08
commit 7c012f63bb
21 changed files with 938 additions and 0 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,10 +1,60 @@
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.mapper.OrgJobMapper;
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;
@Repository
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());
// }
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -2,8 +2,49 @@ package cn.axzo.orgmanax.infra.dao.orgjob.mapper;
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob;
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;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
/**
* 沿用maokai现有的 OrgJobDao
*/
@Mapper
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);
}