Commit 5bde6a66 by yinyong

周转修改7、14日均

parent f7ca8051
......@@ -319,30 +319,8 @@ public class AutoTurnoverJob extends PointJob {
//通过SKU和仓库拿到实际库存
Integer realInventory = (dcBaseStock != null && dcBaseStock.getUsableStock() != null) ? dcBaseStock.getUsableStock() : 0;
/*
* 通过SKU拿到供应商Id,
* 再去dc_average_purchase拿到平均交期
* 平均交期 - 供应商交期 > 0 就是平均逾期天数
*
* 平均逾期天数 * 加权平均销量(去最大值最小值)
* 为安全库存--即防止逾期缓冲所需库存
* 可以支持配置
* 2019-04-22更新 不管逾期
*/
BigDecimal totalSafeInventory = calculateSafeInventory(turnoverSku, bailunSku, warehouseCode, bailunFirstLevelCatagoryId, dcAutoSales, JSON.toJSONString(forecastSalesList), dcAutoTurnover);
Integer moq = turnoverSku.getMoq();
/*
* 预测库存 = 前一日库存 - 前一日销量(没有考虑实际缺货)
*
* 采购建议为周转期后那一天的销量 + 安全库存 - 预测库存 + 累计断货
* 如果有库存, 优先抵消断货数, 再去跟销量对比
*/
//通过SKU和仓库取预测销量
Integer inventoryAvailableDays = 0;
BigDecimal totalSales = BigDecimal.ZERO;//周转期总销量
BigDecimal totalInbound = BigDecimal.ZERO;//周转期总预计入库
BigDecimal moqDecimal = BigDecimal.valueOf(moq.longValue());
List<Integer> historySalesList = JSON.parseObject(dcAutoSales.getHistorySalesDetails(), new TypeReference<List<Integer>>() {
});
......@@ -374,6 +352,33 @@ public class AutoTurnoverJob extends PointJob {
BigDecimal avgHistorySevendaySales = BigDecimal.valueOf(historySevenSales.longValue()).divide(Constant.BIGDECIMAL_SEVEN, 3, RoundingMode.HALF_EVEN);
BigDecimal avgHistoryFourteendaySales = BigDecimal.valueOf(historyFourteenSales.longValue()).divide(Constant.BIGDECIMAL_FOURTEEN, 3, RoundingMode.HALF_EVEN);
BigDecimal avgHistoryThirtydaySales = BigDecimal.valueOf(historyThirtySales.longValue()).divide(Constant.BIGDECIMAL_THIRTY, 3, RoundingMode.HALF_EVEN);
/*
* 通过SKU拿到供应商Id,
* 再去dc_average_purchase拿到平均交期
* 平均交期 - 供应商交期 > 0 就是平均逾期天数
*
* 平均逾期天数 * 加权平均销量(去最大值最小值)
* 为安全库存--即防止逾期缓冲所需库存
* 可以支持配置
* 2019-04-22更新 不管逾期
*/
BigDecimal totalSafeInventory = calculateSafeInventory(avgHistorySevendaySales, avgHistoryFourteendaySales, turnoverSku, bailunSku, warehouseCode, bailunFirstLevelCatagoryId, dcAutoSales, JSON.toJSONString(forecastSalesList), dcAutoTurnover);
Integer moq = turnoverSku.getMoq();
/*
* 预测库存 = 前一日库存 - 前一日销量(没有考虑实际缺货)
*
* 采购建议为周转期后那一天的销量 + 安全库存 - 预测库存 + 累计断货
* 如果有库存, 优先抵消断货数, 再去跟销量对比
*/
//通过SKU和仓库取预测销量
Integer inventoryAvailableDays = 0;
BigDecimal totalSales = BigDecimal.ZERO;//周转期总销量
BigDecimal totalInbound = BigDecimal.ZERO;//周转期总预计入库
BigDecimal moqDecimal = BigDecimal.valueOf(moq.longValue());
/*
* forecastFluctuationList 用于存放预计缺货 实际缺货 预计冗余 实际冗余的数据
* dcAutoConfigSkuWarehouse 看是否监控状态
......@@ -1077,7 +1082,7 @@ public class AutoTurnoverJob extends PointJob {
}
}
private BigDecimal calculateSafeInventory(DcBaseSku turnoverSku, String bailunSku, String warehouseCode, Integer
private BigDecimal calculateSafeInventory(BigDecimal avgHistorySevendaySales, BigDecimal avgHistoryFourteendaySales, DcBaseSku turnoverSku, String bailunSku, String warehouseCode, Integer
bailunFirstLevelCatagoryId, DcAutoSales dcAutoSales, String forecastSalesListJson, DcAutoTurnover dcAutoTurnover) {
/*
* 先判断是否JIT 仓库是广州01 warehouse_code 且是那三个销售员 turnoversku
......@@ -1090,41 +1095,35 @@ public class AutoTurnoverJob extends PointJob {
DcAutoJitTagMapper dcAutoJitTagMapper = SessionUtil.getSession().getMapper(DcAutoJitTagMapper.class);
List<DcAutoJitTag> dcAutoJitTags = dcAutoJitTagMapper.selectByExample(DcAutoJitTagExample.newAndCreateCriteria().example());
BigDecimal saveDays = BigDecimal.ZERO;
if(dcAutoSales.getSevendaySales() < 1) {
System.out.println(dcAutoSales.getSevendaySales());
}
if(dcAutoSales.getFourteendaySales() < 1) {
System.out.println(dcAutoSales.getFourteendaySales());
}
for(DcAutoJitTag dcAutoJitTag : dcAutoJitTags) {
if(dcAutoJitTag.getEnable7() == 1) {
switch (dcAutoJitTag.getIsGt7()){
case 1:
if(dcAutoSales.getSevendaySales() > dcAutoJitTag.getQuantitySales7().intValue()) {
if(avgHistorySevendaySales.compareTo(dcAutoJitTag.getQuantitySales7()) == 1) {
break;
}else {
continue;
}
case 2:
if(dcAutoSales.getSevendaySales() == dcAutoJitTag.getQuantitySales7().intValue()) {
if(avgHistorySevendaySales.compareTo(dcAutoJitTag.getQuantitySales7()) == 0) {
break;
}else {
continue;
}
case 3:
if(dcAutoSales.getSevendaySales() < dcAutoJitTag.getQuantitySales7().intValue()) {
if(avgHistorySevendaySales.compareTo(dcAutoJitTag.getQuantitySales7()) == -1) {
break;
}else {
continue;
}
case 4:
if(dcAutoSales.getSevendaySales() >= dcAutoJitTag.getQuantitySales7().intValue()) {
if(avgHistorySevendaySales.compareTo(dcAutoJitTag.getQuantitySales7()) > -1) {
break;
}else {
continue;
}
case 5:
if(dcAutoSales.getSevendaySales() <= dcAutoJitTag.getQuantitySales7().intValue()) {
if(avgHistorySevendaySales.compareTo(dcAutoJitTag.getQuantitySales7()) < 1) {
break;
}else {
continue;
......@@ -1136,31 +1135,31 @@ public class AutoTurnoverJob extends PointJob {
if(dcAutoJitTag.getEnable14() == 1) {
switch (dcAutoJitTag.getIsGt14()){
case 1:
if(dcAutoSales.getFourteendaySales() > dcAutoJitTag.getQuantitySales14().intValue()) {
if(avgHistoryFourteendaySales.compareTo(dcAutoJitTag.getQuantitySales14()) == 1) {
break;
}else {
continue;
}
case 2:
if(dcAutoSales.getFourteendaySales() == dcAutoJitTag.getQuantitySales14().intValue()) {
if(avgHistoryFourteendaySales.compareTo(dcAutoJitTag.getQuantitySales14()) == 0) {
break;
}else {
continue;
}
case 3:
if(dcAutoSales.getFourteendaySales() < dcAutoJitTag.getQuantitySales14().intValue()) {
if(avgHistoryFourteendaySales.compareTo(dcAutoJitTag.getQuantitySales14()) == -1) {
break;
}else {
continue;
}
case 4:
if(dcAutoSales.getFourteendaySales() >= dcAutoJitTag.getQuantitySales14().intValue()) {
if(avgHistoryFourteendaySales.compareTo(dcAutoJitTag.getQuantitySales14()) > -1) {
break;
}else {
continue;
}
case 5:
if(dcAutoSales.getFourteendaySales() <= dcAutoJitTag.getQuantitySales14().intValue()) {
if(avgHistoryFourteendaySales.compareTo(dcAutoJitTag.getQuantitySales14()) < 1) {
break;
}else {
continue;
......@@ -1174,8 +1173,8 @@ public class AutoTurnoverJob extends PointJob {
DcAutoJitTagLog dcAutoJitTagLog = new DcAutoJitTagLog();
dcAutoJitTagLog.setBailunSku(bailunSku);
dcAutoJitTagLog.setDate(LocalDate.now());
dcAutoJitTagLog.setQuantitySales7(new BigDecimal(dcAutoSales.getSevendaySales()));
dcAutoJitTagLog.setQuantitySales14(new BigDecimal(dcAutoSales.getFourteendaySales()));
dcAutoJitTagLog.setQuantitySales7(avgHistorySevendaySales);
dcAutoJitTagLog.setQuantitySales14(avgHistoryFourteendaySales);
dcAutoJitTagLog.setTagId(dcAutoJitTag.getId());
dcAutoJitTagLog.setTagJson(JSONObject.toJSONString(dcAutoJitTag));
dcAutoJitTagLogMapper.upsertSelective(dcAutoJitTagLog);
......
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