Commit 8a52b732 by 泽锋 李

fix

parent 728ecb89
......@@ -104,5 +104,45 @@ namespace AutoTurnOver.DB
throw new Exception("pps sku 刊登状态接口异常: " + ex.StackTrace);
}
}
/// <summary>
/// 获取预估物流费用
/// </summary>
/// <returns></returns>
public static api_logistic_query_result_dto.line_dto GetFilterLogisticsAssignLine(api_logistic_query_input_dto data)
{
try
{
var parameter_str = $"?LineCodes={data.LineCodes}";
parameter_str += $"endCountries={data.endCountries}";
parameter_str += $"Long={data.Long}";
parameter_str += $"width={data.width}";
parameter_str += $"high={data.high}";
parameter_str += $"weightKg={data.weightKg}";
parameter_str += $"startPoint={data.startPoint}";
parameter_str += $"warehouseNo={data.warehouseNo}";
//parameter_str += $"orderPriceCNY={data.orderPriceCNY}";
parameter_str += $"platform={data.platform}";
parameter_str += $"Site={data.Site}";
//查询采购建议明细
string url = ConfigHelper.GetValue("ApiLogisticsGetFilterLogisticsAssignLine");
string resultStr = HttpHelper.Request(url, RequestType.GET, parameter_str, timeout: 1000 * 60 * 60 * 24);
var result = resultStr.ToObj<api_logistic_query_result_dto>();
if (result == null || result.successLines == null || result.successLines.Count <= 0)
{
throw new Exception("未查询到物流费用");
}
else
{
return result.successLines[0];
}
}
catch (Exception ex)
{
throw new Exception(" lms 接口异常: " + ex.Message);
throw new Exception(" lms 接口异常: " + ex.StackTrace);
}
}
}
}
......@@ -33,7 +33,8 @@ t2.history_fourteenday_sales,
t2.history_thirtyday_sales,
( case when t5.`status`=0 or t5.`status` is null then 0 else 1 end ) as 'monitor_status',
t6.usable_stock,
t3.moq
t3.moq,
t6.`character`
from
dc_auto_forecast_fluctuation as t1
inner JOIN dc_auto_turnover as t2 on t1.bailun_sku = t2.bailun_sku and t1.warehouse_code = t2.warehouse_code
......@@ -66,6 +67,11 @@ where 1 = 1
sql += " and t1.bailun_sku=@bailun_sku ";
parameters.Add("bailun_sku", data.sku);
}
if (!string.IsNullOrWhiteSpace(data.character))
{
sql += " and t1.bailun_sku=@bailun_sku ";
parameters.Add("character", data.character);
}
if (!string.IsNullOrWhiteSpace(data.warehouse_code))
{
sql += " and t1.warehouse_code=@warehouse_code ";
......
......@@ -1756,7 +1756,38 @@ truncate table dc_base_sku_sum_temp;
", commandTimeout: 0);
_connection.Execute(@" -- 刷新 数据特性
set session transaction isolation level read uncommitted;
start transaction;
-- 清空视图表的数据
Truncate table dc_base_data_character_temp;
insert into dc_base_data_character_temp(`character`, `bailun_sku`, `warehouse_code`)
select '无库' as 'character',bailun_sku,warehouse_code from dc_base_stock where warehouse_code in ('BLGZ03','YWWH01');
insert into dc_base_data_character_temp(`character`, `bailun_sku`, `warehouse_code`)
select '自产' as 'character',t1.bailun_sku,t1.warehouse_code from dc_base_stock as t1 left join dc_base_sku as t2 on t1.bailun_sku =t2.bailun_sku where t2.buyer_name in ('张莹霞','张莹霞1');
insert into dc_base_data_character_temp(`character`, `bailun_sku`, `warehouse_code`)
select '海外仓' as 'character',t1.bailun_sku,t1.warehouse_code from dc_base_stock as t1 left join dc_base_warehouse as t2 on t1.warehouse_code = t2.warehouse_code where t2.hq_type not in ('国内仓');
alter table dc_base_data_character rename dc_base_data_characterTemp;
alter table dc_base_data_character_temp rename dc_base_data_character;
alter table dc_base_data_characterTemp rename dc_base_data_character_temp;
truncate table dc_base_data_character_temp;
update dc_base_stock as t1,
(
select bailun_sku,warehouse_code,GROUP_CONCAT(`character`) as 'character' from dc_base_data_character GROUP BY bailun_sku,warehouse_code
) as t2
set t1.`character` = t2.`character`
where t1.bailun_sku = t2.bailun_sku and t1.warehouse_code = t2.warehouse_code
", commandTimeout: 0);
}
catch (Exception ex)
{
......
......@@ -985,6 +985,7 @@ where t1.create_time>=@btime and t1.create_time<=@etime ";
data_type == (int)dc_report_cash_flow_log_data_type_enum.利润
|| data_type == (int)dc_report_cash_flow_log_data_type_enum.释放头程费用
|| data_type == (int)dc_report_cash_flow_log_data_type_enum.释放销售成本
|| data_type == (int)dc_report_cash_flow_log_data_type_enum.销售数量
)
{
data_type = (int)dc_report_cash_flow_log_data_type_enum.销售金额;
......
......@@ -5,6 +5,8 @@ using System.Collections.Generic;
using System.Text;
using Dapper;
using System.Linq;
using AutoTurnOver.Models;
using AutoTurnOver.Utility;
namespace AutoTurnOver.DB
{
......@@ -20,45 +22,322 @@ namespace AutoTurnOver.DB
{
try
{
List<dc_report_cash_flow_forecast_task_sale> sale_list = conn.Query<dc_report_cash_flow_forecast_task_sale>(" select * from dc_report_cash_flow_forecast_task_sale where task_id=@task_id ",new { task_id = task_data.id }).AsList();
if(sale_list==null || sale_list.Count <= 0)
var now = DateTime.Now;
conn.Execute(" delete from dc_report_cash_flow_forecast_task_log where task_id=@task_id ", new { task_id = task_data.id });
var logisticsList = ApiUtility.RealTimeShipLogisticsList();
//先清理数据
List<dc_report_cash_flow_forecast_task_log> logs = new List<dc_report_cash_flow_forecast_task_log>();
List<dc_report_cash_flow_forecast_task_sale> sale_list = conn.Query<dc_report_cash_flow_forecast_task_sale>(" select * from dc_report_cash_flow_forecast_task_sale where task_id=@task_id ", new { task_id = task_data.id }).AsList();
if (sale_list == null || sale_list.Count <= 0)
{
throw new Exception(" 未配置销量 ");
}
List<dc_report_cash_flow_config> configs = conn.Query<dc_report_cash_flow_config>(" select * from dc_report_cash_flow_config ").AsList();
List<dc_report_logistics_company_config_dto> logistics_company_list = conn.Query<dc_report_logistics_company_config_dto>(" select * from dc_report_logistics_company_config ").AsList();
List<dc_auto_config_stock_up_days> up_days = conn.Query<dc_auto_config_stock_up_days>(" select * from dc_auto_config_stock_up_days ").ToList();
List<dc_auto_config_safe_inventory> safe_inventorys = conn.Query<dc_auto_config_safe_inventory>(" select * from dc_auto_config_safe_inventory ").ToList();
// 模拟跑周转模型
List<invented_turnover_model> turnover_list = GetTurnoverModels(task_data, sale_list);
List<invented_turnover_model> turnover_list = GetTurnoverModels(task_data, sale_list, MatchingUpDays(up_days, task_data.warehouse_code), MatchingSafeInventorys(safe_inventorys, task_data.warehouse_code));
// 模拟销量
logs.AddRange(turnover_list.Where(s => s.type == (int)invented_turnover_model.type_enum.销量).Select((s, index) => new dc_report_cash_flow_forecast_task_log()
{
warehouse_code = task_data.warehouse_code,
bailun_sku = task_data.bailun_sku,
data_type = (int)dc_report_cash_flow_log_data_type_enum.销售金额,
is_delete = 0,
item = "",
item_no = $"虚拟销售单 - {task_data.id}-{s.date_str}-{index}",
no = $"虚拟销售单 - {task_data.id}-{s.date_str}-{index}",
occur_time = s.date,
pay_type = (int)dc_report_cash_flow_log_pay_type_enum.实时,
remarks = "模拟跑单",
task_id = task_data.id,
platform_type = task_data.platform_type,
val = s.val * task_data.sale_unit_price_cny,
update_time = now,
web_site = task_data.web_site,
pay_time_year_month_no = "",
occur_time_year_month_no = "",
pay_time = report_cash_flow_dao.CalculationPayTime(configs, s.date, (int)dc_report_cash_flow_log_data_type_enum.销售金额, task_data.platform_type, task_data.web_site)
}));
// 模拟销量
logs.AddRange(turnover_list.Where(s => s.type == (int)invented_turnover_model.type_enum.销量).Select((s, index) => new dc_report_cash_flow_forecast_task_log()
{
warehouse_code = task_data.warehouse_code,
bailun_sku = task_data.bailun_sku,
data_type = (int)dc_report_cash_flow_log_data_type_enum.销售数量,
is_delete = 0,
item = "",
item_no = $"虚拟销售单 - {task_data.id}-{s.date_str}-{index}",
no = $"虚拟销售单 - {task_data.id}-{s.date_str}-{index}",
occur_time = s.date,
pay_type = (int)dc_report_cash_flow_log_pay_type_enum.实时,
remarks = "模拟跑单",
task_id = task_data.id,
platform_type = task_data.platform_type,
val = s.val,
update_time = now,
web_site = task_data.web_site,
pay_time_year_month_no = "",
occur_time_year_month_no = "",
pay_time = report_cash_flow_dao.CalculationPayTime(configs, s.date, (int)dc_report_cash_flow_log_data_type_enum.销售数量, task_data.platform_type, task_data.web_site)
}));
if (!"FBA仓".Equals(task_data.warehouse_type, StringComparison.OrdinalIgnoreCase))
{
var index = 0;
// 模拟尾程费
foreach (var s in turnover_list.Where(s => s.type == (int)invented_turnover_model.type_enum.销量))
{
var temp_item = new dc_report_cash_flow_forecast_task_log()
{
warehouse_code = task_data.warehouse_code,
bailun_sku = task_data.bailun_sku,
data_type = (int)dc_report_cash_flow_log_data_type_enum.尾程费用,
is_delete = 0,
item = "",
item_no = $"虚拟尾程费用 - {task_data.id}-{s.date_str}-{index}",
no = $"虚拟尾程费用 - {task_data.id}-{s.date_str}-{index}",
occur_time = s.date,
pay_type = (int)dc_report_cash_flow_log_pay_type_enum.实时,
remarks = "模拟跑单",
task_id = task_data.id,
platform_type = task_data.platform_type,
val = s.val * ApiUtility.GetFilterLogisticsAssignLine(new Models.ApiDto.api_logistic_query_input_dto
{
endCountries = task_data.web_site,
high = task_data.high,
LineCodes = task_data.tail_logistics_code,
Long = task_data.@long,
platform = task_data.platform_type,
Site = task_data.web_site,
startPoint = "国内仓".Equals(task_data.warehouse_type, StringComparison.OrdinalIgnoreCase) ? "1" : "2",
warehouseNo = task_data.warehouse_code,
weightKg = task_data.weight_kg,
width = task_data.width
}).FootFee,
update_time = now,
web_site = task_data.web_site,
pay_time_year_month_no ="",
occur_time_year_month_no = ""
};
string remarks = null;
temp_item.pay_time = report_cash_flow_dao.CalculationLogisticsPayTime(logisticsList, logistics_company_list, s.date, task_data.tail_logistics_code, out remarks);
temp_item.remarks = remarks;
index++;
logs.Add(temp_item);
}
}
// 模拟下采购单
logs.AddRange(turnover_list.Where(s => s.type == (int)invented_turnover_model.type_enum.最终采购数量).Select((s, index) => new dc_report_cash_flow_forecast_task_log()
{
warehouse_code = task_data.warehouse_code,
bailun_sku = task_data.bailun_sku,
data_type = index == 0 ? (int)dc_report_cash_flow_log_data_type_enum.新增采购费用_首单 : (int)dc_report_cash_flow_log_data_type_enum.新增采购费用,
is_delete = 0,
item = "",
item_no = $"虚拟采购单 - {task_data.id}-{s.date_str}-{index}",
no = $"虚拟采购单 - {task_data.id}-{s.date_str}-{index}",
occur_time = s.date,
pay_type = (int)dc_report_cash_flow_log_pay_type_enum.后付,
remarks = "模拟跑单",
task_id = task_data.id,
platform_type = task_data.platform_type,
val = s.val * task_data.buy_unit_price_cny,
update_time = now,
web_site = task_data.web_site,
pay_time_year_month_no = "",
occur_time_year_month_no = "",
pay_time = (task_data.buy_pay_type == 2 ? s.date.AddDays(task_data.buy_pay_days) : s.date)
}));
if (!"国内仓".Equals(task_data.warehouse_type, StringComparison.OrdinalIgnoreCase))
{
var index = 0;
// 模拟尾程费
foreach (var s in turnover_list.Where(s => s.type == (int)invented_turnover_model.type_enum.调拨下单))
{
var temp_item = new dc_report_cash_flow_forecast_task_log()
{
warehouse_code = task_data.warehouse_code,
bailun_sku = task_data.bailun_sku,
data_type = (index==0? (int)dc_report_cash_flow_log_data_type_enum.新增头程费用_首单: (int)dc_report_cash_flow_log_data_type_enum.新增头程费用),
is_delete = 0,
item = "",
item_no = $"虚拟头程费用 - {task_data.id}-{s.date_str}-{index}",
no = $"虚拟头程费用 - {task_data.id}-{s.date_str}-{index}",
occur_time = s.date,
pay_type = (int)dc_report_cash_flow_log_pay_type_enum.后付,
remarks = "模拟跑单",
task_id = task_data.id,
platform_type = task_data.platform_type,
val = s.val * ApiUtility.GetFilterLogisticsAssignLine(new Models.ApiDto.api_logistic_query_input_dto
{
endCountries = task_data.web_site,
high = task_data.high,
LineCodes = task_data.tail_logistics_code,
Long = task_data.@long,
platform = task_data.platform_type,
Site = task_data.web_site,
startPoint = "3",
warehouseNo = task_data.warehouse_code,
weightKg = task_data.weight_kg,
width = task_data.width
}).FootFee,
update_time = now,
web_site = task_data.web_site,
pay_time_year_month_no = "",
occur_time_year_month_no = ""
};
string remarks = null;
temp_item.pay_time = report_cash_flow_dao.CalculationLogisticsPayTime(logisticsList, logistics_company_list, s.date, task_data.transfer_logistics_code, out remarks);
temp_item.remarks = remarks;
index++;
logs.Add(temp_item);
}
}
if(logs!=null && logs.Count >= 1)
{
foreach (var item in logs)
{
conn.Insert(item);
}
}
}
catch (Exception ex)
{
task_data.status = 3;
task_data.error_message = ex.Message;
task_data.error_stack_trace = ex.StackTrace;
conn.Update(task_data);
}
}
/// <summary>
/// 预测周转模型
/// </summary>
public static List<invented_turnover_model> GetTurnoverModels(dc_report_cash_flow_forecast_task task_data,List<dc_report_cash_flow_forecast_task_sale> sale_list)
public static List<invented_turnover_model> GetTurnoverModels(dc_report_cash_flow_forecast_task task_data, List<dc_report_cash_flow_forecast_task_sale> sale_list, dc_auto_config_stock_up_days stock_up_days, dc_auto_config_safe_inventory inventory_data)
{
// 最大预测日期,预测销量 - 供应商交期
var delivery = task_data.delivery;
if (task_data.warehouse_type != "国内仓")
{
delivery += task_data.transfer_days;
}
sale_list = sale_list.OrderBy(s => s.date).ToList();
// 预测周转数据
List<invented_turnover_model> turnover_list = new List<invented_turnover_model>();
// 下首单
turnover_list.AddRange(sale_list.Select(s => new invented_turnover_model { date = s.date, val = s.val, type = (int)invented_turnover_model.type_enum.销量 }));
// 下首单 (采购单)
// 取最早的预测销量的一天
var min_date_sale = sale_list.OrderBy(s=>s.date).FirstOrDefault();
var min_date_sale = sale_list.FirstOrDefault();
var init_purchase_quantity = min_date_sale.val;
// 考虑备货天数
var stock_up_day_date = min_date_sale.date.AddDays(stock_up_days.stock_up_days - 1);
if (stock_up_day_date.ToDayHome() > min_date_sale.date.ToDayHome())
{
// 加备货天数
init_purchase_quantity += sale_list.Where(s => s.date > min_date_sale.date && s.date <= stock_up_day_date.ToDayEnd()).Sum(s => s.val);
}
// 安全库存
var inventory_stock = (inventory_data.param * min_date_sale.val);
// 考虑安全库存
init_purchase_quantity += inventory_stock;
// 考虑moq
var final_purchase_quantity = Math.Max(init_purchase_quantity, task_data.moq);
if (task_data.warehouse_type != "国内仓")
{
turnover_list.Add(new invented_turnover_model { val = final_purchase_quantity, type = (int)invented_turnover_model.type_enum.调拨下单, date = min_date_sale.date.AddDays(task_data.delivery) });
}
turnover_list.Add(new invented_turnover_model { val = final_purchase_quantity, type = (int)invented_turnover_model.type_enum.最终采购数量, date = min_date_sale.date.AddDays(0 - (delivery + 1)) });
// 会在开卖的前一天到货
turnover_list.Add(new invented_turnover_model { val = final_purchase_quantity, type = (int)invented_turnover_model.type_enum.入库数量, date = min_date_sale.date.AddDays(-1) });
turnover_list.Add(new invented_turnover_model { val = final_purchase_quantity, type = (int)invented_turnover_model.type_enum.可用库存, date = min_date_sale.date.AddDays(-1) });
var max_forecast_date = sale_list.Max(s => s.date).AddDays(delivery);
// 下采购单, 第一次下单要多 准备一个安全库存
for (int i = 0; i < sale_list.Count; i += task_data.delivery)
var this_time = min_date_sale.date;
while (this_time.ToDayHome() <= max_forecast_date.ToDayHome())
{
// 先查询【昨天的可用库存 + 今日入库】
var yesterday_data_str = this_time.AddDays(-1).ToString("yyyy-MM-dd");
var today_data_str = this_time.ToString("yyyy-MM-dd");
decimal yesterday_stock = (turnover_list.Where(s => s.date_str == yesterday_data_str && s.type == (int)invented_turnover_model.type_enum.可用库存).FirstOrDefault() ?? new invented_turnover_model()).val;
yesterday_stock += (turnover_list.Where(s => s.date_str == today_data_str && s.type == (int)invented_turnover_model.type_enum.入库数量).FirstOrDefault() ?? new invented_turnover_model()).val;
// 减去销量等于【今日的可用库存】
var today_sale = (turnover_list.Where(s => s.date_str == today_data_str && s.type == (int)invented_turnover_model.type_enum.销量).FirstOrDefault() ?? new invented_turnover_model()).val;
var today_stock = yesterday_stock - today_sale;
turnover_list.Add(new invented_turnover_model { val = today_stock, type = (int)invented_turnover_model.type_enum.可用库存, date = this_time });
// 计算跟安全库存的差值
if (inventory_stock - today_stock > 0)
{
//准备采购
// 1. 补齐安全库存
var init_p = inventory_stock - today_stock;
// 2. 考虑备货天数
var this_stock_up_day_date = this_time.AddDays(stock_up_days.stock_up_days - 1);
if (this_stock_up_day_date.ToDayHome() > this_time.ToDayHome())
{
// 加备货天数
init_p += sale_list.Where(s => s.date > this_time && s.date <= this_stock_up_day_date.ToDayEnd()).Sum(s => s.val);
}
// 3. 考虑moq
// 考虑moq
var final_p = Math.Max(init_p, task_data.moq);
turnover_list.Add(new invented_turnover_model { val = final_purchase_quantity, type = (int)invented_turnover_model.type_enum.最终采购数量, date = this_time });
// 加一个交期 等于 到货天数
turnover_list.Add(new invented_turnover_model { val = final_purchase_quantity, type = (int)invented_turnover_model.type_enum.入库数量, date = this_time.AddDays(delivery) });
if (task_data.warehouse_type != "国内仓")
{
turnover_list.Add(new invented_turnover_model { val = final_purchase_quantity, type = (int)invented_turnover_model.type_enum.调拨下单, date = this_time.AddDays(task_data.delivery) });
}
}
this_time = this_time.AddDays(1);
}
return turnover_list;
}
/// <summary>
/// 匹配备货天数模型
/// </summary>
/// <param name="up_days"></param>
/// <param name="warehouse_code"></param>
/// <returns></returns>
public static dc_auto_config_stock_up_days MatchingUpDays(List<dc_auto_config_stock_up_days> up_days, string warehouse_code)
{
return (up_days.FirstOrDefault(s => s.warehouse_code == warehouse_code) ?? new dc_auto_config_stock_up_days()
{
warehouse_code = warehouse_code,
stock_up_days = 1
});
}
/// <summary>
/// 匹配安全库存模型
/// </summary>
/// <param name="up_days"></param>
/// <param name="warehouse_code"></param>
/// <returns></returns>
public static dc_auto_config_safe_inventory MatchingSafeInventorys(List<dc_auto_config_safe_inventory> datas, string warehouse_code)
{
return (datas.FirstOrDefault(s => s.warehouse_code == warehouse_code) ?? new dc_auto_config_safe_inventory()
{
warehouse_code = warehouse_code,
param = 1
});
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models.ApiDto
{
public class api_logistic_query_input_dto
{
/// <summary>
/// (必传)目的国家
/// </summary>
public string endCountries { get; set; }
/// <summary>
/// 站点
/// </summary>
public string Site { get; set; }
/// <summary>
/// (必传)长
/// </summary>
public decimal Long { get; set; }
/// <summary>
/// (必传)宽
/// </summary>
public decimal width { get; set; }
/// <summary>
/// (必传)高
/// </summary>
public decimal high { get; set; }
/// <summary>
/// (必传)重量kg
/// </summary>
public decimal weightKg { get; set; }
/// <summary>
/// 邮编 传入则匹配
/// </summary>
//public string enterZip { get; set; } = "";
/// <summary>
/// 发货地 1-直邮 2-海外 3-头程
/// </summary>
public string startPoint { get; set; } = "";
/// <summary>
/// 邮递方式 1-小包平邮 2-小包挂号 3-快递 4-专线平邮 5-海外 6-调拨 7-专线挂号
/// </summary>
//public string postWay { get; set; } = "";
/// <summary>
/// 运输规定时间
/// </summary>
//public decimal theAging { get; set; } = 0;
/// <summary>
/// 指定平台
/// </summary>
public string platform { get; set; } = "";
/// <summary>
/// 货物性质,传入时需要数字
/// </summary>
//public string electrifiedType { get; set; } = "";
/// <summary>
/// 物流渠道编码
/// </summary>
//public string LogisticsCode { get; set; } = "";
/// <summary>
/// 官方物流编码
/// </summary>
//public string OfficeLogistic { get; set; } = "";
/// <summary>
/// 指定线路 多个则需要使用 , 分割
/// </summary>
//public string MainLineIds { get; set; }
/// <summary>
/// 指定线路Line_Code 多个则需要使用 , 分割
/// </summary>
public string LineCodes { get; set; } = "";
/// <summary>
/// 仓库Id
/// </summary>
// public int warehouseId { get; set; } = 0;
/// <summary>
/// 仓库编码No
/// </summary>
public string warehouseNo { get; set; }
/// <summary>
/// sku信息 以 , 分割 如已传长宽高重量 可不传
/// </summary>
//public string skus { get; set; } = "";
/// <summary>
/// 该票订单总金额 用于计算是否超过申报价值上限
/// </summary>
//public decimal orderPriceCNY { get; set; } = 0;
/// <summary>
/// 销售金额
/// </summary>
// public decimal SellMoney { get; set; } = 0;
/// <summary>
/// 查询禁用渠道
/// </summary>
//public bool isIgnoreAbandon { get; set; } = false;
/// <summary>
/// 查询失败渠道
/// </summary>
//public bool IsFails { get; set; } = false;
/// <summary>
/// 使用历史时间计算费用和可发国家
/// </summary>
//public DateTime? HistoryTime { get; set; }
/// <summary>
/// 0-不限 1-线下渠道 2-线上渠道
/// </summary>
//public int OnLineType { get; set; }
/// <summary>
/// 是否忽略泡重 0不忽略 1忽略
/// </summary>
//public bool isIgnoreVolumeWeight { get; set; } = true;
//public string HeadType { get; set; } = "";
}
public class api_logistic_query_result_dto
{
public bool Success { get; set; }
public string ErrorMessage { get; set; }
public string Data { get; set; }
public List<line_dto> successLines { get; set; }
public class line_dto
{
public string Line_Code { get; set; }
public string LineName { get; set; }
public decimal FootFee { get; set; }
public decimal HeadFee { get; set; }
public string ErrorMsg { get; set; }
/// <summary>
/// 最快
/// </summary>
public decimal FastAging { get; set; }
/// <summary>
/// 最慢
/// </summary>
public decimal SlowAging { get; set; }
}
}
}
......@@ -12,13 +12,18 @@ namespace AutoTurnOver.Models.Report
public int id { get; set; }
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
public string warehouse_type { get; set; }
public string platform_type { get; set; }
public string web_site { get; set; }
/// <summary>
/// 供应商交期
/// 采购供应商交期
/// </summary>
public int delivery { get; set; }
/// <summary>
/// 调拨交期
/// </summary>
public int transfer_days { get; set; }
/// <summary>
/// 运输方式 -1 = 无 1 = 陆运 2 = 海运 3 = 空运
/// </summary>
public int transport_type { get; set; }
......@@ -65,6 +70,10 @@ namespace AutoTurnOver.Models.Report
public string step { get; set; }
public string error_message { get; set; }
public string error_stack_trace { get; set; }
public decimal high { get; set; }
public decimal @long { get; set; }
public decimal weight_kg { get; set; }
public decimal width { get; set; }
}
......@@ -142,6 +151,7 @@ namespace AutoTurnOver.Models.Report
public class invented_turnover_model
{
public DateTime date { get; set; }
public string date_str { get { return date.ToString("yyyy-MM-dd"); } }
/// <summary>
/// 预测数值
......@@ -157,9 +167,15 @@ namespace AutoTurnOver.Models.Report
public enum type_enum
{
预测可用库存 =1,
预测采购数量 = 2,
最终采购数量 =3
入库数量 = 1,
采购数量 = 2,
最终采购数量 = 3,
销量 = 4,
可用库存 = 5,
/// <summary>
/// 采购中转仓入库之后,下调拨单
/// </summary>
调拨下单 = 6
}
}
......
......@@ -90,6 +90,7 @@ namespace AutoTurnOver.Models
public int purchase_advise_count { get; set; }
public string sku_title_cn { get; set; }
public string character { get; set; }
/// <summary>
/// 采购在途
......@@ -155,6 +156,7 @@ namespace AutoTurnOver.Models
public string warehouse_code { get; set; }
public string warehousetype { get; set; }
public string character { get; set; }
public int? warehousearea { get; set; }
/// <summary>
......
......@@ -2,5 +2,6 @@
"ConnectionStrings": {
"Default": "server=gz-cdb-kp7s5i79.sql.tencentcdb.com;port=61691;database=bailun_datacenter;uid=root;password=#7kfnymAM$Y9-Ntf;"
},
"PPSSkuStatus": "http://pps.bailuntec.com/Api/Centre/Publish/External/SkuStatus"
"PPSSkuStatus": "http://pps.bailuntec.com/Api/Centre/Publish/External/SkuStatus",
"ApiLogisticsGetFilterLogisticsAssignLine": "http://lms.bailuntec.com/api/Logistics/ApiLogistics/GetFilterLogisticsAssignLine"
}
......@@ -2,5 +2,6 @@
"ConnectionStrings": {
"Default": "server=10.0.8.15;port=3306;database=bailun_datacenter;uid=root;password=#7kfnymAM$Y9-Ntf;"
},
"PPSSkuStatus": "http://pps.bailuntec.com/Api/Centre/Publish/External/SkuStatus"
"PPSSkuStatus": "http://pps.bailuntec.com/Api/Centre/Publish/External/SkuStatus",
"ApiLogisticsGetFilterLogisticsAssignLine": "http://lms.bailuntec.com/api/Logistics/ApiLogistics/GetFilterLogisticsAssignLine"
}
......@@ -2,5 +2,6 @@
"ConnectionStrings": {
"Default": "server=10.0.8.15;port=3306;database=bailun_datacenter;uid=root;password=#7kfnymAM$Y9-Ntf;"
},
"PPSSkuStatus": "http://pps.bailuntec.com/Api/Centre/Publish/External/SkuStatus"
"PPSSkuStatus": "http://pps.bailuntec.com/Api/Centre/Publish/External/SkuStatus",
"ApiLogisticsGetFilterLogisticsAssignLine": "http://lms.bailuntec.com/api/Logistics/ApiLogistics/GetFilterLogisticsAssignLine"
}
\ No newline at end of file
......@@ -17,7 +17,7 @@ namespace AutoTurnOver.Controllers
{
[HttpGet]
[UseAction]
public JsonResult List(int limit, int offset, string order, string sort, string sku, string warehousecode, string warehousetype, int? warehousearea,
public JsonResult List(int limit, int offset, string order, string sort, string sku, string character, string warehousecode, string warehousetype, int? warehousearea,
bool? has_overdue = null, bool? has_confirm = null, bool? has_solve = null,int? err_type = null)
{
var m = new dc_auto_forecast_fluctuation_search_dto
......@@ -29,7 +29,8 @@ namespace AutoTurnOver.Controllers
has_solve = has_solve,
warehousetype = warehousetype,
warehousearea = warehousearea,
err_type = err_type
err_type = err_type,
character = character
};
var total = 0;
......
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