662 lines
27 KiB
C#
662 lines
27 KiB
C#
using Confluent.Kafka;
|
|
using DocumentFormat.OpenXml.Spreadsheet;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Org.BouncyCastle.Ocsp;
|
|
using System.Text.RegularExpressions;
|
|
using YLErp.BLL.Eod;
|
|
using YLErp.DBModels;
|
|
using YLErp.DBModels.Consts;
|
|
using YLErp.Enums;
|
|
using YLErp.Modules.ClientModule;
|
|
using YLErp.Modules.EodModule.QueryModule;
|
|
using YLErp.Modules.ReportModule;
|
|
using YLErp.Modules.ReportModule.SettlementReportModule;
|
|
using YLErp.Modules.TradeModule;
|
|
using YLErp.Modules.TradeModule.SwapModule;
|
|
|
|
namespace YLErp.Web.Controllers
|
|
{
|
|
public class clientbalanceController : BaseController
|
|
{
|
|
readonly IViewRenderService _viewRenderer;
|
|
|
|
public UserInfo reportUser { get; set; }
|
|
|
|
public clientbalanceController(IViewRenderService viewRenderer)
|
|
{
|
|
_viewRenderer = viewRenderer;
|
|
}
|
|
|
|
[MyAuthorize("结算管理-每日估值报告")]
|
|
public ActionResult TradeMarketReport(int? clientId, string startTime, string endTime, bool? ParentFlag = false)
|
|
{
|
|
ViewBag.ClientId = clientId;
|
|
ViewBag.StartTime = startTime;
|
|
ViewBag.EndTime = endTime;
|
|
ViewBag.ParentFlag = ParentFlag;
|
|
return View();
|
|
}
|
|
|
|
public ActionResult TradeMarketReportConfigure()
|
|
{
|
|
return View();
|
|
}
|
|
public ActionResult TradeMarketReportConfigureImport()
|
|
{
|
|
return View();
|
|
}
|
|
public ActionResult TradeMarketReportConfigureEdit(string enid)
|
|
{
|
|
var id = DecryptInt(enid);
|
|
if (id == 0)
|
|
{
|
|
return View(new TradeMarketReportConfigure());
|
|
}
|
|
var tradeMarketReportConfigure = yldb.tradeMarketReport_Configure.Find(id);
|
|
return View(tradeMarketReportConfigure);
|
|
}
|
|
[HttpPost]
|
|
public ActionResult GetTradeMarketReportConfigureList(TradeMarketReportConfigureService.TradeMarketReportConfigureReq req)
|
|
{
|
|
var sList = new TradeMarketReportConfigureService(this.CurUser).SearchList(req);
|
|
var clientDb = new ClientDBContext();
|
|
foreach (var item in sList.rows)
|
|
{
|
|
if (item.ClientId != null)
|
|
{
|
|
item.ClientName = clientDb.client.Where(c => c.id == item.ClientId).Select(n => n.Name).FirstOrDefault();
|
|
}
|
|
else
|
|
{
|
|
item.ClientName = "全部";
|
|
}
|
|
|
|
}
|
|
return Json(sList);
|
|
}
|
|
|
|
[HttpPost]
|
|
public ActionResult TradeMarketReportConfigureEditJson(TradeMarketReportConfigure req)
|
|
{
|
|
new TradeMarketReportConfigureService(this.CurUser).SaveTradeMarketReportConfigure(req);
|
|
return JsonSuccess("已修改");
|
|
}
|
|
public ActionResult TradeMarketReportConfigureDelete(string enid)
|
|
{
|
|
var id = DecryptInt(enid);
|
|
new TradeMarketReportConfigureService(this.CurUser).DeleteTradeMarketReportConfigure(id);
|
|
return JsonSuccess("已删除");
|
|
}
|
|
public JsonResult ImportMarketReportConfigure(IFormFile file)
|
|
{
|
|
try
|
|
{
|
|
if (!file.FileName.EndsWith("xlsx"))
|
|
{
|
|
return JsonError("文件格式不对,请使用xlsx文件");
|
|
}
|
|
using (var inputStream = file.OpenReadStream())
|
|
{
|
|
var result = new TradeMarketReportConfigureService(CurUser).ImportTradeMarketReportConfigure(inputStream);
|
|
if (result.IsSuccess)
|
|
{
|
|
return JsonSuccess("导入成功");
|
|
}
|
|
return JsonError(result.Message);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogFactory.GetLogger(nameof(ClientController)).Error("ImportMarketReportConfigure", ex);
|
|
return JsonError(ex.Message);
|
|
throw;
|
|
}
|
|
}
|
|
[MyAuthorize("结算管理-信用风险")]
|
|
public ActionResult ClientCreditRisk()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
[MyAuthorize("结算管理-信用风险")]
|
|
public JsonResult ClientCreditRiskeQuery(ClientCreditRiskReq req)
|
|
{
|
|
req.CurUserClientIds = CurUser.GetClientIdsByCurUser(true);
|
|
var slist = new ClientCreditRiskService(CurUser).clientCreditRisksQuery(req);
|
|
return Json(slist);
|
|
}
|
|
|
|
[MyAuthorize("结算管理-信用风险")]
|
|
public ActionResult ClientMailTemplateSet()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
[MyAuthorize("结算管理-每日估值报告")]
|
|
public ActionResult TradeMarketReport_BalanceStatement(int? clientId, string startTime, string endTime, bool ParentFlag)
|
|
{
|
|
ViewBag.ClientId = clientId;
|
|
ViewBag.StartTime = startTime;
|
|
ViewBag.EndTime = endTime;
|
|
ViewBag.ParentFlag = ParentFlag;
|
|
return View();
|
|
}
|
|
|
|
[MyAuthorize("结算管理-每日估值报告")]
|
|
public ActionResult TradeMarketReport_Collateral(int? clientId, string startTime, string endTime, bool ParentFlag)
|
|
{
|
|
ViewBag.ClientId = clientId;
|
|
ViewBag.StartTime = startTime;
|
|
ViewBag.EndTime = endTime;
|
|
ViewBag.ParentFlag = ParentFlag;
|
|
return View();
|
|
}
|
|
|
|
[MyAuthorize("结算管理-每日估值报告")]
|
|
public ActionResult TradeMarketReport_HistoricalPosition(int? clientId, string startTime, string endTime, bool ParentFlag)
|
|
{
|
|
ViewBag.ClientId = clientId;
|
|
ViewBag.StartTime = startTime;
|
|
ViewBag.EndTime = endTime;
|
|
ViewBag.ParentFlag = ParentFlag;
|
|
return View();
|
|
}
|
|
|
|
[MyAuthorize("结算管理-每日估值报告")]
|
|
public ActionResult TradeMarketReport_HistoricalPositionSwap(int? clientId, string startTime, string endTime, bool ParentFlag)
|
|
{
|
|
ViewBag.ClientId = clientId;
|
|
ViewBag.StartTime = startTime;
|
|
ViewBag.EndTime = endTime;
|
|
ViewBag.ParentFlag = ParentFlag;
|
|
return RedirectToRoute(new
|
|
{
|
|
controller = "swaptrade2", //控制器
|
|
action = "TradeMarketReport_HistoricalPositionSwapFlow", //Action
|
|
clientId = clientId, //参数
|
|
startTime = startTime, //参数
|
|
endTime = endTime,
|
|
});
|
|
}
|
|
/// <summary>
|
|
/// 持仓明细
|
|
/// </summary>
|
|
/// <param name="clientId"></param>
|
|
/// <param name="startTime"></param>
|
|
/// <param name="endTime"></param>
|
|
/// <param name="ParentFlag"></param>
|
|
/// <returns></returns>
|
|
[MyAuthorize("结算管理-每日估值报告")]
|
|
public ActionResult TradeMarketReport_PositionDetails(int? clientId, string startTime, string endTime, bool ParentFlag)
|
|
{
|
|
ViewBag.ClientId = clientId;
|
|
ViewBag.StartTime = startTime;
|
|
ViewBag.EndTime = endTime;
|
|
ViewBag.ParentFlag = ParentFlag;
|
|
return View();
|
|
}
|
|
|
|
[MyAuthorize("结算管理-每日估值报告")]
|
|
public ActionResult TradeMarketReport_PositionDetailsSwap(int? clientId, string startTime, string endTime, bool ParentFlag)
|
|
{
|
|
ViewBag.ClientId = clientId;
|
|
ViewBag.StartTime = startTime;
|
|
ViewBag.EndTime = endTime;
|
|
ViewBag.ParentFlag = ParentFlag;
|
|
return RedirectToRoute(new
|
|
{
|
|
controller = "swaptrade2", //控制器
|
|
action = "TradeMarketReport_PositionSwapFlow", //Action
|
|
clientId = clientId, //参数
|
|
startTime = startTime, //参数
|
|
endTime = endTime,
|
|
});
|
|
}
|
|
|
|
[MyAuthorize("结算管理-每日估值报告")]
|
|
public object ExportClientCashRemian(DateTime reportDate)
|
|
{
|
|
var bytes = new SettlementReportForZJService(CurUser).exportClientCashRemian(reportDate);
|
|
return File(bytes, xlsxMimeType, $"客户资金余额导出-{DateTime.Now:yyyy-MM-dd}.xlsx");
|
|
}
|
|
|
|
#region 结算管理-每日估值报告 国君互换
|
|
|
|
[MyAuthorize("结算管理-每日估值报告")]
|
|
public ActionResult TradeMarketReport_PositionSwapFlow(int? clientId, string startTime, string endTime, bool ParentFlag)
|
|
{
|
|
ViewBag.ClientId = clientId;
|
|
ViewBag.StartTime = startTime;
|
|
ViewBag.EndTime = endTime;
|
|
ViewBag.ParentFlag = ParentFlag;
|
|
return RedirectToRoute(new
|
|
{
|
|
controller = "swaptrade2", //控制器
|
|
action = "TradeMarketReport_PositionSwapFlow", //Action
|
|
clientId = clientId, //参数
|
|
startTime = startTime, //参数
|
|
endTime= endTime,
|
|
});
|
|
}
|
|
|
|
[MyAuthorize("结算管理-每日估值报告")]
|
|
public ActionResult TradeMarketReport_HistoricalPositionSwapFlow(int? clientId, string startTime, string endTime, bool ParentFlag)
|
|
{
|
|
ViewBag.ClientId = clientId;
|
|
ViewBag.StartTime = startTime;
|
|
ViewBag.EndTime = endTime;
|
|
ViewBag.ParentFlag = ParentFlag;
|
|
return RedirectToRoute(new
|
|
{
|
|
controller = "swaptrade2", //控制器
|
|
action = "TradeMarketReport_HistoricalPositionSwapFlow", //Action
|
|
clientId = clientId, //参数
|
|
startTime = startTime, //参数
|
|
endTime = endTime,
|
|
});
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult tradeHistorySwapFlowQuery(TradeReq req)
|
|
{
|
|
var tss = new TradeSwapService(CurUser);
|
|
var sList = tss.SearchFlowMoreHistory(req);
|
|
return Json(sList);
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
[HttpPost]
|
|
public JsonResult tradeHistoryQuery(TradeReq req)
|
|
{
|
|
CurUser.CheckClientPowerByClientId(req.ClientId ?? 0);
|
|
|
|
if (ConsUserGroup.HasGroup && !ShowAllTrades)
|
|
{
|
|
var userAssetUnits = GetUserAssetunitIds();
|
|
req.AssetIdList = req.AssetIdList == null && !req.AssetIdList.Any()
|
|
? userAssetUnits : req.AssetIdList.Intersect(userAssetUnits).ToList();
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(req.TradeTypes))
|
|
{
|
|
req.NotInTradeTypes = new List<string>() { "收益互换" };
|
|
}
|
|
|
|
var sList = ClientAssetDataService.tradeHistoryQuery(req);
|
|
return Json(sList);
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult GetPreEndList(string id, TdTradeQueryModel req)
|
|
{
|
|
if (id == "forward")
|
|
{
|
|
req.OtcTradeType = DBModels.Enums.OtcTradeType.Forward;
|
|
}
|
|
else if (id == "swap")
|
|
{
|
|
req.OtcTradeType = DBModels.Enums.OtcTradeType.EquitySwap;
|
|
}
|
|
|
|
var userAssets = CurUser.GetAssetUnitIds();
|
|
var userClients = CurUser.GetClientIdsByCurUser(CurUser.交易管理_查看所有交易);
|
|
var sList = new TodayTradeQueryService(CurUser).GetPreEndList(req, userAssets, userClients, CurUser.交易管理_查看所有交易);
|
|
|
|
var umDataSource = Modules.DataCacheModule.DataCacheManager.GetUnderlyingDataSource();
|
|
|
|
if (id == "swap")
|
|
{
|
|
var tradeids = sList.rows.Select(r => r.id).ToList();
|
|
var tradecashids = sList.rows.Select(r => r.trade_cash.id).ToList();
|
|
var swapTrades = yldb.trade_swap.Where(t => tradeids.Contains(t.TradeId)).ToList();
|
|
var tradeCashSwaps = yldb.trade_cash_swap.Where(t => tradecashids.Contains(t.TradeCashId)).ToList();
|
|
foreach (var r in sList.rows)
|
|
{
|
|
r.trade_cash_swap = tradeCashSwaps.FirstOrDefault(x => x.TradeCashId == r.trade_cash.id);
|
|
r.trade.trade_swap = swapTrades.FirstOrDefault(x => x.TradeId == r.trade.id);
|
|
if (!r.trade.MetaDic.ContainsKey("GetUnderlyingName"))
|
|
{
|
|
var underlyingName = umDataSource.GetData(r.trade.trade_swap.GetUnderlyingCode)?.UnderlyingName;
|
|
r.trade.MetaDic.Add("GetUnderlyingName", underlyingName);
|
|
}
|
|
if (!r.trade.MetaDic.ContainsKey("PayUnderlyingName"))
|
|
{
|
|
var underlyingName = umDataSource.GetData(r.trade.trade_swap.PayUnderlyingCode)?.UnderlyingName;
|
|
r.trade.MetaDic.Add("PayUnderlyingName", underlyingName);
|
|
}
|
|
|
|
r.trade.UnderlyingName = umDataSource.GetData(r.trade.UnderlyingCode)?.UnderlyingName;
|
|
|
|
r.trade.SettlementDate = r.trade.SettlementDate ?? r.trade.ExerciseDate;
|
|
}
|
|
}
|
|
|
|
return Json(sList);
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult GetPreEndGroupChildren(int TcId)
|
|
{
|
|
var sList = new TodayTradeQueryService(CurUser).GetPreEndGroupChildren(TcId);
|
|
|
|
return Json(sList);
|
|
}
|
|
|
|
#region 模板增删
|
|
public static List<SelectListItem> GetAllClientBalanceTemplate()
|
|
{
|
|
var names = DBCacheManager.Single.GetTemplateNames("结算报告");
|
|
if (PS.Config.Company == Configuration.CompanyEnum.中金)
|
|
{
|
|
if (!names.Contains("北向"))
|
|
{
|
|
names.Add("北向");
|
|
}
|
|
if (!names.Contains("南向"))
|
|
{
|
|
names.Add("南向");
|
|
}
|
|
}
|
|
return names.Select(o => new SelectListItem
|
|
{
|
|
Text = o,
|
|
Value = o
|
|
}).ToList();
|
|
}
|
|
|
|
public JsonResult GetClientBalanceTemplate(string template = "默认")
|
|
{
|
|
var data = new
|
|
{
|
|
sendUser = DBCacheManager.Single.GetStr(CacheTable.TradeMarketSendUser, template),
|
|
TradeMarketSheets = DBCacheManager.Single.GetStr(CacheTable.TradeMarketSheets, template),
|
|
DingShiDesc = DBCacheManager.Single.GetStr(CacheTable.DingShiDesc, template),
|
|
//TradeMarketSendUser = DBCacheManager.Single.GetStr(CacheTable.TradeMarketSendUser, template),
|
|
LuoKuanDesc = DBCacheManager.Single.GetStr(CacheTable.LuoKuanDesc, template),
|
|
MarginLuoKuanDesc = DBCacheManager.Single.GetStr(CacheTable.MarginLuoKuanDesc, template),
|
|
Title = DBCacheManager.Single.GetStr(CacheTable.ClientBalanceReportTiltle, template),
|
|
CCEmail = DBCacheManager.Single.GetStr(CacheTable.MarketCCEmail, template)
|
|
};
|
|
return Json(data);
|
|
}
|
|
|
|
public JsonResult removeTemplate(string template)
|
|
{
|
|
DBCacheManager.Single.RemoveTemplate("结算报告", template);
|
|
return JsonSuccess("删除成功");
|
|
}
|
|
|
|
#endregion
|
|
|
|
//[ValidateInput(false)]
|
|
public JsonResult savedstext(string data, string sheets, string sendUser, string template = "默认")
|
|
{
|
|
|
|
DBCacheManager.Single.UpdateObj(CacheTable.DingShiDesc, data, template);
|
|
DBCacheManager.Single.UpdateObj(CacheTable.TradeMarketSheets, sheets, template);
|
|
DBCacheManager.Single.UpdateObj(CacheTable.TradeMarketSendUser, sendUser, template);
|
|
return JsonSuccess("保存盯市说明成功");
|
|
}
|
|
|
|
//[ValidateInput(false)]
|
|
public JsonResult saveLuokuan(string sendUser, string title, string luokuan, string marginluokuan, string sheets, string ccemail, string template = "默认")
|
|
{
|
|
DBCacheManager.Single.UpdateObj(CacheTable.TradeMarketSendUser, sendUser, template);
|
|
DBCacheManager.Single.UpdateObj(CacheTable.LuoKuanDesc, luokuan, template);
|
|
DBCacheManager.Single.UpdateObj(CacheTable.MarginLuoKuanDesc, marginluokuan, template);
|
|
DBCacheManager.Single.UpdateObj(CacheTable.TradeMarketSheets, sheets, template);
|
|
DBCacheManager.Single.UpdateObj(CacheTable.ClientBalanceReportTiltle, title, template);
|
|
string pattern = @"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$";
|
|
if (!string.IsNullOrEmpty(ccemail) && !Regex.IsMatch(ccemail, pattern))
|
|
{
|
|
throw new ServiceException("邮件CC地址格式不正确");
|
|
}
|
|
DBCacheManager.Single.UpdateObj(CacheTable.MarketCCEmail, ccemail, template);
|
|
|
|
return JsonSuccess("保存邮件正文成功");
|
|
}
|
|
|
|
public ViewResult TradeMarketDescSet()
|
|
{
|
|
|
|
return View();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 向客户发送报告
|
|
/// </summary>
|
|
//[ValidateInput(false)]
|
|
[HttpPost]
|
|
public async Task<JsonResult> GenerateTradeMarketBill2(DingShiReportEmail emailData, string skipOrNot, List<string> receiver, string template = "默认")
|
|
{
|
|
if (emailData is null)
|
|
{
|
|
throw new ArgumentNullException(nameof(emailData));
|
|
}
|
|
|
|
if (skipOrNot == null)
|
|
{
|
|
skipOrNot = string.Empty;
|
|
}
|
|
|
|
IEnumerable<int> userAssetUnits = null;
|
|
if (ConsUserGroup.HasGroup && !ShowAllTrades)
|
|
{
|
|
userAssetUnits = GetUserAssetunitIds();
|
|
}
|
|
var IsGap = false;
|
|
var IsOuter = false;
|
|
if (emailData.ReportType == "ClientBalanceGap")
|
|
{
|
|
IsGap = true;
|
|
}
|
|
if (emailData.ReportType == "GetOuterMargin")
|
|
{
|
|
IsOuter = true;
|
|
}
|
|
var IsNeedMarginCall = new SettlementReportService(CurUser).CheckIsNeedMarginCall(emailData.ClientId, emailData.From, emailData.To, emailData.PayableFund, IsGap, IsOuter, emailData.ParentFlag);
|
|
if (PS.Config.Is国投)
|
|
{
|
|
IsNeedMarginCall = new SettlementReportFotGTService(CurUser).CheckIsNeedMarginCall(emailData.ClientId, emailData.From, emailData.To, emailData.PayableFund, IsGap, IsOuter, emailData.ParentFlag);
|
|
}
|
|
|
|
if (PS.Config.Is湘财)
|
|
{
|
|
IsNeedMarginCall = new SettlementReportFotGTService(CurUser).CheckIsNeedMarginCall(emailData.ClientId, emailData.From, emailData.To, emailData.PayableMargin, IsGap, IsOuter, emailData.ParentFlag);
|
|
}
|
|
if (IsNeedMarginCall && string.IsNullOrEmpty(skipOrNot))
|
|
{
|
|
return JsonSuccess(string.Empty, new { message = "该客户需要追保,请确认是否使用追保邮件模板", type = "追保" });
|
|
}
|
|
return await SendReportMails(emailData, userAssetUnits, CurUser, template, skipCheckMarginCall: skipOrNot.ToLower() == "skip", recevier: receiver);
|
|
}
|
|
|
|
public async Task<JsonResult> SendReportMails(DingShiReportEmail emailData, IEnumerable<int> userAssetUnits, OptUserInfo user, string template, bool needHtml = false, bool skipCheckMarginCall = false, List<string> recevier = null)
|
|
{
|
|
try
|
|
{
|
|
EmailTradeConfirmResultType status;
|
|
string message;
|
|
var report = new SettlementReportFotShanXiService(user).GetReportData(emailData, userAssetUnits, template);
|
|
(status, message) = new SettlementReportFotShanXiService(user).SendSettlementReports(emailData, report, template, skipCheckMarginCall, recevier);
|
|
switch (status)
|
|
{
|
|
case EmailTradeConfirmResultType.Succeed:
|
|
return JsonSuccess("发送盯市报告成功");
|
|
case EmailTradeConfirmResultType.NoEmailSetting:
|
|
return JsonError("未设置邮箱,无法发送");
|
|
case EmailTradeConfirmResultType.EmailSentFailed:
|
|
return JsonError("发送失败:" + message);
|
|
case EmailTradeConfirmResultType.Other:
|
|
default: return JsonError("发送邮件未知错误:" + message);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
LogFactory.GetLogger<clientbalanceController>().Error(e, "GenerateTradeMarketBill2");
|
|
return JsonError(e.Message == "The number of columns in PdfPTable constructor must be greater than zero." ? "生成的pdf列表的列数必须大于零,请检查配置列不可为空" : e.Message);
|
|
}
|
|
}
|
|
|
|
public async Task<JsonResult> BatchSendReportMails(List<int> ClientIds, DateTime endDate)
|
|
{
|
|
var ret = new List<string>();
|
|
var creditService = new ClientCreditRiskService(CurUser);
|
|
if (ClientIds == null)
|
|
{
|
|
ret.Add("请选择要发送客户!");
|
|
return Json(ret);
|
|
}
|
|
foreach (var id in ClientIds)
|
|
{
|
|
var NeedMarginCall = creditService.ClientNeedMarginCall(id, endDate, out var clientName);
|
|
if (!NeedMarginCall)
|
|
{
|
|
ret.Add(clientName + ":无需追保");
|
|
continue;
|
|
}
|
|
var emailData = new DingShiReportEmail()
|
|
{
|
|
ClientId = id,
|
|
FileTypes = new List<DingShiReportEmail.CheckType>()
|
|
{
|
|
new DingShiReportEmail.CheckType()
|
|
{
|
|
type = "excel",
|
|
@checked = true
|
|
}
|
|
},
|
|
TargetFileType = "excel",
|
|
To = endDate,
|
|
CurUserName = CurUser.UserName,
|
|
};
|
|
var template = creditService.GetTemplateName(id);
|
|
var rr = await SendReportMails(emailData, null, CurUser, template);
|
|
|
|
ret.Add(clientName + ":" + ((Result)rr.Value).msg);
|
|
}
|
|
return Json(ret);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 批量下载报告
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
//[ValidateInput(false)]
|
|
[HttpPost]
|
|
public void GenerateDownloadTradeMarketBill2(DingShiReportEmail emailData, string template = "默认")
|
|
{
|
|
IEnumerable<int> userAssetUnits = null;
|
|
OptUserInfo user = OptUserInfo.SystemUser;
|
|
//try { user = CurUser; }
|
|
//catch { user = reportUser; }
|
|
if (ConsUserGroup.HasGroup && !ShowAllTrades)
|
|
{
|
|
userAssetUnits = GetUserAssetunitIds();
|
|
}
|
|
if (PS.Config.Company == Configuration.CompanyEnum.中金)
|
|
{
|
|
var report = new SettlementReportForZJService(user).GetReportData(emailData, userAssetUnits, template);
|
|
new SettlementReportForZJService(user).GenerateFileEntry(report);
|
|
}
|
|
else
|
|
{
|
|
var report = new SettlementReportFotShanXiService(user).GetReportData(emailData, userAssetUnits, template);
|
|
new SettlementReportFotShanXiService(user).GenerateFileEntry(report, "excel");
|
|
}
|
|
|
|
}
|
|
|
|
//[ValidateInput(false)]
|
|
public async Task<JsonResult> ViewTradeMarketFile(DingShiReportEmail emailData, string template = "默认")
|
|
{
|
|
IEnumerable<int> userAssetUnits = null;
|
|
if (ConsUserGroup.HasGroup && !ShowAllTrades)
|
|
{
|
|
userAssetUnits = GetUserAssetunitIds();
|
|
}
|
|
var report = new SettlementReportFotShanXiService(CurUser).GetReportData(emailData, userAssetUnits, template);
|
|
var path = new SettlementReportFotShanXiService(CurUser).GenerateFileEntry(report, emailData.TargetFileType);
|
|
var relativePath = path.Substring(path.IndexOf("App_Docs") - 1);
|
|
return JsonSuccess("", relativePath);
|
|
}
|
|
//[ValidateInput(false)]
|
|
public ViewResult TradeMarketClientTxt(DingShiReport report)
|
|
{
|
|
return View(report);
|
|
}
|
|
|
|
public ViewResult TradeMarketClientSend(int clientid, double payablemargin = -1, double payableFund = -1, string reportType = "", bool ParentFlag = false)
|
|
{
|
|
var isEodValue = true;
|
|
ViewBag.emails = ClientDataQueryService.GetClientEmails(clientid, false,isEodValue:isEodValue);
|
|
ViewBag.TradeMarketSheets = DBCacheManager.Single.GetStr(CacheTable.TradeMarketSheets);
|
|
ViewBag.LuoKuanDesc = DBCacheManager.Single.GetStr(CacheTable.LuoKuanDesc);
|
|
ViewBag.MarginLuoKuanDesc = DBCacheManager.Single.GetStr(CacheTable.MarginLuoKuanDesc);
|
|
ViewBag.PayableMargin = payablemargin;
|
|
ViewBag.PayableFund = payableFund;
|
|
ViewBag.ReportType = reportType;
|
|
ViewBag.ParentFlag = ParentFlag;
|
|
return View();
|
|
}
|
|
|
|
|
|
public ViewResult TradeMarketClientPdf(DingShiReport report)
|
|
{
|
|
//ViewRenderer.RenderPartialView("~/Views/quotationconfirm/quotationtable.cshtml", selectedQuotation, this.ControllerContext);
|
|
//todo 等谢磊方法 report.ClientBalance.DaliyPnl
|
|
// report.eod_positionList.Sum(e=>e.pnl) //((eod_pnlGridSum)report.eod_positionList.Sum).DailyPnLSum;
|
|
return View(report);
|
|
}
|
|
|
|
public ViewResult TradeMarketClientPdf_XiangCai(DingShiReport report)
|
|
{
|
|
//ViewRenderer.RenderPartialView("~/Views/quotationconfirm/quotationtable.cshtml", selectedQuotation, this.ControllerContext);
|
|
//todo 等谢磊方法 report.ClientBalance.DaliyPnl
|
|
// report.eod_positionList.Sum(e=>e.pnl) //((eod_pnlGridSum)report.eod_positionList.Sum).DailyPnLSum;
|
|
return View(report);
|
|
}
|
|
|
|
[MyAuthorize("结算管理-导入外部结算数据")]
|
|
public JsonResult ImportClientBalanceGap(IFormFile file, bool IsMargin = false)
|
|
{
|
|
try
|
|
{
|
|
if (!file.FileName.EndsWith("xlsx"))
|
|
{
|
|
return JsonError("文件格式不对,请使用xlsx文件");
|
|
}
|
|
using (var stream = file.OpenReadStream())
|
|
{
|
|
var result = new ClientCashInCashOutDataService(CurUser).ImportClientBalanceGap(stream, IsMargin);
|
|
if (result.IsSuccess)
|
|
{
|
|
return JsonSuccess("导入成功");
|
|
}
|
|
return JsonError(result.Message);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogFactory.GetLogger(nameof(ClientController)).Error("ImportClientBalanceGap", ex);
|
|
return JsonError(ex.Message);
|
|
throw;
|
|
}
|
|
}
|
|
|
|
[AllowAnonymous]
|
|
public JsonResult GetClientAccount(int clientId)
|
|
{
|
|
var obj = RealtimePnlCalc.GetClientBalance(clientId);
|
|
if (obj==null)
|
|
{
|
|
return JsonError("获取资金失败");
|
|
}
|
|
|
|
return JsonSuccess("",obj);
|
|
}
|
|
}
|
|
}
|