using System.Data; using YLErp.Configuration.Enums; using YLErp.Modules.UnderlyingModule; using YLErp.Office.ExcelModule; namespace YLErp.Web.Controllers { public class StockBlackWhiteController : BaseController { public ActionResult StockBlackWhiteList(int tabIndex = (int)StockBlackWhiteEnum.黑名单) { ViewBag.TabIndex = tabIndex; return View(); } public ActionResult AddStockBlackWhite() { return View(new StockBlackWhite()); } public JsonResult StockBlackWhiteAddJson(StockBlackWhite data, bool checkStatus) { new StockBlackWhiteService(CurUser).StockBlackWhiteAddJson(new List { data }, checkStatus); return JsonSuccess(); } public JsonResult StockBlackWhiteQuery(StockBlackWhiteQuery req) { var sList = new StockBlackWhiteService(CurUser).SearchList(req, req.BlackWhiteState == 1); return Json(sList); } public FileContentResult StockBlackWhiteExport(StockBlackWhiteQuery req) { req.page = 1; req.rows = 100000; SearchListResult sList = null; try { sList = new StockBlackWhiteService(CurUser).SearchList(req); var templateFile = OtcAppContext.MapPath("~/App_Docs/导出模板/个股黑(白)名单导出模板.xlsx"); var fileDownloadName = $"{(req.BlackWhiteState == 0 ? "个股黑名单" : "个股白名单")}_{DateTime.Now:yyyyMMddhhmmss}.xlsx"; var buffer = ExcelGenerator.UseTemplateGenerator(templateFile) .AddVariable( new { optionList = sList.rows.Where(O => O.LimitRange == LimitRangeEnum.All || O.LimitRange == LimitRangeEnum.Option), swapList = sList.rows.Where(O => O.LimitRange == LimitRangeEnum.All || O.LimitRange == LimitRangeEnum.Swap), }) .GenerateBytes(); return File(buffer, xlsxMimeType, fileDownloadName); } catch (Exception ex) { throw new Exception("导出失败", ex); } } public static List GetAllStockBlackWhiteType() { var AllClientType = new List() { new SelectListItem(){ Text = StockBlackWhiteEnum.黑名单.ToString(), Value =((int)StockBlackWhiteEnum.黑名单).ToString() }, new SelectListItem(){ Text = StockBlackWhiteEnum.白名单.ToString(), Value =((int)StockBlackWhiteEnum.白名单).ToString() } }; return AllClientType; } public static List GetAllLimitRangeType() { var AllClientType = EnumHelper.GetDescriptionsByEnum(typeof(LimitRangeEnum)) .Select(O => new SelectListItem() { Text = O.Key, Value = O.Value }) .ToList(); return AllClientType; } public ActionResult DeleteStockBlackWhite(IEnumerable optionIds, IEnumerable swapIds, int blackWhiteState) { if ((optionIds == null || !optionIds.Any()) && (swapIds == null || !swapIds.Any())) { return JsonError("没有要删除的标的"); } var service = new StockBlackWhiteService(CurUser); if (optionIds?.Any() == true) { service.DeleteStockBlackWhite(optionIds, LimitRangeEnum.Option, blackWhiteState); } if (swapIds?.Any() == true) { service.DeleteStockBlackWhite(swapIds, LimitRangeEnum.Swap, blackWhiteState); } return JsonSuccess("删除成功"); } /// /// 导入个股黑白名单 /// [HttpPost] public ActionResult UploadSettlementBill(int blackWhiteState, bool checkStatus) { try { var file = Request.Form.Files[0]; if (file == null || string.IsNullOrWhiteSpace(file.FileName)) { return JsonError("未获取上传文件"); } var fileExtension = Path.GetExtension(file.FileName); using var stream = file.OpenReadStream(); var Result = new StockBlackWhiteService(CurUser).ImportStockBlackWhitePublic(stream, blackWhiteState, checkStatus); return JsonSuccess("导入成功"); } catch (ServiceException ex) { return JsonError(ex.Message); } catch (Exception ex) { LogFactory.GetLogger("导入个股黑白名单").Error("导入黑白名单出错", ex); return JsonError(ex.Message); } } } }