Commit e52b7484 by lizefeng

升级库存界面(环球接口升级)

周转表新增商品编码的字段,新增商品编码。SKU,商品名称的模糊搜索
AIMS 系统周转列表增加一个导出功能
parent 209f6eae
......@@ -46,21 +46,16 @@ where t1.count>t2.inboundQuantity and t1.warehouse_code=@warehouse_code and t1.b
/// <param name="sku">sku</param>
/// <param name="warehouse_code">仓库编码</param>
/// <returns></returns>
public static IEnumerable<dc_realtime_purchase_daily_dto> RealtimeList(string sku, string warehouse_code, string product_inner_code, string sku_title_cn, int offset, int limit, ref int total, string warehousetype, int? warehousearea)
public static IEnumerable<dc_base_stock_dto> RealtimeList(string sku, string warehouse_code, string product_inner_code, string sku_title_cn, int offset, int limit, ref int total, string warehousetype, int? warehousearea)
{
var sql = @"
select
t1.warehouse_code,
t1.warehouse_name,
t1.bailun_sku,
t2.sku_name,
t1.quantity_avaliable,
t1.quantity_occupied,
t1.quantity_virtual,
t1.quantity_process,
dbw.warehouse_name,
t3.sku_title_cn as 'sku_name',
t2.quantity as 'purchase_daily_quantity',
t3.buyer_name,t3.sku_title_cn,t3.sku_title_en,t3.product_inner_code
from dc_daily_inventory as t1
t3.buyer_name,t3.sku_title_cn,t3.sku_title_en,t3.product_inner_code,
t1.*
from dc_base_stock as t1
left join ( select * from dc_daily_purchase where record_time>=@time and type=1) as t2 on t1.warehouse_code = t2.warehouse_code and t1.bailun_sku = t2.bailun_sku
left join dc_base_sku as t3 on t1.bailun_sku = t3.bailun_sku
left join dc_base_warehouse as dbw on t1.warehouse_code = dbw.warehouse_code
......@@ -70,7 +65,7 @@ where 1=1
var countSql = @"
select
count(1)
from dc_daily_inventory as t1
from dc_base_stock as t1
left join ( select * from dc_daily_purchase where record_time>=@time and type=1) as t2 on t1.warehouse_code = t2.warehouse_code and t1.bailun_sku = t2.bailun_sku
left join dc_base_sku as t3 on t1.bailun_sku = t3.bailun_sku
left join dc_base_warehouse as dbw on t1.warehouse_code = dbw.warehouse_code
......@@ -123,7 +118,7 @@ where 1=1
}
var obj = _connection.Query<dc_realtime_purchase_daily_dto>(sql + " limit " + offset + "," + limit, parameters);
var obj = _connection.Query<dc_base_stock_dto>(sql + " limit " + offset + "," + limit, parameters);
total = _connection.QueryFirst<int>(countSql, parameters);
return obj.AsList();
}
......
......@@ -29,11 +29,20 @@ namespace AutoTurnOver.DB
{
try
{
var sql = @"select dat.*,t2.oneday_sales,t2.forecast_oneday_sales as 'forecast_oneday_sales2' from dc_auto_turnover as dat
var sql = @"select dat.*,t2.oneday_sales,t2.forecast_oneday_sales as 'forecast_oneday_sales2',t4.product_inner_code from dc_auto_turnover as dat
left join dc_auto_sales as t2 on t2.bailun_sku=dat.bailun_sku and dat.warehouse_code = t2.warehouse_code
left join dc_base_warehouse as t3 on dat.warehouse_code = t3.warehouse_code
left join dc_base_sku as t4 on dat.bailun_sku = t4.bailun_sku
where 1=1 ";
if (!string.IsNullOrWhiteSpace(m.sku_name))
{
sql += " and dat.sku_title like" + $"'%{m.sku_name}%'";
}
if (!string.IsNullOrWhiteSpace(m.product_inner_code))
{
sql += " and t4.product_inner_code like " + $"'%{m.product_inner_code}%'";
}
if (m.hasDefectConfig == true)
{
sql += " and ( dat.abroad_inbound_delivery <=0 or dat.transfer_bale_delivery <=0 or dat.transfer_delivery <=0 ) ";
......@@ -95,6 +104,7 @@ where 1=1 ";
}
#region 特殊销售设置
/// <summary>
......
......@@ -54,7 +54,7 @@ INSERT into dc_auto_purchase_advise_detailed(`bailun_sku`,`warehouse_code`,`quan
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
where t1.quantity_final_advise>0
)
", new { main_id = mainID });
}
......
......@@ -229,6 +229,17 @@ namespace AutoTurnOver.Models
/// 是否有配置缺失
/// </summary>
public bool? hasDefectConfig { get; set; }
/// <summary>
/// 内部编码
/// </summary>
public string product_inner_code { get; set; }
/// <summary>
/// 商品中文名
/// </summary>
public string sku_name { get; set; }
}
public class dc_auto_turnover_Extend : dc_auto_turnover
......@@ -243,6 +254,10 @@ namespace AutoTurnOver.Models
/// </summary>
public int forecast_oneday_sales2 { get; set; }
/// <summary>
/// 商品内部编码
/// </summary>
public string product_inner_code { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models
{
public class dc_base_stock
{
public int id { get; set; }
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
/// <summary>
/// 货主编码
/// </summary>
public string owner_code { get; set; }
/// <summary>
/// 订货数量
/// </summary>
public int quantity_reservation { get; set; }
/// <summary>
/// 运输在途
/// </summary>
public int quantity_transport { get; set; }
/// <summary>
/// 中转仓库存
/// </summary>
public int quantity_transfer { get; set; }
/// <summary>
/// 冻结库存
/// </summary>
public int quantity_freeze { get; set; }
/// <summary>
/// 供应商库存
/// </summary>
public int quantity_supplier { get; set; }
/// <summary>
/// 预售库存
/// </summary>
public int quantity_presell { get; set; }
/// <summary>
/// 不良品库存
/// </summary>
public int quantity_defective { get; set; }
/// <summary>
/// 在途库存
/// </summary>
public int quantity_transit { get; set; }
/// <summary>
/// 收货待检
/// </summary>
public int wait_check { get; set; }
/// <summary>
/// 待上架
/// </summary>
public int wait_putaway { get; set; }
/// <summary>
/// 可配库存
/// </summary>
public int usable_stock { get; set; }
/// <summary>
/// 销售可用库存(聚合)
/// </summary>
public int usable_sales { get; set; }
/// <summary>
/// 销售可用库存(私有)
/// </summary>
public int usable_sales_private { get; set; }
/// <summary>
/// 销售可用库存(共享)
/// </summary>
public int usable_sales_share { get; set; }
/// <summary>
/// 在仓库存(共享)
/// </summary>
public int in_warehouse_share { get; set; }
/// <summary>
/// 在仓库存(私有)
/// </summary>
public int in_warehouse_private { get; set; }
/// <summary>
/// 在仓库存(聚合)
/// </summary>
public int in_warehouse { get; set; }
/// <summary>
/// 仓库占用(共享)
/// </summary>
public int occupy_stock_share { get; set; }
/// <summary>
/// 仓库占用(私有)
/// </summary>
public int occupy_stock_private { get; set; }
/// <summary>
/// 仓库占用(聚合)
/// </summary>
public int occupy_stock { get; set; }
/// <summary>
/// 活动占用
/// </summary>
public int occupy_activity { get; set; }
/// <summary>
/// 订单占用(私有)
/// </summary>
public int occupy_order_private { get; set; }
/// <summary>
/// 订单占用(共享)
/// </summary>
public int occupy_order_share { get; set; }
/// <summary>
/// 订单占用(聚合)
/// </summary>
public int occupy_order { get; set; }
/// <summary>
/// 环球更新时间
/// </summary>
public DateTime update_time { get; set; }
/// <summary>
/// 环球创建时间
/// </summary>
public DateTime create_time { get; set; }
/// <summary>
/// 数据中心更新时间
/// </summary>
public DateTime gmt_modified { get; set; }
/// <summary>
/// 数据中心创建时间
/// </summary>
public DateTime gmt_create { get; set; }
}
public class dc_base_stock_dto : dc_base_stock
{
public string warehouse_name { get; set; }
public string sku_name { get; set; }
/// <summary>
/// 内部系统采购在途
/// </summary>
public int purchase_daily_quantity { get; set; }
/// <summary>
/// 采购员名称
/// </summary>
public string buyer_name { get; set; }
/// <summary>
/// 产品中文名
/// </summary>
public string sku_title_cn { get; set; }
/// <summary>
/// 产品英文名
/// </summary>
public string sku_title_en { get; set; }
/// <summary>
/// 产品内部编码
/// </summary>
public string product_inner_code { get; set; }
}
}
......@@ -21,7 +21,7 @@ namespace AutoTurnOver.Services
return DB.daily.List(sku, warehouse_code);
}
public IEnumerable<dc_realtime_purchase_daily_dto> RealtimeList(string sku, string warehouse_code, string product_inner_code, string sku_title_cn, int offset, int limit, ref int total, string warehousetype, int? warehousearea)
public IEnumerable<dc_base_stock_dto> RealtimeList(string sku, string warehouse_code, string product_inner_code, string sku_title_cn, int offset, int limit, ref int total, string warehousetype, int? warehousearea)
{
return DB.daily.RealtimeList(sku, warehouse_code,product_inner_code,sku_title_cn,offset, limit, ref total,warehousetype,warehousearea);
}
......
......@@ -65,7 +65,11 @@ namespace AutoTurnOver.Controllers
var list = services.RealtimeList(sku, warehousecode, product_inner_code, sku_title_cn, 0, int.MaxValue, ref total,warehousetype,warehousearea);
DataTable table = new DataTable();
string[] cols = new string[] { "Sku", "仓库编码", "仓库名称", "可用库存", "占用库存", "预分配库存", "在途库存" };
string[] cols = new string[] { "Sku", "采购名称", "中文名", "英文名称", "仓库编码", "仓库名称", "货主编码"
,"订货数量","运输在途","中转仓库存","冻结库存","供应商库存","预售库存","不良品库存","在途库存","收货待检"
,"待上架","可配库存","销售可用库存(聚合)","销售可用库存(私有)","销售可用库存(共享)","在仓库存(共享)","在仓库存(私有)","在仓库存(聚合)","仓库占用(共享)"
,"仓库占用(私有)","仓库占用(聚合)","活动占用","单占用(私有)","订单占用(共享)","订单占用(聚合)","环球更新时间"
};
foreach (var item in cols)
{
table.Columns.Add(item);
......@@ -76,12 +80,38 @@ namespace AutoTurnOver.Controllers
DataRow row = table.NewRow();
row["Sku"] = itemData.bailun_sku;
row["采购名称"] = itemData.buyer_name;
row["中文名"] = itemData.sku_title_cn;
row["英文名称"] = itemData.sku_title_en;
row["内部编码"] = itemData.product_inner_code;
row["仓库编码"] = itemData.warehouse_code;
row["仓库名称"] = itemData.warehouse_name;
row["可用库存"] = itemData.quantity_avaliable;
row["占用库存"] = itemData.quantity_occupied;
row["预分配库存"] = itemData.quantity_virtual;
row["在途库存"] = itemData.purchase_daily_quantity;
row["货主编码"] = itemData.owner_code;
row["订货数量"] = itemData.quantity_reservation;
row["运输在途"] = itemData.quantity_transport;
row["中转仓库存"] = itemData.quantity_transfer;
row["冻结库存"] = itemData.quantity_freeze;
row["供应商库存"] = itemData.quantity_supplier;
row["预售库存"] = itemData.quantity_presell;
row["不良品库存"] = itemData.quantity_defective;
row["在途库存"] = itemData.quantity_transit;
row["收货待检"] = itemData.wait_check;
row["待上架"] = itemData.wait_putaway;
row["可配库存"] = itemData.usable_stock;
row["销售可用库存(聚合)"] = itemData.usable_sales;
row["销售可用库存(私有)"] = itemData.usable_sales_private;
row["销售可用库存(共享)"] = itemData.usable_sales_share;
row["在仓库存(共享)"] = itemData.in_warehouse_share;
row["在仓库存(私有)"] = itemData.in_warehouse_private;
row["在仓库存(聚合)"] = itemData.in_warehouse;
row["仓库占用(共享)"] = itemData.occupy_stock_share;
row["仓库占用(私有)"] = itemData.occupy_stock_private;
row["仓库占用(聚合)"] = itemData.occupy_stock;
row["活动占用"] = itemData.occupy_activity;
row["单占用(私有)"] = itemData.occupy_order_private;
row["订单占用(共享)"] = itemData.occupy_order;
row["订单占用(聚合)"] = itemData.occupy_order_share;
row["环球更新时间"] = itemData.update_time;
table.Rows.Add(row);
}
......
......@@ -9,6 +9,9 @@ using AutoTurnOver.Models;
using Newtonsoft.Json;
using Microsoft.AspNetCore.Cors;
using AutoTurnOver.Utility;
using System.Data;
using AutoTurnOver.Common;
using System.IO;
namespace AutoTurnOver.Controllers
{
......@@ -24,7 +27,7 @@ namespace AutoTurnOver.Controllers
/// <param name="pagesize">每页记录数</param>
/// <returns></returns>
[HttpGet]
public JsonResult List(int limit, int offset, string order,string sort,string sku,int? IsRedundant,int? IsStockOut,string warehousecode,string warehousetype,int? warehousearea,bool? hasDefectConfig)
public JsonResult List(int limit, int offset, string order,string sort,string sku,int? IsRedundant,int? IsStockOut,string warehousecode,string warehousetype,int? warehousearea,bool? hasDefectConfig,string product_inner_code,string sku_name)
{
var m = new Condition_AutoTurnOver {
......@@ -34,7 +37,9 @@ namespace AutoTurnOver.Controllers
warehouse_code = warehousecode,
warehousetype = warehousetype,
warehousearea = warehousearea,
hasDefectConfig = hasDefectConfig
hasDefectConfig = hasDefectConfig,
product_inner_code = product_inner_code,
sku_name = sku_name
};
var total = 0;
......@@ -61,8 +66,8 @@ namespace AutoTurnOver.Controllers
p.forecast_fourteenday_sales,
p.forecast_sevenday_sales,
p.oneday_sales,
p.forecast_oneday_sales2
p.forecast_oneday_sales2,
p.product_inner_code
});
return new JsonResult(new
......@@ -73,6 +78,107 @@ namespace AutoTurnOver.Controllers
});
}
/// <summary>
/// 导出
/// </summary>
/// <param name="sku"></param>
/// <param name="warehousecode"></param>
/// <returns></returns>
public FileResult Export(int limit, int offset, string order, string sort, string sku, int? IsRedundant, int? IsStockOut, string warehousecode, string warehousetype, int? warehousearea, bool? hasDefectConfig, string product_inner_code, string sku_name)
{
var m = new Condition_AutoTurnOver
{
bailun_sku = sku,
out_of_stock = IsStockOut,
redundancy = IsRedundant,
warehouse_code = warehousecode,
warehousetype = warehousetype,
warehousearea = warehousearea,
hasDefectConfig = hasDefectConfig,
product_inner_code = product_inner_code,
sku_name = sku_name
};
var total = 0;
var service = new Services.SkuAutoTurnServices();
var list = service.List(m, 0, int.MaxValue, ref total, order, sort).Select(p => new {
p.bailun_sku,
p.sku_title,
p.warehouse_code,
p.warehouse_name,
p.quantity_minimum_order,
p.quantity_final_advise,
p.quantity_promotion,
p.quantity_inventory,
p.turnover_days,
p.quantity_safe_inventory,
p.inspection_delivery,
p.status,
p.id,
p.quantity_out_stock,
p.supplier_delivery,
p.transfer_delivery,
p.quantity_purchase,
p.quantity_transfer,
p.forecast_fourteenday_sales,
p.forecast_sevenday_sales,
p.oneday_sales,
p.forecast_oneday_sales2,
p.product_inner_code
});
DataTable table = new DataTable();
string[] cols = new string[] { "Sku", "内部编码", "sku标题", "仓库编码", "仓库名称", "MOQ",
"采购在途", "调拨在途", "昨日销量", "明日销量", "未来7天日均", "未来14天日均", "建议采购数", "活动促销数量",
"实际库存", "安全库存", "周转天数", "供应商交期", "质检入库天数", "调拨头程天数", "预测是否断货", "缺货数量"
};
foreach (var item in cols)
{
table.Columns.Add(item);
}
foreach (var itemData in list)
{
DataRow row = table.NewRow();
row["Sku"] = itemData.bailun_sku;
row["内部编码"] = itemData.product_inner_code;
row["sku标题"] = itemData.sku_title;
row["仓库编码"] = itemData.warehouse_code;
row["仓库名称"] = itemData.warehouse_name;
row["MOQ"] = itemData.quantity_minimum_order;
row["采购在途"] = itemData.quantity_purchase;
row["调拨在途"] = itemData.quantity_transfer;
row["昨日销量"] = itemData.oneday_sales;
row["明日销量"] = itemData.forecast_oneday_sales2;
row["未来7天日均"] = itemData.forecast_sevenday_sales;
row["未来14天日均"] = itemData.forecast_fourteenday_sales;
row["建议采购数"] = itemData.quantity_final_advise;
row["活动促销数量"] = itemData.quantity_promotion;
row["实际库存"] = itemData.quantity_inventory;
row["安全库存"] = itemData.quantity_safe_inventory;
row["周转天数"] = itemData.turnover_days;
row["供应商交期"] = itemData.supplier_delivery;
row["质检入库天数"] = itemData.inspection_delivery;
row["调拨头程天数"] = itemData.transfer_delivery;
row["预测是否断货"] = itemData.status == 1?"是":"否";
row["缺货数量"] = itemData.quantity_out_stock;
table.Rows.Add(row);
}
var fileName = AppContext.BaseDirectory + @"Result\RealtimeStock\周转表.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", "周转表.csv");
}
#region 特殊销售设置
/// <summary>
......
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