Commit Graph
170 Commits
Author SHA1 Message Date
hjhan 8cade8ae53 fix: 修复日终价格新增后查不出(picker过滤LaunchState、新记录日期默认今天、列表新增改三选一)
- EodPriceController.BuildUnderlyingOptions 增加 LaunchState=="1" 过滤,与列表查询对齐,避免新增非激活标的被 inner join 永久过滤

- 三个编辑页新建分支将 valuation_date/ValueDate 默认设为今天,落在列表默认查询窗口内

- eodStockPriceEdit 补全 StockPicker 下拉(此前股票无picker,UnderlyingCode为空hidden导致查不出),删除上传无用的状态字段

- eodPriceList.js openEodPriceAdd 改为三选一(债券/期货/股票)打开各自编辑页空enid,替代已废弃的 EodPriceAdd 搜索页
2026-07-13 12:34:39 +08:00
hjhan 36d8909fe0 feat: 日终价格管理新增统一录入表单(按标的类型自动落表)
列表页新增"新增"按钮(结算管理-日终价格修改 权限),打开统一新增页;选标的后按 UnderlyingInstrumentType 自动显示对应字段组,保存时路由到正确的 Save 方法落到对应表;字段与上传 Excel 对齐,避免冗余字段。
2026-07-13 11:00:46 +08:00
hjhan 0bef986e10 fix(valuation): 修复折叠分组后表头消失无法展开的问题
问题:折叠一个分组时,该组所有列被 hideCol 隐藏后,buildGroupHeaders
因 visibleColsInGroup 为空而 continue 跳过该分组,导致分组表头不渲染,
用户失去展开入口(表现为"收起后整组列和表头都不见了")。

修复:
- applyGroupHeaders:折叠时保留该组首列作为"展开锚点"(只隐藏 slice(1)),
  确保 setGroupHeaders 仍能为该分组渲染表头单元格
- buildGroupHeaders:折叠态下 numberOfColumns=1,表头显示 ▶ 可点击展开;
  被 setcolumnChooser 主动隐藏的分组仍跳过(不影响)
- 展开时恢复该组全部列

测试场景:
1. 互换估值Tab折叠任一分组 → 表头保留(▶),点击可展开恢复
2. 框架合约Tab同上
3. 全部折叠 → 每组各保留1列锚点,页面仍有列可操作
2026-07-08 09:08:08 +08:00
hjhan a617ed6d93 feat(valuation): 互换估值Tab 接入分组折叠 + 簿记筛选 + 导出
对应需求《估值模块V1》模块二:每日估值报告 - 互换估值Tab

改动:
1. 新增 eodSwapValuationGroupConfig 分组配置(4组:基本信息/利率与规模/价格/收益)
   现有列顺序已天然满足分组连续性,无需重排,风险最低
2. gridComplete 在 setcolumnChooser 完成后初始化可折叠分组表头
   保留原有异常行标红(dataError)逻辑
3. 新增簿记账户筛选(需求3.1):cshtml 加 BookId 下拉,searchPositionDetials 传 BookId
   未选择时传空,后端返回该对手方下全部账户合约
4. 新增「导出互换估值」按钮(需求3.2+4.2),走通用 exportVisibleColumnsToExcel
   文件名:{对手方}_每日估值报告_互换估值_{估值日}.xls
   与现有 DownLoadReport(整份报告)独立,互不影响

缺失字段(TODO,待后端确认):期间分红、预付金系列(利率/利息/期初/追加)、TRS估值

测试要点:簿记筛选生效、分组表头显示、折叠交互、异常行标红不受影响、导出可用
2026-07-08 08:56:34 +08:00
hjhan d40b561a42 feat(valuation): 框架合约Tab 导出可见列Excel + 通用导出工具
对应需求《估值模块V1》4.2:导出当前筛选后可见列数据,格式与前端一致。

改动:
1. utils.js 新增通用导出工具 exportVisibleColumnsToExcel(jgrid, fileName)
   - 零依赖,基于 HTML table + ms-excel MIME
   - 只导出当前可见列(与折叠状态联动:收起的分组列不导出)
   - 与后端模板导出(SettlementReport/EodPositionRisksQueryService)口径独立,互不干扰
2. EodPositionRisks.cshtml 恢复导出按钮(原 exportTrade 被注释,现改为 exportVisibleColumns)
3. EodPositionRisks.js 新增 exportVisibleColumns(),文件名含Tab名+结算日期

测试要点:导出列=页面可见列、列名=表头名、数据=当前筛选数据、折叠的列不导出
2026-07-08 08:53:44 +08:00
hjhan 76af939332 feat(valuation): 框架合约Tab 接入可折叠分组表头 + 字段命名对齐
对应需求《估值模块V1》模块一:日终持仓风险_互换 - 框架合约Tab

改动:
1. colModelGridEodSwap 列按需求2.2分组重排(组内列连续,满足setGroupHeaders要求)
   - 互换类型移至基本信息组(原在末尾)
2. 字段命名对齐需求用词(纯label改动,不改name/index):
   - 合约利率端待实现收益 → 合约利息端待实现收益
   - 预付金字段 → 保证金(收取/支付 初始/维持保证金)
3. 新增 eodSwapGroupConfig 分组配置(7组:基本信息/名义本金/标的市值/浮动端/利息端/保证金/估值与实现收益)
4. gridComplete 在 setcolumnChooser 完成后初始化可折叠分组表头

缺失字段(TODO,待后端确认):
- 标的类型、期间付息/分红、付息方式、合约估值(两口径)

测试要点:框架合约Tab表头分组合并、点击折叠/展开、footer汇总行(DV)正常、列设置功能正常
2026-07-08 08:51:33 +08:00
hjhan 7928000dc6 feat(valuation): 新增通用可折叠分组表头工具 initCollapsibleGroupHeaders
jqGrid 4.5.4 原生 setGroupHeaders 只支持静态合并表头,不支持点击折叠。
本次在 utils.js 新增通用工具函数,为估值模块前端重构提供基础能力:

- initCollapsibleGroupHeaders(jgrid, groupConfig): 生成合并表头 + 点击折叠/展开
- refreshCollapsibleGroupHeaders(jgrid): 列重排/显隐后重建分组边界
- 复用本文件 setcolumnChooser2 已验证的 destroyGroupHeader → 显隐列 → setGroupHeaders 重建模式
- 默认全部展开,折叠态显示 ▶ 展开态显示 ▼
- 与 setcolumnChooser 通过事件委托协调,不依赖 free-jqGrid 商业版

不换库、零全站回归风险。后续提交接入业务页面。
2026-07-08 08:50:14 +08:00
hjhan b3c2fdfe38 test(fe): 补充守卫注释与架构闸门,防新增内联金额计算
- 生产接线处补注释,追溯到具体历史 bug (dcf649f2/20ea93d8/3c5f25a5/f873239a)

- swapCalc.js 注明哪些函数已接入生产、哪些是纯交叉校验规格

- 新增 guard_arch.js 架构闸门:扫描提交新增行,拦截 Vue 组件内联金额计算

- pre-commit hook 串行运行 单元测试 + 架构闸门
2026-07-07 13:26:32 +08:00
hjhan 7f64d48699 test(fe): 接入 SwapCalc 纯计算模块 + 前端精度回归测试
- incomeSwapTrade.js / swapTradeEdit.js 改为调用 SwapCalc.*(缩放/取整/全价推导)

- 新增 fe-tests 守卫:4 个历史 bug 回归 + 8 场景对齐 C# FrontendCalcReference 金标准 + otcformat.js 精度配置守卫

- 新增 .git/hooks/pre-commit 自动运行前端守卫(失败阻断提交)
2026-07-07 12:30:19 +08:00
张名锐 777d492018 Merge remote-tracking branch 'refs/remotes/origin/glms/feature/1.4.2_claer' into glms/feature/1.4.2 2026-07-06 15:25:03 +08:00
张名锐 6835a593b0 feat(swaptrade): 添加收益结算日期验证和限制功能
- 新增 MaxIncomeValueDate 属性用于限制收益结算日期上限
- 实现 parseLocalDate 函数用于解析本地日期格式
- 在前端添加日期选择器的最大日期限制和验证逻辑
- 添加 isAfterMaxIncomeValueDate 和 validateIncomeValueDate 方法进行日期验证
- 在后端添加 GetMaxIncomeValueDate 方法计算最大收益结算日期
- 实现 ValidateIncomeValueDate 对收益结算日期进行服务器端验证
- 添加 NormalizeIncomeUnwindDate 方法统一处理平仓日期
- 在模型中新增 MaxIncomeValueDate 非映射属性用于前端显示
- 更新日期格式化函数确保日期字符串的一致性处理
2026-07-06 15:20:21 +08:00
锦麟 王 f0ad4406c9 Revert ruisu合并进来的代码 2026-07-03 17:41:42 +08:00
锦麟 王 de0e7f791b BugFix 计算中都使用GrossPrice 2026-07-02 20:46:58 +08:00
wjl bfb69c2eae Bugfix 修改字段错误 2026-07-02 19:24:14 +08:00
wjl 6b2ec7c8c1 回退TradingAmountAvg的修改,后续全价(含费)或者全价(不含费)再梳理 2026-07-02 18:50:58 +08:00
锦麟 王 dcf649f27e #EQD-6402 手动互换-保存后价格精度不正确 2026-07-02 17:25:07 +08:00
tengyufan 535eac0f62 fix: 交易日历IB逻辑收窄——仅成交日期默认值使用银行间日历
- 回退 ylotc.calendar.js 至纯CHN,恢复全部日期选择器为证券交易所交易日历
- SwapTrade2Controller 新增 GetBestCountry 按年份判断IB数据是否存在
- 仅成交日期(TradeDate)默认值使用IB优先/CHN回退,开始日期和到期日期保持CHN
- 平仓及其他交易页面日期选择器不再受银行间日历影响
2026-07-02 10:31:47 +08:00
tengyufan c053e36d7f fix(SwapTrade2): 为保证业务不受影响,暂时取消新版互换交易标的按类型筛选,两个标的输入框均返回全部标的
- consUnderlyingFlagNonBond 和 consUnderlyingFlagBond 去掉品种位,仅保留行为位
- 非债券和债券两个输入框不再按 Stock/Fund/CreditBonds 等类型过滤
- 与旧版 SwapTrade 行为对齐:不过滤标的类型,全量返回
2026-07-01 16:19:46 +08:00
tengyufan 5d426b6d3e feat(tradeHelper): SelectFlag新增StockIF、Fund位支持股指期货和基金及基金专户
- flags 新增 StockIF: 1 << (i++)(之前定义但__getPostData漏映射)和 Fund: 1 << (i++)
- __getPostData 新增 StockIF→'StockIF'、Fund→'Fund' 映射
- 修复511380等股指标的/基金标的在新版互换交易下拉框无法检索的问题
2026-07-01 16:18:55 +08:00
tengyufan 570d1339f1 fix(SwapTrade2): 到期日期默认值置空并限制不可早于成交/开始日期
- 移除新增交易时到期日期的默认值(原StartDate+14天),改为空白由用户手工填写
- 到期日期选择器增加mindate限制,不可选择早于成交日期和开始日期的日期
- 联动修正:成交日期或开始日期变化时同步刷新到期日期下限
2026-07-01 15:33:15 +08:00
tengyufan b4ff5f9f10 feat(SwapTrade2): 新增交易默认值填充及日期限制放开
- 成交日期默认前一银行间交易日,放开上限
- 开始日期默认当前系统日期(跳过节假日),放开上限,下限绑定成交日期
- 到期日期保留StartDate+14天默认,下限取max(成交日期,开始日期)
- 交易场所默认"柜台市场"修复(created不再覆盖为空)
- 重置频率默认7(利息端/预付金端/浮动端)
- FR007利率准则默认前一营业日(-1)
- 成交日期变更时自动修正开始日期(+1)和到期日期(+14),跳过节假日
- 开始日期变更时自动修正到期日期(+14)
- 提交校验:开始日期≥成交日期,到期日期≥两者
2026-06-30 18:21:07 +08:00
lisong e7fa48d82e Merge remote-tracking branch 'dest/glms/feature/1.4.2' into feature/p132_74-risk-engine 2026-06-30 09:59:31 +08:00
ruisu 9777698a9a feat:修改互换交易样式以支持展示新风控内容,将rule与application加载前移到系统启动时 2026-06-29 17:29:36 +08:00
锦麟 王 3c5f25a5a0 BugFix FloatPnlSum展示的位数问题 2026-06-29 15:18:46 +08:00
锦麟 王 375ad46b6d BugFix 平仓互换页面展示的盈亏不对 2026-06-29 15:02:37 +08:00
锦麟 王 87671fcece BugFix 平仓互换平仓,导致页面的分红不对 2026-06-26 17:17:55 +08:00
ruisu 0c2a4b3afb feat:打通前后端链路。老风控新风控映射:禁止=》Error,需审批=》RiskWarning(新状态,需二次确认,并记录日志),提示、通过=》Success(提示增加TIpMessage) 2026-06-26 17:01:21 +08:00
锦麟 王 d9fc5965d3 BugFix 系统中MarkCloseValue歧义部分修改 2026-06-26 16:06:13 +08:00
锦麟 王 33fd6f8d41 BugFix 收益互换调整分红方向 2026-06-26 14:12:54 +08:00
锦麟 王 54e8c5cfca BugFix 错误函数 2026-06-26 11:12:32 +08:00
锦麟 王 e484b35415 consumedDividend保持和totalInterest同向 2026-06-26 11:10:53 +08:00
锦麟 王 ab70531f17 MarkClosePnl 不要重复计算分红 2026-06-26 11:03:22 +08:00
tengyufan ff69c9b6e2 Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-06-25 20:00:25 +08:00
tengyufan 7f6bdde521 fix: DV01汇总及合计功能,优化格式化配置
1. YLErpDAL/Modules/RiskModule/QuotaMonitorService.cs
   - 日终版本(QueryEodGlobalFromCalc)恢复互换行DV限额取值

2. YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs
   - SaveEodSwap / UpdateEodSwap 补充 eod_Swap.dv01 汇总
   - SearchEodSwapList 新增DV合计,返回至前端footer

3. YLErpWeb/wwwroot/Scripts/app/swaptrade/EodPositionRisks.js
   - 框架合约tab启用footerrow,展示DV合计
   - 框架合约DV列formatter改为4位小数
2026-06-25 20:00:18 +08:00
锦麟 王 99f7f82835 Merge branch 'glms/feature/1.4.2' of http://git.yiliantech.com/gitlab/otc-dev/zszq-trs into glms/feature/1.4.2 2026-06-25 15:26:44 +08:00
锦麟 王 aadba136c8 平仓计算互换分红利息调整方向 2026-06-25 15:26:40 +08:00
hjhan 276c1c2961 修复互换收益结算期末价不可编辑及刷新图标缺失
ab09cbc9为支持自动互换期间付息,误将期末标的价格改为纯文本不可编辑,
并删除了changeUnderlyingPrice/refreshUnderlyingPrice方法。开发误解了需求:
自动互换默认填上次互换价是后端逻辑,手动互换时期末价应可编辑+刷新(与平仓页一致)。

对齐平仓页(SwapUnwind)恢复:
- incomeSwapTrade.js: 恢复changeUnderlyingPrice、refreshUnderlyingPrice方法
- SwapIncome.cshtml: 期末价列恢复vue-number-input输入框+刷新图标
- SwapDealService.cs/InitIncome: 补充注释说明TradingAmountNetAvg字段
  虽名为期末语义但此处装入期初净价,避免后续混淆
2026-06-25 14:41:55 +08:00
锦麟 王 bc6fed554d 平仓和分红中,后续平仓分红计算不对的问题 2026-06-25 14:33:50 +08:00
hjhan 20ea93d89c 修复互换收益结算期末价被错误缩放及显示问题
a00fe3cc合并etf分支时,误把initDeal中TradingAmountAvg的×100缩放去掉,
导致期末标的价格停留在相对价态(1.02),提交时又被getPriceScale()÷100,
最终swap_flow_event.TradingAmountAvg入库为0.0102,且盈亏计算错误。

对齐平仓页(unwindSwapTrade.js)的正确实现:
- initDeal: TradingAmountAvg = initPosiNetPrice × multiplier 转为界面百分比态
- SwapIncome表格期末价列: 不再经过priceFormat(避免二次×100),直接显示界面态值
2026-06-25 14:04:54 +08:00
锦麟 王 3627f12e10 前端,平仓和收益结算扣除掉已实现分红 2026-06-25 09:40:44 +08:00
吴方海 45173c50c6 分红保留2位小数 2026-06-23 11:02:19 +08:00
吴方海 3520f24253 #EQD-5994 国联民生-【风险管理】TRS合约DV计算统计 2026-06-23 10:48:51 +08:00
吴方海 a00fe3ccaa Merge branch 'glms/feature/1.4.2-etf' into glms/feature/1.4.2
# Conflicts:
#	YLErpWeb/wwwroot/Scripts/app/swaptrade/incomeSwapTrade.js
2026-06-22 13:45:25 +08:00
吴方海 04d3696170 Merge branch 'glms/feature/1.4.2' of http://git.yiliantech.com/gitlab/otc-dev/zszq-trs into glms/feature/1.4.2 2026-06-18 10:33:13 +08:00
吴方海 ab09cbc9ca #EQD-6196 国联民生-收益互换期间付息支持自动支付 2026-06-18 10:33:04 +08:00
zheng.zhang 6a8dd5e344 refactor(tradeEdit): use统一格式化方法处理名义金额 2026-06-17 17:22:12 +08:00
zheng.zhang 375bd4d3dc feat(swaptrade): 新增名义本金数值的四舍五入格式化处理 2026-06-17 16:32:55 +08:00
吴方海 9e50819070 普通收益互换的模板恢复
#EQD-5914 国联民生-债券ETF为标的的TRS业务支持
2026-06-02 16:10:43 +08:00
吴方海 3e650b8f38 期初标的价格(债券的)希望是小数点9位问题 2026-05-28 15:16:32 +08:00
吴方海 f873239af4 #EQD-6090 国联民生:名义本金计算有精度问题 2026-05-28 13:23:36 +08:00