Commit 209f6eae by lizefeng

采购建议公式优化

parent 18f20352
......@@ -36,7 +36,7 @@ namespace AutoTurnOver.DB
{
_connection.Execute(@"
INSERT into dc_auto_purchase_advise_detailed(`bailun_sku`,`warehouse_code`,`quantity_init_advise`,`quantity_actual`,`main_id`,
`forecast_formula`,`fit_forecast_formula`,`turnover_days`,`supplier_delivery`,`inspection_delivery`,`transfer_delivery`,`sales_upper_limit`)
`forecast_formula`,`fit_forecast_formula`,`turnover_days`,`supplier_delivery`,`inspection_delivery`,`transfer_delivery`,`sales_upper_limit`,`ispush`)
(
select
t1.bailun_sku,
......@@ -50,7 +50,8 @@ INSERT into dc_auto_purchase_advise_detailed(`bailun_sku`,`warehouse_code`,`quan
t1.supplier_delivery,
t1.inspection_delivery,
t1.transfer_delivery,
t1.sales_upper_limit
t1.sales_upper_limit,
0 as 'ispush'
from dc_auto_turnover as t1
left join dc_auto_sales as t2 on t1.bailun_sku = t2.bailun_sku and t1.warehouse_code = t2.warehouse_code
where t1.quantity_init_advise>0
......@@ -184,7 +185,7 @@ where 1=1 ";
public static IEnumerable<dc_auto_purchase_advise_detailed> DetailList(int mainid)
{
return _connection.Query<dc_auto_purchase_advise_detailed>("select * from dc_auto_purchase_advise_detailed where main_id=@mainid ", new { mainid = mainid });
return _connection.Query<dc_auto_purchase_advise_detailed>("select * from dc_auto_purchase_advise_detailed where main_id=@mainid ", new { mainid = mainid });
}
/// <summary>
......@@ -192,11 +193,19 @@ where 1=1 ";
/// </summary>
/// <param name="mainid"></param>
/// <returns></returns>
public static IEnumerable<dc_auto_purchase_advise_detailed_buy_dto> BuyDetailList(int mainid)
public static IEnumerable<dc_auto_purchase_advise_detailed_buy_dto> BuyDetailList(int mainid, bool? ispush = null)
{
return _connection.Query<dc_auto_purchase_advise_detailed_buy_dto>(@" select t1.*,t2.unit_price from dc_auto_purchase_advise_detailed as t1
DynamicParameters parameters = new DynamicParameters();
parameters.Add("mainid", mainid);
string sql = @" select t1.*,t2.unit_price from dc_auto_purchase_advise_detailed as t1
left join dc_base_sku as t2 on t1.bailun_sku = t2.bailun_sku
where t1.main_id=@mainid ", new { mainid });
where t1.main_id=@mainid ";
if (ispush != null)
{
sql += " and ispush=@ispush ";
parameters.Add("ispush", ispush.Value ? 1 : 0);
}
return _connection.Query<dc_auto_purchase_advise_detailed_buy_dto>(sql, parameters);
}
/// <summary>
......
......@@ -187,6 +187,16 @@ namespace AutoTurnOver.Models
/// </summary>
public decimal supplementary_sales { get; set; }
/// <summary>
/// 本次采购到货到货前
/// </summary>
public decimal turnover_sales { get; set; }
/// <summary>
/// 周转期内总入库
/// </summary>
public decimal turnover_inbound { get; set; }
}
public class Condition_AutoTurnOver
......
......@@ -44,7 +44,7 @@ namespace AutoTurnOver.Services
/// <summary>
/// 推送采购计划
/// </summary>
public static BuyOutputResult PushBuyPlan(List<mPlanToPurchaseDto> data)
public static BuyOutputResult PushBuyPlan(mPlanToPurchaseDto data)
{
//查询采购建议明细
string url = ConfigHelper.GetValue("PushBuyPlan");
......
......@@ -119,36 +119,41 @@ namespace AutoTurnOver.Services
{
throw new Exception("最新的一个采购建议已经推送过了,请勿重复推送");
}
List<string> planNos = new List<string>();
DateTime now = DateTime.Now;
List<mPlanToPurchaseDto> datas = new List<mPlanToPurchaseDto>();
// 查询采购建议的明细
var detailList = purchase_advise.BuyDetailList(lastPurchaseAdvise.id);
// 查询未推送成功的采购建议的明细
var detailList = purchase_advise.BuyDetailList(lastPurchaseAdvise.id, false);
foreach (var item in detailList.GroupBy(s => s.warehouse_code))
{
mPlanToPurchaseDto data = new mPlanToPurchaseDto
{
bp_sendtype = 1,
bp_sendfromCode = item.Key,
bi_buyplandetail = new List<bi_buyplandetail>()
};
data.bi_buyplandetail = detailList.Select(s => new bi_buyplandetail
data.bi_buyplandetail = item.Select(s => new bi_buyplandetail
{
bd_count = s.quantity_actual > 0 ? s.quantity_actual : s.quantity_init_advise,
bd_price = s.unit_price,
bd_sku = s.bailun_sku
}).ToList();
datas.Add(data);
//把采购数量没有填的都补上 建议采购数
conn.Execute(" update dc_auto_purchase_advise_detailed set quantity_actual=quantity_init_advise where quantity_actual<=0 and main_id=@mainID ", new { mainID = lastPurchaseAdvise.id }, transaction);
var result = ApiServices.PushBuyPlan(datas);
conn.Execute(" update dc_auto_purchase_advise set buy_sys_plan_no=@buy_sys_plan_no,push_time=@push_time ", new { buy_sys_plan_no = result.planNo, push_time = now }, transaction);
var result = ApiServices.PushBuyPlan(data);
if (result.IsSuccessed)
{
// 把相关的采购明细都标记成已推送
conn.Execute(" update dc_auto_purchase_advise_detailed set ispush=1 where id in @ids ",new { ids = item.Select(s=>s.id).ToArray() });
}
planNos.Add(result.planNo);
}
conn.Execute(" update dc_auto_purchase_advise set buy_sys_plan_no=@buy_sys_plan_no,push_time=@push_time ", new { buy_sys_plan_no = string.Join(",", planNos), push_time = now }, transaction);
transaction.Commit();
}
catch (Exception)
......
......@@ -54,7 +54,7 @@ namespace AutoTurnOver.Controllers
// 计算到周转期前一天的累计销量
decimal turnoverDatecumulativeSales = 0;
var salesList = result[0].ToObj<List<decimal>>();
for (int i = 7; i < turnoverData.turnover_days+7; i++)
for (int i = 7; i < turnoverData.turnover_days+7-1; i++)
{
turnoverDatecumulativeSales += salesList[i];
}
......@@ -69,12 +69,12 @@ namespace AutoTurnOver.Controllers
}
// 当日预测销量
var turnoverDateSales =(int)result[0].ToObj<List<decimal>>()[turnoverData.turnover_days + 7];
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[2].ToObj<List<decimal>>()[turnoverData.turnover_days + 7], // 当日预测库存,
turnoverDateStock = (int)result[2].ToObj<List<decimal>>()[turnoverData.turnover_days + 7-1], // 当日预测库存,
turnoverDatecumulativeSales = (int)turnoverDatecumulativeSales, // 累计销量
nowStr = DateTime.Now.ToString("yyyy-MM-dd"), // 今天的日期
nowShortage = (int)result[3].ToObj<List<decimal>>()[7], // 今天的实际缺货
......
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