Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2

This commit is contained in:
tengyufan
2026-07-28 14:57:35 +08:00
6 changed files with 31 additions and 95 deletions
+1 -17
View File
@@ -1,7 +1,4 @@
using BaseOUDAL;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using System.ComponentModel.DataAnnotations.Schema;
using System.Reflection;
using YLErp.Core.DBModels;
using YLErp.Model;
@@ -17,19 +14,6 @@ namespace YLErp.BLL
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var clientBalanceMoneyConverter = new ValueConverter<double?, decimal?>(
value => value.HasValue ? Convert.ToDecimal(value.Value) : null,
value => value.HasValue ? (double)value.Value : null);
var clientBalanceDaily = modelBuilder.Entity<ClientBalanceDaily>();
foreach (var property in typeof(ClientBalanceDaily).GetProperties()
.Where(property => property.PropertyType == typeof(double?)
&& property.GetCustomAttribute<NotMappedAttribute>() == null))
{
clientBalanceDaily.Property<double?>(property.Name)
.HasConversion(clientBalanceMoneyConverter)
.HasColumnType("decimal(20,6)");
}
modelBuilder.Entity<AppConfig>().HasKey(c => new { c.PGroup, c.PName });
modelBuilder.Entity<ExchangeOptionVol>().HasKey(c => new { c.ValueDate, c.OptionCode });
modelBuilder.Entity<dicForTranslation>().HasKey(c => new { c.From, c.Key });
@@ -430,4 +414,4 @@ namespace YLErp.BLL
public DbSet<glms_risk_variable> glms_risk_variable { get; set; }
}
}
}
@@ -372,16 +372,16 @@ namespace YLErp.Modules.SwapModule
exportModel.PositionType = item.PositionType==1?"多头":"空头";
exportModel.UnderlyingCode = item.UnderlyingCode;
exportModel.MatuirityDate = item.MatuirityDate.OtcFormatDate();
exportModel.TradingAmountAvg = item.TradingAmountAvg.OtcFormatMoney(grouping: false);
exportModel.TradingAmountFeeAvg = item.TradingAmountFeeAvg.OtcFormatMoney(grouping: false);
exportModel.TradingAmountAvg = item.TradingAmountAvg.OtcFormat(OtcFormatFlag.umprice);
exportModel.TradingAmountFeeAvg = item.TradingAmountFeeAvg.OtcFormat(OtcFormatFlag.umprice);
exportModel.Quantity = item.Quantity.OtcFormatMoney(false, 4);
exportModel.TradingAmount = item.TradingAmount.OtcFormatMoney(false, 2);
exportModel.TradingAmount = item.TradingAmount.OtcFormatMoney(false, 4);
exportModel.ContractSize = item.ContractSize.ToString();
exportModel.TradingFee = item.TradingFee.OtcFormatMoney(false, 2);
exportModel.TradingFeePending = item.TradingFeePending.OtcFormatMoney(false, 2);
exportModel.DividendPending = item.DividendPending.OtcFormatMoney(false, 2);
exportModel.MarkClosePnl = item.MarkClosePnl.OtcFormatMoney(false, 2);
exportModel.DividendIn = item.DividendIn.OtcFormatMoney(false, 2);
exportModel.TradingFee = item.TradingFee.OtcFormatMoney(false, 4);
exportModel.TradingFeePending = item.TradingFeePending.OtcFormatMoney(false, 4);
exportModel.DividendPending = item.DividendPending.OtcFormatMoney(false, 4);
exportModel.MarkClosePnl = item.MarkClosePnl.OtcFormatMoney(false, 4);
exportModel.DividendIn = item.DividendIn.OtcFormatMoney(false, 4);
exportModel.OptLog = item.OptLog;
exportModel.InitYtm = item.InitYtm;
list.Add(exportModel);
+2 -2
View File
@@ -12,7 +12,7 @@
</script>
<script src="~/front/calendar?v=@(HtmlUtil.JsVersion)"></script>
<script src="~/Scripts/app/tradeHelper.js?v=@HtmlUtil.JsVersion"></script>
<script src="~/Scripts/app/swaptrade/eventlist.js?v=@HtmlUtil.JsVersion&eventPriceFormatV=2"></script>
<script src="~/Scripts/app/swaptrade/eventlist.js?v=@HtmlUtil.JsVersion"></script>
}
<div id="eventVue">
<div class="searchdiv">
@@ -28,4 +28,4 @@
</div>
<form target="_blank" method="post" id="exportForm" action="">
<input type="hidden" name="" value="" />
</form>
</form>
@@ -168,9 +168,7 @@ function colModelGridEodPosition() {
index: 'eodPosition.PosiNetPrice',
width: 90,
align: 'center',
formatter: PriceFormat,
exportFormatter: ExportPriceNineDecimalFormat,
exportNumberFormat: '0.000000000'
formatter: PriceFormat
}, {
name: 'eodPosition.PosiGrossPrice',
label: '期初价格-不含费',
@@ -178,8 +176,6 @@ function colModelGridEodPosition() {
width: 90,
align: 'center',
formatter: PriceFormat,
exportFormatter: ExportPriceNineDecimalFormat,
exportNumberFormat: '0.000000000'
}, {
name: 'eodPosition.PosiQuantity',
label: '名义数量',
@@ -747,7 +743,7 @@ function exportVisibleColumns() {
var tabName = page.tabIndex == 2 ? '框架合约' : '日终持仓';
var fileName = '日终持仓风险_互换_' + tabName + (dateStr ? '_' + dateStr : '');
if (page.tabIndex != 2) {
exportEodPositionRows(jgrid, fileName);
main.exportVisibleColumnsToExcel(jgrid, fileName, null);
return;
}
@@ -774,26 +770,6 @@ function exportVisibleColumns() {
});
}
function exportEodPositionRows(jgrid, fileName) {
var exportPostData = $.extend({}, GetPostData(), {
page: jgrid.jqGrid('getGridParam', 'page'),
rows: jgrid.jqGrid('getGridParam', 'rowNum'),
sidx: jgrid.jqGrid('getGridParam', 'sortname'),
sord: jgrid.jqGrid('getGridParam', 'sortorder')
});
$.ajax({
url: queryurl,
type: 'POST',
dataType: 'json',
traditional: true,
data: exportPostData
}).done(function (result) {
main.exportVisibleColumnsToExcel(jgrid, fileName, null, result && result.rows ? result.rows : []);
}).fail(function () {
main.message && main.message('导出失败,无法获取日终持仓数据');
});
}
function getVisibleEodSwapBusinessColumnNames(jgrid) {
var colModel = jgrid.jqGrid('getGridParam', 'colModel') || [];
return colModel.filter(function (col) {
@@ -827,14 +803,6 @@ function PriceFormat(cellValue, options, rowObject) {
return otcformat.trading.umprice(cellValue);
}
function ExportPriceNineDecimalFormat(cellValue) {
if (cellValue === null || cellValue === undefined || cellValue === '') {
return '';
}
var price = Number(cellValue);
return isFinite(price) ? price.toFixed(9) : cellValue;
}
function RealizedPnlFormat(cellValue, options, rowObject) {
return otcformat.trading.tradePrice(cellValue);
}
@@ -176,31 +176,36 @@ var getColModelGrid = function () {
label: '成交全价',
width: 90,
align: 'center',
formatter: EventTwoDecimalFormat
formatter: otcformat.trading.umprice
}, {
name: 'TradingAmountFeeAvg',
label: '成交全价(含费)',
width: 90,
align: 'center',
formatter: EventTwoDecimalFormat
formatter: otcformat.trading.umprice
}, {
name: 'TradingAmountNetAvg',
label: '成交净价',
width: 90,
align: 'center',
formatter: EventTwoDecimalFormat
formatter: otcformat.trading.umprice
}, {
name: 'InitYtm',
label: '成交收益率',
width: 90,
align: 'center',
formatter: EventNineDecimalFormat
formatter: function (cellValue, options, rowObject) {
if (cellValue == null) {
return "";
}
return otcformat.trading.premiumRateP(cellValue);
}
}, {
name: 'TradingAmountNetFeeAvg',
label: '成交净价(含费)',
width: 90,
align: 'center',
formatter: EventTwoDecimalFormat
formatter: otcformat.trading.umprice
}, {
name: 'Quantity',
label: '成交数量/张数',
@@ -212,7 +217,7 @@ var getColModelGrid = function () {
label: '成交金额(元)',
width: 90,
align: 'center',
formatter: EventTwoDecimalFormat
formatter: otcformat.trading.umprice
}, {
name: 'ContractSize',
label: '乘数',
@@ -225,31 +230,31 @@ var getColModelGrid = function () {
label: '交易费用佣金',
width: 90,
align: 'center',
formatter: EventTwoDecimalFormat
formatter: otcformat.trading.umprice
}, {
name: 'TradingFeePending',
label: '待结算交易费用佣金',
width: 90,
align: 'center',
formatter: EventTwoDecimalFormat
formatter: otcformat.trading.umprice
}, {
name: 'DividendPending',
label: '待结算分红收益',
width: 90,
align: 'center',
formatter: EventTwoDecimalFormat
formatter: otcformat.trading.umprice
}, {
name: 'MarkClosePnl',
label: '浮动端平仓盈亏·浮动',
width: 160,
align: 'center',
formatter: EventTwoDecimalFormat
formatter: otcformat.trading.umprice
}, {
name: 'DividendIn',
label: '浮动端平仓盈亏·分红',
width: 160,
align: 'center',
formatter: EventTwoDecimalFormat
formatter: otcformat.trading.umprice
}
];
return col;
@@ -257,23 +262,6 @@ var getColModelGrid = function () {
var colModelGrid = getColModelGrid();
function EventTwoDecimalFormat(cellValue) {
if (cellValue === null || cellValue === undefined || cellValue === '') {
return '';
}
var price = Number(cellValue);
return isFinite(price) ? price.toFixed(2) : cellValue;
}
function EventNineDecimalFormat(cellValue) {
if (cellValue === null || cellValue === undefined || cellValue === '') {
return '';
}
var price = Number(cellValue);
return isFinite(price) ? price.toFixed(9) : cellValue;
}
function gridComplete() {
$('.ui-jqgrid-bdiv', '#gbox_listGrid').floatingScroll();
}
+2 -6
View File
@@ -1236,9 +1236,7 @@ main.exportVisibleColumnsToExcel = function (jgrid, fileName, groupConfig, expor
exportCols.forEach(function (col) {
var colIndex = colModel.indexOf(col);
var rawValue = $.jgrid.getAccessor(row, col.name);
var formattedValue = typeof col.exportFormatter === 'function'
? col.exportFormatter(rawValue, row)
: gridElement && gridElement.formatter
var formattedValue = gridElement && gridElement.formatter
? gridElement.formatter(rowIndex + 1, rawValue, colIndex, row, 'add')
: rawValue;
formattedRow[col.name] = $('<div>').html(formattedValue == null ? '' : String(formattedValue)).text().replace(/\u00a0/g, '');
@@ -1265,9 +1263,7 @@ main.exportVisibleColumnsToExcel = function (jgrid, fileName, groupConfig, expor
for (var c = 0; c < exportCols.length; c++) {
var val = rows[i][exportCols[c].name];
if (val === undefined || val === null) val = '';
var numberFormat = exportCols[c].exportNumberFormat;
var style = numberFormat ? ' style="mso-number-format:\'' + escapeXml(String(numberFormat)) + '\';"' : '';
html += '<td' + style + '>' + escapeXml(String(val)) + '</td>';
html += '<td>' + escapeXml(String(val)) + '</td>';
}
html += '</tr>';
}