300 lines
11 KiB
C#
300 lines
11 KiB
C#
using YLErp.Modules.MarginModule;
|
|
using YLErp.Modules.UnderlyingModule;
|
|
using YLErp.Office;
|
|
|
|
namespace YLErp.Web.Controllers
|
|
{
|
|
public class varietyController : BaseController
|
|
{
|
|
#region Custom
|
|
|
|
public static List<SelectListItem> GetAllvariety(bool isValueName = false)
|
|
{
|
|
return VarietyBLL.GetAllvarietyModel().Select(m => new SelectListItem
|
|
{
|
|
Text = m.VarietyName + "",
|
|
Value = isValueName ? (m.VarietyName + "") : (m.id + "")
|
|
}).ToList();
|
|
}
|
|
public static List<SelectListItem> GetAllvarietyCode(bool isValueName = false)
|
|
{
|
|
return VarietyBLL.GetAllvarietyModel().Select(m => new SelectListItem
|
|
{
|
|
Text = m.VarietyCode + "",
|
|
Value = isValueName ? (m.VarietyName + "") : (m.id + "")
|
|
}).ToList();
|
|
}
|
|
|
|
public static List<SelectListItem> GetAllvarietyNameCode(bool isValueName = false)
|
|
{
|
|
return VarietyBLL.GetAllvarietyModel().Select(m => new SelectListItem
|
|
{
|
|
Text = m.VarietyName + "(" + m.VarietyCode + ")",
|
|
Value = isValueName ? (m.VarietyName + "") : (m.id + "")
|
|
}).ToList();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取所有板块代码
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static List<SelectListItem> 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<SelectListItem> 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("删除成功");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 预付金参数
|
|
/// </summary>
|
|
public ActionResult MarginParams()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导入预付金参数
|
|
/// </summary>
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导出预付金参数
|
|
/// </summary>
|
|
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<Variety> 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<string, object>
|
|
{
|
|
{"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);
|
|
|
|
}
|
|
}
|
|
}
|