diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java index fe75a4477..fca656846 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java @@ -143,5 +143,13 @@ public interface OrderSplitRecordService { * 根据订单号查询订单分账记录 */ List queryOrderSplitRecordByOrderCode(String orderCode); + + /** + * 比较订单分账记录 + * @param generatedOrderSplitRecordList 生成的订单分账记录 + * @param queryOrderSplitRecordList 查询的订单分账记录 + * @return 订单分账记录是否一致 true一致 false不一致 + */ + boolean compareOrderSplitRecord(List generatedOrderSplitRecordList, List queryOrderSplitRecordList); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index a671a2348..8bf4ec366 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -5843,14 +5843,19 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { // 获取计算出来的订单分账记录 OrderInfoDetailVO orderInfoDetailVO = getOrderInfoDetailVO(orderCode); - List orderSplitRecords = orderSplitRecordService.generatedOrderSplitRecordList(param, paymentConfirmInfo, splitDataList, orderInfoDetailVO); - logger.info("realTimeOrderSplit-订单:{}, 获取计算出来的订单分账记录:{}", orderCode, JSON.toJSONString(orderSplitRecords)); + + List generatedOrderSplitRecordList = orderSplitRecordService.generatedOrderSplitRecordList(param, paymentConfirmInfo, splitDataList, orderInfoDetailVO); + logger.info("realTimeOrderSplit-订单:{}, 获取计算出来的订单分账记录:{}", orderCode, JSON.toJSONString(generatedOrderSplitRecordList)); // 查询数据库中该订单的分账记录 - List splitRecordInfoVOS = orderSplitRecordService.queryOrderSplitRecordByOrderCode(orderCode); - logger.info("realTimeOrderSplit-订单:{}, 数据库中的订单分账记录:{}", orderCode, JSON.toJSONString(splitRecordInfoVOS)); - - // 对比分账记录 + List queryOrderSplitRecordList = orderSplitRecordService.queryOrderSplitRecordByOrderCode(orderCode); + logger.info("realTimeOrderSplit-订单:{}, 数据库中的订单分账记录:{}", orderCode, JSON.toJSONString(queryOrderSplitRecordList)); + // 对比分账记录 判断是否一致 不一致则保存 否则不保存 true-一致 false-不一致 + boolean bool = orderSplitRecordService.compareOrderSplitRecord(generatedOrderSplitRecordList, queryOrderSplitRecordList); + if (!bool) { + // 保存orderSplitRecords到数据库 + orderSplitRecordService.batchInsert(generatedOrderSplitRecordList); + } } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java index 63adfc807..cd641a424 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java @@ -60,6 +60,9 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService { @Override public int batchInsert(List list) { + if (CollectionUtils.isEmpty(list)) { + return 0; + } return orderSplitRecordMapper.batchInsert(list); } @@ -770,6 +773,24 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService { return null; } + /** + * 对比生成的分账记录和查询的分账记录是否一致 + * @return true:一致; false:不一致 + */ + public boolean compareOrderSplitRecord(List generatedOrderSplitRecordList, List queryOrderSplitRecordList) { + if (generatedOrderSplitRecordList.size() != queryOrderSplitRecordList.size()) { + return false; + } + // generatedOrderSplitRecordList转为map, key为adapayMemberId, value为分账记录 + Map generatedMap = generatedOrderSplitRecordList.stream() + .collect(Collectors.toMap(OrderSplitRecord::getAdapayMemberId, v -> v)); + + // queryOrderSplitRecordList转为map, key为adapayMemberId, value为分账记录 + Map queryMap = queryOrderSplitRecordList.stream() + .collect(Collectors.toMap(OrderSplitRecord::getAdapayMemberId, v -> v)); + return true; + } + }