Commit 8b54765f authored by 黄奎's avatar 黄奎

下载修改

parent b8a675cd
...@@ -20,10 +20,12 @@ using Mall.WebApi.Filter; ...@@ -20,10 +20,12 @@ using Mall.WebApi.Filter;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NPOI.SS.Formula.Functions; using NPOI.SS.Formula.Functions;
using SharpCompress.Common; using SharpCompress.Common;
using static Google.Protobuf.WellKnownTypes.Field;
namespace Mall.WebApi.Controllers.TradePavilion namespace Mall.WebApi.Controllers.TradePavilion
{ {
...@@ -1708,135 +1710,7 @@ namespace Mall.WebApi.Controllers.TradePavilion ...@@ -1708,135 +1710,7 @@ namespace Mall.WebApi.Controllers.TradePavilion
/// <summary>
///载体信息下载
/// </summary>
[HttpPost]
public FileContentResult GetCarrierListToExcel()
{
JObject parms = JObject.Parse(RequestParm.msg.ToString());
var demodel = new RB_Carrier_Extend()
{
MetroName = parms.GetStringValue("MetroName"),
CarrierName = parms.GetStringValue("CarrierName"),
MetroNum = parms.GetInt("MetroNum", 0),
Developers = parms.GetStringValue("Developers"),
StartOpenTime = parms.GetStringValue("StartOpenTime"),
EndOpenTime = parms.GetStringValue("EndOpenTime"),
ProjectType = (Common.Enum.TradePavilion.ProjectTypeEnum)parms.GetInt("ProjectType", 0)
};
demodel.MallBaseId = RequestParm.MallBaseId;
demodel.TenantId = RequestParm.TenantId;
try
{
List<int> ExcelEnumIds = JsonConvert.DeserializeObject<List<int>>(parms.GetStringValue("ExcelEnumIds"));
demodel.ExcelEnumIds = ExcelEnumIds;
if (ExcelEnumIds == null || !ExcelEnumIds.Any())
{
demodel.ExcelEnumIds = new List<int>();
for (int i = 1; i <= 15; i++)
{
demodel.ExcelEnumIds.Add(i);
}
}
}
catch
{
demodel.ExcelEnumIds = new List<int>();
for (int i = 1; i <= 15; i++)
{
demodel.ExcelEnumIds.Add(i);
}
}
string ExcelName = "载体列表" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
if (demodel.ExcelEnumIds == null || !demodel.ExcelEnumIds.Any())
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
var Enumlist = EnumHelper.GetEnumList(typeof(Common.Enum.TradePavilion.CarrierExportEnum));
ExcelDataSource header = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30)
{
new ExcelColumn(value: "序号") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER }
}
};
foreach (var item in demodel.ExcelEnumIds)
{
var Name = Enumlist.Where(x => x.Value == item.ToString()).FirstOrDefault().Key ?? "";
header.ExcelRows.Add(new ExcelColumn(value: Name) { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER });
}
slist.Add(header);
try
{
var list = carrierModule.GetCarrierList(demodel);
#region 组装数据
int Num = 0;
foreach (var item in list)
{
Num++;
ExcelDataSource datarow = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value:Num.ToString()){ },
}
};
foreach (var qitem in demodel.ExcelEnumIds)
{
switch (qitem)
{
case 1:
datarow.ExcelRows.Add(new ExcelColumn(value: item.CarrierName) { }); break;
case 2:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Logo, isPic: 1) { }); break;
case 3:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Developers) { }); break;
case 4:
datarow.ExcelRows.Add(new ExcelColumn(value: item.VideoUrl) { }); break;
case 5:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Address) { }); break;
case 6:
datarow.ExcelRows.Add(new ExcelColumn(value: item.OpenTime.HasValue ? item.OpenTime.Value.ToString("yyyy-MM-dd") : "") { }); break;
case 7:
datarow.ExcelRows.Add(new ExcelColumn(value: ((item.ProjectType.HasValue && item.ProjectType.Value > 0) ? item.ProjectType.GetEnumName() : "")) { }); break;
case 8:
datarow.ExcelRows.Add(new ExcelColumn(value: (item.CarrierSize.ToString()) + "万平方米") { }); break;
case 9:
datarow.ExcelRows.Add(new ExcelColumn(value: item.LayersNum) { }); break;
case 10:
datarow.ExcelRows.Add(new ExcelColumn(value: item.CarNum > 0 ? item.CarNum.ToString() : "") { }); break;
case 11:
datarow.ExcelRows.Add(new ExcelColumn(value: item.CarrierPlan) { }); break;
case 12:
datarow.ExcelRows.Add(new ExcelColumn(value: item.CarrierTarget) { }); break;
case 13:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Location) { }); break;
case 14:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Crowd) { }); break;
case 15:
datarow.ExcelRows.Add(new ExcelColumn(value: (item.CarrierMetroList != null && item.CarrierMetroList.Any()) ? (string.Join(",", item.CarrierMetroList.Select(x => x.MetroNum + "号线" + x.MetroName + x.Distance))) : "") { }); break;
}
}
slist.Add(datarow);
}
#endregion
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", ExcelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, string.Format("GetFileFromWebApi_requestData: {0}", JsonHelper.Serialize(RequestParm)));
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
}
/// <summary> /// <summary>
/// 获取载体下载枚举列表 /// 获取载体下载枚举列表
/// </summary> /// </summary>
...@@ -2122,7 +1996,7 @@ namespace Mall.WebApi.Controllers.TradePavilion ...@@ -2122,7 +1996,7 @@ namespace Mall.WebApi.Controllers.TradePavilion
/// <summary> /// <summary>
/// 检查文件是否存在 /// 检查品牌文件是否存在
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
...@@ -2192,6 +2066,74 @@ namespace Mall.WebApi.Controllers.TradePavilion ...@@ -2192,6 +2066,74 @@ namespace Mall.WebApi.Controllers.TradePavilion
}); });
} }
/// <summary>
/// 检查载体文件是否存在
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<ApiResult> CheckCarrierFile()
{
JObject parms = JObject.Parse(RequestParm.msg.ToString());
var demodel = new RB_Carrier_Extend()
{
MetroName = parms.GetStringValue("MetroName"),
CarrierName = parms.GetStringValue("CarrierName"),
MetroNum = parms.GetInt("MetroNum", 0),
Developers = parms.GetStringValue("Developers"),
StartOpenTime = parms.GetStringValue("StartOpenTime"),
EndOpenTime = parms.GetStringValue("EndOpenTime"),
ProjectType = (Common.Enum.TradePavilion.ProjectTypeEnum)parms.GetInt("ProjectType", 0)
};
demodel.MallBaseId = RequestParm.MallBaseId;
demodel.TenantId = RequestParm.TenantId;
List<int> ExcelEnumIds = JsonConvert.DeserializeObject<List<int>>(parms.GetStringValue("ExcelEnumIds"));
string hashKey = Common.Config.GetHash(Common.Plugin.JsonHelper.Serialize(demodel) + parms.GetStringValue("ExcelEnumIds"));
string fileName = "载体信息" + ".xls";
string filePath = Path.Combine(Directory.GetCurrentDirectory(), "upfile/temporary");
if (System.IO.Directory.Exists(filePath) == false)//如果不存在就创建file文件夹
{
System.IO.Directory.CreateDirectory(filePath);
}
string tempPath = filePath + "\\" + hashKey + "\\";
//如果不存在就创建file文件夹
if (!System.IO.Directory.Exists(tempPath))
{
System.IO.Directory.CreateDirectory(tempPath);
}
string fileUrl = tempPath + fileName;
string key = "Mall_SD_CARRIER_" + hashKey;
string redisValue = redisHelper.StringGet(key);
if (string.IsNullOrEmpty(redisValue))
{
redisValue = redisHelper.StringGet(key);
if (string.IsNullOrEmpty(redisValue))
{
redisHelper.StringSet(key, fileName, TimeSpan.FromMinutes(10));
Task.Run(() =>
{
GetCarrierListToExcel(demodel, ExcelEnumIds, tempPath, fileUrl);
});
}
}
return await Task.Run<ApiResult>(() =>
{
ApiResult apiResult = new ApiResult()
{
resultCode = 0,
};
if (System.IO.File.Exists(fileUrl))
{
var filePath = "/upfile/temporary/" + hashKey + "/";
var fileUrl = "/upfile/temporary/" + hashKey + "/" + fileName;
apiResult.resultCode = 1;
apiResult.data = new { filePath, fileUrl };
apiResult.message = key;
}
return apiResult;
});
}
/// <summary> /// <summary>
/// 删除Key /// 删除Key
/// </summary> /// </summary>
...@@ -2210,10 +2152,6 @@ namespace Mall.WebApi.Controllers.TradePavilion ...@@ -2210,10 +2152,6 @@ namespace Mall.WebApi.Controllers.TradePavilion
{ {
Directory.Delete(newPath, true); Directory.Delete(newPath, true);
} }
//if (System.IO.File.Exists(newPath))
//{
// System.IO.File.Delete(newPath);
//}
redisHelper.KeyDelete(key); redisHelper.KeyDelete(key);
} }
catch (Exception ex) catch (Exception ex)
...@@ -2245,10 +2183,13 @@ namespace Mall.WebApi.Controllers.TradePavilion ...@@ -2245,10 +2183,13 @@ namespace Mall.WebApi.Controllers.TradePavilion
} }
/// <summary> /// <summary>
/// 品牌下载 /// 生成品牌文件
/// </summary> /// </summary>
/// <param name="demodel">查询参数</param>
private async void GetBrandListToExcel(RB_Brand_Extend demodel, List<int> ExcelEnumIds,string filePath, string excelFileUrl) /// <param name="ExcelEnumIds">需要导出的列</param>
/// <param name="filePath">Logon存放路劲</param>
/// <param name="excelFileUrl">Excel文件路径</param>
private async void GetBrandListToExcel(RB_Brand_Extend demodel, List<int> ExcelEnumIds, string filePath, string excelFileUrl)
{ {
try try
{ {
...@@ -2273,7 +2214,7 @@ namespace Mall.WebApi.Controllers.TradePavilion ...@@ -2273,7 +2214,7 @@ namespace Mall.WebApi.Controllers.TradePavilion
byte[] bytes = null; byte[] bytes = null;
List<ExcelDataSource> slist = new List<ExcelDataSource>(); List<ExcelDataSource> slist = new List<ExcelDataSource>();
var Enumlist = EnumHelper.GetEnumList(typeof(Common.Enum.TradePavilion.BusinessExportEnum)); var Enumlist = EnumHelper.GetEnumList(typeof(Common.Enum.TradePavilion.BusinessExportEnum));
ExcelDataSource header = new ExcelDataSource() ExcelDataSource header = new ExcelDataSource()
{ {
...@@ -2291,8 +2232,8 @@ namespace Mall.WebApi.Controllers.TradePavilion ...@@ -2291,8 +2232,8 @@ namespace Mall.WebApi.Controllers.TradePavilion
try try
{ {
List<Action> actions = new List<Action>();
var list = carrierModule.GetBrandListByWhere(demodel); var list = carrierModule.GetBrandListByWhere(demodel);
List<Action> actions = new List<Action>();
if (list != null && list.Count > 0) if (list != null && list.Count > 0)
{ {
//判断是否下载图片 //判断是否下载图片
...@@ -2372,9 +2313,155 @@ namespace Mall.WebApi.Controllers.TradePavilion ...@@ -2372,9 +2313,155 @@ namespace Mall.WebApi.Controllers.TradePavilion
case 21: case 21:
datarow.ExcelRows.Add(new ExcelColumn(value: (item.XinFeng == 1 ? ("有") : "无")) { }); break; datarow.ExcelRows.Add(new ExcelColumn(value: (item.XinFeng == 1 ? ("有") : "无")) { }); break;
case 22: case 22:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Advertising) { }); break; string Advertising = Common.Plugin.StringHelper.AppHtmlFilterr(item.Advertising);
datarow.ExcelRows.Add(new ExcelColumn(value: Advertising) { }); break;
case 23: case 23:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Other) { }); break; string Other = Common.Plugin.StringHelper.AppHtmlFilterr(item.Other);
datarow.ExcelRows.Add(new ExcelColumn(value: Other) { }); break;
}
}
slist.Add(datarow);
}
#endregion
bytes = ExcelTempLateHelper.ToBrandExcelExtend(slist, filePath);
using (FileStream fs = new FileStream(excelFileUrl, FileMode.CreateNew))
{
fs.Write(bytes, 0, bytes.Length);
}
}
catch (Exception ex)
{
bytes = ExcelTempLateHelper.ToBrandExcelExtend(slist, filePath);
using (FileStream fs = new FileStream(excelFileUrl, FileMode.CreateNew))
{
fs.Write(bytes, 0, bytes.Length);
}
LogHelper.Write(ex, string.Format("GetBrandListToExcel_Request: {0}", JsonHelper.Serialize(demodel)));
}
}
/// <summary>
/// 生成载体文件
/// </summary>
/// <param name="demodel">查询参数</param>
/// <param name="ExcelEnumIds">下载列</param>
/// <param name="filePath">Logo文件存放路径</param>
/// <param name="excelFileUrl">Excel文件路径</param>
private async void GetCarrierListToExcel(RB_Carrier_Extend demodel, List<int> ExcelEnumIds, string filePath, string excelFileUrl)
{
byte[] bytes = null;
try
{
demodel.ExcelEnumIds = ExcelEnumIds;
if (ExcelEnumIds == null || !ExcelEnumIds.Any())
{
demodel.ExcelEnumIds = new List<int>();
for (int i = 1; i <= 15; i++)
{
demodel.ExcelEnumIds.Add(i);
}
}
}
catch
{
demodel.ExcelEnumIds = new List<int>();
for (int i = 1; i <= 15; i++)
{
demodel.ExcelEnumIds.Add(i);
}
}
string ExcelName = "载体列表" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
var Enumlist = EnumHelper.GetEnumList(typeof(Common.Enum.TradePavilion.CarrierExportEnum));
ExcelDataSource header = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30)
{
new ExcelColumn(value: "序号") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER }
}
};
foreach (var item in demodel.ExcelEnumIds)
{
var Name = Enumlist.Where(x => x.Value == item.ToString()).FirstOrDefault().Key ?? "";
header.ExcelRows.Add(new ExcelColumn(value: Name) { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER });
}
slist.Add(header);
try
{
var list = carrierModule.GetCarrierList(demodel);
List<Action> actions = new List<Action>();
if (list != null && list.Count > 0)
{
//判断是否下载图片
if (demodel.ExcelEnumIds.Contains(2))
{
foreach (var item in list)
{
actions.Add(new Action(() =>
{
DownLoadUrl(item.Logo, filePath);
}));
}
}
}
if (actions != null && actions.Count > 0)
{
ParallelOptions options = new ParallelOptions { MaxDegreeOfParallelism = 4 }; // 设置最大并行度为 4
Parallel.Invoke(options, actions.ToArray());
}
#region 组装数据
int Num = 0;
foreach (var item in list)
{
Num++;
ExcelDataSource datarow = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value:Num.ToString()){ },
}
};
foreach (var qitem in demodel.ExcelEnumIds)
{
switch (qitem)
{
case 1:
datarow.ExcelRows.Add(new ExcelColumn(value: item.CarrierName) { }); break;
case 2:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Logo, isPic: 1) { }); break;
case 3:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Developers) { }); break;
case 4:
datarow.ExcelRows.Add(new ExcelColumn(value: item.VideoUrl) { }); break;
case 5:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Address) { }); break;
case 6:
datarow.ExcelRows.Add(new ExcelColumn(value: item.OpenTime.HasValue ? item.OpenTime.Value.ToString("yyyy-MM-dd") : "") { }); break;
case 7:
datarow.ExcelRows.Add(new ExcelColumn(value: ((item.ProjectType.HasValue && item.ProjectType.Value > 0) ? item.ProjectType.GetEnumName() : "")) { }); break;
case 8:
datarow.ExcelRows.Add(new ExcelColumn(value: (item.CarrierSize.ToString()) + "万平方米") { }); break;
case 9:
datarow.ExcelRows.Add(new ExcelColumn(value: item.LayersNum) { }); break;
case 10:
datarow.ExcelRows.Add(new ExcelColumn(value: item.CarNum > 0 ? item.CarNum.ToString() : "") { }); break;
case 11:
datarow.ExcelRows.Add(new ExcelColumn(value: item.CarrierPlan) { }); break;
case 12:
datarow.ExcelRows.Add(new ExcelColumn(value: item.CarrierTarget) { }); break;
case 13:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Location) { }); break;
case 14:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Crowd) { }); break;
case 15:
datarow.ExcelRows.Add(new ExcelColumn(value: (item.CarrierMetroList != null && item.CarrierMetroList.Any()) ? (string.Join(",", item.CarrierMetroList.Select(x => x.MetroNum + "号线" + x.MetroName + x.Distance))) : "") { }); break;
} }
} }
slist.Add(datarow); slist.Add(datarow);
...@@ -2393,10 +2480,11 @@ namespace Mall.WebApi.Controllers.TradePavilion ...@@ -2393,10 +2480,11 @@ namespace Mall.WebApi.Controllers.TradePavilion
{ {
fs.Write(bytes, 0, bytes.Length); fs.Write(bytes, 0, bytes.Length);
} }
LogHelper.Write(ex, string.Format("GetFileFromWebApi_requestData: {0}", JsonHelper.Serialize(demodel))); LogHelper.Write(ex, string.Format("GetCarrierListToExcel_Requst: {0}", JsonHelper.Serialize(demodel)));
} }
} }
/// <summary> /// <summary>
/// 下载文件 /// 下载文件
/// </summary> /// </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