Commit Graph
253 Commits
Author SHA1 Message Date
hjhan b9f2bd14f6 feat(swaptrade): 债券三字段计算器交互改为回车触发并加源/AUTO/REV 三态标识
- 约定1:仅在净价/全价/收益率输入框敲回车触发计算器,失焦不触发
- 约定2:计算成功->源字段标"源"、另两字段标"AUTO";失败->保留源值、清空另两字段与标识
- 约定3:编辑某字段未回车->不联动另两字段,清源/AUTO、仅本字段标"REV"
- swapCalc.js 新增 applyBondCalcSuccess/Failure/ManualEdit 纯函数,applyBondCalcResult 第三参由 manualSet 改为 driver(跳过源字段写回)
- fastVue.base.js 新增 enter 事件区分回车/失焦,向后兼容旧的 input 行为
- TradeEdit.cshtml 三字段 input/enter 分离绑定 + 源/AUTO/REV 三态标签(去除旧铅笔图标)
- 重写 bondCalc.test.js / 更新 swapCalc.test.js 覆盖状态机;jest 68 项全过
2026-07-29 14:34:25 +08:00
tengyufan 8c4f452482 fix: 统一互换部分平仓交易费用与待结算费用的分摊舍入 2026-07-29 13:47:45 +08:00
tengyufan e1d68393f8 fix: 修复基础费率平仓待结算费用按实际平仓规模分摊 2026-07-29 13:07:55 +08:00
hjhan 422507df8d fix(swaptrade): 新增交易切换标的时清空残留的净价/全价/收益率
setUnderlyingCode 在切换标的时仅调用 clearBondCalcFlags 清掉手动/源标志,未清字段值;getSpotPrice 只回填净价/全价,收益率(InitYtm)无刷新逻辑,导致旧债券收益率残留污染新债券。显式置空 PosiNetNoFeePrice/PosiGrossPrice/InitYtm,避免残留。
2026-07-28 18:53:57 +08:00
马冰冰 d89827f9ad Merge branch 'refs/heads/glms/feature/1.4.2' into glms/feature/1.4.2-0727 2026-07-28 16:50:09 +08:00
马冰冰 d836d192fe fix: #EQD-6812 国联民生-TRS簿记页面增加续做按钮(自动新建一个除日期外要素相同的合约)-交易费用后付字段未填充 2026-07-28 16:48:50 +08:00
张名锐 63932918a1 Revert "feat(swaptrade): 添加日终持仓风险导出功能和精度控制"
This reverts commit b1c91bca34.
2026-07-28 14:50:05 +08:00
张名锐 af364b5c8a Revert "fix(swaptrade): 互换开平仓事件流水 小数点精度调整"
This reverts commit bf6b27ba19.
2026-07-28 14:50:01 +08:00
张名锐 bc9b8a0be1 Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-28 14:31:33 +08:00
张名锐 85a1eb776c Revert "fix: 限额监控小数点精度调整"
This reverts commit 9bff198038.
2026-07-28 14:29:47 +08:00
张名锐 30495d1f5e Revert "fix(grid): 情景分析 行权价格式修改"
This reverts commit ba40ab27e8.
2026-07-28 14:29:43 +08:00
张名锐 9c4cb65600 Revert "fix(risk): 风险预警/禁止查询 小数点精度调整"
This reverts commit ae5f10124f.
2026-07-28 14:29:36 +08:00
张名锐 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
张名锐 b9f0d9d99d fix:结算确认书 份额 结算价 小数点位数调整 2026-07-27 15:23:27 +08:00
张名锐 ae5f10124f fix(risk): 风险预警/禁止查询 小数点精度调整
- 将 otcformat.trading.umprice 替换为 EventTwoDecimalFormat 格式化器
- 新增 EventTwoDecimalFormat 函数处理数值格式化为两位小数
- 优化 StrikeFormatter 函数的价格格式化逻辑
- 统一价格显示格式为两位小数的标准格式
- 修复空值和无效数值的处理机制
2026-07-27 14:46:01 +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
张名锐 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
张名锐 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
张名锐 a3616bdaaf feature: 手动填写名义本金不再反算数量 2026-07-24 11:18:20 +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
马冰冰 ef179fc26c 新增利息端类型字段 2026-07-23 16:59:58 +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
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
张名锐 bc961c3411 fix(swap): 修复互换交易中债券价格精度处理问题,扩充到11位计算
- 统一债券价格四舍五入规则,使用AwayFromZero模式
- 为债券类型添加特殊的精度处理逻辑
- 修复前端价格显示精度计算问题
- 优化价格存储精度控制,区分债券和其他产品类型
- 修复初始化YTM和净价精度处理问题
- 更新价格验证逻辑以支持动态精度设置
2026-07-23 11:06:50 +08:00
hjhan 63d9decd17 恢复对债券首次读取接口返回的 price / netPrice 本来就是存储态小数 (EodPrice 直接返回 DB 值;非 EodPrice 分支 ×bondPriceMultiple=0.01 2026-07-22 15:04:42 +08:00
张名锐 c58a9d40c4 feat(swap): 统一【期初、期末交割价格】精度处理
- 在ConsGlobal中新增SwapDeliveryPriceRound常量定义为9位小数
- 更新incomeSwapTrade.js中交割价格计算逻辑,添加getStorageDeliveryPrice方法
- 修改SwapConsumerService中TradingAmountAvg字段的精度处理
- 添加ValidateDeliveryPrices和NormalizeDeliveryPrices方法进行交割价格验证和标准化
- 在SwapEodPositionService中对PosiGrossPrice和UnderlyingPrice进行精度处理
- 更新SwapFlowEventService中TradingAmountAvg字段的精度处理
- 在SwapFlowImportService中添加交割价格精度处理
- 更新前端界面中的输入格式配置,使用新的交割价格精度设置
- 修改SwapflowList.js中交割价格精度处理逻辑
- 在SwapFlowService中添加交割价格验证和精度处理
- 更新SwapTradeAutoService中交割价格精度处理
- 修改SwapTradeService中PosiGrossPrice字段的精度处理
- 更新unwindSwapTrade.js中交割价格计算逻辑
2026-07-22 14:53:46 +08:00
hjhan e331c15a15 计算器 结果还是会被 不断 /100 2026-07-22 14:48:52 +08:00
hjhan 3cf06c2be7 债券计算器 返回结果后要进行 /100 * 100 处理 适配目前的 这个 /100 * 100,避免 很离谱的 值 2026-07-22 14:00:55 +08:00
张名锐 0755233ab6 fix(swap): 统一处理【名义本金】数值精度舍入问题
- 在多个位置添加 Math.Round 函数确保金额计算精度
- 新增 NormalizeNotionalValues 方法统一处理 UnwindData 中的名义本金舍入
- 修复交易平仓时 StockEqvNotional 扣减计算的精度问题
- 解决持仓数据 PosiNotionalValue 的精度舍入处理
- 修复前端页面显示格式化问题
- 添加单元测试验证名义本金舍入逻辑正确性
2026-07-22 13:05:49 +08:00
hjhan 1373f57884 feat(swap): 债券互算接入浮动收益端(期初三字段change触发+手动/源徽标+重算)
- swapTradeEdit.onBondPriceInput:编辑净价/全价/收益率之一即标记该字段为"已手动设过"(bondManual[type]=true) 并以之为源调 /Bond/CalcBond,反算仅填充未手填字段。

- calcBondForItem:估值日用整笔交易 trade.StartDate(回退 TradeDate→null/T+1);用 main.post(...,{alertFn:main.message}) 让业务/参数错误以非阻塞 toast 展示、绝不回写;未选债券标的先提示;回写前用 getBondCalcErrorMessage 判错。

- resetBondCalc:清空手动锁定、以当前某字段为源重新自动反算。

- setUnderlyingCode:标记浮动腿 isBond(债券标的) 以启用互算。

- TradeEdit.cshtml:三字段加 v-on:change 触发 + 绿色"源"/橙色"手动"徽标 + "重算"链接。
2026-07-22 11:36:00 +08:00
hjhan d3b47f6fa1 feat(swap): 债券净价/全价/收益率互算核心(逐字段手动锁定+错误不覆盖纯函数+测试)
- swapCalc.applyBondCalcResult(state, calc, manualSet):回写时跳过"用户手填过的字段"(逐字段手动锁定,永不覆盖),只反向填充未手填字段;EPS 去抖避免光标跳动。

- 纯函数 getBondCalcErrorMessage(resp):空响应/errCode!=0 返回文案、否则 null,与 C# errCode 守卫一一对应,保证"坏结果"不静默回写。

- 新增 jest 用例覆盖:三字段互算、逐字段锁定(手填全部三个无一被回写)、业务错误不覆盖手工输入、getBondCalcErrorMessage。85→86 全绿。
2026-07-22 11:35:53 +08:00
lisong ec5da002f4 Merge remote-tracking branch 'dest/glms/feature/1.4.2' into feature/p132_74-risk-engine 2026-07-17 15:41:32 +08:00
张名锐 c41e677042 Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-17 13:17:39 +08:00
张名锐 7fac6e13a8 feat(swaptrade): 实现收益结算审批页面期末价格回显功能
- 在incomeSwapTrade.js中修改TradingAmountAvg赋值逻辑,区分普通打开和审批打开场景
- 新增resolveIncomeTradingAmountAvg函数处理审批回显和普通默认值的不同逻辑
- 审批打开时保留已提交的期末全价,普通打开时使用期初全价作为默认值
- 统一债券价格×100缩放到界面百分比显示格式
- 添加单元测试验证审批回显和普通打开的功能差异
2026-07-17 13:17:28 +08:00
hjhan e261137c1d fix(swap): 修复多次部分平仓 ClosePercent 口径(A占期初→B占剩余)转换缺失
- SwapDealService.ApplySwapTrade 入口补 ToRemainingClosePercent(A→B) 转换,与 SwapUnwind 保持一致;缺此转换导致 SaveSwapDealInternal 的 B→A 还原出错(GLMS-20260701-0006:第二次部分平仓50%被错误还原为32.5%)
- unwindSwapTrade.js 改用 swapCalc.calcCloseQtyByOriginalPercent 的 roundHalfAwayFromZero,规避 JS 浮点精度偏差(32500000*(0.5/0.65) 应为 25000000)
- SwapUnwind.cshtml 引入 swapCalc.js
- 新增 ApplySwapTradeClosePercentBugTest 回归测试;补充 swapCalc.test.js 精度用例与 GLMS20260701DbDiagnoseTest 诊断测试([Ignore])
2026-07-17 10:59:18 +08:00
张名锐 415539704d fix(swap): 修复债券结息价差盈亏计算逻辑
- 将价差盈亏计算从使用CloseNotionalValue改为使用PositionQty和ContractSize
- 更新前端JavaScript代码中的计算公式,按持仓数量和合约乘数计算价差盈亏
- 在UnwindInput模型中添加PositionQty和ContractSize字段
- 修正后台计算服务中的数据映射逻辑
- 添加FC_009测试用例验证债券价差按数量计算的正确性
- 更新现有测试用例的输入参数以匹配新的计算方式
2026-07-17 10:58:31 +08:00
ruisu 1110e2b3ef feat:优化特批处理流程与日志落库 2026-07-17 09:26:04 +08:00
hjhan 62c26bd7f5 fix 部分平仓 选择切换 会导致不一致,浮动端会错误 2026-07-16 20:57:18 +08:00