672 lines
28 KiB
C#
672 lines
28 KiB
C#
using System.Text;
|
|
using YLErp.DBModels.Enums;
|
|
using YLErp.Modules.EodModule;
|
|
|
|
namespace YLErp.Web.Controllers
|
|
{
|
|
public class eod_trade_risk_manualController : BaseController
|
|
{
|
|
public ActionResult eod_trade_risk_manualList(string enid)
|
|
{
|
|
var id = DecryptInt(enid);
|
|
|
|
ViewBag.TradeId = id;
|
|
ViewBag.EncryptId = enid;
|
|
return View();
|
|
}
|
|
|
|
public ActionResult eod_trade_risk_manualListByType(string enid)
|
|
{
|
|
var id = DecryptInt(enid);
|
|
|
|
ViewBag.TradeId = id;
|
|
ViewBag.EncryptId = enid;
|
|
return View();
|
|
}
|
|
|
|
public ActionResult eod_trade_risk_manualEdit(string enid, string tradeenid)
|
|
{
|
|
var tradeId = DecryptInt(tradeenid);
|
|
var isAdd = string.IsNullOrEmpty(enid) || enid == "0";
|
|
|
|
if (isAdd)
|
|
{
|
|
return View(new eod_trade_risk_manual() { ValueDate = valuedateBLL.ValueDate, TradeId = tradeId });
|
|
}
|
|
else
|
|
{
|
|
var intid = DecryptInt(enid);
|
|
var r = yldb.eod_trade_risk_manual.Find(intid);
|
|
return View(r);
|
|
}
|
|
}
|
|
|
|
public ActionResult eod_trade_risk_manualEditByType(string enid, string tradeenid)
|
|
{
|
|
var tradeId = DecryptInt(tradeenid);
|
|
var isAdd = string.IsNullOrEmpty(enid) || enid == "0";
|
|
|
|
if (isAdd)
|
|
{
|
|
return View(new eod_trade_risk_manual() { ValueDate = valuedateBLL.ValueDate, TradeId = tradeId, VolType = "持仓", SettlementType = SettlementTypeEnum.ClosePrice });
|
|
}
|
|
else
|
|
{
|
|
var intid = DecryptInt(enid);
|
|
var r = yldb.eod_trade_risk_manual.Find(intid);
|
|
return View(r);
|
|
}
|
|
}
|
|
|
|
public ActionResult eod_trade_risk_manualEdit2(int TradeId, DateTime ValueDate, double Margin)
|
|
{
|
|
ViewBag.TradeId = TradeId;
|
|
ViewBag.ValueDate = ValueDate;
|
|
ViewBag.Margin = Margin.ToString("#0.0000");
|
|
return View();
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult eod_trade_risk_manual_margin(eod_trade_risk_manualDto req)
|
|
{
|
|
new EodTradeRiskManualService(CurUser).SaveEodTradePositionMargin(req);
|
|
return JsonSuccess();
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult eod_trade_risk_manualQuery(eod_trade_risk_manualReq req)
|
|
{
|
|
var sList = new EodTradeRiskManualService(CurUser).SearchEodTradeRiskManualList(req);
|
|
return Json(sList);
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult eod_trade_risk_manualEditJson(eod_trade_risk_manualDto req)
|
|
{
|
|
var r = new EodTradeRiskManualService(CurUser).SaveEodTradeRiskManual(req);
|
|
|
|
if (r == null)
|
|
{
|
|
return JsonError("估值日期不能重复");
|
|
}
|
|
|
|
return JsonSuccess("更新成功", r);
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult eod_trade_risk_manualEditJsonByType(eod_trade_risk_manualDto req)
|
|
{
|
|
var r = new EodTradeRiskManualService(CurUser).SaveEodTradeRiskManualByType(req);
|
|
|
|
if (r == null)
|
|
{
|
|
return JsonError("估值日期不能重复");
|
|
}
|
|
|
|
return JsonSuccess("更新成功", r);
|
|
}
|
|
|
|
public JsonResult eod_trade_risk_manualDelete(List<int> ids)
|
|
{
|
|
var riskManuals = yldb.eod_trade_risk_manual.Where(x => ids.Contains(x.id));
|
|
yldb.eod_trade_risk_manual.RemoveRange(riskManuals);
|
|
yldb.SaveChanges();
|
|
|
|
return JsonSuccess("删除成功");
|
|
}
|
|
|
|
[MyAuthorize("交易管理-批量风险维护")]
|
|
public ActionResult eod_trade_risk_manualUpload(bool isByType)
|
|
{
|
|
ViewBag.IsByType = isByType;
|
|
return View();
|
|
}
|
|
|
|
[MyAuthorize("交易管理-批量风险维护")]
|
|
public ActionResult UploadEodTradeRiskManualExcel(IFormFile file)
|
|
{
|
|
try
|
|
{
|
|
var excelHelper = new YLErp.Commons.ExcelHelper();
|
|
using var stream = file.OpenReadStream();
|
|
var eodTradeRiskManuals = excelHelper.ExcelToDataTable(stream, null, true);
|
|
|
|
Dictionary<string, int> keyValuePairs = new Dictionary<string, int>();
|
|
|
|
|
|
|
|
for (var i = 0; i < eodTradeRiskManuals.Rows.Count; i++)
|
|
{
|
|
var tradeNum = string.Empty;
|
|
var valueDateStr = string.Empty;
|
|
DateTime valueDate;
|
|
for (var j = 0; j < eodTradeRiskManuals.Columns.Count; j++)
|
|
{
|
|
switch (eodTradeRiskManuals.Columns[j].ColumnName)
|
|
{
|
|
case "交易编号":
|
|
tradeNum = eodTradeRiskManuals.Rows[i][j].ToString();
|
|
break;
|
|
case "估值日期":
|
|
if (DateTime.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out valueDate))
|
|
{
|
|
valueDateStr = valueDate.ToString("yyyy-MM-dd");
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
var key = string.Format("{0}_{1}", tradeNum, valueDateStr);
|
|
if (keyValuePairs.ContainsKey(key))
|
|
{
|
|
keyValuePairs[key]++;
|
|
}
|
|
else
|
|
{
|
|
keyValuePairs.Add(key, 1);
|
|
}
|
|
}
|
|
var errorKeyP = keyValuePairs.Where(p => p.Value > 1).ToDictionary(p => p.Key, v => v.Value);
|
|
if (errorKeyP.Keys.Any())
|
|
{
|
|
var errorMsg = new StringBuilder("存在交易编号和日期相同的重复记录,请先删除重复记录后在继续导入,提示信息格式(交易编号_日期),提示信息:");
|
|
errorMsg.Append(string.Join(",", errorKeyP.Keys));
|
|
return JsonError(errorMsg.ToString());
|
|
}
|
|
|
|
var TradeNumber = string.Empty;
|
|
int TradeId;
|
|
var ValueDate = DateTime.MinValue;
|
|
double? Pv = null;
|
|
double? Margin = null;
|
|
double? Delta = null;
|
|
double? Gamma = null;
|
|
double? Vega = null;
|
|
double? Theta = null;
|
|
double? Rho = null;
|
|
double? Spv1 = null;
|
|
double? Spv2 = null;
|
|
double? Spv3 = null;
|
|
|
|
var rowNum = 0;
|
|
for (var i = 0; i < eodTradeRiskManuals.Rows.Count; i++)
|
|
{
|
|
rowNum = i + 2;
|
|
for (var j = 0; j < eodTradeRiskManuals.Columns.Count; j++)
|
|
{
|
|
switch (eodTradeRiskManuals.Columns[j].ColumnName)
|
|
{
|
|
case "交易编号":
|
|
TradeNumber = eodTradeRiskManuals.Rows[i][j].ToString();
|
|
break;
|
|
case "估值日期":
|
|
DateTime.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out ValueDate);
|
|
break;
|
|
case "持仓市值":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var pv))
|
|
{
|
|
Pv = pv;
|
|
}
|
|
else
|
|
{
|
|
Pv = null;
|
|
}
|
|
break;
|
|
case "预付金":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var margin))
|
|
{
|
|
Margin = margin;
|
|
}
|
|
else
|
|
{
|
|
Margin = null;
|
|
}
|
|
break;
|
|
case "Delta":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var delta))
|
|
{
|
|
Delta = delta;
|
|
}
|
|
else
|
|
{
|
|
Delta = null;
|
|
}
|
|
break;
|
|
case "Gamma":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var gamma))
|
|
{
|
|
Gamma = gamma;
|
|
}
|
|
else
|
|
{
|
|
Gamma = null;
|
|
}
|
|
break;
|
|
case "Vega":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var vega))
|
|
{
|
|
Vega = vega;
|
|
}
|
|
else
|
|
{
|
|
Vega = null;
|
|
}
|
|
break;
|
|
case "Theta":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var theta))
|
|
{
|
|
Theta = theta;
|
|
}
|
|
else
|
|
{
|
|
Theta = null;
|
|
}
|
|
break;
|
|
case "Rho":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var rho))
|
|
{
|
|
Rho = rho;
|
|
}
|
|
else
|
|
{
|
|
Rho = null;
|
|
}
|
|
break;
|
|
case "市值1":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var spv1))
|
|
{
|
|
Spv1 = spv1;
|
|
}
|
|
else
|
|
{
|
|
Spv1 = null;
|
|
}
|
|
break;
|
|
case "市值2":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var spv2))
|
|
{
|
|
Spv2 = spv2;
|
|
}
|
|
else
|
|
{
|
|
Spv2 = null;
|
|
}
|
|
break;
|
|
case "市值3":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var spv3))
|
|
{
|
|
Spv3 = spv3;
|
|
}
|
|
else
|
|
{
|
|
Spv3 = null;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
//必填项验证
|
|
var nullColumnName = "";
|
|
if (string.IsNullOrWhiteSpace(TradeNumber))
|
|
{
|
|
nullColumnName += "交易编号,";
|
|
}
|
|
if (ValueDate == DateTime.MinValue)
|
|
{
|
|
nullColumnName += "估值日期,";
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(nullColumnName))
|
|
{
|
|
return JsonError("第" + rowNum + "行数据" + nullColumnName.Substring(0, nullColumnName.Length - 1) + "为必填项,导入失败");
|
|
}
|
|
|
|
var trade = yldb.trade.FirstOrDefault(x => x.TradeNumber == TradeNumber);
|
|
if (trade == null)
|
|
{
|
|
return JsonError("第" + rowNum + "行交易不存在,导入失败");
|
|
}
|
|
else
|
|
{
|
|
TradeId = trade.id;
|
|
}
|
|
|
|
if (ValueDate < trade.TradeDate)
|
|
{
|
|
throw new ServiceException($"估值日期'{ValueDate:yyyy-MM-dd}'必须大于等于交易开始日'{trade.TradeDate:yyyy-MM-dd}'");
|
|
}
|
|
|
|
if (trade.ExerciseDate.HasValue && ValueDate > trade.ExerciseDate.Value)
|
|
{
|
|
throw new ServiceException($"估值日期'{ValueDate:yyyy-MM-dd}'必须小于等于交易到期日'{trade.ExerciseDate.Value:yyyy-MM-dd}'");
|
|
}
|
|
|
|
|
|
var existEodTradeRiskManual = yldb.eod_trade_risk_manual.FirstOrDefault(x => x.TradeId == TradeId && x.ValueDate == ValueDate && string.IsNullOrEmpty(x.VolType));
|
|
if (existEodTradeRiskManual == null)
|
|
{
|
|
var eodTradeRiskManual = new eod_trade_risk_manual()
|
|
{
|
|
TradeId = TradeId,
|
|
ValueDate = ValueDate,
|
|
Margin = Margin,
|
|
OptDate = DateTime.Now,
|
|
OptId = CurUser.UserId,
|
|
OptName = CurUser.UserName,
|
|
Spv1 = Spv1,
|
|
Spv2 = Spv2,
|
|
Spv3 = Spv3,
|
|
Pv = Pv,
|
|
Delta = Delta,
|
|
Gamma = Gamma,
|
|
Vega = Vega,
|
|
Theta = Theta,
|
|
Rho = Rho,
|
|
};
|
|
|
|
yldb.eod_trade_risk_manual.Add(eodTradeRiskManual);
|
|
}
|
|
else
|
|
{
|
|
existEodTradeRiskManual.Pv = Pv;
|
|
existEodTradeRiskManual.Delta = Delta;
|
|
existEodTradeRiskManual.Gamma = Gamma;
|
|
existEodTradeRiskManual.Vega = Vega;
|
|
existEodTradeRiskManual.Theta = Theta;
|
|
existEodTradeRiskManual.Rho = Rho;
|
|
if (Margin != null)
|
|
{
|
|
existEodTradeRiskManual.Margin = Margin;
|
|
}
|
|
existEodTradeRiskManual.OptDate = DateTime.Now;
|
|
existEodTradeRiskManual.OptId = CurUser.UserId;
|
|
existEodTradeRiskManual.OptName = CurUser.UserName;
|
|
existEodTradeRiskManual.Spv1 = Spv1;
|
|
existEodTradeRiskManual.Spv2 = Spv2;
|
|
existEodTradeRiskManual.Spv3 = Spv3;
|
|
}
|
|
}
|
|
|
|
yldb.SaveChanges();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogFactory.GetLogger<eod_trade_risk_manualController>().Error("UploadEodTradeRiskManualExcel", ex);
|
|
return JsonError(ex.Message);
|
|
}
|
|
|
|
return JsonSuccess("导入自定义交易风险成功");
|
|
}
|
|
|
|
[MyAuthorize("交易管理-批量风险维护")]
|
|
public ActionResult UploadEodTradeRiskManualExcelByType(IFormFile file)
|
|
{
|
|
try
|
|
{
|
|
var excelHelper = new YLErp.Commons.ExcelHelper();
|
|
using var stream = file.OpenReadStream();
|
|
var eodTradeRiskManuals = excelHelper.ExcelToDataTable(stream, null, true);
|
|
|
|
Dictionary<string, int> keyValuePairs = new Dictionary<string, int>();
|
|
|
|
|
|
|
|
for (var i = 0; i < eodTradeRiskManuals.Rows.Count; i++)
|
|
{
|
|
var tradeNum = string.Empty;
|
|
var valueDateStr = string.Empty;
|
|
var volType = string.Empty;
|
|
var settlementType = string.Empty;
|
|
DateTime valueDate;
|
|
for (var j = 0; j < eodTradeRiskManuals.Columns.Count; j++)
|
|
{
|
|
switch (eodTradeRiskManuals.Columns[j].ColumnName)
|
|
{
|
|
case "交易编号":
|
|
tradeNum = eodTradeRiskManuals.Rows[i][j].ToString();
|
|
break;
|
|
case "估值日期":
|
|
if (DateTime.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out valueDate))
|
|
{
|
|
valueDateStr = valueDate.ToString("yyyy-MM-dd");
|
|
}
|
|
break;
|
|
case "波动率类型":
|
|
volType = eodTradeRiskManuals.Rows[i][j].ToString();
|
|
if (string.IsNullOrEmpty(volType))
|
|
{
|
|
return JsonError("波动率类型不能为空");
|
|
}
|
|
break;
|
|
case "价格类型":
|
|
settlementType = eodTradeRiskManuals.Rows[i][j].ToString();
|
|
if (string.IsNullOrEmpty(settlementType))
|
|
{
|
|
return JsonError("价格类型不能为空");
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
var key = string.Format("{0}_{1}_{2}_{3}", tradeNum, valueDateStr, volType, settlementType);
|
|
if (keyValuePairs.ContainsKey(key))
|
|
{
|
|
keyValuePairs[key]++;
|
|
}
|
|
else
|
|
{
|
|
keyValuePairs.Add(key, 1);
|
|
}
|
|
}
|
|
var errorKeyP = keyValuePairs.Where(p => p.Value > 1).ToDictionary(p => p.Key, v => v.Value);
|
|
if (errorKeyP.Keys.Any())
|
|
{
|
|
var errorMsg = new StringBuilder("存在交易编号,日期,波动率类型和结算类型都相同的重复记录,请先删除重复记录后在继续导入,提示信息格式(交易编号_日期_波动率类型_结算类型),提示信息:");
|
|
errorMsg.Append(string.Join(",", errorKeyP.Keys));
|
|
return JsonError(errorMsg.ToString());
|
|
}
|
|
|
|
var TradeNumber = string.Empty;
|
|
int TradeId;
|
|
var ValueDate = DateTime.MinValue;
|
|
string VolType = null;
|
|
var SettlementType = SettlementTypeEnum.ClosePrice;
|
|
double? Pv = null;
|
|
double? Margin = null;
|
|
double? Delta = null;
|
|
double? Gamma = null;
|
|
double? Vega = null;
|
|
double? Theta = null;
|
|
double? Rho = null;
|
|
|
|
var rowNum = 0;
|
|
for (var i = 0; i < eodTradeRiskManuals.Rows.Count; i++)
|
|
{
|
|
rowNum = i + 2;
|
|
for (var j = 0; j < eodTradeRiskManuals.Columns.Count; j++)
|
|
{
|
|
switch (eodTradeRiskManuals.Columns[j].ColumnName)
|
|
{
|
|
case "交易编号":
|
|
TradeNumber = eodTradeRiskManuals.Rows[i][j].ToString();
|
|
break;
|
|
case "估值日期":
|
|
DateTime.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out ValueDate);
|
|
break;
|
|
case "波动率类型":
|
|
VolType = eodTradeRiskManuals.Rows[i][j].ToString();
|
|
break;
|
|
case "价格类型":
|
|
var st = eodTradeRiskManuals.Rows[i][j].ToString();
|
|
SettlementType = ConsGlobal.SettlePriceMode.GetSettlementType(st);
|
|
break;
|
|
case "持仓市值":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var pv))
|
|
{
|
|
Pv = pv;
|
|
}
|
|
else
|
|
{
|
|
Pv = null;
|
|
}
|
|
break;
|
|
case "预付金":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var margin))
|
|
{
|
|
Margin = margin;
|
|
}
|
|
else
|
|
{
|
|
Margin = null;
|
|
}
|
|
break;
|
|
case "Delta":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var delta))
|
|
{
|
|
Delta = delta;
|
|
}
|
|
else
|
|
{
|
|
Delta = null;
|
|
}
|
|
break;
|
|
case "Gamma":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var gamma))
|
|
{
|
|
Gamma = gamma;
|
|
}
|
|
else
|
|
{
|
|
Gamma = null;
|
|
}
|
|
break;
|
|
case "Vega":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var vega))
|
|
{
|
|
Vega = vega;
|
|
}
|
|
else
|
|
{
|
|
Vega = null;
|
|
}
|
|
break;
|
|
case "Theta":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var theta))
|
|
{
|
|
Theta = theta;
|
|
}
|
|
else
|
|
{
|
|
Theta = null;
|
|
}
|
|
break;
|
|
case "Rho":
|
|
if (double.TryParse(eodTradeRiskManuals.Rows[i][j].ToString(), out var rho))
|
|
{
|
|
Rho = rho;
|
|
}
|
|
else
|
|
{
|
|
Rho = null;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
//必填项验证
|
|
var nullColumnName = "";
|
|
if (string.IsNullOrWhiteSpace(TradeNumber))
|
|
{
|
|
nullColumnName += "交易编号,";
|
|
}
|
|
if (ValueDate == DateTime.MinValue)
|
|
{
|
|
nullColumnName += "估值日期,";
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(nullColumnName))
|
|
{
|
|
return JsonError("第" + rowNum + "行数据" + nullColumnName.Substring(0, nullColumnName.Length - 1) + "为必填项,导入失败");
|
|
}
|
|
|
|
var trade = yldb.trade.FirstOrDefault(x => x.TradeNumber == TradeNumber);
|
|
if (trade == null)
|
|
{
|
|
return JsonError("第" + rowNum + "行交易不存在,导入失败");
|
|
}
|
|
else
|
|
{
|
|
TradeId = trade.id;
|
|
}
|
|
|
|
if (ValueDate < trade.TradeDate)
|
|
{
|
|
throw new ServiceException($"估值日期'{ValueDate:yyyy-MM-dd}'必须大于等于交易开始日'{trade.TradeDate:yyyy-MM-dd}'");
|
|
}
|
|
|
|
if (trade.ExerciseDate.HasValue && ValueDate > trade.ExerciseDate.Value)
|
|
{
|
|
throw new ServiceException($"估值日期'{ValueDate:yyyy-MM-dd}'必须小于等于交易到期日'{trade.ExerciseDate.Value:yyyy-MM-dd}'");
|
|
}
|
|
|
|
|
|
var existEodTradeRiskManual = yldb.eod_trade_risk_manual.FirstOrDefault(x => x.TradeId == TradeId && x.ValueDate == ValueDate && x.VolType == VolType && x.SettlementType == SettlementType);
|
|
if (existEodTradeRiskManual == null)
|
|
{
|
|
var eodTradeRiskManual = new eod_trade_risk_manual()
|
|
{
|
|
TradeId = TradeId,
|
|
ValueDate = ValueDate,
|
|
VolType = VolType,
|
|
SettlementType = SettlementType,
|
|
Margin = Margin,
|
|
OptDate = DateTime.Now,
|
|
OptId = CurUser.UserId,
|
|
OptName = CurUser.UserName,
|
|
Pv = Pv,
|
|
Delta = Delta,
|
|
Gamma = Gamma,
|
|
Vega = Vega,
|
|
Theta = Theta,
|
|
Rho = Rho,
|
|
|
|
};
|
|
yldb.eod_trade_risk_manual.Add(eodTradeRiskManual);
|
|
}
|
|
else
|
|
{
|
|
existEodTradeRiskManual.Pv = Pv;
|
|
existEodTradeRiskManual.Delta = Delta;
|
|
existEodTradeRiskManual.Gamma = Gamma;
|
|
existEodTradeRiskManual.Vega = Vega;
|
|
existEodTradeRiskManual.Theta = Theta;
|
|
existEodTradeRiskManual.Rho = Rho;
|
|
if (Margin != null)
|
|
{
|
|
existEodTradeRiskManual.Margin = Margin;
|
|
}
|
|
existEodTradeRiskManual.OptDate = DateTime.Now;
|
|
existEodTradeRiskManual.OptId = CurUser.UserId;
|
|
existEodTradeRiskManual.OptName = CurUser.UserName;
|
|
}
|
|
}
|
|
|
|
yldb.SaveChanges();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogFactory.GetLogger<eod_trade_risk_manualController>().Error("UploadEodTradeRiskManualExcel", ex);
|
|
return JsonError(ex.Message);
|
|
}
|
|
|
|
return JsonSuccess("导入自定义交易风险成功");
|
|
}
|
|
}
|
|
} |