Files
zszq-trs/YLErpDAL/Modules/MarginModule/MarginParamsExportService.cs
T
2024-05-09 14:06:26 +08:00

172 lines
6.1 KiB
C#
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using YLErp.BLL;
using YLErp.Office.ExcelModule;
namespace YLErp.Modules.MarginModule
{
/// <summary>
/// 预付金计算参数导出服务
/// </summary>
public class MarginParamsExportService : YLBaseService
{
public MarginParamsExportService(OptUserInfo userInfo) : base(userInfo)
{
}
/// <summary>
/// 品种数据导出
/// </summary>
public byte[] VarietyExport()
{
var query = from vh in DbContext.VarietyHisData
join v in DbContext.variety on vh.VarietyId equals v.id
orderby v.VarietyCode, vh.ValueDate
select new
{
v.VarietyCode,
vh.ValueDate,
vh.ValueType,
vh.Value
};
var hisdatas = query.ToArray();
var MarginRateHis = new List<ExportModel>(100);
var VolatilityRateHis = new List<ExportModel>(100);
var UpDownLimitHis = new List<ExportModel>(100);
var sysData = valuedateBLL.ValueDate;
var curDic = new Dictionary<string, ExportModel>(100);
foreach (var item in hisdatas)
{
var model = new ExportModel
{
Code = item.VarietyCode,
Date = item.ValueDate.ToString("yyyy-MM-dd"),
Value = item.Value.ToString("P2")
};
if (item.ValueDate <= sysData)
{
var key = item.ValueType + "-" + model.Code;
if (!curDic.TryGetValue(key, out var model2) || string.Compare(model.Date, model2.Date) > 0)
{
curDic[key] = model;
}
}
switch (item.ValueType)
{
case "MarginRate":
MarginRateHis.Add(model);
break;
case "VolatilityRate":
VolatilityRateHis.Add(model);
break;
case "UpDownLimit":
UpDownLimitHis.Add(model);
break;
}
}
foreach (var item in curDic.Values)
{
item.IsCurrent = " "; //全角空格
}
var tplFilePath = OtcAppContext.MapPath("/App_Docs/导出模板/预付金参数导出模板.xlsx");
if (!File.Exists(tplFilePath))
{
throw new ServiceException("导出模板文件不存在:/App_Docs/导出模板/预付金参数导出模板.xlsx");
}
var varb = new { CodeType = "品种代码", MarginRateHis, VolatilityRateHis, UpDownLimitHis };
return ExcelGenerator.UseTemplateGenerator(tplFilePath).AddVariable(varb).GenerateBytes();
}
/// <summary>
/// 标的数据导出
/// </summary>
public byte[] UnderlyingExport()
{
var query = from uh in DbContext.UnderlyingHisData
join um in DbContext.underlying_manager on uh.UnderlyingCode equals um.UnderlyingCode
orderby um.UnderlyingInstrumentType, um.UnderlyingCode, uh.ValueDate
select new
{
uh.UnderlyingCode,
uh.ValueDate,
uh.ValueType,
uh.ValueFlag,
uh.Value
};
var hisdatas = query.ToArray();
var MarginRateHis = new List<ExportModel>(100);
var VolatilityRateHis = new List<ExportModel>(100);
var UpDownLimitHis = new List<ExportModel>(100);
var sysData = valuedateBLL.ValueDate;
var curDic = new Dictionary<string, ExportModel>(100);
foreach (var item in hisdatas)
{
var model = new ExportModel
{
Code = item.UnderlyingCode,
Date = item.ValueDate.ToString("yyyy-MM-dd"),
Value = item.ValueFlag == "F" ? item.Value.ToString("F2") : item.Value.ToString("P2")
};
if (item.ValueDate <= sysData)
{
var key = item.ValueType + "-" + model.Code;
if (!curDic.TryGetValue(key, out var model2) || string.Compare(model.Date, model2.Date) > 0)
{
curDic[key] = model;
}
}
switch (item.ValueType)
{
case "MarginRate":
MarginRateHis.Add(model);
break;
case "VolatilityRate":
VolatilityRateHis.Add(model);
break;
case "UpDownLimit":
UpDownLimitHis.Add(model);
break;
}
}
foreach (var item in curDic.Values)
{
item.IsCurrent = " "; //全角空格
}
var tplFilePath = OtcAppContext.MapPath("/App_Docs/导出模板/预付金参数导出模板.xlsx");
if (!File.Exists(tplFilePath))
{
throw new ServiceException("导出模板文件不存在:/App_Docs/导出模板/预付金参数导出模板.xlsx");
}
var varb = new { CodeType = "标的代码", MarginRateHis, VolatilityRateHis, UpDownLimitHis };
return ExcelGenerator.UseTemplateGenerator(tplFilePath).AddVariable(varb).GenerateBytes();
}
class ExportModel
{
public string Code { get; set; }
public string Date { get; set; }
public string Value { get; set; }
public string IsCurrent { get; set; }
public override string ToString()
{
return Code + "--" + Date;
}
}
}
}