Commit 099b594d by wutong

CRM退款与订单关联部分修改

parent 042ee057
......@@ -2,21 +2,16 @@ package com.bailuntec.job;
import com.bailuntec.domain.entity.DcBaseCrmRefund;
import com.bailuntec.domain.entity.DcBaseOmsOrder;
import com.bailuntec.domain.entity.DcBaseOmsSku;
import com.bailuntec.domain.entity.JobPointLog;
import com.bailuntec.domain.example.DcBaseCrmRefundExample;
import com.bailuntec.domain.example.DcBaseOmsOrderExample;
import com.bailuntec.domain.example.DcBaseOmsSkuExample;
import com.bailuntec.mapper.DcBaseCrmRefundMapper;
import com.bailuntec.mapper.DcBaseOmsOrderMapper;
import com.bailuntec.mapper.DcBaseOmsSkuMapper;
import com.bailuntec.support.PointJob;
import com.bailuntec.utils.SessionUtil;
import com.dangdang.ddframe.job.api.ShardingContext;
import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
@Slf4j
......@@ -41,49 +36,54 @@ public class RefundLinkOrderJob extends PointJob {
}
if (totalPage > 0) {
for (int i = 0; i <= totalPage; i++) {
List<DcBaseCrmRefund> dcBaseCrmRefundList = null;
try {
DcBaseCrmRefundMapper refundMapper1 = SessionUtil.getSession().getMapper(DcBaseCrmRefundMapper.class);
DcBaseOmsSkuMapper omsSkuMapper = SessionUtil.getSession().getMapper(DcBaseOmsSkuMapper.class);
DcBaseOmsOrderMapper omsOrderMapper = SessionUtil.getSession().getMapper(DcBaseOmsOrderMapper.class);
List<DcBaseCrmRefund> dcBaseCrmRefundList = refundMapper1.selectByExample(DcBaseCrmRefundExample.newAndCreateCriteria().andLinkedEqualTo(false).example().limit(i * jobPointLog.getPageSize(), jobPointLog.getPageSize()));
if (dcBaseCrmRefundList != null && dcBaseCrmRefundList.size() > 0) {
for (DcBaseCrmRefund dcBaseCrmRefund : dcBaseCrmRefundList) {
log.warn(dcBaseCrmRefund.getOriginOrderId() +"------" + dcBaseCrmRefund.getBailunAccountId() +"------" + dcBaseCrmRefund.getBailunSku());
DcBaseOmsOrder dcBaseOmsOrder = null;
dcBaseCrmRefundList = refundMapper1.selectByExample(DcBaseCrmRefundExample.newAndCreateCriteria().andLinkedEqualTo(false).example().limit(i * jobPointLog.getPageSize(), jobPointLog.getPageSize()));
} catch (Exception e) {
throw new RuntimeException("Mybatis操作DB失败", e);
} finally {
SessionUtil.closeSession();
}
if (dcBaseCrmRefundList != null && dcBaseCrmRefundList.size() > 0) {
for (DcBaseCrmRefund dcBaseCrmRefund : dcBaseCrmRefundList) {
log.warn(dcBaseCrmRefund.getOriginOrderId() +"------" + dcBaseCrmRefund.getBailunAccountId() +"------" + dcBaseCrmRefund.getBailunSku());
DcBaseOmsOrder dcBaseOmsOrder = null;
try {
DcBaseOmsOrderMapper omsOrderMapper = SessionUtil.getSession().getMapper(DcBaseOmsOrderMapper.class);
/**
* 这里这么switch
* 是因为CRM的单号和OMS的订单号规则不一样, 取的不一样的字段
* 新平台需要自己去查
*/
switch (dcBaseCrmRefund.getPlatformType().toUpperCase()) {
case "EBAY":
// dcBaseOmsSku = omsSkuMapper.selectOneByExample(DcBaseOmsSkuExample.newAndCreateCriteria().andBailunAccountIdEqualTo(dcBaseCrmRefund.getBailunAccountId()).andTransactionIdEqualTo(dcBaseCrmRefund.getOriginOrderId()).andBailunSkuEqualTo(dcBaseCrmRefund.getBailunSku()).example());
dcBaseOmsOrder = omsOrderMapper.selectOneByExample(DcBaseOmsOrderExample.newAndCreateCriteria().andBailunAccountIdEqualTo(dcBaseCrmRefund.getBailunAccountId()).andTransactionIdEqualTo(dcBaseCrmRefund.getOriginOrderId()).example());
break;
case "WALMART":
// dcBaseOmsSku = omsSkuMapper.selectOneByExample(DcBaseOmsSkuExample.newAndCreateCriteria().andBailunAccountIdEqualTo(dcBaseCrmRefund.getBailunAccountId()).andBuyerIdEqualTo(dcBaseCrmRefund.getOriginOrderId()).andBailunSkuEqualTo(dcBaseCrmRefund.getBailunSku()).example());
dcBaseOmsOrder = omsOrderMapper.selectOneByExample(DcBaseOmsOrderExample.newAndCreateCriteria().andBailunAccountIdEqualTo(dcBaseCrmRefund.getBailunAccountId()).andBuyerIdEqualTo(dcBaseCrmRefund.getOriginOrderId()).example());
break;
default:
// dcBaseOmsSku = omsSkuMapper.selectOneByExample(DcBaseOmsSkuExample.newAndCreateCriteria().andBailunAccountIdEqualTo(dcBaseCrmRefund.getBailunAccountId()).andOriginOrderIdEqualTo(dcBaseCrmRefund.getOriginOrderId()).andBailunSkuEqualTo(dcBaseCrmRefund.getBailunSku()).example());
dcBaseOmsOrder = omsOrderMapper.selectOneByExample(DcBaseOmsOrderExample.newAndCreateCriteria().andBailunAccountIdEqualTo(dcBaseCrmRefund.getBailunAccountId()).andOriginOrderIdEqualTo(dcBaseCrmRefund.getOriginOrderId()).example());
}
if (dcBaseOmsOrder != null) {
//利润要减去退款
//利润率要重算
dcBaseOmsOrder.setAmountRefund(dcBaseOmsOrder.getAmountRefund() != null ? dcBaseOmsOrder.getAmountRefund().add(dcBaseCrmRefund.getAmountRefund()) : dcBaseCrmRefund.getAmountRefund());
dcBaseOmsOrder.setRefundTime(dcBaseCrmRefund.getRefundTime());
BigDecimal profit = dcBaseOmsOrder.getProfitTotal().subtract(dcBaseOmsOrder.getAmountRefund().multiply(dcBaseOmsOrder.getSellerOrderExchangeRate())).setScale(3, RoundingMode.HALF_EVEN);
dcBaseOmsOrder.setProfitTotal(profit);
BigDecimal amountSales = dcBaseOmsOrder.getAmountSales().multiply(dcBaseOmsOrder.getSellerOrderExchangeRate());
dcBaseOmsOrder.setProfitRate(amountSales.compareTo(BigDecimal.ZERO) == 0?BigDecimal.ZERO : profit.divide(amountSales,5,RoundingMode.HALF_EVEN));
dcBaseOmsOrder.setBailunRefundStatus("TotalRefund");
dcBaseCrmRefund.setLinked(true);
DcBaseCrmRefundMapper refundMapper2 = SessionUtil.getSession().getMapper(DcBaseCrmRefundMapper.class);
DcBaseOmsOrderMapper omsOrderMapper2 = SessionUtil.getSession().getMapper(DcBaseOmsOrderMapper.class);
DcBaseCrmRefundMapper refundMapper2 = SessionUtil.getTranstionSession().getMapper(DcBaseCrmRefundMapper.class);
DcBaseOmsOrderMapper omsOrderMapper2 = SessionUtil.getTranstionSession().getMapper(DcBaseOmsOrderMapper.class);
omsOrderMapper2.updateByPrimaryKeySelective(dcBaseOmsOrder);
refundMapper2.updateByPrimaryKeySelective(dcBaseCrmRefund);
}
} catch (Exception e) {
e.printStackTrace();
log.error("退款与订单关联失败",e);
} finally {
SessionUtil.closeSession();
SessionUtil.closeTranstionSession();
}
}
} catch (Exception e) {
throw new RuntimeException("Mybatis操作DB失败", e);
} finally {
SessionUtil.closeSession();
}
}
}
......
......@@ -255,7 +255,7 @@ public class OrderSyncJob extends PointJob {
//SKU总收入
BigDecimal skuAmountTotal = bailunSkuStructure.getSkuCostRatio().multiply(dcBaseOmsOrder.getAmountTotal()).setScale(5, RoundingMode.HALF_EVEN);
//SKU退款
BigDecimal skuAmountRefund = bailunSkuStructure.getSkuCostRatio().multiply(dcBaseOmsOrder.getAmountRefund()).setScale(5, RoundingMode.HALF_EVEN);
// BigDecimal skuAmountRefund = bailunSkuStructure.getSkuCostRatio().multiply(dcBaseOmsOrder.getAmountRefund()).setScale(5, RoundingMode.HALF_EVEN);
//SKU商品收入
BigDecimal skuAmountProduct = bailunSkuStructure.getSkuCostRatio().multiply(dcBaseOmsOrder.getAmountProduct()).setScale(5, RoundingMode.HALF_EVEN);
BigDecimal skuAmountProductRMB = bailunSkuStructure.getSkuCostRatio().multiply(dcBaseOmsOrder.getAmountProduct()).multiply(dcBaseOmsOrder.getSellerOrderExchangeRate()).setScale(5, RoundingMode.HALF_EVEN);
......@@ -330,7 +330,6 @@ public class OrderSyncJob extends PointJob {
dcBaseOmsSku.setCostPromotion(skuCostPromotion.divide(quantityOrderdDecimal, 5, RoundingMode.HALF_EVEN));
dcBaseOmsSku.setAmountSales(skuAmountSales.subtract(skuCostPromotion).divide(quantityOrderdDecimal, 5, RoundingMode.HALF_EVEN));
dcBaseOmsSku.setAmountShipping(skuAmountShipping.divide(quantityOrderdDecimal, 5, RoundingMode.HALF_EVEN));
dcBaseOmsSku.setAmountRefund(skuAmountRefund.divide(quantityOrderdDecimal, 5, RoundingMode.HALF_EVEN));
//单个SKU的销售额
unitSkuAmountSalesRMB = skuAmountSalesRMB.divide(quantityOrderdDecimal, 5, RoundingMode.HALF_EVEN);
......@@ -601,8 +600,6 @@ public class OrderSyncJob extends PointJob {
DcBaseOmsOrderMapper mapper = SessionUtil.getSession().getMapper(DcBaseOmsOrderMapper.class);
mapper.logicDeleteOmsSku(dcBaseOmsOrder);
mapper.logicDeleteOmsPick(dcBaseOmsOrder);
// DcBaseCrmRefundMapper crmRefundMapper = SessionUtil.getSession().getMapper(DcBaseCrmRefundMapper.class);
// crmRefundMapper.updateLinked(dcBaseOmsOrder.getOriginOrderId(), dcBaseOmsOrder.getBailunAccountId());
} catch (Exception e) {
throw new RuntimeException(ExceptionUtil.transform(e), e);
} finally {
......@@ -993,17 +990,6 @@ public class OrderSyncJob extends PointJob {
dcBaseOmsOrder.setAmountRefund(BigDecimal.ZERO);
//销售额 - 需要计算的费用给个默认值
dcBaseOmsOrder.setAmountSales(BigDecimal.ZERO);
dcBaseOmsOrder.setBailunRefundStatus(omsResult.getRefundInfo().getRefundStatus());
dcBaseOmsOrder.setRefundObj(omsResult.getRefundInfo().getRefundObj());
dcBaseOmsOrder.setRefundReferenceId(omsResult.getRefundInfo().getRefundReferenceId());
/*if (omsResult.getRefundInfo() !=null) {
dcBaseOmsOrder.setRefundTime(omsResult.getRefundInfo().getRefundTime());
dcBaseOmsOrder.setRefundType(omsResult.getRefundInfo().getRefundType());
if (omsResult.getRefundInfo().getRefundAmount() != null) {
dcBaseOmsOrder.setAmountRefund(omsResult.getRefundInfo().getRefundAmount().getAmount() != null? omsResult.getRefundInfo().getRefundAmount().getAmount() : BigDecimal.ZERO);
}
}*/
}
/**
......@@ -1115,13 +1101,6 @@ public class OrderSyncJob extends PointJob {
dcBaseOmsSku.setCostLogistics(BigDecimal.ZERO);
//如果是 FBA订单1.检查FBA费用是否异常 2.
dcBaseOmsSku.setBailunSkuQuantityShipped(0);
dcBaseOmsSku.setBailunRefundStatus(dcBaseOmsOrder.getBailunRefundStatus());
dcBaseOmsSku.setRefundReferenceId(dcBaseOmsOrder.getRefundReferenceId());
dcBaseOmsSku.setRefundObj(dcBaseOmsOrder.getRefundObj());
/*
dcBaseOmsSku.setRefundTime(dcBaseOmsOrder.getRefundTime());
dcBaseOmsSku.setAmountRefund(dcBaseOmsOrder.getAmountRefund());
dcBaseOmsSku.setRefundType(dcBaseOmsOrder.getRefundType());*/
dcBaseOmsSku.setHasFbaS(dcBaseOmsOrder.getHasFbaS());
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment