Merge branch 'refs/heads/feature/REQ-2699' into dev

This commit is contained in:
yanglin 2024-08-22 16:05:54 +08:00
commit 303ee09b1a
5 changed files with 62 additions and 7 deletions

View File

@ -15,6 +15,7 @@ import cn.axzo.msg.center.service.pending.client.PendingMessageClient;
import cn.axzo.msg.center.service.pending.request.CompletePendingBySubCodeRequest;
import cn.axzo.msg.center.service.pending.request.CompletePendingMessageByIdRequest;
import cn.axzo.msg.center.service.pending.request.CompletePendingMessageRequest;
import cn.axzo.msg.center.service.pending.request.GetPendingTodosRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageByBizCodeRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageCountUncompletedRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageFixedTemplatePageRequest;
@ -111,6 +112,12 @@ public class PendingMessageNewController implements PendingMessageClient {
}
}
@Override
public CommonResponse<List<PendingMessageResponse>> getPendingTodos(GetPendingTodosRequest request) {
log.info("getPendingTodos, request={}", JSON.toJSONString(request));
return CommonResponse.success(todoRangeQueryService.getPendingTodos(request));
}
@Override
public CommonResponse<PersonTodoToBeDoneStatResponse> personTodoToBeDoneStat(PersonTodoToBeDoneStatRequest request) {
log.info("personTodoToBeDoneStat, request={}", JSON.toJSONString(request));

View File

@ -30,6 +30,7 @@ import cn.axzo.msg.center.service.enums.BizCategoryEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
import cn.axzo.msg.center.service.enums.TodoType;
import cn.axzo.msg.center.service.pending.request.AnalysisInfo;
import cn.axzo.msg.center.service.pending.request.GetPendingTodosRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest.CopiedToMeParam;
import cn.axzo.msg.center.service.pending.request.PersonTodoToBeDoneStatRequest;
@ -167,7 +168,6 @@ public class TodoRangeQueryService {
.eq(request.getMsgState() != null, Todo::getState, request.getMsgState())
.eq(request.getWorkspaceId() != null, Todo::getOrgId, request.getWorkspaceId())
.last(nested.isEmptyOfWhere(), "1 = 1"))
.eq(CollectionUtils.isNotEmpty(request.getTemplateCodes()), Todo::getTemplateCode, request.getTemplateCodes())
// 这个条件放在最后, 因为templateCodes一般比较多
// 如果放到前面, 格式化后会不方便查看其它的查询条件
// 用于查询的模版会通过一个单独的字段打印出来, 用于排查问题
@ -370,6 +370,17 @@ public class TodoRangeQueryService {
.in(CollectionUtils.isNotEmpty(ouIds), Todo::getOuId, ouIds);
}
public List<PendingMessageResponse> getPendingTodos(GetPendingTodosRequest request) {
List<Todo> todos = todoDao.list(query(Todo.class)
.eq(Todo::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.in(CollectionUtils.isNotEmpty(request.getPersonIds()), Todo::getExecutorPersonId, request.getPersonIds())
.in(CollectionUtils.isNotEmpty(request.getOuIds()), Todo::getOuId, request.getOuIds())
.in(CollectionUtils.isNotEmpty(request.getTemplateCodes()), Todo::getTemplateCode, request.getTemplateCodes())
.last("LIMIT " + request.determineLimit()));
List<PendingRecordAdapter> message = todoRespBuilder.buildTodoAdapters(todos);
return todoRespBuilder.convertAdapter2MessageResponse(message, request.getTerminalType());
}
@RequiredArgsConstructor
private static class OuInfo {
final Long ouId;

View File

@ -6,6 +6,7 @@ import cn.axzo.msg.center.service.enums.TodoQueryType;
import cn.axzo.msg.center.service.pending.request.CompletePendingBySubCodeRequest;
import cn.axzo.msg.center.service.pending.request.CompletePendingMessageByIdRequest;
import cn.axzo.msg.center.service.pending.request.CompletePendingMessageRequest;
import cn.axzo.msg.center.service.pending.request.GetPendingTodosRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageByBizCodeRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageCountUncompletedRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageFixedTemplatePageRequest;
@ -106,6 +107,9 @@ public interface PendingMessageClient {
@PostMapping(value = "/pending-message/record/page", produces = {MediaType.APPLICATION_JSON_VALUE})
CommonResponse<AnalysisPage<PendingMessageResponse>> pageQuery(@RequestBody @Valid PendingMessagePageRequest request);
@PostMapping(value = "/pending-message/record/getPendingTodos", produces = {MediaType.APPLICATION_JSON_VALUE})
CommonResponse<List<PendingMessageResponse>> getPendingTodos(@RequestBody @Valid GetPendingTodosRequest request);
/**
* 统计个人未完成的待办数量
*/

View File

@ -0,0 +1,39 @@
package cn.axzo.msg.center.service.pending.request;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import lombok.Getter;
import lombok.Setter;
import java.util.Set;
/**
* @author yanglin
*/
@Setter
@Getter
public class GetPendingTodosRequest {
/**
* 待办执行人id
*/
private Set<Long> personIds;
/**
* 待办单位id
*/
private Set<Long> ouIds;
/**
* 模版id
*/
private Set<String> templateCodes;
/**
* 最大查询数据. 最多不超过 5000
*/
private int limit = 10;
private TerminalTypeEnum terminalType;
public int determineLimit() {
return Math.max(Math.min(limit, 5000), 10);
}
}

View File

@ -22,7 +22,6 @@ import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
/**
* @description
@ -148,11 +147,6 @@ public class PendingMessagePageRequest extends PageRequest implements Serializab
*/
private Boolean queryTemplateTerminals;
/**
* 指定模版编码
*/
private Set<String> templateCodes;
// !! 用于排查问题
private String analysisToken;
private AnalysisInfo a = new AnalysisInfo();