Merge remote-tracking branch 'origin/feature/REQ-3488' into feature/REQ-3488-zhh
# Conflicts: # orgmanax-server/src/main/java/cn/axzo/orgmanax/server/project/team/service/impl/ProjectTeamServiceImpl.java
This commit is contained in:
commit
8cb7d59ff8
@ -73,7 +73,7 @@ public interface OrgProjectGroupApi {
|
||||
@RequestParam("workspaceId") Long workspaceId);
|
||||
|
||||
// /**
|
||||
// * 查询甲方班组的合作小组
|
||||
// * 查询甲方班组的合作小组 TODO zhanghonghao
|
||||
// */
|
||||
// @PostMapping("/api/project-group/group/list")
|
||||
// ApiResult<List<ProjectTeamGroupListResp>> groupList(@RequestBody ProjectTeamGroupListReq req);
|
||||
@ -98,7 +98,7 @@ public interface OrgProjectGroupApi {
|
||||
* @date 2022/11/30 16:32
|
||||
**/
|
||||
@GetMapping("api/direct-group/no-leader/group")
|
||||
ApiResult<ProjectGroupListRes> getNoLeaderGroupList(@RequestParam("workspaceId") Long workspaceId, @RequestParam("platTeamId") Long platTeamId, @RequestParam("isReturnWorker") Boolean isReturnWorker);
|
||||
ApiResult<ProjectGroupListResp> getNoLeaderGroupList(@RequestParam("workspaceId") Long workspaceId, @RequestParam("platTeamId") Long platTeamId, @RequestParam("isReturnWorker") Boolean isReturnWorker);
|
||||
|
||||
/**
|
||||
* 查询平台班组id + 工人id 项目内是否为小组长
|
||||
|
||||
@ -45,7 +45,7 @@ Accept: application/json
|
||||
|
||||
###
|
||||
# 查询
|
||||
POST {{host}}/api/job/page
|
||||
POST {{host}}/api/job/list
|
||||
Content-Type: application/json
|
||||
Accept: application/json
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.orgmanax.dto.cooperateship.req;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
@ -67,10 +68,10 @@ public class ListOrgCooperateShipReq {
|
||||
private Set<Integer> partnerShips = Collections.emptySet();
|
||||
|
||||
/**
|
||||
* 在场状态集合
|
||||
* 在场状态集合, 默认为在场
|
||||
*/
|
||||
@Builder.Default
|
||||
private Set<Integer> statuses = Collections.emptySet();
|
||||
private Set<Integer> statuses = CollUtil.newHashSet(1);
|
||||
|
||||
/**
|
||||
* 根据人员进行节点过滤
|
||||
|
||||
@ -135,10 +135,9 @@ public class OrgJobDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 角色信息
|
||||
* todo 2024年12月30日 已和周敏确认,暂不用该字段
|
||||
* 二期才会用到此字段
|
||||
*/
|
||||
//private List<RoleDTO> saasRoles;
|
||||
private List<RoleDTO> saasRoles;
|
||||
|
||||
public Set<Long> mergeAndDistinctRolesIds() {
|
||||
Set<Long> roleIds = Sets.newHashSet();
|
||||
|
||||
@ -2,16 +2,16 @@ package cn.axzo.orgmanax.dto.node.dto;
|
||||
|
||||
import cn.axzo.orgmanax.dto.node.enums.NodeTypeEnum;
|
||||
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 部门Profile定义
|
||||
@ -183,72 +183,114 @@ public class NodeProfile {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 平台班组Profile
|
||||
*/
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@SuperBuilder
|
||||
@Data
|
||||
public static class PlatTeamProfile {
|
||||
private Long teamOuId;
|
||||
private Long teamNodeId;
|
||||
private Long ouId;
|
||||
private Long nodeId;
|
||||
}
|
||||
|
||||
private static final Map<Integer, Class<?>> typeClassMapping = ImmutableMap.of(
|
||||
NodeTypeEnum.PROJECT_TEAM.getValue(), ProjectTeamProfile.class,
|
||||
NodeTypeEnum.PROJECT_GROUP.getValue(), ProjectGroupProfile.class,
|
||||
NodeTypeEnum.TEAM.getValue(), PlatTeamProfile.class
|
||||
NodeTypeEnum.PROJECT_GROUP.getValue(), ProjectGroupProfile.class
|
||||
);
|
||||
|
||||
public static Class<?> resolveProfileClass(Integer nodeType) {
|
||||
return typeClassMapping.getOrDefault(nodeType, JSONObject.class);
|
||||
}
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum NodeProfileResolveTypeEnum {
|
||||
|
||||
PROJECT_TEAM_ID("项目班组id", Long.class, Arrays.asList("projectTeamId", "belongProjectTeamId")),
|
||||
PLAT_TEAM_ID("平台班组id", Long.class, Arrays.asList("platTeamId", "belongPlatTeamId")),
|
||||
PROJECT_GROUP_ID("项目小组id", Long.class, Arrays.asList("projectGroupId")),
|
||||
|
||||
;
|
||||
|
||||
private String desc;
|
||||
/**
|
||||
* 解析类型
|
||||
*/
|
||||
private Class aClass;
|
||||
/**
|
||||
* 解析字段名
|
||||
*/
|
||||
private List<String> resolveFieldName;
|
||||
}
|
||||
|
||||
public static <T> T resolve(OrgNodeDTO orgNodeDTO, NodeProfileResolveTypeEnum resolveType) {
|
||||
return (T)Optional.ofNullable(orgNodeDTO)
|
||||
.map(OrgNodeDTO::getProfile)
|
||||
.map(profile -> {
|
||||
List<String> resolveFieldNames = resolveType.getResolveFieldName();
|
||||
for (String field : resolveFieldNames) {
|
||||
Object object = profile.getObject(field, resolveType.aClass);
|
||||
if (object != null) {
|
||||
return object;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}).orElse(null);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 需指定{@link ListNodeUserReq.Needs#getNode()} ()} 为true才有用
|
||||
* @return
|
||||
*/
|
||||
public static Long resolveProjectTeamId(OrgNodeBriefDTO node) {
|
||||
if (node == null || node.getNodeType() == null) {
|
||||
return null;
|
||||
}
|
||||
Integer nodeType = node.getNodeType();
|
||||
if (nodeType.equals(NodeTypeEnum.PROJECT_TEAM.getValue())) {
|
||||
//项目班组
|
||||
NodeProfile.ProjectTeamProfile projectTeamProfile = node.resolveProfile();
|
||||
return Optional.ofNullable(projectTeamProfile).orElse(new NodeProfile.ProjectTeamProfile()).getProjectTeamId();
|
||||
}
|
||||
if (nodeType.equals(NodeTypeEnum.PROJECT_GROUP.getValue())) {
|
||||
//项目小组
|
||||
NodeProfile.ProjectGroupProfile projectGroupProfile = node.resolveProfile();
|
||||
return Optional.ofNullable(projectGroupProfile).orElse(new NodeProfile.ProjectGroupProfile()).getBelongProjectTeamId();
|
||||
}
|
||||
return null;
|
||||
public static Long resolveProjectTeamId(OrgNodeDTO orgNodeDTO) {
|
||||
return Optional.ofNullable(orgNodeDTO)
|
||||
.map(OrgNodeDTO::getProfile)
|
||||
.map(profile -> {
|
||||
if (ObjectUtil.isNotEmpty(profile.getLong("projectTeamId"))) {
|
||||
return profile.getLong("projectTeamId");
|
||||
}
|
||||
return profile.getLong("belongProjectTeamId");
|
||||
}).orElse(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
public static Long resolveProjectTeamId(OrgNodeBriefDTO orgNodeDTO) {
|
||||
return Optional.ofNullable(orgNodeDTO)
|
||||
.map(OrgNodeBriefDTO::getProfile)
|
||||
.map(profile -> {
|
||||
if (ObjectUtil.isNotEmpty(profile.getLong("projectTeamId"))) {
|
||||
return profile.getLong("projectTeamId");
|
||||
}
|
||||
return profile.getLong("belongProjectTeamId");
|
||||
}).orElse(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 需指定{@link ListNodeUserReq.Needs#getNode()} ()} 为true才有用
|
||||
* @return
|
||||
*/
|
||||
public static Long resolvePlatTeamId(OrgNodeBriefDTO node) {
|
||||
if (node == null || node.getNodeType() == null) {
|
||||
return null;
|
||||
}
|
||||
Integer nodeType = node.getNodeType();
|
||||
if (nodeType.equals(NodeTypeEnum.PROJECT_TEAM.getValue())) {
|
||||
//项目班组
|
||||
NodeProfile.ProjectTeamProfile projectTeamProfile = node.resolveProfile();
|
||||
return Optional.ofNullable(projectTeamProfile).orElse(new NodeProfile.ProjectTeamProfile()).getPlatTeamId();
|
||||
}
|
||||
if (nodeType.equals(NodeTypeEnum.PROJECT_GROUP.getValue())) {
|
||||
//项目小组
|
||||
NodeProfile.ProjectGroupProfile projectGroupProfile = node.resolveProfile();
|
||||
return Optional.ofNullable(projectGroupProfile).orElse(new NodeProfile.ProjectGroupProfile()).getBelongPlatTeamId();
|
||||
}
|
||||
//TODO 是否还有平台班组类型也有平台班组id?有需要自己下面继续实现
|
||||
return null;
|
||||
public static Long resolvePlatTeamId(OrgNodeDTO orgNodeDTO) {
|
||||
return Optional.ofNullable(orgNodeDTO)
|
||||
.map(OrgNodeDTO::getProfile)
|
||||
.map(profile -> {
|
||||
if (ObjectUtil.isNotEmpty(profile.getLong("platTeamId"))) {
|
||||
return profile.getLong("platTeamId");
|
||||
}
|
||||
return profile.getLong("belongPlatTeamId");
|
||||
}).orElse(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 需指定{@link ListNodeUserReq.Needs#getNode()} ()} 为true才有用
|
||||
* @return
|
||||
*/
|
||||
public static Long resolvePlatTeamId(OrgNodeBriefDTO orgNodeDTO) {
|
||||
return Optional.ofNullable(orgNodeDTO)
|
||||
.map(OrgNodeBriefDTO::getProfile)
|
||||
.map(profile -> {
|
||||
if (ObjectUtil.isNotEmpty(profile.getLong("platTeamId"))) {
|
||||
return profile.getLong("platTeamId");
|
||||
}
|
||||
return profile.getLong("belongPlatTeamId");
|
||||
}).orElse(null);
|
||||
}
|
||||
|
||||
public static Long resolveProjectGroupId(OrgNodeDTO orgNodeDTO) {
|
||||
return Optional.ofNullable(orgNodeDTO)
|
||||
.map(OrgNodeDTO::getProfile)
|
||||
.map(profile -> profile.getLong("projectGroupId"))
|
||||
.orElse(null);
|
||||
}
|
||||
}
|
||||
@ -58,8 +58,6 @@ public class OrgNodeBriefDTO implements Serializable {
|
||||
/**
|
||||
* 节点信息,json,不同的节点类型,格式不一。如班组节点的解散状态等
|
||||
* @see OrgNodeBriefDTO#resolveProfile()
|
||||
* @see NodeProfile#resolveProjectTeamId
|
||||
* @see NodeProfile#resolvePlatTeamId
|
||||
*/
|
||||
private JSONObject profile;
|
||||
|
||||
|
||||
@ -93,6 +93,10 @@ public class OrgNodeDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 节点信息,json,不同的节点类型,格式不一。如班组节点的解散状态等
|
||||
* @see NodeProfile#resolveProjectGroupId
|
||||
* @see NodeProfile#resolveProjectTeamId
|
||||
* @see NodeProfile#resolvePlatTeamId
|
||||
*
|
||||
*/
|
||||
private JSONObject profile;
|
||||
|
||||
|
||||
@ -169,6 +169,12 @@ public class ListNodeReq extends PageReqV2 {
|
||||
*/
|
||||
private Collection<Long> ownerWorkerIdentityIds;
|
||||
|
||||
/**
|
||||
* todo 未实现
|
||||
* 小组长项目工人id列表
|
||||
*/
|
||||
private Collection<Long> ownerProjectWorkerIds;
|
||||
|
||||
/**
|
||||
* 小组状态 0-未激活 1-已激活 2-已结束
|
||||
* @see ProjectGroupStatusEnum
|
||||
|
||||
@ -16,7 +16,7 @@ import java.util.List;
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class ProjectGroupListRes {
|
||||
public class ProjectGroupListResp {
|
||||
|
||||
/**
|
||||
* 小组列表
|
||||
@ -1,20 +1,19 @@
|
||||
package cn.axzo.orgmanax.dto.unit.contact.req;
|
||||
|
||||
import cn.axzo.orgmanax.dto.unit.contact.enums.ContactOperateEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Pattern;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
/**
|
||||
* 编辑单位联系人
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class OperateOrgContactReq {
|
||||
|
||||
@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* @author syl
|
||||
@ -14,6 +15,7 @@ import lombok.NoArgsConstructor;
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@SuperBuilder
|
||||
public class PageOrgContactReq extends PageReqV2 {
|
||||
|
||||
/**
|
||||
|
||||
@ -4,16 +4,16 @@ import java.util.List;
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* @author syl
|
||||
* @date 2024/12/16
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SaveBatchOrgContactReq {
|
||||
|
||||
@ -3,16 +3,16 @@ package cn.axzo.orgmanax.dto.unit.contact.req;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
/**
|
||||
* 新增单位联系人
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SaveOrgContactReq {
|
||||
|
||||
@ -115,10 +115,10 @@
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<!--<dependency>
|
||||
<dependency>
|
||||
<groupId>cn.axzo.tyr</groupId>
|
||||
<artifactId>tyr-client</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>-->
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@ -1,11 +1,15 @@
|
||||
package cn.axzo.orgmanax.infra.client.tyr;
|
||||
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.orgmanax.infra.client.RpcWrapper;
|
||||
import cn.axzo.tyr.feign.api.RoleApi;
|
||||
import cn.axzo.tyr.feign.req.PageRoleReq;
|
||||
import cn.axzo.tyr.feign.resp.RoleResp;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* todo 暂时注释,tyr不上线
|
||||
* @author syl
|
||||
* @date 2024/12/23
|
||||
*/
|
||||
@ -14,9 +18,9 @@ import org.springframework.stereotype.Component;
|
||||
@RequiredArgsConstructor
|
||||
public class RoleGateway {
|
||||
|
||||
// private final RoleApi roleApi;
|
||||
//
|
||||
// public PageResp<RoleResp> page(PageRoleReq req) {
|
||||
// return RpcWrapper.wrapApiResult(() -> roleApi.page(req));
|
||||
// }
|
||||
private final RoleApi roleApi;
|
||||
|
||||
public PageResp<RoleResp> page(PageRoleReq req) {
|
||||
return RpcWrapper.wrapApiResult(() -> roleApi.page(req));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,30 +0,0 @@
|
||||
package cn.axzo.orgmanax.infra.client.util;
|
||||
|
||||
import cn.axzo.foundation.exception.BusinessException;
|
||||
import cn.axzo.orgmanax.common.config.BizResultCode;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Supplier;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class RpcWrapper {
|
||||
|
||||
/**
|
||||
* Api result 返回
|
||||
* @param supplier
|
||||
* @return
|
||||
* @param <T>
|
||||
*/
|
||||
public static <T> T wrapApiResult(Supplier<cn.axzo.foundation.result.ApiResult<T>> supplier) {
|
||||
cn.axzo.foundation.result.ApiResult<T> result = supplier.get();
|
||||
if (result == null) {
|
||||
throw new BusinessException(BizResultCode.RPC_ERROR);
|
||||
}
|
||||
if (!Objects.equals(result.getCode(), HttpStatus.HTTP_OK)) {
|
||||
throw new BusinessException(Convert.toStr(result.getCode()), result.getMsg(), null);
|
||||
}
|
||||
return result.getData();
|
||||
}
|
||||
}
|
||||
@ -4,6 +4,7 @@ import cn.axzo.foundation.web.support.AppRuntime;
|
||||
import cn.axzo.foundation.web.support.config.DefaultWebMvcConfig;
|
||||
import cn.axzo.foundation.web.support.exception.AbstractExceptionHandler;
|
||||
import cn.axzo.foundation.web.support.log.RequestLogAspect;
|
||||
import cn.axzo.foundation.web.support.log.RequestLogV2Aspect;
|
||||
import cn.axzo.orgmanax.infra.event.config.RocketMQEventConfig;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration;
|
||||
@ -49,8 +50,8 @@ public class Config {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public RequestLogAspect requestLogAspect() {
|
||||
return RequestLogAspect.builder().build();
|
||||
public RequestLogV2Aspect requestLogV2Aspect() {
|
||||
return RequestLogV2Aspect.builder().build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@ -20,13 +20,13 @@ import org.springframework.stereotype.Component;
|
||||
public class RocketMQEventConfig {
|
||||
public static final String DEFAULT_MODULE = "orgmanax-server";
|
||||
|
||||
@Value("topic_${spring.application.name}_${spring.profiles.active}")
|
||||
@Value("topic_organizational_${spring.profiles.active}")
|
||||
private String currentTopic;
|
||||
|
||||
@Value("topic_organizational_${spring.profiles.active}")
|
||||
private String organizationalTopic;
|
||||
|
||||
@Value("topic_${spring.application.name}_retry_${spring.profiles.active}")
|
||||
@Value("topic_organizational_retry_${spring.profiles.active}")
|
||||
private String currentRetryTopic;
|
||||
|
||||
/**
|
||||
@ -37,7 +37,7 @@ public class RocketMQEventConfig {
|
||||
@Component
|
||||
// XXX: consumerGroup 必须全局唯一. RocketMQ要求同一个Consumer Group的消费者必须要拥有相同的注册信息,即必须要听一样的topic(并且tag也一样)。
|
||||
// 这里通个添加 topic信息来保证唯一.
|
||||
@RocketMQMessageListener(topic = "topic_${spring.application.name}_${spring.profiles.active}",
|
||||
@RocketMQMessageListener(topic = "topic_organizational_${spring.profiles.active}",
|
||||
consumerGroup = "GID_${spring.application.name}_${spring.application.name}_${spring.profiles.active}",
|
||||
consumeMode = ConsumeMode.ORDERLY, enableMsgTrace = false)
|
||||
public static class Listener extends DefaultRocketMQListener {
|
||||
@ -50,7 +50,7 @@ public class RocketMQEventConfig {
|
||||
@Component
|
||||
// XXX: consumerGroup 必须全局唯一. RocketMQ要求同一个Consumer Group的消费者必须要拥有相同的注册信息,即必须要听一样的topic(并且tag也一样)。
|
||||
// 这里通个添加 topic信息来保证唯一.
|
||||
@RocketMQMessageListener(topic = "topic_${spring.application.name}_retry_${spring.profiles.active}",
|
||||
@RocketMQMessageListener(topic = "topic_organizational_retry_${spring.profiles.active}",
|
||||
consumerGroup = "GID_${spring.application.name}_retry_${spring.application.name}_${spring.profiles.active}",
|
||||
consumeMode = ConsumeMode.ORDERLY, enableMsgTrace = false)
|
||||
public static class RetryListener extends DefaultRocketMQListener {
|
||||
|
||||
@ -95,7 +95,9 @@ public class ListNodeCmdExe {
|
||||
assemble(req, records, page.getData());
|
||||
|
||||
// 返回
|
||||
return new PageResp<>(page.getTotal(), page.getSize(), page.getCurrent(), records);
|
||||
return new PageResp<>(page.getTotal(), page.getSize(), page.getCurrent(),
|
||||
CollUtil.distinct(records, OrgNodeDTO::getId, true)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -11,6 +11,7 @@ import cn.axzo.orgmanax.dto.cooperateship.req.ListOrgCooperateShipReq;
|
||||
import cn.axzo.orgmanax.dto.job.dto.OrgJobDTO;
|
||||
import cn.axzo.orgmanax.dto.job.dto.OrgJobGroupDTO;
|
||||
import cn.axzo.orgmanax.dto.job.dto.OrgJobGroupRelationDTO;
|
||||
import cn.axzo.orgmanax.dto.job.dto.RoleDTO;
|
||||
import cn.axzo.orgmanax.dto.job.enums.OrgJobGroupFlagEnum;
|
||||
import cn.axzo.orgmanax.dto.job.enums.OrgJobTypeEnum;
|
||||
import cn.axzo.orgmanax.dto.job.req.CreateOrgJobReq;
|
||||
@ -27,6 +28,8 @@ import cn.axzo.orgmanax.server.orgjob.service.OrgJobService;
|
||||
import cn.axzo.orgmanax.server.orgjob.service.dto.OrgJobGroupPageParam;
|
||||
import cn.axzo.orgmanax.server.orgjob.service.dto.OrgJobGroupRelationPageParam;
|
||||
import cn.axzo.orgmanax.server.orgjob.service.dto.OrgJobPageParam;
|
||||
import cn.axzo.tyr.feign.req.PageRoleReq;
|
||||
import cn.axzo.tyr.feign.resp.RoleResp;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
@ -105,8 +108,8 @@ public class OrgJobServiceImpl implements OrgJobService {
|
||||
buildOrgGroup4OrgJob(orgJobs.getData());
|
||||
}
|
||||
if (BooleanUtils.isTrue(param.getNeedSaasRole())) {
|
||||
// todo 设置角色信息
|
||||
// buildSaasRole4OrgJob(orgJobs.getData());
|
||||
// 设置角色信息
|
||||
buildSaasRole4OrgJob(orgJobs.getData());
|
||||
}
|
||||
return orgJobs;
|
||||
}
|
||||
@ -177,48 +180,47 @@ public class OrgJobServiceImpl implements OrgJobService {
|
||||
return flags;
|
||||
}
|
||||
|
||||
// todo 暂时注释,二期才使用
|
||||
// private void buildSaasRole4OrgJob(List<OrgJobDTO> orgJobs) {
|
||||
// Set<Long> roleIds = orgJobs.stream()
|
||||
// .flatMap(e -> e.mergeAndDistinctRolesIds().stream())
|
||||
// .collect(Collectors.toSet());
|
||||
// Map<Long, RoleResp> saasRoleMap = listSaasRoles(roleIds);
|
||||
// if (CollUtil.isEmpty(saasRoleMap)) {
|
||||
// return;
|
||||
// }
|
||||
// orgJobs.forEach(e -> {
|
||||
// Set<Long> mergedRoleIds = e.mergeAndDistinctRolesIds();
|
||||
// if (CollUtil.isNotEmpty(mergedRoleIds)) {
|
||||
// List<RoleResp> roles = mergedRoleIds.stream()
|
||||
// .map(saasRoleMap::get)
|
||||
// .filter(Objects::nonNull)
|
||||
// .collect(Collectors.toList());
|
||||
// e.setSaasRoles(BeanUtil.copyToList(roles, RoleDTO.class));
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
private void buildSaasRole4OrgJob(List<OrgJobDTO> orgJobs) {
|
||||
Set<Long> roleIds = orgJobs.stream()
|
||||
.flatMap(e -> e.mergeAndDistinctRolesIds().stream())
|
||||
.collect(Collectors.toSet());
|
||||
Map<Long, RoleResp> saasRoleMap = listSaasRoles(roleIds);
|
||||
if (CollUtil.isEmpty(saasRoleMap)) {
|
||||
return;
|
||||
}
|
||||
orgJobs.forEach(e -> {
|
||||
Set<Long> mergedRoleIds = e.mergeAndDistinctRolesIds();
|
||||
if (CollUtil.isNotEmpty(mergedRoleIds)) {
|
||||
List<RoleResp> roles = mergedRoleIds.stream()
|
||||
.map(saasRoleMap::get)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
e.setSaasRoles(BeanUtil.copyToList(roles, RoleDTO.class));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// private Map<Long, RoleResp> listSaasRoles(Set<Long> roleIds) {
|
||||
// if (CollUtil.isEmpty(roleIds)) {
|
||||
// return Collections.emptyMap();
|
||||
// }
|
||||
// List<RoleResp> roles = new ArrayList<>();
|
||||
// PageRoleReq param = PageRoleReq.builder().roleIds(roleIds).build();
|
||||
//
|
||||
// PageResp<RoleResp> rolePage;
|
||||
// int pageNumber = 0;
|
||||
// param.setPageSize(JOB_PAGE_SIZE);
|
||||
// do {
|
||||
// param.setPage(++pageNumber);
|
||||
// rolePage = roleGateway.page(param);
|
||||
// if (CollUtil.isNotEmpty(rolePage.getData())) {
|
||||
// roles.addAll(rolePage.getData());
|
||||
// }
|
||||
// } while (rolePage.hasNext());
|
||||
//
|
||||
// return roles.stream()
|
||||
// .collect(Collectors.toMap(RoleResp::getRoleId, Function.identity(), (oldVal, newVal) -> oldVal));
|
||||
// }
|
||||
private Map<Long, RoleResp> listSaasRoles(Set<Long> roleIds) {
|
||||
if (CollUtil.isEmpty(roleIds)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
List<RoleResp> roles = new ArrayList<>();
|
||||
PageRoleReq param = PageRoleReq.builder().roleIds(roleIds).build();
|
||||
|
||||
PageResp<RoleResp> rolePage;
|
||||
int pageNumber = 0;
|
||||
param.setPageSize(JOB_PAGE_SIZE);
|
||||
do {
|
||||
param.setPage(++pageNumber);
|
||||
rolePage = roleGateway.page(param);
|
||||
if (CollUtil.isNotEmpty(rolePage.getData())) {
|
||||
roles.addAll(rolePage.getData());
|
||||
}
|
||||
} while (rolePage.hasNext());
|
||||
|
||||
return roles.stream()
|
||||
.collect(Collectors.toMap(RoleResp::getRoleId, Function.identity(), (oldVal, newVal) -> oldVal));
|
||||
}
|
||||
|
||||
private void buildOrgGroup4OrgJob(List<OrgJobDTO> orgJobs) {
|
||||
// 查询岗位与分组的关联关系
|
||||
|
||||
@ -0,0 +1,89 @@
|
||||
package cn.axzo.orgmanax.server.project.group.controller;
|
||||
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.foundation.result.ApiResult;
|
||||
import cn.axzo.orgmanax.api.project.group.feign.OrgProjectGroupApi;
|
||||
import cn.axzo.orgmanax.dto.project.group.req.*;
|
||||
import cn.axzo.orgmanax.dto.project.group.resp.*;
|
||||
import cn.axzo.orgmanax.server.project.group.service.OrgProjectGroupService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhanghongbo
|
||||
* @date 2025/1/9
|
||||
*/
|
||||
@RestController
|
||||
@Slf4j
|
||||
@AllArgsConstructor
|
||||
public class OrgProjectGroupController implements OrgProjectGroupApi {
|
||||
|
||||
private OrgProjectGroupService orgProjectGroupService;
|
||||
|
||||
@Override
|
||||
public ApiResult<List<LabourProjectGroupListV2Res>> page(@Valid ProjectGroupPageReq req) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Long> create(@Valid GroupNodeCreateReq req) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Void> edit(@Valid GroupNodeEditReq req) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Void> delete(@Valid GroupNodeDeleteReq req) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<List<ExposeGroupWorkerRespItem>> exposeWorkers(Long workspaceId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<ProjectGroupOwnerPermissionRes> groupOwnerPermission(Long groupId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<ProjectGroupListResp> getNoLeaderGroupList(Long workspaceId, Long platTeamId, Boolean isReturnWorker) {
|
||||
|
||||
|
||||
orgProjectGroupService.getNoLeaderGroupList(workspaceId, platTeamId, isReturnWorker);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<PageResp<ProjectGroupRes>> pageGroupInfo(@Valid ProjectDirectGroupPageGroupReq req) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Integer> getJoinTeamTopNo(Long projectTeamId, Long groupId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<List<ProjectTeamGroupWorkerRes>> listProjectGroupWorker(Long projectTeamId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<List<ProjectGroupNodeRes>> pageProjectGroupNode(ProjectDirectGroupPageProjectGroupNodeReq req) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<ProjectGroupAndWorkerResp> getProjectGroupUnOwnerAndWorker(Long teamNodeId) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
package cn.axzo.orgmanax.server.project.group.service;
|
||||
|
||||
import cn.axzo.orgmanax.dto.project.group.resp.ProjectGroupListResp;
|
||||
|
||||
/**
|
||||
* @author zhanghongbo
|
||||
* @date 2025/1/9
|
||||
*/
|
||||
public interface OrgProjectGroupService {
|
||||
ProjectGroupListResp getNoLeaderGroupList(Long workspaceId, Long platTeamId, Boolean isReturnWorker);
|
||||
}
|
||||
@ -0,0 +1,85 @@
|
||||
package cn.axzo.orgmanax.server.project.group.service.impl;
|
||||
|
||||
import cn.axzo.orgmanax.api.project.group.enums.ProjectGroupTypeEnum;
|
||||
import cn.axzo.orgmanax.dto.node.dto.NodeProfile;
|
||||
import cn.axzo.orgmanax.dto.node.dto.OrgNodeDTO;
|
||||
import cn.axzo.orgmanax.dto.node.enums.NodeTypeEnum;
|
||||
import cn.axzo.orgmanax.dto.node.req.ListNodeReq;
|
||||
import cn.axzo.orgmanax.dto.project.group.enums.ProjectGroupStatusEnum;
|
||||
import cn.axzo.orgmanax.dto.project.group.resp.ProjectGroupListResp;
|
||||
import cn.axzo.orgmanax.server.node.service.NodeService;
|
||||
import cn.axzo.orgmanax.server.project.group.service.OrgProjectGroupService;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.google.common.collect.Sets;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author zhanghongbo
|
||||
* @date 2025/1/9
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
@AllArgsConstructor
|
||||
public class OrgProjectGroupServiceImpl implements OrgProjectGroupService {
|
||||
|
||||
private NodeService nodeService;
|
||||
|
||||
|
||||
@Override
|
||||
public ProjectGroupListResp getNoLeaderGroupList(Long workspaceId, Long platTeamId, Boolean isReturnWorker) {
|
||||
log.info("getNoLeaderGroupList : workspaceId={}, platTeamId={}, isReturnWorker={}", workspaceId, platTeamId, isReturnWorker);
|
||||
//1.默认不返回工人列表
|
||||
if (isReturnWorker == null) {
|
||||
isReturnWorker = false;
|
||||
}
|
||||
List<OrgNodeDTO> orgNodeDTOS = nodeService.list(ListNodeReq.builder()
|
||||
.workspaceIds(Sets.newHashSet(workspaceId))
|
||||
.platTeamIds(Sets.newHashSet(platTeamId))
|
||||
.excludeOrgNodeTypes(Sets.newHashSet(NodeTypeEnum.PROJECT_GROUP.getValue()))
|
||||
.projectGroupStatus(ProjectGroupStatusEnum.ACTIVE.getValue())
|
||||
.projectGroupType(ProjectGroupTypeEnum.DIRECTLY_UNDER.getValue())
|
||||
.ownerWorkerIdentityIds(Arrays.asList(0L))
|
||||
.ownerProjectWorkerIds(Arrays.asList(0L))
|
||||
.build());
|
||||
|
||||
if (ObjectUtil.isEmpty(orgNodeDTOS)) {
|
||||
Collections.emptyList();
|
||||
}
|
||||
|
||||
convert(orgNodeDTOS, workspaceId);
|
||||
|
||||
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private List<ProjectGroupListResp.ProjectGroupInfo> convert(List<OrgNodeDTO> orgNodeDTOS, Long workspaceId) {
|
||||
//todo
|
||||
// return orgNodeDTOS.stream().map(orgNodeDTO -> {
|
||||
// ProjectGroupListResp.ProjectGroupInfo projectGroupInfo = new ProjectGroupListResp.ProjectGroupInfo();
|
||||
// projectGroupInfo.setId(NodeProfile.resolveProjectGroupId(orgNodeDTO));
|
||||
// projectGroupInfo.setName(orgNodeDTO.getNodeName());
|
||||
// projectGroupInfo.setWorkspaceId(workspaceId);
|
||||
// projectGroupInfo.setBelongProjectTeamId(NodeProfile.resolveProjectTeamId(orgNodeDTO));
|
||||
// projectGroupInfo.setBelongPlatTeamId(NodeProfile.resolvePlatTeamId(orgNodeDTO));
|
||||
// projectGroupInfo.setOwnerProjectWorkerId(orgNodeDTO.get);
|
||||
// projectGroupInfo.setOwnerWorkerName();
|
||||
// projectGroupInfo.setOwnerWorkerPhone();
|
||||
// projectGroupInfo.setOwnerWorkerFaceUrl();
|
||||
// projectGroupInfo.setGroupType();
|
||||
// projectGroupInfo.setCreateAt();
|
||||
// projectGroupInfo.setUpdateAt();
|
||||
// projectGroupInfo.setProjectGroupWorkerList();
|
||||
// }).collect(Collectors.toList());
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
@ -140,7 +140,7 @@ public class OrgProjectWorkerServiceImpl implements OrgProjectWorkerService {
|
||||
NodeUserDTO nodeUserDTO = nodeUserDTOMap.get(resp.getWorkerIdentityId());
|
||||
if (nodeUserDTO != null) {
|
||||
resp.setPlatTeamId(NodeProfile.resolvePlatTeamId(nodeUserDTO.getNode()));
|
||||
resp.setProjectTeamId(NodeProfile.resolvePlatTeamId(nodeUserDTO.getNode()));
|
||||
resp.setProjectTeamId(NodeProfile.resolveProjectTeamId(nodeUserDTO.getNode()));
|
||||
}
|
||||
}
|
||||
return resps;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user