feat(REQ-3488): 提交获取小组接口
This commit is contained in:
parent
5ddfcaaefc
commit
5846b213e5
@ -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 项目内是否为小组长
|
||||
|
||||
@ -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定义
|
||||
@ -207,48 +207,105 @@ public class NodeProfile {
|
||||
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;
|
||||
|
||||
|
||||
@ -175,6 +175,12 @@ public class ListNodeReq extends PageReqV2 {
|
||||
*/
|
||||
private Collection<Long> ownerWorkerIdentityIds;
|
||||
|
||||
/**
|
||||
* todo 未实现
|
||||
* 小组长项目工人id列表
|
||||
*/
|
||||
private Collection<Long> ownerProjectWorkerIds;
|
||||
|
||||
/**
|
||||
* todo 未实现
|
||||
* 小组状态 0-未激活 1-已激活 2-已结束
|
||||
|
||||
@ -16,7 +16,7 @@ import java.util.List;
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class ProjectGroupListRes {
|
||||
public class ProjectGroupListResp {
|
||||
|
||||
/**
|
||||
* 小组列表
|
||||
@ -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()))
|
||||
.groupStatus(ProjectGroupStatusEnum.ACTIVE.getValue())
|
||||
.groupType(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