Merge branch 'feature/REQ-3488-syl' into 'feature/REQ-3488'

feat(REQ-3488): 人员邀请相关api 的req、resp调整

See merge request universal/infrastructure/backend/orgmanax!91
This commit is contained in:
宋远伦 2025-01-02 11:28:43 +00:00
commit 4306f13708
18 changed files with 865 additions and 0 deletions

View File

@ -0,0 +1,80 @@
package cn.axzo.orgmanax.api.invite.feign;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.foundation.result.ApiResult;
import cn.axzo.orgmanax.dto.invite.dto.OrgWorkerInviteDTO;
import cn.axzo.orgmanax.dto.invite.req.ApproveOrgWorkerInviteReq;
import cn.axzo.orgmanax.dto.invite.req.CountTeamWorkerInviteReq;
import cn.axzo.orgmanax.dto.invite.req.LeaveOrgWorkerTeamReq;
import cn.axzo.orgmanax.dto.invite.req.OperateOrgWorkerInviteReq;
import cn.axzo.orgmanax.dto.invite.req.PageOrgTeamWorkerInviteReq;
import cn.axzo.orgmanax.dto.invite.req.SaveOrgWorkerInviteReq;
import cn.axzo.orgmanax.dto.invite.req.UpdateOrgWorkerInviteReq;
import cn.axzo.orgmanax.dto.invite.resp.CountTeamWorkerInviteResp;
import java.util.List;
import javax.validation.Valid;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* @author syl
* @date 2024/12/17
*/
@FeignClient(
value = "orgmanax",
url = "${axzo.service.orgmanax:http://orgmanax:8080}")
public interface OrgWorkerInviteApi {
/**
* 班组 查看邀请列表(是否需要历史申请数据)
*/
@PostMapping("/api/org-gateway/team/worker-invite/page")
ApiResult<PageResp<OrgWorkerInviteDTO>> page(@RequestBody @Valid PageOrgTeamWorkerInviteReq req);
/**
* 班组长-工友申请数量
* 分组count 查询
*/
@PostMapping("/api/org-gateway/team/worker-invite/group-count")
ApiResult<List<CountTeamWorkerInviteResp>> groupCountWorkerInvite(@RequestBody @Valid CountTeamWorkerInviteReq req);
/**
* 班组长-班组操作
* 班组长同意思或拒绝工人
*/
@PostMapping("/api/org-gateway/team/worker-invite/operate")
ApiResult<Boolean> operateWorkerInvite(@RequestBody @Valid OperateOrgWorkerInviteReq req);
/**
* 班组长-邀请工人 或者 工人-申请加入班组
* 新增工人邀请
*/
@PostMapping("/api/org-gateway/team/worker-invite/save")
ApiResult<OrgWorkerInviteDTO> saveWorkerInvite(@RequestBody @Valid SaveOrgWorkerInviteReq req);
/**
* 新增工人被退出项目
*/
@PostMapping("/api/org-gateway/team/worker-invite/quit")
ApiResult<List<OrgWorkerInviteDTO>> quitWorkerProjectTeam(@RequestBody @Valid List<SaveOrgWorkerInviteReq> param);
/**
* 工人-离开班组
*/
@PostMapping("/api/org-gateway/team/worker-invite/leave")
ApiResult<OrgWorkerInviteDTO> workerLeaveTeam(@RequestBody @Valid LeaveOrgWorkerTeamReq req);
/**
* 同意指定人在指定班组邀请记录 or 撤销班组下所有邀请记录
*/
@PostMapping("/api/org-gateway/worker-invite/approve")
ApiResult<Void> approveWorkerInvite(@RequestBody @Valid ApproveOrgWorkerInviteReq req);
/**
* 修改邀请记录
*/
@PostMapping("/api/org-gateway/worker-invite/update")
ApiResult<Boolean> update(@RequestBody @Valid UpdateOrgWorkerInviteReq req);
}

View File

@ -0,0 +1,98 @@
package cn.axzo.orgmanax.dto.invite.dto;
import java.util.Date;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @Author zhangran
* @Date 2022/6/17 17:16
**/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class OrgWorkerInviteDTO {
/**
* 邀请记录ID
*/
private Long id;
/**
* 班组id
*/
private Long unitId;
/**
* 班组名称
*/
private String unitName;
/**
* 工人id
*/
private Long identityId;
/**
* 工人名称
*/
private String workerName;
/**
* 工人头像地址
*/
private String workerFaceUrl;
/**
* 基础消息id
*/
private Long msgId;
/**
* 通过消息id
*/
private Long msgSucId;
/**
* 项目通过二维码邀请id
*/
private Long projectWorkerInviteId;
/**
* 状态1-未处理2-同意3-拒绝4-撤回
*/
private Integer status;
/**
* 1.工人申请 2.班组邀请 3.项目申请 4.工人申请离开
*/
private Integer type;
/**
* 邀请记录中的工人工种列表
*/
List<WorkerInviteProfessionDTO> professions;
/**
* 项目内班组id
*/
private Long projectTeamId;
/**
* 其它备注信息 json
*/
private String ext;
/**
* 岗位id
*/
private Long jobId;
/**
* 创建时间
*/
private Date createAt;
/**
* 更新时间
*/
private Date updateAt;
// /**
// * 工种和技能标签
// */
// private List<OrganizationalWorkerInviteProfessionVO> workerInviteProfessions;
}

View File

@ -0,0 +1,36 @@
package cn.axzo.orgmanax.dto.invite.dto;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* 工人邀请记录-工人工种
*
* @author zhangtianyu
* @date 2023/1/29 3:36 PM
**/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class WorkerInviteProfessionDTO {
/**
* 工种id
*/
private Long professionId;
/**
* 工种名称
*/
private String professionName;
/**
* 技能标签列表-树形结构
*/
private List<WorkerInviteSkillTagDTO> skillTags;
/**
* 技能标签列表-平铺结构
*/
private List<WorkerInviteSkillTagDTO> expandedSkillTags;
}

View File

@ -0,0 +1,40 @@
package cn.axzo.orgmanax.dto.invite.dto;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* 工人邀请记录-技能标签
* @author zhangtianyu
* @date 2023/1/29 3:36 PM
**/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class WorkerInviteSkillTagDTO {
/**
* 所属工种id
*/
private Long professionId;
/**
* 父技能标签code
*/
private String parentSkillTagCode;
/**
* 技能标签code
*/
private String skillTagCode;
/**
* 技能标签名称
*/
private String skillTagName;
/**
* 子技能标签列表
*/
private List<WorkerInviteSkillTagDTO> childSkillTags;
}

View File

@ -0,0 +1,31 @@
package cn.axzo.orgmanax.dto.invite.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author syl
* @date 2024/12/19
*/
@Getter
@AllArgsConstructor
public enum TeamWorkerInviteStatusEnum {
/**
* 邀请状态
*/
UNTREATED(1, "未处理"),
AGREE(2, "同意"),
REFUSE(3, "拒绝"),
WITHDRAW(4, "撤回"),
ABORT(5, "终止"),
;
public final int value;
public final String desc;
}

View File

@ -0,0 +1,38 @@
package cn.axzo.orgmanax.dto.invite.enums;
import java.util.Arrays;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author syl
* @date 2024/12/17
*/
@Getter
@AllArgsConstructor
public enum WorkerInviteType {
/**
* 工人加入班组
*/
WORKER_JOIN_TEAM(1, "工人加入班组"),
/**
* 工人离开班组
*/
WORKER_LEAVE_TEAM(2, "工人离开班组"),
/**
* 工人离开项目部
*/
WORKER_LEAVE_WORKSPACE(3, "工人离开项目部"),
;
private final Integer code;
private final String desc;
public static WorkerInviteType getByCode(Integer code) {
return Arrays.stream(values()).filter(it -> it.getCode().equals(code))
.findFirst()
.orElse(null);
}
}

View File

@ -0,0 +1,62 @@
package cn.axzo.orgmanax.dto.invite.req;
import java.util.List;
import java.util.Set;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @ClassName OrganizationalWorkTeamInviteDeleteVO
* @Author zhangran
* @Date 2023/3/4 15:14
**/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class ApproveOrgWorkerInviteReq {
/**
* 邀请记录状态
* @see TeamWorkerInviteStatusEnum
*/
@NotNull(message = "inviteStatus can not null")
private Integer inviteStatus;
/**
* 班组id
*/
@NotNull(message = "班组不能为空")
private Long unitId;
/**
* 工人id
*/
private List<Long> identityIds;
/**
* 组织架构人员id
*/
private Long nodeUserId;
/**
* 项目内的班组id
*/
private Long projectTeamId;
/**
* 邀请记录ID 列表
*/
private Set<Long> inviteIds;
/**
* 项目内邀请id
*/
private List<Long> projectWorkerInviteIds;
/**
* 平台班组id
*/
private Long platTeamId;
}

View File

@ -0,0 +1,34 @@
package cn.axzo.orgmanax.dto.invite.req;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author zhangran
* @Date 2022/6/17 17:26
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CountTeamWorkerInviteReq {
/**
* 班组id
*/
private Long unitId;
/**
* 1.工人申请 2.班组邀请 3.项目申请 4.离开班组
*/
private List<Integer> types;
/**
* 状态1-未处理2-同意3-拒绝4-撤回
*/
private List<Integer> statuses;
}

View File

@ -0,0 +1,38 @@
package cn.axzo.orgmanax.dto.invite.req;
import java.util.List;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @ClassName OrganizationalWorkerLeaveTeamVO
* @Description 工人离开班组
* @Author zhangran
* @Date 2022/6/20 15:38
**/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class LeaveOrgWorkerTeamReq {
/**
* 身份id
*/
@NotNull
private Long identityId;
/**
* 班组id
*/
@NotNull
private List<Long> unitIds;
/**
* 工种和技能标签
*/
private List<OrgWorkerInviteProfessionReq> workerInviteProfessions;
}

View File

@ -0,0 +1,49 @@
package cn.axzo.orgmanax.dto.invite.req;
import cn.axzo.orgmanax.dto.invite.enums.WorkerInviteType;
import java.util.List;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @Description 班组同意或者拒绝
* @Author zhangran
* @Date 2022/6/17 18:04
**/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class OperateOrgWorkerInviteReq {
/**
* 班组id
*/
private Long unitId;
/**
* 邀请id
*/
@NotNull(message = "请选择工人")
private List<Long> inviteIds;
/**
* Boolean.TRUE 同意 Boolean.FALSE 拒绝
*/
@NotNull(message = "请选择审批类型")
private Boolean flagType;
/**
* 操作人personId
*/
private Long operatorPersonId;
/**
* 操作类型
* @see WorkerInviteType
*/
@NotNull(message = "type can not null")
private WorkerInviteType type;
}

View File

@ -0,0 +1,66 @@
package cn.axzo.orgmanax.dto.invite.req;
import java.util.List;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @ClassName OrganizationalWorkerInviteProfessionVO
* @Author zhongjie
* @Date 2023/01/29 17:20
**/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class OrgWorkerInviteProfessionReq {
/**
* 工种id
*/
@NotNull(message = "工种id不能为空")
private Long professionId;
/**
* 工种名称
*/
@NotEmpty(message = "工种名称不能为空")
private String professionName;
/**
* 工种code
*/
private String professionCode;
/**
* 技能标签
*/
@Valid
private List<WorkerSkillTag> skillTags;
@Data
public static class WorkerSkillTag {
/**
* 父节点技能标签Code第一级就不传
*/
private String parentSkillTagCode;
/**
* 技能标签名称
*/
@NotEmpty(message = "技能标签名称不能为空")
private String skillTagName;
/**
* 技能标签code
*/
private String skillTagCode;
}
}

View File

@ -0,0 +1,46 @@
package cn.axzo.orgmanax.dto.invite.req;
import cn.axzo.foundation.page.PageReqV2;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @Author zhangran
* @Date 2022/6/17 17:26
* @Desc 班组申请实体
**/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class PageOrgTeamWorkerInviteReq extends PageReqV2 {
/**
* 班组id
*/
private Long unitId;
/**
* 1.工人申请 2.班组邀请 3.项目申请 4.离开班组
*/
private List<Integer> types;
/**
* 状态1-未处理2-同意3-拒绝4-撤回
*/
private List<Integer> statuses;
/**
* 工人身份id
*/
private Long identityId;
// /**
// * 是否返回历史数据
// * 现有逻辑改造为true statuses新增值 2-同意3-拒绝
// */
// private Boolean flagHistory;
}

View File

@ -0,0 +1,91 @@
package cn.axzo.orgmanax.dto.invite.req;
import java.util.Collections;
import java.util.List;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description 班组同意或者拒绝
* @Author zhangran
* @Date 2022/6/17 18:04
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SaveOrgWorkerInviteReq {
/**
* 1-工人申请 2-班组邀请
*/
@NotNull(message = "邀请类型不能为空")
private Integer teamWorkerInviteType;
/**
* 班组id
*/
@NotNull(message = "班组不能为空")
private Long unitId;
/**
* 工人身份id
*/
@NotNull(message = "请选择工人")
private Long identityId;
/**
* Boolean.TRUE 同意 Boolean.FALSE 拒绝
*/
@NotNull(message = "工人姓名")
private String workerName;
@NotNull(message = "工人姓名")
private String workerFaceUrl;
/**
* 平台班组部门nodeId
*/
// @NotNull
// @Min(value = 1)
// todo @yh 这里厍这个节点做什么没有查到有使用的地方然后pluto调用方也没有没加这个参数
Long organizationalNodeId;
/**
* 项目内班组邀请id
*/
private Long projectInviteId;
/**
* 工种和技能标签
*/
@Valid
//@NotNull(message = "工种不能为空")
//@Size(min = 1, message = "请至少选择一个工种")
private List<OrgWorkerInviteProfessionReq> workerInviteProfessions;
/**
* 项目内班组id
*/
private Long projectTeamId;
/**
* 其它备注信息
*/
private String ext;
private Integer quitWorkerStatus;
/**
* 岗位id
*/
private Long jobId;
/**
* 操作人id todo 实现待定
*/
private Long operatorId;
}

View File

@ -0,0 +1,31 @@
package cn.axzo.orgmanax.dto.invite.req;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @Author zr
* @Date 2024/3/2 17:25
* @Description
**/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class UpdateOrgWorkerInviteReq {
/**
* 邀请id
*/
@NotNull(message = "邀请id不能为空")
private Long inviteId;
/**
* 项目内的邀请id
*/
@NotNull(message = "项目内的邀请id不能为空")
private Long projectWorkerInviteId;
}

View File

@ -0,0 +1,27 @@
package cn.axzo.orgmanax.dto.invite.resp;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author syl
* @date 2024/12/17
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CountTeamWorkerInviteResp {
/**
* 1.工人申请 2.班组邀请 3.项目申请 4.离开班组
*/
private Integer type;
/**
* 数量
*/
private Integer count;
}

View File

@ -47,4 +47,10 @@ public interface OrgJobConstants {
* 默认岗位的标识
*/
Integer ORG_JOB_DEF_FLAG = 1;
/**
* 岗位人数无上限
*/
Long NO_LIMIT_COUNT = -1L;
}

View File

@ -0,0 +1,63 @@
package cn.axzo.orgmanax.dto.project.team.dto;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* 经营范围DTO
*/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class TeamCategoryDTO {
/**
* 邀请id/申请id
*/
private Long inviteId;
/**
* 班组id
*/
private Long projectTeamId;
/**
* 经营范围code
*/
private String categoryCode;
/**
* 经营范围名称
*/
private String categoryName;
/**
* 父级经营范围code
*/
private String parentCategoryCode;
/**
* 父级经营范围name
*/
private String parentCategoryName;
private Integer type;
private Integer valid;
/**
* 经营范围子级
*/
private List<TeamCategoryDTO> workScopes;
public TeamCategoryDTO(String categoryCode, String categoryName) {
this.categoryCode = categoryCode;
this.categoryName = categoryName;
}
public TeamCategoryDTO(Long inviteId, Long projectTeamId, String categoryCode, String categoryName) {
this.inviteId = inviteId;
this.projectTeamId = projectTeamId;
this.categoryCode = categoryCode;
this.categoryName = categoryName;
}
}

View File

@ -0,0 +1,29 @@
package cn.axzo.orgmanax.dto.project.team.resp;
import cn.axzo.orgmanax.dto.project.team.dto.TeamCategoryDTO;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @author syl
* @date 2024/12/18
*/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class TeamCategoryResp {
/**
* 班组id
*/
private Long projectTeamId;
/**
* 经营范围列表
*/
private List<TeamCategoryDTO> categoryList;
}