using YLErp.BLL; using YLErp.Office.ExcelModule; namespace YLErp.Modules.MarginModule { /// /// 预付金计算参数导出服务 /// public class MarginParamsExportService : YLBaseService { public MarginParamsExportService(OptUserInfo userInfo) : base(userInfo) { } /// /// 品种数据导出 /// 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(100); var VolatilityRateHis = new List(100); var UpDownLimitHis = new List(100); var sysData = valuedateBLL.ValueDate; var curDic = new Dictionary(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(); } /// /// 标的数据导出 /// 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(100); var VolatilityRateHis = new List(100); var UpDownLimitHis = new List(100); var sysData = valuedateBLL.ValueDate; var curDic = new Dictionary(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; } } } }