172 lines
6.1 KiB
C#
172 lines
6.1 KiB
C#
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;
|
||
}
|
||
}
|
||
}
|
||
} |