同一商户分账合并,增加打票机打印日志

This commit is contained in:
Jack 2025-10-17 15:18:09 +08:00
parent e11cf54167
commit 2439430d5e
3 changed files with 45 additions and 32 deletions

View File

@ -62,12 +62,12 @@ public class LklSeparateWithTotalAmountDTO {
// 测试用例1: 所有参与方都参与分账符合比例要求
System.out.println("=== 测试用例1: 所有参与方都参与分账 ===");
LklSeparateWithTotalAmountDTO dto1 = new LklSeparateWithTotalAmountDTO();
dto1.setTotalSeparateAmount(1500); // 总金额100元(10000分)
dto1.setShippingFee(600);
dto1.setTotalSeparateAmount(5500); // 总金额100元(10000分)
dto1.setShippingFee(500);
// dto1.setRefCanSeparateAmount(1496);
dto1.setLklRatio(new BigDecimal("0.0025")); // 拉卡拉分账比例0.25%
dto1.setMchRatio(new BigDecimal("0.95")); // 商家分账比例94.75%
dto1.setPlatRatio(new BigDecimal("0.01")); // 平台分账比例1%
dto1.setMchRatio(new BigDecimal("0.96")); // 商家分账比例94.75%
dto1.setPlatRatio(new BigDecimal("0.04")); // 平台分账比例1%
// dto1.setAgent2ndRatio(new BigDecimal("0.04")); // 二级代理商分账比例4%
// dto1.setAgent1stRatio(new BigDecimal("0.01")); // 一级代理商分账比例1%

View File

@ -2639,13 +2639,42 @@ public class LakalaApiServiceImpl implements LakalaApiService {
receiver.setSeparateValue(Convert.toStr(merchantAmount));
recvDatas.add(receiver);
}
// 是否有二级代理商
boolean has2ndAgent = CheckUtil.isNotEmpty(agent2ndSplitRatio) && agent2ndReceiver != null &&
StrUtil.isNotBlank(agent2ndReceiver.getReceiver_no()) &&
CheckUtil.isNotEmpty(agent2ndAmount) && agent2ndAmount > 0;
// 平台分账参数
if (CheckUtil.isNotEmpty(platformAmount) && platformAmount > 0) {
V3SacsSeparateRecvDatas receiver = new V3SacsSeparateRecvDatas();
receiver.setRecvNo(platformReceiver.getReceiver_no());
receiver.setSeparateValue(Convert.toStr(platformAmount));
recvDatas.add(receiver);
if (!has2ndAgent && CheckUtil.isNotEmpty(shoppingFeeInner)) {
// 没有县级代理商的时候配送费暂由平台代收 add 2025-10-11
V3SacsSeparateRecvDatas receiver = new V3SacsSeparateRecvDatas();
receiver.setRecvNo(platformReceiver.getReceiver_no());
receiver.setSeparateValue(Convert.toStr(platformAmount + shoppingFeeInner));
recvDatas.add(receiver);
} else {
V3SacsSeparateRecvDatas receiver = new V3SacsSeparateRecvDatas();
receiver.setRecvNo(platformReceiver.getReceiver_no());
receiver.setSeparateValue(Convert.toStr(platformAmount));
recvDatas.add(receiver);
}
}
// 县级代理商分账参数
if (has2ndAgent) {
if (CheckUtil.isNotEmpty(shoppingFeeInner)) {
// 有县级代理商的时候配送费暂由它代收 add 2025-10-11
V3SacsSeparateRecvDatas shippingFeeReceiver = new V3SacsSeparateRecvDatas();
shippingFeeReceiver.setRecvNo(agent2ndReceiver.getReceiver_no());
shippingFeeReceiver.setSeparateValue(Convert.toStr(agent2ndAmount + shoppingFeeInner));
recvDatas.add(shippingFeeReceiver);
} else {
V3SacsSeparateRecvDatas receiver = new V3SacsSeparateRecvDatas();
receiver.setRecvNo(agent2ndReceiver.getReceiver_no());
receiver.setSeparateValue(Convert.toStr(agent2ndAmount));
recvDatas.add(receiver);
}
}
// 省级代理商分账参数
@ -2658,28 +2687,6 @@ public class LakalaApiServiceImpl implements LakalaApiService {
recvDatas.add(receiver);
}
// 县级代理商分账参数
if (CheckUtil.isNotEmpty(agent2ndSplitRatio) && agent2ndReceiver != null &&
StrUtil.isNotBlank(agent2ndReceiver.getReceiver_no()) &&
CheckUtil.isNotEmpty(agent2ndAmount) && agent2ndAmount > 0) {
V3SacsSeparateRecvDatas receiver = new V3SacsSeparateRecvDatas();
receiver.setRecvNo(agent2ndReceiver.getReceiver_no());
receiver.setSeparateValue(Convert.toStr(agent2ndAmount));
recvDatas.add(receiver);
// 有县级代理商的时候配送费暂由它代收 add 2025-10-11
V3SacsSeparateRecvDatas shippingFeeReceiver = new V3SacsSeparateRecvDatas();
shippingFeeReceiver.setRecvNo(agent2ndReceiver.getReceiver_no());
shippingFeeReceiver.setSeparateValue(Convert.toStr(shoppingFeeInner));
recvDatas.add(shippingFeeReceiver);
} else {
// 没有县级代理商的时候配送费暂由平台代收 add 2025-10-11
V3SacsSeparateRecvDatas shippingFeeReceiver = new V3SacsSeparateRecvDatas();
shippingFeeReceiver.setRecvNo(platformReceiver.getReceiver_no());
shippingFeeReceiver.setSeparateValue(Convert.toStr(shoppingFeeInner));
recvDatas.add(shippingFeeReceiver);
}
// 初始化拉卡拉SDK
initLKLSDK();
@ -2758,7 +2765,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
} catch (Exception e) {
String errorMsg = String.format("[分账操作] 系统异常, receiveLogNo=%s, 错误=%s", receiveLogNo, e.getMessage());
log.error(errorMsg, e);
if (shopOrderLkl != null) {
shopOrderLkl.setSeparate_msg(errorMsg);
shopOrderLkl.setSeparate_status(CommonConstant.Sta_Separate_Fail);

View File

@ -132,7 +132,10 @@ public class ShopStorePrinterServiceImpl extends BaseServiceImpl<ShopStorePrinte
}
// 从厂家删除其他店使用该打印机的记录
feieUtil.delPrinter(record.getPrinter_sn());
Pair<Boolean, String> pair = feieUtil.delPrinter(record.getPrinter_sn());
if (pair.getFirst()) {
logger.info("已从厂家删除打印机:{}, 详细信息:{}", record.getPrinter_sn(), pair.getSecond());
}
if (add(record)) {
return CommonResult.success(null, "添加成功");
@ -271,7 +274,10 @@ public class ShopStorePrinterServiceImpl extends BaseServiceImpl<ShopStorePrinte
// 向厂家解绑打印机
Pair<Boolean, String> retPair = feieUtil.delPrinter(record.getPrinter_sn());
if (!retPair.getFirst()) {
logger.error("从厂家删除打印机失败SN: {}, 错误信息: {}", record.getPrinter_sn(), retPair.getSecond());
return CommonResult.failed(retPair.getSecond());
} else {
logger.info("已从厂家删除打印机:{}, 详细信息:{}", record.getPrinter_sn(), retPair.getSecond());
}
}