using YLErp.Modules.MarginModule; using YLErp.Modules.UnderlyingModule; using YLErp.Office; namespace YLErp.Web.Controllers { public class varietyController : BaseController { #region Custom public static List GetAllvariety(bool isValueName = false) { return VarietyBLL.GetAllvarietyModel().Select(m => new SelectListItem { Text = m.VarietyName + "", Value = isValueName ? (m.VarietyName + "") : (m.id + "") }).ToList(); } public static List GetAllvarietyCode(bool isValueName = false) { return VarietyBLL.GetAllvarietyModel().Select(m => new SelectListItem { Text = m.VarietyCode + "", Value = isValueName ? (m.VarietyName + "") : (m.id + "") }).ToList(); } public static List GetAllvarietyNameCode(bool isValueName = false) { return VarietyBLL.GetAllvarietyModel().Select(m => new SelectListItem { Text = m.VarietyName + "(" + m.VarietyCode + ")", Value = isValueName ? (m.VarietyName + "") : (m.id + "") }).ToList(); } /// /// 获取所有板块代码 /// /// public static List GetAllAssetType() { var items = VarietyBLL.GetAllvarietyModel().Where(O => !string.IsNullOrWhiteSpace(O.AssetType)).AsEnumerable().GroupBy(O => O.AssetType).Select(m => new SelectListItem { Text = m.Key + "", Value = m.Key + "" }).ToList(); return items; } public static List GetAllvarietyCodeList() { return VarietyBLL.GetAllvarietyModel().Select(m => new SelectListItem { Text = m.VarietyCode + "", Value = m.VarietyCode + "" }).ToList(); } #endregion [MyAuthorize("基础参数管理-标的品种")] public ActionResult varietyList() { ViewBag.Title = "标的品种"; return View(); } [HttpPost] public JsonResult varietyQuery(VarietyReq req) { var sList = new VarietyBLL().SearchList(req); return Json(sList); } public ActionResult varietyView(string enid) { var intid = DecryptInt(enid); var r = new VarietyDalService(CurUser).GetDetail(intid); new Modules.DicForTranslationModule.DicForTranslationService(CurUser).GetTransWord(r); return View(r); } [MyAuthorize("基础参数管理-标的品种编辑")] public ActionResult varietyEdit(string enid) { var isAdd = string.IsNullOrEmpty(enid) || enid == "0"; Variety r; if (isAdd) { r = new Variety() { DeliveryType = "实物交割", DeliveryPlace = "交易所指定交割仓库" }; return View(r); } var intid = DecryptInt(enid); r = yldb.variety.Find(intid); new Modules.DicForTranslationModule.DicForTranslationService(CurUser).GetTransWord(r); return View(r); } public ActionResult varietyOpenLimitEdit(string varietyCode) { var r = yldb.variety_limit.FirstOrDefault(O => O.VarietyCode == varietyCode); return View(r ?? new VarietyLimit()); } [HttpPost] public JsonResult varietyEditJson(string EncryptId, Variety model) { var r = SaveData(EncryptId, model); return JsonSuccess("更新成功", r); } [HttpPost] public ActionResult varietyEdit(string EncryptId, Variety model) { var r = SaveData(EncryptId, model); return Redirect("~/variety/varietyView/?id=" + r.EncryptId); } private Variety SaveData(string EncryptId, Variety model) { model.id = string.IsNullOrEmpty(EncryptId) ? 0 : DecryptInt(EncryptId); return new VarietyDalService(CurUser).SaveData(model); } [HttpPost] public ActionResult saveVarietyOpenLimit(VarietyLimit varietylimit) { var dbmodel = yldb.variety_limit.FirstOrDefault(x => x.VarietyCode == varietylimit.VarietyCode); if (dbmodel != null) { dbmodel.DeltaLowLimit = varietylimit.DeltaLowLimit; dbmodel.DeltaHighLimit = varietylimit.DeltaHighLimit; dbmodel.GammaCashLowLimit = varietylimit.GammaCashLowLimit; dbmodel.GammaCashHighLimit = varietylimit.GammaCashHighLimit; dbmodel.GammaLowLimit = varietylimit.GammaLowLimit; dbmodel.GammaHighLimit = varietylimit.GammaHighLimit; dbmodel.ThetaLowLimit = varietylimit.ThetaLowLimit; dbmodel.ThetaHighLimit = varietylimit.ThetaHighLimit; dbmodel.VegaLowLimit = varietylimit.VegaLowLimit; dbmodel.VegaHighLimit = varietylimit.VegaHighLimit; dbmodel.IsPercent = varietylimit.IsPercent; dbmodel.DeltaLowLimit = varietylimit.DeltaLowLimit; } else { var variety = yldb.variety.FirstOrDefault(x => x.VarietyCode == varietylimit.VarietyCode); if (variety == null) { return JsonError("未找到该品种"); } varietylimit.id = 0; varietylimit.VarietyId = variety.id; yldb.variety_limit.Add(varietylimit); } yldb.SaveChanges(); return JsonSuccess("设置敞口限额成功", dbmodel); } [HttpPost, MyAuthorize("基础参数管理-标的品种编辑")] public JsonResult Deletevariety(string id) { var intid = DecryptInt(id); new VarietyDalService(CurUser).RemoveData(intid); return JsonSuccess("删除成功"); } /// /// 预付金参数 /// public ActionResult MarginParams() { return View(); } /// /// 导入预付金参数 /// public ActionResult ImportMarginParams(IFormFile file) { MarginParamsImportResult result = null; if (Path.GetExtension(file?.FileName)?.ToLowerInvariant() != ".xlsx") { ViewData["ERROR"] = "请上传xlsx格式文件"; } else { using var openStream = file.OpenReadStream(); result = new MarginParamsImportService(CurUser).ImportVariety(openStream); } return View("MarginParams", result); } /// /// 导出预付金参数 /// public ActionResult ExportMarginParams() { var bytes = new MarginParamsExportService(CurUser).VarietyExport(); return File(bytes, xlsxMimeType, "品种预付金参数.xlsx"); } public JsonResult UploadVariety() { if (Request.Form.Files.Count == 0) { return JsonError("上传文件不存在"); } var file = Request.Form.Files[0]; if (!Path.GetExtension(file.FileName).Equals(".xlsx", StringComparison.OrdinalIgnoreCase)) { return JsonError("请上传Excel(.xlsx)格式文件"); } using var openStream = file.OpenReadStream(); new VarietyDalService(CurUser).ImportExcel(openStream, out var TotalNum, out var SuccessNum); return Json(new { success = true, totalNum = TotalNum, successNum = SuccessNum, }); } public JsonResult VarietyExport(VarietyReq req) { req.page = 1; req.rows = 100000; SearchListResult sList = null; try { var bll = new VarietyBLL(); sList = bll.SearchList(req); foreach (var item in sList.rows) { if (item.CommissionType == "比例") { item.CommissionExchange = item.CommissionExchange != null ? item.CommissionExchange * 10000 : null; item.CommissionDeviation = item.CommissionDeviation != null ? item.CommissionDeviation * 10000 : null; } if (item.TradedOptionCommissionType == "比例") { item.TradedOptionCommissionExchange = item.TradedOptionCommissionExchange != null ? item.TradedOptionCommissionExchange * 10000 : null; item.TradedOptionCommissionDeviation = item.TradedOptionCommissionDeviation != null ? item.TradedOptionCommissionDeviation * 10000 : null; } if (item.CloseTodayCommissionType == "比例") { item.CloseTodayCommissionExchange = item.CloseTodayCommissionExchange != null ? item.CloseTodayCommissionExchange * 10000 : null; item.CloseTodayCommissionDeviation = item.CloseTodayCommissionDeviation != null ? item.CloseTodayCommissionDeviation * 10000 : null; } new Modules.DicForTranslationModule.DicForTranslationService(CurUser).GetTransWord(item); } } catch (Exception ex) { return JsonError("生成失败", ex.Message); } var datas = sList.rows.ToList(); var sourcePath = Server.MapPath("~/App_Docs"); var sourceFileName = Path.Combine(sourcePath, "导出模板", "品种导出模板.xlsx"); var targetPath = Path.Combine(sourcePath, "Temp", DateTime.Now.ToString("yyyyMMdd")); if (!Directory.Exists(targetPath)) { Directory.CreateDirectory(targetPath); } var targetFileName = Path.Combine(targetPath, $"标的品种{DateTime.Now.ToString("yyyyMMdd")}.xlsx"); var modelDict = new Dictionary { {"Sheet1", datas} }; var path = ExcelTemplate.GeneratePDFFromExeclTemplate(sourcePath, sourceFileName, modelDict, targetPath, targetFileName, null, null, null, false, callback: (sheet) => { if (!datas.Any()) { sheet.First().InsertRow(2, 1, 1);//此模板无数据则插入空行,注意样式 } }); //补丁,返回一个相对地址 var relativePath = path.Substring(path.IndexOf("App_Docs") - 1); return JsonSuccess("生成成功", relativePath); } } }