Commit 38004606 by 泽锋 李

出一波全量备货需求

parent 31c9aa2c
......@@ -18,7 +18,7 @@ namespace AutoGeneratePurchaseAdvise
try
{
//PurchaseAdviseServices.Generate(DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")));
PurchaseAdviseServices.Generate(DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")));
//PurchaseAdviseServices.Generate(DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 12:00:00")));
//PurchaseAdviseServices.GenerateTemp(DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 13:13:00")));
......
......@@ -428,6 +428,137 @@ where 1 = 1 ";
public decimal unit_price { get; set; }
public decimal stock { get; set; }
}
/// <summary>
/// 计算可以退货的sku
/// </summary>
public static void NewCalculation()
{
var conn = _connection;
var configs = conn.Query<dc_auto_return_goods_config>(" select * from dc_auto_return_goods_config where status=0 ");
foreach (var item in configs)
{
var skus = NewGetSkus(MyMySqlConnection._connection_read_only, item);
if (skus != null && skus.Count >= 1)
{
var max_days = Math.Max(item.sales_days_1, item.sales_days_2);
// 销量过滤
foreach (var itemSku in skus)
{
var order_dates = GetOrderDateList(MyMySqlConnection._connection_read_only, itemSku.bailun_sku, itemSku.warehouse_code, Math.Max(30, max_days));
var sales_days_1_date = DateTime.Now.AddDays(0 - item.sales_days_1).ToDayHome();
var sales_days_1_val = order_dates.Where(s => s.paid_time >= sales_days_1_date).Sum(s => s.bailun_sku_quantity_ordered);
var sales_days_2_date = DateTime.Now.AddDays(0 - item.sales_days_2).ToDayHome();
var sales_days_2_val = order_dates.Where(s => s.paid_time >= sales_days_2_date).Sum(s => s.bailun_sku_quantity_ordered);
var sales_days_14_date = DateTime.Now.AddDays(0 - 14).ToDayHome();
var sales_days_7_date = DateTime.Now.AddDays(0 - 7).ToDayHome();
var sales_days_30_date = DateTime.Now.AddDays(0 - 30).ToDayHome();
var temp_val = (sales_days_1_val * item.sales_weight_1) + (sales_days_2_val * item.sales_weight_2);
var sales_days_7_val = order_dates.Where(s => s.paid_time >= sales_days_7_date).Sum(s => s.bailun_sku_quantity_ordered);
var sales_days_14_val = order_dates.Where(s => s.paid_time >= sales_days_14_date).Sum(s => s.bailun_sku_quantity_ordered);
var sales_days_30_val = order_dates.Where(s => s.paid_time >= sales_days_30_date).Sum(s => s.bailun_sku_quantity_ordered);
if (temp_val < item.sales_average_upper_limit)
{
var new_data = new dc_auto_return_goods_sku
{
approval_remarks = "",
bailun_sku = itemSku.bailun_sku,
monitor_status = "",
config_id = item.id,
config_name = item.title,
create_date = DateTime.Now,
no_library_sys_out_status = 0,
no_library_sys_push_status = 0,
oms_out_status = 0,
oms_push_status = 0,
retun_quantity = 0,
sales_average_14 = order_dates.Where(s => s.paid_time >= sales_days_14_date).Sum(s => s.bailun_sku_quantity_ordered),
sales_average_7 = order_dates.Where(s => s.paid_time >= sales_days_7_date).Sum(s => s.bailun_sku_quantity_ordered),
sales_average_weight = (sales_days_7_val * 0.5M) + (sales_days_14_val * 0.25M) + (sales_days_30_val * 0.25M),
sku_title = itemSku.sku_title,
status = 0,
stock = itemSku.stock,
stock_amount = itemSku.stock * itemSku.unit_price,
unit_price = itemSku.unit_price,
suppliers_id = itemSku.suppliers_id,
suppliers_name = itemSku.suppliers_name,
warehouse_code = itemSku.warehouse_code,
warehouse_name = itemSku.warehouse_name,
approval_date = new DateTime(1991, 1, 1)
};
conn.Insert(new_data);
}
}
}
}
}
/// <summary>
/// 查询规则命中的sku
/// </summary>
/// <param name="conn"></param>
/// <param name="config"></param>
/// <returns></returns>
public static List<sku_dto> NewGetSkus(MySqlConnection conn, dc_auto_return_goods_config config)
{
var sql = @" select
t1.bailun_sku,
t1.warehouse_code,
t3.warehouse_name,
t2.sku_title_cn as 'sku_title',
t2.suppliers_id,
t2.suppliers_name,
t2.unit_price,
t1.usable_stock as 'stock'
from dc_base_stock as t1
left join dc_base_sku as t2 on t1.bailun_sku = t2.bailun_sku
left join dc_base_warehouse as t3 on t1.warehouse_code = t3.warehouse_code
left join dc_base_supplier as t4 on t2.suppliers_id = t4.sup_value
where t1.usable_stock>0
";
DynamicParameters parameters = new DynamicParameters();
if (!string.IsNullOrWhiteSpace(config.warehouse_code))
{
sql += " and t1.warehouse_code =@warehouse_code ";
parameters.Add("warehouse_code", config.warehouse_code);
}
if (!string.IsNullOrWhiteSpace(config.bailun_skus))
{
sql += " and t1.bailun_skus in @bailun_skus ";
parameters.Add("bailun_skus", config.bailun_skus.Split(',').ToList());
}
if (!string.IsNullOrWhiteSpace(config.bailun_skus))
{
sql += " and t1.bailun_skus in @bailun_skus ";
parameters.Add("bailun_skus", config.bailun_skus.Split(',').ToList());
}
if (config.has_no_library == 1)
{
sql += " and t4.nostock =1 ";
}
if (config.has_return == 1)
{
sql += " and t4.isaccept_refund =1 ";
}
if (config.suppliers_id > 0)
{
sql += " and t2.suppliers_id =@suppliers_id ";
parameters.Add("suppliers_id", config.suppliers_id);
}
if (config.first_inbound_days_min > 0)
{
sql += " and t1.first_inbound_date <= @first_inbound_days_min ";
parameters.Add("first_inbound_days_min", DateTime.Now.AddDays(0 - (int)config.first_inbound_days_min));
}
if (config.first_inbound_days_max > 0)
{
sql += " and t1.first_inbound_date >= @first_inbound_days_max ";
parameters.Add("first_inbound_days_max", DateTime.Now.AddDays(0 - (int)config.first_inbound_days_max));
}
return conn.Query<sku_dto>(sql, parameters).AsList();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models
{
/// <summary>
/// 退货汇总
/// </summary>
public class dc_aims_return_goods
{
public int id { get; set; }
public DateTime date { get; set; }
public string rule_title { get; set; }
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
public string warehouse_name { get; set; }
public decimal stock { get; set; }
public decimal retuen_goods_count { get; set; }
public string buy_name { get; set; }
public string suppliers_name { get; set; }
public decimal unit_price { get; set; }
public string purchase_id { get; set; }
public decimal purchase_count { get; set; }
public string order_1688_no { get; set; }
public DateTime sign_date { get; set; }
public DateTime latest_return_date { get; set; }
public string return_addrs { get; set; }
public decimal confirm_return_count { get; set; }
}
}
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