feat:(REQ-3201) 待办状态同步卡片,异常日志添加

This commit is contained in:
xudawei 2024-12-17 17:28:35 +08:00
parent c79ea6945d
commit fcc0176955
3 changed files with 24 additions and 15 deletions

View File

@ -12,16 +12,14 @@ import com.alibaba.fastjson.JSON;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.util.Objects; import java.util.Objects;
/** /**
* @author xudawei@axzo.cn * @author xudawei@axzo.cn
* @date 2024/11/07 * @date 2024/11/07
* @desc 群聊创建MQ消费 * @desc 卡片预设MQ消费
*/ */
@Slf4j @Slf4j
@Component @Component
@ -67,7 +65,7 @@ public class CardChangeStateSyncTodoEventHandler implements EventHandler, Initia
if (!CommonConstants.TODO_SYSN_CARD_APP_CODE.equalsIgnoreCase(payload.getCardInfo().getAppCode())) { if (!CommonConstants.TODO_SYSN_CARD_APP_CODE.equalsIgnoreCase(payload.getCardInfo().getAppCode())) {
return; return;
} }
Long operatorId = StringUtils.hasText(event.getOperatorId()) ? Long.valueOf(event.getOperatorId()) : 0L; Long operatorId = Objects.nonNull(payload.getOperatorId()) ? payload.getOperatorId() : 0L;
todoWithCardWrapper.fireTodoWhenPresetButtonPressedByCard(todoManager, payload.getPresetButtonType(), payload.getCardInfo(), operatorId); todoWithCardWrapper.fireTodoWhenPresetButtonPressedByCard(todoManager, payload.getPresetButtonType(), payload.getCardInfo(), operatorId);
} }

View File

@ -9,7 +9,6 @@ import cn.axzo.msg.center.message.service.todo.manage.TodoLogger;
import cn.axzo.msg.center.message.service.todo.manage.TodoManager; import cn.axzo.msg.center.message.service.todo.manage.TodoManager;
import cn.axzo.msg.center.message.service.todo.manage.TodoRequestContext; import cn.axzo.msg.center.message.service.todo.manage.TodoRequestContext;
import cn.axzo.msg.center.notices.common.constans.CommonConstants; import cn.axzo.msg.center.notices.common.constans.CommonConstants;
import cn.axzo.msg.center.notices.common.constans.CommonConstants;
import cn.axzo.msg.center.service.dto.PeerPerson; import cn.axzo.msg.center.service.dto.PeerPerson;
import cn.axzo.msg.center.service.dto.PersonDTO; import cn.axzo.msg.center.service.dto.PersonDTO;
import cn.axzo.msg.center.service.enums.CardBizState; import cn.axzo.msg.center.service.enums.CardBizState;
@ -23,12 +22,14 @@ import cn.axzo.msg.center.service.pending.request.PresetButtonPressedRequest;
import cn.axzo.msg.center.service.util.IdBuilder; import cn.axzo.msg.center.service.util.IdBuilder;
import com.alibaba.excel.util.StringUtils; import com.alibaba.excel.util.StringUtils;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.google.common.base.Throwables;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
@ -64,9 +65,12 @@ public class TodoWithCardWrapper {
return; return;
} }
log.info("TodoWithCardWrapper#fireTodoWhenPresetButtonPressedByCard start,presetButtonType:{},cardInfo:{}", presetButtonType, JSON.toJSONString(cardInfo)); log.info("TodoWithCardWrapper#fireTodoWhenPresetButtonPressedByCard start,presetButtonType:{},cardInfo:{}", presetButtonType, JSON.toJSONString(cardInfo));
TodoRequestContext ctx = TodoRequestContext.create("cardPresetTodo", cardInfo);
ctx.addLogContent("presetButtonType", presetButtonType);
ctx.addLogContent("operatorId", operatorId);
//1 查询待办(Todo对象)根据templateCode/bizCode/subBizCode/receiverPresonId/receiverOuId/receiverWorkspaceId 理论上只能查询一条[待办]记录
List<Todo> todoList = todoDao.findByCondition(cardInfo.getTemplateCode(), cardInfo.getBizCode(), cardInfo.getSubBizCode(), cardInfo.getReceiverPersonId(), cardInfo.getReceiverOuId(), cardInfo.getReceiverWorkspaceId());
try { try {
//1 查询待办(Todo对象)根据templateCode/bizCode/subBizCode/receiverPresonId/receiverOuId/receiverWorkspaceId 理论上只能查询一条[待办]记录
List<Todo> todoList = todoDao.findByCondition(cardInfo.getTemplateCode(), cardInfo.getBizCode(), cardInfo.getSubBizCode(), cardInfo.getReceiverPersonId(), cardInfo.getReceiverOuId(), cardInfo.getReceiverWorkspaceId());
if (CollectionUtils.isEmpty(todoList)) { if (CollectionUtils.isEmpty(todoList)) {
return; return;
} }
@ -75,12 +79,11 @@ public class TodoWithCardWrapper {
PresetButtonPressedRequest presetButtonPressedRequest = this.buildPresetButtonPressedRequest(todo.getIdentityCode(), presetButtonType, operatorId); PresetButtonPressedRequest presetButtonPressedRequest = this.buildPresetButtonPressedRequest(todo.getIdentityCode(), presetButtonType, operatorId);
todoManager.firePresetButtonPressed( presetButtonPressedRequest, false); todoManager.firePresetButtonPressed( presetButtonPressedRequest, false);
} }
TodoRequestContext ctx = TodoRequestContext.create("cardPresetTodo", cardInfo);
ctx.addLogContent("presetButtonType", presetButtonType);
ctx.addLogContent("operatorId", operatorId);
todoLogger.logTodosUpdated(ctx, todoList); todoLogger.logTodosUpdated(ctx, todoList);
} catch (Exception e) { } catch (Exception e) {
log.warn("TodoWithCardWrapper#fireTodoWhenPresetButtonPressedByCard exception,presetButtonType:{},cardInfo:{}", presetButtonType, JSON.toJSONString(cardInfo),e); log.warn("TodoWithCardWrapper#fireTodoWhenPresetButtonPressedByCard exception,presetButtonType:{},cardInfo:{}", presetButtonType, JSON.toJSONString(cardInfo),e);
ctx.addLogContent("exception", Throwables.getStackTraceAsString(e));
todoLogger.logTodosUpdated(ctx, todoList);
} }
} }
@ -105,13 +108,17 @@ public class TodoWithCardWrapper {
return; return;
} }
log.info("TodoWithCardWrapper#fireCardWhenPresetButtonPressedByTodo start,request:{},todo:{}", JSON.toJSONString(request), JSON.toJSONString(todo)); log.info("TodoWithCardWrapper#fireCardWhenPresetButtonPressedByTodo start,request:{},todo:{}", JSON.toJSONString(request), JSON.toJSONString(todo));
TodoRequestContext ctx = TodoRequestContext.create("todoPresetCard", request);
try { try {
//1 构建对象 //1 构建对象
CardUpdatePresetButtonRequest cardRequest = this.buildCardUpdatePresetButtonRequest(request, todo); CardUpdatePresetButtonRequest cardRequest = this.buildCardUpdatePresetButtonRequest(request, todo);
//2 同步卡片 //2 同步卡片
cardManager.firePresetButtonPressed(cardRequest); cardManager.firePresetButtonPressed(cardRequest);
todoLogger.logTodosUpdated(ctx, Collections.singletonList(todo));
} catch (Exception e) { } catch (Exception e) {
log.warn("TodoWithCardWrapper#fireCardWhenPresetButtonPressedByTodo exception,request:{},todo:{}", JSON.toJSONString(request), JSON.toJSONString(todo),e); log.warn("TodoWithCardWrapper#fireCardWhenPresetButtonPressedByTodo exception,request:{},todo:{}", JSON.toJSONString(request), JSON.toJSONString(todo),e);
ctx.addLogContent("exception", Throwables.getStackTraceAsString(e));
todoLogger.logTodosUpdated(ctx, Collections.singletonList(todo));
} }
} }
@ -139,15 +146,17 @@ public class TodoWithCardWrapper {
*/ */
public void send(PendingMessagePushParam param,List<Todo> todos) { public void send(PendingMessagePushParam param,List<Todo> todos) {
log.info("TodoWithCardWrapper#send start,param:{}", JSON.toJSONString(param)); log.info("TodoWithCardWrapper#send start,param:{}", JSON.toJSONString(param));
TodoRequestContext ctx = TodoRequestContext.create("todoSyncCardSend", param);
try { try {
//1 构建对象 //1 构建对象
CardSendRequest cardSendRequest = this.buildCardSendRequest(param); CardSendRequest cardSendRequest = this.buildCardSendRequest(param);
//2 发送 //2 发送
cardManager.send(cardSendRequest); cardManager.send(cardSendRequest);
TodoRequestContext ctx = TodoRequestContext.create("todoSyncCardSend", param);
todoLogger.logTodosUpdated(ctx, todos); todoLogger.logTodosUpdated(ctx, todos);
} catch (Exception e) { } catch (Exception e) {
log.warn("TodoWithCardWrapper#send,param:{}", JSON.toJSONString(param), e); log.warn("TodoWithCardWrapper#send,param:{}", JSON.toJSONString(param), e);
ctx.addLogContent("exception", Throwables.getStackTraceAsString(e));
todoLogger.logTodosUpdated(ctx, todos);
} }
} }
@ -188,6 +197,9 @@ public class TodoWithCardWrapper {
if (CollectionUtils.isEmpty(todoList)) { if (CollectionUtils.isEmpty(todoList)) {
return; return;
} }
TodoRequestContext ctx = TodoRequestContext.create("todoSyncCardState", todoList);
ctx.addLogContent("bizState", bizState);
ctx.addLogContent("cardState", cardState);
try { try {
for (Todo todo : todoList) { for (Todo todo : todoList) {
//1 构建对象 //1 构建对象
@ -195,12 +207,11 @@ public class TodoWithCardWrapper {
//2 更新状态 //2 更新状态
cardManager.updateState(updateStateRequest); cardManager.updateState(updateStateRequest);
} }
TodoRequestContext ctx = TodoRequestContext.create("todoSyncCardState", todoList);
ctx.addLogContent("bizState", bizState);
ctx.addLogContent("cardState", cardState);
todoLogger.logTodosUpdated(ctx, todoList); todoLogger.logTodosUpdated(ctx, todoList);
} catch (Exception e) { } catch (Exception e) {
log.warn("TodoWithCardWrapper#cardCompleteState,todoList:{}", JSON.toJSONString(todoList), e); log.warn("TodoWithCardWrapper#cardCompleteState,todoList:{}", JSON.toJSONString(todoList), e);
ctx.addLogContent("exception", Throwables.getStackTraceAsString(e));
todoLogger.logTodosUpdated(ctx, todoList);
} }
} }

View File

@ -135,7 +135,7 @@ public class UpdateTemplateV3ChannelStyleVersionJob extends IJobHandler {
.eq(MessageTemplateV3::getIsDelete, TableIsDeleteEnum.NORMAL.value) .eq(MessageTemplateV3::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.gt(MessageTemplateV3::getId, maxId.get()) .gt(MessageTemplateV3::getId, maxId.get())
.orderByAsc(MessageTemplateV3::getId) .orderByAsc(MessageTemplateV3::getId)
.last("LIMIT 20") .last("LIMIT 200")
.list(); .list();
if (!accounts.isEmpty()) { if (!accounts.isEmpty()) {
maxId.set(accounts.get(accounts.size() - 1).getId()); maxId.set(accounts.get(accounts.size() - 1).getId());