Commit Graph
615 Commits
Author SHA1 Message Date
张名锐 db5dcaf149 refactor(swaptrade): 替换硬编码精度配置为统一的精度管理工具
- 使用 swapPricePrecision 工具替代原有的 otcformat 精度设置
- 在多个页面文件中引入 swapPricePrecision 相关脚本
- 将原有的固定精度配置替换为动态精度获取方法
- 统一金额、数量、利率等字段的格式化处理逻辑
- 优化数据格式化函数,提高数值显示的一致性和准确性
- 移除冗余的硬编码精度参数,简化代码维护复杂度
2026-08-06 09:56:13 +08:00
tengyufan 46316c1400 fix: 恢复互换平仓交易费用按基础费率计算 2026-08-05 18:26:15 +08:00
张名锐 d5837f2de8 fix(swaptrade): 修复平仓比例显示精度问题
- 调整平仓比例显示精度为4位小数
- 修改掉期利率输入格式配置,设置精度为4并保留尾随零
- 确保数值显示的一致性和准确性
2026-08-05 17:52:51 +08:00
lisong 36877744fa Merge remote-tracking branch 'dest/glms/feature/1.4.2' into feature/p132_74-risk-engine 2026-08-05 17:28:20 +08:00
lisong a889925440 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-08-05 17:27:15 +08:00
tengyufan 864a29d6a8 #EQD-6605 国联民生-确认书编号规则调整(不基于甲方乙方判定)
feat: 国联民生收益互换按簿记分类生成交易编号

簿记账户新增“簿记分类”字段,支持代客、融券,新增账户默认代客,历史账户统一初始化为代客
簿记账户分类设为必填,列表、编辑及详情页面同步展示
修改已被交易引用的簿记账户分类时增加二次确认,并提示关联交易数量
国联民生收益互换交易编号不再根据甲乙方判断,改为根据簿记账户分类生成
代客使用数字序号,融券使用字母序号,分别从已有同客户同日编号的最大序号继续递增
保留手工交易编号优先逻辑,标准格式的手工编号参与后续最大序号计算
生成候选编号后检查完整交易编号是否已存在,存在则继续递增
新增簿记分类编号格式、最大序号计算及数字字母序列隔离专项单测
2026-08-05 15:55:01 +08:00
ruisu 8fb3c4392c feat:风控触发时显示应用ID、
新老风控组合校验:
老风控Error/Warning,新风控需审批——点击特批即两边都放行
老风控Error/Warning,新风控禁止——不展示
老风控Error/Warning——展示特批,且只特批老风控。
新增风控流程日志
2026-08-05 14:39:01 +08:00
ruisu 698662101b fix:修复点击“修改”按钮后偶发前端报错的问题 2026-08-05 14:30:42 +08:00
张名锐 9affdf5d41 fix(swap-trade): 修正名义本金小数点精度 2026-08-05 13:44:17 +08:00
hjhan 41de2f6dd6 fix: 放宽 MaxModelBindingCollectionSize 至 1000000 修复互换观察日区间超限报错 2026-08-05 12:29:54 +08:00
张名锐 b3ba762838 Merge branch 'glms/feature/dotnumber' into 'glms/feature/1.4.2'
fix(swap): 修复平仓交易界面金额格式化问题

See merge request otc-dev/zszq-trs!8
2026-08-05 03:28:17 +00:00
张名锐 1458acc030 fix(swap): 修复平仓交易界面金额格式化问题
- 将展期界面的本金、利息、费用等字段格式化方法从inputFormatEqvNotional改为inputFormatCloseAmount
- 新增inputFormatCloseAmount格式化配置,设置精度为2位小数,支持负数显示,保留尾随零
- 统一展期界面各金额输入框的格式化规则,确保数据展示一致性
2026-08-05 11:27:37 +08:00
马冰冰 3b0021d79f Merge branch 'glms/feature/1.4.2-0805' into glms/feature/1.4.2 2026-08-05 10:59:15 +08:00
马冰冰 8689e75223 feature:筛选条件增加资产类型、列表显示增加资产类型 2026-08-05 10:58:29 +08:00
yexuzhong 6ced6ab55d 列宽度调整 2026-08-05 10:26:42 +08:00
张名锐 d55923a1fb feat(swaptrade): 修复交易后付、预付金腿金额 小数点精度问题(2位)
- 新增 inputFormatTradeSinglePriceFixed2 固定精度为2位小数格式
- 更新 InterestPrincipalFix 字段使用固定2位小数格式
- 更新 PosiTradingFeePending 字段使用固定2位小数格式
2026-08-05 10:07:01 +08:00
张名锐 269807cc44 feat(swaptrade): 收益互换界面金额固定两位小数
- 新增 inputFormatInterestAmount 配置对象,精度为2位小数,支持负数显示和尾随零保留
- 在保证金列表中将 InterestAmount 和 InterestFee 字段的格式化从 inputFormatEqvNotional 替换为 inputFormatInterestAmount
- 在利息列表中将 InterestAmount 和 InterestFee 字段的格式化从 inputFormatEqvNotional 替换为 inputFormatInterestAmount
- 保持原有的双向数据绑定和事件监听功能不变
2026-08-05 09:52:22 +08:00
yexuzhong 84ee11a02d 国联启用扩展配置 2026-08-04 11:33:09 +08:00
张名锐 b2c4442772 feat(swaptrade): 利率相关 添加尾随零修剪和数值格式化功能
- 在数字输入组件中添加 trimTailZeros 配置选项
- 修改条件判断逻辑以支持尾随零修剪控制
- 为掉期交易利率添加固定精度格式化功能
- 创建 formatObservationRate 函数用于观察率数值格式化
- 在观察率输入字段中添加失焦时格式化事件处理
- 更新视图中的利率显示格式化方式
- 统一利息金额的货币格式化显示
2026-08-03 17:04:51 +08:00
张名锐 613fd66b65 fix(swap): 解决(观察日)利率计算精度问题并优化价格精度处理
- 在SwapDealService中对GetFixedRate结果进行精度调整,解决原数据精度误差问题
- 在swapPricePrecisionHelper中添加roundDecimal方法并移除TODO注释
- 新增observationRate相关的精度处理函数,包括roundObservationRate和percent转换函数
- 创建serializeSwapIntervals函数用于处理掉期区间利率精度序列化
- 将consNumberFormat.umpriceP替换为swapPricePrecision.shiftDecimal进行百分比转换
- 使用新的精度处理函数替代原有的toFixed(6)和乘以0.01的操作
2026-08-03 13:21:23 +08:00
张名锐 a507d0ce66 feat: 新增利率收益率 债券指数小数点精度配置 2026-07-31 16:26:06 +08:00
张名锐 b0c06dc673 Merge branch 'glms/feature/1.4.2' into glms/feature/dotnumber 2026-07-31 16:20:42 +08:00
yexuzhong 633cd7d32d 计算指标可配置 2026-07-31 14:49:52 +08:00
马冰冰 f7e7aaa373 Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-31 11:27:13 +08:00
马冰冰 696ac168f0 Changes:全部统一成续作 2026-07-31 11:10:55 +08:00
yexuzhong 4c7011bfa8 日终持仓风险下载 2026-07-31 11:02:49 +08:00
张名锐 dfac28f54a Revert "fix(sac): 修复预览页序列化 SacInfo 时 TypeId 触发 IsGenericParameter 异常"
This reverts commit ca74095e0c.
2026-07-31 10:49:18 +08:00
yexuzhong 5d580960d8 #EQD-6669 国联民生-期权希腊值计算步长和细节调整(定价引擎部分) 2026-07-31 10:35:25 +08:00
张名锐 9d53d3dd8c Merge branch 'refs/heads/glms/feature/1.4.2' into glms/feature/dotnumber 2026-07-31 09:19:09 +08:00
张名锐 8ed4bc0f2f fix(swaptrade): 修复债券价格输入绑定和事件处理问题
- 绑定三个债券价格字段到当前Vue方法,确保正确的v-model和事件监听器
- 修复精度输入组件的事件契约,保留keydown、input、enter事件处理逻辑
- 解决格式刷新时不覆盖未提交输入的问题,维护用户输入状态一致性
- 将模板中的@change事件替换为@blur事件,改进输入焦点处理逻辑
2026-07-31 09:18:53 +08:00
hjhan ca74095e0c fix(sac): 修复预览页序列化 SacInfo 时 TypeId 触发 IsGenericParameter 异常
- SacDescriptionAttribute 增加 ShouldSerializeTypeId() 返回 false,
  跳过 Attribute.TypeId(System.Type)的序列化,避免 Newtonsoft 抛
  "Method may only be called on a Type for which Type.IsGenericParameter is true."
  (13.0.1 安全版对 Type 成员序列化行为变更后暴露)
- ExceptionMiddleware 改用 exception.ToString() 记录完整异常(类型+
  内层 message+堆栈),替代仅取最内层 message,便于定位此类反射异常根因;
  该信息仅写入日志,不返回前端
2026-07-31 09:10:18 +08:00
hjhan a871bcb9fe fix(login): 登录页 NeedCaptcha=false 时 CaptchaClick 避免 null.setAttribute 报错
页面加载时无条件调用 CaptchaClick(),但 <img id="captcha"> 仅在
NeedCaptcha=true 时渲染,导致无需验证码时 getElementById 返回 null,
null.setAttribute 抛错。增加 if (!img) return 守卫,img 存在时行为不变。
2026-07-31 09:10:05 +08:00
hjhan 74c434bdd8 fix(swaptrade): 修复重输/重贴原值后回车不触发计算、粘贴不标记REV的静默失效
- swapPricePrecisionHelper: onKeydown 回车时无条件派发 input+enter,
  不再依赖仅值变化才触发的原生 change;onPaste 粘贴即派发 input 标 REV;
  onChange 不再派发 enter(改由 onKeydown 唯一派发,避免重复计算)
- 新增 fe-tests/swapPriceInput.component.test.js 回归守卫(6 用例,
  回退旧版即变红,锁定该 QA 高优 Bug 修复)
- bundle/bundleV2: otcDebug 调试开关改为 localStorage 持久化 +
  URL ?otcdebug=1 触发,便于排查价格计算链路
2026-07-31 09:07:08 +08:00
tengyufan cb2076d9ff fix: 交易确认书编号筛选项保持单行显示
- 国联交易确认书页面加宽交易确认书编号筛选项标签和容器
- 避免交易确认书编号标签自动换行
2026-07-30 17:58:51 +08:00
马冰冰 99438ccaf4 Merge branch 'glms/feature/1.4.2-0730' into glms/feature/1.4.2 2026-07-30 17:48:55 +08:00
马冰冰 807ac15417 feature:续作按钮应当有角色权限控制 2026-07-30 17:46:14 +08:00
lisong 715068b759 Merge remote-tracking branch 'dest/glms/feature/1.4.2' into feature/p132_74-risk-engine 2026-07-30 16:03:37 +08:00
lisong f8ec822667 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-07-30 16:02:37 +08:00
tengyufan f535ed362c Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-30 14:46:26 +08:00
tengyufan 43981e245b #EQD-6718 国联民生-收益互换隐藏收支方向,默认我方收取浮动收益
fix:国联民生收益互换隐藏收支方向,默认我方收取浮动收益

- 新增可配置开关 Erp.SwapFloatingIncomeReceiveOnlyMode,默认关闭,支持在普通模式与网厅适配模式之间切换
- 网厅适配模式下,新增及续做收益互换默认浮动端为我方收取,并隐藏新增、平仓、收益结算及查看页面的浮动端收支方向
- 普通模式保持原有展示和编辑逻辑,历史交易不修改原有浮动端收支方向
- 日终持仓风险_互换将浮动收支方向和标的多空合并为交易方向,并同步影响导出
- 交易方向映射收取+B为多头、收取+S为空头、支付+B为空头、支付+S为多头
- 新增交易方向映射专项前端单测
2026-07-30 14:46:07 +08:00
hjhan 52c11e7540 fix(diag): 简化 otcDebug 调试开关命名并支持 localStorage 持久化
- __otcDiag 双源对象拆为 __diag(版本元数据, 仅供 banner 展示) + __debug(调试开关布尔值, 唯一真相来源), 消除 __私有对象 与 otcDebug.API 大小写混搭。
- __debug 解析顺序: URL ?otcdebug=1(命中即写回 localStorage) -> localStorage -> 兜底 __diag.debug。同源父子 frame 共享 localStorage, 使 _InfoLayout iframe 弹窗(新增互换交易)自动继承父页面开过的调试开关, 修复弹窗内无调试日志。
2026-07-30 14:42:10 +08:00
ruisu 759edfbde4 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-07-30 13:33:19 +08:00
ruisu 3df280d9f0 feat:增加日历与价格偏离辅助函数,修复日志过长无法落库的问题,修复老风控特批、新风控不批时,前端展示为提示框,不是细节框的问题。 2026-07-30 13:32:47 +08:00
张名锐 78aac109d0 Merge branch 'glms/feature/1.4.2' into glms/feature/dotnumber 2026-07-30 13:05:41 +08:00
张名锐 345085677e refactor(swaptrade): 优化价格输入组件的事件处理机制
- 添加 enterPressed 和 formatSnapshot 状态管理
- 实现键盘事件监听和回车键处理逻辑
- 优化数据更新时机和事件触发顺序
- 添加格式配置变更检测功能
- 更新模板事件绑定方式
- 修改价格输入事件回调方法名以区分不同场景
2026-07-30 11:33:55 +08:00
hjhan 7a9702c707 fix(diag): JsVersion 纳入前端文件 mtime,修复纯前端改动缓存不刷新
根因(?otcdebug=1 排查时暴露):JsVersion 只取 bin/YLErp*.dll 的 mtime,
纯前端改 wwwroot/Scripts 而不重编 DLL 时,?v= 缓存戳不变,浏览器仍加载旧版
——即"发布了但不更新"。

修复:
- JsVersion = max(DLL mtime, wwwroot/Scripts/** mtime, wwwroot/Statics/bundles/** mtime)
- wwwroot 定位用 Directory.GetCurrentDirectory()(与 StaticUrlMiddleware 一致,
  开发=项目根/部署=publish 目录),目录不存在则回退仅 DLL mtime
- BinFileVersion 保持原义(仅 DLL,用于诊断显示后端构建时间)

附带修复 git 字段:AssemblyInformationalVersion 无 +sha(如固定版本 1.0.0)时,
回退从 .git/HEAD 读取当前 commit 短 sha,不再误显示 '1.0.0'

验证:dotnet build 0 错误
2026-07-30 11:25:11 +08:00
tengyufan b3484c3618 fix: 国联民生收益互换支持审批前生成交易确认书
- 仅国联民生收益互换支持在新增待确认、修改待确认、审批中生成交易确认书,期权、其他公司及其他交易状态保持原限制
- 交易确认书页面同步开放上述交易的“生成确认书”按钮,后端批量生成链路同步放开状态过滤
- 审批前生成仅校验客户、标的、初始持仓等模板必需核心数据;不以银行账户、联系人、保证金等非模板必填资料阻断
- 审批前已生成确认书的交易被修改时,使该交易原确认书关联失效,重新生成仍按原覆盖逻辑处理
- 审批拒绝时清理该交易审批前生成的确认书关联、OA 结果及用印队列;无其他有效引用时删除确认书数据,避免遗留无效确认书
- 保持原交易编号逻辑:自动生成和手工填写均不复用已拒绝交易编号
- 新增审批前适用范围、确认书关联及 OA 清理谓词专项单测
2026-07-30 11:10:48 +08:00
张名锐 85f1bccb24 Merge branch 'glms/feature/1.4.2' into glms/feature/dotnumber
# Conflicts:
#	YLErpWeb/App_Data/Config/otcformat.js
#	YLErpWeb/Views/SwapTrade2/TradeEdit.cshtml
#	YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeEdit.js
2026-07-30 10:50:44 +08:00
hjhan c519dcf44f fix: otcDebug 开关在 _InfoLayout(TradeEdit)页面也能从URL读取
根因(用户反馈:开了 ?otcdebug=1 但输入/计算无任何 console 输出):
1. 用户实际在 /swapTrade2/TradeList 页面——该页不加载 swapTradeEdit.js(埋点所在),
   只加载 swapTradeList.js(零债券代码),故三字段 trace 永远不会执行。
2. 即使跳到 TradeEdit 页面,_InfoLayout.cshtml(TradeEdit 用的 layout)
   未灌入 window.ylotc.__diag,导致 main.js 中:
     var __otcDiag = (window.ylotc && window.ylotc.__diag) || { debug: false };
   → debug 永远 false → 所有 otcDebug.log 全部空转。

修复:main.js 的 __otcDiag 初始化改为双源读取——
  优先用 _MainLayout 灌入的 ylotc.__diag(含 jsVersion/git/built 元数据);
  若 layout 未灌入(_InfoLayout 等),则从 ?otcdebug=1 / localStorage.otcdebug 直接读,
  确保 debug 开关在所有页面生效。

测试:diag 18 + bondCalc 81 = 99 例全过。
注意:此改动在 main.js 中,需重建 bundle.js 才能生效(dotnet publish 自动触发)。
2026-07-30 10:30:31 +08:00
hjhan 72b2a4cbf6 fix: 债券三字段调试日志改为 otcdebug gated,出问题时一键可定位
用户指出:上一笔直接删了 onBondPriceKeydown 的逐键 console.log 又没补 gated 版,
等于平时没噪音了、真出问题也看不见——这正是反复改几十遍都满足不了需求时才需要日志兜底的场景。

修复:
- onBondPriceKeydown 逐键 before/after(driver/rev) trace 改为 otcDebug.log(?otcdebug=1 才输出)
- onBondPriceEdit(失焦/粘贴) 补同款 gated trace
- calcBondForItem 补 enter/success/calc-error/post-fail 四条 gated trace
  → 三字段整条链路(逐键→回车→计算器→源/AUTO或失败)开开关即得完整现场
- main.js 第226/669行 catch 内 error console.log 保留(错误日志本就应在生产可见,利于定位)
- otcDebug 机制本身已存在且唯一:?otcdebug=1 或 localStorage.otcdebug=1 开启,
  _MainLayout 注入 jsVersion/git/built,加载时打带版本 banner,平时零噪音

测试:
- diag.test.js 新增源码守卫:swapTradeEdit.js 三字段埋点必须 otcDebug.log、不得退回裸 console.log
- diag 18 例 / bondCalc 81 例全过
2026-07-30 10:15:00 +08:00