zoukankan      html  css  js  c++  java
  • springbatch

    主要业务逻辑:
    一共通过获取4种文件后,对文件相关数据进行处理,之后关联相关已有数据库进行监控视图的填充.
    一共含有中证/中债两类文件类型, 每种类型对应全价/特殊两种区分.

    流程图:

    4种文件类型枚举及入库表:
    文件类型code 对应写入数据库
    market_cs_txt_valuation (从txt文件第20行开始读取入库数据) market_cs_valuation 中证全价
    market_cs_txt_specified (从txt文件第13行开始读取入库数据) market_cs_specified 中证特殊
    market_cb_dbf_valuation (第一行是标头) market_cb_dbf_valuation 中债全价
    market_cb_dbf_specified (第一行是标头) market_cb_dbf_specified 中债特殊

    market_topic_records 用来记录文件到没到,记录到达日期,以及批次号
    (前置step查询文件数据到达与否时需要关联查询到是该表数据)
    record_id file_date file_type batch_code create_time update_time topic_time
    market_monitor_common_config(已经改为了不设置其他值只设定偏离度阈值时便为公共阈值)
    config_id holding_deviation assessment_deviation create_time delete_flag version
    market_exception_deviation
    deviation_id

    market_results
    对比结果表,记录某种估值偏离计算今日是否达成,记录相关jobId,stepResults等

    偏离度计算需要用到的总共相关表:

    特殊估值监控获取逻辑:

    偏离度&首日出现对比并对比结果入库的刷新机制(monitor)

    提醒邮件发送机制:

    *return null 时 processor将不会将null的数据传入writer进行update

    当第二份当日文件重复到达后,进行相应处理

    情况分多种
    [ ] 当第二份文件数据与第一份文件数据一致时,可以不根据bondCode,bondMarket来进行更新
    [ ] 当第二份文件数据与第一份文件数据有重叠部分但也有少有多时,需要先将数据根据bondCode,bondMarket来进行更新,
    而还需要将少的数据进行数值额外清理,将多的数据进行额外插入数值
    [X] 确定直接按照第二份文件

    发送每条对比结果 module:core
    调用faAutoIndexFeignClient发送对比结果

    每次跑批查询数据根据查询关联列表,关联持仓债券市场与债券

    文档:
    [X] 持仓债券首次出现在特殊估值行情文件中,哪个属于持仓债券 第三方数据
    [X] 两种偏离度的计算
    1) 中证&中债行情偏离度监控:获取所持仓债券监控日的中证行情、中债行情。
    计算中证和中债两个行情的偏离度(包括正常全价和特殊估值价),若偏离度超过所设阈值(如10%),做出提示。
    偏离度计算公式:|(中证行情-中债行情)/中债行情|
    注:以上公式中的中证行情包括中证全价和中证特殊估值,中债全价包括中债全价和中债特殊估值(下同)。
    中证和中债的特殊估值行情会同时出现吗?
    2) 估值价格偏离监控:获取所持仓债券监控日的中证行情、中债行情以及估值全价。
    计算估值全价与第三方价格的偏离度(包括特殊估值价格),若偏离度超过所设阈值(如1%),做出提示;
    偏离度计算公式=|(估值全价-中证行情(或中债行情))/中证行情(或中债行情)|
    注:考虑到估值价格保留位数的处理,因此通过设置阈值来监控价格的准确性。
    [X] 监控日是哪些天
    [X] 估值全价计算 (估值表,债券市值,应收债券利息) 第三方数据
    [ ] 估值中 债券代码是复数的都有哪些
    [X] 业务需求1监控特殊行情文件是对比哪个字段实际的 maybe
    [X] 计算偏离度 外层绝对值

    文档变更:

    :一个债券在中证行情中出现则不会在中证特殊估值行情中出现,中债行情同理。

    ZQTZ_CB

    持仓证券视图
    market_hoding_view
    通过查询视图参数不同 secDate (到天的时间)
    根据不同的secCode,查看该持仓债券所在交易市场
    可以使用到的字段值:
    SYMBOL(无中文的证券代码),secCode(带中文SH,SZ,CY,HK的证券代码),
    secName(证券名称),mktCode(证券市场XSHG上海,XCFE(银行间),XSHE(深圳),XHKG(香港)),
    fundCode(基金代码),fundName(基金名称),fundType(基金类型),secDate(数据时间)
    特殊估值&持仓债券
    1.根据持仓证券的联查,判定特殊估值属于哪个证券交易市场
    持仓债券表视图: market_hoding_view
    select * from market_hoding_view where SYMBOL in (110059)

    select v.SYMBOL as bondCode,secName as bondName,secDate as marketTime,中证特殊估值价,中债特殊估值价,fundCode as productCode,
    fundName as productName,fundType as productType

    Specified 特殊估值的取值:
    [X] 或更改: marketSpecialMonitorServiceImpl: 201 & 207

    其他接口:
    1.估值全价 估值表 (赢时胜)
    2.工作日

    【中债全价】
    文件:债券估值yyyymmdd,一般18点到达,取文件“zqdm(证券代码)、kxd(可信度)、 rzgjqj(日终估价全价)、ltcszqdm(流通场所债券代码)。
    银行间债券代码:取“zqdm”
    交易所债券(含上交所、深交所)代码:取“ltcszqdm”
    若债券只有一条估值价格,则直接取其“rzgjqj”
    若债券有两条估值价格,取kxd 为“推荐”的“rzgjqj”
    该行情文件存放地址:H:\fund519008\yyyymmdd

    zhon

    在视图中,SYMBOL=bondCode

    4种文件,3个monitor(specified,cscb,value monitor)
    ,3对数据对比 (cs->cb , value->cs , value->cb)

    通过task将偏离度计算并写入对应monitor
    关系关联表

    偏离度计算入库流程:

    估值全价计算流程:

    对偏离度set表的取值及common(公共值),针对值,以及对比不对比(估值价格偏离监控)

    spring batch 比较偏离度以及入库monitor
    1.配置相关springbatchconfig,oracle,mybatisplus
    2.关联4种基础文件,关联持仓债券,如果为cscb对比偏离度,先获取中证的数据条目,则将获取对应的该条目对应到的中债数据,
    通过持仓债券冗余字段填充了monitor,首先进行了cscbMonitor的保存。
    3.cscbMonitor保存后,再根据获取到的相关数据(持仓债券view),获取到对应的估值全价表关联数据,获取到估值全价,再返回跟中证或
    中债数据进行计算,得出估值全价中证偏离度,估值全价中债偏离度,并将关联估值全价前到数据按照是否超过阈值,插入valueMonitor。
    其中valueMonitor中包含value-cs(估值与中证),value-cb(估值与中债)。

    springbatch flow :https://blog.csdn.net/wuzhiwei549/article/details/85405443

    springbatch flow https://blog.csdn.net/shaoyangdd/article/details/100862924

    SpringBatch 不同reader,processor,writer配置不同的单个内置static class @Configuration区分
    对应每种monitor的writer

    job的配置

    配置batchStep流程 将batchJobs指示图中每个不同级别(>,>>,>>>)分为不同步骤

    step 6 个
    刷新结果

    batchStep及对应的前置后置step关系
    对应step:
    特殊估值:(特殊文件)
    special:
    判定csSp文件数据今日是否存在(topic_records)
    [csSpSpecialStep],
    判定cbSp文件数据今日是否存在(topic_records)
    [cbSpSpecialStep]

    中证中债:(2类/4个文件都用得到,对比一种必须用到两个文件数据)
    initMonitor (将持仓债券数据初始化进cscb-monitor本日)
    cscb:
    判定csVa & cbVa文件数据今日是否存在(topic_records)
    [csVaCsCbStep],
    判定csSp & cbSp文件数据今日是否存在(topic_records)
    [csSpCsCbStep]

    估值全价计算:
    initMonitor (将持仓债券数据初始化进value-monitor本日)
    value:
    判定csVa文件数据今日是否存在(topic_records)
    [csVaValueStep],
    判定csSp文件数据今日是否存在(topic_records)
    [csSpValueStep],
    判定cbVa文件数据今日是否存在(topic_records)
    [cbVaValueStep],
    判定cbSp文件数据今日是否存在(topic_records)
    [cbSpValueStep]

    job开始时,根据monitor类型,来获取isInitMonitor单独的flow,在单独的flow中,执行完判定isInitMonitor后再执行下面的step.从混乱的并行中回到前需判定的flow中

    乱序并行初始化视图到常规判定初始化视图

    各个step只包括读转写
    比如
    csva文件发起的step可以转到cscb-monitor也可以转到value-cs到value-monitor
    则将该csva-begin-job做flow,并行,并行第一个step就应该是判断csva入库与否到tasklet step
    具体到csva-cscb-step时只要判定cbva文件tasklet step即可
    而value-monitor无需再判定
    所以在生成flow时,如果不需要再判定文件入库,需要改为可以执行在tasklet step返回finished

    springbatch
    https://blog.csdn.net/m0_37895553/article/details/105008083
    springbatch可读多文件写list,需要转换器改为单个实体->转到多个实体 maybe
    https://blog.csdn.net/lyf_ldh/article/details/98471353

    springbatch优势
    chunk分批进行处理,在异常断点处继续

    beforeJob(可以判定是否这个job所需文件是否都具备)
    afterJob(对比结果)

    记录job结果的同时发送比对 超过阈值 或 首日出现 数据

    ● 问题: 可能update时间会跟beginJob,monitorJob有冲突,可能同时
    ● 问题: write count获取时 并不能获取完全是这个job进行更新的

    ● 解决: 根据step 名称获取这个step id 之后是否还有相同的step, 如果有,则统一获取回来 将 write count加总 进行相关monitor表的查询
    ● step步骤数组,判定monitor类型的step而不是initstep等,获取后将step对应monitortype进行查询

    发送邮箱提醒,区分文件到达的jobBegin方式以及单个刷新monitor两种类型

    jobExecutionId -> jobInstanceId(batchJobInstance) 查询jobName是否是beginJob或是refreshJob

  • 相关阅读:
    Cocos2d-x学习-郝盟主的《城市跑酷》分析学习 (一)GameSprite类
    PictureShare开发(二)地图Mark(标记)的处理(2)
    PictureShare开发(二)地图Mark(标记)的处理(1)
    Unity AssetBundle 踩坑记录
    Unity 配置静态excel 工作流程
    Spine U3D整合流程问题
    Destroy reall destroy ?!
    Drawing-Order-Of-meshes-and-sprites
    Split Animation Clip From FBX and Multiply Mode Sprite
    KBengine Learning Note 1 => Run Demo
  • 原文地址:https://www.cnblogs.com/ukzq/p/15415047.html
Copyright © 2011-2022 走看看