feat:[REQ-3282] 编写岗位相关代码

This commit is contained in:
liuyang 2024-12-13 15:12:11 +08:00
parent 17f8efb7d7
commit 87e699b183
17 changed files with 885 additions and 0 deletions

View File

@ -0,0 +1,22 @@
package cn.axzo.orgmanax.api.orgjob.feign;
import cn.axzo.foundation.result.ApiResult;
import cn.axzo.orgmanax.api.orgjob.req.CreateOrgJobReq;
import cn.axzo.orgmanax.api.orgjob.req.UpdateOrgJobReq;
import cn.axzo.orgmanax.api.orgjob.resp.OrgJobDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(
value = "orgmanax",
url = "${axzo.service.orgmanax:http://orgmanax:8080}")
public interface OrgJobApi {
@PostMapping("/api/org/job/create")
ApiResult<OrgJobDTO> create(@RequestBody @Validated CreateOrgJobReq req);
@PostMapping("/api/org/job/update")
ApiResult<OrgJobDTO> update(@RequestBody @Validated UpdateOrgJobReq req);
}

View File

@ -0,0 +1,97 @@
package cn.axzo.orgmanax.api.orgjob.req;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public class CreateOrgJobReq {
/**
* 名称
*/
private String name;
/**
* 别名
*/
private String alias;
/**
* 编码
*/
private String code;
/**
* 可见性: SHOW-可见,HIDE-隐藏
*/
private String visible;
/**
* 是否为默认岗的标识: 0-非默认,1-默认
*/
private Integer defaultFlag;
/**
* 排序字段目前暂无业务含义
*/
private Integer priority;
/**
* 岗位类型SYSTEM - 系统CUSTOM - 自定义
*/
private String type;
/**
* 岗位标签SYSTEM - 系统岗BUSINESS - 业务岗
*/
private String flag;
/**
* 单位id,自定义类型时该值才有意义
*/
private Long ouId;
/**
* 项目id,自定义类型时该值才有意义
*/
private Long workspaceId;
/**
* 岗位人数上限
*/
private Long limitCount;
/**
* 关联身份类型 1-工人,2-班组长,3-从业人员,5-运营人员
*/
private Integer identityType;
/**
* 默认角色id列表
*/
private JSONObject defRoleIds;
/**
* 待排除的角色id列表
*/
private JSONObject excludeRoleIds;
/**
* 扩展字段
*/
private JSONObject recordExt;
/**
* 变更人的自然人id
*/
private Long operatorId;
}

View File

@ -0,0 +1,117 @@
package cn.axzo.orgmanax.api.orgjob.req;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public class UpdateOrgJobReq {
/**
* 主键
*/
private Long id;
/**
* 名称
*/
private String name;
/**
* 别名
*/
private String alias;
/**
* 编码
*/
private String code;
/**
* 可见性: SHOW-可见,HIDE-隐藏
*/
private String visible;
/**
* 是否为默认岗的标识: 0-非默认,1-默认
*/
private Integer defaultFlag;
/**
* 排序字段目前暂无业务含义
*/
private Integer priority;
/**
* 岗位类型SYSTEM - 系统CUSTOM - 自定义
*/
private String type;
/**
* 岗位标签SYSTEM - 系统岗BUSINESS - 业务岗
*/
private String flag;
/**
* 单位id,自定义类型时该值才有意义
*/
private Long ouId;
/**
* 项目id,自定义类型时该值才有意义
*/
private Long workspaceId;
/**
* 岗位人数上限
*/
private Long limitCount;
/**
* 关联身份类型 1-工人,2-班组长,3-从业人员,5-运营人员
*/
private Integer identityType;
/**
* 默认角色id列表
*/
private JSONObject defRoleIds;
/**
* 待排除的角色id列表
*/
private JSONObject excludeRoleIds;
/**
* 扩展字段
*/
private JSONObject recordExt;
/**
* 创建时间
*/
private Date createAt;
/**
* 更新时间
*/
private Date updateAt;
/**
* 变更人的自然人id
*/
private Long operatorId;
/**
* 逻辑删除标识(0未删除,其它已删除)
*/
private Long isDelete;
}

View File

@ -0,0 +1,111 @@
package cn.axzo.orgmanax.api.orgjob.resp;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import java.util.Date;
@Data
public class OrgJobDTO {
/**
* 主键
*/
private Long id;
/**
* 名称
*/
private String name;
/**
* 别名
*/
private String alias;
/**
* 编码
*/
private String code;
/**
* 可见性: SHOW-可见,HIDE-隐藏
*/
private String visible;
/**
* 是否为默认岗的标识: 0-非默认,1-默认
*/
private Integer defaultFlag;
/**
* 排序字段目前暂无业务含义
*/
private Integer priority;
/**
* 岗位类型SYSTEM - 系统CUSTOM - 自定义
*/
private String type;
/**
* 岗位标签SYSTEM - 系统岗BUSINESS - 业务岗
*/
private String flag;
/**
* 单位id,自定义类型时该值才有意义
*/
private Long ouId;
/**
* 项目id,自定义类型时该值才有意义
*/
private Long workspaceId;
/**
* 岗位人数上限
*/
private Long limitCount;
/**
* 关联身份类型 1-工人,2-班组长,3-从业人员,5-运营人员
*/
private Integer identityType;
/**
* 默认角色id列表
*/
private JSONObject defRoleIds;
/**
* 待排除的角色id列表
*/
private JSONObject excludeRoleIds;
/**
* 扩展字段
*/
private JSONObject recordExt;
/**
* 创建时间
*/
private Date createAt;
/**
* 更新时间
*/
private Date updateAt;
/**
* 变更人的自然人id
*/
private Long operatorId;
/**
* 逻辑删除标识(0未删除,其它已删除)
*/
private Long isDelete;
}

View File

@ -0,0 +1,10 @@
package cn.axzo.orgmanax.infra.dao.orgjob.dao;
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 org.springframework.stereotype.Repository;
@Repository
public class OrgJobDao extends ServiceImpl<OrgJobMapper, OrgJob> {
}

View File

@ -0,0 +1,131 @@
package cn.axzo.orgmanax.infra.dao.orgjob.entity;
import com.alibaba.fastjson.JSONObject;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 组织岗位表(OrgJob)表实体类
*
* @author makejava
* @since 2024-12-13 13:59:04
*/
@TableName(value = "org_job")
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = false)
public class OrgJob implements Serializable {
/**
* 主键
*/
private Long id;
/**
* 名称
*/
private String name;
/**
* 别名
*/
private String alias;
/**
* 编码
*/
private String code;
/**
* 可见性: SHOW-可见,HIDE-隐藏
*/
private String visible;
/**
* 是否为默认岗的标识: 0-非默认,1-默认
*/
private Integer defaultFlag;
/**
* 排序字段目前暂无业务含义
*/
private Integer priority;
/**
* 岗位类型SYSTEM - 系统CUSTOM - 自定义
*/
private String type;
/**
* 岗位标签SYSTEM - 系统岗BUSINESS - 业务岗
*/
private String flag;
/**
* 单位id,自定义类型时该值才有意义
*/
private Long ouId;
/**
* 项目id,自定义类型时该值才有意义
*/
private Long workspaceId;
/**
* 岗位人数上限
*/
private Long limitCount;
/**
* 关联身份类型 1-工人,2-班组长,3-从业人员,5-运营人员
*/
private Integer identityType;
/**
* 默认角色id列表
*/
private JSONObject defRoleIds;
/**
* 待排除的角色id列表
*/
private JSONObject excludeRoleIds;
/**
* 扩展字段
*/
private JSONObject recordExt;
/**
* 创建时间
*/
private Date createAt;
/**
* 更新时间
*/
private Date updateAt;
/**
* 变更人的自然人id
*/
private Long operatorId;
/**
* 逻辑删除标识(0未删除,其它已删除)
*/
private Long isDelete;
}

View File

@ -0,0 +1,9 @@
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.Mapper;
@Mapper
public interface OrgJobMapper extends BaseMapper<OrgJob> {
}

View File

@ -0,0 +1,32 @@
package cn.axzo.orgmanax.infra.dao.orgjob.repository;
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.foundation.page.PageResp;
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
public interface OrgJobQueryRepository {
PageResp<OrgJob> page(ListReq req);
@NoArgsConstructor
@AllArgsConstructor
@Data
@SuperBuilder
class ListReq implements IPageReq {
@CriteriaField
private Long id;
@CriteriaField(field = "id", operator = Operator.IN)
private Long parentId;
}
}

View File

@ -0,0 +1,20 @@
package cn.axzo.orgmanax.infra.dao.orgjob.repository;
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob;
import cn.axzo.orgmanax.infra.dao.unit.entity.OrganizationalUnit;
public interface OrgJobUpsertRepository {
/**
* 创建单位
* @param orgJob
*/
void save(OrgJob orgJob);
/**
* 更新单位
* @param orgJob
*/
void update(OrgJob orgJob);
}

View File

@ -0,0 +1,40 @@
package cn.axzo.orgmanax.infra.dao.orgjob.repository.impl;
import cn.axzo.foundation.dao.support.converter.PageConverter;
import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.orgmanax.infra.dao.orgjob.dao.OrgJobDao;
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob;
import cn.axzo.orgmanax.infra.dao.orgjob.repository.OrgJobQueryRepository;
import cn.axzo.orgmanax.infra.dao.unit.entity.OrganizationalUnit;
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitQueryRepository;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import java.util.List;
@RequiredArgsConstructor
@Repository
public class OrgJobQueryRepositoryImpl implements OrgJobQueryRepository {
private final OrgJobDao orgJobDao;
@Override
public PageResp<OrgJob> page(ListReq req) {
IPage<OrgJob> page = PageConverter.toMybatis(req, OrgJob.class);
QueryWrapper<OrgJob> wrapper = QueryWrapperHelper.fromBean(req, OrgJob.class);
IPage<OrgJob> results = orgJobDao.page(page, wrapper)
.convert(e -> BeanUtil.toBean(e, OrgJob.class));
PageResp<OrgJob> resp = PageConverter.toResp(results);
List<OrgJob> records = resp.getData();
if (CollUtil.isEmpty(records)) {
return resp;
}
return resp;
}
}

View File

@ -0,0 +1,25 @@
package cn.axzo.orgmanax.infra.dao.orgjob.repository.impl;
import cn.axzo.orgmanax.infra.dao.orgjob.dao.OrgJobDao;
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob;
import cn.axzo.orgmanax.infra.dao.orgjob.repository.OrgJobQueryRepository;
import cn.axzo.orgmanax.infra.dao.orgjob.repository.OrgJobUpsertRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
@RequiredArgsConstructor
@Repository
public class OrgJobUpsertRepositoryImpl implements OrgJobUpsertRepository {
private final OrgJobDao orgJobDao;
@Override
public void save(OrgJob orgJob) {
orgJobDao.save(orgJob);
}
@Override
public void update(OrgJob orgJob) {
orgJobDao.updateById(orgJob);
}
}

View File

@ -0,0 +1,35 @@
package cn.axzo.orgmanax.server.orgjob.controller;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.foundation.result.ApiResult;
import cn.axzo.orgmanax.api.node.feign.OrgNodeApi;
import cn.axzo.orgmanax.api.node.req.ListNodeReq;
import cn.axzo.orgmanax.api.node.req.NodeProcessReq;
import cn.axzo.orgmanax.api.node.resp.OrgNodeDTO;
import cn.axzo.orgmanax.api.orgjob.feign.OrgJobApi;
import cn.axzo.orgmanax.api.orgjob.req.CreateOrgJobReq;
import cn.axzo.orgmanax.api.orgjob.req.UpdateOrgJobReq;
import cn.axzo.orgmanax.api.orgjob.resp.OrgJobDTO;
import cn.axzo.orgmanax.server.orgjob.service.OrgJobService;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping
@RequiredArgsConstructor
public class OrgJobController implements OrgJobApi {
private final OrgJobService orgJobService;
@Override
public ApiResult<OrgJobDTO> create(CreateOrgJobReq req) {
return ApiResult.success(orgJobService.create(req));
}
@Override
public ApiResult<OrgJobDTO> update(UpdateOrgJobReq req) {
return ApiResult.success(orgJobService.update(req));
}
}

View File

@ -0,0 +1,24 @@
package cn.axzo.orgmanax.server.orgjob.foundation;
import cn.axzo.orgmanax.api.orgjob.resp.OrgJobDTO;
import cn.axzo.orgmanax.server.orgjob.foundation.dto.OrgJobCreator;
/**
*
*/
public interface OrgJobFoundationService {
/**
* 创建
* @param creator
* @return
*/
OrgJobDTO create(OrgJobCreator creator);
/**
* 更新
* @param creator
* @return
*/
OrgJobDTO update(OrgJobCreator creator);
}

View File

@ -0,0 +1,127 @@
package cn.axzo.orgmanax.server.orgjob.foundation.dto;
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob;
import cn.axzo.orgmanax.infra.dao.unit.entity.OrganizationalUnit;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.Date;
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class OrgJobCreator {
/**
* 主键
*/
private Long id;
/**
* 名称
*/
private String name;
/**
* 别名
*/
private String alias;
/**
* 编码
*/
private String code;
/**
* 可见性: SHOW-可见,HIDE-隐藏
*/
private String visible;
/**
* 是否为默认岗的标识: 0-非默认,1-默认
*/
private Integer defaultFlag;
/**
* 排序字段目前暂无业务含义
*/
private Integer priority;
/**
* 岗位类型SYSTEM - 系统CUSTOM - 自定义
*/
private String type;
/**
* 岗位标签SYSTEM - 系统岗BUSINESS - 业务岗
*/
private String flag;
/**
* 单位id,自定义类型时该值才有意义
*/
private Long ouId;
/**
* 项目id,自定义类型时该值才有意义
*/
private Long workspaceId;
/**
* 岗位人数上限
*/
private Long limitCount;
/**
* 关联身份类型 1-工人,2-班组长,3-从业人员,5-运营人员
*/
private Integer identityType;
/**
* 默认角色id列表
*/
private JSONObject defRoleIds;
/**
* 待排除的角色id列表
*/
private JSONObject excludeRoleIds;
/**
* 扩展字段
*/
private JSONObject recordExt;
/**
* 创建时间
*/
private Date createAt;
/**
* 更新时间
*/
private Date updateAt;
/**
* 变更人的自然人id
*/
private Long operatorId;
/**
* 构建实体
* @return
*/
public OrgJob toEntity() {
OrgJob orgJob = BeanUtil.copyProperties(this, OrgJob.class);
return orgJob;
}
}

View File

@ -0,0 +1,32 @@
package cn.axzo.orgmanax.server.orgjob.foundation.impl;
import cn.axzo.orgmanax.api.orgjob.resp.OrgJobDTO;
import cn.axzo.orgmanax.infra.dao.orgjob.dao.OrgJobDao;
import cn.axzo.orgmanax.infra.dao.orgjob.entity.OrgJob;
import cn.axzo.orgmanax.infra.dao.orgjob.repository.OrgJobUpsertRepository;
import cn.axzo.orgmanax.server.orgjob.foundation.OrgJobFoundationService;
import cn.axzo.orgmanax.server.orgjob.foundation.dto.OrgJobCreator;
import cn.hutool.core.bean.BeanUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@RequiredArgsConstructor
@Service
public class OrgJobFoundationServiceImpl implements OrgJobFoundationService {
private final OrgJobUpsertRepository orgJobUpsertRepository;
@Override
public OrgJobDTO create(OrgJobCreator creator) {
OrgJob entity = creator.toEntity();
orgJobUpsertRepository.save(entity);
return BeanUtil.copyProperties(creator, OrgJobDTO.class);
}
@Override
public OrgJobDTO update(OrgJobCreator creator) {
OrgJob entity = creator.toEntity();
orgJobUpsertRepository.update(entity);
return BeanUtil.copyProperties(creator, OrgJobDTO.class);
}
}

View File

@ -0,0 +1,23 @@
package cn.axzo.orgmanax.server.orgjob.service;
import cn.axzo.orgmanax.api.node.resp.OrgNodeDTO;
import cn.axzo.orgmanax.api.orgjob.req.CreateOrgJobReq;
import cn.axzo.orgmanax.api.orgjob.req.UpdateOrgJobReq;
import cn.axzo.orgmanax.api.orgjob.resp.OrgJobDTO;
public interface OrgJobService {
/**
* 创建岗位
* @param req
* @return
*/
OrgJobDTO create(CreateOrgJobReq req);
/**
* 更新岗位
* @param req
* @return
*/
OrgJobDTO update(UpdateOrgJobReq req);
}

View File

@ -0,0 +1,30 @@
package cn.axzo.orgmanax.server.orgjob.service.impl;
import cn.axzo.orgmanax.api.orgjob.req.CreateOrgJobReq;
import cn.axzo.orgmanax.api.orgjob.req.UpdateOrgJobReq;
import cn.axzo.orgmanax.api.orgjob.resp.OrgJobDTO;
import cn.axzo.orgmanax.server.orgjob.foundation.OrgJobFoundationService;
import cn.axzo.orgmanax.server.orgjob.foundation.dto.OrgJobCreator;
import cn.axzo.orgmanax.server.orgjob.service.OrgJobService;
import cn.hutool.core.bean.BeanUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@RequiredArgsConstructor
@Service
public class OrgJobServiceImpl implements OrgJobService {
private OrgJobFoundationService foundationService;
@Override
public OrgJobDTO create(CreateOrgJobReq req) {
OrgJobCreator creator = BeanUtil.copyProperties(req, OrgJobCreator.class);
return foundationService.create(creator);
}
@Override
public OrgJobDTO update(UpdateOrgJobReq req) {
OrgJobCreator creator = BeanUtil.copyProperties(req, OrgJobCreator.class);
return foundationService.update(creator);
}
}