REQ-2010: 通过ouId查询所有的平台班组ID, 然后把平台班组id当成ouId来查询待办, 兼容老数据问题

This commit is contained in:
yanglin 2024-02-02 16:27:22 +08:00
parent 69703c4c4b
commit de32a0fdf6
2 changed files with 33 additions and 3 deletions

View File

@ -21,6 +21,11 @@
</properties>
<dependencies>
<dependency>
<groupId>cn.axzo.maokai</groupId>
<artifactId>maokai-api</artifactId>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>

View File

@ -7,10 +7,13 @@ import cn.axzo.apollo.workspace.api.workspace.req.OrganizationalNodePractitioner
import cn.axzo.apollo.workspace.api.workspace.res.OrganizationalNodePractitionerWideDto;
import cn.axzo.apollo.workspace.api.workspace.res.SimpleWorkspaceRes;
import cn.axzo.framework.core.util.MapUtil;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.im.center.api.feign.MessageApi;
import cn.axzo.im.center.api.vo.req.CustomMessageInfo;
import cn.axzo.im.center.common.enums.AppTypeEnum;
import cn.axzo.im.center.common.enums.BizTypeEnum;
import cn.axzo.maokai.api.client.OrganizationalTeamOuRelationApi;
import cn.axzo.maokai.api.vo.response.OrganizationalTeamOuRelationResp;
import cn.axzo.msg.center.api.enums.MsgRecordTerminalTypeEnum;
import cn.axzo.msg.center.api.enums.MsgStateEnum;
import cn.axzo.msg.center.api.response.MessageDetailRes;
@ -126,6 +129,7 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
private final OrganizationalNodePractitionerWideApi organizationalNodePractitionerWideApi;
private final PendingCalendarCodeConfig calendarCodeConfig;
private final MessageApi messageApi;
private final OrganizationalTeamOuRelationApi organizationalTeamOuRelationApi;
@Value("${msg.center.pending.hide-seconds:60}")
private int pendingDefaultHideSeconds;
@ -174,11 +178,12 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
PersonDTO operator = PersonDTO.from(request.getPersonId(), request.getIdentityId(), request.getIdentityType());
PendingMessageStateEnum pendingMessageState = fetchPendingMessageState(request.getRoleCategory(), request.getMsgState());
BizFinalStateEnum bizFinalState = fetchBizFinalState(request.getRoleCategory(), request.getBizFinalState());
List<Long> executorOuIds = determineExecutorOuIds(request);
// 开始构建分页查询条件
LambdaQueryChainWrapper<PendingMessageRecord> query = pendingMessageRecordDao.lambdaQuery()
// REQ-1507期发起人不通过ouId过滤
.eq(!PendingMessageRoleCategoryEnum.PROMOTER.equals(request.getRoleCategory())
&& Objects.nonNull(request.getOuId()), PendingMessageRecord::getOuId, request.getOuId())
// REQ-1507期发起人不通过ouId过滤, 只有执行人对ouId进行过滤
.eq(request.getRoleCategory() == PendingMessageRoleCategoryEnum.EXECUTOR && !executorOuIds.isEmpty(),
PendingMessageRecord::getOuId, request.getOuId())
.eq(Objects.nonNull(pendingMessageState), PendingMessageRecord::getState, pendingMessageState)
.eq(Objects.nonNull(bizFinalState), PendingMessageRecord::getBizFinalState, bizFinalState)
.eq(PendingMessageRecord::getIsDelete, IsDeletedEnum.NO.getCode())
@ -226,6 +231,26 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
return Page.toPage(request.getPage(), request.getPageSize(), page.getTotal(), responseRecords);
}
private List<Long> determineExecutorOuIds(PendingMessagePageRequest request) {
if (request.getRoleCategory() == PendingMessageRoleCategoryEnum.PROMOTER)
return Collections.emptyList();
if (request.getOuId() == null)
return Collections.emptyList();
List<Long> ouIds = new ArrayList<>();
ouIds.add(request.getOuId());
if (request.getOuId() != 0) {
ApiResult<List<OrganizationalTeamOuRelationResp>> resp =
organizationalTeamOuRelationApi.teamOuRelationList(request.getOuId());
List<OrganizationalTeamOuRelationResp> relations =
BizAssertions.assertResponse(resp, "获取平台班组id失败");
relations.stream()
.map(OrganizationalTeamOuRelationResp::getNodeId)
.distinct()
.forEach(ouIds::add);
}
return ouIds;
}
@Override
public List<PendingMessageResponse> getPendingMessageByAppWorker(PendingMessageFixedTemplatePageRequest request) {
List<PendingMessageResponse> result = new ArrayList<>();