Commit 4ba39c6c by 泽锋 李

新增计算退款sku的服务

parent ba530339
......@@ -1849,7 +1849,7 @@ where 1 = 1 ";
{
throw new Exception("系统异常 供应商不存在");
}
m.suppliers_id = supplierData.id;
m.suppliers_id = supplierData.sup_value;
}
else
{
......
using AutoTurnOver.Models;
using Bailun.ServiceFabric;
using Dapper;
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AutoTurnOver.Utility;
namespace AutoTurnOver.DB
{
public class dc_auto_return_goods_config_dao : connectionHelper
{
/// <summary>
/// 计算可以退货的sku
/// </summary>
public static void Calculation()
{
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 = GetSkus(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
};
conn.Insert(new_data);
}
}
}
}
}
/// <summary>
/// 查询规则命中的sku
/// </summary>
/// <param name="conn"></param>
/// <param name="config"></param>
/// <returns></returns>
public static List<sku_dto> GetSkus(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 (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();
}
/// <summary>
/// 查询订单时间
/// </summary>
/// <param name="bailun_sku"></param>
/// <param name="warehouse_code"></param>
/// <param name="days">天数</param>
/// <returns></returns>
public static List<order_dto> GetOrderDateList(MySqlConnection conn, string bailun_sku, string warehouse_code, int days)
{
var table_name = "dc_base_oms_sku_30";
if (days > 30)
{
table_name = "dc_base_oms_sku";
}
var sql = $@" select paid_time,bailun_sku_quantity_ordered from {table_name} where
has_delete = 0
and has_scalp = 0
and has_buyer_remark = 0
and has_platsku_remark = 0
and has_innersale = 0
and bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("bailun_sku", bailun_sku);
parameters.Add("warehouse_code", warehouse_code);
if (days != 30)
{
sql += " paid_time>=@days ";
parameters.Add("days", DateTime.Now.AddDays(0 - days).ToString("yyyy-MM-dd 00:00:00"));
}
return conn.Query<order_dto>(sql, parameters).AsList();
}
public class order_dto
{
public DateTime paid_time { get; set; }
public int bailun_sku_quantity_ordered { get; set; }
}
public class sku_dto
{
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
public string warehouse_name { get; set; }
public string sku_title { get; set; }
public int suppliers_id { get; set; }
public string suppliers_name { get; set; }
public decimal unit_price { get; set; }
public decimal stock { get; set; }
}
}
}
......@@ -20,7 +20,7 @@ namespace AutoTurnOver.Models
public decimal first_inbound_days_max { get; set; }
public int sales_days_1 { get; set; }
public decimal sales_weight_1 { get; set; }
public decimal sales_days_2 { get; set; }
public int sales_days_2 { get; set; }
public decimal sales_weight_2 { get; set; }
public decimal sales_average_upper_limit { get; set; }
public DateTime create_date { get; set; }
......
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models
{
public class dc_auto_return_goods_sku
{
public int id { get; set; }
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
public string warehouse_name { get; set; }
public int config_id { get; set; }
public string config_name { get; set; }
public DateTime create_date { get; set; }
public string monitor_status { get; set; }
public string sku_title { get; set; }
public int suppliers_id { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
public string suppliers_name { get; set; }
/// <summary>
/// 单价
/// </summary>
public decimal unit_price { get; set; }
/// <summary>
/// 可用库存
/// </summary>
public decimal stock { get; set; }
/// <summary>
/// 库存金额
/// </summary>
public decimal stock_amount { get; set; }
/// <summary>
/// 7 日日均销量
/// </summary>
public decimal sales_average_7 { get; set; }
/// <summary>
/// 14 日日均销量
/// </summary>
public decimal sales_average_14 { get; set; }
/// <summary>
/// 加权日均销量
/// </summary>
public decimal sales_average_weight { get; set; }
/// <summary>
/// 退货数量
/// </summary>
public decimal retun_quantity { get; set; }
/// <summary>
/// 待审核=0, 已审核=1, 驳回=-1
/// </summary>
public decimal status { get; set; }
public string approval_remarks { get; set; }
/// <summary>
/// 未推送= 0,已推送=1
/// </summary>
public int oms_push_status { get; set; }
/// <summary>
/// 未出库=0 , 已出库=1
/// </summary>
public int oms_out_status { get; set; }
/// <summary>
/// 未推送= 0,已推送=1
/// </summary>
public int no_library_sys_push_status { get; set; }
/// <summary>
/// 未出库=0 , 已出库=1
/// </summary>
public int no_library_sys_out_status { get; set; }
}
}
......@@ -46,6 +46,12 @@ namespace AutoTurnOver.Purchase.AverageTarget
{
var now = DateTime.Now;
// 判断是不是指定的时间
if (now.Hour == 00 && now.Minute == 20)
{
Console.WriteLine($"开始 计算退款sku,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
dc_auto_return_goods_config_dao.Calculation();
Console.WriteLine($"结束 计算退款sku,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
} // 判断是不是指定的时间
if (now.Hour == 23 && now.Minute == 58)
{
Console.WriteLine($"开始同步sku刊登状态,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
......
......@@ -21,6 +21,16 @@ namespace AutoTurnOver.Purchase.AverageTarget
static async Task Main(string[] args)
{
Console.WriteLine("采购平均值计算任务启动...");
try
{
}
catch (Exception ex)
{
throw;
}
// 创建采购计划
//Console.WriteLine($"开始同步sku刊登状态,线程Id:{Thread.CurrentThread.ManagedThreadId},{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
//report_cash_flow_forecast_dao.Calculation();
......
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