Commit 94c55653 by zhoujinhui

新增查询推送采购建议sku

parent d456c63a
......@@ -7,6 +7,7 @@ using System.Linq;
using System.Text;
using System.Threading;
using AutoTurnOver.Utility;
using AutoTurnOver.Models.dc_base_purchase;
namespace AutoTurnOver.DB
{
......@@ -68,7 +69,7 @@ namespace AutoTurnOver.DB
if (logisticsDatas != null && logisticsDatas.Count >= 1)
{
// 查询最快的物流渠道
var avgs = ApiUtility.GetLmsOrderTransferAvg(new Models.ApiDto.api_lms_order_transfer_sku_requst_dto {transfer_type_val =3, warehouse_code = item.warehouse_code, country = item.country_code, logistics_code = string.Join(",", logisticsDatas.Select(s => s.Line_Code)) }).Where(s => s.avg_put_days != null).ToList();
var avgs = ApiUtility.GetLmsOrderTransferAvg(new Models.ApiDto.api_lms_order_transfer_sku_requst_dto { transfer_type_val = 3, warehouse_code = item.warehouse_code, country = item.country_code, logistics_code = string.Join(",", logisticsDatas.Select(s => s.Line_Code)) }).Where(s => s.avg_put_days != null).ToList();
if (avgs != null)
{
var selectItem = avgs.Where(s => s.avg_put_days != null)
......@@ -584,12 +585,12 @@ set quantity_final_advise=3
where t2.`status`=2 and t1.bailun_sku = t2.bailun_sku and quantity_final_advise=1 and quantity_init_advise=1 and ( t2.buyer_name not in ('赵美聪','甄杰靖','张莹霞','张莹霞1') or t1.warehouse_code!='GZBLWH' ) and main_id=@main_id ", new { main_id = mainID }, commandTimeout: 0);
//张莹霞1 and 广州01 去掉缺货数
// _connection.Execute(@" update dc_auto_purchase_advise_detailed as t1,
//dc_mid_transit as t2 ,
//dc_base_sku as t3
//set t1.quantity_final_advise=GREATEST(0,t1.quantity_final_advise-t2.quantity_out_stock)
//where t1.bailun_sku = t2.bailun_sku and t1.warehouse_code = t2.warehouse_code and t1.bailun_sku=t3.bailun_sku
//and t1.quantity_init_advise>=0 and ( t3.buyer_name in ('张莹霞1') and t1.warehouse_code='GZBLWH' ) and t1.main_id=@main_id ", new { main_id = mainID }, commandTimeout: 0);
// _connection.Execute(@" update dc_auto_purchase_advise_detailed as t1,
//dc_mid_transit as t2 ,
//dc_base_sku as t3
//set t1.quantity_final_advise=GREATEST(0,t1.quantity_final_advise-t2.quantity_out_stock)
//where t1.bailun_sku = t2.bailun_sku and t1.warehouse_code = t2.warehouse_code and t1.bailun_sku=t3.bailun_sku
//and t1.quantity_init_advise>=0 and ( t3.buyer_name in ('张莹霞1') and t1.warehouse_code='GZBLWH' ) and t1.main_id=@main_id ", new { main_id = mainID }, commandTimeout: 0);
//全量出的时候,才需要这一步
if (is_clear_data)
......@@ -669,22 +670,23 @@ where t2.`status`=2 and t1.bailun_sku = t2.bailun_sku and quantity_final_advise=
left join dc_base_warehouse as t2 on t1.warehouse_code =t2.warehouse_code
where t2.hq_type='fba仓'
-- and t2.area_id=7
and quantity_init_advise<0 and t1.bailun_sku in @bailun_skus ", new {
bailun_skus = fbaDatas.Select(s=>s.bailun_sku).ToList()
and quantity_init_advise<0 and t1.bailun_sku in @bailun_skus ", new
{
bailun_skus = fbaDatas.Select(s => s.bailun_sku).ToList()
}).ToList();
foreach (var groupItem in fbaDatas.GroupBy(s=>new { s.bailun_sku,s.area_id}))
foreach (var groupItem in fbaDatas.GroupBy(s => new { s.bailun_sku, s.area_id }))
{
if(groupItem.Key.bailun_sku== "N-S-BT")
if (groupItem.Key.bailun_sku == "N-S-BT")
{
}
var rDatas = redundancyList.Where(s => s.bailun_sku == groupItem.Key.bailun_sku && s.area_id == groupItem.Key.area_id).ToList();
if(rDatas!=null&& rDatas.Count >= 1)
if (rDatas != null && rDatas.Count >= 1)
{
// 排序分摊
var sumQuantity = rDatas.Sum(s => s.quantity_init_advise);
var groupStr = string.Join(",", rDatas.Select(s=>s.warehouse_code+":"+ s.quantity_init_advise));
foreach (var item in groupItem.OrderByDescending(s=>s.quantity_init_advise))
var groupStr = string.Join(",", rDatas.Select(s => s.warehouse_code + ":" + s.quantity_init_advise));
foreach (var item in groupItem.OrderByDescending(s => s.quantity_init_advise))
{
//冗余分完了
if (sumQuantity <= 0)
......@@ -1171,8 +1173,8 @@ where t1.bailun_order_status != 'Canceled'
if (item.auto_replace_logistics_task_id > 0)
{
// 检查建议数是否超过35天的日均
var quantity_35 = (int)Math.Ceiling((item.fixed_daily_weighted_sales??0) * 35);
if (item.quantity_final_advise> quantity_35 && item.quantity_final_advise>200)
var quantity_35 = (int)Math.Ceiling((item.fixed_daily_weighted_sales ?? 0) * 35);
if (item.quantity_final_advise > quantity_35 && item.quantity_final_advise > 200)
{
var quantity_final_advise = item.quantity_final_advise;
item.quantity_final_advise = quantity_35;
......@@ -1184,7 +1186,7 @@ where t1.bailun_order_status != 'Canceled'
item2.logistics_code = "";
item2.logistics_name = "";
item2.task_transport_type = "";
item2.quantity_final_advise = quantity_final_advise-quantity_35;
item2.quantity_final_advise = quantity_final_advise - quantity_35;
datas.Add(item2);
}
else
......@@ -2199,11 +2201,11 @@ where 1=1 ";
sql += " and t1.`status` =@is_delete ";
parameters.Add("is_delete", m.is_delete);
}
if (m.is_overdue ==1)
if (m.is_overdue == 1)
{
sql += " AND (to_days(now()) - to_days(t1.create_time))>1 AND t1.`status` = 0 AND t1.ispush!= 1 ";
}
else if(m.is_overdue == 0)
else if (m.is_overdue == 0)
{
sql += " AND ((to_days(now()) - to_days(t1.create_time))<1 OR t1.`status` != 0 OR t1.ispush=1) ";
}
......@@ -2497,11 +2499,69 @@ where 1=1 ";
/// </summary>
public static void UpdatePriorityStorageCapacity(SetPriorityStorageCapacityInputDto data)
{
_connection.Execute(" update dc_auto_purchase_advise_detailed set is_priority_storage_capacity=@is_priority_storage_capacity where id=@id ",new {
_connection.Execute(" update dc_auto_purchase_advise_detailed set is_priority_storage_capacity=@is_priority_storage_capacity where id=@id ", new
{
is_priority_storage_capacity = data.status,
id = data.id
});
}
public static List<dc_purchase_advise_sku_output_dto> GetPurchaseAdviseSkuPageList(dc_purchase_advise_sku_search_dto input, ref int total)
{
if (!input.start_date.HasValue || !input.end_date.HasValue) return new List<dc_purchase_advise_sku_output_dto>();
DynamicParameters parameters = new DynamicParameters();
StringBuilder countSql = new StringBuilder();
StringBuilder sqlWhere = new StringBuilder();
StringBuilder sqlQuery = new StringBuilder();
sqlWhere.Append(" FROM dc_auto_purchase_advise_detailed AS t1 ");
sqlWhere.Append(" LEFT JOIN dc_base_sku AS t2 ON t2.bailun_sku = t1.bailun_sku ");
sqlWhere.Append(" LEFT JOIN dc_base_warehouse AS t3 ON t3.warehouse_code = t1.warehouse_code ");
sqlWhere.Append(" WHERE t1.ispush = 1 ");
if (!string.IsNullOrWhiteSpace(input.bailun_sku))
{
parameters.Add("bailun_sku", input.bailun_sku);
sqlWhere.Append(" AND t2.bailun_sku = @bailun_sku ");
}
if (!string.IsNullOrWhiteSpace(input.plan_nos))
{
parameters.Add("plan_nos", input.plan_nos);
sqlWhere.Append(" AND t1.plan_nos = @plan_nos ");
}
if (!string.IsNullOrWhiteSpace(input.warehousecode))
{
parameters.Add("warehousecode", input.warehousecode);
sqlWhere.Append(" AND t1.warehouse_code = @warehousecode ");
}
if (input.start_date.HasValue && input.start_date.Value != DateTime.MinValue)
{
parameters.Add("start_date", input.start_date);
sqlWhere.Append(" AND t1.push_date >= @start_date ");
}
if (input.end_date.HasValue && input.end_date.Value != DateTime.MinValue)
{
parameters.Add("end_date", input.end_date);
sqlWhere.Append(" AND t1.push_date <= @end_date ");
}
if (!string.IsNullOrWhiteSpace(input.suppliername) && !input.suppliername.Equals("null"))
{
parameters.Add("suppliername", input.suppliername);
sqlWhere.Append(" AND t2.suppliers_name = @suppliername ");
}
sqlQuery.Append("SELECT t1.plan_nos,t1.bailun_sku, date_format(t1.push_date, '%Y-%m-%d') AS create_order_date,t1.warehouse_code,t3.warehouse_name,t2.sku_title_cn,'' AS supplier_sku,");
sqlQuery.Append("t1.push_date,t2.unit_price,t1.quantity_actual,t2.suppliers_name ");
sqlQuery.Append(sqlWhere);
sqlQuery.Append($" ORDER BY t1.id DESC ");
if (input.IsPage)
{
sqlQuery.Append($" LIMIT {input.offset},{input.limit}; ");
countSql.Append("SELECT COUNT(0) ");
countSql.Append(sqlWhere);
total = _connection.QueryFirst<int>(countSql.ToString(), parameters, commandTimeout: 0);
}
var obj = _connection.Query<dc_purchase_advise_sku_output_dto>(sqlQuery.ToString(), parameters, buffered: false, commandTimeout: 0);
return obj.AsList();
}
}
}
using System;
namespace AutoTurnOver.Models.dc_base_purchase
{
/// <summary>
/// 查询推送采购系统明细返回参数
/// </summary>
public class dc_purchase_advise_sku_output_dto
{
/// <summary>
/// 采购计划单号
/// </summary>
public string plan_nos { get; set; }
/// <summary>
/// 百伦sku编码
/// </summary>
public string bailun_sku { get; set; }
/// <summary>
/// 供应商货号sku
/// </summary>
public string supplier_sku { get; set; }
/// <summary>
/// 日期
/// </summary>
public string create_order_date { get; set; }
/// <summary>
/// 产品英文名称
/// </summary>
public string sku_title_cn { get; set; }
/// <summary>
/// 推送时间
/// </summary>
public DateTime push_date { get; set; }
public string push_dateStr => push_date.ToString("yyyy-MM-dd HH:mm:ss ");
/// <summary>
/// 仓库编码
/// </summary>
public string warehouse_code { get; set; }
/// <summary>
/// 仓库名称
/// </summary>
public string warehouse_name { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
public string suppliers_name { get; set; }
/// <summary>
/// 下单数量
/// </summary>
public int quantity_actual { get; set; }
/// <summary>
/// 产品单价
/// </summary>
public decimal unit_price { get; set; }
}
}
using System;
namespace AutoTurnOver.Models.dc_base_purchase
{
/// <summary>
/// 查询推送采购系统sku明细
/// </summary>
public class dc_purchase_advise_sku_search_dto
{
public int offset { get; set; }
public int limit { get; set; }
public string plan_nos { get; set; }
public string bailun_sku { get; set; }
public DateTime? start_date { get; set; }
public DateTime? end_date { get; set; }
public string warehousecode { get; set; }
public string suppliername { get; set; }
public bool IsPage { get; set; } = true;
}
}
......@@ -2,6 +2,7 @@
using AutoTurnOver.Models;
using AutoTurnOver.Models.ApiDto;
using AutoTurnOver.Models.auto;
using AutoTurnOver.Models.dc_base_purchase;
using AutoTurnOver.Utility;
using Bailun.ServiceFabric;
using Dapper;
......@@ -748,5 +749,15 @@ namespace AutoTurnOver.Services
}
}
/// <summary>
/// 分页查询推送采购系统sku
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public List<dc_purchase_advise_sku_output_dto> GetPurchaseAdviseSkuPageList(dc_purchase_advise_sku_search_dto input, ref int total)
{
return DB.purchase_advise.GetPurchaseAdviseSkuPageList(input, ref total);
}
}
}
......@@ -11,6 +11,7 @@ using System.Data;
using AutoTurnOver.Common;
using System.IO;
using AutoTurnOver.DB;
using AutoTurnOver.Models.dc_base_purchase;
namespace AutoTurnOver.Controllers
{
......@@ -328,5 +329,74 @@ namespace AutoTurnOver.Controllers
}
}
/// <summary>
/// 分页查询推送采购系统sku
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet]
public JsonResult GetPurchaseAdviseSkuPageList([FromQuery] dc_purchase_advise_sku_search_dto input)
{
var total = 0;
var list =new PurchaseAdviseServices().GetPurchaseAdviseSkuPageList(input, ref total);
return new JsonResult(new
{
rows = list,
total = total,
});
}
/// <summary>
/// 导出推送采购系统sku
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[NoLogin]
public FileResult PurchaseAdviseSkuExport([FromQuery] dc_purchase_advise_sku_search_dto input)
{
var total = 0;
input.IsPage = false;
var list = new PurchaseAdviseServices().GetPurchaseAdviseSkuPageList(input, ref total);
DataTable table = new DataTable();
string[] cols = new string[] {
"采购计划单号", "供应商货号sku", "日期", "仓库编码","仓库名称", "Sku","Sku名称", "单价", "下单数", "下单时间", "推单时间","供应商名称"
};
foreach (var item in cols)
{
table.Columns.Add(item);
}
foreach (var itemData in list)
{
DataRow row = table.NewRow();
row["采购计划单号"] = itemData.plan_nos;
row["供应商货号sku"] = itemData.supplier_sku;
row["日期"] = itemData.create_order_date;
row["仓库编码"] = itemData.warehouse_code;
row["仓库名称"] = itemData.warehouse_name;
row["Sku"] = itemData.bailun_sku;
row["Sku名称"] = itemData.sku_title_cn;
row["单价"] = itemData.unit_price;
row["下单数"] = itemData.quantity_actual;
row["下单时间"] = itemData.push_dateStr;
row["推单时间"] = itemData.push_dateStr;
row["供应商名称"] = itemData.suppliers_name;
table.Rows.Add(row);
}
var fileName = AppContext.BaseDirectory + @"Result\RealtimeStock\推采购sku计划列表.csv";
DataTableHelper.SaveCSV(table, fileName);
var memory = new MemoryStream();
using (var stream = new FileStream(fileName, FileMode.Open))
{
stream.CopyTo(memory);
}
memory.Position = 0;
return File(memory, "text/csv", "推采购sku计划列表.csv");
}
}
}
\ No newline at end of file
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