feat(REQ-3488): 班组类别api 逻辑调整
This commit is contained in:
parent
1a9f2cc1ec
commit
cf8d6a8080
@ -40,6 +40,7 @@ public interface OrgProjectTeamCategoryApi {
|
|||||||
@RequestBody @Valid PreCheckRemoveTeamCategoryReq req);
|
@RequestBody @Valid PreCheckRemoveTeamCategoryReq req);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* todo 三期实现
|
||||||
* 添加项目班组分类
|
* 添加项目班组分类
|
||||||
* 和 单个班组的班组类别初始化接口,逻辑相差太大,无法合并
|
* 和 单个班组的班组类别初始化接口,逻辑相差太大,无法合并
|
||||||
* 这里用到宽表 org_project_worker_wide
|
* 这里用到宽表 org_project_worker_wide
|
||||||
@ -56,6 +57,7 @@ public interface OrgProjectTeamCategoryApi {
|
|||||||
ApiResult<Void> removeTeamCategory(@RequestBody @Valid RemoveProjectTeamCategoryReq req);
|
ApiResult<Void> removeTeamCategory(@RequestBody @Valid RemoveProjectTeamCategoryReq req);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* todo 三期实现
|
||||||
* 操作班组类别
|
* 操作班组类别
|
||||||
*/
|
*/
|
||||||
@PostMapping(value = "/api/project/team-category/operate")
|
@PostMapping(value = "/api/project/team-category/operate")
|
||||||
@ -64,7 +66,7 @@ public interface OrgProjectTeamCategoryApi {
|
|||||||
/**
|
/**
|
||||||
* replace,实际上把老的删了,更换为入参
|
* replace,实际上把老的删了,更换为入参
|
||||||
* 入参是集合类型,无法合并到通用接口
|
* 入参是集合类型,无法合并到通用接口
|
||||||
* todo 看业务方使用场景
|
* todo 三期实现 看业务方使用场景
|
||||||
*/
|
*/
|
||||||
@PostMapping(value = "/api/project/team-category/upsert")
|
@PostMapping(value = "/api/project/team-category/upsert")
|
||||||
ApiResult<Void> replace(@RequestBody @NotEmpty List<OrgTeamCategoryReq> req);
|
ApiResult<Void> replace(@RequestBody @NotEmpty List<OrgTeamCategoryReq> req);
|
||||||
|
|||||||
@ -3,18 +3,23 @@ package cn.axzo.orgmanax.api.workerprofession.feign;
|
|||||||
import cn.axzo.foundation.page.PageResp;
|
import cn.axzo.foundation.page.PageResp;
|
||||||
import cn.axzo.foundation.result.ApiResult;
|
import cn.axzo.foundation.result.ApiResult;
|
||||||
import cn.axzo.orgmanax.dto.workerprofession.dto.ProfessionDTO;
|
import cn.axzo.orgmanax.dto.workerprofession.dto.ProfessionDTO;
|
||||||
import cn.axzo.orgmanax.dto.workerprofession.req.*;
|
import cn.axzo.orgmanax.dto.workerprofession.req.ProjectWorkerProfessionListValidReq;
|
||||||
import cn.axzo.orgmanax.dto.workerprofession.resp.OrgWorkerProfessionResp;
|
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.ProjectWorkerProfessionResp;
|
import cn.axzo.orgmanax.dto.workerprofession.resp.ProjectWorkerProfessionResp;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import javax.validation.Valid;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhanghongbo
|
* @author zhanghongbo
|
||||||
* @date 2025/1/3
|
* @date 2025/1/3
|
||||||
@ -92,14 +97,4 @@ public interface OrgProjectWorkerProfessionApi {
|
|||||||
@PostMapping(value = "/api/worker/profession/page")
|
@PostMapping(value = "/api/worker/profession/page")
|
||||||
ApiResult<PageResp<ProjectWorkerProfessionResp>> page(@RequestBody @Validated WorkerProfessionTagQueryPageReq req);
|
ApiResult<PageResp<ProjectWorkerProfessionResp>> 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);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,7 @@ public class TreeOrgTeamCategoryReq {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 租户id
|
* 租户id
|
||||||
|
* 尽量搭配其他参数组合查询
|
||||||
*/
|
*/
|
||||||
private Long workspaceId;
|
private Long workspaceId;
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,72 @@
|
|||||||
|
package cn.axzo.orgmanax.dto.project.team.utils;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.dto.project.team.dto.TeamCategoryAggregateDTO;
|
||||||
|
import cn.axzo.orgmanax.dto.project.team.enums.TeamCategoryTypeEnum;
|
||||||
|
import cn.axzo.orgmanax.dto.project.team.enums.ValidationEnum;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 经营范围helper
|
||||||
|
*
|
||||||
|
* @author zhangtianyu
|
||||||
|
* @date 2023/2/23 8:40 PM
|
||||||
|
**/
|
||||||
|
public class TeamCategoryHelper {
|
||||||
|
|
||||||
|
public static Set<String> getLowestLevelCategories(List<TeamCategoryAggregateDTO> teamCategories) {
|
||||||
|
// 查询经营范围对应的工人工种,当有专业经营范围时使用专业经营范围,当只有经营范围且该经营范围下午专业经营范围,则使用经营范围查询对应的工种
|
||||||
|
Set<String> needQueryTeamCategories = teamCategories.stream().map(TeamCategoryAggregateDTO::getCode)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
teamCategories.stream()
|
||||||
|
.filter(c -> Objects.equals(c.getType(), TeamCategoryTypeEnum.WORKER_GROUP_PROFESSION.getCode()))
|
||||||
|
.filter(c -> Objects.equals(c.getValid(), ValidationEnum.EFFECTIVE.getCode()))
|
||||||
|
.forEach(c -> {
|
||||||
|
// 移除有专业经营范围的经营范围
|
||||||
|
needQueryTeamCategories.remove(c.getParentCode());
|
||||||
|
needQueryTeamCategories.add(c.getCode());
|
||||||
|
});
|
||||||
|
return needQueryTeamCategories;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<TeamCategoryAggregateDTO> listLowestLevelCategories(
|
||||||
|
List<TeamCategoryAggregateDTO> teamCategories) {
|
||||||
|
// 查询经营范围对应的工人工种,当有专业经营范围时使用专业经营范围,当只有经营范围且该经营范围下午专业经营范围,则使用经营范围查询对应的工种
|
||||||
|
Map<String, List<TeamCategoryAggregateDTO>> categoryCodeToCategoryMap = teamCategories.stream()
|
||||||
|
.collect(Collectors.groupingBy(TeamCategoryAggregateDTO::getCode));
|
||||||
|
teamCategories.stream()
|
||||||
|
.filter(c -> Objects.equals(c.getType(), TeamCategoryTypeEnum.WORKER_GROUP_PROFESSION.getCode()))
|
||||||
|
.filter(c -> Objects.equals(c.getValid(), ValidationEnum.EFFECTIVE.getCode()))
|
||||||
|
.forEach(c ->
|
||||||
|
// 移除有专业经营范围的经营范围
|
||||||
|
categoryCodeToCategoryMap.remove(c.getParentCode()));
|
||||||
|
List<TeamCategoryAggregateDTO> result = new ArrayList<>();
|
||||||
|
categoryCodeToCategoryMap.forEach((code, list) -> result.addAll(list));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打平
|
||||||
|
*/
|
||||||
|
public static List<TeamCategoryAggregateDTO> flatCategories(List<TeamCategoryAggregateDTO> teamCategories) {
|
||||||
|
if (CollUtil.isEmpty(teamCategories)) {
|
||||||
|
return Lists.newArrayList();
|
||||||
|
}
|
||||||
|
List<TeamCategoryAggregateDTO> resList = new ArrayList<>();
|
||||||
|
teamCategories.forEach(e -> {
|
||||||
|
resList.add(e);
|
||||||
|
if (CollUtil.isNotEmpty(e.getNodeChildren())) {
|
||||||
|
resList.addAll(e.getNodeChildren());
|
||||||
|
}
|
||||||
|
e.setNodeChildren(null);
|
||||||
|
});
|
||||||
|
return resList;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,31 +0,0 @@
|
|||||||
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;
|
|
||||||
}
|
|
||||||
@ -27,6 +27,7 @@ import java.util.HashSet;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -96,7 +97,8 @@ public class ProjectTeamCategoryServiceImpl implements ProjectTeamCategoryServic
|
|||||||
if (Objects.isNull(projectTeamProfile)) {
|
if (Objects.isNull(projectTeamProfile)) {
|
||||||
return NO_PROJECT_TEAM_ID;
|
return NO_PROJECT_TEAM_ID;
|
||||||
}
|
}
|
||||||
return projectTeamProfile.getProjectTeamId();
|
return Optional.ofNullable(projectTeamProfile.getProjectTeamId())
|
||||||
|
.orElse(NO_PROJECT_TEAM_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public TeamCategoryAggregateDTO convert(TeamCategoryDTO category, Map<Long, Long> nodeTeamMap) {
|
public TeamCategoryAggregateDTO convert(TeamCategoryDTO category, Map<Long, Long> nodeTeamMap) {
|
||||||
|
|||||||
@ -4,18 +4,23 @@ import cn.axzo.foundation.page.PageResp;
|
|||||||
import cn.axzo.foundation.result.ApiResult;
|
import cn.axzo.foundation.result.ApiResult;
|
||||||
import cn.axzo.orgmanax.api.workerprofession.feign.OrgProjectWorkerProfessionApi;
|
import cn.axzo.orgmanax.api.workerprofession.feign.OrgProjectWorkerProfessionApi;
|
||||||
import cn.axzo.orgmanax.dto.workerprofession.dto.ProfessionDTO;
|
import cn.axzo.orgmanax.dto.workerprofession.dto.ProfessionDTO;
|
||||||
import cn.axzo.orgmanax.dto.workerprofession.req.*;
|
import cn.axzo.orgmanax.dto.workerprofession.req.ProjectWorkerProfessionListValidReq;
|
||||||
import cn.axzo.orgmanax.dto.workerprofession.resp.OrgWorkerProfessionResp;
|
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.ProjectWorkerProfessionResp;
|
import cn.axzo.orgmanax.dto.workerprofession.resp.ProjectWorkerProfessionResp;
|
||||||
import cn.axzo.orgmanax.server.workerprofession.service.OrgProjectWorkerProfessionService;
|
import cn.axzo.orgmanax.server.workerprofession.service.OrgProjectWorkerProfessionService;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import javax.validation.Valid;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhanghongbo
|
* @author zhanghongbo
|
||||||
* @date 2025/1/3
|
* @date 2025/1/3
|
||||||
@ -66,9 +71,4 @@ public class OrgProjectWorkerProfessionController implements OrgProjectWorkerPro
|
|||||||
public ApiResult<PageResp<ProjectWorkerProfessionResp>> page(WorkerProfessionTagQueryPageReq req) {
|
public ApiResult<PageResp<ProjectWorkerProfessionResp>> page(WorkerProfessionTagQueryPageReq req) {
|
||||||
return ApiResult.success(orgProjectWorkerProfessionService.page(req));
|
return ApiResult.success(orgProjectWorkerProfessionService.page(req));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ApiResult<PageResp<OrgWorkerProfessionResp>> pageProfessions(@Valid PageTeamProfessionsReq req) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user