Commit a56ce2b7 by guanzhenshan

完善数据仓Sku分组功能

parent 4c08485b
......@@ -4,4 +4,8 @@
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="1.50.5" />
</ItemGroup>
</Project>
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models.SkuGroup
{
public class mSkuGroupCondition
{
public int page { get; set; }
public string[] sku { get; set; }
public string country { get; set; }
public string warehousecode { get; set; }
public string[] groupname { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Dapper;
namespace Bailun.DC.Models
{
......@@ -169,5 +171,20 @@ namespace Bailun.DC.Models
/// </summary>
public DateTime? skucreatetime { get; set; }
/// <summary>
/// 分组名称
/// </summary>
public string groupname { get; set; }
/// <summary>
/// 分组更新时间
/// </summary>
public DateTime? groupupdatetime { get; set; }
/// <summary>
/// 最后更新人
/// </summary>
public string groupupdateuser { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models
{
/// <summary>
/// Sku分组信息
/// </summary>
public class mSkuGroup
{
/// <summary>
/// Sku
/// </summary>
public string sku { get; set; }
/// <summary>
/// 仓库编码
/// </summary>
public string warehousecode { get; set; }
/// <summary>
/// 分组名称
/// </summary>
public string groupname { get; set; }
/// <summary>
/// 国家(区域)
/// </summary>
public string area_name { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models
{
/// <summary>
/// 仓库所在国家
/// </summary>
public class mWareHouseArea
{
/// <summary>
/// 国家id
/// </summary>
public int id { get; set; }
/// <summary>
/// 国家名称
/// </summary>
public string name { get; set; }
}
}
......@@ -939,8 +939,8 @@ namespace Bailun.DC.Services
public List<Models.Orders.dc_base_oms_sku> ListPlatformProfit(string platform, DateTime? start, DateTime? end)
{
var sqlparam = new DynamicParameters();
var sql = "select tb.platform_type,count(tb.bailun_order_id) order_count,sum(tb.amount_sales*seller_order_exchange_rate) as amount_sales,sum(tb.cost_platform_fee*seller_order_exchange_rate) as cost_platform_fee,sum(cost_first) as cost_first,sum(cost_tail) cost_tail,sum(cost_handle_bailun) cost_handle_bailun,sum(cost_handle_platform) cost_handle_platform,sum(tb.profit_total) as profit_total,(sum(tb.profit_total)/sum(tb.amount_sales)) profitrate ,sum(amount_refund*seller_order_exchange_rate) amount_refund,sum(cost_product) cost_product from dc_base_oms_order tb where bailun_order_status!='Canceled'";
var presql = "select platform_type,sum(amount_prepaid) amount_prepaid,sum(profit_total*bailun_sku_quantity_shipped) profit_total from dc_base_oms_sku where bailun_order_status!='Canceled' and amount_prepaid>0 ";
var sql = "select tb.platform_type,count(tb.bailun_order_id) order_count,sum(tb.amount_sales*seller_order_exchange_rate) as amount_sales,sum(tb.cost_platform_fee*seller_order_exchange_rate) as cost_platform_fee,sum(cost_first) as cost_first,sum(cost_tail) cost_tail,sum(cost_handle_bailun) cost_handle_bailun,sum(cost_handle_platform) cost_handle_platform,sum(tb.profit_total) as profit_total,(sum(tb.profit_total)/sum(tb.amount_sales)) profitrate ,sum(amount_refund*seller_order_exchange_rate) amount_refund,sum(cost_product) cost_product,sum(profit_total) profit_total,(sum(profit_total)/sum(tb.amount_sales*seller_order_exchange_rate)) profit_rate from dc_base_oms_order tb where bailun_order_status!='Canceled'";
var presql = "select platform_type,sum(amount_prepaid) amount_prepaid from dc_base_oms_sku where bailun_order_status!='Canceled' and amount_prepaid>0 ";
if (!string.IsNullOrWhiteSpace(platform))
{
......@@ -982,8 +982,8 @@ namespace Bailun.DC.Services
if (temp != null)
{
item.amount_prepaid = temp.amount_prepaid;
item.profit_total = temp.profit_total;
item.profit_rate = (item.amount_sales > 0 ? (temp.profit_rate / item.amount_sales) : 0);
//item.profit_total = temp.profit_total;
//item.profit_rate = (item.amount_sales > 0 ? (temp.profit_rate / item.amount_sales) : 0);
}
}
......@@ -1005,7 +1005,7 @@ namespace Bailun.DC.Services
{
var sqlparam = new DynamicParameters();
var precolumn = "select website,platform_type as platform,sum(amount_prepaid*seller_order_exchange_rate) amount_prepaid from dc_base_oms_sku where bailun_order_status!='Canceled' ";
var precolumn = "select website,platform_type as platform,sum(amount_prepaid) amount_prepaid from dc_base_oms_sku where bailun_order_status!='Canceled' ";
var sql = "select platform_type as platform,website,sum(amount_sales*seller_order_exchange_rate*bailun_sku_quantity_shipped) saleamount,count(bailun_order_id) ordercount,sum(cost_platform_fee*seller_order_exchange_rate*bailun_sku_quantity_shipped) platformfee,(sum(amount_sales*seller_order_exchange_rate*bailun_sku_quantity_shipped)/count(bailun_order_id)) customerprice,sum(profit_total*bailun_sku_quantity_shipped) profit,(sum(profit_total)/sum(amount_sales*seller_order_exchange_rate)) profitrate,sum(amount_refund*seller_order_exchange_rate*bailun_sku_quantity_shipped) returnamount,(sum(amount_refund)/sum(amount_sales)) returnamountrate,sum(cost_first*bailun_sku_quantity_shipped) cost_first,sum(cost_tail*bailun_sku_quantity_shipped) cost_tail,sum(cost_handle_bailun*bailun_sku_quantity_shipped) cost_handle_bailun,sum(cost_handle_platform*bailun_sku_quantity_shipped) cost_handle_platform from dc_base_oms_sku where bailun_order_status!='Canceled' and bailun_sku_quantity_shipped>0";
if (!string.IsNullOrWhiteSpace(platform))
......@@ -1076,7 +1076,7 @@ namespace Bailun.DC.Services
{
var sqlparam = new DynamicParameters();
var sql = "select sum(amount_sales*seller_order_exchange_rate*bailun_sku_quantity_shipped) saleamount,count(bailun_order_id) ordercount,sum(cost_platform_fee*seller_order_exchange_rate*bailun_sku_quantity_shipped) platformfee,(sum(amount_sales*seller_order_exchange_rate*bailun_sku_quantity_shipped)/count(bailun_order_id)) customerprice,sum(profit_total*bailun_sku_quantity_shipped) profit,(sum(profit_total)/sum(amount_sales*seller_order_exchange_rate)) profitrate,sum(amount_refund*seller_order_exchange_rate*bailun_sku_quantity_shipped) returnamount,(sum(amount_refund)/sum(amount_sales)) returnamountrate,sum(cost_first*bailun_sku_quantity_shipped) cost_first,sum(cost_tail*bailun_sku_quantity_shipped) cost_tail,sum(cost_handle_bailun*bailun_sku_quantity_shipped) cost_handle_bailun,sum(cost_handle_platform*bailun_sku_quantity_shipped) cost_handle_platform from dc_base_oms_sku where bailun_order_status!='Canceled' and bailun_sku_quantity_shipped>0";
var precolumn = "select sum(amount_prepaid*seller_order_exchange_rate) amount_prepaid from dc_base_oms_sku where bailun_order_status!='Canceled' ";
var precolumn = "select sum(amount_prepaid) amount_prepaid from dc_base_oms_sku where bailun_order_status!='Canceled' ";
if (!string.IsNullOrWhiteSpace(platform))
{
......
......@@ -124,5 +124,27 @@ namespace Bailun.DC.Services
}
}
/// <summary>
/// 获取Sku的开发时间
/// </summary>
/// <param name="sku"></param>
/// <returns></returns>
public DateTime? GetSkuDevelopTime(string sku)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if(cn.State== System.Data.ConnectionState.Closed)
{
cn.Open();
}
var sql = "select create_time from dc_base_sku where bailun_sku=@sku";
var sqlparam = new DynamicParameters();
sqlparam.Add("sku", sku);
return cn.QueryFirstOrDefault<DateTime?>(sql, sqlparam);
}
}
}
}
......@@ -36,7 +36,7 @@ namespace Bailun.DC.Services
/// </summary>
/// <param name="warehousetype">仓库类型</param>
/// <returns></returns>
public List<dc_base_warehouse> List(string warehousetype)
public List<dc_base_warehouse> List(string warehousetype,int? areaid)
{
var param = new DynamicParameters();
......@@ -47,13 +47,17 @@ namespace Bailun.DC.Services
cn.Open();
}
var sql = "select * from dc_base_warehouse ";
var sql = "select * from dc_base_warehouse where 1=1 ";
if (!string.IsNullOrWhiteSpace(warehousetype))
{
sql += " where hq_type=@type";
sql += " and hq_type=@type";
param.Add("type", warehousetype);
}
if (areaid.HasValue)
{
sql += " and area_id="+areaid.Value;
}
return cn.Query<dc_base_warehouse>(sql,param).AsList();
......@@ -301,5 +305,71 @@ namespace Bailun.DC.Services
}
}
/// <summary>
/// 获取仓库所在国家
/// </summary>
/// <returns></returns>
public List<mWareHouseArea> ListWarehouseArea()
{
var sql = "select area_id as id,area_name as name from dc_base_warehouse where area_id is not null group by area_id ";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Query<mWareHouseArea>(sql);
return obj.AsList();
}
}
/// <summary>
/// 数据仓分组列表
/// </summary>
/// <returns></returns>
public List<string> ListGroupName()
{
var sql = "select groupname from dc_sku_monitor group by groupname";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Query<string>(sql);
return obj.AsList();
}
}
/// <summary>
/// 获取仓库详情
/// </summary>
/// <param name="code">仓库编码</param>
/// <returns></returns>
public dc_base_warehouse GetWarehouse(string code)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var sql = "select * from dc_base_warehouse where warehouse_code=@warehouse_code";
var sqlparam = new DynamicParameters();
sqlparam.Add("warehouse_code", code);
return cn.QueryFirstOrDefault<dc_base_warehouse>(sql, sqlparam);
}
}
}
}
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
......@@ -36,18 +37,17 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
/// <param name="skucategory"></param>
/// <param name="searchkey"></param>
/// <returns></returns>
public string DataWareHouseJson(Models.BtTableParameter request, string warehousetype, string warehousecode, DateTime? start, DateTime? end, int? monitorstatus, int? cleanstatus, int? infringestatus, string skutip, int? storestart, int? storeend, int? skucategory, string searchkey,string skucategoryids)
public string DataWareHouseJson(Models.BtTableParameter request, string warehousetype, int? areaid, string warehousecode, DateTime? start, DateTime? end, int? monitorstatus, int? cleanstatus, int? infringestatus, string skutip, int? storestart, int? storeend, int? skucategory, string searchkey,string skucategoryids,string groupname)
{
var service = new Services.SkuMonitorServices();
var total = 0;
var obj = service.List(request, warehousetype, warehousecode, start, end, monitorstatus, cleanstatus, infringestatus, skutip, storestart, storeend, skucategory, searchkey, skucategoryids, ref total);
var obj = service.List(request, warehousetype, areaid, warehousecode, start, end, monitorstatus, cleanstatus, infringestatus, skutip, storestart, storeend, skucategory, searchkey, skucategoryids,groupname, ref total);
var countM = service.ListCount(warehousetype, warehousecode, start, end, monitorstatus, cleanstatus, infringestatus, skutip, storestart, storeend, skucategory, skucategoryids, searchkey);
var countM = service.ListCount(warehousetype, areaid, warehousecode, start, end, monitorstatus, cleanstatus, infringestatus, skutip, storestart, storeend, skucategory, skucategoryids, searchkey,groupname);
countM.skuname = "总计:";
var list = obj.Select(p => new {
p.id,
p.warehousetype,
......@@ -79,6 +79,7 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
thirtyday_average_sales = (p.thirtyday_average_sales??0),
skucreatetime = p.skucreatetime.HasValue?p.skucreatetime.Value.ToString("yyyy-MM-dd HH:mm"):"",
amount_sevendaysale = (p.amount_sevendaysale??0).ToString("N2"),
groupname = string.IsNullOrEmpty(p.groupname)?"":p.groupname.Trim(),
});
return JsonConvert.SerializeObject(new { total = total, rows = list,count_row = new {
......@@ -170,6 +171,138 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
return JsonConvert.SerializeObject(new { total = total,rows = obj, count_row = countM});
}
/// <summary>
/// 设置Sku的分组信息
/// </summary>
/// <param name="s"></param>
/// <param name="groupname"></param>
/// <returns></returns>
[HttpPost]
public JsonResult SaveGroupName(string s,string groupname)
{
if (string.IsNullOrWhiteSpace(groupname))
{
return Json(new {
success = false,
msg = "分组名不能为空!"
});
}
var arr = s.Split(';').Where(a => !string.IsNullOrWhiteSpace(a)).ToList();
if (arr.Count <= 0)
{
return Json(new
{
success = false,
msg = "请选择需要设置分组的SKU。"
});
}
var result = new Services.SkuMonitorServices().SaveGroupName(arr, groupname,0,"");
return Json(new {
success = string.IsNullOrEmpty(result),
msg = result,
});
}
/// <summary>
/// 上传Sku分组文件
/// </summary>
/// <returns></returns>
public JsonResult UploadSkuGroup()
{
if (Request.Form.Files.Count == 0)
{
return Json(new
{
success = false,
msg = "请上传文件!"
});
}
var file = Request.Form.Files[0];
Dictionary<string, DataTable> dic = Base.NpolHelper.ExcelToDataTable(file.OpenReadStream(), file.FileName, true);
if (dic.Count > 0)
{
var tb = dic.FirstOrDefault();
var list = new List<Tuple<string,string,string,string>>();
var service = new Services.FinanceReportServices();
var listRate = new List<Tuple<string, decimal>>();
var commonServices = new Services.CommonServices();
for (var i = 0; i < tb.Value.Rows.Count; i++)
{
var row = tb.Value.Rows[i];
try
{
var warehousecode = row["仓库编码"].ToString();
var sku = row["SKU"].ToString();
var groupname = row["分组名称"].ToString();
var updateuser = row["修改人"].ToString();
if (string.IsNullOrEmpty(warehousecode))
{
return Json(new {
success = false,
msg = "仓库编码不能为空!"
});
}
if (string.IsNullOrEmpty(sku))
{
return Json(new
{
success = false,
msg = "SKU不能为空!"
});
}
if (string.IsNullOrEmpty(groupname))
{
return Json(new
{
success = false,
msg = "分组名称不能为空!"
});
}
if (string.IsNullOrEmpty(updateuser))
{
return Json(new
{
success = false,
msg = "修改人不能为空!"
});
}
list.Add(new Tuple<string, string, string, string>(warehousecode,sku,groupname,updateuser));
}
catch (Exception ex)
{
return Json(new
{
success = false,
msg = "上传出现异常,异常信息:" + ex.Message
});
}
}
var result = new Services.SkuMonitorServices().SaveGroupName(list, 0, "");
return Json(new {
success = string.IsNullOrEmpty(result),
msg = result
});
}
else
{
return Json(new
{
success = false,
msg = "请上传文件"
});
}
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace Bailun.DC.Web.Controllers
{
public class ApiController : Controller
{
public IActionResult Index()
{
return View();
}
/// <summary>
/// 获取sku分组信息
/// </summary>
/// <param name="page">请求页</param>
/// <param name="sku">sku编码</param>
/// <param name="country">区域(国家)</param>
/// <param name="warehousecode">仓库编码</param>
/// <param name="groupname">分组信息</param>
/// <returns></returns>
[HttpPost]
public JsonResult GetListSkuGroup([FromBody]Models.SkuGroup.mSkuGroupCondition m)
{
var total = 0;
var pagesize = 1000;
var result = new Services.SkuMonitorServices().ListSkuGroup(m.page, pagesize, m.sku, m.warehousecode, m.country, m.groupname, ref total);
return Json(new {
data = result,
page = m.page,
pagecount = (total/ pagesize + (pagesize % 1000>0?1:0)),
total = total
});
}
/// <summary>
/// 获取SKU分组信息列表(支持模糊搜索)
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
[HttpPost]
public JsonResult GetListGroup(string name)
{
var result = new Services.SkuMonitorServices().ListGroupName(name);
return Json(result);
}
}
}
\ No newline at end of file
......@@ -26,9 +26,9 @@ namespace Bailun.DC.Web.Controllers
/// <param name="warehousetype"></param>
/// <returns></returns>
[HttpPost]
public JsonResult ListWareHouse(string warehousetype)
public JsonResult ListWareHouse(string warehousetype,int? areaid)
{
var result = new Services.WareHouseServices().List(warehousetype);
var result = new Services.WareHouseServices().List(warehousetype,areaid);
var list = result.Select(p => new {
p.warehouse_code,
......@@ -66,5 +66,28 @@ namespace Bailun.DC.Web.Controllers
return Json(list);
}
/// <summary>
/// 获取仓库所在国家列表
/// </summary>
/// <returns></returns>
[HttpPost]
public JsonResult ListWarehouseArea()
{
var result = new Services.WareHouseServices().ListWarehouseArea().Where(a=>a.id>0);
return Json(result);
}
/// <summary>
/// 数据仓分组列表
/// </summary>
/// <returns></returns>
[HttpPost]
public JsonResult ListGroupName()
{
var result = new Services.WareHouseServices().ListGroupName().Where(a=>!string.IsNullOrEmpty(a));
return Json(result);
}
}
}
\ 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