Commit 4f9d6e34 by lizefeng

新增现金流的汇总视图

parent aa01dca4
...@@ -149,7 +149,7 @@ namespace AutoTurnOver.DB ...@@ -149,7 +149,7 @@ namespace AutoTurnOver.DB
project = skuData.project, project = skuData.project,
sku = skuData.sku, sku = skuData.sku,
val = //datas.FirstOrDefault(s => s.field == "销售产品成本" && s.field_type == "推测值" && s.date_str == nowDateStr).val val = //datas.FirstOrDefault(s => s.field == "销售产品成本" && s.field_type == "推测值" && s.date_str == nowDateStr).val
( _connection.QueryFirstOrDefault<decimal?>(" select `val` from dc_ana_deviation where sku=@sku and project=@project and field=@field and date_str=@date_str and field_type=@field_type ", new (_connection.QueryFirstOrDefault<decimal?>(" select `val` from dc_ana_deviation where sku=@sku and project=@project and field=@field and date_str=@date_str and field_type=@field_type ", new
{ {
sku = skuData.sku, sku = skuData.sku,
project = skuData.project, project = skuData.project,
...@@ -401,7 +401,104 @@ namespace AutoTurnOver.DB ...@@ -401,7 +401,104 @@ namespace AutoTurnOver.DB
return viewDatas; return viewDatas;
} }
public static IEnumerable<deviation_view_dto> GetSumViews(deviation_search_dto search_data, int offset, int limit, ref int total)
{
var datas = GetDatas(search_data);
var viewDatas = new List<deviation_view_dto>() { };
var year = DateTime.Now.Year;
var allDatas = datas.GroupBy(s => new { s.field_type, s.field }).OrderByDescending(s => s.Key.field).OrderByDescending(s => s.Key.field_type).ToList();
var pageDatas = allDatas.Skip(offset).Take(limit).ToList();
foreach (var item in pageDatas)
{
var field = item.Key.field;
if (field == "是否断货")
{
field = "断货sku数";
}
deviation_view_dto itemData = new deviation_view_dto()
{
field = field,
field_type = item.Key.field_type,
group_key = "汇总",
project = "汇总",
month1 = GetSumVal2(datas, item.AsQueryable(), $"{year}-01"),
month2 = GetSumVal2(datas, item.AsQueryable(), $"{year}-02"),
month3 = GetSumVal2(datas, item.AsQueryable(), $"{year}-03"),
month4 = GetSumVal2(datas, item.AsQueryable(), $"{year}-04"),
month5 = GetSumVal2(datas, item.AsQueryable(), $"{year}-05"),
month6 = GetSumVal2(datas, item.AsQueryable(), $"{year}-06"),
month7 = GetSumVal2(datas, item.AsQueryable(), $"{year}-07"),
month8 = GetSumVal2(datas, item.AsQueryable(), $"{year}-08"),
month9 = GetSumVal2(datas, item.AsQueryable(), $"{year}-09"),
month10 = GetSumVal2(datas, item.AsQueryable(), $"{year}-10"),
month11 = GetSumVal2(datas, item.AsQueryable(), $"{year}-11"),
month12 = GetSumVal2(datas, item.AsQueryable(), $"{year}-12")
};
viewDatas.Add(itemData);
}
total = allDatas.Count();
return viewDatas;
}
public static string GetSumVal2(List<dc_ana_deviation> all, IQueryable<dc_ana_deviation> list, string date_str)
{
string field = list.FirstOrDefault().field;
string val = "";
var data = list.Where(s => date_str == s.date_str).ToList();
if (data != null && data.Count >= 1)
{
if (field.Contains("比例"))
{
switch (field)
{
case "销售数量预计偏差比例":
val = all.Where(s => s.field == "销售数量预计偏差值" && s.field_type == "偏差分析" ).Sum(s => s.val).Division(
all.Where(s => s.field == "销售产品数量" && s.field_type == "预测值").Sum(s => s.val)
).ToString("p");
break;
case "销售数量实际偏差比例":
val = all.Where(s => s.field == "销售数量实际偏差值" && s.field_type == "偏差分析").Sum(s => s.val).Division(
all.Where(s => s.field == "销售产品数量" && s.field_type == "预测值").Sum(s => s.val)
).ToString("p");
break;
case "产品成本预计偏差比例":
val = all.Where(s => s.field == "销售数量实际偏差值" && s.field_type == "偏差分析").Sum(s => s.val).Division(
all.Where(s => s.field == "销售产品数量" && s.field_type == "预测值").Sum(s => s.val)
).ToString("p");
break;
case "产品成本实际偏差比例":
val = all.Where(s => s.field == "销售数量实际偏差值" && s.field_type == "偏差分析").Sum(s => s.val).Division(
all.Where(s => s.field == "销售产品数量" && s.field_type == "预测值").Sum(s => s.val)
).ToString("p");
break;
default:
val = "";
break;
}
}
else if (field == "是否断货")
{
val = list.Count(s => s.val <= 0).ToString();
}
else
{
val = Math.Round(data.Sum(s => s.val), field.Contains("金额") ? 1 : 0).ToString();
}
}
return val;
}
public static string GetSumVal(List<dc_ana_deviation> all, IQueryable<dc_ana_deviation> list, string date_str) public static string GetSumVal(List<dc_ana_deviation> all, IQueryable<dc_ana_deviation> list, string date_str)
{ {
string field = list.FirstOrDefault().field; string field = list.FirstOrDefault().field;
......
...@@ -34,6 +34,12 @@ namespace AutoTurnOver.Services ...@@ -34,6 +34,12 @@ namespace AutoTurnOver.Services
return datas; return datas;
} }
public IEnumerable<deviation_view_dto> GetSumViews(deviation_search_dto search_data, int offset, int limit, ref int total)
{
var datas = dc_ana_deviation_dao.GetSumViews(search_data, offset, limit, ref total);
return datas;
}
public List<string> GetProjects() public List<string> GetProjects()
{ {
return dc_ana_deviation_dao.GetProjects(); return dc_ana_deviation_dao.GetProjects();
...@@ -136,5 +142,52 @@ namespace AutoTurnOver.Services ...@@ -136,5 +142,52 @@ namespace AutoTurnOver.Services
throw; throw;
} }
} }
public string SumExport(deviation_search_dto search_data, out int rows)
{
try
{
var services = new DailyServices();
var fileName = AppContext.BaseDirectory + $@"新现金流报表(sku)-{DateTime.Now.ToString("yyyyMMddHHmmss")}{Guid.NewGuid()}.csv";
DataTable table = new DataTable();
var dateYear = DateTime.Now.Year;
List<string> cols = new List<string> { "数据类型", "字段",$"{dateYear}-01", $"{dateYear}-02", $"{dateYear}-03", $"{dateYear}-04", $"{dateYear}-05", $"{dateYear}-06", $"{dateYear}-07", $"{dateYear}-08"
,$"{dateYear}-09",$"{dateYear}-10",$"{dateYear}-11",$"{dateYear}-12"};
foreach (var item in cols)
{
table.Columns.Add(item);
}
int total = 0;
var findDataList = DB.dc_ana_deviation_dao.GetSumViews(search_data, 0, int.MaxValue, ref total);
rows = findDataList.Count();
foreach (var itemData in findDataList)
{
DataRow row = table.NewRow();
row["数据类型"] = itemData.field_type;
row["字段"] = itemData.field;
row[$"{dateYear}-01"] = itemData.month1;
row[$"{dateYear}-02"] = itemData.month2;
row[$"{dateYear}-03"] = itemData.month3;
row[$"{dateYear}-04"] = itemData.month4;
row[$"{dateYear}-05"] = itemData.month5;
row[$"{dateYear}-06"] = itemData.month6;
row[$"{dateYear}-07"] = itemData.month7;
row[$"{dateYear}-08"] = itemData.month8;
row[$"{dateYear}-09"] = itemData.month9;
row[$"{dateYear}-10"] = itemData.month10;
row[$"{dateYear}-11"] = itemData.month11;
row[$"{dateYear}-12"] = itemData.month12;
table.Rows.Add(row);
}
CsvFileHelper.SaveCSV(table, fileName);
return fileName;
}
catch (Exception)
{
throw;
}
}
} }
} }
...@@ -92,6 +92,9 @@ namespace AutoTurnOver.Services ...@@ -92,6 +92,9 @@ namespace AutoTurnOver.Services
case "新现金流报表(项目)": case "新现金流报表(项目)":
item.result_file_url = await DownloadDeviationProjectExport(item.parameter, item); item.result_file_url = await DownloadDeviationProjectExport(item.parameter, item);
break; break;
case "新现金流报表(汇总)":
item.result_file_url = await DownloadDeviationSumExport(item.parameter, item);
break;
default: throw new Exception("无法识别的任务"); default: throw new Exception("无法识别的任务");
} }
item.end_date = DateTime.Now; item.end_date = DateTime.Now;
...@@ -438,6 +441,18 @@ namespace AutoTurnOver.Services ...@@ -438,6 +441,18 @@ namespace AutoTurnOver.Services
Console.WriteLine("DownloadStock - 上传完毕"); Console.WriteLine("DownloadStock - 上传完毕");
return fileData; return fileData;
} }
public async Task<string> DownloadDeviationSumExport(string par_json, dc_task_download download_data)
{
var rows = 0;
deviation_search_dto search_data = par_json.ToObject<deviation_search_dto>();
Console.WriteLine("DownloadStock - 开始生成文件");
var memory = new DeviationServices().SumExport(search_data, out rows);
download_data.rows = rows;
Console.WriteLine("DownloadStock - 开始生成上传文件");
var fileData = await AutoTurnOver.Utility.QiNiuCloudHelper.UploadSectioningAsync(memory);
Console.WriteLine("DownloadStock - 上传完毕");
return fileData;
}
} }
} }
...@@ -66,6 +66,23 @@ namespace AutoTurnOver.Controllers ...@@ -66,6 +66,23 @@ namespace AutoTurnOver.Controllers
total = total, total = total,
}); });
} }
public JsonResult GetSumViews(string project, string sku, int offset, int limit, string order, string sort)
{
var m = new deviation_search_dto
{
project = project,
sku = sku
};
var services = new DeviationServices();
var total = 0;
var list = services.GetSumViews(m, offset, limit, ref total);
return new JsonResult(new
{
rows = list,
total = total,
});
}
public JsonResult Projects() public JsonResult Projects()
{ {
...@@ -96,6 +113,18 @@ namespace AutoTurnOver.Controllers ...@@ -96,6 +113,18 @@ namespace AutoTurnOver.Controllers
return new JsonResult(new { success = true }); return new JsonResult(new { success = true });
} }
public ActionResult GetSumViewsExport([FromForm] deviation_search_dto m)
{
var user = AutoUtility.GetUser();
dc_task_download_dao.PushData<deviation_search_dto>(new dc_task_download
{
parameter = m.ToJson(),
task_name = "新现金流报表(汇总)"
}, user);
return new JsonResult(new { success = true });
}
} }
......
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