Commit 75a32e95 by lizefeng

采购金额,跟随实际采购数变化

采购建议金额筛选-是筛选整个供应商的总采购金额
凑单优先销量最高,流转最快SKU开始,当个SKU凑单数量从2开始
初始建议数为1,,系统建议数为1时 改为3
parent c4392fab
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using AutoTurnOver.Models.dc_base_purchase; using AutoTurnOver.Models.dc_base_purchase;
using Dapper; using Dapper;
using System.Linq; using System.Linq;
using AutoTurnOver.Models; using AutoTurnOver.Models;
using MySql.Data.MySqlClient; using MySql.Data.MySqlClient;
namespace AutoTurnOver.DB namespace AutoTurnOver.DB
{ {
public class AveragePurchase : connectionHelper public class AveragePurchase : connectionHelper
{ {
/// <summary> /// <summary>
/// 取最近2天有发生采购记录的SKU /// 取最近2天有发生采购记录的SKU
/// 采购记录 /// 采购记录
/// 到货记录 /// 到货记录
/// 入库记录 /// 入库记录
/// </summary> /// </summary>
/// <param name="day">最近几天</param> /// <param name="day">最近几天</param>
/// <returns></returns> /// <returns></returns>
public static IEnumerable<temp_sku_dto> GetChangeSku(int day) public static IEnumerable<temp_sku_dto> GetChangeSku(int day)
{ {
DynamicParameters parameters = new DynamicParameters(); DynamicParameters parameters = new DynamicParameters();
parameters.Add("time", DateTime.Now.AddDays(0 - day).ToString("yyyy-MM-dd 00:00:00")); parameters.Add("time", DateTime.Now.AddDays(0 - day).ToString("yyyy-MM-dd 00:00:00"));
return _connection.Query<temp_sku_dto>(@"select t1.bailun_sku,t1.warehouse_code,t1.supplier_id from dc_base_purchase as t1 return _connection.Query<temp_sku_dto>(@"select t1.bailun_sku,t1.warehouse_code,t1.supplier_id from dc_base_purchase as t1
where t1.supplier_id>0 and buy_status=4 where t1.supplier_id>0 and buy_status=4
-- and EXISTS ( select * from dc_auto_turnover as t2 where t1.bailun_sku =t2.bailun_sku and t1.warehouse_code = t2.warehouse_code) -- and EXISTS ( select * from dc_auto_turnover as t2 where t1.bailun_sku =t2.bailun_sku and t1.warehouse_code = t2.warehouse_code)
GROUP BY t1.bailun_sku,t1.warehouse_code,t1.supplier_id "); GROUP BY t1.bailun_sku,t1.warehouse_code,t1.supplier_id ");
//return _connection.Query<temp_sku_dto>("select t1.bailun_sku,t1.warehouse_code,t1.supplier_id from dc_base_purchase as t1 where t1.update_time>=@time group by t1.bailun_sku,t1.warehouse_code,t1.supplier_id ", parameters); //return _connection.Query<temp_sku_dto>("select t1.bailun_sku,t1.warehouse_code,t1.supplier_id from dc_base_purchase as t1 where t1.update_time>=@time group by t1.bailun_sku,t1.warehouse_code,t1.supplier_id ", parameters);
} }
public static IEnumerable<dc_average_purchase> GetListByWCode(string sku, string warehouse_code) public static IEnumerable<dc_average_purchase> GetListByWCode(string sku, string warehouse_code)
{ {
DynamicParameters parameters = new DynamicParameters(); DynamicParameters parameters = new DynamicParameters();
parameters.Add("bailun_sku", sku); parameters.Add("bailun_sku", sku);
parameters.Add("warehouse_code", warehouse_code); parameters.Add("warehouse_code", warehouse_code);
return _connection.Query<dc_average_purchase>("select * from dc_average_purchase where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", parameters); return _connection.Query<dc_average_purchase>("select * from dc_average_purchase where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", parameters);
} }
public static IEnumerable<dc_average_purchase> GetList(string supplier_ids,string bailun_skus) public static IEnumerable<dc_average_purchase> GetList(string supplier_ids,string bailun_skus)
{ {
DynamicParameters parameters = new DynamicParameters(); DynamicParameters parameters = new DynamicParameters();
var sql = "select * from dc_average_purchase where 1=1 "; var sql = @" select t1.* from dc_average_purchase as t1 left join dc_base_sku as t2 on t1.bailun_sku = t2.bailun_sku
if (!string.IsNullOrWhiteSpace(supplier_ids)) where t1.supplier_id = t2.suppliers_id ";
{ if (!string.IsNullOrWhiteSpace(supplier_ids))
sql += " and supplier_id in @supplier_ids "; {
parameters.Add("supplier_ids", supplier_ids.Split(',').Select(s=>int.Parse(s)).ToArray()); sql += " and t1.supplier_id in @supplier_ids ";
} parameters.Add("supplier_ids", supplier_ids.Split(',').Select(s=>int.Parse(s)).ToArray());
if (!string.IsNullOrWhiteSpace(bailun_skus)) }
{ if (!string.IsNullOrWhiteSpace(bailun_skus))
sql += " and bailun_sku in @bailun_skus "; {
parameters.Add("bailun_skus", bailun_skus.Split(',')); sql += " and t1.bailun_sku in @bailun_skus ";
} parameters.Add("bailun_skus", bailun_skus.Split(','));
if (parameters.ParameterNames.Count() <= 0) }
{ if (parameters.ParameterNames.Count() <= 0)
throw new Exception("请至少传递一个参数"); {
} throw new Exception("请至少传递一个参数");
return _connection.Query<dc_average_purchase>(sql, parameters); }
} return _connection.Query<dc_average_purchase>(sql, parameters);
}
/// <summary>
/// 查询仓库指标 /// <summary>
/// </summary> /// 查询仓库指标
/// <param name="sku"></param> /// </summary>
/// <param name="warehousecode"></param> /// <param name="sku"></param>
/// <returns></returns> /// <param name="warehousecode"></param>
public static dc_average_warehouse GetWarehouse(string sku, string warehousecode) /// <returns></returns>
{ public static dc_average_warehouse GetWarehouse(string sku, string warehousecode)
DynamicParameters parameters = new DynamicParameters(); {
parameters.Add("bailun_sku", sku); DynamicParameters parameters = new DynamicParameters();
parameters.Add("warehouse_code", warehousecode); parameters.Add("bailun_sku", sku);
return _connection.QueryFirstOrDefault<dc_average_warehouse>("select * from dc_average_warehouse where warehouse_code=@warehouse_code and bailun_sku=@bailun_sku ", parameters); parameters.Add("warehouse_code", warehousecode);
} return _connection.QueryFirstOrDefault<dc_average_warehouse>("select * from dc_average_warehouse where warehouse_code=@warehouse_code and bailun_sku=@bailun_sku ", parameters);
}
/// <summary>
/// 获取SKU 的最近5条采购完成的采购单 /// <summary>
/// </summary> /// 获取SKU 的最近5条采购完成的采购单
/// <param name="skuData">sku 信息</param> /// </summary>
/// <param name="seed_count">取数天数</param> /// <param name="skuData">sku 信息</param>
/// <returns></returns> /// <param name="seed_count">取数天数</param>
public static IEnumerable<dc_base_purchase_dto> GetPurchaseList(temp_sku_dto skuData, int seed_count) /// <returns></returns>
{ public static IEnumerable<dc_base_purchase_dto> GetPurchaseList(temp_sku_dto skuData, int seed_count)
DynamicParameters parameters = new DynamicParameters(); {
parameters.Add("bailun_sku", skuData.bailun_sku); DynamicParameters parameters = new DynamicParameters();
parameters.Add("supplier_id", skuData.supplier_id); parameters.Add("bailun_sku", skuData.bailun_sku);
parameters.Add("warehouse_code", skuData.warehouse_code); parameters.Add("supplier_id", skuData.supplier_id);
parameters.Add("seed_count", seed_count); parameters.Add("warehouse_code", skuData.warehouse_code);
return _connection.Query<dc_base_purchase_dto>(@"select t1.price,t1.bailun_sku,t1.warehouse_code,t1.purchase_id,t1.warehouse_name,t1.count,t1.sku_name,t1.supplier_id,t1.supplier_name,t1.confirm_time,t1.pay_time,t1.pay_type from dc_base_purchase as t1 parameters.Add("seed_count", seed_count);
where t1.buy_status=4 and t1.bailun_sku=@bailun_sku and t1.supplier_id=@supplier_id and t1.warehouse_code=@warehouse_code return _connection.Query<dc_base_purchase_dto>(@"select t1.price,t1.bailun_sku,t1.warehouse_code,t1.purchase_id,t1.warehouse_name,t1.count,t1.sku_name,t1.supplier_id,t1.supplier_name,t1.confirm_time,t1.pay_time,t1.pay_type from dc_base_purchase as t1
ORDER BY t1.update_time desc LIMIT @seed_count where t1.buy_status=4 and t1.bailun_sku=@bailun_sku and t1.supplier_id=@supplier_id and t1.warehouse_code=@warehouse_code
", parameters); ORDER BY t1.update_time desc LIMIT @seed_count
", parameters);
}
}
/// <summary>
/// 获取SKU 的最近5条采购完成的采购单 /// <summary>
/// </summary> /// 获取SKU 的最近5条采购完成的采购单
/// <param name="skuData">sku 信息</param> /// </summary>
/// <param name="seed_count">取数天数</param> /// <param name="skuData">sku 信息</param>
/// <returns></returns> /// <param name="seed_count">取数天数</param>
public static IEnumerable<dc_base_purchase_dto> GetPurchaseListByWode(temp_sku_dto skuData, int seed_count) /// <returns></returns>
{ public static IEnumerable<dc_base_purchase_dto> GetPurchaseListByWode(temp_sku_dto skuData, int seed_count)
DynamicParameters parameters = new DynamicParameters(); {
parameters.Add("bailun_sku", skuData.bailun_sku); DynamicParameters parameters = new DynamicParameters();
parameters.Add("warehouse_code", skuData.warehouse_code); parameters.Add("bailun_sku", skuData.bailun_sku);
parameters.Add("seed_count", seed_count); parameters.Add("warehouse_code", skuData.warehouse_code);
return _connection.Query<dc_base_purchase_dto>(@"select t1.price,t1.bailun_sku,t1.warehouse_code,t1.purchase_id,t1.warehouse_name,t1.count,t1.sku_name,t1.supplier_id,t1.supplier_name,t1.confirm_time,t1.pay_time,t1.pay_type from dc_base_purchase as t1 parameters.Add("seed_count", seed_count);
where t1.buy_status=4 and t1.bailun_sku=@bailun_sku and t1.warehouse_code=@warehouse_code and t1.count>0 return _connection.Query<dc_base_purchase_dto>(@"select t1.price,t1.bailun_sku,t1.warehouse_code,t1.purchase_id,t1.warehouse_name,t1.count,t1.sku_name,t1.supplier_id,t1.supplier_name,t1.confirm_time,t1.pay_time,t1.pay_type from dc_base_purchase as t1
ORDER BY t1.update_time desc LIMIT @seed_count where t1.buy_status=4 and t1.bailun_sku=@bailun_sku and t1.warehouse_code=@warehouse_code and t1.count>0
", parameters); ORDER BY t1.update_time desc LIMIT @seed_count
", parameters);
}
}
/// <summary>
/// 获取指定采购单的到货数据 /// <summary>
/// </summary> /// 获取指定采购单的到货数据
/// <param name="skuData">sku 信息</param> /// </summary>
/// <param name="purchase_ids">采购单号</param> /// <param name="skuData">sku 信息</param>
/// <returns></returns> /// <param name="purchase_ids">采购单号</param>
public static IEnumerable<dc_base_purchase_arrival_dto> GetArrivalList(IEnumerable<string> purchase_ids,string bailun_sku) /// <returns></returns>
{ public static IEnumerable<dc_base_purchase_arrival_dto> GetArrivalList(IEnumerable<string> purchase_ids,string bailun_sku)
DynamicParameters parameters = new DynamicParameters(); {
parameters.Add("purchase_ids", purchase_ids.ToArray()); DynamicParameters parameters = new DynamicParameters();
parameters.Add("bailun_sku", bailun_sku); parameters.Add("purchase_ids", purchase_ids.ToArray());
return _connection.Query<dc_base_purchase_arrival_dto>(@"select * from dc_base_purchase_arrival where purchase_id in @purchase_ids and bailun_sku = @bailun_sku parameters.Add("bailun_sku", bailun_sku);
", parameters); return _connection.Query<dc_base_purchase_arrival_dto>(@"select * from dc_base_purchase_arrival where purchase_id in @purchase_ids and bailun_sku = @bailun_sku
} ", parameters);
}
/// <summary>
/// 获取指定采购单的入库数据 /// <summary>
/// </summary> /// 获取指定采购单的入库数据
/// <param name="skuData">sku 信息</param> /// </summary>
/// <param name="purchase_ids">采购单号</param> /// <param name="skuData">sku 信息</param>
/// <returns></returns> /// <param name="purchase_ids">采购单号</param>
public static IEnumerable<dc_base_purchase_inbound_dto> GetInboundList(IEnumerable<string> purchase_ids, string bailun_sku) /// <returns></returns>
{ public static IEnumerable<dc_base_purchase_inbound_dto> GetInboundList(IEnumerable<string> purchase_ids, string bailun_sku)
DynamicParameters parameters = new DynamicParameters(); {
parameters.Add("purchase_ids", purchase_ids.ToArray()); DynamicParameters parameters = new DynamicParameters();
parameters.Add("bailun_sku", bailun_sku); parameters.Add("purchase_ids", purchase_ids.ToArray());
return _connection.Query<dc_base_purchase_inbound_dto>(@" parameters.Add("bailun_sku", bailun_sku);
select t1.*,t2.update_time as 'arrival_time' from dc_base_purchase_inbound as t1 return _connection.Query<dc_base_purchase_inbound_dto>(@"
left join dc_base_purchase_arrival as t2 on t1.purchase_id = t2.purchase_id and t1.bailun_sku = t2.bailun_sku select t1.*,t2.update_time as 'arrival_time' from dc_base_purchase_inbound as t1
where t1.purchase_id in @purchase_ids and t1.bailun_sku = @bailun_sku left join dc_base_purchase_arrival as t2 on t1.purchase_id = t2.purchase_id and t1.bailun_sku = t2.bailun_sku
and t2.update_time is not null and t1.update_time>t2.update_time where t1.purchase_id in @purchase_ids and t1.bailun_sku = @bailun_sku
", parameters); and t2.update_time is not null and t1.update_time>t2.update_time
} ", parameters);
}
/// <summary>
/// / 获取指定SKU的最近调拨数据 /// <summary>
/// </summary> /// / 获取指定SKU的最近调拨数据
/// <param name="bailun_sku"></param> /// </summary>
/// <param name="warehouse_code"></param> /// <param name="bailun_sku"></param>
/// <param name="type">调拨类型</param> /// <param name="warehouse_code"></param>
/// <param name="seed_count"></param> /// <param name="type">调拨类型</param>
/// <returns></returns> /// <param name="seed_count"></param>
public static IEnumerable<dc_base_transfer_log> GetTransportList(string bailun_sku,string warehouse_code, string type, int seed_count) /// <returns></returns>
{ public static IEnumerable<dc_base_transfer_log> GetTransportList(string bailun_sku,string warehouse_code, string type, int seed_count)
DynamicParameters parameters = new DynamicParameters(); {
parameters.Add("bailun_sku", bailun_sku); DynamicParameters parameters = new DynamicParameters();
parameters.Add("bailun_sku", bailun_sku);
parameters.Add("seed_count", seed_count);
parameters.Add("warehouse_code", warehouse_code); parameters.Add("seed_count", seed_count);
string sql = @" parameters.Add("warehouse_code", warehouse_code);
select string sql = @"
t1.bailun_sku, select
t1.warehouse_code, t1.bailun_sku,
-- GROUP_CONCAT(DISTINCT t1.bailun_sku), t1.warehouse_code,
t1.create_time as 'delivery_time', -- 交运时间 -- GROUP_CONCAT(DISTINCT t1.bailun_sku),
t2.create_time as 'bale_time', -- 打包时间 t1.create_time as 'delivery_time', -- 交运时间
t5.create_time as 'verify_time', -- 确认时间 t2.create_time as 'bale_time', -- 打包时间
t6.create_time as 'complete_time', -- 完成时间 t5.create_time as 'verify_time', -- 确认时间
t3.create_time as 'arrival_time', -- 到货时间 t6.create_time as 'complete_time', -- 完成时间
t4.create_time as 'inbound_time', -- 入库时间 t3.create_time as 'arrival_time', -- 到货时间
t3.transport_type t4.create_time as 'inbound_time', -- 入库时间
from dc_base_transfer_delivery as t1 -- 交运时间 t3.transport_type
left join (select t2_1.transfer_order_id,max(t2_1.create_time) as 'create_time' from dc_base_transfer_bale as t2_1 where deleted =0 GROUP BY t2_1.transfer_order_id) as t2 on t1.transfer_order_id = t2.transfer_order_id from dc_base_transfer_delivery as t1 -- 交运时间
left join (select t2_1.transfer_order_id,max(t2_1.arrival_time) as 'create_time',t2_1.transport_type from dc_base_transfer_transport as t2_1 GROUP BY t2_1.transfer_order_id) as t3 on t1.transfer_order_id = t3.transfer_order_id left join (select t2_1.transfer_order_id,max(t2_1.create_time) as 'create_time' from dc_base_transfer_bale as t2_1 where deleted =0 GROUP BY t2_1.transfer_order_id) as t2 on t1.transfer_order_id = t2.transfer_order_id
left join (select t2_1.transfer_order_id,max(t2_1.create_time) as 'create_time' from dc_base_transfer_inbound as t2_1 where deleted =0 GROUP BY t2_1.transfer_order_id) as t4 on t1.transfer_order_id = t4.transfer_order_id left join (select t2_1.transfer_order_id,max(t2_1.arrival_time) as 'create_time',t2_1.transport_type from dc_base_transfer_transport as t2_1 GROUP BY t2_1.transfer_order_id) as t3 on t1.transfer_order_id = t3.transfer_order_id
left join (select t2_1.transfer_order_id,max(t2_1.create_time) as 'create_time' from dc_base_transfer_verify as t2_1 where deleted =0 GROUP BY t2_1.transfer_order_id) as t5 on t1.transfer_order_id = t5.transfer_order_id left join (select t2_1.transfer_order_id,max(t2_1.create_time) as 'create_time' from dc_base_transfer_inbound as t2_1 where deleted =0 GROUP BY t2_1.transfer_order_id) as t4 on t1.transfer_order_id = t4.transfer_order_id
left join (select t2_1.transfer_order_id,max(t2_1.create_time) as 'create_time' from dc_base_transfer_complete as t2_1 where deleted =0 GROUP BY t2_1.transfer_order_id) as t6 on t1.transfer_order_id = t6.transfer_order_id left join (select t2_1.transfer_order_id,max(t2_1.create_time) as 'create_time' from dc_base_transfer_verify as t2_1 where deleted =0 GROUP BY t2_1.transfer_order_id) as t5 on t1.transfer_order_id = t5.transfer_order_id
left join dc_base_warehouse as t_w on t1.warehouse_code = t_w.warehouse_code left join (select t2_1.transfer_order_id,max(t2_1.create_time) as 'create_time' from dc_base_transfer_complete as t2_1 where deleted =0 GROUP BY t2_1.transfer_order_id) as t6 on t1.transfer_order_id = t6.transfer_order_id
where t1.bailun_sku=@bailun_sku and t1.warehouse_code=@warehouse_code and t1.deleted=0 left join dc_base_warehouse as t_w on t1.warehouse_code = t_w.warehouse_code
and t1.create_time is not null and t2.create_time is not null and t4.create_time is not null and t5.create_time is not null and t6.create_time is not null where t1.bailun_sku=@bailun_sku and t1.warehouse_code=@warehouse_code and t1.deleted=0
and t4.create_time>='2018-01-01' and t3.create_time>='2018-01-01' and t1.create_time is not null and t2.create_time is not null and t4.create_time is not null and t5.create_time is not null and t6.create_time is not null
and t2.create_time < t1.create_time -- 调拨天数不为负数 and t4.create_time>='2018-01-01' and t3.create_time>='2018-01-01'
and t5.create_time < t3.create_time -- 头程天数不为负数 and t2.create_time < t1.create_time -- 调拨天数不为负数
and t3.create_time < t4.create_time -- 入库天数不为负数 and t5.create_time < t3.create_time -- 头程天数不为负数
and t_w.hq_type!='国内仓' and t3.create_time < t4.create_time -- 入库天数不为负数
"; and t_w.hq_type!='国内仓'
if (!string.IsNullOrWhiteSpace(type)) ";
{ if (!string.IsNullOrWhiteSpace(type))
sql += " and t3.transport_type=@transport_type "; {
parameters.Add("transport_type", type); sql += " and t3.transport_type=@transport_type ";
} parameters.Add("transport_type", type);
sql += "LIMIT @seed_count "; }
var datas = _connection.Query<dc_base_transfer_log>(sql, parameters); sql += "LIMIT @seed_count ";
return datas; var datas = _connection.Query<dc_base_transfer_log>(sql, parameters);
} return datas;
}
/// <summary>
/// 保存数据 /// <summary>
/// </summary> /// 保存数据
/// <param name="data"></param> /// </summary>
public static void Save(dc_average_purchase data, MySqlConnection conn) /// <param name="data"></param>
{ public static void Save(dc_average_purchase data, MySqlConnection conn)
if (conn == null) {
{ if (conn == null)
conn = _connection; {
} conn = _connection;
}
data.update_time = DateTime.Now;
data.update_time = DateTime.Now;
DynamicParameters parameters = new DynamicParameters();
parameters.Add("bailun_sku", data.bailun_sku); DynamicParameters parameters = new DynamicParameters();
parameters.Add("supplier_id", data.supplier_id); parameters.Add("bailun_sku", data.bailun_sku);
var oldData = conn.QueryFirstOrDefault(" select * from dc_average_purchase where bailun_sku=@bailun_sku and supplier_id=@supplier_id ", parameters); parameters.Add("supplier_id", data.supplier_id);
if (oldData == null) var oldData = conn.QueryFirstOrDefault(" select * from dc_average_purchase where bailun_sku=@bailun_sku and supplier_id=@supplier_id ", parameters);
{ if (oldData == null)
conn.Insert(data); {
} conn.Insert(data);
else }
{ else
data.ID = oldData.ID; {
conn.Update(data); data.ID = oldData.ID;
} conn.Update(data);
} }
}
/// <summary>
/// 保存数据 /// <summary>
/// </summary> /// 保存数据
/// <param name="data"></param> /// </summary>
public static void Save(dc_average_warehouse data, MySqlConnection conn) /// <param name="data"></param>
{ public static void Save(dc_average_warehouse data, MySqlConnection conn)
if (conn == null) {
{ if (conn == null)
conn = _connection; {
} conn = _connection;
}
data.update_time = DateTime.Now;
data.update_time = DateTime.Now;
DynamicParameters parameters = new DynamicParameters();
parameters.Add("bailun_sku", data.bailun_sku); DynamicParameters parameters = new DynamicParameters();
parameters.Add("warehouse_code", data.warehouse_code); parameters.Add("bailun_sku", data.bailun_sku);
var oldData = conn.QueryFirstOrDefault(" select * from dc_average_warehouse where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", parameters); parameters.Add("warehouse_code", data.warehouse_code);
if (oldData == null) var oldData = conn.QueryFirstOrDefault(" select * from dc_average_warehouse where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", parameters);
{ if (oldData == null)
conn.Insert(data); {
} conn.Insert(data);
else }
{ else
data.ID = oldData.ID; {
conn.Update(data); data.ID = oldData.ID;
} conn.Update(data);
} }
} }
}
public class temp_sku_dto
{ public class temp_sku_dto
public string bailun_sku { get; set; } {
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
public string warehouse_code { get; set; }
public int? supplier_id { get; set; }
} public int? supplier_id { get; set; }
} }
}
......
...@@ -35,6 +35,7 @@ namespace AutoTurnOver.DB ...@@ -35,6 +35,7 @@ namespace AutoTurnOver.DB
/// <param name="mainID"></param> /// <param name="mainID"></param>
public static void ImportDetailed(int mainID) public static void ImportDetailed(int mainID)
{ {
// 生成采购建议
_connection.Execute(@" _connection.Execute(@"
INSERT into dc_auto_purchase_advise_detailed(`bailun_sku`,`warehouse_code`,`quantity_init_advise`,`quantity_final_advise`, INSERT into dc_auto_purchase_advise_detailed(`bailun_sku`,`warehouse_code`,`quantity_init_advise`,`quantity_final_advise`,
`product_inner_code`,`goods_quantity_init_advise`,`goods_moq`,`good_sku_codes`,`goods_history_fourteenday_sales`,`history_fourteenday_sales`, `product_inner_code`,`goods_quantity_init_advise`,`goods_moq`,`good_sku_codes`,`goods_history_fourteenday_sales`,`history_fourteenday_sales`,
...@@ -90,6 +91,12 @@ select ...@@ -90,6 +91,12 @@ select
) )
", new { main_id = mainID }, commandTimeout: 0); ", new { main_id = mainID }, commandTimeout: 0);
// 凑单sku(初始建议数没有) 如果下单数只有一个,改为2
_connection.Execute(" update dc_auto_purchase_advise_detailed set quantity_final_advise=2 where quantity_final_advise=1 and quantity_init_advise<=0 and main_id=@main_id ", new { main_id = mainID });
// 初始建议数为1,,系统建议数为1时 改为3
_connection.Execute(" update dc_auto_purchase_advise_detailed set quantity_final_advise=3 where quantity_final_advise=1 and quantity_init_advise=1 and main_id=@main_id ", new { main_id = mainID });
// 调整因为舍弃小数导致的moq不足 // 调整因为舍弃小数导致的moq不足
var datas = _connection.Query<dc_auto_purchase_advise_detailed>(" select * from dc_auto_purchase_advise_detailed where main_id=@main_id ", new { main_id = mainID }).AsList(); var datas = _connection.Query<dc_auto_purchase_advise_detailed>(" select * from dc_auto_purchase_advise_detailed where main_id=@main_id ", new { main_id = mainID }).AsList();
if (datas != null && datas.Count > 0) if (datas != null && datas.Count > 0)
...@@ -111,6 +118,7 @@ select ...@@ -111,6 +118,7 @@ select
} }
} }
} }
/// <summary> /// <summary>
...@@ -199,7 +207,7 @@ sum(t5.quantity_out_stock) as 'quantity_out_stock', -- 缺货 ...@@ -199,7 +207,7 @@ sum(t5.quantity_out_stock) as 'quantity_out_stock', -- 缺货
sum(t5.quantity_transfer) as 'quantity_transfer', -- 调拨在途 sum(t5.quantity_transfer) as 'quantity_transfer', -- 调拨在途
sum(t5.quantity_purchase) as 'quantity_purchase', -- 采购在途 sum(t5.quantity_purchase) as 'quantity_purchase', -- 采购在途
sum(t5.quantity_inventory) as 'quantity_inventory', -- 库存数 sum(t5.quantity_inventory) as 'quantity_inventory', -- 库存数
sum(t3.unit_price * t1.quantity_final_advise) as 'quantity_final_advise_price', -- 采购金额 sum(t3.unit_price * (case when t1.quantity_actual>0 then t1.quantity_actual else t1.quantity_final_advise end ) ) as 'quantity_final_advise_price', -- 采购金额
sum(t5.turnover_days) as 'turnover_days', -- 周转天数 sum(t5.turnover_days) as 'turnover_days', -- 周转天数
sum(t1.quantity_init_advise) as 'quantity_init_advise', sum(t1.quantity_init_advise) as 'quantity_init_advise',
...@@ -224,7 +232,7 @@ t1.*,t2.warehouse_name,t3.sku_title_cn as 'sku_name',t4.create_time,t3.buyer_nam ...@@ -224,7 +232,7 @@ t1.*,t2.warehouse_name,t3.sku_title_cn as 'sku_name',t4.create_time,t3.buyer_nam
(t5.quantity_transfer) as 'quantity_transfer', -- 调拨在途 (t5.quantity_transfer) as 'quantity_transfer', -- 调拨在途
(t5.quantity_purchase) as 'quantity_purchase', -- 采购在途 (t5.quantity_purchase) as 'quantity_purchase', -- 采购在途
(t5.quantity_inventory) as 'quantity_inventory', -- 库存数 (t5.quantity_inventory) as 'quantity_inventory', -- 库存数
(t3.unit_price * t1.quantity_final_advise) as 'quantity_final_advise_price', -- 采购金额 (t3.unit_price * (case when t1.quantity_actual>0 then t1.quantity_actual else t1.quantity_final_advise end ) ) as 'quantity_final_advise_price', -- 采购金额
t3.suppliers_name t3.suppliers_name
from dc_auto_purchase_advise_detailed as t1 from dc_auto_purchase_advise_detailed as t1
left join dc_base_warehouse as t2 on t1.warehouse_code = t2.warehouse_code left join dc_base_warehouse as t2 on t1.warehouse_code = t2.warehouse_code
...@@ -293,16 +301,31 @@ where 1=1 "; ...@@ -293,16 +301,31 @@ where 1=1 ";
sql += " and t3.buyer_name =@buyer_name "; sql += " and t3.buyer_name =@buyer_name ";
parameters.Add("buyer_name", m.purchase_user); parameters.Add("buyer_name", m.purchase_user);
} }
if (m.quantity_final_advise_price_min > 0) if (m.quantity_final_advise_price_min > 0 && m.quantity_final_advise_price_max > 0)
{ {
sql += " and (t3.unit_price * t1.quantity_final_advise)>=@quantity_final_advise_price_min "; sql += @" and EXISTS (
select * from view_purchase_advise_supplier_price as t_price where t_price.main_id=t1.main_id and t1.suppliers_id=t_price.suppliers_id and t1.warehouse_code = t_price.warehouse_code and t_price.price>@quantity_final_advise_price_min and t_price.price<=@quantity_final_advise_price_max
) ";
parameters.Add("quantity_final_advise_price_min", m.quantity_final_advise_price_min); parameters.Add("quantity_final_advise_price_min", m.quantity_final_advise_price_min);
}
if (m.quantity_final_advise_price_max > 0)
{
sql += " and (t3.unit_price * t1.quantity_final_advise)<=@quantity_final_advise_price_max ";
parameters.Add("quantity_final_advise_price_max", m.quantity_final_advise_price_max); parameters.Add("quantity_final_advise_price_max", m.quantity_final_advise_price_max);
} }
else
{
if (m.quantity_final_advise_price_max > 0)
{
sql += @" and EXISTS (
select * from view_purchase_advise_supplier_price as t_price where t_price.main_id=t1.main_id and t1.suppliers_id=t_price.suppliers_id and t1.warehouse_code = t_price.warehouse_code and t_price.price<=@quantity_final_advise_price_max
) ";
parameters.Add("quantity_final_advise_price_max", m.quantity_final_advise_price_max);
}
if (m.quantity_final_advise_price_min > 0)
{
sql += @" and EXISTS (
select * from view_purchase_advise_supplier_price as t_price where t_price.main_id=t1.main_id and t1.suppliers_id=t_price.suppliers_id and t1.warehouse_code = t_price.warehouse_code and t_price.price>@quantity_final_advise_price_min
) ";
parameters.Add("quantity_final_advise_price_min", m.quantity_final_advise_price_min);
}
}
if (m.is_multiple_warehouse) if (m.is_multiple_warehouse)
{ {
...@@ -367,6 +390,10 @@ and EXISTS ( ...@@ -367,6 +390,10 @@ and EXISTS (
/// <returns></returns> /// <returns></returns>
public static IEnumerable<dc_auto_purchase_advise_detailed_buy_dto> BuyDetailList(List<int> ids, bool? ispush = null) public static IEnumerable<dc_auto_purchase_advise_detailed_buy_dto> BuyDetailList(List<int> ids, bool? ispush = null)
{ {
if(ids==null || ids.Count <= 0)
{
return new List<dc_auto_purchase_advise_detailed_buy_dto>();
}
DynamicParameters parameters = new DynamicParameters(); DynamicParameters parameters = new DynamicParameters();
parameters.Add("ids", ids); parameters.Add("ids", ids);
string sql = @" select t1.*,t2.unit_price from dc_auto_purchase_advise_detailed as t1 string sql = @" select t1.*,t2.unit_price from dc_auto_purchase_advise_detailed as t1
......
...@@ -294,7 +294,7 @@ namespace AutoTurnOver.Controllers ...@@ -294,7 +294,7 @@ namespace AutoTurnOver.Controllers
sku = sku, sku = sku,
warehouse_code = warehousecode, warehouse_code = warehousecode,
end_date = end_date, end_date = end_date,
start_date = start_date, start_date = DateTime.Now,
warehousearea = warehousearea, warehousearea = warehousearea,
warehousetype = warehousetype, warehousetype = warehousetype,
ispush = false, ispush = false,
......
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