:feat: 项目立项审批通过同步推送HCS并回传失败原因

This commit is contained in:
刘泉佳
2026-10-20 21:45:14 +08:00
parent 8c8a874522
commit dea477eba2
2 changed files with 11 additions and 5 deletions
@@ -40,6 +40,7 @@ import org.springblade.transport.excel.ProjectApplyExcel;
import org.springblade.transport.pojo.entity.ProjectApply;
import org.springblade.transport.pojo.vo.ProjectApplyVO;
import org.springblade.transport.service.IProjectApplyService;
import org.springblade.transport.support.hcs.HcsImmediatePushSupport;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -63,6 +64,7 @@ import java.util.Map;
public class ProjectApplyController extends BladeController {
private final IProjectApplyService projectApplyService;
private final HcsImmediatePushSupport hcsImmediatePushSupport;
@GetMapping("/detail")
@ApiOperationSupport(order = 1)
@@ -119,7 +121,14 @@ public class ProjectApplyController extends BladeController {
@ApiOperationSupport(order = 6)
@Operation(summary = "审批通过", description = "传入id")
public R approve(@Parameter(description = "主键", required = true) @RequestParam Long id) {
return R.status(projectApplyService.approve(id));
projectApplyService.approve(id);
// 审批事务已提交,再同步推送合规;失败原因以警告文案返回(data=false 供前端区分提示样式),照正式结算单审批接口
hcsImmediatePushSupport.pushProjectAndWait(id);
String syncFailure = HcsImmediatePushSupport.pollSyncFailure();
if (syncFailure != null) {
return R.data(Boolean.FALSE, "审批通过,但合规推送失败:" + syncFailure);
}
return R.success("审批通过");
}
@PostMapping("/reject")
@@ -49,7 +49,6 @@ import org.springblade.transport.pojo.entity.TemporaryCreditLimit;
import org.springblade.transport.pojo.vo.ProjectApplyVO;
import org.springblade.transport.service.IProjectApplyService;
import org.springblade.transport.support.TransportBusinessSupport;
import org.springblade.transport.support.hcs.HcsImmediatePushSupport;
import org.springblade.transport.wrapper.ProjectApplyWrapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -96,7 +95,6 @@ public class ProjectApplyServiceImpl extends BaseServiceImpl<ProjectApplyMapper,
private final TemporaryCreditLimitMapper temporaryCreditLimitMapper;
private final FormalSettlementMapper formalSettlementMapper;
private final ReceiptClaimSettlementMapper receiptClaimSettlementMapper;
private final HcsImmediatePushSupport hcsImmediatePushSupport;
@Override
public IPage<ProjectApplyVO> selectProjectApplyPage(IPage<ProjectApply> page, ProjectApplyVO projectApply) {
@@ -214,9 +212,8 @@ public class ProjectApplyServiceImpl extends BaseServiceImpl<ProjectApplyMapper,
projectApply.setCurrentNode("审批通过");
projectApply.setCurrentProcessor(AuthUtil.getUserName());
projectApply.setApprovedTime(LocalDateTime.now());
// HCS 推送:审批通过置待同步状态,事务提交后即时推送,扫描任务保留兜底(ADR-0001 修订,前端接入设计 §6)
// HCS 推送:审批通过置待同步状态,事务提交后由 Controller 同步推送并回传失败原因,扫描任务保留兜底
projectApply.setHcsSyncStatus(HcsSyncConstant.HCS_STATUS_UNSYNCED);
hcsImmediatePushSupport.pushProjectAfterCommit(id);
return updateById(projectApply);
}