Commit 6862872f by wutong

订单修改自产百伦SKU处理费计算规则

parent 9a568e45
......@@ -13,7 +13,6 @@ public class BailunSkuCumulative {
private BigDecimal maxSkuLong;//最大SKU长
private BigDecimal maxSkuWidth;//最大SKU宽
private BigDecimal maxSkuHight;//最大SKU高
private boolean hasGeneral;//美容类还是普货类, TRUE是普货
private Integer totalQuantity;//累计销售数量
}
......@@ -133,7 +133,8 @@ public class OrderSyncJob extends PointJob {
* 遍历所有百伦SKU(omsResult.getBailunSku())
* 拿到SKU累计信息, 自发货运费按SKU重量比重取
*/
BailunSkuCumulative bailunSkuCumulative = getBailunSkuCumulative(omsResult);
Integer countSelfProducrSku = 0; //自产SKU
BailunSkuCumulative bailunSkuCumulative = getBailunSkuCumulative(omsResult, countSelfProducrSku);
//SKU总个数
dcBaseOmsOrder.setQuantityBailunSku(bailunSkuCumulative.getTotalQuantity());
//计算每个SKU采购价占总采购价比重(用于摊分SKU售价之类) 以及 每个SKU重量价占总重量的比重
......@@ -199,7 +200,7 @@ public class OrderSyncJob extends PointJob {
* 按规则计算百伦处理费
* 处理费算到订单维度
*/
caculateBailunHandleFee(dcBaseOmsOrder, bailunSkuCumulative, bailunSkuInfoMap.get(omsResult.getBailunSku().get(0).getBailunSku()).getDcBaseWarehouse());
caculateBailunHandleFee(dcBaseOmsOrder, countSelfProducrSku);
}
/*
* 配货单处理,
......@@ -550,57 +551,34 @@ public class OrderSyncJob extends PointJob {
* 阶梯计费
*
* @param dcBaseOmsOrder
* @param bailunSkuCumulative
* @param dcBaseWarehouse
*/
private void caculateBailunHandleFee(DcBaseOmsOrder dcBaseOmsOrder, BailunSkuCumulative bailunSkuCumulative, DcBaseWarehouse dcBaseWarehouse) {
if (dcBaseWarehouse != null) {
if (dcBaseWarehouse.getHqType().equals(Constant.FBA_WAREHOUSE) || dcBaseWarehouse.getHqType().equals(Constant.OVERSEAS_WAREHOUSE)) {
dcBaseOmsOrder.setCostHandleBailun(Constant.NO_DOMESTIC_HANDLE_FEE);
} else if (dcBaseWarehouse.getHqType().equals(Constant.DOMESTIC_WAREHOUSE)) {
if (bailunSkuCumulative.isHasGeneral()) {
dcBaseOmsOrder.setCostHandleBailun(Constant.GENERAL_DOMESTIC_HANDLE_FEE);
} else {
switch (bailunSkuCumulative.getTotalQuantity()) {
case 1:
dcBaseOmsOrder.setCostHandleBailun(BigDecimal.valueOf(2));
break;
case 2:
dcBaseOmsOrder.setCostHandleBailun(BigDecimal.valueOf(3));
break;
case 3:
dcBaseOmsOrder.setCostHandleBailun(BigDecimal.valueOf(4));
break;
case 4:
dcBaseOmsOrder.setCostHandleBailun(BigDecimal.valueOf(5));
break;
case 5:
dcBaseOmsOrder.setCostHandleBailun(BigDecimal.valueOf(6));
break;
case 6:
dcBaseOmsOrder.setCostHandleBailun(BigDecimal.valueOf(6.5));
break;
case 7:
dcBaseOmsOrder.setCostHandleBailun(BigDecimal.valueOf(7));
break;
case 8:
dcBaseOmsOrder.setCostHandleBailun(BigDecimal.valueOf(7.5));
break;
case 9:
dcBaseOmsOrder.setCostHandleBailun(BigDecimal.valueOf(8));
break;
case 10:
dcBaseOmsOrder.setCostHandleBailun(BigDecimal.valueOf(8.5));
break;
default:
dcBaseOmsOrder.setCostHandleBailun(BigDecimal.valueOf(8.5));
}
}
}
private void caculateBailunHandleFee(DcBaseOmsOrder dcBaseOmsOrder, Integer countSelfProducrSku) {
BigDecimal costBailunHandle;
switch (countSelfProducrSku) {
case 0:
case 1:
costBailunHandle = BigDecimal.valueOf(2.0);
break;
case 2:
case 3:
case 4:
case 5:
costBailunHandle = BigDecimal.valueOf(countSelfProducrSku - 1).add(BigDecimal.valueOf(2.0));
break;
case 6:
case 7:
case 8:
case 9:
case 10:
costBailunHandle = BigDecimal.valueOf(0.5).multiply(BigDecimal.valueOf(countSelfProducrSku - 5)).add(BigDecimal.valueOf(6.0));
break;
default:
costBailunHandle = BigDecimal.valueOf(8.5);
}
dcBaseOmsOrder.setCostHandleBailun(costBailunHandle);
}
private BailunSkuCumulative getBailunSkuCumulative(OmsResult omsResult) {
private BailunSkuCumulative getBailunSkuCumulative(OmsResult omsResult, Integer countSelfProducrSku) {
BailunSkuCumulative bailunSkuCumulative = new BailunSkuCumulative();
bailunSkuCumulative.setMaxSkuLong(BigDecimal.ZERO);
bailunSkuCumulative.setMaxSkuWidth(BigDecimal.ZERO);
......@@ -641,20 +619,20 @@ public class OrderSyncJob extends PointJob {
bailunSkuCumulative.setMaxSkuLong(skuHeight);
}
}
}
try {
DcBaseOmsHandleMapper mapper = SessionUtil.getSession().getMapper(DcBaseOmsHandleMapper.class);
DcBaseOmsHandle orderBailunCatagory = mapper.getOrderBailunCatagory(omsResult.getBailunSku().get(0).getBailunSku());
bailunSkuCumulative.setHasGeneral(true);
if (orderBailunCatagory != null) {//如果没有在这个表, 说明是普货类
bailunSkuCumulative.setHasGeneral(false);
try {
DcBaseOmsHandleMapper mapper = SessionUtil.getSession().getMapper(DcBaseOmsHandleMapper.class);
DcBaseOmsHandle orderBailunCatagory = mapper.getOrderBailunCatagory(omsResult.getBailunSku().get(0).getBailunSku());
if (orderBailunCatagory != null) {//如果没有在这个表, 说明是普货类, 在这个表, 就是美容自产
countSelfProducrSku += bailunSku.getBailunSkuQuantityOrdered();
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("MYBATIS操作DB失败", e);
} finally {
SessionUtil.closeSession();
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("MYBATIS操作DB失败", e);
} finally {
SessionUtil.closeSession();
}
return bailunSkuCumulative;
}
......@@ -724,7 +702,7 @@ public class OrderSyncJob extends PointJob {
BigDecimal quantityPickedBigDecimal = BigDecimal.valueOf(pickingItem.getQuantityPicked());
DcBaseOmsPick dcBaseOmsPick = new DcBaseOmsPick();
BailunSkuStructure bailunSkuStructure = skuStructureMap.get(pickingItem.getBailunSku());
BigDecimal weightRatio = bailunSkuStructure != null && pickOrderTotalWeight.compareTo(BigDecimal.ZERO) == 1? bailunSkuStructure.getBailunSkuWeight().multiply(quantityPickedBigDecimal).divide(pickOrderTotalWeight, 5, RoundingMode.HALF_EVEN) : BigDecimal.ONE;
BigDecimal weightRatio = bailunSkuStructure != null && pickOrderTotalWeight.compareTo(BigDecimal.ZERO) == 1 ? bailunSkuStructure.getBailunSkuWeight().multiply(quantityPickedBigDecimal).divide(pickOrderTotalWeight, 5, RoundingMode.HALF_EVEN) : BigDecimal.ONE;
dcBaseOmsPick.setHasDelete(false);
dcBaseOmsPick.setCostPackaging(skuCostPackaging);
dcBaseOmsPick.setCostShipping(skuCostShipping);
......@@ -732,7 +710,7 @@ public class OrderSyncJob extends PointJob {
dcBaseOmsPick.setBailunSkuCostPackaging(skuCostPackaging.multiply(weightRatio).setScale(3, RoundingMode.HALF_EVEN));
dcBaseOmsPick.setBailunSkuCostShipping(skuCostShipping.multiply(weightRatio).setScale(3, RoundingMode.HALF_EVEN));
//从千克转为克, 且放单位SKU重量
dcBaseOmsPick.setBailunSkuOutboundWeight(pickingItem.getQuantityPicked() > 0?outboundWeight.multiply(weightRatio).multiply(Constant.RATE_1000).divide(quantityPickedBigDecimal, 3, RoundingMode.HALF_EVEN) : BigDecimal.ZERO);
dcBaseOmsPick.setBailunSkuOutboundWeight(pickingItem.getQuantityPicked() > 0 ? outboundWeight.multiply(weightRatio).multiply(Constant.RATE_1000).divide(quantityPickedBigDecimal, 3, RoundingMode.HALF_EVEN) : BigDecimal.ZERO);
dcBaseOmsPick.setBailunSku(pickingItem.getBailunSku());
dcBaseOmsPick.setQuantityPicked(pickingItem.getQuantityPicked());
dcBaseOmsPick.setQuantityShipped(pickingItem.getQuantityShipped());
......
......@@ -78,7 +78,7 @@ public class OmsOrderTest {
LinkedHashMap<String, String> map = new LinkedHashMap<>(4);
map.put("pageIndex", "1");
map.put("pageCount", "100");
map.put("OriginOrderNo", "323674194737-2025252159011");
map.put("OriginOrderNo", "100011829012136");
Request request = new Request.Builder()
.get()
.url(OkHttpUtil.attachHttpGetParams("http://oms.bailuntec.com/apiV2/bailunOrder/getBailunOrders", map))
......
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