Commit Graph
1214 Commits
Author SHA1 Message Date
张名锐 caf011f08d Revert "fix:结算确认书 份额 结算价 小数点位数调整"
This reverts commit b9f0d9d99d.
2026-07-28 14:29:23 +08:00
tengyufan 80fbb18461 #EQD-6597 国联民生-簿记时新增基本费率字段(开平仓费用),并且自动计算
修补精度
2026-07-28 11:39:09 +08:00
lisong 018d8c9bb6 Merge remote-tracking branch 'dest/glms/feature/1.4.2' into feature/p132_74-risk-engine 2026-07-27 17:27:48 +08:00
lisong 3ec4f3440f Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-07-27 17:26:51 +08:00
尹峰 ca77a71f2c feat: 批量操作交互逻辑统一&解耦规则与应用的状态 2026-07-27 16:54:06 +08:00
张名锐 139547bd43 Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-27 15:27:20 +08:00
张名锐 b9f0d9d99d fix:结算确认书 份额 结算价 小数点位数调整 2026-07-27 15:23:27 +08:00
hjhan d0ac5c0245 fix(swaptrade): 恢复债券三字段被合并静默丢弃的徽标(源/手动编辑/重算)。修复 dotnumber 合并(32af85d3)三路冲突按 theirs 解决时无冲突标记却静默丢弃重算链接/源徽标/手动铅笔图标;JS 逻辑本就完好,仅界面可视化指示回归。 2026-07-27 15:16:12 +08:00
ruisu 2977f658f7 feat:支持变量为复杂表达式。 2026-07-27 15:01:51 +08:00
张名锐 63f12725c5 fix(entryexit): 资金记录 金额 小数点精度调整
- 将数值格式从三位小数调整为两位小数
- 统一正负数值的格式化处理逻辑
- 修复 NaN 判断条件下的格式化显示问题
2026-07-27 14:52:39 +08:00
张名锐 ae5f10124f fix(risk): 风险预警/禁止查询 小数点精度调整
- 将 otcformat.trading.umprice 替换为 EventTwoDecimalFormat 格式化器
- 新增 EventTwoDecimalFormat 函数处理数值格式化为两位小数
- 优化 StrikeFormatter 函数的价格格式化逻辑
- 统一价格显示格式为两位小数的标准格式
- 修复空值和无效数值的处理机制
2026-07-27 14:46:01 +08:00
张名锐 5e1b1178af Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-27 14:33:36 +08:00
张名锐 ba40ab27e8 fix(grid): 情景分析 行权价格式修改
- 移除冗余的空值检查逻辑,统一处理null、undefined、空字符串和NaN值
- 简化行权价格式化算法,直接基于单元格值进行数值转换
- 根据IsMoneynessOption字段决定返回百分比或数值格式
- 修复边界条件处理,确保数据展示的一致性
- 删除多余的测试状态变量相关代码
2026-07-27 14:33:22 +08:00
张名锐 9bff198038 fix: 限额监控小数点精度调整 2026-07-27 14:08:10 +08:00
张名锐 89da38fab9 refactor(swap): 互换开平仓事件流水 导出小数点精度调整
- 将InitYtm属性从decimal?类型更改为string类型
- 调整TradingAmountAvg、TradingAmountFeeAvg和Quantity字段的小数位数从4位改为2位
- 修改InitYtm的赋值逻辑,添加空值检查并应用OtcFormatMoney格式化方法
- 统一货币金额格式化参数设置,移除分组符号并指定小数位数
2026-07-27 13:35:16 +08:00
hjhan e188ba5038 test(swap): 新增 ClosePercent 口径A产品契约测试,防止平仓比例被改为占剩余口径
新增前后端回归测试,锁定产品需求:ClosePercent 永远是占期初名义本金的比例。后端 CPC_001~010 装配测试验证 SwapDealService 真实执行 ToRemainingClosePercent/ToOriginalClosePercent 转换;前端 16 项接线测试验证 unwindSwapTrade.js 使用 NotionalValue 作为分母且 postData 携带 notionalValue 字段。测试背景:c9071a4e 曾将 ClosePercent 改为占剩余口径导致回归但现有测试全通过,本测试通过源码装配与契约验证弥补该缺口。
2026-07-27 13:18:32 +08:00
张名锐 b6afab6a91 Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-27 13:17:51 +08:00
张名锐 bf6b27ba19 fix(swaptrade): 互换开平仓事件流水 小数点精度调整
- 将事件列表中的价格字段格式化统一为两位小数或九位小数
- 替换原有的otcformat.trading.umprice格式化方法
- 在前端JavaScript中添加EventTwoDecimalFormat和EventNineDecimalFormat函数
- 修改后端C#代码中的OtcFormat调用改为OtcFormatMoney并调整精度参数
- 为事件列表脚本添加版本参数以确保缓存更新
2026-07-27 13:17:39 +08:00
tengyufan 912b319a3f Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-27 11:57:31 +08:00
tengyufan 4987962aca #EQD-6597 国联民生-簿记时新增基本费率字段(开平仓费用),并且自动计算
feat: 完善互换平仓交易费用自动计算

- 支持百分比和单位数量模式自动计算平仓交易费用
- 支持全部平仓和部分平仓联动重算
- 保持手动互换不自动填充平仓交易费用
- 补充前后端相关单测
2026-07-27 11:57:20 +08:00
张名锐 b1c91bca34 feat(swaptrade): 添加日终持仓风险导出功能和精度控制
- 为价格字段添加9位小数精度的导出格式化器
- 实现自定义导出函数exportEodPositionRows以支持完整数据导出
- 在jqGrid列配置中添加exportFormatter和exportNumberFormat属性
- 更新utils.js中的导出逻辑以支持自定义格式化器和数字格式
- 在数据库上下文中添加ClientBalanceDaily实体的货币精度转换配置
- 修复导出时价格精度丢失问题,确保财务数据准确性
2026-07-27 11:16:50 +08:00
tengyufan a575de7bbe Revert "feat(swap): 新增基础费率字段,支持百分比/单位数量模式切换及自动计算"
This reverts commit c9071a4eff.
2026-07-27 09:45:41 +08:00
tengyufan c9071a4eff feat(swap): 新增基础费率字段,支持百分比/单位数量模式切换及自动计算
- 浮动收益端新增基础费率列(原单位交易费用),位于数量与交易费用后付之间
- 支持百分比模式(4位小数)与单位数量模式(2位小数)切换,默认百分比
- 填入基础费率后自动计算交易费用后付,手动修改后反算基础费率
- 平仓时根据 PosiFeeType 自动计算平仓交易费用,支持全部/部分平仓联动
- 收益结算(手动互换)不自动填充平仓交易费用
- 查看交易页面新增基础费率展示(百分比带%后缀4位,单位数量2位)
- swap_position 表新增 PosiFeeType 字段标识费率模式(0=百分比 1=单位数量)
- 切换模式时基础费率和交易费用归零,避免精度冲突
- 修复 TradeView.cshtml 引用了不存在字段 category_tag 的编译错误
2026-07-24 17:32:07 +08:00
张名锐 d0693b2192 Merge branch 'glms/feature/dotnumber' into glms/feature/1.4.2 2026-07-24 14:11:29 +08:00
ruisu a4436515d2 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-07-24 13:57:25 +08:00
张名锐 3518be1975 fix(swap-trade): 修复续做交易时名义本金和结算标识的重置逻辑
- 恢复初始名义本金时同时处理 Notional、TradeAmount 和 StockEqvNotional 字段
- 重置结算标识为正常结算模式,清除延期结算相关字段
- 重置 trade_swap 子对象的主键和外键关联
- 清空持仓的运行时累计字段如利息金额、手续费等
2026-07-24 13:56:41 +08:00
ruisu 6e11b17d98 feat:修改用例 2026-07-24 13:41:47 +08:00
张名锐 aa8fb9fd7a Merge branch 'glms/feature/swaptrade_6603_mbb' into glms/feature/1.4.2
# Conflicts:
#	YLErpDAL/Modules/SwapModule/SwapTradeService.cs
2026-07-24 13:29:10 +08:00
张名锐 b729b38814 fix(swap): 修复续做交易中持仓和名义本金的初始化问题
- 恢复初始持仓名义本金,使用OriginalStockEqvNotional和OriginalNotional的原始值
- 只克隆初始持仓(IsInitial=true),避免带入部分平仓后的实时持仓
- 设置预付金腿HappenDate为新交易起始日,非预付金腿置为null
- 清空源交易的事件/持仓快照等集合,避免与源交易共享引用
- 初始化swap_Events、swap_Flow_Events等集合为空列表
2026-07-24 13:23:35 +08:00
张名锐 a3616bdaaf feature: 手动填写名义本金不再反算数量 2026-07-24 11:18:20 +08:00
马冰冰 44ea57b8f6 feature: 增强收益tag 将利率填入固定收益率 2026-07-24 11:12:00 +08:00
lisong 7b7331245c Merge remote-tracking branch 'dest/glms/feature/1.4.2' into feature/p132_74-risk-engine 2026-07-24 09:27:02 +08:00
尹峰 3651d3d2df feat: 风控引擎前后端统一操作符 2026-07-23 18:30:05 +08:00
张名锐 32af85d35c Merge branch 'glms/feature/dotnumber' into glms/feature/1.4.2
# Conflicts:
#	YLErpWeb/Views/SwapTrade2/TradeEdit.cshtml
#	YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeEdit.js
2026-07-23 17:53:37 +08:00
张名锐 c4379d4b90 fix(swap): 修正日终保证金本金计算逻辑
- 移除保证金本金的1/10缩放处理,改为直接使用实际本金数值
- 修正了保证金本金计算中的除以10逻辑,确保显示正确的本金金额
- 保持利息计算使用原始本金累积值,避免破坏保证金利息金额准确性
- 更新注释说明,明确当前风险页按日终保证金
2026-07-23 17:49:02 +08:00
马冰冰 ef179fc26c 新增利息端类型字段 2026-07-23 16:59:58 +08:00
hjhan e1e65929f1 债券互换三字段互算:手动编辑标识由文字改为铅笔图标+hover说明
- 三列(DP/CP/YD)的橙色"手动"文字 span 改为 glyphicon-pencil 图标,
  配 title="手动编辑:该字段由您填写,不会被计算器反算覆盖",
  对应需求3的"单独编辑"语义,hover 即可见说明,比纯文字更直观。
- 复用项目既有 Bootstrap Glyphicons + title 原生 tooltip 约定,零新依赖。
- 顺带修复 451 行"发行信息"图标重复 class(glyphicon glyphicon glyphicon-edit→glyphicon glyphicon-edit)笔误。
2026-07-23 16:53:07 +08:00
hjhan 8694e6e3f4 债券互换三字段互算:估值日(开始日)缺失报错 + 补提漏交回归用例
- 估值日严格取互换起始日 StartDate,去掉"悄悄回退交易日(TradeDate)":
  真的为空时返回错误提示("请先填写开始日…或手动填写三项数值")并 return,
  不调用计算器、不覆盖手工输入,与需求(按开始日估值)完全一致。
- 抽纯函数 getBondStartDateMissingMsg(StartDate 空→文案/null) + 导出;
  复用 D3 的 shouldShowBondErr 去重,避免空开始日时价格格逐键连刷。
- BondCalcHepler.cs 仅补 XML 注释说明前端已强制 StartDate 必填;
  targetDate 空→代理默认 T+1 行为不变(兜底 RealtimePnlCalc 旧链路)。
- 补提此前漏提交的回归用例:bondCalc.test.js(×100/÷100 端到端 + 逐字段手动锁定)、
  swapCalc.test.js(D1/D2/D3 + 本次估值日缺失守卫)。
- jest bondCalc+swapCalc 全绿(68 passed)。
2026-07-23 16:49:40 +08:00
hjhan 8b8fee9306 债券互换三字段互算:修复单位换算与重开覆盖/提示噪声(D1/D2/D3)
- 发计算器前×100、回写÷100(bondPriceToCalc/bondCalcPriceToStorage),
  根治 -117.93/378543 离谱值(存储态小数↔展示态百分比对齐)
- D1:setUnderlyingCode 切债券清空 bondManual/bondDriverType,
  避免旧债券手填态污染新债券
- D2:重开(刷新/审批重开)已保存债券单时,加载路径对三字段齐全的
  标的锁为手动态,编辑某格不联动另两格(手动覆盖跨会话 sticky)
- D3:不可算债券逐键手填时,同一失败提示只弹一次,抑制 toast 连刷
- fe-tests:+9 用例覆盖 D1/D2/D3 边界(切标的清标志/重开锁定/失败提示去重)

jest bondCalc+swapCalc 全绿(62 passed)
2026-07-23 16:37:13 +08:00
张名锐 7475bddc44 fix(tradeHelper): 无法修改后端Bonds->Bond 采用前端兼容,修复债券类型判断逻辑
- 添加了 Bond 类型到 IsBond 函数的判断条件中
- 确保 Bond 类型能够被正确识别为债券产品
2026-07-23 16:23:52 +08:00
马冰冰 ef7fa7c6e5 Changes续作功能的实现 2026-07-23 14:37:34 +08:00
张名锐 32a3a45c85 refactor(swap): 修复债券日终价格映射
- 移除 GetSwapValuationPrice 方法中的 posiGrossPrice 参数
- 删除债券价格转换相关的注释代码和日志记录
- 简化债券价格处理逻辑,直接使用原始价格进行四舍五入
- 更新所有调用 GetSwapValuationPrice 的地方以匹配新方法签名
- 移除多余的价格转换和展示态判断逻辑
2026-07-23 14:17:26 +08:00
张名锐 a91010589a fix: Bonds枚举对应的值改回Bond 2026-07-23 14:16:50 +08:00
hjhan 185a23e978 fix(swap-trade): 修复新增互换交易时 InitYtm 为 null 触发数据库约束报错
根因:InnerSaveNewTrade 只做 req.Clone() 直接入库,未给 trade.InitYtm 赋值;
而编辑场景(InnerSaveEditTrade:582)有从 swap_positions 取 InitYtm 的逻辑,
新增场景漏了。前端填的"成交收益率"存在 swap_position.InitYtm 上,但 trade
表 InitYtm 列要求 NOT NULL,新增时为 null 直接报错。

修复:新增场景同样从 req.swap_positions 取 InitYtm,无则默认 0(与
PrepareTrade:353 的 flowMerge.InitYtm ?? 0 处理一致)。

验证:dotnet build 0 错误
2026-07-23 13:52:04 +08:00
hjhan d0c170c2a1 fix(log): 修复 DbUpdateException 日志丢失 InnerException 的问题
- NLog.config: exception layout 从 format=Message 改为 format=toString
  原配置只渲染外层异常 Message,不递归 InnerException。DbUpdateException
  外层 Message 永远是 "See the inner exception for details.",真正的 SQL
  错误(主键冲突/字段超长/外键约束)全在 InnerException 里被吞掉。
  改为 toString 后输出完整异常链(含 InnerException + 堆栈),全局生效。
- SwapTrade2Controller.tradeEditJson catch 块对齐其他 Controller:
  e.Message → e.GetBaseException().Message,并补上 e.ToJson() 数据参数,
  让前端也能拿到最内层错误信息。

验证:dotnet build 0 错误
2026-07-23 13:43:43 +08:00
hjhan d768a83387 test(swap-calc): 补充债券计算器单位换算端到端测试 + 精化错误提示文案
- bondCalc.test.js 新增 3 个测试:bondPriceToCalc/bondCalcPriceToStorage
  单位换算边界 + 复刻 -117.93/378543 离谱值根因验证
- swapCalc.js 注释从"主数据量纲错误"改为"前端↔计算器单位换算不匹配",
  错误提示文案优化(无逻辑变更)
- 26 个测试全通过
2026-07-23 11:35:27 +08:00
hjhan 7b007bddfa refactor(swap-test): 抽取 TestableSwapEodPositionService 公共基类收敛重复 Stub
- 新建 TestableSwapEodPositionService 收敛 8/8 Stub 重复的高频 override
  (PersistEodSwapPosition/SaveAllChanges/GetCurrencyRate/AddClientCash)
  + 统一 OptUserInfo 构造 + PersistedPositions/SaveChangesCount 输出捕获
- SwapEodPositionService.DealInterests 改 protected virtual(行为零变化)
- 8 个 ScenarioTest 改为继承基类,删除重复 override
- 消灭 DealInterestsScenarioTest/DealInterestsGoldenReplayTest 的反射调用
  (typeof().GetMethod().Invoke → 直接调用 DealInterests)

验证:dotnet build 0 错误;dotnet test SwapModule 284通过/6跳过/0失败
2026-07-23 11:16:11 +08:00
张名锐 bc961c3411 fix(swap): 修复互换交易中债券价格精度处理问题,扩充到11位计算
- 统一债券价格四舍五入规则,使用AwayFromZero模式
- 为债券类型添加特殊的精度处理逻辑
- 修复前端价格显示精度计算问题
- 优化价格存储精度控制,区分债券和其他产品类型
- 修复初始化YTM和净价精度处理问题
- 更新价格验证逻辑以支持动态精度设置
2026-07-23 11:06:50 +08:00
张名锐 018136c615 fix(swap): 修复收益互换价格转换和初始保证金计算问题
- 移除债券价格显示态和存储态转换的错误判断逻辑
- 简化债券价格转换条件,只对债券标的进行存储态转换
- 添加初始保证金计算前的金额精度统一处理
- 重构初始保证金准备逻辑到独立方法中
- 修复因价格单位不一致导致的浮动损益计算错误
2026-07-23 10:13:09 +08:00
张名锐 bbf98ba61c fix(data): 修正债券常量定义
- 将 Bonds 常量值从 "Bond" 更正为 "Bonds"
2026-07-22 18:08:04 +08:00