feat(REQ-3282): 增加apollo调用相关

This commit is contained in:
zhanghongbo 2024-12-11 16:24:33 +08:00
parent 3f72843c79
commit 90937eeb8d
24 changed files with 1433 additions and 10 deletions

View File

@ -1,11 +1,12 @@
package cn.axzo.orgmanax.infra.client.apollo;
import cn.axzo.orgmanax.infra.client.apollo.dto.CheckProjectTeamWorkerIsFinishGroupTaskResp;
import cn.axzo.orgmanax.infra.client.apollo.dto.ApolloCheckProjectTeamWorkerIsFinishGroupTaskResp;
import cn.axzo.orgmanax.infra.client.apollo.dto.ApolloGetUnFinishGroupTaskByIdResp;
import java.util.List;
/**
* apollo 服务调用
* apollo 小组任务单相关
*/
public interface ApolloGroupTaskOrderClient {
@ -13,6 +14,14 @@ public interface ApolloGroupTaskOrderClient {
* 查询项目内班组下 某一批工人是否有未完成直属小组任务单
* @return 任务单详情
*/
List<CheckProjectTeamWorkerIsFinishGroupTaskResp> checkProjectTeamWorkerIsFinishGroupTask(Long projectTeamId, List<Long> workerIds);
List<ApolloCheckProjectTeamWorkerIsFinishGroupTaskResp> checkProjectTeamWorkerIsFinishGroupTask(Long projectTeamId, List<Long> workerIds);
/**
* 根据直属小组id查询未完成的任务单
*
* @param groupId 小组id
* @return 任务单详情
*/
List<ApolloGetUnFinishGroupTaskByIdResp> getUnFinishGroupTaskById(Long groupId);
}

View File

@ -0,0 +1,31 @@
package cn.axzo.orgmanax.infra.client.apollo;
import cn.axzo.orgmanax.infra.client.apollo.dto.ApolloGetTaskProcessingDetailByAfterTimeReq;
import cn.axzo.orgmanax.infra.client.apollo.dto.ApolloGetTaskProcessingDetailByAfterTimeResp;
import cn.axzo.orgmanax.infra.client.apollo.dto.ApolloQueryEffectiveProjectTaskOrderReq;
import cn.axzo.orgmanax.infra.client.apollo.dto.ApolloQueryEffectiveProjectTaskOrderResp;
import cn.axzo.orgmanax.infra.client.common.dto.PageResult;
import java.util.List;
/**
* apollo 任务单相关
* @author zhanghongbo
* @date 2024/12/10
*/
public interface ApolloTaskOrderClient {
/**
* 查询项目内生效的任务单
* @param req
* @return
*/
List<ApolloQueryEffectiveProjectTaskOrderResp> queryEffectiveProjectTaskOrder(ApolloQueryEffectiveProjectTaskOrderReq req);
/**
* 查询某个时间段 以后的任务单, 基础那边使用, 他们定了 type 类型 2,4 还有订单的状态(完成) 全量的数据,没有区分 workspaceId \ projectId
* 查询的是 TaskOrder , TaskProcessingDetail 类去接收
* @param req
* @return
*/
PageResult<ApolloGetTaskProcessingDetailByAfterTimeResp> getTaskProcessingDetailByAfterTime(ApolloGetTaskProcessingDetailByAfterTimeReq req);
}

View File

@ -0,0 +1,21 @@
package cn.axzo.orgmanax.infra.client.apollo;
import cn.axzo.orgmanax.infra.client.apollo.dto.*;
import java.util.List;
import java.util.Set;
/**
* apollo 任务单相关
* @author zhanghongbo
* @date 2024/12/10
*/
public interface ApolloTeamTaskOrderClient {
/**
* 获取项目内班组是否有未完结任务单
* @param workspaceId
* @param projectTeamIds
* @return
*/
List<ApolloCheckProjectTeamTaskIsCompleteResp> checkProjectTeamTaskIsComplete(Long workspaceId, Set<Long> projectTeamIds);
}

View File

@ -0,0 +1,73 @@
package cn.axzo.orgmanax.infra.client.apollo;
import cn.axzo.orgmanax.infra.client.apollo.dto.*;
import java.util.List;
import java.util.Map;
/**
* @author zhanghongbo
* @date 2024/12/11
*/
public interface ApolloWorkerTaskOrderClient {
/**
* 通过班组id和工人id获取工人未完成的任务单数
* @param teamId
* @param workerId
* @return
*/
List<ApolloTaskOrderResp> listUnCompleteWorkerTaskOrder(Long teamId, Long workerId);
/**
* 通过班组id和工人id获取工人未完成的任务单数
* @param projectId
* @param projectTeamId
* @param workerId
* @return
*/
List<ApolloTaskOrderResp> listUnCompleteWorkerTaskOrderNew(Long projectId, Long projectTeamId, Long workerId);
/**
* 通过班组id和工人id获取工人未完成的任务单数-批量
* @param reqs
* @return 数量,已人作为key
*/
Map<Long,Long> batchUnCompleteWorker(List<ApolloBatchUnCompleteWorkerReq> reqs);
/**
* workspaceId和工人ids查询是否有未完成任务单
* @param workspaceId
* @param workerIds
* @return
*/
List<ApolloCheckWorkerTaskIsFinishResp> checkWorkerTaskIsFinish(Long workspaceId, List<Long> workerIds);
/**
* 通过班组id获取班组未完成任务单数
* @param teamId
* @return
*/
List<ApolloTaskOrderResp> listUnCompleteTeamTaskOrder(Long teamId);
/**
* 通过工人id和项目部id获取 未开始和施工中任务
* @param workspaceId
* @param workerId
* @return
*/
List<ApolloTaskOrderResp> listWorkerTaskByWorkerIdAndWorkspaceId(Long workspaceId, Long workerId);
/**
* 撤销未派发工人任务单
* @param workspaceId
* @param workerId
*/
void cancelUnDistributeWorkerTask(Long workspaceId, Long workerId);
/**
* 获取用户标签-用于清洗
* @param req
* @return
*/
List<ApolloGetPersonTagByCleanResp> getPersonTagByClean(ApolloGetPersonTagByCleanReq req);
}

View File

@ -0,0 +1,11 @@
package cn.axzo.orgmanax.infra.client.apollo.dto;
import lombok.Data;
/**
* @author zhanghongbo
* @date 2024/12/11
*/
@Data
public class ApolloBatchUnCompleteWorkerReq {
}

View File

@ -0,0 +1,20 @@
package cn.axzo.orgmanax.infra.client.apollo.dto;
import lombok.Data;
/**
* @author zhanghongbo
* @date 2024/12/11
*/
@Data
public class ApolloCheckProjectTeamTaskIsCompleteResp {
/**
* 项目内班组id
*/
private Long projectTeamId;
/**
* 是否有未完成任务单 0否 1是
*/
private Integer isComplete;
}

View File

@ -6,7 +6,7 @@ import lombok.Data;
* 检查项目内班组下工人是否有未完成的直属小组单
**/
@Data
public class CheckProjectTeamWorkerIsFinishGroupTaskResp {
public class ApolloCheckProjectTeamWorkerIsFinishGroupTaskResp {
/**

View File

@ -0,0 +1,27 @@
package cn.axzo.orgmanax.infra.client.apollo.dto;
import lombok.Data;
/**
* @author zhanghongbo
* @date 2024/12/11
*/
@Data
public class ApolloCheckWorkerTaskIsFinishResp {
/**
* 工人id
*/
private Long workerId;
/**
* 是否有未完成的任务单
*/
private Boolean isFinish = false;
/**
* 未完成任务的数量
*/
private Integer unFinishCount=0;
}

View File

@ -0,0 +1,18 @@
package cn.axzo.orgmanax.infra.client.apollo.dto;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.Size;
import java.util.List;
/**
* @author zhanghongbo
* @date 2024/12/11
*/
@Data
public class ApolloGetPersonTagByCleanReq {
@Valid
@Size(max = 50)
List<ApolloWorkspaceAndPersonReq> personReqList;
}

View File

@ -0,0 +1,51 @@
package cn.axzo.orgmanax.infra.client.apollo.dto;
import lombok.Data;
/**
* @author zhanghongbo
* @date 2024/12/11
*/
@Data
public class ApolloGetPersonTagByCleanResp {
/**
* 服务名
*/
private String appCode;
/**
* 标签名
*/
private String tagName;
/**
* 标签code
*/
private String tagCode;
/**
* 操作类型 PersonTagTypeEnumUPSERTDELETE
*/
private String type = "UPSERT";
/**
* 自然人id
*/
private Long personId;
/**
* 项目部
*/
private Long workspaceId;
/**
* 单位id
*/
private Long organizationalUnitId;
/**
* 部门节点id
*/
private Long organizationalNodeId;
/**
* 业务自定义属性值 json 类型
*/
private String value;
}

View File

@ -0,0 +1,40 @@
package cn.axzo.orgmanax.infra.client.apollo.dto;
import cn.axzo.orgmanax.infra.client.common.dto.PageRequest;
import lombok.Data;
import java.util.List;
/**
* @author zhanghongbo
* @date 2024/12/11
*/
@Data
public class ApolloGetTaskProcessingDetailByAfterTimeReq extends PageRequest {
/**
* 任务单号 支持批量
*/
private List<String> taskNos;
/**
* 状态集合(必填)
* 任务单状态的枚举,可支持查询多个状态
*
* @see cn.axzo.apollo.distribute.enums.TaskOrderStatusEnum
*/
private List<Integer> status;
/**
* 任务单类型班组任务单工人任务单分包任务单 (必填)
* 类型: 1:分包任务单 2:班组任务单 3:任务小组任务单 4:工人任务单 5:合作小组任务单 6:直属小组任务单
*/
private List<Integer> types;
/**
* 班组经营范围 / 工人技能标签模糊查
*/
private Long teamCategoryCodeVague;
//创建时间createAt范围查询起始时间必填结束时间非必填
private Long timeBegin;
}

View File

@ -0,0 +1,121 @@
package cn.axzo.orgmanax.infra.client.apollo.dto;
import cn.axzo.orgmanax.infra.client.apollo.dto.model.WorkerSkillLabelInfo;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @author zhanghongbo
* @date 2024/12/11
*/
@Data
public class ApolloGetTaskProcessingDetailByAfterTimeResp {
/**
* id
*/
private Long id;
/**
* 单号
*/
private String taskNo;
/**
* 父级任务单号
*/
private String parentNo;
/**
* 项目部ID
*/
private Long workspaceId;
/**
* 任务单类型
*
* @see cn.axzo.apollo.distribute.enums.TaskOrderTypeEnum
*/
private Integer type;
/**
* 任务单前置状态
*
* @see cn.axzo.apollo.distribute.enums.TaskOrderStatusEnum
*/
private Integer preStatus;
/**
* 任务单当前状态
*
* @see cn.axzo.apollo.distribute.enums.TaskOrderStatusEnum
*/
private Integer status;
/**
* 项目ID
*/
private Long projectId;
/**
* 实际开始时间
*/
private Date actualStartDate;
/**
* 实际结束时间
*/
private Date actualEndDate;
/**
* 完成时间
*/
private Date completedAt;
/**
* 更新时间
*/
private Date updateAt;
/**
* 是否逻辑删除(: 未删除 0未删除1已删除)
*/
private Long isDelete;
/**
* 扩展json字段
*/
private String expendJson;
//------------------------------------------------------------------------------------//
//以下字段是 REQ-2488 新加的
/**
* 班组长类别code
*/
private String teamCategoryCode;
/**
* 班组类别name
*/
private String teamCategoryName;
/**
* 匹配上的工人的技能
*/
private List<WorkerSkillLabelInfo> workerSkillInfo;
/**
* 项目内班组id
*/
private Long projectTeamId;
/**
* 接收人id
*/
private Long recipientId;
/**
* 接收人personId
*/
private Long recipientPersonId;
}

View File

@ -0,0 +1,257 @@
package cn.axzo.orgmanax.infra.client.apollo.dto;
import lombok.Data;
import java.util.Date;
/**
* 根据直属小组id查询未完成的任务单
* @author zhanghongbo
* @date 2024/12/10
*/
@Data
public class ApolloGetUnFinishGroupTaskByIdResp {
/**
* 任务单号
*/
private String taskNo;
/**
* 父级任务单号
*/
private String parentNo;
/**
* 项目工作台id
*/
private Long workspaceId;
/**
* 项目id
*/
private Long projectId;
/**
* 施工区域id
*/
private Long constructionAreaId;
/**
* 派发类型: 1合同内 2合同外
*/
private Integer distributeType;
/**
* 协助拆分状态 0:未协助1:已协助
*/
private Integer assistStatus;
/**
* 末级任务项md值
*/
private String finalTaskMd5Key;
/**
* 任务单名称
*/
private String orderName;
/**
* 任务名称
*/
private String taskName;
/**
* 任务计划开始日期
*/
private Date expectStartDate;
/**
* 任务计划结束日期
*/
private Date expectEndDate;
/**
* 派发号(派工单号)用户层展示
*/
private String distributeCode;
/**
* 派发时间
*/
private Date distributeTime;
/**
* 完成时间
*/
private Date completedAt;
/**
* 项目名称
*/
private String projectName;
/**
* 实际任务开始时间
*/
private Date actualStartDate;
/**
* 实际任务结束时间
*/
private Date actualEndDate;
/**
* 类型: 1:分包派工单 2:班组派工单 3:小组派工单 4:工人派工单
*/
private Integer type;
/**
* 任务状态 0初始化(不展示) 1待完善 2待派发 3已派发 10待接收 11待分发 12待施工 13施工中 14待验收 15已完成 16已撤销 17提前终止
*/
private Integer status;
/**
* 任务单状态描述
*/
private String statusDesc;
/**
* 审批状态: 0初始化 1审批中 2审批通过 3审批拒绝 4撤销
*/
private Integer approvalStatus;
/**
* 审批拒绝原因
*/
private String rejectReason;
/**
* 派发组织id总包id分包id班组id
*/
private Long distributorOrganizationId;
/**
* 派发组织节点ID(组织节点ID)
*/
private Long distributorOrgNodeId;
/**
* 派发组织类型 1:总包 2:劳务分包 3:专业分包 4:班组
*/
private Integer distributorOrganizationType;
/**
* 接收组织id (分包id班组id工人id)
*/
private Long recipientOrganizationId;
/**
* 接收组织节点ID (组织节点ID工人id)
*/
private Long recipientOrgNodeId;
/**
* 接收者类型 1:劳务分包 2:专业分包 3:班组 4:工人
*/
private Integer recipientOrganizationType;
/**
* 派发人id
*/
private Long distributorId;
/**
* 派发人id
*/
private Long distributorPersonId;
/**
* 派发人类型 1:总包从业人员 2:分包从业人员 3:班组长 4:工人
*/
private Integer distributorType;
/**
* 接收人id
*/
private Long recipientId;
/**
* 接收人id
*/
private Long recipientPersonId;
/**
* 接收人类型 1:总包从业人员 2:分包从业人员 3:班组长 4:工人
*/
private Integer recipientType;
/**
* 版本号 0老版本
*/
private Integer version;
/**
* 备注
*/
private String remark;
/**
* 项目内班组id
*/
private Long projectTeamId;
/**
* 班组长姓名冗余
*/
private String teamOwnerName;
/**
* 班组长手机号冗余
*/
private Integer teamOwnerPhone;
/**
* 班组长类别code冗余
*/
private String teamCategoryCode;
/**
* 班组类别name冗余
*/
private String teamCategoryName;
/**
* 任务树模板冗余
*/
private Long taskTreeTempId;
/**
* 所属公司名称冗余
*/
private String entName;
/**
* 创建者身份id
*/
//private Long creatorId;
/**
* 创建者id
*/
private Long creatorPersonId;
/**
* 更新者身份id
*/
//private Long updaterId;
/**
* 更新者id
*/
private Long updaterPersonId;
/**
* 创建时间
*/
private Date createAt;
/**
* 更新时间
*/
private Date updateAt;
/**
* 是否逻辑删除(0未删除1已删除)
*/
private Long isDelete;
}

View File

@ -0,0 +1,38 @@
package cn.axzo.orgmanax.infra.client.apollo.dto;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Set;
/**
* @author zhanghongbo
* @date 2024/12/10
*/
@Data
public class ApolloQueryEffectiveProjectTaskOrderReq {
/**
* 班组类别/工人工种
*/
@NotEmpty(message = "班组类别/工人工种不能为空")
private Set<String> categoryCodes;
/**
* 任务单类型 2班组任务单包含合作小组任务单 4工人任务单
*/
@NotNull(message = "任务单类型不能为空")
private Integer taskOrderType;
/**
* 接收组织id项目内班组id工人id
*/
@NotNull(message = "接收组织id不能为空")
private Long recipientOrganizationId;
/**
* 项目部id
*/
@NotNull(message = "项目部id不能为空")
private Long workspaceId;
}

View File

@ -0,0 +1,38 @@
package cn.axzo.orgmanax.infra.client.apollo.dto;
import lombok.Data;
/**
* @author zhanghongbo
* @date 2024/12/10
*/
@Data
public class ApolloQueryEffectiveProjectTaskOrderResp {
/**
* 任务单号
*/
private String taskNo;
/**
* 项目部名称
*/
private String workspaceName;
/**
* 工人名称
*/
private String workerName;
/**
* 任务单名称
*/
private String taskOrderName;
/**
* 工种ID
*/
private String professionIds;
/**
* 工种名称
*/
private String professionNames;
}

View File

@ -0,0 +1,257 @@
package cn.axzo.orgmanax.infra.client.apollo.dto;
import lombok.Data;
import java.util.Date;
/**
* @author zhanghongbo
* @date 2024/12/11
*/
@Data
public class ApolloTaskOrderResp {
/**
* 任务单号
*/
private String taskNo;
/**
* 父级任务单号
*/
private String parentNo;
/**
* 项目工作台id
*/
private Long workspaceId;
/**
* 项目id
*/
private Long projectId;
/**
* 施工区域id
*/
private Long constructionAreaId;
/**
* 派发类型: 1合同内 2合同外
*/
private Integer distributeType;
/**
* 协助拆分状态 0:未协助1:已协助
*/
private Integer assistStatus;
/**
* 末级任务项md值
*/
private String finalTaskMd5Key;
/**
* 任务单名称
*/
private String orderName;
/**
* 任务名称
*/
private String taskName;
/**
* 任务计划开始日期
*/
private Date expectStartDate;
/**
* 任务计划结束日期
*/
private Date expectEndDate;
/**
* 派发号(派工单号)用户层展示
*/
private String distributeCode;
/**
* 派发时间
*/
private Date distributeTime;
/**
* 完成时间
*/
private Date completedAt;
/**
* 项目名称
*/
private String projectName;
/**
* 实际任务开始时间
*/
private Date actualStartDate;
/**
* 实际任务结束时间
*/
private Date actualEndDate;
/**
* 类型: 1:分包派工单 2:班组派工单 3:小组派工单 4:工人派工单
*/
private Integer type;
/**
* 任务状态 0初始化(不展示) 1待完善 2待派发 3已派发 10待接收 11待分发 12待施工 13施工中 14待验收 15已完成 16已撤销 17提前终止
*/
private Integer status;
/**
* 任务单状态描述
*/
private String statusDesc;
/**
* 审批状态: 0初始化 1审批中 2审批通过 3审批拒绝 4撤销
*/
private Integer approvalStatus;
/**
* 审批拒绝原因
*/
private String rejectReason;
/**
* 派发组织id总包id分包id班组id
*/
private Long distributorOrganizationId;
/**
* 派发组织节点ID(组织节点ID)
*/
private Long distributorOrgNodeId;
/**
* 派发组织类型 1:总包 2:劳务分包 3:专业分包 4:班组
*/
private Integer distributorOrganizationType;
/**
* 接收组织id (分包id班组id工人id)
*/
private Long recipientOrganizationId;
/**
* 接收组织节点ID (组织节点ID工人id)
*/
private Long recipientOrgNodeId;
/**
* 接收者类型 1:劳务分包 2:专业分包 3:班组 4:工人
*/
private Integer recipientOrganizationType;
/**
* 派发人id
*/
private Long distributorId;
/**
* 派发人id
*/
private Long distributorPersonId;
/**
* 派发人类型 1:总包从业人员 2:分包从业人员 3:班组长 4:工人
*/
private Integer distributorType;
/**
* 接收人id
*/
private Long recipientId;
/**
* 接收人id
*/
private Long recipientPersonId;
/**
* 接收人类型 1:总包从业人员 2:分包从业人员 3:班组长 4:工人
*/
private Integer recipientType;
/**
* 版本号 0老版本
*/
private Integer version;
/**
* 备注
*/
private String remark;
/**
* 项目内班组id
*/
private Long projectTeamId;
/**
* 班组长姓名冗余
*/
private String teamOwnerName;
/**
* 班组长手机号冗余
*/
private Integer teamOwnerPhone;
/**
* 班组长类别code冗余
*/
private String teamCategoryCode;
/**
* 班组类别name冗余
*/
private String teamCategoryName;
/**
* 任务树模板冗余
*/
private Long taskTreeTempId;
/**
* 所属公司名称冗余
*/
private String entName;
/**
* 创建者身份id
*/
//private Long creatorId;
/**
* 创建者id
*/
private Long creatorPersonId;
/**
* 更新者身份id
*/
//private Long updaterId;
/**
* 更新者id
*/
private Long updaterPersonId;
/**
* 创建时间
*/
private Date createAt;
/**
* 更新时间
*/
private Date updateAt;
/**
* 是否逻辑删除(0未删除1已删除)
*/
private Long isDelete;
}

View File

@ -0,0 +1,22 @@
package cn.axzo.orgmanax.infra.client.apollo.dto;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
/**
* @author zhanghongbo
* @date 2024/12/11
*/
@Data
public class ApolloWorkspaceAndPersonReq {
@NotNull(message = "项目部Id不能为空")
@Min(1)
private Long workspaceId;
@NotNull(message = "工人personId不能为空")
@Min(1)
private Long personId;
}

View File

@ -0,0 +1,41 @@
package cn.axzo.orgmanax.infra.client.apollo.dto.model;
import lombok.Data;
/**
* @author zhanghongbo
* @date 2024/12/11
*/
@Data
public class WorkerSkillLabelInfo {
/**
* 技能标签code
* 如果使用技能匹配就返回技能code
* 如果使用工种匹配就返回工种ID
*/
private String skillCode;
private String parentCode;
/**
* 工种ID
* v2有用v1没有使用
*/
private Long professionId;
/**
* 工种名称
*/
private String professionName;
/**
* 技能标签name
*/
private String name;
/**
* 下级
*/
private WorkerSkillLabelInfo child;
}

View File

@ -0,0 +1,48 @@
package cn.axzo.orgmanax.infra.client.common.dto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Setter;
/**
* 分页请求
*
* @author Smile
*/
@Setter
public class PageRequest {
/**
* 当前页
*/
protected Integer page;
/**
* 页大小
*/
protected Integer pageSize;
public Integer getPage() {
return page == null ? 1 : page;
}
public Integer getPageSize() {
return pageSize == null ? 10 : pageSize;
}
public Integer getOffset() {
int offset = (getPage() - 1) * getPageSize();
return Math.max(offset, 0);
}
public <T> IPage<T> toPage() {
if (this.page == null) {
page = 1;
}
if (this.pageSize == null) {
pageSize = 10;
}
return new Page<>(page, pageSize);
}
}

View File

@ -0,0 +1,66 @@
package cn.axzo.orgmanax.infra.client.common.dto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Data;
import java.util.Collections;
import java.util.List;
/**
* 分页结果集
* @author Smile
* @date 2019/6/29 16:13
*/
@Data
public class PageResult<T> {
/**
* 总条数
*/
private Long totalCount;
/**
* 真实数量去重
*/
private Integer realCount;
/**
* 数据
*/
private List<T> data;
public PageResult() {
}
public PageResult(List<T> data, Long totalCount) {
this.data = data;
this.totalCount = totalCount;
}
public static <T> PageResult<T> emptyResult() {
return new PageResult<>(Collections.emptyList(), 0L);
}
public static <T> PageResult<T> restPage(Page<T> pageInfo) {
PageResult<T> result = new PageResult<>();
result.setTotalCount(pageInfo.getTotal());
result.setData(pageInfo.getRecords());
return result;
}
public static <T> PageResult<T> valueOfIPage(IPage<?> pageInfo, List<T> data) {
PageResult<T> result = new PageResult<>();
result.setTotalCount(pageInfo.getTotal());
result.setData(data);
return result;
}
public static <T> PageResult<T> valueOf(Long totalCount, List<T> data) {
PageResult<T> result = new PageResult<>();
result.setTotalCount(totalCount);
result.setData(data);
return result;
}
}

View File

@ -2,27 +2,42 @@ package cn.axzo.orgmanax.integration.sdk.apollo;
import cn.axzo.apollo.api.ApolloGroupTaskOrderApi;
import cn.axzo.apollo.api.res.CheckWorkerIsFinishGroupRes;
import cn.axzo.apollo.api.rsp.TaskOrderRsp;
import cn.axzo.orgmanax.infra.client.apollo.ApolloGroupTaskOrderClient;
import cn.axzo.orgmanax.infra.client.apollo.dto.CheckProjectTeamWorkerIsFinishGroupTaskResp;
import cn.axzo.orgmanax.infra.client.apollo.dto.ApolloCheckProjectTeamWorkerIsFinishGroupTaskResp;
import cn.axzo.orgmanax.infra.client.apollo.dto.ApolloGetUnFinishGroupTaskByIdResp;
import cn.axzo.orgmanax.integration.core.RpcWrapper;
import cn.hutool.core.bean.BeanUtil;
import lombok.RequiredArgsConstructor;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
@RequiredArgsConstructor
@AllArgsConstructor
@Component
public class ApolloGroupTaskOrderClientImpl implements ApolloGroupTaskOrderClient {
private final ApolloGroupTaskOrderApi groupTaskOrderApi;
private ApolloGroupTaskOrderApi groupTaskOrderApi;
/**
* 查询项目内班组下 某一批工人是否有未完成直属小组任务单
* @return 任务单详情
*/
public List<CheckProjectTeamWorkerIsFinishGroupTaskResp> checkProjectTeamWorkerIsFinishGroupTask(Long projectTeamId, List<Long> workerIds) {
@Override
public List<ApolloCheckProjectTeamWorkerIsFinishGroupTaskResp> checkProjectTeamWorkerIsFinishGroupTask(Long projectTeamId, List<Long> workerIds) {
List<CheckWorkerIsFinishGroupRes> result = RpcWrapper.wrapApolloResult(() -> groupTaskOrderApi.checkProjectTeamWorkerIsFinishGroupTask(projectTeamId, workerIds));
return BeanUtil.copyToList(result, CheckProjectTeamWorkerIsFinishGroupTaskResp.class);
return BeanUtil.copyToList(result, ApolloCheckProjectTeamWorkerIsFinishGroupTaskResp.class);
}
/**
* 根据直属小组id查询未完成的任务单
* @param groupId 小组id
* @return 任务单详情
*/
@Override
public List<ApolloGetUnFinishGroupTaskByIdResp> getUnFinishGroupTaskById(Long groupId) {
List<TaskOrderRsp> result = RpcWrapper.wrapApolloResult(() -> groupTaskOrderApi.getUnFinishGroupTaskById(groupId));
return BeanUtil.copyToList(result, ApolloGetUnFinishGroupTaskByIdResp.class);
}
}

View File

@ -0,0 +1,62 @@
package cn.axzo.orgmanax.integration.sdk.apollo;
import cn.axzo.apollo.api.ApolloTaskOrderApi;
import cn.axzo.apollo.api.req.QueryEffectiveProjectTaskOrderReq;
import cn.axzo.apollo.api.req.TaskOrderIncrByAfterTimeReq;
import cn.axzo.apollo.api.res.QueryEffectiveTaskOrderRes;
import cn.axzo.apollo.core.common.model.TaskProcessingDetail;
import cn.axzo.orgmanax.infra.client.apollo.ApolloTaskOrderClient;
import cn.axzo.orgmanax.infra.client.apollo.dto.ApolloQueryEffectiveProjectTaskOrderReq;
import cn.axzo.orgmanax.infra.client.apollo.dto.ApolloGetTaskProcessingDetailByAfterTimeResp;
import cn.axzo.orgmanax.infra.client.apollo.dto.ApolloQueryEffectiveProjectTaskOrderResp;
import cn.axzo.orgmanax.infra.client.apollo.dto.ApolloGetTaskProcessingDetailByAfterTimeReq;
import cn.axzo.orgmanax.infra.client.common.dto.PageResult;
import cn.axzo.orgmanax.integration.core.RpcWrapper;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 任务单相关
* @author zhanghongbo
* @date 2024/12/10
*/
@AllArgsConstructor
@Component
public class ApolloTaskOrderClientImpl implements ApolloTaskOrderClient {
private ApolloTaskOrderApi apolloTaskOrderApi;
/**
* 查询项目内生效的任务单
* @param req
* @return
*/
@Override
public List<ApolloQueryEffectiveProjectTaskOrderResp> queryEffectiveProjectTaskOrder(ApolloQueryEffectiveProjectTaskOrderReq req) {
QueryEffectiveProjectTaskOrderReq rpcReq = BeanUtil.copyProperties(req, QueryEffectiveProjectTaskOrderReq.class);
List<QueryEffectiveTaskOrderRes> result = RpcWrapper.wrapApolloResult(() -> apolloTaskOrderApi.getEffectiveTaskOrderByTeamCategoryAndWorkspaceIds(rpcReq));
return BeanUtil.copyToList(result, ApolloQueryEffectiveProjectTaskOrderResp.class);
}
/**
* 查询某个时间段 以后的任务单, 基础那边使用, 他们定了 type 类型 2,4 还有订单的状态(完成) 全量的数据,没有区分 workspaceId \ projectId
* 查询的是 TaskOrder , TaskProcessingDetail 类去接收
* @param req
* @return
*/
@Override
public PageResult<ApolloGetTaskProcessingDetailByAfterTimeResp> getTaskProcessingDetailByAfterTime(ApolloGetTaskProcessingDetailByAfterTimeReq req) {
TaskOrderIncrByAfterTimeReq rpcReq = BeanUtil.copyProperties(req, TaskOrderIncrByAfterTimeReq.class);
cn.axzo.apollo.core.domain.PageResult<TaskProcessingDetail> result = RpcWrapper.wrapApolloResult(() -> apolloTaskOrderApi.getTaskProcessingDetailByAfterTime(rpcReq));
if (result == null || ObjectUtil.isEmpty(result.getData())) {
return PageResult.emptyResult();
}
List<TaskProcessingDetail> list = result.getData();
List<ApolloGetTaskProcessingDetailByAfterTimeResp> resps = BeanUtil.copyToList(list, ApolloGetTaskProcessingDetailByAfterTimeResp.class);
return new PageResult(resps, result.getTotalCount());
}
}

View File

@ -0,0 +1,36 @@
package cn.axzo.orgmanax.integration.sdk.apollo;
import cn.axzo.apollo.api.ApolloTeamTaskOrderApi;
import cn.axzo.apollo.api.rsp.CheckProjectTeamTaskRsp;
import cn.axzo.orgmanax.infra.client.apollo.ApolloTeamTaskOrderClient;
import cn.axzo.orgmanax.infra.client.apollo.dto.ApolloCheckProjectTeamTaskIsCompleteResp;
import cn.axzo.orgmanax.integration.core.RpcWrapper;
import cn.hutool.core.bean.BeanUtil;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Set;
/**
* @author zhanghongbo
* @date 2024/12/11
*/
@AllArgsConstructor
@Component
public class ApolloTeamTaskOrderClientImpl implements ApolloTeamTaskOrderClient {
private ApolloTeamTaskOrderApi apolloTeamTaskOrderApi;
/**
* 获取项目内班组是否有未完结任务单
* @param workspaceId
* @param projectTeamIds
* @return
*/
@Override
public List<ApolloCheckProjectTeamTaskIsCompleteResp> checkProjectTeamTaskIsComplete(Long workspaceId, Set<Long> projectTeamIds) {
List<CheckProjectTeamTaskRsp> result = RpcWrapper.wrapApolloResult(() -> apolloTeamTaskOrderApi.checkProjectTeamTaskIsComplete(workspaceId, projectTeamIds));
return BeanUtil.copyToList(result, ApolloCheckProjectTeamTaskIsCompleteResp.class);
}
}

View File

@ -0,0 +1,121 @@
package cn.axzo.orgmanax.integration.sdk.apollo;
import cn.axzo.apollo.api.ApolloWorkerTaskOrderApi;
import cn.axzo.apollo.api.req.PersonTagByCleanReq;
import cn.axzo.apollo.api.req.UnCompleteWorkerReq;
import cn.axzo.apollo.api.res.CheckWorkerIsFinishGroupRes;
import cn.axzo.apollo.api.res.UserMarkRes;
import cn.axzo.apollo.api.rsp.TaskOrderRsp;
import cn.axzo.orgmanax.infra.client.apollo.ApolloWorkerTaskOrderClient;
import cn.axzo.orgmanax.infra.client.apollo.dto.*;
import cn.axzo.orgmanax.integration.core.RpcWrapper;
import cn.hutool.core.bean.BeanUtil;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* @author zhanghongbo
* @date 2024/12/11
*/
@AllArgsConstructor
@Component
public class ApolloWorkerTaskOrderClientImpl implements ApolloWorkerTaskOrderClient {
private ApolloWorkerTaskOrderApi apolloWorkerTaskOrderApi;
/**
* 通过班组id和工人id获取工人未完成的任务单数
* @param teamId
* @param workerId
* @return
*/
@Override
public List<ApolloTaskOrderResp> listUnCompleteWorkerTaskOrder(Long teamId, Long workerId) {
List<TaskOrderRsp> result = RpcWrapper.wrapApolloResult(() -> apolloWorkerTaskOrderApi.listUnCompleteWorkerTaskOrder(teamId, workerId));
return BeanUtil.copyToList(result, ApolloTaskOrderResp.class);
}
/**
* 通过班组id和工人id获取工人未完成的任务单数
* @param projectId
* @param projectTeamId
* @param workerId
* @return
*/
@Override
public List<ApolloTaskOrderResp> listUnCompleteWorkerTaskOrderNew(Long projectId, Long projectTeamId, Long workerId) {
List<TaskOrderRsp> result = RpcWrapper.wrapApolloResult(() -> apolloWorkerTaskOrderApi.listUnCompleteWorkerTaskOrderNew(projectId, projectTeamId, workerId));
return BeanUtil.copyToList(result, ApolloTaskOrderResp.class);
}
/**
* 通过班组id和工人id获取工人未完成的任务单数-批量
* @param reqs
* @return 数量,已人作为key
*/
@Override
public Map<Long,Long> batchUnCompleteWorker(List<ApolloBatchUnCompleteWorkerReq> reqs) {
List<UnCompleteWorkerReq> rpcReqs = BeanUtil.copyToList(reqs, UnCompleteWorkerReq.class);
return RpcWrapper.wrapApolloResult(() -> apolloWorkerTaskOrderApi.batchUnCompleteWorkerTaskOrderByDisOrgNodeIdAndPersonId(rpcReqs));
}
/**
* workspaceId和工人ids查询是否有未完成任务单
* @param workspaceId
* @param workerIds
* @return
*/
@Override
public List<ApolloCheckWorkerTaskIsFinishResp> checkWorkerTaskIsFinish(Long workspaceId, List<Long> workerIds) {
List<CheckWorkerIsFinishGroupRes> result = RpcWrapper.wrapApolloResult(() -> apolloWorkerTaskOrderApi.checkWorkerTaskIsFinish(workspaceId, workerIds));
return BeanUtil.copyToList(result, ApolloCheckWorkerTaskIsFinishResp.class);
}
/**
* 通过班组id获取班组未完成任务单数
* @param teamId
* @return
*/
@Override
public List<ApolloTaskOrderResp> listUnCompleteTeamTaskOrder(Long teamId) {
List<TaskOrderRsp> result = RpcWrapper.wrapApolloResult(() -> apolloWorkerTaskOrderApi.listUnCompleteTeamTaskOrder(teamId));
return BeanUtil.copyToList(result, ApolloTaskOrderResp.class);
}
/**
* 通过工人id和项目部id获取 未开始和施工中任务
* @param workspaceId
* @param workerId
* @return
*/
@Override
public List<ApolloTaskOrderResp> listWorkerTaskByWorkerIdAndWorkspaceId(Long workspaceId, Long workerId) {
List<TaskOrderRsp> result = RpcWrapper.wrapApolloResult(() -> apolloWorkerTaskOrderApi.listWorkerTaskByWorkerIdAndWorkspaceId(workspaceId, workerId));
return BeanUtil.copyToList(result, ApolloTaskOrderResp.class);
}
/**
* 撤销未派发工人任务单
* @param workspaceId
* @param workerId
*/
@Override
public void cancelUnDistributeWorkerTask(Long workspaceId, Long workerId) {
RpcWrapper.wrapApolloResult(() -> apolloWorkerTaskOrderApi.cancelUnDistributeWorkerTask(workspaceId, workerId));
}
/**
* 获取用户标签-用于清洗
* @param req
* @return
*/
@Override
public List<ApolloGetPersonTagByCleanResp> getPersonTagByClean(ApolloGetPersonTagByCleanReq req) {
PersonTagByCleanReq rpcReq = BeanUtil.copyProperties(req, PersonTagByCleanReq.class);
List<UserMarkRes> result = RpcWrapper.wrapApolloResult(() -> apolloWorkerTaskOrderApi.getPersonTagByClean(rpcReq));
return BeanUtil.copyToList(result, ApolloGetPersonTagByCleanResp.class);
}
}