Commit 209f6eae by lizefeng

采购建议公式优化

parent 18f20352
...@@ -36,7 +36,7 @@ namespace AutoTurnOver.DB ...@@ -36,7 +36,7 @@ namespace AutoTurnOver.DB
{ {
_connection.Execute(@" _connection.Execute(@"
INSERT into dc_auto_purchase_advise_detailed(`bailun_sku`,`warehouse_code`,`quantity_init_advise`,`quantity_actual`,`main_id`, 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 select
t1.bailun_sku, t1.bailun_sku,
...@@ -50,7 +50,8 @@ INSERT into dc_auto_purchase_advise_detailed(`bailun_sku`,`warehouse_code`,`quan ...@@ -50,7 +50,8 @@ INSERT into dc_auto_purchase_advise_detailed(`bailun_sku`,`warehouse_code`,`quan
t1.supplier_delivery, t1.supplier_delivery,
t1.inspection_delivery, t1.inspection_delivery,
t1.transfer_delivery, t1.transfer_delivery,
t1.sales_upper_limit t1.sales_upper_limit,
0 as 'ispush'
from dc_auto_turnover as t1 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 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 where t1.quantity_init_advise>0
...@@ -184,7 +185,7 @@ where 1=1 "; ...@@ -184,7 +185,7 @@ where 1=1 ";
public static IEnumerable<dc_auto_purchase_advise_detailed> DetailList(int mainid) 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> /// <summary>
...@@ -192,11 +193,19 @@ where 1=1 "; ...@@ -192,11 +193,19 @@ where 1=1 ";
/// </summary> /// </summary>
/// <param name="mainid"></param> /// <param name="mainid"></param>
/// <returns></returns> /// <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 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> /// <summary>
......
...@@ -187,6 +187,16 @@ namespace AutoTurnOver.Models ...@@ -187,6 +187,16 @@ namespace AutoTurnOver.Models
/// </summary> /// </summary>
public decimal supplementary_sales { get; set; } 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 public class Condition_AutoTurnOver
......
...@@ -44,7 +44,7 @@ namespace AutoTurnOver.Services ...@@ -44,7 +44,7 @@ namespace AutoTurnOver.Services
/// <summary> /// <summary>
/// 推送采购计划 /// 推送采购计划
/// </summary> /// </summary>
public static BuyOutputResult PushBuyPlan(List<mPlanToPurchaseDto> data) public static BuyOutputResult PushBuyPlan(mPlanToPurchaseDto data)
{ {
//查询采购建议明细 //查询采购建议明细
string url = ConfigHelper.GetValue("PushBuyPlan"); string url = ConfigHelper.GetValue("PushBuyPlan");
......
...@@ -119,36 +119,41 @@ namespace AutoTurnOver.Services ...@@ -119,36 +119,41 @@ namespace AutoTurnOver.Services
{ {
throw new Exception("最新的一个采购建议已经推送过了,请勿重复推送"); throw new Exception("最新的一个采购建议已经推送过了,请勿重复推送");
} }
List<string> planNos = new List<string>();
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
List<mPlanToPurchaseDto> datas = new List<mPlanToPurchaseDto>(); // 查询未推送成功的采购建议的明细
// 查询采购建议的明细 var detailList = purchase_advise.BuyDetailList(lastPurchaseAdvise.id, false);
var detailList = purchase_advise.BuyDetailList(lastPurchaseAdvise.id);
foreach (var item in detailList.GroupBy(s => s.warehouse_code)) foreach (var item in detailList.GroupBy(s => s.warehouse_code))
{ {
mPlanToPurchaseDto data = new mPlanToPurchaseDto mPlanToPurchaseDto data = new mPlanToPurchaseDto
{ {
bp_sendtype = 1, bp_sendtype = 1,
bp_sendfromCode = item.Key, bp_sendfromCode = item.Key,
bi_buyplandetail = new List<bi_buyplandetail>() 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_count = s.quantity_actual > 0 ? s.quantity_actual : s.quantity_init_advise,
bd_price = s.unit_price, bd_price = s.unit_price,
bd_sku = s.bailun_sku bd_sku = s.bailun_sku
}).ToList(); }).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); 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); var result = ApiServices.PushBuyPlan(data);
if (result.IsSuccessed)
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); {
// 把相关的采购明细都标记成已推送
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(); transaction.Commit();
} }
catch (Exception) catch (Exception)
......
...@@ -54,7 +54,7 @@ namespace AutoTurnOver.Controllers ...@@ -54,7 +54,7 @@ namespace AutoTurnOver.Controllers
// 计算到周转期前一天的累计销量 // 计算到周转期前一天的累计销量
decimal turnoverDatecumulativeSales = 0; decimal turnoverDatecumulativeSales = 0;
var salesList = result[0].ToObj<List<decimal>>(); 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]; turnoverDatecumulativeSales += salesList[i];
} }
...@@ -69,12 +69,12 @@ namespace AutoTurnOver.Controllers ...@@ -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 var buyFormula = new
{ {
turnoverDateStr = turnoverDate.ToString("yyyy-MM-dd"), // 取值日期 turnoverDateStr = turnoverDate.ToString("yyyy-MM-dd"), // 取值日期
turnoverDateSales = turnoverDateSales, // 当日预测销量 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, // 累计销量 turnoverDatecumulativeSales = (int)turnoverDatecumulativeSales, // 累计销量
nowStr = DateTime.Now.ToString("yyyy-MM-dd"), // 今天的日期 nowStr = DateTime.Now.ToString("yyyy-MM-dd"), // 今天的日期
nowShortage = (int)result[3].ToObj<List<decimal>>()[7], // 今天的实际缺货 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