Commit 9c91d5fc by yinyong

普货sku 如果首单(oms单)至今低于7天的,取3天日均,高于7天的取7天日均

parent ccf07eb9
...@@ -193,7 +193,8 @@ public class OrderSyncJob extends PointJob { ...@@ -193,7 +193,8 @@ public class OrderSyncJob extends PointJob {
assignmentSkuInfo(omsResult, dcBaseOmsOrder, dcBaseOmsSku, bailunSkuObj, dcBaseWarehouse, logisticsHashMap,bailunSkuStructure); assignmentSkuInfo(omsResult, dcBaseOmsOrder, dcBaseOmsSku, bailunSkuObj, dcBaseWarehouse, logisticsHashMap,bailunSkuStructure);
if (PlatformType.FBA.value().equals(omsResult.getPlatformType().toUpperCase())) { if (PlatformType.FBA.value().equals(omsResult.getPlatformType().toUpperCase())) {
//FBA费用 //FBA费用
if((dcBaseOmsOrder.getCostFbaFee().compareTo(BigDecimal.valueOf(0)) == 1) || (dcBaseOmsOrder.getAmountTotal().compareTo(BigDecimal.valueOf(0)) == 0)) { BigDecimal initTotalCost = (omsResult.getOrderCharge() == null ? BigDecimal.ZERO : omsResult.getOrderCharge().getCostTotal().getAmount());
if((dcBaseOmsOrder.getCostFbaFee().compareTo(BigDecimal.valueOf(0)) == 1) || (initTotalCost.compareTo(BigDecimal.valueOf(0)) == 0)) {
BigDecimal skuCostFbaFee = bailunSkuStructure.getSkuWeightRatio().multiply(dcBaseOmsOrder.getCostFbaFee()).setScale(5, RoundingMode.HALF_EVEN); BigDecimal skuCostFbaFee = bailunSkuStructure.getSkuWeightRatio().multiply(dcBaseOmsOrder.getCostFbaFee()).setScale(5, RoundingMode.HALF_EVEN);
dcBaseOmsSku.setCostFbaFee(skuCostFbaFee); dcBaseOmsSku.setCostFbaFee(skuCostFbaFee);
dcBaseOmsOrder.setHasFbaFee(true); dcBaseOmsOrder.setHasFbaFee(true);
......
...@@ -131,4 +131,6 @@ public interface DcBaseOmsSkuMapper { ...@@ -131,4 +131,6 @@ public interface DcBaseOmsSkuMapper {
List<Double> listFbaFee(@Param("bailunSku") String bailunSku, @Param("website") String website, @Param("timeInterval") int timeInterval); List<Double> listFbaFee(@Param("bailunSku") String bailunSku, @Param("website") String website, @Param("timeInterval") int timeInterval);
BigDecimal selectFBAFee(@Param("bailunSku") String bailunSku, @Param("webSite") String webSite, @Param("paidTime")LocalDateTime paidTime); BigDecimal selectFBAFee(@Param("bailunSku") String bailunSku, @Param("webSite") String webSite, @Param("paidTime")LocalDateTime paidTime);
DcBaseOmsSku selectOneByCreateTime(@Param("bailunSku") String bailunSku);
} }
\ No newline at end of file
...@@ -3193,4 +3193,8 @@ ...@@ -3193,4 +3193,8 @@
SELECT cost_fba_fee FROM dc_base_oms_sku WHERE platform_type='FBA' AND bailun_sku=#{bailunSku} AND website=#{webSite} AND cost_fba_fee &gt; 0 limit 1 SELECT cost_fba_fee FROM dc_base_oms_sku WHERE platform_type='FBA' AND bailun_sku=#{bailunSku} AND website=#{webSite} AND cost_fba_fee &gt; 0 limit 1
</select> </select>
<select id="selectOneByCreateTime" resultType="com.bailuntec.domain.entity.DcBaseOmsSku">
SELECT bailun_sku, create_time FROM dc_base_oms_sku WHERE bailun_sku = #{bailunSku} order by create_time asc limit 1
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -282,7 +282,7 @@ public class AutoTurnoverJob extends PointJob { ...@@ -282,7 +282,7 @@ public class AutoTurnoverJob extends PointJob {
* 均值, 配置安全库存法: 销量上下限 根据过去30天销量,计算出合理的销量封顶值和销量最低值 * 均值, 配置安全库存法: 销量上下限 根据过去30天销量,计算出合理的销量封顶值和销量最低值
* 曲线拟合 :销量预测, 根据销量走势和上下限,计算出销量预测曲线, 如果历史销量包含0, 无法使用指数函数拟合 * 曲线拟合 :销量预测, 根据销量走势和上下限,计算出销量预测曲线, 如果历史销量包含0, 无法使用指数函数拟合
*/ */
calculateForecastSales(salesUpperLimit, autoForecastDay, dcAutoSales, forecastSalesList, turnoverSku); calculateForecastSales(salesUpperLimit, autoForecastDay, dcAutoSales, forecastSalesList, turnoverSku, recordTime, bailunSku);
/* /*
* 处理矫正信息 * 处理矫正信息
...@@ -987,12 +987,37 @@ public class AutoTurnoverJob extends PointJob { ...@@ -987,12 +987,37 @@ public class AutoTurnoverJob extends PointJob {
* @param forecastSalesList * @param forecastSalesList
*/ */
private void calculateForecastSales(BigDecimal salesUpperLimit, Integer autoForecastDay, DcAutoSales private void calculateForecastSales(BigDecimal salesUpperLimit, Integer autoForecastDay, DcAutoSales
dcAutoSales, List<BigDecimal> forecastSalesList, DcBaseSku turnoverSku) { dcAutoSales, List<BigDecimal> forecastSalesList, DcBaseSku turnoverSku, LocalDate recordTime, String bailunSku) {
if(LocalDateTime.now().minusDays(21L).isBefore(turnoverSku.getPushTime()) && !(turnoverSku.getBuyerName().equals(Constant.BUYER_JIT_1)) && !(turnoverSku.getBuyerName().equals(Constant.BUYER_JIT_2)) && !(turnoverSku.getBuyerName().equals(Constant.BUYER_JIT_4))) { if(recordTime.minusDays(21L).isBefore(turnoverSku.getPushTime().toLocalDate()) && !(turnoverSku.getBuyerName().equals(Constant.BUYER_JIT_1)) && !(turnoverSku.getBuyerName().equals(Constant.BUYER_JIT_2)) && !(turnoverSku.getBuyerName().equals(Constant.BUYER_JIT_4))) {
for(int j = 0; j < autoForecastDay; j++) { DcBaseOmsSkuMapper dcBaseOmsSkuMapper = SessionUtil.getSession().getMapper(DcBaseOmsSkuMapper.class);
forecastSalesList.set(j, BigDecimal.valueOf(dcAutoSales.getOnedaySales())); DcBaseOmsSku dcBaseOmsSku = dcBaseOmsSkuMapper.selectOneByCreateTime(bailunSku);
List<Integer> historySalesList = JSON.parseObject(dcAutoSales.getHistorySalesDetails(), new TypeReference<List<Integer>>() {
});
Integer historySevenSales = 0;
Integer historyThreeSales = 0;
for (int i = 0; i < 30; i++) {
if (i < 3) {
historyThreeSales += historySalesList.get(27 + i);
}
if (i < 7) {
historySevenSales += historySalesList.get(23 + i);
}
} }
BigDecimal avgHistoryThreedaySales = BigDecimal.valueOf(historyThreeSales.longValue()).divide(Constant.BIGDECIMAL_THREE, 3, RoundingMode.HALF_EVEN);
BigDecimal avgHistorySevendaySales = BigDecimal.valueOf(historySevenSales.longValue()).divide(Constant.BIGDECIMAL_SEVEN, 3, RoundingMode.HALF_EVEN);
if(dcBaseOmsSku != null && recordTime.minusDays(7L).isBefore(dcBaseOmsSku.getCreateTime().toLocalDate())) {
for(int j = 0; j < autoForecastDay; j++) {
forecastSalesList.set(j, avgHistoryThreedaySales);
}
}else{
for(int j = 0; j < autoForecastDay; j++) {
forecastSalesList.set(j, avgHistorySevendaySales);
}
}
}else{ }else{
// y = ae^bx // y = ae^bx
for (int j = 0; j < autoForecastDay; j++) { for (int j = 0; j < autoForecastDay; j++) {
......
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