Files
zszq-trs/YLErpWeb/Controllers/varietyController.cs
2024-05-09 14:06:26 +08:00

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);
}
}
}