Browse Source

优化分账订单订单任务--->处理分账时手续费问题

wjj 3 weeks ago
parent
commit
d99b5c1f3a
1 changed files with 85 additions and 70 deletions
  1. 85 70
      fs-admin/src/main/java/com/fs/his/task/Task.java

+ 85 - 70
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -12,8 +12,10 @@ import com.fs.fastgptApi.util.AudioUtils;
 import com.fs.fastgptApi.vo.AudioVO;
 import com.fs.hisStore.param.FsStoreOrderExpressEditParam;
 import com.fs.hisStore.service.IFsStoreOrderScrmService;
+import com.fs.huifuPay.domain.HuiFuQueryOrderResult;
 import com.fs.huifuPay.domain.HuifuOrderConfirm;
 import com.fs.huifuPay.domain.HuifuOrderConfirmResult;
+import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayQueryRequest;
 import com.fs.huifuPay.sdk.opps.core.utils.DateTools;
 import com.fs.huifuPay.service.HuiFuService;
 import com.fs.sop.domain.QwSopTempVoice;
@@ -2083,81 +2085,94 @@ public class Task {
         if (CollectionUtils.isNotEmpty(payments)) {
             for (FsStorePayment storePayment : payments) {
                 try {
-                    logger.info("分账订单号:{}",storePayment.getBusinessCode());
-                    FsStoreOrder order = fsStoreOrderService.selectFsStoreOrderByOrderCode(storePayment.getBusinessCode());
-                    BigDecimal divAmount = null;
-                    //默认全部进入中医院
-                    BigDecimal ysyAmount = storePayment.getPayMoney();
-                    HuifuOrderConfirm confirm = new HuifuOrderConfirm();
-
-                    if (order != null) {
-                        //获取聚水潭分账商户
-                        FsAmountsShareMerchant queryMerchant = new FsAmountsShareMerchant();
-                        queryMerchant.setType(order.getErpType());
-                        List<FsAmountsShareMerchant> merchants = amountShareMerchantService.selectFsAmountsShareMerchantList(queryMerchant);
-                        //支付金额大于等于0.1的进行分账 最低分账金额为0.1
-                        if (storePayment.getPayMoney().compareTo(new BigDecimal("0.1")) > -1) {
-                            if (order.getErpType() != null && order.getErpType() == 1) {
-                                if (merchants != null && !merchants.isEmpty()) {
-                                    int i = (int) (Math.random() * merchants.size());
-                                    FsAmountsShareMerchant merchant = merchants.get(i);
-                                    //分账商户号
-                                    confirm.setDivHfId(merchant.getMerchantAccount());
-                                    //益寿缘分账金额
-                                    ysyAmount = storePayment.getPayMoney().multiply(new BigDecimal("0.2"));
-                                    //其它商户分账金额
-                                    divAmount = storePayment.getPayMoney().subtract(ysyAmount);
-                                    //分账明细数据
-                                    FsShareAmountDetail shareAmountDetail = new FsShareAmountDetail();
-                                    shareAmountDetail.setShareAmount(divAmount);
-                                    shareAmountDetail.setMerchantId(merchant.getId());
-                                    shareAmountDetail.setOrderCode(order.getOrderCode());
-                                    shareAmountDetail.setOrderId(order.getOrderId());
-                                    //添加分账明细
-                                    amountDetailService.insertFsShareAmountDetail(shareAmountDetail);
+                    Thread.sleep(1000);
+                    //查询订单确认金额
+                    V2TradePaymentScanpayQueryRequest request = new V2TradePaymentScanpayQueryRequest();
+                    request.setOrgReqDate(DateTools.formatYYYYMMDD(storePayment.getPayTime()));
+                    request.setOrgReqSeqId(storePayment.getShareCode()+"-"+storePayment.getPayCode());
+                    HuiFuQueryOrderResult queryOrderResult = huiFuService.queryOrder(request);
+                    logger.info("汇付订单查询返回:{}" , queryOrderResult);
+                    if (queryOrderResult != null && "00000000".equals(queryOrderResult.getResp_code())) {
+                        logger.info("分账订单号:{}",storePayment.getBusinessCode());
+                        FsStoreOrder order = fsStoreOrderService.selectFsStoreOrderByOrderCode(storePayment.getBusinessCode());
+                        //待确认金额
+                        BigDecimal unConfirmAmt = new BigDecimal(queryOrderResult.getUnconfirm_amt());
+                        BigDecimal divAmount = null;
+                        //默认全部进入中医院
+                        BigDecimal ysyAmount = unConfirmAmt;
+                        HuifuOrderConfirm confirm = new HuifuOrderConfirm();
+
+                        if (order != null) {
+                            //获取聚水潭分账商户
+                            FsAmountsShareMerchant queryMerchant = new FsAmountsShareMerchant();
+                            queryMerchant.setType(order.getErpType());
+                            List<FsAmountsShareMerchant> merchants = amountShareMerchantService.selectFsAmountsShareMerchantList(queryMerchant);
+                            //支付金额大于等于0.1的进行分账 最低分账金额为0.1
+                            if (storePayment.getPayMoney().compareTo(new BigDecimal("0.1")) > -1) {
+                                if (order.getErpType() != null && order.getErpType() == 1) {
+                                    if (merchants != null && !merchants.isEmpty()) {
+                                        int i = (int) (Math.random() * merchants.size());
+                                        FsAmountsShareMerchant merchant = merchants.get(i);
+                                        //分账商户号
+                                        confirm.setDivHfId(merchant.getMerchantAccount());
+                                        //益寿缘分账金额
+                                        ysyAmount = unConfirmAmt.multiply(new BigDecimal("0.2"));
+                                        //其它商户分账金额
+                                        divAmount = unConfirmAmt.subtract(ysyAmount);
+                                        //分账明细数据
+                                        FsShareAmountDetail shareAmountDetail = new FsShareAmountDetail();
+                                        shareAmountDetail.setShareAmount(divAmount);
+                                        shareAmountDetail.setMerchantId(merchant.getId());
+                                        shareAmountDetail.setOrderCode(order.getOrderCode());
+                                        shareAmountDetail.setOrderId(order.getOrderId());
+                                        //添加分账明细
+                                        amountDetailService.insertFsShareAmountDetail(shareAmountDetail);
+                                    }
                                 }
                             }
+                        } else {
+                            throw new CustomException("订单不存在");
                         }
-                    } else {
-                        throw new CustomException("订单不存在");
-                    }
-                    logger.info("开始确认订单分账..........");
-                    confirm.setYsyDivAmt(ysyAmount);
-                    confirm.setDivAmt(divAmount);
-                    confirm.setOrgReqSeqId(storePayment.getShareCode()+"-"+storePayment.getPayCode());
-                    confirm.setOrgReqDate(DateTools.getCurrentDateYYYYMMDD());
-                    String orderCode = OrderCodeUtils.getOrderSn();
-                    if (StringUtils.isEmpty(orderCode)) {
-                        throw new CustomException("订单生成失败,请重试");
-                    }
-                    //中医院商户号
-                    confirm.setMainHfId("6666000175632107");
-                    confirm.setReqSeqId(orderCode);
-                    confirm.setTotalAmount(storePayment.getPayMoney());
-                    HuifuOrderConfirmResult result = huiFuService.confirmOrder(confirm);
-                    logger.info("确认订单分账结束..........");
-                    if (result != null && result.getResp_code().equals("00000000") && (result.getTrans_stat().equals("S") || result.getTrans_stat().equals("P"))) {
-                        FsStorePayment paymentMap = new FsStorePayment();
-                        //分账标识
-                        paymentMap.setPaymentId(storePayment.getPaymentId());
-                        paymentMap.setShareStatus(1);
-                        paymentMap.setShareDate(result.getReq_date());
-                        paymentMap.setShareCode(result.getReq_seq_id());
-                        logger.info("更新支付记录");
-                        storePaymentMapper.updateFsStorePayment(paymentMap);
-
-                        FsStoreOrder orderMap = new FsStoreOrder();
-                        orderMap.setOrderId(order.getOrderId());
-                        orderMap.setZyyDivAmount(result.getYsyAmount());
-                        orderMap.setZyyHuifuId(result.getZyzHuifuId());
-                        if (result.getOtherAmount() != null && result.getOtherHuifuId() != null) {
-                            orderMap.setDivHuifuId(result.getOtherHuifuId());
-                            orderMap.setDivAmount(result.getOtherAmount());
+                        logger.info("开始确认订单分账..........");
+                        confirm.setYsyDivAmt(ysyAmount);
+                        confirm.setDivAmt(divAmount);
+                        confirm.setOrgReqSeqId(storePayment.getShareCode()+"-"+storePayment.getPayCode());
+                        confirm.setOrgReqDate(DateTools.getCurrentDateYYYYMMDD());
+                        String orderCode = OrderCodeUtils.getOrderSn();
+                        if (StringUtils.isEmpty(orderCode)) {
+                            throw new CustomException("订单生成失败,请重试");
+                        }
+                        //中医院商户号
+                        confirm.setMainHfId("6666000175632107");
+                        confirm.setReqSeqId(orderCode);
+                        confirm.setTotalAmount(storePayment.getPayMoney());
+                        HuifuOrderConfirmResult result = huiFuService.confirmOrder(confirm);
+                        logger.info("确认订单分账结束..........");
+                        if (result != null && result.getResp_code().equals("00000000") && (result.getTrans_stat().equals("S") || result.getTrans_stat().equals("P"))) {
+                            FsStorePayment paymentMap = new FsStorePayment();
+                            //分账标识
+                            paymentMap.setPaymentId(storePayment.getPaymentId());
+                            paymentMap.setShareStatus(1);
+                            paymentMap.setShareDate(result.getReq_date());
+                            paymentMap.setShareCode(result.getReq_seq_id());
+                            logger.info("更新支付记录");
+                            storePaymentMapper.updateFsStorePayment(paymentMap);
+
+                            FsStoreOrder orderMap = new FsStoreOrder();
+                            orderMap.setOrderId(order.getOrderId());
+                            orderMap.setZyyDivAmount(result.getYsyAmount());
+                            orderMap.setZyyHuifuId(result.getZyzHuifuId());
+                            if (result.getOtherAmount() != null && result.getOtherHuifuId() != null) {
+                                orderMap.setDivHuifuId(result.getOtherHuifuId());
+                                orderMap.setDivAmount(result.getOtherAmount());
+                            }
+                            //更新订单
+                            fsStoreOrderService.updateFsStoreOrder(orderMap);
+                        } else {
+                            throw new CustomException(result.getResp_desc());
                         }
-                        //更新订单
-                        fsStoreOrderService.updateFsStoreOrder(orderMap);
                     } else {
-                        throw new CustomException("交易确认订单失败");
+                        throw new CustomException(queryOrderResult.getResp_desc());
                     }
                     Thread.sleep(1000);
                 } catch (Exception e) {