demand: 合并收款相关逻辑

This commit is contained in:
aike 2026-04-01 13:09:44 +08:00
parent 111c0bd755
commit 26573ac59e

View File

@ -475,7 +475,7 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I
.collect(Collectors.toList());
// 现金结算多账单合并收款时,校验每条运单的 moneyUserId 必须一致
log.info("start validateMoneyUserIdForMergeCashSettle");
log.info("aike.start validateMoneyUserIdForMergeCashSettle");
validateMoneyUserIdForMergeCashSettle(emisSettlePayRecord);
for (int i = 0; i < settleBillNoArr.size(); i++) {
@ -580,18 +580,33 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I
}
private void validateMoneyUserIdForMergeCashSettle(EmisSettlePayRecord emisSettlePayRecord) throws EmisBizError {
if (!"1".equals(emisSettlePayRecord.getSettleType())
|| StringUtils.isBlank(emisSettlePayRecord.getSettleBillNo())
|| !emisSettlePayRecord.getSettleBillNo().contains(",")) {
// 方法入参与前置条件日志
if (emisSettlePayRecord == null) {
log.debug("aike.validateMoneyUserIdForMergeCashSettle skipped: emisSettlePayRecord is null");
return;
}
String settleType = emisSettlePayRecord.getSettleType();
String settleBillNo = emisSettlePayRecord.getSettleBillNo();
boolean containsComma = settleBillNo != null && settleBillNo.contains(",");
log.debug("aike.validateMoneyUserIdForMergeCashSettle enter: settleType={}, settleBillNo={}, containsComma={}",
settleType, settleBillNo, containsComma);
if (!"1".equals(settleType)
|| StringUtils.isBlank(settleBillNo)
|| !containsComma) {
log.debug("aike.validateMoneyUserIdForMergeCashSettle skipped by preconditions. settleTypeMatch={}, billNoBlank={}, containsComma={}",
"1".equals(settleType), StringUtils.isBlank(settleBillNo), containsComma);
return;
}
List<EmisSettlePayRel> payRelList = emisSettlePayRecord.getPayRelList();
if (CollectionUtils.isEmpty(payRelList)) {
log.debug("aike.validateMoneyUserIdForMergeCashSettle skipped: payRelList empty");
return;
}
Set<Long> moneyUserIdSet = new HashSet<>();
int index = 0;
for (EmisSettlePayRel payRel : payRelList) {
Long moneyUserId = null;
if (payRel != null
@ -599,11 +614,17 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I
&& payRel.getWaybillDetail().getWaybillOther() != null) {
moneyUserId = payRel.getWaybillDetail().getWaybillOther().getMoneyUserId();
}
log.debug("aike.validateMoneyUserIdForMergeCashSettle item#{}, billNo={}, moneyUserId={}",
index++,
payRel == null ? null : payRel.getBillNo(),
moneyUserId);
moneyUserIdSet.add(moneyUserId);
if (moneyUserIdSet.size() > 1) {
log.warn("aike.合并现金收款校验失败:存在多个不同的moneyUserId,详情: {}", moneyUserIdSet);
throw new EmisBizError(EmisBizErrorType.FAIL, "不同现金客户不允许合并收款");
}
}
log.debug("aike.validateMoneyUserIdForMergeCashSettle passed: unique moneyUserId={}", moneyUserIdSet);
}
private static void checkParam(EmisSettlePayRecord emisSettlePayRecord) throws EmisBizError {