Commit 32b696fe by lizefeng

aims 采购建议-批量修改

aims 采购建议 日期选择异常
aims 周转页面查询慢
parent 27964b16
......@@ -12,7 +12,7 @@ namespace AutoGeneratePurchaseAdvise
{
Console.WriteLine("采购建议计算任务启动...");
// 创建采购计划
//PurchaseAdviseServices.Generate();
PurchaseAdviseServices.Generate();
var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{
services.AddHostedService<GeneratePurchaseAdviseBackgroundService>();
......
......@@ -218,7 +218,7 @@ where 1=1 ";
else {
sql = @"
select
t1.*,t2.warehouse_name,t3.sku_title_cn as 'sku_name',t4.create_time,
t1.*,t2.warehouse_name,t3.sku_title_cn as 'sku_name',t4.create_time,t3.buyer_name,
(t5.quantity_safe_inventory) as 'quantity_safe_inventory', -- 日均加权销量
(t5.quantity_out_stock) as 'quantity_out_stock', -- 缺货
(t5.quantity_transfer) as 'quantity_transfer', -- 调拨在途
......@@ -233,8 +233,8 @@ left join dc_auto_purchase_advise as t4 on t1.main_id = t4.id
left join dc_auto_turnover as t5 on t1.warehouse_code = t5.warehouse_code and t1.bailun_sku = t5.bailun_sku
where 1=1 ";
}
if (!string.IsNullOrWhiteSpace(m.product_inner_code))
{
sql += " and t3.product_inner_code=" + m.product_inner_code;
......@@ -293,8 +293,21 @@ where 1=1 ";
parameters.Add("buyer_name", m.purchase_user);
}
if (m.is_multiple_warehouse)
{
sql += @"
and EXISTS (
select * from (
select t1.bailun_sku from dc_auto_purchase_advise_detailed as t1
left join dc_base_warehouse as t2 on t1.warehouse_code = t2.warehouse_code
GROUP BY t1.bailun_sku
HAVING count(DISTINCT t2.area_name)>1
) as t_temp where t_temp.bailun_sku=t1.bailun_sku
)";
}
if (m.isSum)
{
total = 0;
......@@ -385,16 +398,27 @@ left join dc_auto_purchase_advise as t2 on t1.main_id = t2.id where t1.bailun_sk
if (oldData == null) throw new Exception("数据异常");
dc_auto_purchase_advise oldMainData = _connection.QueryFirstOrDefault<dc_auto_purchase_advise>(" select * from dc_auto_purchase_advise where id=@id ", new { id = oldData.main_id });
if (oldMainData == null) throw new Exception("数据异常");
if (oldMainData.push_time != null) throw new Exception("该采购计划已推送,不可修改");
if (oldData.ispush ==1 ) throw new Exception($"【{oldData.bailun_sku}】该数据已推送,不可修改");
_connection.Execute(" update dc_auto_purchase_advise_detailed set quantity_actual=@quantity_actual where id=@id ", new { quantity_actual = quantity_actual, id = id });
}
/// <summary>
/// 批量设置
/// </summary>
/// <param name="datas"></param>
public static void BatchSetQuantityActual(List<BatchSetQuantityActualInputDto> datas)
{
if (datas != null)
{
foreach (var item in datas)
{
SetQuantityActual(item.id, item.quantity_actual);
}
}
}
/// <summary>
/// 查询历史采购建议
/// </summary>
/// <param name="sku"></param>
......@@ -408,5 +432,14 @@ left join dc_auto_purchase_advise as t2 on t1.main_id = t2.id
where t1.warehouse_code=@warehousecode and t1.bailun_sku=@sku and t2.create_time>=@b_create_time and t2.create_time<=@e_create_time order by t2.create_time desc limit 1 ";
return _connection.QueryFirstOrDefault<dc_auto_purchase_advise_detailed>(sql, new { sku, warehousecode, b_create_time = dateTime.ToString("yyyy-MM-dd 00:00:00"), e_create_time = dateTime.ToString("yyyy-MM-dd 23:59:59") });
}
/// <summary>
/// 删除数据
/// </summary>
/// <param name="id"></param>
public static void Del(int id)
{
_connection.Delete<dc_auto_purchase_advise_detailed>(id);
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models
{
public class BatchSetQuantityActualInputDto
{
public int id { get; set; }
public int quantity_final_advise { get; set; }
public int quantity_actual { get; set; }
}
public class BatchSetQuantityActualInputDataDto
{
public List<BatchSetQuantityActualInputDto> datas { get; set; }
}
}
......@@ -186,6 +186,8 @@ namespace AutoTurnOver.Models
public string suppliers_name { get; set; }
public string buyer_name { get; set; }
}
......@@ -247,6 +249,11 @@ namespace AutoTurnOver.Models
public string product_inner_code { get; set; }
public bool isSum { get; set; }
/// <summary>
/// 是否是同区多仓的sku
/// </summary>
public bool is_multiple_warehouse { get; set; }
}
}
......@@ -231,6 +231,10 @@ namespace AutoTurnOver.Models
/// </summary>
public int quantity_begin_advise { get; set; }
/// <summary>
/// 付款时间
/// </summary>
public int payment_before_delivery { get; set; }
/// <summary>
/// 备货天数
......
......@@ -29,7 +29,7 @@ namespace AutoTurnOver.Services
{
Console.WriteLine(ex.Message);
}
}
/// <summary>
......@@ -88,7 +88,7 @@ namespace AutoTurnOver.Services
/// <returns></returns>
public static List<dc_auto_purchase_advise_detailed_dto> DetailList(dc_auto_purchase_advise_detailed_search_dto m, int offset, int limit, ref int total, string order = "", string sort = "")
{
return purchase_advise.DetailList(m, offset, limit, ref total, order,sort);
return purchase_advise.DetailList(m, offset, limit, ref total, order, sort);
}
/// <summary>
......@@ -101,6 +101,16 @@ namespace AutoTurnOver.Services
}
/// <summary>
/// 批量设置采购数量
/// </summary>
/// <param name="id"></param>
public static void BatchSetQuantityActual(List<BatchSetQuantityActualInputDto> datas)
{
purchase_advise.BatchSetQuantityActual(datas);
}
/// <summary>
/// 查询历史采购建议
/// </summary>
/// <param name="id"></param>
......@@ -109,11 +119,18 @@ namespace AutoTurnOver.Services
return purchase_advise.DetailInfo(sku, warehousecode, dateTime);
}
public static void Del(int id)
{
purchase_advise.Del(id);
}
/// <summary>
/// 把最新一批的采购单推送到采购系统
/// </summary>
/// <param name="mainId"></param>
public static void PushBuySys(List<dc_auto_purchase_advise_detailed_dto> datas,int type)
public static void PushBuySys(List<dc_auto_purchase_advise_detailed_dto> datas)
{
MySqlConnection conn = connectionHelper._connection;
conn.Open();
......@@ -129,7 +146,7 @@ namespace AutoTurnOver.Services
List<string> planNos = new List<string>();
DateTime now = DateTime.Now;
// 查询未推送成功的采购建议的明细
var detailList = purchase_advise.BuyDetailList(datas.Select(s=>s.id).ToList(), false);
var detailList = purchase_advise.BuyDetailList(datas.Select(s => s.id).ToList(), false);
foreach (var item in detailList.GroupBy(s => s.warehouse_code))
{
......@@ -137,7 +154,7 @@ namespace AutoTurnOver.Services
{
bp_sendtype = 1,
bp_sendfromCode = item.Key,
type = type,
type = item.Any(s => s.type == 2) ? 2 : item.Any(s => s.type == 1) ? 1 : 3,
bi_buyplandetail = new List<bi_buyplandetail>()
};
......@@ -148,19 +165,19 @@ namespace AutoTurnOver.Services
bd_sku = s.bailun_sku
}).ToList();
//把采购数量没有填的都补上 建议采购数
conn.Execute(" update dc_auto_purchase_advise_detailed set quantity_actual=quantity_final_advise where quantity_actual<=0 and id in @ids ", new { ids = datas.Select(s=>s.id).ToList() }, transaction);
conn.Execute(" update dc_auto_purchase_advise_detailed set quantity_actual=quantity_final_advise where quantity_actual<=0 and id in @ids ", new { ids = datas.Select(s => s.id).ToList() }, 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() });
conn.Execute(" update dc_auto_purchase_advise_detailed set ispush=1,plan_nos=@plan_nos where id in @ids ", new { ids = item.Select(s => s.id).ToArray(), plan_nos = result.planNo });
}
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);
//conn.Execute(" update dc_auto_purchase_advise set buy_sys_plan_no=CONCAT(buy_sys_plan_no,@buy_sys_plan_no),push_time=@push_time where where @detailed_ids ", new { buy_sys_plan_no = string.Join(",", planNos), push_time = now, detailed_ids = item.Select(s => s.id).ToArray() }, transaction);
transaction.Commit();
}
......
......@@ -125,7 +125,7 @@ namespace AutoTurnOver.Controllers
string[] cols = new string[] { "Sku", "采购名称", "中文名", "英文名称","内部编码", "仓库编码", "仓库名称", "货主编码","实时采购在途","实时调拨在途"
,"订货数量","运输在途","中转仓库存","冻结库存","供应商库存","预售库存","不良品库存","在途库存","收货待检"
,"待上架","可配库存","销售可用库存(聚合)","销售可用库存(私有)","销售可用库存(共享)","在仓库存(共享)","在仓库存(私有)","在仓库存(聚合)","仓库占用(共享)"
,"仓库占用(私有)","仓库占用(聚合)","活动占用","单占用(私有)","订单占用(共享)","订单占用(聚合)","环球更新时间","供应商"
,"仓库占用(私有)","仓库占用(聚合)","活动占用","单占用(私有)","订单占用(共享)","订单占用(聚合)","环球更新时间","供应商","采购员"
};
foreach (var item in cols)
{
......@@ -173,7 +173,7 @@ namespace AutoTurnOver.Controllers
row["实时采购在途"] = itemData.realtime_quantity_purchase;
row["实时调拨在途"] = itemData.realtime_quantity_transfer;
row["供应商"] = itemData.suppliers_name;
row["采购员"] = itemData.buyer_name;
table.Rows.Add(row);
}
......
......@@ -61,7 +61,7 @@ namespace AutoTurnOver.Controllers
[HttpGet]
public string DetailList(int limit, int offset, int main_id, string sort, string sku, string warehousecode,
DateTime? end_date, DateTime? start_date, string warehousetype, int? warehousearea, string order,
bool? ispush = null, int? type = null, string supplier_name = null, string purchase_user = null, string product_inner_code = null)
bool? ispush = null, int? type = null, string supplier_name = null, string purchase_user = null, string product_inner_code = null, bool? is_multiple_warehouse = false)
{
var m = new dc_auto_purchase_advise_detailed_search_dto
{
......@@ -76,7 +76,8 @@ namespace AutoTurnOver.Controllers
type = type,
supplier_name = supplier_name,
purchase_user = purchase_user,
product_inner_code = product_inner_code
product_inner_code = product_inner_code,
is_multiple_warehouse = is_multiple_warehouse.Value
};
var total = 0;
......@@ -102,7 +103,7 @@ namespace AutoTurnOver.Controllers
[HttpGet]
public JsonResult DetailListSumFooter(int limit, int offset, int main_id, string sort, string sku, string warehousecode,
DateTime? end_date, DateTime? start_date, string warehousetype, int? warehousearea,
bool? ispush = null, int? type = null, string supplier_name = null, string purchase_user = null, string product_inner_code = null
bool? ispush = null, int? type = null, string supplier_name = null, string purchase_user = null, string product_inner_code = null,bool is_multiple_warehouse = false
)
{
var m = new dc_auto_purchase_advise_detailed_search_dto
......@@ -119,7 +120,8 @@ namespace AutoTurnOver.Controllers
supplier_name = supplier_name,
purchase_user = purchase_user,
product_inner_code = product_inner_code,
isSum = true
isSum = true,
is_multiple_warehouse = is_multiple_warehouse
};
var total = 0;
......@@ -134,7 +136,7 @@ namespace AutoTurnOver.Controllers
/// <param name="sku"></param>
/// <param name="warehousecode"></param>
/// <returns></returns>
public FileResult Export(int main_id, string sort, string sku, string warehousecode, DateTime? end_date, DateTime? start_date, string warehousetype, int? warehousearea, bool? ispush = null)
public FileResult Export(int main_id, string sort, string sku, string warehousecode, DateTime? end_date, DateTime? start_date, string warehousetype, int? warehousearea, bool? ispush = null,bool is_multiple_warehouse = false)
{
var m = new dc_auto_purchase_advise_detailed_search_dto
{
......@@ -145,7 +147,8 @@ namespace AutoTurnOver.Controllers
start_date = start_date,
warehousearea = warehousearea,
warehousetype = warehousetype,
ispush = ispush
ispush = ispush,
is_multiple_warehouse = is_multiple_warehouse
};
var total = 0;
......@@ -154,7 +157,7 @@ namespace AutoTurnOver.Controllers
DataTable table = new DataTable();
string[] cols = new string[] { "初始建议数", "系统建议数", "采购数量", "是否已推送", "时间", "sku", "产品名称", "产品14日日均", "仓库编码","仓库名称",
"内部商品编码", "商品建议采购", "商品14日日均", "商品moq", "日均加权销量", "缺货", "调拨在途", "采购在途", "库存数",
"采购金额", "供应链长度", "供应商名称", "采购类型"
"采购金额", "供应链长度", "供应商名称", "采购类型","采购员"
};
foreach (var item in cols)
{
......@@ -188,6 +191,7 @@ namespace AutoTurnOver.Controllers
row["供应链长度"] = itemData.turnover_days;
row["供应商名称"] = itemData.suppliers_name;
row["采购类型"] = itemData.type_str;
row["采购员"] = itemData.buyer_name;
table.Rows.Add(row);
}
......@@ -230,11 +234,39 @@ namespace AutoTurnOver.Controllers
}
/// <summary>
/// 批量设置采购数量
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost]
public JsonResult BatchSetQuantityActual([FromBody] BatchSetQuantityActualInputDataDto data)
{
try
{
PurchaseAdviseServices.BatchSetQuantityActual(data.datas);
return new JsonResult(new
{
success = true
});
}
catch (Exception ex)
{
return new JsonResult(new
{
success = false,
message = ex.Message
});
}
}
/// <summary>
/// 推送采购计划
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public JsonResult PushBuySys(int main_id, string sort, string sku, string warehousecode, DateTime? end_date, DateTime? start_date, string warehousetype, int? warehousearea)
public JsonResult PushBuySys(int limit, int offset, int main_id, string sort, string sku, string warehousecode,
DateTime? end_date, DateTime? start_date, string warehousetype, int? warehousearea, string order,
bool? ispush = null, int? type = null, string supplier_name = null, string purchase_user = null, string product_inner_code = null, bool? is_multiple_warehouse = false)
{
try
{
......@@ -247,15 +279,17 @@ namespace AutoTurnOver.Controllers
start_date = start_date,
warehousearea = warehousearea,
warehousetype = warehousetype,
ispush = false
ispush = false,
type = type,
supplier_name = supplier_name,
purchase_user = purchase_user,
product_inner_code = product_inner_code,
is_multiple_warehouse = is_multiple_warehouse.Value
};
var total = 0;
var list = PurchaseAdviseServices.DetailList(m, 0, int.MaxValue, ref total);
foreach (var item in list.GroupBy(s => s.type))
{
PurchaseAdviseServices.PushBuySys(item.ToList(), item.Key);
}
PurchaseAdviseServices.PushBuySys(list);
return new JsonResult(new
......@@ -299,6 +333,32 @@ namespace AutoTurnOver.Controllers
}
}
/// <summary>
/// 删除采购建议
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public JsonResult Del(int id)
{
try
{
PurchaseAdviseServices.Del(id);
return new JsonResult(new
{
success = true
});
}
catch (Exception ex)
{
return new JsonResult(new
{
success = false,
message = ex.Message
});
}
}
}
}
\ No newline at end of file
......@@ -8,7 +8,7 @@
}
},
"AllowedHosts": "*",
"PushBuyPlan": "http://192.168.6.229/api/CreatePlanToPurchase",
"PushBuyPlan": "http://purchase.bailuntec.com/api/CreatePlanToPurchase",
"WebHost_GetUser": "http://www.bailuntec.com/Login/GetUserByBLUserAcct?webcode=aims",
"WebHost_LoginOut": "http://www.bailuntec.com/Login/LoginOut"
}
......@@ -8,7 +8,7 @@
}
},
"AllowedHosts": "*",
"PushBuyPlan": "http://192.168.6.229/api/CreatePlanToPurchase",
"PushBuyPlan": "http://purchase.bailuntec.com/api/CreatePlanToPurchase",
"WebHost_GetUser": "http://www.bailuntec.com/Login/GetUserByBLUserAcct?webcode=aims",
"WebHost_LoginOut": "http://www.bailuntec.com/Login/LoginOut"
}
......@@ -8,7 +8,7 @@
}
},
"AllowedHosts": "*",
"PushBuyPlan": "http://192.168.6.229/api/CreatePlanToPurchase",
"PushBuyPlan": "http://purchase.bailuntec.com/api/CreatePlanToPurchase",
"WebHost_GetUser": "http://www.bailuntec.com/Login/GetUserByBLUserAcct?webcode=aims",
"WebHost_LoginOut": "http://www.bailuntec.com/Login/LoginOut"
}
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