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

feat(REQ-3488): 项目内工人邀请,班组类别工种api相关调整

See merge request universal/infrastructure/backend/orgmanax!108
This commit is contained in:
宋远伦 2025-01-03 08:19:12 +00:00
commit cbad1ca911
14 changed files with 618 additions and 9 deletions

View File

@ -0,0 +1,44 @@
package cn.axzo.orgmanax.api.invite.feign;
import cn.axzo.foundation.result.ApiResult;
import cn.axzo.orgmanax.dto.invite.req.ApplyOrgTeamInviteReq;
import cn.axzo.orgmanax.dto.invite.req.ApproveOrgTeamInviteReq;
import cn.axzo.orgmanax.dto.invite.req.InviteBatchOrgProjectTeamReq;
import javax.validation.Valid;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
*
* TODO 三期实现
*
* 班组邀请进项目
*
* @author wangli
* @since 2024/7/17 20:36
*/
@FeignClient(
value = "orgmanax",
url = "${axzo.service.orgmanax:http://orgmanax:8080}")
public interface OrgProjectTeamInviteApi {
/**
* cms批量邀请工人加入项目
* todo 三期实现迁移至invite的package下
*/
@PostMapping("/api/project/team-group/invite-batch")
ApiResult<Void> teamOwnerBatchAgreeWorkerJoinProject(@RequestBody @Valid InviteBatchOrgProjectTeamReq req);
/**
* 班组邀请进项目申请
*/
@PostMapping("/api/project/team-invite/apply")
ApiResult<Long> fakeApplyProjectTeam(@Valid @RequestBody ApplyOrgTeamInviteReq req);
/**
* 班组邀请进项目审批
*/
@PostMapping("/api/project/team-invite/approve")
ApiResult<Void> fakeApproveApplyProjectTeam(@Valid @RequestBody ApproveOrgTeamInviteReq req);
}

View File

@ -0,0 +1,46 @@
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.project.req.CancelProjectWorkerInviteReq;
import cn.axzo.orgmanax.dto.invite.project.req.PageProjectWorkerInviteReq;
import cn.axzo.orgmanax.dto.invite.project.req.UpdateProjectWorkerInviteReq;
import cn.axzo.orgmanax.dto.invite.project.resp.OrgProjectWorkerInviteResp;
import javax.validation.Valid;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* todo:三期实现
* 项目内工人邀请api
*
* @author 夏嘉孚
* @since 2023/2/10
*/
@FeignClient(
value = "orgmanax",
url = "${axzo.service.orgmanax:http://orgmanax:8080}")
public interface OrgProjectWorkerInviteApi {
/**
* 分页查询项目内工人邀请信息
*/
@PostMapping("/api/project/worker-invite/page")
ApiResult<PageResp<OrgProjectWorkerInviteResp>> page(@RequestBody @Valid PageProjectWorkerInviteReq req);
/**
* 终止邀请
*/
@PostMapping("/api/project/worker-invite/cancel")
ApiResult<Void> cancelProjectWorkerInvite(@RequestBody @Valid CancelProjectWorkerInviteReq req);
/**
* 修改接口能兼容旧逻辑
* 非请勿调修改工人邀请记录的状态
*
*/
@PostMapping("/api/project/worker-invite/update")
ApiResult<Void> update(@RequestBody @Valid UpdateProjectWorkerInviteReq req);
}

View File

@ -3,18 +3,25 @@ package cn.axzo.orgmanax.api.workerprofession.feign;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.foundation.result.ApiResult;
import cn.axzo.orgmanax.dto.workerprofession.dto.ProfessionDTO;
import cn.axzo.orgmanax.dto.workerprofession.req.*;
import cn.axzo.orgmanax.dto.workerprofession.req.PageTeamProfessionsReq;
import cn.axzo.orgmanax.dto.workerprofession.req.ProjectWorkerProfessionListValidReq;
import cn.axzo.orgmanax.dto.workerprofession.req.ProjectWorkerProfessionSortOutProfessionCategoryReq;
import cn.axzo.orgmanax.dto.workerprofession.req.ProjectWorkerProfessionUpdateReq;
import cn.axzo.orgmanax.dto.workerprofession.req.WorkerProfessionTagOperationConfigureReq;
import cn.axzo.orgmanax.dto.workerprofession.req.WorkerProfessionTagOperationRemoveReq;
import cn.axzo.orgmanax.dto.workerprofession.req.WorkerProfessionTagOperationUpsertReq;
import cn.axzo.orgmanax.dto.workerprofession.req.WorkerProfessionTagOperationValidUpdateReq;
import cn.axzo.orgmanax.dto.workerprofession.req.WorkerProfessionTagQueryPageReq;
import cn.axzo.orgmanax.dto.workerprofession.resp.OrgWorkerProfessionResp;
import cn.axzo.orgmanax.dto.workerprofession.resp.WorkerProfessionTagResp;
import java.util.List;
import java.util.Map;
import javax.validation.Valid;
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;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.util.List;
import java.util.Map;
/**
* @author zhanghongbo
* @date 2025/1/3
@ -91,4 +98,15 @@ public interface OrgProjectWorkerProfessionApi {
*/
@PostMapping(value = "/api/worker/profession/page")
ApiResult<PageResp<WorkerProfessionTagResp>> page(@RequestBody @Validated WorkerProfessionTagQueryPageReq req);
/**
* 查询班组下工种
* 这个两个必传一个值
*
* @author zr
* @date 2023/8/1 17:42
**/
@PostMapping("/api/project/team/profession/page")
ApiResult<PageResp<OrgWorkerProfessionResp>> pageProfessions(
@RequestBody @Valid PageTeamProfessionsReq req);
}

View File

@ -0,0 +1,24 @@
package cn.axzo.orgmanax.dto.invite.project.req;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @author syl
* @date 2024/12/19
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class CancelProjectWorkerInviteReq {
/**
* 邀请记录id
*/
@NotNull(message = "邀请记录id不能为空")
private Long inviteId;
}

View File

@ -0,0 +1,46 @@
package cn.axzo.orgmanax.dto.invite.project.req;
import cn.axzo.foundation.page.PageReqV2;
import java.util.Set;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @author syl
* @date 2024/12/19
*/
@EqualsAndHashCode(callSuper = true)
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class PageProjectWorkerInviteReq extends PageReqV2 {
/**
* 流程实例id
*/
private String processInstanceId;
/**
* 项目部id
*/
private Long workspaceId;
/**
* 项目班组ID
*/
private Long projectTeamId;
/**
* 工人身份ID
*/
private Long workerIdentityId;
/**
* 邀请记录ID列表
*/
private Set<Long> inviteIds;
}

View File

@ -0,0 +1,29 @@
package cn.axzo.orgmanax.dto.invite.project.req;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @author syl
* @date 2024/12/19
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class UpdateProjectWorkerInviteReq {
/**
* 邀请记录id
*/
@NotNull(message = "邀请记录id不能为空")
private Long inviteId;
/**
* 状态
*/
private Integer status;
}

View File

@ -0,0 +1,85 @@
package cn.axzo.orgmanax.dto.invite.project.resp;
import java.util.Date;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @author 夏嘉孚
* @since 2023/2/10
*/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class OrgProjectWorkerInviteResp {
/**
* 邀请id 同下inviteId
*/
private Long id;
/**
* 1-待班组审批 2-待项目审批 3-审批通过已加入项目
*/
private Integer status;
/**
* 邀请id
*/
private Long inviteId;
/**
* 工人身份ID
*/
private Long workerIdentityId;
/**
* 项目id
*/
private Long workspaceId;
/**
* 总包ID
*/
private Long entId;
/**
* 所属单位ID
*/
private Long organizationalUnitId;
/**
* 项目内班组id
*/
private Long projectTeamId;
/**
* 班组长姓名
*/
private String teamOwnerName;
/**
* 更新时间
*/
private Date updateAt;
/**
* 审批人的从业人员身份id
*/
private Long approverIdentityId;
/**
* 班组长审批时间,REQ-598
*/
private Date teamLeaderAuditDate;
/**
* 经营范围
*/
private List<String> teamCategory;
/**
* 工人工种
*/
private List<String> profession;
/**
* 流程实例id
*/
private String processInstanceId;
private String contextJsonStr;
}

View File

@ -0,0 +1,68 @@
package cn.axzo.orgmanax.dto.invite.req;
import cn.axzo.orgmanax.dto.project.team.dto.TeamCategoryDTO;
import java.util.List;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* 班组扫码申请进入项目 REQ
*/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class ApplyOrgTeamInviteReq {
/**
* 工作台ID
*/
@NotNull(message = "工作台不能为空")
private Long workspaceId;
/**
* 平台班组ID
*/
@NotNull(message = "班组不能为空")
private Long teamId;
/**
* 平台班组长身份ID
*/
private Long teamLeaderId;
/**
* 所属单位
*/
@NotNull(message = "所属单位不能为空")
private Long ouId;
/**
* 所属单位类型
*/
@NotNull(message = "所属单位类型不能为空")
private Integer ouType;
/**
* 经营范围
*/
@NotEmpty(message = "经营范围不能为空")
private List<TeamCategoryDTO> categories;
/**
* 申请操作路径 1-链接-LINK 2-二维码-QRCODE
*/
@NotNull(message = "操作路径不能为空")
@Max(2)
@Min(1)
private Integer route;
/**
* 备注
*/
@Size(max = 100)
private String applyNote;
}

View File

@ -0,0 +1,24 @@
package cn.axzo.orgmanax.dto.invite.req;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 审批 班组扫码申请进入项目 REQ
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ApproveOrgTeamInviteReq {
/**
* 邀请记录ID
*/
@NotNull(message = "邀请记录ID不能为空")
private Long inviteId;
}

View File

@ -0,0 +1,118 @@
package cn.axzo.orgmanax.dto.invite.req;
import java.util.ArrayList;
import java.util.List;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class InviteBatchOrgProjectTeamReq {
/**
* 邀请类型0班组1小组
* */
@NotNull(message = "添加类型不能为空")
private Integer type;
/**
* 班组或小组的NodeId
* */
@NotNull(message = "nodeId不能为空")
private Long organizationNodeId;
/**
* 项目Id
* */
@NotNull(message = "项目信息不能为空")
private Long workspaceId;
/**
* 工人工种
*/
private List<ProfessionDto> platWorkerProfessions;
/**
* 工人身份id列表
*/
@NotNull(message = "工人列表不能为空")
private List<Long> personIds;
@NotNull(message = "操作人不能为空")
private Long operatorId;
/**
* 发起人的personId
* */
private Long initiatorPersonId;
/**
* 工种
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class ProfessionDto {
/**
* 工种id
*/
private Long professionId;
/**
* 工种名称
*/
private String professionName;
/**
* 技能标签 1普工 2技工
*/
private Integer skillType;
/**
* 技能标签列表-平铺结构
*/
//private List<T> expandedSkillTags;
/**
* 技能标签列表-树形结构
*/
private List<SkillTagDto> skillTags = new ArrayList<>();
}
/**
* 技能标签
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class SkillTagDto {
/**
* 所属工种id
*/
private Long professionId;
/**
* 父级技能标签id
*/
private String parentSkillTagCode;
/**
* 技能标签code
*/
private String skillTagCode;
/**
* 技能标签名称
*/
private String skillTagName;
/**
* 子技能标签列表
*/
private List<SkillTagDto> skillTags;
}
}

View File

@ -1,13 +1,12 @@
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;
import lombok.experimental.SuperBuilder;
/**
* @Description 班组同意或者拒绝
@ -15,7 +14,7 @@ import lombok.NoArgsConstructor;
* @Date 2022/6/17 18:04
**/
@Data
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class SaveOrgWorkerInviteReq {

View File

@ -0,0 +1,48 @@
package cn.axzo.orgmanax.dto.workerprofession.dto;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* 工人技能标签dto
* @author zhangtianyu
* @date 2022/7/17 12:03 AM
**/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class OrgWorkerSkillTagDTO {
/**
* 工种id
*/
private Long professionId;
/**
* 技能id
*/
private Long skillId;
/**
* 父技能id
*/
private Long parentSkillId;
/**
* 技能code
*/
private String skillCode;
/**
* 父技能code
*/
private String parentSkillCode;
/**
* 技能名称
*/
private String skillName;
/**
* 子技能
*/
private List<OrgWorkerSkillTagDTO> childSkillTags;
}

View File

@ -0,0 +1,31 @@
package cn.axzo.orgmanax.dto.workerprofession.req;
import cn.axzo.foundation.page.PageReqV2;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @author syl
* @date 2024/12/19
*/
@EqualsAndHashCode(callSuper = true)
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class PageTeamProfessionsReq extends PageReqV2 {
/**
* 项目班组Id
* todo 需要改造按照新的方式实现
*/
private Long projectTeamId;
/**
* 项目班组节点Id
*/
private Long projectTeamNodeId;
}

View File

@ -0,0 +1,29 @@
package cn.axzo.orgmanax.dto.workerprofession.resp;
import cn.axzo.orgmanax.dto.workerprofession.dto.OrgWorkerSkillTagDTO;
import java.util.ArrayList;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* 平台工人工种
* @author zhangtianyu
* @date 2022/7/16 11:38 PM
**/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class OrgWorkerProfessionResp {
private Long professionId;
private String professionName;
private String professionCategoryName;
private Integer professionCategory;
/**
* 技能标签
*/
private List<OrgWorkerSkillTagDTO> skillTagList = new ArrayList<>();
}