REQ-2135: 提供新的接口来更新业务终态
This commit is contained in:
parent
2cf4ffd09c
commit
e1ee74f721
@ -27,6 +27,7 @@ import cn.axzo.msg.center.service.pending.request.PendingMessageStatisticRequest
|
||||
import cn.axzo.msg.center.service.pending.request.PresetButtonPressedRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.RevokePendingMessageByIdRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.SetHideRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.UpdateBusinessFinalBizStateRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.UpdatePendingMessageByIdRequest;
|
||||
import cn.axzo.msg.center.service.pending.response.AnalysisPage;
|
||||
import cn.axzo.msg.center.service.pending.response.PendingMessageIterateResponse;
|
||||
@ -181,6 +182,12 @@ public class PendingMessageNewController implements PendingMessageClient {
|
||||
return CommonResponse.success(todoManager.completeByBizCode(param));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Boolean> updateBusinessFinalBizState(UpdateBusinessFinalBizStateRequest param) {
|
||||
log.info("updateBusinessFinalBizState, request={}", JSON.toJSONString(param));
|
||||
return CommonResponse.success(todoManager.updateBusinessFinalBizState(param));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Boolean> completeByTemplateCodeSubBizCode(CompletePendingBySubCodeRequest param) {
|
||||
log.info("completeByTemplateCodeSubBizCode, request={}", JSON.toJSONString(param));
|
||||
|
||||
@ -25,6 +25,7 @@ import cn.axzo.msg.center.service.pending.request.CompletePendingMessageRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.PresetButtonPressedRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.RevokePendingMessageByIdRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.SetHideRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.UpdateBusinessFinalBizStateRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.UpdatePendingMessageByIdRequest;
|
||||
import cn.axzo.msg.center.service.pending.response.PushPendingMessageDTO;
|
||||
import cn.axzo.msg.center.service.util.JSONUtils;
|
||||
@ -47,7 +48,6 @@ import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@ -108,7 +108,7 @@ public class TodoManager {
|
||||
// 如果已经存在对应的待办业务, 就把待办追加到对应的待办业务上
|
||||
// 流程会并发, 这里对业务进行加锁
|
||||
TodoBusiness business = todoBusinessDao
|
||||
.findForUpdate(request.getTemplateCode(), request.getBizCode())
|
||||
.findByBiz(request.getTemplateCode(), request.getBizCode(), true)
|
||||
.orElse(null);
|
||||
boolean businessCreated = false;
|
||||
TodoExt ext = new TodoExt(request, template);
|
||||
@ -221,6 +221,21 @@ public class TodoManager {
|
||||
return advanceResult.isAdvanced() || businessUpdated;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public boolean updateBusinessFinalBizState(UpdateBusinessFinalBizStateRequest request) {
|
||||
TodoBusiness business = todoBusinessDao
|
||||
.findByBiz(request.getTemplateCode(), request.getBizCode(), false)
|
||||
.orElse(null);
|
||||
BizAssertions.assertNotNull(business, "未找到对应的待办. templateCode={}, bizCode={}",
|
||||
request.getTemplateCode(), request.getBizCode());
|
||||
boolean updated = todoBusinessDao.updateBizFinalState(
|
||||
request.getTemplateCode(), request.getBizCode(), request.getBizFinalStateEnum());
|
||||
TodoRequestContext ctx = TodoRequestContext.create("updateBusinessFinalBizState", request)
|
||||
.addLogContent("updated", updated);
|
||||
todoLogger.logBusinessUpdated(ctx, business);
|
||||
return updated;
|
||||
}
|
||||
|
||||
/**
|
||||
* 完成待办
|
||||
*/
|
||||
|
||||
@ -18,6 +18,7 @@ import cn.axzo.msg.center.service.pending.request.PendingMessageStatisticRequest
|
||||
import cn.axzo.msg.center.service.pending.request.PresetButtonPressedRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.RevokePendingMessageByIdRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.SetHideRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.UpdateBusinessFinalBizStateRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.UpdatePendingMessageByIdRequest;
|
||||
import cn.axzo.msg.center.service.pending.response.AnalysisPage;
|
||||
import cn.axzo.msg.center.service.pending.response.PendingMessageIterateResponse;
|
||||
@ -214,6 +215,10 @@ public interface PendingMessageClient {
|
||||
@PostMapping(value = "/pending-message/complete/by-biz-code", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<Boolean> completeByTemplateCodeBizCode(@RequestBody @Valid CompletePendingMessageRequest param);
|
||||
|
||||
@PostMapping(value = "/pending-message/update-business-final-biz-state",
|
||||
produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<Boolean> updateBusinessFinalBizState(UpdateBusinessFinalBizStateRequest param);
|
||||
|
||||
/**
|
||||
* 通过模版编号和业务编号和子业务编号完成代办
|
||||
*
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
package cn.axzo.msg.center.service.pending.request;
|
||||
|
||||
import cn.axzo.msg.center.service.enums.BizFinalStateEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author haiyangjin
|
||||
* @date 2023/11/15
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class UpdateBusinessFinalBizStateRequest implements Serializable {
|
||||
/**
|
||||
* 关联业务主键
|
||||
*/
|
||||
@NotNull(message = "bizCode is required")
|
||||
private String bizCode;
|
||||
|
||||
/**
|
||||
* 模版code
|
||||
*/
|
||||
@NotNull(message = "templateCode is required")
|
||||
private String templateCode;
|
||||
|
||||
/**
|
||||
* 业务终态的状态枚举
|
||||
*/
|
||||
private BizFinalStateEnum bizFinalStateEnum;
|
||||
}
|
||||
@ -25,11 +25,11 @@ import static java.util.stream.Collectors.toSet;
|
||||
@Component
|
||||
public class TodoBusinessDao extends ServiceImpl<TodoBusinessMapper, TodoBusiness> {
|
||||
|
||||
public Optional<TodoBusiness> findForUpdate(String templateCode, String bizCode) {
|
||||
public Optional<TodoBusiness> findByBiz(String templateCode, String bizCode, boolean forUpdate) {
|
||||
TodoBusiness business = lambdaQuery()
|
||||
.eq(TodoBusiness::getTemplateCode, templateCode)
|
||||
.eq(TodoBusiness::getBizCode, bizCode)
|
||||
.last("FOR UPDATE")
|
||||
.last(forUpdate, "FOR UPDATE")
|
||||
.one();
|
||||
return Optional.ofNullable(business);
|
||||
}
|
||||
@ -70,4 +70,13 @@ public class TodoBusinessDao extends ServiceImpl<TodoBusinessMapper, TodoBusines
|
||||
.set(TodoBusiness::getBizFinalState, bizFinalState)
|
||||
.update();
|
||||
}
|
||||
|
||||
public boolean updateBizFinalState(String templateCode, String bizCode, BizFinalStateEnum bizFinalState) {
|
||||
return lambdaUpdate()
|
||||
.eq(TodoBusiness::getTemplateCode, templateCode)
|
||||
.eq(TodoBusiness::getBizCode, bizCode)
|
||||
.set(TodoBusiness::getBizFinalState, bizFinalState)
|
||||
.update();
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user