删除定义文件类型,删除所有判断山西固收的地方

This commit is contained in:
吴方海
2024-06-05 14:37:30 +08:00
parent 87d0d31e9a
commit 327a4158a5
60 changed files with 197 additions and 1352 deletions
+2 -2
View File
@@ -134,7 +134,7 @@ namespace YLErp
case HKStock: return "香港股票";
case HKStockIndex: return "香港股指";
case Fund: return "基金及基金专户";
case TBonds: return (PS.Config.Company == Configuration.CompanyEnum.西) ? "利率债" : "国债";
case TBonds: return "利率债";
case GoldFutures: return "黄金期货";
case TBFutures: return "国债期货";
case OtherFutures: return "其他期货";
@@ -231,7 +231,7 @@ namespace YLErp
new SelectItem { Text = "香港股票" ,Value = HKStock},
new SelectItem { Text = "香港股指" ,Value = HKStockIndex},
new SelectItem { Text = "基金及基金专户" ,Value = Fund},
new SelectItem { Text = (PS.Config.Company == Configuration.CompanyEnum.西)?"利率债":"国债" ,Value = TBonds},
new SelectItem { Text = "利率债" ,Value = TBonds},
new SelectItem { Text = "信用债" ,Value = CreditBonds},
new SelectItem { Text = "其它债券" ,Value = OtherBonds},
new SelectItem { Text = "黄金期货" ,Value = GoldFutures},
@@ -226,7 +226,7 @@ namespace YLErp.BLL.EodSettlement
var marginRate = client?.MarginRate ?? 0;
data.AvailableAmount = data.AmountFund + (data.PayableMargin * marginRate);
}
else if (PS.Config.Is山西固收)
else
{
data.AvailableAmount = data.AmountFund + data.TotalCredit + data.PayableMargin + data.GuaranteesTotalAmount;
data.MinusPayableMarginTotal = data.MinusPayableMargin;
@@ -327,24 +327,7 @@ namespace YLErp.BLL.EodSettlement
balance.TotalCredit = data.TotalCredit;
balance.PayableMargin = data.PayableMargin;
balance.GuaranteesTotalAmount = data.GuaranteesTotalAmount;
if (PS.Config.Is国投)
{
balance.AvailableAmount = balance.AmountFund + balance.TotalCredit + balance.PayableMargin;
}
else if (PS.Config.Is伴兴 || PS.Config.Is湘财)
{
balance.AvailableAmount += balance.TotalCredit;
}
else if (PS.Config.Is东吴)
{
// 可用金额
var marginRate = client?.MarginRate ?? 0;
balance.AvailableAmount = balance.AmountFund + (balance.PayableMargin * marginRate);
}
else if (PS.Config.Is山西固收)
{
balance.AvailableAmount = balance.AmountFund + balance.TotalCredit + balance.PayableMargin + balance.GuaranteesTotalAmount;
}
balance.AvailableAmount = balance.AmountFund + balance.TotalCredit + balance.PayableMargin + balance.GuaranteesTotalAmount;
balance.DeltaMargin = data.DeltaMargin;
balance.SwapPayableMargin = data.SwapPayableMargin;
balance.SwapUnMargin = data.SwapUnPayableMargin;
@@ -366,14 +349,7 @@ namespace YLErp.BLL.EodSettlement
balance.SellPv = data.SellPv;
balance.PrepaymentAmount = data.PrepaymentAmount;
balance.DaliyPnl = data.DaliyPnl;
if (PS.Config.Is山西固收)
{
balance.RoundedDaliyPnl = data.RoundedPositionPnl - (lastClientBalanceDaily?.RoundedPositionPnl ?? 0);
}
else
{
balance.RoundedDaliyPnl = (data.TdWinLoss ?? 0) + data.RoundedPositionPnl - (lastClientBalanceDaily?.RoundedPositionPnl ?? 0);
}
balance.RoundedDaliyPnl = data.RoundedPositionPnl - (lastClientBalanceDaily?.RoundedPositionPnl ?? 0);
balance.PositionPnl = data.PositionPnl;
balance.RoundedPositionPnl = data.RoundedPositionPnl;
balance.ClientSellPositionPnl = data.ClientSellPositionPnl;
+2 -20
View File
@@ -562,7 +562,6 @@ namespace YLErp.BLL.Eod
var multiplier = ConsGlobal.InstrumentType.IsBond(lastPosi.UnderlyingInstrumentType) ? ConsGlobal.bondShowPriceMultiple : 1;
var price = lastPosi.PosiGrossPrice * multiplier;
var netPrice = lastPosi.PosiNetNoFeePrice * multiplier;
var dma = trades.Any(s=>s.StructureType== "定义文件型债券收益互换");
var um = DataCacheProvider.GetUnderlyingDataSource().GetData(pair.Key.UnderlyingCode);
clientPosition = CreateClientPosition(clientPosition, pair.Key.ClientId, pair.Key.UnderlyingCode, netPrice??0, price, posiQty / 10000, comminsions, positionType == PositionTypeFlag.Long ? 0 : 1, lastPosi.ContractSize, pair.Key.PosiDirection);
if (pair.Key.PosiDirection==(int)SwapDirectionEnum.)
@@ -571,15 +570,7 @@ namespace YLErp.BLL.Eod
dealSwapFlowIds.AddRange(newSwapFlows.Select(s => s.id));
if (flowMerges.Any())
{
if (client.SwapTradeType != 1)
{
MergeSwapPosition(flowMerges, positionType, clientPosition, posiQty);
}
else
{
swapTradeAutoService.MergeSwapPositionAvg(newSwapFlows, positionGroupItems.ToList(), clientPosition, multiplier, (int)positionType);
}
MergeSwapPosition(flowMerges, positionType, clientPosition, posiQty);
}
}
clientPosition.update_user = 0;
@@ -628,16 +619,7 @@ namespace YLErp.BLL.Eod
}
var clientPosition = clientPositions.FirstOrDefault(x => x.client_id == swapFlowGroup.Key.ClientId && x.security_id == swapFlowGroup.Key.UnderlyingCode);
clientPosition = CreateClientPosition(clientPosition, swapFlowGroup.Key.ClientId ?? 0, swapFlowGroup.Key.UnderlyingCode, flowMergeMax.TradingAmountNetAvg ?? 0, flowMergeMax.TradingAmountAvg, qty / 10000, comminsions, flowMergeMax.BsType == (int)PositionTypeFlag.Long ? 0 : 1, flowMergeMax.ContractSize, (int)SwapDirectionEnum.);
if (client.SwapTradeType != 1)
{
clientPosition.position_qty = qty / 10000;
}
else
{
var flowList = swapFlowGroup.OrderBy(o=>o.OptTime).ToList();
var posiType= flowList.First().BsType;
swapTradeAutoService.MergeSwapPositionAvg(flowList, null, clientPosition, multiplier, posiType);
}
clientPosition.position_qty = qty / 10000;
clientPosition.update_user = 0;
if (clientPosition.id == 0)
{
+3 -3
View File
@@ -329,9 +329,9 @@ namespace BaseOUDAL
if (AccountPost == 0) { return string.Empty; }
switch (AccountPost)
{
case 1:if (PS.Config.Is山西固收) return "对冲交易询价对象"; return "客户经理";
case 2:if (PS.Config.Is山西固收) return "非对冲交易询价对象"; return "交易员";
default: if (PS.Config.Is山西固收) return "对冲交易询价对象,非对冲交易询价对象"; return "客户经理,交易员";
case 1: return "对冲交易询价对象";
case 2: return "非对冲交易询价对象";
default: return "对冲交易询价对象,非对冲交易询价对象";
}
}
-1
View File
@@ -155,7 +155,6 @@ namespace YLErp.Model
public const string = "tradeMarginTemplateList";
public const string = "SettmentEodSwapPositionList";
public const string = "DmaSettmentEodSwapPositionList";
public const string = "compare_heitai_data";
}
@@ -696,10 +696,6 @@ namespace YLErp.Modules.ClientModule
{
throw new ServiceException("客户名称 必须填写");
}
if (string.IsNullOrWhiteSpace(req.SettleFileNumber)&&req.SwapTradeType==1)
{
throw new ServiceException("定义文件编号 必须填写");
}
//if (string.IsNullOrWhiteSpace(req.))
//{
// throw new ServiceException("自定义必须填写");
@@ -112,23 +112,7 @@ namespace YLErp.Modules.EodModule.SettlementModule
eodRiskList = eodRiskList.Where(t => reqClientIds.Contains(t.ClientId)).ToList();
}
//获取所有用户当日Eod_pnl
IEnumerable<EodTradePosition> eodpnlList;
if (PS.Config.Company == CompanyEnum.)
{
eodpnlList = DbContext.eod_trade_position_openvol.Where(t => t.ValueDate == balanceDate).ToList();
}
else if (PS.Config.Company == CompanyEnum.)
{
eodpnlList = DbContext.eod_trade_position.Where(t => t.ValueDate == balanceDate).ToList();
}
else if (PS.Config.Is山西固收)
{
eodpnlList = DbContext.eod_trade_position.Where(t => t.ValueDate == balanceDate && t.TradeType != "收益互换").ToList();
}
else
{
eodpnlList = DbContext.eod_trade_position.Where(t => t.ValueDate == balanceDate).ToList();
}
IEnumerable<EodTradePosition> eodpnlList = DbContext.eod_trade_position.Where(t => t.ValueDate == balanceDate && t.TradeType != "收益互换").ToList();
if (reqClientIds != null && reqClientIds.Any())
{
@@ -578,11 +578,8 @@ where {nameof(t.TaskStartTime)}>'{startDateStr}' and {nameof(t.TaskState)}={(int
SetTaskStep("检查当日到期交易");
new EodCheckMaturityTrade(_context).Execute();//t
}
if (PS.Config.Is山西固收)
{
new EodCheckMonitoredTrade(_context).CalculateMargin();
new EodCheckMonitoredTrade(_context).ExecuteEodSwap();
}
new EodCheckMonitoredTrade(_context).CalculateMargin();
new EodCheckMonitoredTrade(_context).ExecuteEodSwap();
tasks = new Task[4];
if (_request.IsSettleExchangeTrades)
@@ -126,12 +126,6 @@ namespace YLErp.Modules.ExchangeTradeModule
item.UnderlyingPrice = Underlying.Price.OtcFormat(OtcFormatFlag.marginRate);
item.PositionCost = item.PositionCount * Underlying.CountRatio;
item.CountRatio = Underlying.CountRatio;
//if (PS.Config.Company == Configuration.CompanyEnum.山西固收)
//{
// item.Position=Math.Abs(item.Position);
// item.PositionCost = Math.Abs(item.PositionCost);
// item.PositionCount=Math.Abs(item.PositionCount);
//}
}
return list;
@@ -86,15 +86,10 @@ namespace YLErp.Modules.MarginModule
InitMarginRebateRate = reader.GetDecimalPercent("期初预付金利率", false) ?? 0,
AddToMarginRebateRate= reader.GetDecimalPercent("追加预付金利率", false) ?? 0,
LongInitMarginRate = reader.GetDecimalPercent("多头期初预付金率", false),
ShortInitMarginRate = reader.GetDecimalPercent("空头期初预付金率", false),
Type = reader.GetString("类型", true)
ShortInitMarginRate = reader.GetDecimalPercent("空头期初预付金率", false)
};
var client = new Client();
if (marginRate.Type != "普通" && marginRate.Type != "多空组合")
{
throw new ServiceException("类型设置错误,类型必须位[普通]或[定义文件]");
}
marginRate.Type = marginRate.Type == "普通" ? "品种" : "多空组合";
marginRate.Type = "品种";
if (!string.IsNullOrWhiteSpace(marginRate.ClientName))
{
client = DataCacheProvider.GetClientDataSource().AsQueryable().Where(o => o.Name == marginRate.ClientName).FirstOrDefault();
@@ -114,32 +109,12 @@ namespace YLErp.Modules.MarginModule
{
throw new ServiceException("无数据");
}
if (PS.Config.Is山西固收)
if (marginrate.InitMarginRate < 0)
{
if (marginrate.InitMarginRate < 0)
{
throw new ServiceException("预付金率数据格式错");
}
}
else
{
if (marginrate.InitMarginRate < 0 || marginrate.ClosePositionLine < 0 || marginrate.WarningLine < 0)
{
throw new ServiceException("预付金率数据格式错");
}
}
//if (marginrate.Type == "品种" && marginrate.VarietyId == 0)
//{
// throw new ServiceException("设置品种预付金,品种代码必填");
//}
//品种预付金设置验证
if (marginrate.VarietyId>0)
{
checkMarginRate(marginrate);
throw new ServiceException("预付金率数据格式错");
}
var dbMarginRate = new client_marginrate();
var marginrateType = marginrate.Type == "多空组合" ? "定义文件" : "普通";
var marginrateType = "普通";
if (marginrate.id != 0)
{
dbMarginRate = DbContext.client_marginrate.Find(marginrate.id);
@@ -148,10 +123,7 @@ namespace YLErp.Modules.MarginModule
throw new ServiceException("未找到该记录");
}
dbMarginRate.ClientId = marginrate.ClientId;
if (marginrate.Type == "品种")
{
dbMarginRate.VarietyId = marginrate.VarietyId;
}
dbMarginRate.VarietyId = marginrate.VarietyId;
dbMarginRate.Type = marginrate.Type;
dbMarginRate.InitMarginRate = marginrate.InitMarginRate;
dbMarginRate.ClosePositionLine = marginrate.ClosePositionLine;
@@ -164,8 +136,7 @@ namespace YLErp.Modules.MarginModule
dbMarginRate.OptId = UserId;
dbMarginRate.OptName = UserName;
dbMarginRate.OptDate = DateTime.Now;
if (DbContext.client_marginrate.Any(o =>
(marginrate.Type == "多空组合" || (marginrate.Type == "品种" && o.VarietyId == marginrate.VarietyId))
if (DbContext.client_marginrate.Any(o =>marginrate.Type == "品种" && o.VarietyId == marginrate.VarietyId
&& o.ClientId == marginrate.ClientId
&& o.ValueDate == marginrate.ValueDate
&& o.id != marginrate.id))
@@ -175,8 +146,7 @@ namespace YLErp.Modules.MarginModule
}
else
{
dbMarginRate = DbContext.client_marginrate.Where(o =>
(marginrate.Type == "多空组合" || (marginrate.Type == "品种" && o.VarietyId == marginrate.VarietyId))
dbMarginRate = DbContext.client_marginrate.Where(o =>marginrate.Type == "品种" && o.VarietyId == marginrate.VarietyId
&& o.Type == marginrate.Type
&& o.ClientId == marginrate.ClientId
&& o.ValueDate == marginrate.ValueDate).FirstOrDefault();
@@ -18,10 +18,6 @@ namespace YLErp.Modules.ReportModule.SettlementReportModule
/// </summary>
public List<EodSwapPositionResponse> EodSwapPositions { get; set; }
/// <summary>
/// 定义文件互换估值
/// </summary>
public List<EodSwapPositionResponse> DmaEodSwapPositions { get; set; }
/// <summary>
/// 互换持仓明细
/// </summary>
public List<SwapPositionResponse> SwapPositions { get; set; }
@@ -63,11 +63,6 @@ namespace YLErp.Modules.ReportModule.SettlementReportModule
var eodReq = new ClientSwapPositionRequest { ClientId = emailData.ClientId, ValueDate = emailData.To, ValueDateFrom = emailData.From,page=1, rows=10000,StructureType= "普通债券类收益互换" };
report.EodSwapPositions = swapEodPositionService.SearchEodPositionList(eodReq).rows.ToList();
}
if (emailData.SendContent.Contains("定义文件互换估值"))
{
var eodReq = new ClientSwapPositionRequest { ClientId = emailData.ClientId, ValueDate = emailData.To, ValueDateFrom = emailData.From, page = 1, rows = 10000, StructureType = "定义文件型债券收益互换" };
report.DmaEodSwapPositions = swapEodPositionService.SearchEodPositionList(eodReq).rows.ToList();
}
if (emailData.SendContent.Contains("互换持仓明细"))
{
var eodReq = new ClientSwapPositionRequest { ClientId = emailData.ClientId, ValueDate = emailData.To, ValueDateFrom = emailData.From, page = 1, rows = 10000 };
@@ -240,10 +235,6 @@ namespace YLErp.Modules.ReportModule.SettlementReportModule
{
modelDict.Add("互换估值", report.EodSwapPositions);
}
if (report.DmaEodSwapPositions != null)
{
modelDict.Add("定义文件互换估值", report.DmaEodSwapPositions);
}
if (report.SwapPositions != null)
{
modelDict.Add("互换持仓明细", report.SwapPositions);
@@ -3613,38 +3613,34 @@ namespace YLErp.Modules.RiskModule
Status = QuotaSettingApprovalStatus.Valid,
});
if (PS.Config.Is山西固收)
//交易-互换价格偏离比例
_quotaSettings.Add(new QuotaSetting()
{
//交易-互换价格偏离比例
_quotaSettings.Add(new QuotaSetting()
{
QuotaType = QuotaTypeEnum.TRADE,
QuotaRange = 0,
QuotaIndex = "互换价格偏离比例",
QuotaLowerLimit = null,
QuotaUpperLimit = null,
WarningLowerLimit = null,
WarningUpperLimit = null,
Percent = true,
IsValid = true,
Status = QuotaSettingApprovalStatus.Valid,
});
//交易-DV01
_quotaSettings.Add(new QuotaSetting()
{
QuotaType = QuotaTypeEnum.TRADE,
QuotaRange = 0,
QuotaIndex = "DV01",
QuotaLowerLimit = null,
QuotaUpperLimit = null,
WarningLowerLimit = null,
WarningUpperLimit = null,
Percent = false,
IsValid = true,
Status = QuotaSettingApprovalStatus.Valid,
});
}
QuotaType = QuotaTypeEnum.TRADE,
QuotaRange = 0,
QuotaIndex = "互换价格偏离比例",
QuotaLowerLimit = null,
QuotaUpperLimit = null,
WarningLowerLimit = null,
WarningUpperLimit = null,
Percent = true,
IsValid = true,
Status = QuotaSettingApprovalStatus.Valid,
});
//交易-DV01
_quotaSettings.Add(new QuotaSetting()
{
QuotaType = QuotaTypeEnum.TRADE,
QuotaRange = 0,
QuotaIndex = "DV01",
QuotaLowerLimit = null,
QuotaUpperLimit = null,
WarningLowerLimit = null,
WarningUpperLimit = null,
Percent = false,
IsValid = true,
Status = QuotaSettingApprovalStatus.Valid,
});
#endregion
#region
@@ -4381,13 +4377,6 @@ namespace YLErp.Modules.RiskModule
return true;
}
var lastTrial = trialService.QueryLastQuotaTrial(tradeId, true);
if (quotaObj.TrialStatus == QuotaTrialStatusEnum.Error && !PS.Config.Is山西固收
&& (lastTrial == null || lastTrial.TrialStatus == QuotaTrialStatusEnum.Error))//上次没算或上次和这次试算结果都不通过,直接拒绝
{
res.RetCode = TradeOpenRetCode.QuotaTrialError;
res.ErrorMsg = $"试算不通过,不允许确认成交操作";
return false;
}
if (quotaObj.TrialStatus == QuotaTrialStatusEnum.Success)
{
new TradeRiskCheckLogService(UserInfo).AddLog(quotaObj);
@@ -4653,11 +4642,8 @@ namespace YLErp.Modules.RiskModule
}
string quotaWarningMsg = "", quotaMsg = "";
bool quotaWarningStatus = true, quotaStatus = true;
if (PS.Config.Is山西固收 && tradeObj.StructureType != "定义文件型债券收益互换")
{
var positions = DbContext.swap_position.Where(x => x.SwapTradeId == tradeId && x.PosiQuantity > 0 && x.IsInitial && !x.Invalid).ToList();
quotaStatus = CheckUnderlyingWhiteList(tradeObj.ClientId, positions, out quotaMsg);
}
var positions = DbContext.swap_position.Where(x => x.SwapTradeId == tradeId && x.PosiQuantity > 0 && x.IsInitial && !x.Invalid).ToList();
quotaStatus = CheckUnderlyingWhiteList(tradeObj.ClientId, positions, out quotaMsg);
if (quotaStatus)
{
var allList = QueryPrecheckQuotaSetting(false);
@@ -4760,14 +4746,7 @@ namespace YLErp.Modules.RiskModule
}
else
{
if (PS.Config.ErpElement.Company == Configuration.CompanyEnum. || PS.Config.Is山西固收)
{
result.TrialStatus = QuotaTrialStatusEnum.Error;
}
else
{
result.TrialStatus = QuotaTrialStatusEnum.Warning;
}
result.TrialStatus = QuotaTrialStatusEnum.Error;
}
}
result.TradeId = tradeObj.id;
@@ -65,7 +65,7 @@ namespace YLErp.Modules.SwapModule
from se in setemp.DefaultIfEmpty()
join em in emailquery on f.id equals em.event_id into emTmp
from em in emTmp.DefaultIfEmpty()
where t.ValidState == "Valid" && t.StructureType != "多空组合" && t.StructureType != "定义文件型债券收益互换"
where t.ValidState == "Valid" && t.TradeType == "收益互换"
select new SwapEventEmailResponse
{
event_id = f.id,
@@ -158,7 +158,7 @@ namespace YLErp.Modules.SwapModule
from se in setemp.DefaultIfEmpty()
join em in DbContext.swap_event_email on f.id equals em.event_id into emTmp
from em in emTmp.DefaultIfEmpty()
where t.ValidState == "Valid" && t.StructureType != "多空组合" && t.StructureType != "定义文件型债券收益互换" && (em == null || em.send_email == false)
where t.ValidState == "Valid" && t.TradeType=="收益互换" && (em == null || em.send_email == false)
&& clientIds.Contains(f.ClientId)
&& f.UnwindDate == valueDate && f.PayDirection > 0 && eventTypes.Contains(f.EventType) && f.DataState == (int)SwapFlowDateStateEnum.
select f;
@@ -140,22 +140,6 @@ namespace YLErp.Modules.SwapModule
var posiPositions = positions.Where(x => x.PosiDirection > 0).ToList();
}
/// <summary>
/// 校验 定义文件型债券收益互换 持仓标的只能存在一笔
/// </summary>
/// <param name="td"></param>
/// <exception cref="ServiceException"></exception>
public void ExistLongShortTrade(trade td)
{
var longshortName = "定义文件型债券收益互换";
if (td.StructureType == longshortName)
{
if (DbContext.trade.Any(a => a.ClientId == td.ClientId && a.TradeStatus == "确认成交" && a.ValidState != ConsGlobal.InValid && a.StructureType == longshortName && a.UnderlyingCode == td.UnderlyingCode && a.id != td.id))
{
throw new ServiceException($"{td.ClientName}已经存在标的为{td.UnderlyingCode}的定义文件型债券收益互换交易");
}
}
}
/// <summary>
/// 单标的生成开仓事件
/// </summary>
/// <param name="td"></param>
@@ -110,13 +110,6 @@ namespace YLErp.Modules.SystemModule
Value = m.id.ToString()
}).ToList();
}
public static List<SelectItem> GetClientSwapType()
{
List<SelectItem> list = new List<SelectItem>();
list.Add(new SelectItem { Text = "普通", Value = "0" });
list.Add(new SelectItem { Text = "定义文件", Value = "1" });
return list;
}
/// <summary>
/// 获取变更字段列表
/// </summary>
@@ -179,8 +179,6 @@ namespace YLErp.Modules.TradeModule.DealModule
result.ErrorMsg = $"客户:{td.ClientName},交易编号:{td.TradeNumber},状态为:{td.TradeStatus},不能被确认";
return result;
}
// 校验定义文件类型互换
new SwapTradeService(UserInfo).ExistLongShortTrade(td);
//判断交易对手方信息是否允许确认
var client = DataCacheProvider.GetClientDataSource().GetData(td.ClientId);
@@ -57,9 +57,6 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
statusList.Add(ConsTrade.);
statusList.Add(ConsTrade.);
statusList.Add(ConsTrade.);
}
if (PS.Config.Is山西固收)
{
statusList.Add(ConsTrade.);
}
TradeDalService service = new TradeDalService(this);
@@ -75,47 +72,17 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
//----------------------------------
// 交易现金交割记录
//----------------------------------
List<trade> allTradeList = new List<trade>();
if (PS.Config.Is山西固收)
{
allTradeList = DbContext.trade.Where(x=> tradeIds.Contains(x.id)).ToList();
}
else
{
allTradeList = service.GetTradeOrEodTradeOfTidASid(tradeIds, SystemValueDate);
}
List<trade> allTradeList = allTradeList = DbContext.trade.Where(x => tradeIds.Contains(x.id)).ToList();
if (allTradeList.Count < 1)
{
throw new ServiceException("没有已确认的记录信息!");
}
//只选中一笔子交易,按一笔子交易生成确认书
if (PS.Config.Is光大光子 || PS.Config.Is兴业商贸)
{
allTradeList.RemoveAll(x => x.ParentTradeId != 0 && !tradeIds.Contains(x.id));
}
var tradeDic = allTradeList.Where(O =>
statusList.Contains(O.TradeStatus)
&& O.ClientId != 0
&& O.ParentTradeId == 0)
.ToDictionary(n => n.id, n => new trade_contract_group { trade = n });
if (PS.Config.Is长江)
{
foreach (var item in allTradeList)
{
if (item.ParentTradeId != 0)
{
if (item.StructureType != "牛市价差" && item.StructureType != "熊市价差")
{
if (tradeDic.ContainsKey(item.ParentTradeId))
{
tradeDic.Remove(item.ParentTradeId);
}
tradeDic.Add(item.id, new trade_contract_group { trade = item });
}
}
}
}
var cashQuery = from trade in allTradeList
join tradeCash in DbContext.trade_cash on trade.id equals tradeCash.TradeId
where tradeCash.ValidState != ConsGlobal.InValid && !tradeCash.IsDeleted
@@ -68,7 +68,6 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
var resultList = new List<TradeDocGenerateResult>();
AppManager.TryResolve(out ITradeSettleBillGenerator generatorV2);
Dictionary<int, List<swap_flow_event>> noDMAFlows = new Dictionary<int, List<swap_flow_event>>();
Dictionary<int, List<swap_flow_event>> DMAFlows = new Dictionary<int, List<swap_flow_event>>();
List<trade_extend> extendList = null;
if (flowEvents != null && flowEvents.Any())
{
@@ -105,33 +104,19 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
}
if (trade.ValidState!=ConsGlobal.InValid)
{
if (trade.StructureType == "多空组合"||trade.StructureType== "定义文件型债券收益互换")
if (noDMAFlows.ContainsKey(trade.ClientId))
{
if (DMAFlows.ContainsKey(trade.ClientId))
{
DMAFlows[trade.ClientId].Add(flowEvent);
}
else
{
DMAFlows[trade.ClientId] = new List<swap_flow_event> { flowEvent };
}
noDMAFlows[trade.ClientId].Add(flowEvent);
}
else
{
if (noDMAFlows.ContainsKey(trade.ClientId))
{
noDMAFlows[trade.ClientId].Add(flowEvent);
}
else
{
noDMAFlows[trade.ClientId] = new List<swap_flow_event> { flowEvent };
}
noDMAFlows[trade.ClientId] = new List<swap_flow_event> { flowEvent };
}
}
}
if (noDMAFlows.Count()==0&& DMAFlows.Count()==0)
if (noDMAFlows.Count()==0)
{
throw new ServiceException("没有需要生成的确认书");
}
@@ -140,11 +125,6 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
var noDMAResults = GenerateShanxiSwap(item.Key, item.Value, trades, swapPositions, allFlowEvents, generatorV2, docType);
resultList.AddRange(noDMAResults);
}
foreach (var item in DMAFlows)
{
var DMAResults = GenerateShanxiSwap(item.Key, item.Value, trades, swapPositions, allFlowEvents, generatorV2, docType);
resultList.AddRange(DMAResults);
}
return resultList;
}
-1
View File
@@ -48,7 +48,6 @@
{Name:"阶梯费率",Rights:["互换簿记预设-阶梯费率"],Url:"SwapRate"},
{Name:"浮动利率",Rights:["互换簿记预设-浮动利率"],Url:"SwapFloatRate"},
{Name:"簿记账户与衡泰关系",Rights:["互换簿记预设-簿记账户与衡泰关系"],Url:"EtradeAccount/Index"},
{Name:"做市时间配置",Rights:["互换簿记预设-做市时间配置"],Url:"TrsOpen/Index"}
]
},
{Name:"数据管理",Rights:["基础参数管理"],Icon:"menu-icon iconone"
+2 -5
View File
@@ -325,12 +325,9 @@ namespace YLErp.Web
new SelectListItem {Value = ConsTrade., Text = ConsTrade. },
new SelectListItem {Value = ConsTrade., Text = ConsTrade. },
new SelectListItem {Value = ConsTrade., Text = ConsTrade. },
new SelectListItem {Value = ConsTrade., Text = ConsTrade. }
new SelectListItem {Value = ConsTrade., Text = ConsTrade. },
new SelectListItem { Value= ConsTrade., Text = ConsTrade. }
};
if (PS.Config.Is山西固收)
{
list.Add(new SelectListItem { Value= ConsTrade., Text = ConsTrade. });
}
return list;
}
@@ -83,11 +83,6 @@ namespace YLErp.Web.Controllers
Expires = DateTimeOffset.Now.AddHours(1)
});
}
else if (!hasError && !PS.Config.Is山西固收)
{
var str = Server.CacheProvider.Get(_auth_login + guid)?.ToString();
model.NeedCaptcha = hasError = !string.IsNullOrEmpty(str) && str.EndsWith("##");
}
Server.CacheProvider.Set(_auth_login + guid, hasError ? "##" : "#", TimeSpan.FromMinutes(20));
+3 -24
View File
@@ -65,12 +65,9 @@ namespace YLErp.Web.Controllers
StructureType = "普通收益互换",
InitialMargin = 0
};
if (PS.Config.Is山西固收)
{
r.StructureType = "普通债券类收益互换";
r.ExerciseDate = QdpCalendarHelper.GetNonHolidayDefore(r.StartDate.Value.AddDays(14));
tradeExtendJson.FlowBookMode = (int)FlowBookModeEnum.;
}
r.StructureType = "普通债券类收益互换";
r.ExerciseDate = QdpCalendarHelper.GetNonHolidayDefore(r.StartDate.Value.AddDays(14));
tradeExtendJson.FlowBookMode = (int)FlowBookModeEnum.;
r.trade_extend = new trade_extend()
{
ExtendJson = JsonHelper.Serialize(tradeExtendJson)
@@ -340,7 +337,6 @@ namespace YLErp.Web.Controllers
try
{
bool edit = req.id != 0;
swapTradeService.ExistLongShortTrade(req);
var r = swapTradeService.SaveTrade(req);
swapTradeService.AddPushLog(r);
Task.Run(() =>
@@ -813,23 +809,6 @@ namespace YLErp.Web.Controllers
return View();
}
/// <summary>
/// 互换估值
/// </summary>
/// <param name="clientId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
[MyAuthorize("结算管理-每日估值报告")]
public ActionResult TradeMarketReport_DmaEodPosition(int? clientId, string startTime, string endTime, bool ParentFlag)
{
ViewBag.ClientId = clientId;
ViewBag.StartTime = startTime;
ViewBag.EndTime = endTime;
ViewBag.ParentFlag = ParentFlag;
ViewBag.StructureType = "定义文件型债券收益互换";
return View();
}
/// <summary>
/// 互换持仓明细
/// </summary>
/// <param name="req"></param>
+3 -35
View File
@@ -511,37 +511,12 @@ namespace YLErp.Web.Controllers
var task2 = Task.Run(() =>
{
var clientIds = clientList.Select(O => O.id).ToList();
if (PS.Config.Is山西固收)
{
return ClientBalanceUtility.GetClientRiskMonitorForShanXiGuShou(clientIds, req.ValueDate.Value, req.MarginShownType);
}
return ClientBalanceUtility.GetClientRiskMonitor(clientIds, req.ValueDate.Value, req.MarginShownType);
return ClientBalanceUtility.GetClientRiskMonitorForShanXiGuShou(clientIds, req.ValueDate.Value, req.MarginShownType);
});
var task3 = Task.Run(() =>
{
if (PS.Config.Company == Configuration.CompanyEnum.)
{
var nameList = clientList.Select(n => n.Name).ToList();
return yldb.QuotaMonitor_Client.Where(O => O.ValueDate == req.ValueDate.Value && nameList.Contains(O.ClientName)).ToDictionary(K => K.ClientName, V => V.CreditExposure);
}
return null;
});
var task4 = Task.Run(() =>
{
if (PS.Config.Is润和)
{
var levelIds = clientList.Where(O => O.LevelId != null).Select(O => O.LevelId).Distinct().ToList();
var ratioInfos = clientDB.clientlevel.Where(O => O.Ratio != null && levelIds.Contains(O.id)).Select(O => new { O.id, O.Ratio }).ToDictionary(K => K.id, V => V.Ratio);
return ratioInfos;
}
return null;
});
Task.WaitAll(task1, task2, task3, task4);
Task.WaitAll(task1, task2);
var sList = task1.Result;
var banlanceList = task2.Result ?? Array.Empty<ClientSettleBalance>();
var creditExposureDict = task3.Result ?? new Dictionary<string, double?>();
var ratioDict = task4.Result ?? new Dictionary<int, double?>();
//var sList = new ClientQueryService(curUser).SearchList(req, predicate);
//var clientIds = clientList.Select(O => O.id).ToList();
@@ -706,8 +681,6 @@ namespace YLErp.Web.Controllers
x.availableNetFundSums = (clientBalance.PositionNotionalPrincipal / x.NetFundSum);
x.EAD = clientBalance.EAD;
var clientName = client?.Name ?? "";
//这个字段只有国海用得到
x.CreditExposure = creditExposureDict.ContainsKey(clientName) ? creditExposureDict[clientName] : null;
x.MinimumTransferAmount = client?.MinimumTransferAmount;
x.LastHTSettlemetTime = clientBalance.LastHTSettlemetTime;
@@ -717,11 +690,6 @@ namespace YLErp.Web.Controllers
x.AvailableAmount = clientBalance.AvailableAmount + clientBalance.TotalCredit;
x.DesirableFund = Math.Max(clientBalance.AvailableAmount, 0);
if (!ratioDict.TryGetValue(client.LevelId ?? 0, out var ratio))
{
ratio = 1;
}
switch ((MarginOptionEnum)client.MarginOptionType)
{
case MarginOptionEnum.:
@@ -740,7 +708,7 @@ namespace YLErp.Web.Controllers
default:
break;
}
x.SpanValue = x.HoldingDeposit / ratio;
x.SpanValue = x.HoldingDeposit;
}
//拼装标签值
@@ -479,40 +479,8 @@ namespace YLErp.Web.Controllers
{
EmailTradeConfirmResultType status;
string message;
if (PS.Config.Company == Configuration.CompanyEnum.)
{
var report = new SettlementReportForZJService(user).GetReportData(emailData, userAssetUnits, template);
(status, message) = new SettlementReportForZJService(user).SendSettlementReports(emailData, report, template, recevier);
}
else if (PS.Config.Is国投)
{
var report = new SettlementReportFotGTService(user).GetReportData(emailData, userAssetUnits, template);
(status, message) = new SettlementReportFotGTService(user).SendSettlementReports(emailData, report, template, skipCheckMarginCall, recevier);
}
else if (PS.Config.Is山西固收)
{
var report = new SettlementReportFotShanXiService(user).GetReportData(emailData, userAssetUnits, template);
(status, message) = new SettlementReportFotShanXiService(user).SendSettlementReports(emailData, report, template, skipCheckMarginCall, recevier);
}
else
{
var report = new SettlementReportService(user).GetReportData(emailData, userAssetUnits, template);
var pdfHtml = string.Empty;
var txtHtml = string.Empty;
if (!needHtml)
{
if (PS.Config.Is湘财)
{
pdfHtml = await _viewRenderer.RenderToStringAsync("clientbalance/TradeMarketClientPdf_XiangCai", report);
}
else
{
pdfHtml = await _viewRenderer.RenderToStringAsync("clientbalance/TradeMarketClientPdf", report);
}
txtHtml = await _viewRenderer.RenderToStringAsync("clientbalance/TradeMarketClientTxt", report);
}
(status, message) = new SettlementReportService(user).SendSettlementReports(emailData, report, template, pdfHtml, txtHtml, skipCheckMarginCall, recevier);
}
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:
@@ -609,60 +577,10 @@ namespace YLErp.Web.Controllers
{
userAssetUnits = GetUserAssetunitIds();
}
if (PS.Config.Company == Configuration.CompanyEnum.)
{
var report = new SettlementReportForZJService(CurUser).GetReportData(emailData, userAssetUnits, template);
var path = new SettlementReportForZJService(CurUser).GenerateFileEntry(report);
var relativePath = path.Substring(path.IndexOf("App_Docs") - 1);
return JsonSuccess("", relativePath);
}
else if (PS.Config.Is国投)
{
var report = new SettlementReportFotGTService(CurUser).GetReportData(emailData, userAssetUnits, template);
var path = new SettlementReportFotGTService(CurUser).GenerateFileEntry(report, emailData.TargetFileType);
var relativePath = path.Substring(path.IndexOf("App_Docs") - 1);
return JsonSuccess("", relativePath);
}
else if (PS.Config.Is山西固收)
{
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);
}
else
{
var report = new SettlementReportService(CurUser).GetReportData(emailData, userAssetUnits, template);
try
{
var html = "";
if (emailData.TargetFileType.ToLower() == "pdf")
{
if (PS.Config.Is湘财)
{
html = await _viewRenderer.RenderToStringAsync("clientbalance/TradeMarketClientPdf_XiangCai", report);
}
else
{
html = await _viewRenderer.RenderToStringAsync("clientbalance/TradeMarketClientPdf", report);
}
}
if (emailData.TargetFileType.ToLower() == "txt")
{
html = await _viewRenderer.RenderToStringAsync("clientbalance/TradeMarketClientTxt", report);
}
var path = new SettlementReportService(CurUser).GenerateFileEntry(report, emailData.TargetFileType, html);
//补丁,返回一个相对地址
var relativePath = path.Substring(path.IndexOf("App_Docs") - 1);
return JsonSuccess("", relativePath);
}
catch (Exception e)
{
return JsonError(e.Message == "The number of columns in PdfPTable constructor must be greater than zero." ? "生成的pdf列表的列数必须大于零,请检查配置列不可为空" : e.Message);
}
}
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)
@@ -10,7 +10,6 @@
roles = CurUser.Roles.Select(s => s.Id).ToList(),
isZhaoZheng = YLErp.PS.Config.Company == CompanyEnum.招证,
isDongWu = YLErp.PS.Config.Company == CompanyEnum.东吴,
isShanxiGuShou = YLErp.PS.Config.Is山西固收,
ViewTagPermission = CurUser.客户管理.客户标签查看权限,
};
}
@@ -2,7 +2,6 @@
@{
ViewBag.Title = "预付金率 | 编辑";
Layout = "~/Views/Shared/_InfoLayout.cshtml";
var hideMargin = PS.Config.Is山西固收 && Model.Type != "品种";
}
@section CSS{
<link href="~/Statics/libs/datetime/flatpickr/flatpickr.min.css" rel="stylesheet" />
@@ -58,69 +57,27 @@
@Html.HiddenFor(model => model.EncryptId)
@Html.HiddenFor(model => model.Type)
@Html.MyDropdownFor(model => model.ClientId, ClientDataModel.GetAllClient())
@if (!PS.Config.Is山西固收)
{
@if (Model.Type == "品种")
{
@Html.MyDropdownFor(model => model.VarietyId, varietyController.GetAllvarietyNameCode())
}
}
<div id="ValueDateDiv" class="form-group col-md-6">
<label class="formlabel">生效日期:</label>
<input class="search-input datepicker" id="ValueDate" name="ValueDate" value="@(Model.id == 0 ? "" : Model.ValueDate.ToString("yyyy-MM-dd"))" type="text" autocomplete="off" required="required">
<span style="color:red">*</span>
</div>
@if (!hideMargin)
{
<div id="InitMarginRateDiv" class="form-group col-md-6">
<label class="formlabel">期初预付金</label>
<div id="InitMarginRateDiv" class="form-group col-md-6">
<label class="formlabel">期初预付金</label>
<input type="text" name="InitMarginRate" id="InitMarginRate" value="@(Model.InitMarginRate * 100)" class="text-box" required="required" />
<span>%</span>
</div>
}
@if (!PS.Config.Is山西固收)
{
<div id="ClosePositionLineDiv" class="form-group col-md-6">
<label class="formlabel">平仓线</label>
<input type="text" name="ClosePositionLine" id="ClosePositionLine" value="@(Model.ClosePositionLine * 100)" class="text-box" required="required" />
<span>%</span>
</div>
<div id="WarningLineDiv" class="form-group col-md-6">
<label class="formlabel">预警线</label>
<input type="text" name="WarningLine" id="WarningLine" value="@(Model.WarningLine * 100)" class="text-box" required="required" />
</div>
<div id="InitMarginRebateRateDiv" class="form-group col-md-6">
<label class="formlabel">期初预付金利率</label>
<input type="text" name="InitMarginRebateRate" id="InitMarginRebateRate" value="@(Model.InitMarginRebateRate * 100)" class="text-box" />
<span>%</span>
</div>
<div id="AddToMarginRebateRateDiv" class="form-group col-md-6">
<label class="formlabel">追加预付金利率</label>
<input type="text" name="AddToMarginRebateRate" id="AddToMarginRebateRate" value="@(Model.AddToMarginRebateRate * 100)" class="text-box" />
<span>%</span>
</div>
}
@if (PS.Config.Is山西固收)
{
@if (Model.Type != "品种")
{
<div id="LongInitMarginRateDiv" class="form-group col-md-6">
<label class="formlabel">多头期初预付金</label>
<input type="text" name="LongInitMarginRate" id="LongInitMarginRate" value="@(Model.LongInitMarginRate * 100)" class="text-box" />
<span>%</span>
</div>
<div id="ShortInitMarginRateDiv" class="form-group col-md-6">
<label class="formlabel">空头期初预付金</label>
<input type="text" name="ShortInitMarginRate" id="ShortInitMarginRate" value="@(Model.ShortInitMarginRate * 100)" class="text-box" />
<span>%</span>
</div>
}
else
{
<div id="InitMarginRebateRateDiv" class="form-group col-md-6">
<label class="formlabel">期初预付金利率</label>
<input type="text" name="InitMarginRebateRate" id="InitMarginRebateRate" value="@(Model.InitMarginRebateRate * 100)" class="text-box" />
<span>%</span>
</div>
<div id="AddToMarginRebateRateDiv" class="form-group col-md-6">
<label class="formlabel">追加预付金利率</label>
<input type="text" name="AddToMarginRebateRate" id="AddToMarginRebateRate" value="@(Model.AddToMarginRebateRate * 100)" class="text-box" />
<span>%</span>
</div>
}
}
</div>
<div class="form-buttons">
@MyControls.Btn("保存", "saveMarginRate()")
@@ -4,8 +4,7 @@
var pageObj = new
{
canEdit = CurUser.基础参数管理.互换预付金率修改,
curTabIndex = Context.Request.Query["tab"].ToString().TrimToNull() ?? "1",
isShanZheng=PS.Config.Is山西固收
curTabIndex = Context.Request.Query["tab"].ToString().TrimToNull() ?? "1"
};
ViewData["tab-active-" + pageObj.curTabIndex] = "active";
}
@@ -36,9 +35,6 @@
}
<div class="searchdiv">
@Html.MyAceDropdownInput("ClientId", "客户名称", ClientDataModel.GetAllClient(), true, true, null, false)
@if(!PS.Config.Is山西固收){
@Html.MyAceDropdownInput("VarietyId", "品种名", varietyController.GetAllvarietyCode(), true, true, null, false)
}
@MyControls.SearchBtn()
@if (CurUser.基础参数管理.互换预付金率修改)
{
@@ -52,17 +48,11 @@
<li class="nav-item">
<a class="nav-link @(ViewData["tab-active-1"])" data-toggle="tab" href="#jqgridDiv1" title="互换预付金">互换预付金</a>
</li>
<li class="nav-item">
<a class="nav-link @(ViewData["tab-active-2"])" data-toggle="tab" href="#jqgridDiv2" title="定义文件预付金">定义文件预付金</a>
</li>
</ul>
<div class="tab-content">
<div id="jqgridDiv1" class="tab-pane @(ViewData["tab-active-1"])">
<table id='listGrid1' class='scroll' cellpadding='0' cellspacing='0'></table><div id='pagerGrid1'></div>
</div>
<div id="jqgridDiv2" class="tab-pane @(ViewData["tab-active-2"])">
<table id='listGrid2' class='scroll' cellpadding='0' cellspacing='0'></table><div id='pagerGrid2'></div>
</div>
</div>
</div>
@@ -48,7 +48,6 @@
<div class="search-left">
@Html.MyAceDropdownInput("WarnningType", "提醒类型", TradeSwapMarginMonitorModel.GetWarnningTypes())
@Html.MyAceDropdownInput("ClientId", "客户名称", ClientDataModel.GetAllClient())
@Html.MyAceDropdownInput("SwapType", "互换类型", ClientDataModel.GetClientSwapType())
@MyControls.SearchBtn()
@MyControls.Btn("导出", "execExport()")
+1 -4
View File
@@ -92,7 +92,6 @@
<select v-model="trade.StructureType" v-on:change="changeStructureType" :disabled="trade.id>0">
<option value="普通债券类收益互换">普通债券类收益互换</option>
<option value="普通收益互换">普通收益互换</option>
<option value="定义文件型债券收益互换" disabled>定义文件型债券收益互换</option>
<option value="多空组合" disabled>多空组合</option>
</select>
</div>
@@ -335,9 +334,7 @@
<select v-model="item.InterestMode" v-on:change="changeInterestMode(item)">
<option value="9">标的期初全价</option>
<option value=1>固定值</option>
<option value=2 v-if="trade.StructureType!='定义文件型债券收益互换'">合约名义本金规模</option>
<option value=7 v-if="trade.StructureType=='定义文件型债券收益互换'">多头存续名义本金</option>
<option value=8 v-if="trade.StructureType=='定义文件型债券收益互换'">空头存续名义本金</option>
<option value=2>合约名义本金规模</option>
</select>
</td>
<td>
@@ -1,109 +0,0 @@
@{
ViewBag.Title = "每日估值报告";
ViewBag.Menu = "结算财务-每日估值报告";
Layout = "~/Views/Shared/_MainLayout.cshtml";
var pageObj = new
{
EndTime = ViewBag.EndTime?.ToString(),
StartTime = ViewBag.StartTime?.ToString(),
valueDate = valuedateBLL.ValueDate.ToString("yyyy-MM-dd"),
configcolumn = configcolumn_data.定义文件互换估值,
StructureType = ViewBag.StructureType
};
}
@section CSS{
<link href="~/Style/Css/TradeMarketReport.css" rel="stylesheet" />
<style>
.chosen-container {
width: 250px !important;
}
.chosen-container .chosen-drop {
width: 250px !important;
}
#ValueDateFrom, #ValueDate {
width: 152px !important;
font-size: 1rem !important;
}
.ui-jqgrid{
margin: 0 !important;
}
.data-error {
background-color: #EE7280 !important;
}
</style>
}
@section JS{
<script src="~/Scripts/app/tradeHelper.js?v=@HtmlUtil.JsVersion"></script>
<script type="text/javascript">
var page = @Json.Serialize(pageObj);
if ("@ViewBag.ParentFlag" == "True")
$("#ParentFlag").attr("checked", true);
else
$("#ParentFlag").attr("checked", false);
</script>
<script src="~/Scripts/app/swaptrade/TradeMarketReport_DmaEodPosition.js?v=@HtmlUtil.JsVersion"></script>
}
<div class="searchdiv">
@Html.MyAceDropdownInput("ClientId", "客户名称", ClientDataModel.GetAllClient(), false, true, null, false)
@Html.CheckBox("ParentFlag", false) @Html.Label(null,"包含子级", new { @style = "font-size:12px;" })
@Html.ShortInput("ValueDateFrom", "起始日期:")
@Html.ShortInput("ValueDate", "结束日期:")
@MyControls.SearchBtn()
@if (CurUser.结算管理_每日估值报告邮件发送)
{
@MyControls.Btn("配置报告", "PopDesc()")
@MyControls.Btn("发送报告", "SendReport()")
}
</div>
<br />
<fieldset id="fieldsetgbox_listGrid" style="margin-bottom: 20px;">
<div class="tabbable">
<ul id="myTab" class="nav nav-tabs nav-main">
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport")'>账户状况</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_EodPosition")' id="positionTab">互换估值</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="#" id="dmapositionTab">定义文件互换估值</a>
</li>
@* <li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_PositionDetailsSwap")' id="positionSwapTab">互换持仓明细</a>
</li>*@
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_BalanceStatement")'>资金明细</a>
</li>
@if (!PS.Config.Is申万)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_Collateral")'>质押记录</a>
</li>
}
<div style="width:30px;display:inline;margin-left: 20px;" onclick="showChiCang();return false;">
<img src="~/Images/configure.png" />
</div>
</ul>
</div>
<div id="tableContent" class="yc-panel my-0 p-0">
@Html.Raw(JqGridSimple.OutTable())
</div>
</fieldset>
<fieldset id="fieldsetgbox_listGrid" class="ml-3">
<span style="color:gray">
@Html.Raw(DBCacheManager.Single.GetStr(CacheTable.DingShiDesc))
</span>
</fieldset>
@@ -72,28 +72,20 @@
<li class="nav-item">
<a class="nav-link active" href="#" id="positionTab">互换估值</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_DmaEodPosition")' id="dmapositionTab">定义文件互换估值</a>
</li>
@* <li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_PositionDetailsSwap")' id="positionSwapTab">互换持仓明细</a>
</li>*@
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_BalanceStatement")'>资金明细</a>
</li>
@if (!PS.Config.Is申万)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_Collateral")'>质押记录</a>
</li>
}
<div style="width:30px;display:inline;margin-left: 20px;" onclick="showChiCang();return false;">
<img src="~/Images/configure.png" />
</div>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_Collateral")'>质押记录</a>
</li>
</ul>
<div style="width:30px;display:inline;margin-left: 20px;" onclick="showChiCang();return false;">
<img src="~/Images/configure.png" />
</div>
</div>
<div id="tableContent" class="yc-panel my-0 p-0">
@Html.Raw(JqGridSimple.OutTable())
@@ -36,10 +36,10 @@
<script src="~/Scripts/app/tradeHelper.js?v=@HtmlUtil.JsVersion"></script>
<script type="text/javascript">
var page = @Json.Serialize(pageObj);
if ("@ViewBag.ParentFlag" == "True")
$("#ParentFlag").attr("checked", true);
else
$("#ParentFlag").attr("checked", false);
if ("@ViewBag.ParentFlag" == "True")
$("#ParentFlag").attr("checked", true);
else
$("#ParentFlag").attr("checked", false);
</script>
<script src="~/Scripts/app/swaptrade/TradeMarketReport_HistoricalPositionSwapFlow.js?v=@HtmlUtil.JsVersion"></script>
}
@@ -59,37 +59,28 @@
<br />
<fieldset id="fieldsetgbox_listGrid" style="margin-bottom: 20px;">
<div class="tabbable">
<ul id="myTab" class="nav nav-tabs nav-main">
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport")'>账户状况</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_EodPosition")' id="positionTab">互换估值</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_DmaEodPosition")' id="dmapositionTab">定义文件互换估值</a>
</li>
@* <li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_PositionDetailsSwap")' id="positionSwapTab">互换持仓明细</a>
</li>*@
<li class="nav-item">
<a class="nav-link active" href="#" id="historySwapTab">互换交易流水</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_BalanceStatement")'>资金明细</a>
</li>
@if (!PS.Config.Is申万)
{
<div class="tabbable">
<ul id="myTab" class="nav nav-tabs nav-main">
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport")'>账户状况</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_EodPosition")' id="positionTab">互换估值</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="#" id="historySwapTab">互换交易流水</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_BalanceStatement")'>资金明细</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_Collateral")'>质押记录</a>
</li>
}
</ul>
<div style="width:30px;display:inline;margin-left: 20px;" onclick="showChiCang();return false;">
<img src="~/Images/configure.png" />
</div>
</ul>
</div>
</div>
<div id="tableContent" class="yc-panel my-0 p-0">
@Html.Raw(JqGridSimple.OutTable())
@@ -1,111 +0,0 @@
@{
ViewBag.Title = "每日估值报告";
ViewBag.Menu = "结算财务-每日估值报告";
Layout = "~/Views/Shared/_MainLayout.cshtml";
var pageObj = new
{
EndTime = ViewBag.EndTime?.ToString(),
StartTime = ViewBag.StartTime?.ToString(),
valueDate = valuedateBLL.ValueDate.ToString("yyyy-MM-dd"),
configcolumn = configcolumn_data.持仓明细
};
}
@section CSS{
<link href="~/Style/Css/TradeMarketReport.css" rel="stylesheet" />
<style>
.chosen-container {
width: 250px !important;
}
.chosen-container .chosen-drop {
width: 250px !important;
}
#ValueDateFrom, #ValueDate {
width: 152px !important;
font-size: 1rem !important;
}
.ui-jqgrid {
margin: 0 !important;
}
</style>
}
@section JS{
<script src="~/Scripts/app/tradeHelper.js?v=@HtmlUtil.JsVersion"></script>
<script type="text/javascript">
var page = @Json.Serialize(pageObj);
if ("@ViewBag.ParentFlag" == "True")
$("#ParentFlag").attr("checked", true);
else
$("#ParentFlag").attr("checked", false);
</script>
<script src="~/Scripts/app/swaptrade/TradeMarketReport_PositionSwapFlow.js?v=@HtmlUtil.JsVersion"></script>
}
<div class="searchdiv">
@Html.MyAceDropdownInput("ClientId", "客户名称", ClientDataModel.GetAllClient(), false, true, null, false)
@Html.CheckBox("ParentFlag", false) @Html.Label(null,"包含子级", new { @style = "font-size:12px;" })
@Html.ShortInput("ValueDateFrom", "起始日期:")
@Html.ShortInput("ValueDate", "结束日期:")
@MyControls.SearchBtn()
@if (CurUser.结算管理_每日估值报告邮件发送)
{
@MyControls.Btn("配置报告", "PopDesc()")
@MyControls.Btn("发送报告", "SendReport()")
}
</div>
<br />
<fieldset id="fieldsetgbox_listGrid" style="margin-bottom: 20px;">
<div class="tabbable">
<ul id="myTab" class="nav nav-tabs nav-main">
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport")'>账户状况</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_EodPosition")' id="positionTab">互换估值</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_DmaEodPosition")' id="dmapositionTab">定义文件互换估值</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="#" id="positionSwapTab">互换持仓明细</a>
</li>
@if (PS.Config.IsGuoJun || PS.Config.Is山西固收)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwap")' id="historySwapTab">互换历史交易</a>
</li>
}
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_BalanceStatement")'>资金明细</a>
</li>
@if (!PS.Config.Is申万)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_Collateral")'>质押记录</a>
</li>
}
<div style="width:30px;display:inline;margin-left: 20px;" onclick="showChiCang();return false;">
<img src="~/Images/configure.png" />
</div>
</ul>
</div>
<div id="tableContent" class="yc-panel my-0 p-0">
@Html.Raw(JqGridSimple.OutTable())
</div>
</fieldset>
<fieldset id="fieldsetgbox_listGrid" class="ml-3">
<span style="color:gray">
@Html.Raw(DBCacheManager.Single.GetStr(CacheTable.DingShiDesc))
</span>
</fieldset>
+2 -2
View File
@@ -3,8 +3,8 @@
ViewBag.Title = "用户信息 | 编辑";
Layout = "~/Views/Shared/_InfoLayout.cshtml";
bool isUserEdit = (CurUser.系统管理.用户新增 && Model.Id == 0) || CurUser.系统管理.用户修改;
var accountPostName = PS.Config.Is山西固收 ? "对冲交易询价对象" : "客户经理";
var traderName = PS.Config.Is山西固收 ? "非对冲交易询价对象" : "交易员";
var accountPostName = "对冲交易询价对象";
var traderName = "非对冲交易询价对象";
}
<style type="text/css">
#AccountPost_chosen {
@@ -24,7 +24,6 @@
IsAutoSealAndUploadFiles = YLErp.PS.GetErpConfig().IsAutoSealAndUploadFiles,
IsZheQi = PS.Config.Is浙期,
IsAutoSealAfterGeneratedBook = PS.GetErpConfig().IsAutoSealAfterGeneratedBook,
IsShanxiGushou = PS.Config.Is山西固收,
canGenerate = CurUser.结算管理_交易确认书生成,
canSendEmail = CurUser.结算管理_交易确认书邮件发送
};
@@ -59,10 +58,6 @@
@Html.MyAceDropdownInput("ClientId", "客户名称", ClientDataModel.GetAllClient())
@Html.MyAceDropdownInput("AssetId", "簿记账户", AssetunitController.GetClientassetunit())
@Html.MyAceDropdownInput("GroupId", "簿记账户组", AssetUnitModel.GetAllAssetUnitGroupItem())
@if (!PS.Config.Is山西固收)
{
@Html.MyAceDropdownInput("TradeTypes", "结构类型", GlobalData.GetTradeTypes(tradeTypes, true))
}
<div class="search-group">
<span class="search-label">标的代码</span>
@@ -13,7 +13,6 @@
ViewTagPermission = CurUser.客户管理.客户标签查看权限,
isZhaoZheng = YLErp.PS.Config.Company == CompanyEnum.招证,
isDongWu = YLErp.PS.Config.Company == CompanyEnum.东吴,
isShanxiGuShou = YLErp.PS.Config.Is山西固收,
};
}
@section CSS{
@@ -14,7 +14,6 @@
isDongZheng = YLErp.PS.Config.Is润和,
isGuoHai = YLErp.PS.Config.Company == CompanyEnum.国海,
isDongWu = YLErp.PS.Config.Is东吴,
isShanXi = YLErp.PS.Config.Is山西固收,
isHongYuan = YLErp.PS.Config.Is宏源,
showPFE = false,
isChangJiang = YLErp.PS.Config.Company == CompanyEnum.长江,
@@ -154,17 +154,6 @@
@Html.MyAceDropdownInput("CBContractor", "结算报告联系人: ", ClientModelHelper.GetAllcontactype(true))
</div>
</div>
@if (!PS.Config.Is山西固收)
{
<div id="clientDetailTemplate" style="display:inline-flex;margin-top:5px;">
<div id="clientDetail">
@Html.MyAceDropdownInput2("setDetailTemplate", "交易明细模板: ", YLErp.Web.Controllers.tradeController.GetAllTradeDetailTemplate(), false, "默认", true)
</div>
<div id="clientDetailContractor" style="padding-left:30px">
@Html.MyAceDropdownInput("CDContractor", "交易明细联系人: ", ClientModelHelper.GetAllcontactype(true))
</div>
</div>
}
@*@Html.MyAceDropdownInput2("setClientBalanceType","结算报告数据类型",new List<SelectListItem>() {
new SelectListItem(){ Value = "default",Text = "系统默认"},
//new SelectListItem(){ Value = "ClientBalanceGap",Text = "财务增量"},
@@ -174,35 +163,13 @@
</div>
</div>
<div>
@if (PS.Config.Is山西固收)
{
<label style="margin-top: 5px;">
<input type="checkbox" name="HasTradeDetails" checked id="HasTradeDetails" style="display:none;">
<input type="checkbox" name="HasTradeMarketReport" checked id="HasTradeMarketReport"><span class="">结算报告</span>
<select id="TradeMarketReportDateType">
@Html.Raw(GlobalData.GetOptions(new List<string>() { "当日", "当月区间", "全部区间" }))
</select>
</label>
}
else
{
<label style="margin-top: 20px">
<input type="checkbox" name="HasTradeDetails" checked id="HasTradeDetails"><span class="">1:交易明细</span>
<select id="TradeDetailsDateType">
@Html.Raw(GlobalData.GetOptions(new List<string>() { "当日", "当月区间", "全部区间" }))
</select>
</label>
<label style="margin-top: 20px; margin-left: 60px;">
<input type="checkbox" name="HasTradeMarketReport" checked id="HasTradeMarketReport"><span class="">2:结算报告</span>
@if (PS.Config.Company != CompanyEnum.中金)
{
<select id="TradeMarketReportDateType">
@Html.Raw(GlobalData.GetOptions(new List<string>() { "当日", "当月区间", "全部区间" }))
</select>
}
</label>
}
<label style="margin-top: 5px;">
<input type="checkbox" name="HasTradeDetails" checked id="HasTradeDetails" style="display:none;">
<input type="checkbox" name="HasTradeMarketReport" checked id="HasTradeMarketReport"><span class="">结算报告</span>
<select id="TradeMarketReportDateType">
@Html.Raw(GlobalData.GetOptions(new List<string>() { "当日", "当月区间", "全部区间" }))
</select>
</label>
</div>
@@ -305,20 +305,8 @@
<h3>报告内容:</h3>
<div class="send-content-item">
<lable>账户状况:</lable><input class="check-input" type="checkbox" name="sendcontent" value="账户状况" />
@if (PS.Config.Is山西固收)
{
<lable>互换估值:</lable><input class="check-input" type="checkbox" name="sendcontent" value="互换估值" />
<lable>定义文件互换估值:</lable>
<input class="check-input" type="checkbox" name="sendcontent" value="定义文件互换估值" />
@*<lable>互换持仓明细:</lable><input class="check-input" type="checkbox" name="sendcontent" value="互换持仓明细" />*@
<lable>互换交易流水:</lable><input class="check-input" type="checkbox" name="sendcontent" value="互换交易流水" />
}
else
{
<lable>持仓明细:</lable><input class="check-input" type="checkbox" name="sendcontent" value="持仓明细" />
<lable>历史交易:</lable><input class="check-input" type="checkbox" name="sendcontent" value="历史交易" />
}
<lable>互换估值:</lable><input class="check-input" type="checkbox" name="sendcontent" value="互换估值" />
<lable>互换交易流水:</lable><input class="check-input" type="checkbox" name="sendcontent" value="互换交易流水" />
<lable>资金明细:</lable><input class="check-input" type="checkbox" name="sendcontent" value="资金明细" />
<lable>质押记录:</lable><input class="check-input" type="checkbox" name="sendcontent" value="质押记录" />
</div>
@@ -117,18 +117,8 @@
<h3>报告内容:</h3>
<span class="send-content-item">
<lable>账户状况:</lable><input class="check-input" type="checkbox" name="sendcontent" value="账户状况" />
@if (PS.Config.Is山西固收)
{
<lable>互换估值:</lable><input class="check-input" type="checkbox" name="sendcontent" value="互换估值" />
<lable>定义文件互换估值:</lable><input class="check-input" type="checkbox" name="sendcontent" value="定义文件互换估值" />
@* <lable>互换持仓明细:</lable><input class="check-input" type="checkbox" name="sendcontent" value="互换持仓明细" />*@
<lable>互换交易流水:</lable><input class="check-input" type="checkbox" name="sendcontent" value="互换交易流水" />
}
else
{
<lable>持仓明细:</lable><input class="check-input" type="checkbox" name="sendcontent" value="持仓明细" />
<lable>历史交易:</lable><input class="check-input" type="checkbox" name="sendcontent" value="历史交易" />
}
<lable>互换估值:</lable><input class="check-input" type="checkbox" name="sendcontent" value="互换估值" />
<lable>互换交易流水:</lable><input class="check-input" type="checkbox" name="sendcontent" value="互换交易流水" />
<lable>资金明细:</lable><input class="check-input" type="checkbox" name="sendcontent" value="资金明细" />
<lable>质押记录:</lable><input class="check-input" type="checkbox" name="sendcontent" value="质押记录" />
</span>
@@ -68,60 +68,19 @@
<li class="nav-item">
<a class="nav-link active" href="#">账户状况</a>
</li>
@if (PS.Config.Is山西固收)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_EodPosition")' id="positionTab">互换估值</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_DmaEodPosition")' id="dmapositionTab">定义文件互换估值</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_PositionDetails")' id="positionTab">持仓明细</a>
</li>
}
@if (PS.Config.IsGuoJun)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_PositionSwapFlow")' id="positionSwapTab">互换持仓明细</a>
</li>
}
else
{
@*<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_PositionDetailsSwap")' id="positionSwapTab">互换持仓明细</a>
</li>*@
}
@if (!PS.Config.Is山西固收)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPosition")' id="historyTab">历史交易</a>
</li>
}
@if (PS.Config.IsGuoJun||PS.Config.Is山西固收)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwap")' id="historySwapTab">互换历史交易</a>
</li>
}
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_EodPosition")' id="positionTab">互换估值</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_BalanceStatement")'>资金明细</a>
</li>
@if (!PS.Config.Is申万)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_Collateral")'>质押记录</a>
</li>
}
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_Collateral")'>质押记录</a>
</li>
</ul>
</div>
<div class="yc-panel mt-0">
@@ -26,9 +26,9 @@
const calcDate = "@valuedateBLL.ValueDate.ToString("yyyy-MM-dd")";
</script>
<script type="text/javascript">
var isShenWan = "@YLErp.PS.Config.Is申万" == "True";
var g_grid = {};
$(function() {
var isShenWan = "@YLErp.PS.Config.Is申万" == "True";
var g_grid = {};
$(function () {
var PostData = {};
//控件选择时的触发事件
main.setTradeDatePicker("", "#ValueDate", calcDate, function (selectedDate) {
@@ -87,7 +87,7 @@
postData: PostData,
afterInsertRow: AfterInsertRow,
onSelectRow: rowclick,
onSelectAll:allRowSelect,
onSelectAll: allRowSelect,
ondblClickRow: rowdblclick,
colModel: colModelGrid,
pager: jQuery('#pagerGrid'),
@@ -137,7 +137,7 @@
}
//console.log(cellValue+";");
var url = "/trade/tradeFileManagement?tradeNumber=" + cellValue;
var showNumber = "<a href=\"javascript:void(0)\" title=\"查看客户文件\" onclick='main.open(\"客户文件\",\"{1}\")'>{0}</a>".template(cellValue,url);
var showNumber = "<a href=\"javascript:void(0)\" title=\"查看客户文件\" onclick='main.open(\"客户文件\",\"{1}\")'>{0}</a>".template(cellValue, url);
return showNumber;
}
@@ -274,17 +274,17 @@
var moneySwapSum = arguments[0].Sum == null ? "" : arguments[0].Sum.MoneySwapSum;
var moneyOtherSum = arguments[0].Sum == null ? "" : arguments[0].Sum.MoneyOtherSum;
var moneySwapMarginSum = arguments[0].Sum == null ? "" : arguments[0].Sum.MoneySwapMarginSum;
jgrid.footerData("set", { HappenDate: "合计:", Direction: main.toNumberExcludingNaN(moneySum), MoneyInOut: moneyInOutSum, MoneyPrice: moneyPriceSum, MoneyUnwindExer: moneyUnwindExerSum, MoneyCoupon: moneyCouponSum, MoneySwap: moneySwapSum, MoneyOther: moneyOtherSum, MoneySwapMargin:moneySwapMarginSum });
jgrid.footerData("set", { HappenDate: "合计:", Direction: main.toNumberExcludingNaN(moneySum), MoneyInOut: moneyInOutSum, MoneyPrice: moneyPriceSum, MoneyUnwindExer: moneyUnwindExerSum, MoneyCoupon: moneyCouponSum, MoneySwap: moneySwapSum, MoneyOther: moneyOtherSum, MoneySwapMargin: moneySwapMarginSum });
} else {
$(".ui-jqgrid-sdiv").hide();
}
$(window).off('resize.jqGrid');
$(window).off('resize.jqGrid');
}
function showExerciseMode(cellValue, options, rowObject) {
if ("American" == rowObject.ExerciseMode || "American" == rowObject.trade.ExerciseMode) {
return "美式";
} else if ("European" == rowObject.ExerciseMode || "European" == rowObject.trade.ExerciseMode){
} else if ("European" == rowObject.ExerciseMode || "European" == rowObject.trade.ExerciseMode) {
return "欧式";
}
}
@@ -292,7 +292,7 @@
function starttradeView(id, tradeType) {
if (tradeType.indexOf("收益互换") >= 0) {
main.open("查看交易", "/swaptrade2/tradeView/?enid=" + id + "&isOnlyCloseButton=true", { area: ['90%', '90%'] });
}else{
} else {
let srcurl = "/trade/tradeView/?fromZiJinMingXi=1&isOnlyCloseButton=true&enid=" + id;
main.open("查看交易(机构方向)", srcurl, { area: ['1260px', '100%'], scrollbar: false });
}
@@ -583,76 +583,35 @@
@Html.ShortInput("ValueDateFrom", "起始日期:")
@Html.ShortInput("ValueDate", "结束日期:")
@MyControls.SearchBtn()
@if (CurUser.结算管理_每日估值报告邮件发送)
@if (CurUser.结算管理_每日估值报告邮件发送)
{
@MyControls.Btn("配置报告", "PopDesc()")
@MyControls.Btn("发送报告", "SendReport()")
}
</div>
<br />
<fieldset id="fieldsetgbox_listGrid" style="margin-bottom: 20px;">
<div class="tabbable">
<ul id="myTab" class="nav nav-tabs nav-main">
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport")'>账户状况</a>
</li>
@if (PS.Config.Is山西固收)
{
<div class="tabbable">
<ul id="myTab" class="nav nav-tabs nav-main">
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport")'>账户状况</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_EodPosition")' id="positionTab">互换估值</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_DmaEodPosition")' id="dmapositionTab">定义文件互换估值</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_PositionDetails")' id="positionTab">持仓明细</a>
</li>
}
@if (PS.Config.IsGuoJun)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_PositionSwapFlow")' id="positionSwapTab">互换持仓明细</a>
</li>
}
else
{
@*<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_PositionDetailsSwap")' id="positionSwapTab">互换持仓明细</a>
</li>*@
}
@if (!PS.Config.Is山西固收)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPosition")' id="historyTab">历史交易</a>
</li>
}
@if (PS.Config.IsGuoJun || PS.Config.Is山西固收)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwap")' id="historySwapTab">互换历史交易</a>
<a class="nav-link active" href="#">资金明细</a>
</li>
}
<li class="nav-item">
<a class="nav-link active" href="#">资金明细</a>
</li>
@if (!PS.Config.Is申万)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_Collateral")'>质押记录</a>
</li>
}
</ul>
</div>
</ul>
</div>
<div id="tableContent" class="yc-panel my-0 p-0">
@Html.Raw(JqGridSimple.OutTable())
</div>
@@ -389,58 +389,19 @@
<ul id="myTab" class="nav nav-tabs nav-main">
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport")'>账户状况</a>
</li>
@if (PS.Config.Is山西固收)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_EodPosition")' id="positionTab">互换估值</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_DmaEodPosition")' id="dmapositionTab">定义文件互换估值</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_PositionDetails")' id="positionTab">持仓明细</a>
</li>
}
@if (PS.Config.IsGuoJun)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_PositionSwapFlow")' id="positionSwapTab">互换持仓明细</a>
</li>
}
else
{
@* <li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_PositionDetailsSwap")' id="positionSwapTab">互换持仓明细</a>
</li>*@
}
@if (!PS.Config.Is山西固收)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPosition")' id="historyTab">历史交易</a>
</li>
}
@if (PS.Config.IsGuoJun || PS.Config.Is山西固收)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwap")' id="historySwapTab">互换历史交易</a>
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_BalanceStatement")'>资金明细</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="#">质押记录</a>
</li>
}
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_BalanceStatement")'>资金明细</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="#">质押记录</a>
</li>
</ul>
</div>
<div id="tableContent" class="yc-panel my-0 p-0">
@@ -973,18 +973,9 @@
<li class="nav-item">
<a class="nav-link active" href="#" id="historyTab">历史交易</a>
</li>
@if (PS.Config.IsGuoJun||PS.Config.Is山西固收)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwap")' id="historySwapTab">互换历史交易</a>
</li>
}
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_BalanceStatement")'>资金明细</a>
</li>
@@ -77,18 +77,9 @@
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPosition")' id="historyTab">历史交易</a>
</li>
@if (PS.Config.IsGuoJun || PS.Config.Is山西固收)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwap")' id="historySwapTab">互换历史交易</a>
</li>
}
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_BalanceStatement")'>资金明细</a>
</li>
@@ -66,18 +66,9 @@
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPosition")' id="historyTab">历史交易</a>
</li>
@if (PS.Config.IsGuoJun || PS.Config.Is山西固收)
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwap")' id="historySwapTab">互换历史交易</a>
</li>
}
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_BalanceStatement")'>资金明细</a>
</li>
+7 -23
View File
@@ -156,31 +156,15 @@
}
</table>
</div>
if (Model.TrialSource == 1 && Model.TrialStatus != 0 && (PS.Config.Company == CompanyEnum.天风 || valuedateBLL.SystemDate.SpecialOperateForTrade == 1))
if (!string.IsNullOrWhiteSpace(ViewBag?.LastStatusStr))
{
if (!string.IsNullOrWhiteSpace(ViewBag?.LastStatusStr))
{
<div class="row-content" id="lastStatus">
<span class="quota-content" style="color: red;">上次试算结果:@(ViewBag?.LastStatusStr),请填写说明</span>
</div>
}
<div class="row-content" id="remark">
<span class="status" style="width: 20%;text-align: center;">说明:</span>
<textarea id="remark"></textarea>
</div>
}
else if (Model.TrialStatus != 0 && PS.Config.Is山西固收)
{
if (!string.IsNullOrWhiteSpace(ViewBag?.LastStatusStr))
{
<div class="row-content" id="lastStatus">
<span class="quota-content" style="color: red;">上次试算结果:@(ViewBag?.LastStatusStr),请填写说明</span>
</div>
}
<div class="row-content" id="remark">
<span class="status" style="width: 20%;text-align: center;">说明:</span>
<textarea id="remark"></textarea>
<div class="row-content" id="lastStatus">
<span class="quota-content" style="color: red;">上次试算结果:@(ViewBag?.LastStatusStr),请填写说明</span>
</div>
}
<div class="row-content" id="remark">
<span class="status" style="width: 20%;text-align: center;">说明:</span>
<textarea id="remark"></textarea>
</div>
}
</div>
+4
View File
@@ -109,6 +109,9 @@
<None Update="App_Docs\导出模板\结算报告标准模板_湘财.xlsx">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="App_Docs\导出模板\结算报告模板_浙商.xlsx">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="App_Docs\导出模板\结算报告模板_山西固收.xlsx">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
@@ -174,6 +177,7 @@
<_AppFiles Remove="App_Docs\导出模板\浮动利率默认设置导出模板.xlsx" />
<_AppFiles Remove="App_Docs\导出模板\结算报告标准模板_湘财.xlsx" />
<_AppFiles Remove="App_Docs\导出模板\结算报告模板_山西固收.xlsx" />
<_AppFiles Remove="App_Docs\导出模板\结算报告模板_浙商.xlsx" />
<_AppFiles Remove="App_Docs\导出模板\结算报告模板_湘财.xlsx" />
<_AppFiles Remove="App_Docs\导入模板\导入限额指标.xlsx" />
<_AppFiles Remove="App_Docs\导入模板\批量对冲波动率模板.xlsx" />
@@ -162,44 +162,12 @@ function getColModelGrid() {
name: 'ProtocolSignDate', label: '商品类签署日期', index: 'ProtocolSignDate', width: 150, align: 'center', formatter: 'date', hidden: true, frozen: true
}, {
name: 'RightProtocolSignDate', label: '权益类签署日期', index: 'RightProtocolSignDate', width: 150, align: 'center', formatter: 'date', hidden: true, frozen: true
}, {
name: 'Level', label: '客户等级', index: 'Level', width: 60, align: 'center', optionHide: page.isShanXi, hidden: page.isShanXi, frozen: true
}, {
name: 'CreditRatingName', label: '资信等级', index: 'CreditRatingName', width: 60, align: 'center', optionHide: page.isShanXi, hidden: page.isShanXi, frozen: true
}, {
name: 'TotalCredit', label: '授信额度', index: 'TotalCredit', width: 120, align: 'right', optionHide: page.isShanXi, hidden: page.isShanXi, formatter: 'number', frozen: true
}, {
name: 'CustomerNature1', label: '客户性质1', index: 'CustomerNature1', width: 130, align: 'center', optionHide: page.isShanXi, hidden: page.isShanXi, frozen: true
}, {
name: 'CustomerNature2', label: '客户性质2', index: 'CustomerNature2', width: 130, align: 'center', optionHide: page.isShanXi, hidden: page.isShanXi, frozen: true
}, {
name: 'CustomerManager', label: '客户经理', index: 'CustomerManager', width: 90, align: 'center', optionHide: page.isShanXi, hidden: page.isShanXi, frozen: true
}, {
name: 'SalesDepartment', label: '营业部', index: 'SalesDepartment', width: 90, align: 'center', optionHide: page.isShanXi, hidden: page.isShanXi, frozen: true
}, {
name: 'Seller', label: '营业部销售', index: 'Seller', width: 90, align: 'center', optionHide: page.isShanXi, hidden: page.isShanXi, frozen: true
}, {
name: 'SwapTradeTypeStr', label: '收益互换交易类别', index: 'SwapTradeTypeStr', width: 130, align: 'center', optionHide: !page.isShanXi, hidden: !page.isShanXi, frozen: true
},{
name: 'licenseCodes', label: '统一社会信用代码', index: 'licenseCodes', width: 100, align: 'right', optionHide: !page.isDongWu, hidden: !page.isDongWu, frozen: true
}, {
name: 'IsSmallAndMicroEnterpriseas', label: '是否中小微', index: 'IsSmallAndMicroEnterpriseas', width: 100, align: 'right', optionHide: !page.isDongWu, hidden: !page.isDongWu, frozen: true
}, {
name: 'IsmicroCorp', label: '是否上市', index: 'IsmicroCorp', width: 100, align: 'right', optionHide: !page.isDongWu, hidden: !page.isDongWu, frozen: true
},{
name: 'NetFundSumString', label: '客户净资产', index: 'NetFundSumString', width: 100, align: 'right', optionHide: !page.isDongWu, hidden: !page.isDongWu, formatter: 'number', frozen: true
name: 'licenseCodes', label: '统一社会信用代码', index: 'licenseCodes', width: 100, align: 'right', frozen: true
},{
name: 'TotalTradeCount', label: '交易总数', index: 'TotalTradeCount', width: 120, align: 'center', formatter: main.toInt, sorttype: 'number'
}, {
name: 'TotalNotionalPrincipal', label: '名义本金总额', index: 'TotalNotionalPrincipal', width: 150, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'BuyCount', label: '买权交易数', index: 'BuyCount', width: 120, align: 'center', formatter: main.toInt, optionHide: page.isShanXi, hidden: page.isShanXi, sorttype: 'number'
}, {
name: 'BuyNominalPrincipalOfTransaction', label: '买权名义本金', index: 'BuyNominalPrincipalOfTransaction', width: 150, align: 'right', formatter: 'number', optionHide: page.isShanXi, hidden: page.isShanXi, sorttype: 'number'
}, {
name: 'SellCount', label: '卖权交易数', index: 'SellCount', width: 120, align: 'center', formatter: main.toInt, optionHide: page.isShanXi, hidden: page.isShanXi, sorttype: 'number'
}, {
name: 'SellNominalPrincipalOfTransaction', label: '卖权名义本金', index: 'SellNominalPrincipalOfTransaction', width: 150, align: 'right', formatter: 'number', optionHide: page.isShanXi, hidden: page.isShanXi, sorttype: 'number'
}, {
name: 'TransactionPenNumber', label: '当日交易数', index: 'TransactionPenNumber', width: 120, align: 'center', formatter: main.toInt, sorttype: 'number'
}, {
@@ -230,14 +198,8 @@ function getColModelGrid() {
name: 'RoundedPositionPnl', label: '持仓盈亏', index: 'RoundedPositionPnl', width: 120, align: 'right', value: '0', formatter: 'number', optionHide: !page.isPvRounded, hidden: !page.isPvRounded, sorttype: 'number'
}, {
name: 'RoundedDaliyPnl', label: '当日盈亏', index: 'RoundedDaliyPnl', width: 120, align: 'right', value: '0', formatter: 'number', optionHide: !page.isPvRounded, hidden: !page.isPvRounded, sorttype: 'number'
}, {
name: 'CreditRiskLoss', label: '信用风险亏损', index: 'CreditRiskLoss', width: 100, align: 'right', formatter: 'number', optionHide: page.isShanXi, hidden: page.isShanXi, sorttype: 'number'
}, {
name: 'Exposure', label: '信用风险敞口', index: 'Exposure', width: 100, align: 'right', formatter: 'number', optionHide: page.isShanXi, hidden: page.isShanXi, sorttype: 'number'
}, {
name: 'NetFund', label: '出金入金', index: 'NetFund', width: 100, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'Coupon', label: '票息', index: 'Coupon', width: 100, align: 'right', formatter: 'number', optionHide: page.isShanXi, hidden: page.isShanXi, sorttype: 'number'
}, {
name: 'OptionPremiumSwap', label: '互换成交收支', index: 'OptionPremiumSwap', width: 100, align: 'right', formatter: 'number', sorttype: 'number'
}, {
@@ -254,18 +216,6 @@ function getColModelGrid() {
name: 'RoundedTotalAmount', label: '总资产', index: 'RoundedTotalAmount', width: 100, align: 'right', formatter: 'number', optionHide: !page.isPvRounded, hidden: !page.isPvRounded, sorttype: 'number'
}, {
name: 'HoldingDeposit', label: '预付金占用', index: 'HoldingDeposit', width: 120, align: 'right', formatter: holdingDepositFormat, sorttype: 'number'
}, {
name: 'HoldingDepositA', label: '团队A占用', index: 'HoldingDepositA', width: 120, align: 'right', formatter: holdingDepositFormat, optionHide: !page.isHongYuan, hidden: !page.isHongYuan, sorttype: 'number'
}, {
name: 'HoldingDepositB', label: '团队B占用', index: 'HoldingDepositB', width: 120, align: 'right', formatter: holdingDepositFormat, optionHide: !page.isHongYuan, hidden: !page.isHongYuan, sorttype: 'number'
}, {
name: 'SpanValue', label: 'Span预付金', index: 'SpanValue', width: 120, align: 'right', formatter: 'number', optionHide: !page.isDongZheng, hidden: !page.isDongZheng, sorttype: 'number'
}, {
name: 'MySideMargin', label: '预付金占用(本方)', index: 'MySideMargin', width: 120, align: 'right', formatter: 'number', optionHide: !page.isGuoJun, hidden: !page.isGuoJun, sorttype: 'number'
}, {
name: 'OtherSideMargin', label: '预付金(对手方向)', index: 'OtherSideMargin', width: 120, align: 'right', formatter: 'number', optionHide: !page.showOtherSideMargin, hidden: !page.showOtherSideMargin, sorttype: 'number'
}, {
name: 'DeltaMargin', label: 'Delta预付金', index: 'DeltaMargin', width: 120, align: 'right', formatter: 'number', optionHide: !page.isGuoJun, hidden: !page.isGuoJun, sorttype: 'number'
}, {
name: 'AvailableAmount', label: '可用资金', index: 'AvailableAmount', width: 120, align: 'right', formatter: 'number', sorttype: 'number'
}, {
@@ -278,60 +228,24 @@ function getColModelGrid() {
name: 'PositionTradePayableFund', label: '应付未了结交易款', index: 'PositionTradePayableFund', width: 100, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'PayableFund', label: '应付资金总额', index: 'PayableFund', width: 100, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'SellerPositionPremium', label: '应收权利金', index: 'SellerPositionPremium', width: 100, align: 'right', formatter: 'number', optionHide: !page.isChangJiang, hidden: !page.isChangJiang, sorttype: 'number'
}, {
name: 'BuyerPositionMargin', label: '应收预付金', index: 'BuyerPositionMargin', width: 100, align: 'right', formatter: 'number', optionHide: !page.isChangJiang, hidden: !page.isChangJiang, sorttype: 'number'
}, {
name: 'Receivable', label: '应收账款', index: 'Receivable', width: 100, align: 'right', formatter: ReceivableCalc, optionHide: !page.isChangJiang, hidden: !page.isChangJiang, sorttype: 'number'
}, {
name: 'DesirableFund', label: '可取资金', index: 'DesirableFund', width: 100, align: 'right', formatter: 'number', sorttype: 'number'
}, {
name: 'EndDesirableFund', label: '期末结存_权利金后付', index: 'EndDesirableFund', width: 100, align: 'right', formatter: 'number', optionHide: !page.isDongWu, hidden: !page.isDongWu, sorttype: 'number'
}, {
name: 'WorstCastClientPayableRatio', label: '预付金覆盖比例', index: 'WorstCastClientPayableRatio', width: 100, align: 'right', formatter: 'number', optionHide: !page.isDongWu, hidden: !page.isDongWu, sorttype: 'number'
},
{
name: 'clientEquity', label: '客户权益', index: 'clientEquity', width: 100, align: 'right', optionHide: !page.isDongWu, hidden: !page.isDongWu, formatter: 'number',sorttype: 'number'
}, {
name: 'LastDayPositionPremiumNetCashs', label: '持仓权利金', index: 'LastDayPositionPremiumNetCashs', width: 100, align: 'right', formatter: 'number', optionHide: !page.isDongWu, hidden: !page.isDongWu, sorttype: 'number'
}, {
name: 'availableNetFundSumsString', label: '规模/净资产', index: 'availableNetFundSumsString', width: 100, align: 'right', optionHide: !page.isDongWu, hidden: !page.isDongWu
},
{
name: 'CreditUsedValue', label: '授信使用金额', index: 'CreditUsedValue', width: 100, align: 'right', formatter: 'number', sorttype: 'number'
},
{
name: 'NetFund2', label: '客商余额', index: 'NetFund2', width: 120, align: 'right', formatter: KeShangYuEr, sortable: false, hidden: !isHaiTong, optionHide: !isHaiTong, sorttype: 'number'
}, {
name: 'PFE', label: '潜在风险暴露', index: 'PFE', width: 120, align: 'right', formatter: 'number', sortable: false, hidden: !page.showPFE, optionHide: !page.showPFE, sorttype: 'number'
}, {
name: 'EAD', label: '违约风险暴露', index: 'EAD', width: 120, align: 'right', formatter: 'number', sortable: false, hidden: !page.isChangJiang, optionHide: !page.isChangJiang, sorttype: 'number'
}, {
name: 'AvailableStockEqvNotional', label: '可用名义本金规模', index: 'AvailableStockEqvNotional', width: 180, align: 'right', formatter: 'number', hidden: !page.UseClientStockEqvNotional, optionHide: !page.UseClientStockEqvNotional, sorttype: 'number'
}, {
name: 'CreditExposure', label: '信用风险敞口', index: 'CreditExposure', width: 120, align: 'right', formatter: 'number', hidden: !page.isGuoHai, optionHide: !page.isGuoHai, sorttype: 'number'
}
];
if (page.isShanXi) {
colModelGrid.push({
name: 'LastSettlemetTime',
label: '系统收盘时间',
index: 'LastSettlemetTime',
width: 150,
align: 'center',
sortable: false,
formatter: "datetime"
}, {
name: 'LastHTSettlemetTime',
label: '衡泰清算时间',
index: 'LastHTSettlemetTime',
width: 150,
align: 'center',
sortable: false,
formatter: "datetime"
});
}
colModelGrid.push({
name: 'LastSettlemetTime',
label: '系统收盘时间',
index: 'LastSettlemetTime',
width: 150,
align: 'center',
sortable: false,
formatter: "datetime"
});
if (page.ViewTagPermission) {
colModelGrid.push({
name: 'Tags',
@@ -148,24 +148,14 @@ const jqgrid1Mgr = (new function () {
name: 'EncryptId', hidden: true, optionHide: true
}, {
name: 'ClientName', label: '客户名称', index: 'ClientId'
}, {
name: 'Type', label: '类型', index: 'Type', hidden: page.isShanZheng, optionHide: page.isShanZheng
}, {
name: 'VarietyCode', label: '品种代码', index: 'VarietyId', hidden: page.isShanZheng, optionHide: page.isShanZheng
}, {
name: 'VarietyName', label: '品种名称', index: 'VarietyId', hidden: page.isShanZheng, optionHide: page.isShanZheng
}, {
name: 'ValueDate', label: '生效日期', index: 'ValueDate', formatter: 'date'
}, {
name: 'InitMarginRate', label: '期初预付金', index: 'InitMarginRate', formatter: percentFormat
}}, {
name: 'InitMarginRebateRate', label: '期初预付金利率', index: 'InitMarginRebateRate', formatter: percentFormat,
}, {
name: 'ClosePositionLine', label: '平仓线', index: 'ClosePositionLine', formatter: percentFormat, hidden: page.isShanZheng, optionHide: page.isShanZheng
}, {
name: 'WarningLine', label: '预警线', index: 'WarningLine', formatter: percentFormat, hidden: page.isShanZheng, optionHide: page.isShanZheng
}, {
name: 'InitMarginRebateRate', label: '期初预付金利率', index: 'InitMarginRebateRate', formatter: percentFormat, hidden: !page.isShanZheng, optionHide: !page.isShanZheng
}, {
name: 'AddToMarginRebateRate', label: '追加预付金利率', index: 'AddToMarginRebateRate', formatter: percentFormat, hidden: !page.isShanZheng, optionHide: !page.isShanZheng
name: 'AddToMarginRebateRate', label: '追加预付金利率', index: 'AddToMarginRebateRate', formatter: percentFormat,
}, {
name: 'OptName', label: '操作人', index: 'OptName'
}, {
@@ -175,48 +175,6 @@ var getColModelGrid = function () {
}
}
}
}, {
name: 'FrontDeskCharge',
label: '现券对冲交易费用<i class="fa fa-question" title="仅适用于定义文件客户" aria-hidden="true"></i>',
width: 160,
align: 'center',
formatter: function (cellValue, options, rowObject) {
if (rowObject.FrontDeskCharge) {
if (rowObject.FrontDeskChargeIsPercent == true) {
return formatThousandsRate(rowObject.FrontDeskCharge);
} else {
return otcformat.trading.umprice(rowObject.FrontDeskCharge);
}
} else {
if (rowObject.FrontDeskCharge === 0) {
return otcformat.trading.umprice(0);
}
else {
return "";
}
}
}
}, {
name: 'BackDeskCharge',
label: '现券对冲结算费用<i class="fa fa-question" title="仅适用于定义文件客户" aria-hidden="true"></i>',
width: 160,
align: 'center',
formatter: function (cellValue, options, rowObject) {
if (rowObject.BackDeskCharge) {
if (rowObject.BackDeskChargeIsPercent == true) {
return formatThousandsRate(rowObject.BackDeskCharge);
} else {
return otcformat.trading.umprice(rowObject.BackDeskCharge);
}
} else {
if (rowObject.BackDeskCharge === 0) {
return otcformat.trading.umprice(0);
}
else {
return "";
}
}
}
}, {
name: 'opt_name',
label: '操作人',
@@ -177,12 +177,7 @@ const vue = new Vue({
methods: {
changeStructureType() {
this.trade.StockEqvNotional = 0;
if (this.trade.StructureType == "定义文件型债券收益互换") {
this.trade.trade_extend.ExtendObj.NeedOpenFee = true;
this.trade.trade_extend.ExtendObj.FlowBookMode = 2;
} else {
this.trade.trade_extend.ExtendObj.FlowBookMode = 0;
}
this.trade.trade_extend.ExtendObj.FlowBookMode = 0;
},
//变更初始预付金收取方向
changeInitialMargin() {
@@ -406,9 +406,6 @@ function __initJqGrid() {
TradeDateStart: $("#DateFromTradeDate").val(),
TradeDateEnd: $("#DateToTradeDate").val()
};
if (!page.IsShanxiGushou) {
PostData.TradeTypes = $("#TradeTypes").val().join(',')
}
if (page.IsAutoSealAndUploadFiles) {
PostData.SealResults = $("#SealResults").val();
PostData.SealDateStart = $("#DateFromSealDate").val();
@@ -918,9 +915,6 @@ function SearchClick(isSearchclick) {
listGrid.appendPostData({ OptDateStart: $("#DateFromOptDate").val() });
listGrid.appendPostData({ OptDateEnd: $("#DateToOptDate").val() });
listGrid.appendPostData({ ValidState: $("#ValidState").val() });
if (!page.IsShanxiGushou) {
listGrid.appendPostData({ TradeTypes: $("#TradeTypes").val().join(",") });
}
var reqTradeStatus = main.isEmpty($("#TradeStatus").val()) || $("#TradeStatus").val().includes("")
? page.reqTradeStatus
: $("#TradeStatus").val().join(",");
@@ -52,11 +52,9 @@ namespace RealTimeCalcPositionService
var clients= clientDb.client.Where(x=>x.SwapTradeType==0).ToList();
//系统交易日
var valuedate = valuedateBLL.ValueDate;
//获取根据系统时间
var lastBalanceDate = EodOperationBase.GetLastSettlementDate(valuedate);
foreach (var client in clients)
{
var cb = ClientAssetDataService.GetClientLatestBalance(null, lastBalanceDate, client.id, false, false, false);
var cb = ClientAssetDataService.GetClientLatestBalance(null, valuedate, client.id, false, false, false);
cb.AvailableAmount = cb.AmountFund + cb.TotalCredit + cb.PayableMargin + cb.GuaranteesTotalAmount;
var obj = new ClientBalanceForTrsResponse
{
@@ -1,121 +0,0 @@
using DocumentFormat.OpenXml.Drawing.Charts;
using Newtonsoft.Json;
using Org.BouncyCastle.Ocsp;
using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Linq;
using YLErp;
using YLErp.Abstract;
using YLErp.BLL.Eod;
using YLErp.Cache;
using YLErp.Helpers;
using YLErp.Model;
using YLErp.Modules;
using YLErp.Modules.ClientModule;
namespace RealTimeCalcPositionService
{
public class ClientRealBalanceTask : IHostedService, IDisposable
{
private readonly IYcLogger _logger;
private IKafkaProduce kafkaProduceHelper;
private string onRspAccountCapitalTopicTopic = string.Empty;
private readonly CancellationTokenSource _cts = new CancellationTokenSource();
private Dictionary<int,string> clientDic=new Dictionary<int, string>();
private IYLCache _yLCache;
public ClientRealBalanceTask(IKafkaProduce kafkaProduce, IYLCache yLCache)
{
_logger = LogFactory.GetLogger("ClientRealBalanceTask");
onRspAccountCapitalTopicTopic = Environment.GetEnvironmentVariable("KafkaConfig_OnRspAccountCapitalTopic");
kafkaProduceHelper = kafkaProduce;
_yLCache= yLCache;
}
public void Dispose()
{
_cts.Dispose();
}
public Task StartAsync(CancellationToken cancellationToken)
{
_logger.Info("ClientBalanceTask task is starting.");
Task.Run(() => ExecuteTask(_cts.Token), _cts.Token);
return Task.CompletedTask;
}
private void ExecuteTask(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
try
{
var clientSettles = new RealTimeClientBanlanceService(new OptUserInfo(0, "实时客户资金服务", OptUserFrom.Service)).GetDMABalances();
foreach (var cb in clientSettles)
{
cb.AvailableAmount = cb.AmountFund + cb.TotalCredit + cb.PayableMargin + cb.GuaranteesTotalAmount;
Result result = new Result();
try
{
var obj = new ClientBalanceForTrsResponse
{
TotalAmountTotal = cb.RoundedTotalAmount,
AvailableAmount = Math.Round(cb.AvailableAmount, 2),
PositionPv = cb.RoundedPositionPv,
PositionPnl = cb.RoundedPositionPnl,
DaliyPnl = Math.Round(cb.DaliyPnl, 2),
ClientId = cb.ClientId,
ClientType = cb.ClientType,
Credit=cb.TotalCredit
};
result.success = true;
result.obj = obj;
if (_yLCache!=null)
{
_yLCache.StringSet<ClientBalanceForTrsResponse>("ClientBalance:"+ cb.ClientId,obj);
}
}
catch (Exception ex)
{
result.msg = ex.Message;
result.success = false;
}
string resultStr = JsonConvert.SerializeObject(result);
string newEncryStr= DataProtectHelper.Encrypt(resultStr);
bool needProduce= false;
if (clientDic.TryGetValue(cb.ClientId,out string encryStr))
{
if (encryStr!= newEncryStr)
{
needProduce = true;
clientDic[cb.ClientId]= newEncryStr;
}
}
else
{
clientDic.Add(cb.ClientId, newEncryStr);
needProduce = true;
}
if (needProduce)
{
kafkaProduceHelper.Produce(onRspAccountCapitalTopicTopic, resultStr);
}
}
Thread.Sleep(3000);
}
catch (Exception ex)
{
_logger.Error(ex, "实时客户资金服务异常:" + ex.Message);
}
}
}
public async Task StopAsync(CancellationToken cancellationToken)
{
_logger.Info("ClientBalanceTask task is stopping.");
_cts.Cancel();
await Task.CompletedTask;
}
}
}
@@ -28,7 +28,6 @@ internal class Program
services.AddHostedService<ClientPosiTask>();
services.AddHostedService<Worker>();
services.AddHostedService<ClientNoDMABalanceTask>();
services.AddHostedService<ClientRealBalanceTask>();
}).ConfigureLogging(logging =>
{
logging.ClearProviders();
+1 -8
View File
@@ -21,8 +21,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "项目文档", "项目文
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SharedWebApi", "Framework\SharedWebApi\SharedWebApi.shproj", "{C7E0F300-16D5-438B-97A2-79DC2311D1D5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YLErp.Plugins.ShanXi", "Plugins\YLErp.Plugins.ShanXi\YLErp.Plugins.ShanXi.csproj", "{5E572CCD-CE2D-4832-B0B5-42B4153B94FA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YLErp.Resources", "Framework\YLErp.Resources\YLErp.Resources.csproj", "{FEDA115A-88ED-42FE-A5FF-0AAE229DC4CF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YLErp.Core", "Framework\YLErp.Core\YLErp.Core.csproj", "{206EBAE4-AB3E-4F09-9428-DDC3E64CFC42}"
@@ -35,7 +33,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YLErp.Jobs", "Framework\YLE
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YLErp.Cache", "Framework\YLErp.Cache\YLErp.Cache.csproj", "{5665673C-1157-444F-AABC-2A873D8E4703}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YLErp.Plugins.ZheShang", "Plugins\YLErp.Plugins.ZheShang\YLErp.Plugins.ZheShang.csproj", "{C94D2467-B0E8-48CA-B60D-CD660B73AE90}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YLErp.Plugins.ZheShang", "Plugins\YLErp.Plugins.ZheShang\YLErp.Plugins.ZheShang.csproj", "{C94D2467-B0E8-48CA-B60D-CD660B73AE90}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -60,10 +58,6 @@ Global
{BBD14483-0498-4AA7-8731-B237C059B75E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E0324D4F-614E-40F2-A62D-87C1718AB466}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E0324D4F-614E-40F2-A62D-87C1718AB466}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5E572CCD-CE2D-4832-B0B5-42B4153B94FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5E572CCD-CE2D-4832-B0B5-42B4153B94FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5E572CCD-CE2D-4832-B0B5-42B4153B94FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5E572CCD-CE2D-4832-B0B5-42B4153B94FA}.Release|Any CPU.Build.0 = Release|Any CPU
{FEDA115A-88ED-42FE-A5FF-0AAE229DC4CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FEDA115A-88ED-42FE-A5FF-0AAE229DC4CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FEDA115A-88ED-42FE-A5FF-0AAE229DC4CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -99,7 +93,6 @@ Global
GlobalSection(NestedProjects) = preSolution
{B454A6FB-CF27-4B00-AEDC-BA1F0ED2F6D1} = {15F732CE-6C51-48F0-BC50-3BEC018460E5}
{C7E0F300-16D5-438B-97A2-79DC2311D1D5} = {F315B5D3-F4FE-43E5-AF22-AF92978A71BE}
{5E572CCD-CE2D-4832-B0B5-42B4153B94FA} = {5981434D-792E-4528-AFC8-7EB8AFD9F80C}
{FEDA115A-88ED-42FE-A5FF-0AAE229DC4CF} = {F315B5D3-F4FE-43E5-AF22-AF92978A71BE}
{206EBAE4-AB3E-4F09-9428-DDC3E64CFC42} = {F315B5D3-F4FE-43E5-AF22-AF92978A71BE}
{BCFAC147-BBBA-4097-A147-3E7D43239BBF} = {F315B5D3-F4FE-43E5-AF22-AF92978A71BE}