Commit 6862872f by wutong

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

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