Commit 6b33b226 by 泽锋 李

fix

parent 718b7832
......@@ -400,6 +400,7 @@ namespace AutoTurnOver.Services
List<dc_auto_purchase_advise_detailed_dto> datas = new List<dc_auto_purchase_advise_detailed_dto>();
var total = 0;
System.Threading.Thread.Sleep( 10 * 1000);
datas.AddRange(PurchaseAdviseServices.DetailList(new dc_auto_purchase_advise_detailed_search_dto { data_base_type = 1, main_id = mainID, ispush = false }, 0, int.MaxValue, ref total));
Console.WriteLine($"查询建议数,total:{datas.Count}");
//datas.AddRange(PurchaseAdviseServices.DetailList(new dc_auto_purchase_advise_detailed_search_dto { main_id = mainID, ispush = false }, 0, int.MaxValue, ref total));
......
......@@ -30,131 +30,138 @@ namespace AutoTurnOver.Controllers
/// <returns></returns>
public JsonResult ForecastSalePutinStockShort(string sku, string warehousecode)
{
var services = new Services.ReportServices();
var result = services.ForecastSalePutinStockShort(sku, warehousecode);
var count = 0;
foreach (var item in result)
try
{
var arr = item.Split(',');
var services = new Services.ReportServices();
var result = services.ForecastSalePutinStockShort(sku, warehousecode);
if (arr.Length > 1)
var count = 0;
foreach (var item in result)
{
count = arr.Length;
break;
}
}
var arr = item.Split(',');
// 提前查询周系数公式
var dc_base_week_coefficient_datas = MyMySqlConnection._connection_read_only.Query<dc_base_week_coefficient>(" select * from dc_base_week_coefficient where bailun_sku_warehouse_code=@bailun_sku_warehouse_code ", new
{
bailun_sku_warehouse_code = $"{sku}{warehousecode}"
});
// 提前查询销量配置
var sales_day_config_datas = MyMySqlConnection._connection_read_only.Query<sales_day_config>(" select * from sales_day_config where bailun_sku_warehouse_code=@bailun_sku_warehouse_code ", new
{
bailun_sku_warehouse_code = $"{sku}{warehousecode}"
});
if (arr.Length > 1)
{
count = arr.Length;
break;
}
}
//[0.13, 0.12, 0.11, 0.11, 0.1, 0.09, 0.09, 0.08, 0.08, 0.07, 0.06, 0.06, 0.05, 0.04, 0.04, 0.03, 0.02, 0.02, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
// 提前查询周系数公式
var dc_base_week_coefficient_datas = MyMySqlConnection._connection_read_only.Query<dc_base_week_coefficient>(" select * from dc_base_week_coefficient where bailun_sku_warehouse_code=@bailun_sku_warehouse_code ", new
{
bailun_sku_warehouse_code = $"{sku}{warehousecode}"
});
// 提前查询销量配置
var sales_day_config_datas = MyMySqlConnection._connection_read_only.Query<sales_day_config>(" select * from sales_day_config where bailun_sku_warehouse_code=@bailun_sku_warehouse_code ", new
{
bailun_sku_warehouse_code = $"{sku}{warehousecode}"
});
var turnover_date = MyMySqlConnection._connection_read_only.QueryFirstOrDefault<DateTime>(" select gmt_modified from dc_auto_turnover where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new
{
bailun_sku = sku,
warehouse_code = warehousecode
});
//[0.13, 0.12, 0.11, 0.11, 0.1, 0.09, 0.09, 0.08, 0.08, 0.07, 0.06, 0.06, 0.05, 0.04, 0.04, 0.03, 0.02, 0.02, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
var date = new List<string>();
var today = turnover_date.AddDays(-7);
var weeks = new List<dynamic>();
var sales_day_configs = new List<dynamic>();
for (var i = 0; i < count; i++)
{
var dateI = today.AddDays(i);
date.Add(dateI.ToString("MM/dd"));
}
for (var i = -7; i < count; i++)
{
var dateI = today.AddDays(i+7);
var date_str = dateI.ToString("yyyy-MM-dd");
var weekItem = dc_base_week_coefficient_datas.FirstOrDefault(s => s.week == (int)dateI.DayOfWeek);
if (weekItem != null)
{
weeks.Add(new { value = weekItem.coefficient, date = dateI.ToString("MM/dd"), formula = $" ( {weekItem.formula} )",val= $"{weekItem.coefficient}" });
}
else
var turnover_date = MyMySqlConnection._connection_read_only.QueryFirstOrDefault<DateTime>(" select gmt_modified from dc_auto_turnover where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new
{
weeks.Add(new { value = 1, date = dateI.ToString("MM/dd"), formula = "-",val="-" });
}
var sales_day_configItem = sales_day_config_datas.FirstOrDefault(s => s.date_str == date_str);
if (sales_day_configItem != null)
bailun_sku = sku,
warehouse_code = warehousecode
});
var date = new List<string>();
var today = turnover_date.AddDays(-7);
var weeks = new List<dynamic>();
var sales_day_configs = new List<dynamic>();
for (var i = 0; i < count; i++)
{
sales_day_configs.Add(new { date = date_str, id = sales_day_configItem.id, val = sales_day_configItem.sales });
var dateI = today.AddDays(i);
date.Add(dateI.ToString("MM/dd"));
}
else
for (var i = -7; i < count; i++)
{
sales_day_configs.Add(new { date = date_str, id = 0, val = 0});
var dateI = today.AddDays(i + 7);
var date_str = dateI.ToString("yyyy-MM-dd");
var weekItem = dc_base_week_coefficient_datas.FirstOrDefault(s => s.week == (int)dateI.DayOfWeek);
if (weekItem != null)
{
weeks.Add(new { value = weekItem.coefficient, date = dateI.ToString("MM/dd"), formula = $" ( {weekItem.formula} )", val = $"{weekItem.coefficient}" });
}
else
{
weeks.Add(new { value = 1, date = dateI.ToString("MM/dd"), formula = "-", val = "-" });
}
var sales_day_configItem = sales_day_config_datas.FirstOrDefault(s => s.date_str == date_str);
if (sales_day_configItem != null)
{
sales_day_configs.Add(new { date = date_str, id = sales_day_configItem.id, val = sales_day_configItem.sales });
}
else
{
sales_day_configs.Add(new { date = date_str, id = 0, val = 0 });
}
}
}
var names = new List<string>() { "销量", "计算公式", "计算规则", "预计入库", "可用库存", "预计缺货数量", "特殊销量", "市场因素", "建议下单数量", "人工下单数量" };
var turnoverData = new Services.SkuAutoTurnServices().GetModel(sku, warehousecode);
var saleVolumeData = new Services.SaleVolumeServices().GetBySkuWarehouseCode(sku, warehousecode);
var averageTargets = PurchaseAverageTargetServices.GetListByWCode(sku, warehousecode);
var averageTargetWarehouse = PurchaseAverageTargetServices.GetWarehouse(sku, warehousecode);
DateTime turnoverDate = DateTime.Now.AddDays(turnoverData.turnover_days);
var names = new List<string>() { "销量", "计算公式", "计算规则", "预计入库", "可用库存", "预计缺货数量", "特殊销量", "市场因素", "建议下单数量", "人工下单数量" };
var turnoverData = new Services.SkuAutoTurnServices().GetModel(sku, warehousecode);
var saleVolumeData = new Services.SaleVolumeServices().GetBySkuWarehouseCode(sku, warehousecode);
var averageTargets = PurchaseAverageTargetServices.GetListByWCode(sku, warehousecode);
var averageTargetWarehouse = PurchaseAverageTargetServices.GetWarehouse(sku, warehousecode);
DateTime turnoverDate = DateTime.Now.AddDays(turnoverData.turnover_days);
// 计算到周转期前一天的累计销量
decimal turnoverDatecumulativeSales = 0;
var salesList = result[0].ToObj<List<decimal>>();
for (int i = 7; i < turnoverData.turnover_days + 7 - 1; i++)
{
salesList[i] = Math.Round( salesList[i] * weeks[i].value,0);
turnoverDatecumulativeSales += salesList[i];
}
// 计算到周转期前一天的累计销量
decimal turnoverDatecumulativeSales = 0;
var salesList = result[0].ToObj<List<decimal>>();
for (int i = 7; i < turnoverData.turnover_days + 7 - 1; i++)
{
salesList[i] = Math.Round(salesList[i] * weeks[i].value, 0);
turnoverDatecumulativeSales += salesList[i];
}
//result[0] = salesList.ToJson();
//result[0] = salesList.ToJson();
// 累计预计到货
decimal turnoverDatepurchase = 0;
var purchaseList = result[3].ToObj<List<decimal>>();
for (int i = 7; i < turnoverData.turnover_days + 7; i++)
{
turnoverDatepurchase += purchaseList[i];
}
// 累计预计到货
decimal turnoverDatepurchase = 0;
var purchaseList = result[3].ToObj<List<decimal>>();
for (int i = 7; i < turnoverData.turnover_days + 7; i++)
{
turnoverDatepurchase += purchaseList[i];
}
// 当日预测销量
var turnoverDateSales = (int)result[0].ToObj<List<decimal>>()[turnoverData.turnover_days + 7 - 1];
var buyFormula = new
{
turnoverDateStr = turnoverDate.ToString("yyyy-MM-dd"), // 取值日期
turnoverDateSales = turnoverDateSales, // 当日预测销量
turnoverDateStock = (int)result[4].ToObj<List<decimal>>()[turnoverData.turnover_days + 7 - 1], // 当日预测库存,
turnoverDatecumulativeSales = (int)turnoverDatecumulativeSales, // 累计销量
nowStr = DateTime.Now.ToString("yyyy-MM-dd"), // 今天的日期
nowShortage = (int)result[5].ToObj<List<decimal>>()[7], // 今天的实际缺货
cumulativeShortageDate = turnoverDate.AddDays(-1).ToString("yyyy-MM-dd"),// 一直到周转期前一天的日期
cumulativeShortage = (int)result[5].ToObj<List<decimal>>()[turnoverData.turnover_days + 7 - 1], // 一直到周转期前一天的累计缺货
average_overdue = Math.Max(0, turnoverData.average_overdue),
nowDateStock = (int)result[4].ToObj<List<decimal>>()[7], // 今天的预测库存
turnoverDatepurchase = turnoverDatepurchase // 累计预计到货
};
return new JsonResult(new
// 当日预测销量
var turnoverDateSales = (int)result[0].ToObj<List<decimal>>()[turnoverData.turnover_days + 7 - 1];
var buyFormula = new
{
turnoverDateStr = turnoverDate.ToString("yyyy-MM-dd"), // 取值日期
turnoverDateSales = turnoverDateSales, // 当日预测销量
turnoverDateStock = (int)result[4].ToObj<List<decimal>>()[turnoverData.turnover_days + 7 - 1], // 当日预测库存,
turnoverDatecumulativeSales = (int)turnoverDatecumulativeSales, // 累计销量
nowStr = DateTime.Now.ToString("yyyy-MM-dd"), // 今天的日期
nowShortage = (int)result[5].ToObj<List<decimal>>()[7], // 今天的实际缺货
cumulativeShortageDate = turnoverDate.AddDays(-1).ToString("yyyy-MM-dd"),// 一直到周转期前一天的日期
cumulativeShortage = (int)result[5].ToObj<List<decimal>>()[turnoverData.turnover_days + 7 - 1], // 一直到周转期前一天的累计缺货
average_overdue = Math.Max(0, turnoverData.average_overdue),
nowDateStock = (int)result[4].ToObj<List<decimal>>()[7], // 今天的预测库存
turnoverDatepurchase = turnoverDatepurchase // 累计预计到货
};
return new JsonResult(new
{
data = result,
weeks = weeks,
sales_day_configs = sales_day_configs,
turnoverData,
saleVolumeData,
days = date,
names,
averageTargets,
averageTargetWarehouse,
buyFormula
}
);
}
catch (Exception ex)
{
data = result,
weeks = weeks,
sales_day_configs = sales_day_configs,
turnoverData,
saleVolumeData,
days = date,
names,
averageTargets,
averageTargetWarehouse,
buyFormula
return new JsonResult(new { s= ex.Message,ss = ex.StackTrace });
}
);
}
/// <summary>
......
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