Merge remote-tracking branch 'origin/feature/REQ-3488' into feature/REQ-3488-zhh
This commit is contained in:
commit
951c72fd8b
@ -199,6 +199,10 @@ public class NodeProfile {
|
||||
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")),
|
||||
PROJECT_GROUP_OWNER_PROJECT_WORKER_ID("项目小组owner项目工人id", Long.class, Arrays.asList("ownerProjectWorkerId")),
|
||||
PROJECT_GROUP_TYPE("项目小组类型", Integer.class, Arrays.asList("type")),
|
||||
PROJECT_GROUP_CREATE_AT("项目小组创建时间", Integer.class, Arrays.asList("createAt")),
|
||||
PROJECT_GROUP_UPDATE_AT("项目小组修改时间", Integer.class, Arrays.asList("updateAt")),
|
||||
|
||||
;
|
||||
|
||||
@ -206,7 +210,7 @@ public class NodeProfile {
|
||||
/**
|
||||
* 解析类型
|
||||
*/
|
||||
private Class aClass;
|
||||
private Class resolveClass;
|
||||
/**
|
||||
* 解析字段名
|
||||
*/
|
||||
@ -219,7 +223,7 @@ public class NodeProfile {
|
||||
.map(profile -> {
|
||||
List<String> resolveFieldNames = resolveType.getResolveFieldName();
|
||||
for (String field : resolveFieldNames) {
|
||||
Object object = profile.getObject(field, resolveType.aClass);
|
||||
Object object = profile.getObject(field, resolveType.resolveClass);
|
||||
if (object != null) {
|
||||
return object;
|
||||
}
|
||||
|
||||
@ -0,0 +1,40 @@
|
||||
package cn.axzo.orgmanax.dto.orguser.enums;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @description
|
||||
* 人员异动场景
|
||||
* @author luofu
|
||||
* @version 1.0
|
||||
* @date 2024/10/24
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public enum OrgUserChangedScenarioEnum {
|
||||
|
||||
JOINED("JOINED", "加入"),
|
||||
WITHDRAW("WITHDRAW", "离开<单位:离职,项目:退场>"),
|
||||
LEAVED("LEAVED", "离场"),
|
||||
CHANGED("CHANGED", "部门岗位变更");
|
||||
|
||||
private final String code;
|
||||
private final String desc;
|
||||
|
||||
public static Optional<OrgUserChangedScenarioEnum> codeOf(String code) {
|
||||
return Arrays.stream(values())
|
||||
.filter(e -> Objects.equals(code, e.code))
|
||||
.findFirst();
|
||||
}
|
||||
|
||||
public static OrgUserChangedScenarioEnum codeOfThrowException(String code) {
|
||||
return codeOf(code)
|
||||
.orElseThrow(() -> new RuntimeException(String.format("invalid code.[%s]", code)));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,122 @@
|
||||
package cn.axzo.orgmanax.dto.orguser.event;
|
||||
|
||||
import cn.axzo.orgmanax.dto.orguser.enums.OrgUserChangedScenarioEnum;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description 用户组织架构信息变更事件 (部门-岗位-角色等)
|
||||
* @author luofu
|
||||
* @version 1.0
|
||||
* @date 2024/10/30
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class OrgUserChangedEvent implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 6513111764022461738L;
|
||||
|
||||
/**
|
||||
* 自然人id
|
||||
*/
|
||||
private Long personId;
|
||||
|
||||
/**
|
||||
* 单位id
|
||||
*/
|
||||
private Long ouId;
|
||||
|
||||
/**
|
||||
* 租户id
|
||||
*/
|
||||
private Long workspaceId;
|
||||
|
||||
/**
|
||||
* 用户状态
|
||||
* 1) 在职: 5
|
||||
* 2) 离职: 6
|
||||
* 3) 入场中: 0
|
||||
* 4) 在场: 1
|
||||
* 5) 离场: 3
|
||||
* 6) 已删除: 4
|
||||
*/
|
||||
private Integer statusCode;
|
||||
|
||||
/**
|
||||
* 异动时间戳
|
||||
*/
|
||||
private Long transferTimestamp;
|
||||
|
||||
/**
|
||||
* 人员异动场景
|
||||
* @see OrgUserChangedScenarioEnum
|
||||
*/
|
||||
private String scenarioCode;
|
||||
|
||||
/**
|
||||
* 备注:二维码加入 - APP端、手机号添加 - CMS端
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 补充信息信息
|
||||
*/
|
||||
private SupplementaryInfo supplementaryInfo;
|
||||
|
||||
/**
|
||||
* 操作人的自然人id
|
||||
*/
|
||||
private Long operatorId;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class SupplementaryInfo implements Serializable{
|
||||
|
||||
private static final long serialVersionUID = -8577751204851100329L;
|
||||
|
||||
/**
|
||||
* 部门id列表
|
||||
*/
|
||||
private List<Long> orgNodeIds;
|
||||
|
||||
/**
|
||||
* 部门主管标识所在的部门id
|
||||
*/
|
||||
private Long majorOrgNodeId;
|
||||
|
||||
/**
|
||||
* 岗位id列表
|
||||
*/
|
||||
private List<Long> jobIds;
|
||||
|
||||
/**
|
||||
* 角色id列表
|
||||
*/
|
||||
private List<Long> roleIds;
|
||||
|
||||
/**
|
||||
* 直属主管id
|
||||
*/
|
||||
private Long directManagerPersonId;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
package cn.axzo.orgmanax.dto.orguser.event;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author luofu
|
||||
* @version 1.0
|
||||
* @date 2024/11/5
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class OrgUserStatusChangedEvent implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1534318491778930088L;
|
||||
|
||||
/**
|
||||
* 自然人id
|
||||
*/
|
||||
private Long personId;
|
||||
|
||||
/**
|
||||
* 单位id
|
||||
*/
|
||||
private Long ouId;
|
||||
|
||||
/**
|
||||
* 租户id
|
||||
*/
|
||||
private Long workspaceId;
|
||||
|
||||
/**
|
||||
* 顶级部门id
|
||||
*/
|
||||
private Long topNodeId;
|
||||
|
||||
/**
|
||||
* 用户状态
|
||||
* 1) 在职: 5
|
||||
* 2) 离职: 6
|
||||
* 3) 入场中: 0
|
||||
* 4) 在场: 1
|
||||
* 5) 离场: 3
|
||||
* 6) 已删除: 4
|
||||
*/
|
||||
private Integer statusCode;
|
||||
|
||||
/**
|
||||
* 异动时间戳
|
||||
*/
|
||||
private Long transferTimestamp;
|
||||
|
||||
/**
|
||||
* 操作人的id
|
||||
*/
|
||||
private Long operatorId;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
package cn.axzo.orgmanax.dto.project.team.utils;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
public class WorkTeamFormat {
|
||||
|
||||
public static String concatTeamName(String platTeamLeaderName, String categoryStr) {
|
||||
if(ObjectUtil.isEmpty(platTeamLeaderName)){
|
||||
return "";
|
||||
}
|
||||
String teamLearName = String.format("班组长:%s", platTeamLeaderName);
|
||||
|
||||
if(ObjectUtil.isNotEmpty(categoryStr)){
|
||||
return String.format("%s;经营范围:%s", teamLearName, categoryStr);
|
||||
}
|
||||
|
||||
return teamLearName;
|
||||
}
|
||||
|
||||
public static String concatTeamName(String platTeamLeaderName, List<String> categoryList) {
|
||||
return concatTeamName(platTeamLeaderName, String.join("、", categoryList));
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
package cn.axzo.orgmanax.api.project.worker.enums;
|
||||
package cn.axzo.orgmanax.dto.project.worker.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@ -152,6 +152,9 @@ public class SaasCooperateShip implements Serializable {
|
||||
* @param parent
|
||||
*/
|
||||
public void calcPath(SaasCooperateShip parent) {
|
||||
if (this.getParentId() == null) {
|
||||
this.parentId = 0L;
|
||||
}
|
||||
if (Objects.equals(this.getParentId(), 0L)) {
|
||||
this.path = id + ",";
|
||||
}
|
||||
@ -159,6 +162,20 @@ public class SaasCooperateShip implements Serializable {
|
||||
this.path = parent.path + id + ",";
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算节点路径, 需要先将父级path设置好
|
||||
*/
|
||||
public void calcPath() {
|
||||
if (this.getParentId() == null) {
|
||||
this.parentId = 0L;
|
||||
}
|
||||
if (Objects.equals(this.getParentId(), 0L)) {
|
||||
this.path = id + ",";
|
||||
}
|
||||
this.path = this.path + id + ",";
|
||||
}
|
||||
|
||||
|
||||
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
@Getter
|
||||
public enum ParterShipEnum {
|
||||
|
||||
@ -19,6 +19,15 @@ public interface CooperateShipQueryRepository {
|
||||
return oneOpt(req).orElse(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id查询
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
default SaasCooperateShip getById(Long id) {
|
||||
return oneOpt(OneReq.builder().id(id).build()).orElse(null);
|
||||
}
|
||||
|
||||
default Optional<SaasCooperateShip> oneOpt(OneReq req) {
|
||||
req.check();
|
||||
ListReq listReq = BeanUtil.toBean(req, ListReq.class);
|
||||
|
||||
@ -28,7 +28,7 @@ public interface CooperateShipUpsertRepository {
|
||||
* @param node
|
||||
* @return
|
||||
*/
|
||||
SaasCooperateShip update(UpdateReq node);
|
||||
boolean update(UpdateReq node);
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
|
||||
@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWra
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.support.TransactionTemplate;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@ -16,21 +17,34 @@ import org.springframework.stereotype.Service;
|
||||
public class CooperateShipUpsertRepositoryImpl implements CooperateShipUpsertRepository {
|
||||
|
||||
private final SaasCooperateShipDao cooperateShipDao;
|
||||
private final TransactionTemplate transactionTemplate;
|
||||
|
||||
@Override
|
||||
public SaasCooperateShip create(SaasCooperateShip cooperateShip) {
|
||||
cooperateShipDao.save(cooperateShip);
|
||||
return cooperateShipDao.getById(cooperateShip.getId());
|
||||
|
||||
transactionTemplate.executeWithoutResult(r -> {
|
||||
// 保存协同关系
|
||||
cooperateShipDao.save(cooperateShip);
|
||||
// 计算path的值, 需要先保存,才能获取到id
|
||||
cooperateShip.calcPath();
|
||||
|
||||
// 更新path
|
||||
update(CooperateShipUpsertRepository.UpdateReq.builder()
|
||||
.id(cooperateShip.getId())
|
||||
.path(cooperateShip.getPath())
|
||||
.build());
|
||||
});
|
||||
|
||||
return cooperateShip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SaasCooperateShip update(UpdateReq req) {
|
||||
public boolean update(UpdateReq req) {
|
||||
Axssert.checkNonNull(req.getId(), "更新协同部门,协同id不能为空");
|
||||
LambdaUpdateChainWrapper<SaasCooperateShip> wrapper = cooperateShipDao.lambdaUpdate().eq(SaasCooperateShip::getId, req.getId());
|
||||
if (CollUtil.isNotEmpty(req.getSetNullFields())) {
|
||||
req.getSetNullFields().forEach(e -> wrapper.set(e, null));
|
||||
}
|
||||
wrapper.update(req);
|
||||
return cooperateShipDao.getById(req.getId());
|
||||
return wrapper.update(req);
|
||||
}
|
||||
}
|
||||
|
||||
@ -42,6 +42,15 @@ public interface NodeQueryRepository {
|
||||
return page(page).getData().stream().findFirst();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id获取
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
default OrganizationalNode getById(Long id) {
|
||||
return oneOpt(OneReq.builder().id(id).build()).orElse(null);
|
||||
}
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
|
||||
@ -38,6 +38,15 @@ public interface UnitQueryRepository {
|
||||
return page(page).getData().stream().findFirst();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id获取
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
default UnitResp getById(Long id) {
|
||||
return oneOpt(OneReq.builder().id(id).build()).orElse(null);
|
||||
}
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
|
||||
@ -33,6 +33,7 @@ import java.util.stream.Collectors;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.support.TransactionTemplate;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
@ -43,7 +44,7 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
||||
private final CooperateShipQueryRepository cooperateShipQueryRepository;
|
||||
private final CooperateShipUpsertRepository cooperateShipUpsertRepository;
|
||||
private final EventProducer eventProducer;
|
||||
private final WorkspaceGateway workspaceGateway;
|
||||
private final TransactionTemplate transactionTemplate;
|
||||
|
||||
/**
|
||||
* 顶级协同关系类型
|
||||
@ -142,16 +143,15 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
||||
@Override
|
||||
public SaasCooperateShip create(CooperateShipCreator creator) {
|
||||
|
||||
// 如果parentId不为空, 查询父级协同节点
|
||||
// 如果parentId不为空, 初始化父级协同节点
|
||||
SaasCooperateShip parentCooperateShip = null;
|
||||
if (Objects.nonNull(creator.getParentId()) && creator.getParentId() > 0) {
|
||||
parentCooperateShip = cooperateShipQueryRepository
|
||||
.oneOpt(CooperateShipQueryRepository.OneReq.builder().id(creator.getParentId()).build())
|
||||
.orElseThrow(() -> BizResultCode.ENTITY_NOT_FOUND.toException("父级协同部门不存在{}", creator.getOrganizationalNodeId()));
|
||||
parentCooperateShip = cooperateShipQueryRepository.getById(creator.getParentId());
|
||||
Axssert.check(parentCooperateShip != null, BizResultCode.ENTITY_NOT_FOUND, "父级协同部门不存在{}", creator.getOrganizationalNodeId());
|
||||
Axssert.check(Objects.equals(parentCooperateShip.getWorkspaceId(), creator.getWorkspaceId()), BizResultCode.INVALID_PARAM, "父级协同部门和要加入部门不是同一个工作台");
|
||||
}
|
||||
|
||||
// 创建协同关系
|
||||
// 构建新的协同关系
|
||||
SaasCooperateShip cooperateShip = SaasCooperateShip.builder()
|
||||
.parentId(creator.getParentId())
|
||||
.workspaceId(creator.getWorkspaceId())
|
||||
@ -165,17 +165,12 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
||||
.organizationalNodeId(creator.getOrganizationalNodeId())
|
||||
.partnerShip(creator.getPartnerShip())
|
||||
.createBy(creator.getOperatorId())
|
||||
.path(Optional.ofNullable(parentCooperateShip).map(SaasCooperateShip::getPath).orElse(""))
|
||||
.build();
|
||||
|
||||
// 保存协同关系
|
||||
SaasCooperateShip savedCooperateShip = cooperateShipUpsertRepository.create(cooperateShip);
|
||||
|
||||
|
||||
// 更新协同关系路径
|
||||
savedCooperateShip.calcPath(parentCooperateShip);
|
||||
SaasCooperateShip saved = cooperateShipUpsertRepository.update(CooperateShipUpsertRepository.UpdateReq.builder()
|
||||
.id(savedCooperateShip.getId())
|
||||
.path(savedCooperateShip.getPath())
|
||||
.build());
|
||||
|
||||
// 发送领域事件
|
||||
eventProducer.send(Event.builder()
|
||||
.eventCode(CooperateShipEventType.COOPERATE_SHIP_UPSERTED.getEventCode())
|
||||
@ -183,14 +178,14 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
||||
.operatorType(getClass().getSimpleName())
|
||||
.targetType("cooperate_ship_id")
|
||||
.targetId(cooperateShip.getId() + "")
|
||||
.shardingKey(saved.getOrganizationalNodeId() + "")
|
||||
.shardingKey(savedCooperateShip.getOrganizationalNodeId() + "")
|
||||
.data(CoopeateShipUpsertedPayload.builder()
|
||||
.newValue(BeanUtil.copyProperties(saved, OrgCooperateShipDTO.class))
|
||||
.newValue(BeanUtil.copyProperties(savedCooperateShip, OrgCooperateShipDTO.class))
|
||||
.oldValue(null)
|
||||
.build())
|
||||
.build());
|
||||
// 返回结果
|
||||
return cooperateShipQueryRepository.one(CooperateShipQueryRepository.OneReq.builder().id(saved.getId()).build());
|
||||
return cooperateShipQueryRepository.one(CooperateShipQueryRepository.OneReq.builder().id(savedCooperateShip.getId()).build());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -41,23 +41,10 @@ import java.util.*;
|
||||
@RequiredArgsConstructor
|
||||
public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
|
||||
private static final Set<Integer> ALLOWED_TOP_COOPERATE_TYPES = ImmutableSet.of(
|
||||
CooperateShipTypeEnum.PROJ_PRIMARY_CONTRACTING_UNIT.getCode(),
|
||||
CooperateShipTypeEnum.PROJ_CONSTRUCTION_UNIT.getCode(),
|
||||
CooperateShipTypeEnum.PROJ_SUPERVISION_UNIT.getCode(),
|
||||
CooperateShipTypeEnum.OMS.getCode(),
|
||||
CooperateShipTypeEnum.ENT_COMMON.getCode(),
|
||||
CooperateShipTypeEnum.SURVEY_UNIT.getCode(),
|
||||
CooperateShipTypeEnum.DESIGN_UNIT.getCode(),
|
||||
CooperateShipTypeEnum.OTHER.getCode()
|
||||
);
|
||||
|
||||
private final CooperateShipQueryRepository cooperateShipQueryRepository;
|
||||
private final CooperateShipUpsertRepository cooperateShipUpsertRepository;
|
||||
private final NodeQueryRepository nodeQueryRepository;
|
||||
private final UnitQueryRepository unitQueryRepository;
|
||||
private final WorkspaceGateway workspaceGateway;
|
||||
private final EventProducer eventProducer;
|
||||
private final CooperateShipFoundationService cooperateShipFoundationService;
|
||||
|
||||
@Transactional
|
||||
@ -65,8 +52,8 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
public SaasCooperateShip create(CreateOrgCooperateShipReq req) {
|
||||
|
||||
// 获取组织节点
|
||||
OrganizationalNode node = nodeQueryRepository.oneOpt(NodeQueryRepository.OneReq.builder().id(req.getOrganizationalNodeId()).build())
|
||||
.orElseThrow(() -> BizResultCode.ENTITY_NOT_FOUND.toException("部门不存在{}", req.getOrganizationalNodeId()));
|
||||
OrganizationalNode node = nodeQueryRepository.getById(req.getOrganizationalNodeId());
|
||||
Axssert.check(node != null, BizResultCode.ENTITY_NOT_FOUND, "部门不存在", req.getOrganizationalNodeId());
|
||||
Axssert.check(node.isTopNode(), BizResultCode.INVALID_PARAM, "只有顶级节点才能添加协同关系");
|
||||
|
||||
// 获取工作台信息
|
||||
@ -74,9 +61,8 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
Axssert.checkNonNull(workspace, "工作台不存在{}", req.getWorkspaceId());
|
||||
|
||||
// 获取组织单位
|
||||
UnitQueryRepository.UnitResp unit = unitQueryRepository.oneOpt(UnitQueryRepository.OneReq.builder()
|
||||
.id(node.getId())
|
||||
.build()).orElseThrow(() -> BizResultCode.ENTITY_NOT_FOUND.toException("单位不存在{}", node.getOrganizationalUnitId()));
|
||||
UnitQueryRepository.UnitResp unit = unitQueryRepository.getById(node.getOrganizationalUnitId());
|
||||
Axssert.check(unit != null, BizResultCode.ENTITY_NOT_FOUND, "单位不存在", node.getOrganizationalUnitId());
|
||||
|
||||
// 创建协同关系
|
||||
return cooperateShipFoundationService.create(CooperateShipCreator.builder()
|
||||
|
||||
@ -56,10 +56,7 @@ public class OrgProjectGroupController implements OrgProjectGroupApi {
|
||||
|
||||
@Override
|
||||
public ApiResult<ProjectGroupListResp> getNoLeaderGroupList(Long workspaceId, Long platTeamId, Boolean isReturnWorker) {
|
||||
|
||||
|
||||
orgProjectGroupService.getNoLeaderGroupList(workspaceId, platTeamId, isReturnWorker);
|
||||
return null;
|
||||
return ApiResult.success(orgProjectGroupService.getNoLeaderGroupList(workspaceId, platTeamId, isReturnWorker));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,23 +1,36 @@
|
||||
package cn.axzo.orgmanax.server.project.group.service.impl;
|
||||
|
||||
import cn.axzo.orgmanax.api.project.group.enums.ProjectGroupTypeEnum;
|
||||
import cn.axzo.orgmanax.dto.project.worker.enums.ProjectWorkerStatusEnum;
|
||||
import cn.axzo.orgmanax.dto.common.IdentityType;
|
||||
import cn.axzo.orgmanax.dto.common.PersonProfileBriefDTO;
|
||||
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.nodeuser.dto.NodeUserDTO;
|
||||
import cn.axzo.orgmanax.dto.nodeuser.dto.NodeUserProfile;
|
||||
import cn.axzo.orgmanax.dto.nodeuser.enums.ProjectGroupWorkerStatusEnum;
|
||||
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
|
||||
import cn.axzo.orgmanax.dto.project.group.enums.ProjectGroupStatusEnum;
|
||||
import cn.axzo.orgmanax.dto.project.group.resp.NoleaderProjectGroupWorkerRes;
|
||||
import cn.axzo.orgmanax.dto.project.group.resp.ProjectGroupListResp;
|
||||
import cn.axzo.orgmanax.dto.project.group.resp.ProjectWorkerSkillTagRes;
|
||||
import cn.axzo.orgmanax.infra.dao.workerprofession.repository.WorkerProfessionSkillTagRepository;
|
||||
import cn.axzo.orgmanax.server.node.service.NodeService;
|
||||
import cn.axzo.orgmanax.server.nodeuser.service.NodeUserService;
|
||||
import cn.axzo.orgmanax.server.project.group.service.OrgProjectGroupService;
|
||||
import cn.axzo.orgmanax.server.workerprofession.service.OrgProjectWorkerProfessionService;
|
||||
import cn.axzo.orgmanax.server.workerprofession.service.OrgProjectWorkerProfessionSkillService;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
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.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -30,15 +43,15 @@ import java.util.stream.Collectors;
|
||||
public class OrgProjectGroupServiceImpl implements OrgProjectGroupService {
|
||||
|
||||
private NodeService nodeService;
|
||||
private NodeUserService nodeUserService;
|
||||
private OrgProjectWorkerProfessionSkillService orgProjectWorkerProfessionSkillService;
|
||||
private OrgProjectWorkerProfessionService orgProjectWorkerProfessionService;
|
||||
|
||||
|
||||
@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))
|
||||
@ -49,37 +62,91 @@ public class OrgProjectGroupServiceImpl implements OrgProjectGroupService {
|
||||
.ownerProjectWorkerIds(Arrays.asList(0L))
|
||||
.build());
|
||||
|
||||
ProjectGroupListResp res = new ProjectGroupListResp();
|
||||
if (ObjectUtil.isEmpty(orgNodeDTOS)) {
|
||||
Collections.emptyList();
|
||||
res.setProjectGroupList(new ArrayList<>());
|
||||
return res;
|
||||
}
|
||||
|
||||
convert(orgNodeDTOS, workspaceId);
|
||||
List<ProjectGroupListResp.ProjectGroupInfo> projectGroupInfos = convert(orgNodeDTOS, workspaceId);
|
||||
res.setProjectGroupList(projectGroupInfos);
|
||||
|
||||
//1.默认不返回工人列表
|
||||
if (isReturnWorker == null) {
|
||||
isReturnWorker = false;
|
||||
}
|
||||
|
||||
if (isReturnWorker) {
|
||||
for (ProjectGroupListResp.ProjectGroupInfo projectGroupInfo : projectGroupInfos) {
|
||||
List<NodeUserDTO> nodeUserDTOS = nodeUserService.list(ListNodeUserReq.builder()
|
||||
.projectGroupWorkerStatus(ProjectGroupWorkerStatusEnum.VALID.getValue())
|
||||
.projectWorkerStatuses(Arrays.asList(ProjectWorkerStatusEnum.ACTIVE.value))
|
||||
.projectGroupId(projectGroupInfo.getId())
|
||||
.identityType(IdentityType.WORKER.getCode())
|
||||
.filterIncludeNodeTypes(Arrays.asList(NodeTypeEnum.PROJECT_GROUP.getValue()))
|
||||
.needs(ListNodeUserReq.Needs.builder().personProfile(true).build())
|
||||
.build());
|
||||
if (ObjectUtil.isEmpty(nodeUserDTOS)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//TODO
|
||||
// List<Long> projectWorkerIdList = nodeUserDTOS.stream().map(nodeUserDTO -> NodeUserProfile.resolveProjectWorkerId(nodeUserDTO)).collect(Collectors.toList());
|
||||
// //获取工种
|
||||
// orgProjectWorkerProfessionService.listValid()
|
||||
//
|
||||
// //获取技能标签
|
||||
// List<WorkerProfessionSkillTagRepository.WorkerProfessionSkillTagResp> skillTagResps = orgProjectWorkerProfessionSkillService.list(WorkerProfessionSkillTagRepository.PageReq.builder()
|
||||
// .workspaceId(projectGroupInfo.getWorkspaceId())
|
||||
// .projectWorkerIds(projectWorkerIdList)
|
||||
// .build());
|
||||
// Map<Long, List<WorkerProfessionSkillTagRepository.WorkerProfessionSkillTagResp>> workerSkillTagMap =
|
||||
// skillTagResps.stream().collect(Collectors.groupingBy(WorkerProfessionSkillTagRepository.WorkerProfessionSkillTagResp::getProjectWorkerId));
|
||||
// List<NoleaderProjectGroupWorkerRes> groupWorkerlist = new ArrayList<>();
|
||||
// for (NodeUserDTO nodeUserDTO : nodeUserDTOS) {
|
||||
// NoleaderProjectGroupWorkerRes workerRes = new NoleaderProjectGroupWorkerRes();
|
||||
//
|
||||
// PersonProfileBriefDTO personProfile = nodeUserDTO.getPersonProfile();
|
||||
// workerRes.setFaceUrl(personProfile.getAvatarUrl());
|
||||
// workerRes.setPhone(personProfile.getPhone());
|
||||
// workerRes.setName(personProfile.getRealName());
|
||||
// workerRes.setIdentityId(nodeUserDTO.getIdentityId());
|
||||
// workerRes.setProjectWorkerId(NodeUserProfile.resolveProjectWorkerId(nodeUserDTO));
|
||||
// workerRes.setProfessionList(BeanConvertUtils.copyList(oneWideByParam.getProfessionList(),
|
||||
// NoleaderProjectGroupWorkerRes.ProjectGroupWorkerProfession.class));
|
||||
// workerRes.setProfessionCategory(oneWideByParam.getWorkerProfessionCategory());
|
||||
// List<LabourProjectWorkerSkillTag> skillTagList = workerSkillTagMap
|
||||
// .getOrDefault(worker.getProjectWorkerId(), null);
|
||||
// log.info("工人{}技能标签:{}", oneWideByParam.getWorkerName(), JSON.toJSONString(skillTagList));
|
||||
// if (CollectionUtil.isNotEmpty(skillTagList)) {
|
||||
// workerRes.setSkillTagList(BeanConvertUtils.copyList(skillTagList,
|
||||
// ProjectWorkerSkillTagRes.class, (s, t) -> {
|
||||
// t.setId(s.getSkillTagId());
|
||||
// t.setName(s.getSkillTagName());
|
||||
// }));
|
||||
// }
|
||||
// groupWorkerlist.add(workerRes);
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
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(NodeProfile.resolve(orgNodeDTO, NodeProfile.NodeProfileResolveTypeEnum.PROJECT_GROUP_OWNER_PROJECT_WORKER_ID));
|
||||
projectGroupInfo.setGroupType(NodeProfile.resolve(orgNodeDTO, NodeProfile.NodeProfileResolveTypeEnum.PROJECT_GROUP_TYPE));
|
||||
projectGroupInfo.setCreateAt(NodeProfile.resolve(orgNodeDTO, NodeProfile.NodeProfileResolveTypeEnum.PROJECT_GROUP_CREATE_AT));
|
||||
projectGroupInfo.setUpdateAt(NodeProfile.resolve(orgNodeDTO, NodeProfile.NodeProfileResolveTypeEnum.PROJECT_GROUP_UPDATE_AT));
|
||||
return projectGroupInfo;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@ package cn.axzo.orgmanax.server.project.worker.service.impl;
|
||||
|
||||
import cn.axzo.orgmanax.api.invite.enums.WorkerInviteStatusEnum;
|
||||
import cn.axzo.orgmanax.api.project.group.enums.ProjectGroupTypeEnum;
|
||||
import cn.axzo.orgmanax.api.project.worker.enums.ProjectWorkerStatusEnum;
|
||||
import cn.axzo.orgmanax.dto.project.worker.enums.ProjectWorkerStatusEnum;
|
||||
import cn.axzo.orgmanax.dto.common.IdentityType;
|
||||
import cn.axzo.orgmanax.dto.node.dto.NodeProfile;
|
||||
import cn.axzo.orgmanax.dto.node.dto.OrgNodeDTO;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package cn.axzo.orgmanax.server.workerprofession.service.impl;
|
||||
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.orgmanax.api.project.worker.enums.ProjectWorkerStatusEnum;
|
||||
import cn.axzo.orgmanax.dto.project.worker.enums.ProjectWorkerStatusEnum;
|
||||
import cn.axzo.orgmanax.dto.common.IdentityType;
|
||||
import cn.axzo.orgmanax.dto.common.util.NumberUtil;
|
||||
import cn.axzo.orgmanax.dto.common.util.TreeUtil;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user