Commit 641beeb1 by 泽锋 李

新增销量预测配置

parent 79989cab
using AutoTurnOver.Models; using AutoTurnOver.DB.Base;
using AutoTurnOver.Models;
using AutoTurnOver.Models.Base;
using Bailun.ServiceFabric.Core;
using Dapper; using Dapper;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
...@@ -691,10 +694,11 @@ left join dc_base_warehouse as dbw on dacp.warehouse_code = dbw.warehouse_code w ...@@ -691,10 +694,11 @@ left join dc_base_warehouse as dbw on dacp.warehouse_code = dbw.warehouse_code w
public static List<dc_return_goods_not_push> ReturnGoodsList(List<string> skus) public static List<dc_return_goods_not_push> ReturnGoodsList(List<string> skus)
{ {
if (skus == null || skus.Count <= 0) { if (skus == null || skus.Count <= 0)
{
return new List<dc_return_goods_not_push>(); return new List<dc_return_goods_not_push>();
} }
return _connection.Query<dc_return_goods_not_push>(" select * from dc_return_goods_not_push where status=1 and bailun_sku in @skus ",new { skus = skus }).ToList(); return _connection.Query<dc_return_goods_not_push>(" select * from dc_return_goods_not_push where status=1 and bailun_sku in @skus ", new { skus = skus }).ToList();
} }
public static string BatchTortStatus(string ids, int tort_status, UserData user) public static string BatchTortStatus(string ids, int tort_status, UserData user)
...@@ -753,7 +757,7 @@ left join dc_base_warehouse as dbw on dacp.warehouse_code = dbw.warehouse_code w ...@@ -753,7 +757,7 @@ left join dc_base_warehouse as dbw on dacp.warehouse_code = dbw.warehouse_code w
} }
_connection.Execute("update dc_base_sku set gmt_modified=now() where bailun_sku = bailun_sku ",new { bailun_sku = turnover_item.bailun_sku }); _connection.Execute("update dc_base_sku set gmt_modified=now() where bailun_sku = bailun_sku ", new { bailun_sku = turnover_item.bailun_sku });
} }
return ""; return "";
...@@ -1511,5 +1515,105 @@ and start_date<=@end_date and end_date>=@start_date ...@@ -1511,5 +1515,105 @@ and start_date<=@end_date and end_date>=@start_date
} }
#endregion #endregion
#region 销量预测配置
public static Page<dc_auto_sales_forecast_config_dto> SalesForecastConfigList(dc_auto_sales_forecast_config_search_dto m)
{
var list = new List<dc_auto_sales_forecast_config_dto>();
try
{
var sql = @"select t1.*,t3.warehouse_name from dc_auto_sales_forecast_config as t1 left join dc_base_warehouse as t3 on t1.warehouse_code = t3.warehouse_code where 1 = 1 ";
DynamicParameters parameters = new DynamicParameters();
if (m.is_delete!=null)
{
sql += " and t1.is_delete=@is_delete ";
parameters.Add("is_delete", m.is_delete);
}
if (!string.IsNullOrEmpty(m.warehouse_code))
{
sql += " and t1.warehouse_code=@warehouse_code ";
parameters.Add("warehouse_code", m.warehouse_code);
}
else
{
if (!string.IsNullOrWhiteSpace(m.warehousetype))
{
sql += " and t3.hq_type=@warehousetype ";
parameters.Add("warehouse_code", m.warehousetype);
}
if (m.warehousearea > 0)
{
sql += " and t3.area_id=@area_id ";
parameters.Add("area_id", m.warehousearea);
}
}
var obj = _connection.Page<dc_auto_sales_forecast_config_dto>(sql, m);
return obj;
}
catch (Exception ex)
{
return new Page<dc_auto_sales_forecast_config_dto>();
}
}
public static void SaveSalesForecastConfig(Models.dc_auto_sales_forecast_config_dto input_data, string username)
{
var m = input_data.ToJson().ToObject<dc_auto_sales_forecast_config>();
using (var conn = _connection)
{
conn.Open();
using (var t = conn.BeginTransaction())
{
if (m.id > 0)
{
throw new Exception("数据不可修改,请作废重建");
var result = conn.Update<Models.dc_auto_sales_forecast_config>(m, t);
}
else
{
m.create_date = DateTime.Now;
var new_id = conn.Insert<Models.dc_auto_sales_forecast_config>(m, t);
if (input_data.bailun_skus != null)
{
foreach (var item in input_data.bailun_skus.Split(','))
{
conn.Insert(new dc_auto_sales_forecast_sku_config
{
bailun_sku = item,
config_id = new_id ?? 0
});
}
}
if (input_data.stages != null)
{
foreach (var item in input_data.stages)
{
item.config_id = new_id ?? 0;
conn.Insert(item);
}
}
}
t.Commit();
}
}
}
public static dc_auto_sales_forecast_config_dto GetSalesForecastConfigById(int id)
{
var data = _connection.QueryFirstOrDefault<dc_auto_sales_forecast_config_dto>("select * from dc_auto_sales_forecast_config where id=@id ", new { id = id });
data.bailun_skus = string.Join(",", _connection.Query<string>(" select bailun_sku from dc_auto_sales_forecast_sku_config where config_id=@config_id ", new { config_id = id }).ToList());
data.stages = _connection.Query<dc_auto_sales_forecast_stage_config>(" select * from dc_auto_sales_forecast_stage_config where config_id=@config_id ", new { config_id = id }).OrderBy(s=>s.index).ToList();
return data;
}
#endregion
} }
} }
using AutoTurnOver.Models.Base;
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models
{
/// <summary>
/// 销量预测配置模型
/// </summary>
public class dc_auto_sales_forecast_config
{
public int id { get; set; }
public string title { get; set; }
/// <summary>
/// 仓库类型,可以留空 例:中国仓, dc_base_warehouse.hq_type
/// </summary>
public string warehouse_type { get; set; }
/// <summary>
/// 国家,可以留空 例:美国,dc_base_warehouse.area_name
/// </summary>
public string warehouse_area_id { get; set; }
/// <summary>
/// 仓库编码,可以留空 dc_base_warehouse.warehouse_code
/// </summary>
public string warehouse_code { get; set; }
/// <summary>
/// 类目,例:推荐普货 dc_base_sku.product_type
/// </summary>
public string category { get; set; }
public DateTime create_date { get; set; }
public int level { get; set; }
public int is_delete { get; set; }
/// <summary>
/// 筛选类型 1 =根据入库时间筛选 2 = 根据销量筛选
/// </summary>
public int screen_type { get; set; }
}
public class dc_auto_sales_forecast_stage_config
{
public int config_id { get; set; }
public int index { get; set; }
/// <summary>
/// 首次入库距今多少时长,0 代表未配置。首次入库取值:dc_base_stock.first_inbound_date
/// </summary>
public int duration_upper_limit { get; set; }
public int duration_lower_limit { get; set; }
/// <summary>
/// 销量上限,例:10.1,加权日均销量 <= 10.1; dc_auto_turnover.daily_weighted_sales (注意:这个字段正是周转算法要算的不能直接取)
/// </summary>
public decimal sales_upper_limit { get; set; }
/// <summary>
/// 销量下限,例:0 加权日均销量 >= 0; dc_auto_turnover.daily_weighted_sales
/// </summary>
public decimal sales_lower_limit { get; set; }
/// <summary>
/// 阶段一的比例,例:0.33 代表 从今天 ~ (供应链长度*0.33)天 的日期全部采用第一阶段的算法;
/// </summary>
public decimal one_ratio { get; set; }
/// <summary>
/// 阶段二的比例,例:0.33 代表 从第一阶段的最后一天 ~ (供应链长度*0.33)天 的日期全部采用第二阶段的算法;
/// </summary>
public decimal two_ratio { get; set; }
/// <summary>
/// 阶段三的比例,例:0.33 代表 从第二阶段的最后一天 ~ (供应链长度*0.33)天 的日期全部采用第三阶段的算法
/// </summary>
public decimal three_ratio { get; set; }
public decimal one_n1 { get; set; }
public decimal one_n2 { get; set; }
public decimal one_n3 { get; set; }
public decimal one_n4 { get; set; }
public decimal one_n5 { get; set; }
public decimal one_n6 { get; set; }
public decimal two_n1 { get; set; }
public decimal two_n2 { get; set; }
public decimal two_n3 { get; set; }
public decimal two_n4 { get; set; }
public decimal two_n5 { get; set; }
public decimal two_n6 { get; set; }
public decimal three_n1 { get; set; }
public decimal three_n2 { get; set; }
public decimal three_n3 { get; set; }
public decimal three_n4 { get; set; }
public decimal three_n5 { get; set; }
public decimal three_n6 { get; set; }
}
public class dc_auto_sales_forecast_config_dto: dc_auto_sales_forecast_config
{
public string bailun_skus { get; set; }
public string warehouse_name { get; set; }
public List<dc_auto_sales_forecast_stage_config> stages { get; set; }
}
public class dc_auto_sales_forecast_config_search_dto: page_search_dto
{
public string bailun_sku { get; set; }
public string warehousetype { get; set; }
public int? warehousearea { get; set; }
public string warehouse_code { get; set; }
public int? is_delete { get; set; }
}
public class dc_auto_sales_forecast_sku_config
{
public int id { get; set; }
public int config_id { get; set; }
public string bailun_sku { get; set; }
}
}
...@@ -5,6 +5,7 @@ using System.Data; ...@@ -5,6 +5,7 @@ using System.Data;
using System.IO; using System.IO;
using AutoTurnOver.Utility; using AutoTurnOver.Utility;
using System.Linq; using System.Linq;
using AutoTurnOver.Models.Base;
namespace AutoTurnOver.Services namespace AutoTurnOver.Services
{ {
...@@ -744,5 +745,24 @@ namespace AutoTurnOver.Services ...@@ -744,5 +745,24 @@ namespace AutoTurnOver.Services
} }
#endregion #endregion
#region 销量预测配置
public Page<dc_auto_sales_forecast_config_dto> SalesForecastConfigList(dc_auto_sales_forecast_config_search_dto m)
{
return DB.db_config.SalesForecastConfigList(m);
}
public void SaveSalesForecastConfig(Models.dc_auto_sales_forecast_config_dto m, string username)
{
DB.db_config.SaveSalesForecastConfig(m, username);
}
public dc_auto_sales_forecast_config_dto GetSalesForecastConfigById(int id)
{
return DB.db_config.GetSalesForecastConfigById(id);
}
#endregion
} }
} }
...@@ -60,7 +60,7 @@ namespace AutoTurnOver.Controllers ...@@ -60,7 +60,7 @@ namespace AutoTurnOver.Controllers
[UseAction] [UseAction]
public JsonResult SaveInventory([FromBody]dc_auto_config_safe_inventory m) public JsonResult SaveInventory([FromBody]dc_auto_config_safe_inventory m)
{ {
var result = new Services.ConfigServices().SaveInventory(m,""); var result = new Services.ConfigServices().SaveInventory(m, "");
return new JsonResult(result); return new JsonResult(result);
} }
...@@ -279,7 +279,7 @@ namespace AutoTurnOver.Controllers ...@@ -279,7 +279,7 @@ namespace AutoTurnOver.Controllers
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpGet] [HttpGet]
public JsonResult MonitorStatus(string bailun_sku,string warehouse_code,int monitor_status) public JsonResult MonitorStatus(string bailun_sku, string warehouse_code, int monitor_status)
{ {
var user = AutoUtility.GetUser(); var user = AutoUtility.GetUser();
if (user == null) return null; if (user == null) return null;
...@@ -317,7 +317,7 @@ namespace AutoTurnOver.Controllers ...@@ -317,7 +317,7 @@ namespace AutoTurnOver.Controllers
/// <returns></returns> /// <returns></returns>
[HttpGet] [HttpGet]
[UseAction] [UseAction]
public JsonResult StockFbaList(int limit, int offset, string order, string sort, string bailun_sku,string platform_sku, string warehousecode, string warehousetype, int? warehousearea) public JsonResult StockFbaList(int limit, int offset, string order, string sort, string bailun_sku, string platform_sku, string warehousecode, string warehousetype, int? warehousearea)
{ {
var m = new Condition_ConfigPromotion var m = new Condition_ConfigPromotion
{ {
...@@ -375,7 +375,7 @@ namespace AutoTurnOver.Controllers ...@@ -375,7 +375,7 @@ namespace AutoTurnOver.Controllers
{ {
return new JsonResult(ex.Message); return new JsonResult(ex.Message);
} }
} }
...@@ -582,11 +582,11 @@ namespace AutoTurnOver.Controllers ...@@ -582,11 +582,11 @@ namespace AutoTurnOver.Controllers
try try
{ {
new Services.ConfigServices().BatchStockUp(data); new Services.ConfigServices().BatchStockUp(data);
return new JsonResult(new { success = true}); return new JsonResult(new { success = true });
} }
catch (Exception ex) catch (Exception ex)
{ {
return new JsonResult(new { success = false ,message = ex.Message }); return new JsonResult(new { success = false, message = ex.Message });
} }
} }
...@@ -663,9 +663,9 @@ namespace AutoTurnOver.Controllers ...@@ -663,9 +663,9 @@ namespace AutoTurnOver.Controllers
} }
catch (Exception ex) catch (Exception ex)
{ {
return new RequestResultDto { success = false, message = ex.Message,err_data = ex.StackTrace }; return new RequestResultDto { success = false, message = ex.Message, err_data = ex.StackTrace };
} }
} }
#endregion #endregion
...@@ -730,5 +730,58 @@ namespace AutoTurnOver.Controllers ...@@ -730,5 +730,58 @@ namespace AutoTurnOver.Controllers
var result = new Services.ConfigServices().BatchReturnGoodsStatus(ids, monitor_status, user); var result = new Services.ConfigServices().BatchReturnGoodsStatus(ids, monitor_status, user);
return new JsonResult(result); return new JsonResult(result);
} }
#region 销量预测模型配置
#region 暴增配置
[HttpGet]
public JsonResult SalesForecastConfigList(int limit, int offset, string order, string sort, string warehousecode, string warehousetype, int? warehousearea, string bailun_sku)
{
var m = new dc_auto_sales_forecast_config_search_dto
{
warehouse_code = warehousecode,
warehousetype = warehousetype,
warehousearea = warehousearea,
bailun_sku = bailun_sku,
page = (offset / limit) + 1,
rows = limit
};
var total = 0;
var service = new Services.ConfigServices();
var list = service.SalesForecastConfigList(m);
return new JsonResult(new
{
rows = list,
total = total,
});
}
[HttpPost]
public JsonResult SaveSalesForecastConfig([FromBody]dc_auto_sales_forecast_config_dto m)
{
try
{
new Services.ConfigServices().SaveSalesForecastConfig(m, "");
return new JsonResult("");
}
catch (Exception ex)
{
return new JsonResult(ex.Message);
}
}
[HttpGet]
public JsonResult GetSalesForecastConfigById(int id)
{
var m = new Services.ConfigServices().GetSalesForecastConfigById(id);
return new JsonResult(m);
}
#endregion
#endregion
} }
} }
\ No newline at end of file
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