From e2641c36b6e5b323b38ec97db79ba2766702e396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=BE=E7=BF=94?= Date: Wed, 13 May 2026 13:34:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=96=E5=8D=8F=E8=AE=A2=E5=8D=95=E7=BB=93?= =?UTF-8?q?=E7=AE=97-=E5=BE=85=E7=A1=AE=E8=AE=A4Tab-=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SettlementConfirmRequestQuery.java | 43 +++++++++++++ .../controller/OemStatementController.java | 15 +++++ .../oem/service/IOemStatementService.java | 12 ++++ .../service/impl/OemStatementServiceImpl.java | 60 +++++++++++++++++++ 4 files changed, 130 insertions(+) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/SettlementConfirmRequestQuery.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/SettlementConfirmRequestQuery.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/SettlementConfirmRequestQuery.java new file mode 100644 index 00000000..1834b248 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/SettlementConfirmRequestQuery.java @@ -0,0 +1,43 @@ +package org.springblade.desk.oem.pojo.request; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * 结算确认请求 + * + * @author qyl + * @since 2026-05-12 + */ +@Data +@Schema(description = "结算确认请求") +public class SettlementConfirmRequestQuery implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 结算单ID列表 + */ + @NotEmpty(message = "结算单ID不能为空") + @Schema(description = "结算单ID列表") + private List ids; + + /** + * 确认结果:true-结算正确,false-结算异常 + */ + @NotNull(message = "确认结果不能为空") + @Schema(description = "确认结果:true-结算正确,false-结算异常") + private Boolean confirmResult; + + /** + * 异常原因(结算异常时必填) + * 可选值:订单数据错误、无需结算 + */ + @Schema(description = "异常原因(结算异常时必填),可选值:订单数据错误、无需结算") + private String errorReason; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStatementController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStatementController.java index d87c3a0d..80ddaa86 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStatementController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStatementController.java @@ -20,6 +20,7 @@ import org.springblade.core.tool.utils.Func; import org.springblade.desk.oem.pojo.entity.OemStatementEntity; import org.springblade.desk.oem.pojo.excel.OemStatementExcel; import org.springblade.desk.oem.pojo.request.OemSettleAccountsApproval; +import org.springblade.desk.oem.pojo.request.SettlementConfirmRequestQuery; import org.springblade.desk.oem.pojo.request.StatementQuery; import org.springblade.desk.oem.pojo.vo.OemStatementVO; import org.springblade.desk.oem.pojo.vo.StatementVO; @@ -269,4 +270,18 @@ public class OemStatementController extends BladeController { public R oemSupSettlement(@RequestBody StatementQuery mesOemStatement) { return mesOemStatementService.supSettlement(mesOemStatement); } + + /** + * 结算确认 + * 对待确认状态的数据进行结果确认 + */ + @PostMapping("/settlementConfirm") + @ApiOperationSupport(order = 17) + @Operation(summary = "结算确认", description = "对待确认状态数据进行结果确认:结算正确→待审核,结算异常→结算异常并记录原因") + @ApiLog("外协结算 结算确认") + public R settlementConfirm(@Valid @RequestBody SettlementConfirmRequestQuery request) { + return mesOemStatementService.settlementConfirm(request); + } + + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java index 0bf42f2d..263f4969 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java @@ -5,6 +5,7 @@ import org.springblade.core.tool.api.R; import org.springblade.desk.oem.pojo.entity.OemStatementEntity; import org.springblade.desk.oem.pojo.excel.OemStatementExcel; import org.springblade.desk.oem.pojo.request.OemSettleAccountsApproval; +import org.springblade.desk.oem.pojo.request.SettlementConfirmRequestQuery; import org.springblade.desk.oem.pojo.request.StatementQuery; import org.springblade.desk.oem.pojo.vo.OemStatementVO; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -123,4 +124,15 @@ public interface IOemStatementService extends BaseService { */ R supSettlement(StatementQuery mesOemStatement); + /** + * 结算确认 + * 对待确认状态的数据进行结果确认 + * - 结算正确:更新为【待审核】 + * - 结算异常:更新为【结算异常】并记录异常原因 + * + * @param request 结算确认请求 + * @return + */ + R settlementConfirm(SettlementConfirmRequestQuery request); + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java index bd16d291..dda47b8f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java @@ -26,6 +26,7 @@ import org.springblade.desk.oem.pojo.entity.PlatingTypeRulesEntity; import org.springblade.desk.oem.pojo.excel.OemStatementExcel; import org.springblade.desk.oem.pojo.request.OemSettleAccountsApproval; import org.springblade.desk.oem.pojo.request.PriceSheetQuery; +import org.springblade.desk.oem.pojo.request.SettlementConfirmRequestQuery; import org.springblade.desk.oem.pojo.request.StatementQuery; import org.springblade.desk.oem.pojo.vo.PriceSheetVO; import org.springblade.desk.oem.pojo.vo.StatementVO; @@ -2174,4 +2175,63 @@ public class OemStatementServiceImpl extends BaseServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(OemStatementEntity::getId, request.getIds()); + // 待确认状态 + queryWrapper.eq(OemStatementEntity::getRosStatus, OemStatementEntity.IN_SETTLEMENT); + List statements = this.list(queryWrapper); + + if (CollectionUtils.isEmpty(statements)) { + return R.fail("未找到待确认状态的结算单"); + } + + if (statements.size() != request.getIds().size()) { + return R.fail("部分结算单不存在或状态不是待确认"); + } + + + // 3. 根据确认结果更新状态 + List updateList = new ArrayList<>(); + + for (OemStatementEntity statement : statements) { + OemStatementEntity entity = new OemStatementEntity(); + entity.setId(statement.getId()); + if (request.getConfirmResult()) { + // 结算正确:更新为【待审核】 + entity.setRosStatus(OemStatementEntity.AWAITING_APPROVAL_SETTLEMENT); + entity.setMemo("结算确认通过"); + } else { + // 结算异常:更新为【结算异常】并记录异常原因 + entity.setRosStatus(OemStatementEntity.ERR_SETTLEMENT); + entity.setMemo(request.getErrorReason()); + } + + entity.setUpdateTime(new Date()); + updateList.add(entity); + } + + if (!CollectionUtils.isEmpty(updateList)) { + this.updateBatchById(updateList); + } + + return R.success(); + } + }