Merge remote-tracking branch 'origin/master'

liweidong
maxiangong 2 days ago
commit 8859d6ec8b
  1. 43
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/SettlementConfirmRequestQuery.java
  2. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/StatementQuery.java
  3. 23
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStatementController.java
  4. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java
  5. 60
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.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<Long> ids;
/**
* 确认结果true-结算正确false-结算异常
*/
@NotNull(message = "确认结果不能为空")
@Schema(description = "确认结果:true-结算正确,false-结算异常")
private Boolean confirmResult;
/**
* 异常原因结算异常时必填
* 可选值订单数据错误无需结算
*/
@Schema(description = "异常原因(结算异常时必填),可选值:订单数据错误、无需结算")
private String errorReason;
}

@ -86,6 +86,12 @@ public class StatementQuery {
@Schema(description = "工序ID") @Schema(description = "工序ID")
private Long ppsId; private Long ppsId;
/**
* 异常原因/备注用于模糊查询
*/
@Schema(description = "异常原因/备注")
private String memo;
/** /**
* 排序字段 * 排序字段
*/ */

@ -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.entity.OemStatementEntity;
import org.springblade.desk.oem.pojo.excel.OemStatementExcel; import org.springblade.desk.oem.pojo.excel.OemStatementExcel;
import org.springblade.desk.oem.pojo.request.OemSettleAccountsApproval; 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.request.StatementQuery;
import org.springblade.desk.oem.pojo.vo.OemStatementVO; import org.springblade.desk.oem.pojo.vo.OemStatementVO;
import org.springblade.desk.oem.pojo.vo.StatementVO; import org.springblade.desk.oem.pojo.vo.StatementVO;
@ -161,7 +162,13 @@ public class OemStatementController extends BladeController {
@PostMapping("/noSettlement") @PostMapping("/noSettlement")
@ApiOperationSupport(order = 12) @ApiOperationSupport(order = 12)
@Operation(summary = "外协结算无需结算", description = "") @Operation(summary = "外协结算无需结算", description = "")
public R noSettlement(@RequestBody List<StatementVO> list) { public R noSettlement(StatementQuery mesOemStatement, Query query) {
mesOemStatement.setRosStatusList("1");
//设置不分页
query.setCurrent(1);
query.setSize(Integer.MAX_VALUE);
IPage<StatementVO> pages = mesOemStatementService.selectOemStatementPage(Condition.getPage(query), mesOemStatement);
List<StatementVO> list = pages.getRecords();
return mesOemStatementService.notNeedSettlement(list); return mesOemStatementService.notNeedSettlement(list);
} }
@ -263,4 +270,18 @@ public class OemStatementController extends BladeController {
public R oemSupSettlement(@RequestBody StatementQuery mesOemStatement) { public R oemSupSettlement(@RequestBody StatementQuery mesOemStatement) {
return mesOemStatementService.supSettlement(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);
}
} }

@ -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.entity.OemStatementEntity;
import org.springblade.desk.oem.pojo.excel.OemStatementExcel; import org.springblade.desk.oem.pojo.excel.OemStatementExcel;
import org.springblade.desk.oem.pojo.request.OemSettleAccountsApproval; 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.request.StatementQuery;
import org.springblade.desk.oem.pojo.vo.OemStatementVO; import org.springblade.desk.oem.pojo.vo.OemStatementVO;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -123,4 +124,15 @@ public interface IOemStatementService extends BaseService<OemStatementEntity> {
*/ */
R supSettlement(StatementQuery mesOemStatement); R supSettlement(StatementQuery mesOemStatement);
/**
* 结算确认
* 对待确认状态的数据进行结果确认
* - 结算正确更新为待审核
* - 结算异常更新为结算异常并记录异常原因
*
* @param request 结算确认请求
* @return
*/
R settlementConfirm(SettlementConfirmRequestQuery request);
} }

@ -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.excel.OemStatementExcel;
import org.springblade.desk.oem.pojo.request.OemSettleAccountsApproval; import org.springblade.desk.oem.pojo.request.OemSettleAccountsApproval;
import org.springblade.desk.oem.pojo.request.PriceSheetQuery; 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.request.StatementQuery;
import org.springblade.desk.oem.pojo.vo.PriceSheetVO; import org.springblade.desk.oem.pojo.vo.PriceSheetVO;
import org.springblade.desk.oem.pojo.vo.StatementVO; import org.springblade.desk.oem.pojo.vo.StatementVO;
@ -2174,4 +2175,63 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
return R.status(this.saveOrUpdateBatch(saves)); return R.status(this.saveOrUpdateBatch(saves));
} }
@Override
public R settlementConfirm(SettlementConfirmRequestQuery request) {
if (CollectionUtils.isEmpty(request.getIds())) {
return R.fail("结算单ID不能为空");
}
if (request.getConfirmResult() == null) {
return R.fail("确认结果不能为空");
}
// 如果结算异常,异常原因必填
if (!request.getConfirmResult() && StringUtils.isEmpty(request.getErrorReason())) {
return R.fail("结算异常时,异常原因必填");
}
// 查询待确认状态的数据,验证数据状态
LambdaQueryWrapper<OemStatementEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(OemStatementEntity::getId, request.getIds());
// 待确认状态
queryWrapper.eq(OemStatementEntity::getRosStatus, OemStatementEntity.IN_SETTLEMENT);
List<OemStatementEntity> statements = this.list(queryWrapper);
if (CollectionUtils.isEmpty(statements)) {
return R.fail("未找到待确认状态的结算单");
}
if (statements.size() != request.getIds().size()) {
return R.fail("部分结算单不存在或状态不是待确认");
}
// 3. 根据确认结果更新状态
List<OemStatementEntity> 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();
}
} }

Loading…
Cancel
Save