|
@@ -1,37 +1,64 @@
|
|
|
# xbc-cm
|
|
|
|
|
|
#### 介绍
|
|
|
-公式管理、公式计算、公式计算结果管理
|
|
|
+表达式计算引擎、公式管理、公式计算、公式计算结果管理
|
|
|
|
|
|
#### 软件架构
|
|
|
-软件架构说明
|
|
|
-
|
|
|
+由撒部分构成
|
|
|
+1.表达式计算引擎
|
|
|
+ src/engine/java
|
|
|
+ 此部分可以单独做成jar,提供表达式计算功能
|
|
|
+2.公式管理
|
|
|
+ src/main/java 下面的 xbc.formula.fmlmgr
|
|
|
+ 此部分用于管理公式配置
|
|
|
+3.公式计算与结果管理
|
|
|
+ src/main/java 下面的 xbc.formula.calcmgr
|
|
|
+ 此部分用于公式计算以及计算结果管理
|
|
|
|
|
|
#### 安装教程
|
|
|
-
|
|
|
-1. xxxx
|
|
|
-2. xxxx
|
|
|
-3. xxxx
|
|
|
+1.安装java环境: jdk1.8
|
|
|
+2.下载工程,导入eclipse
|
|
|
+ 推荐使用 Eclipse IDE for Java Developers, Version: 2020-12
|
|
|
+3.通过运行table目录下的table_dml.txt里面的SQL语句,创建工程运行所需的数据库表以及初始化番号管理表数据
|
|
|
|
|
|
#### 使用说明
|
|
|
+1.启动springboot主程序: CalculateManagerApplication
|
|
|
+2.通过运行table目录下的reset_ddl.txt里面的SQL语句,创建示例用的公式(有点类似于个人所得税计算的相关公式)
|
|
|
+3.用http的客户端工具(如postman),使用如下参数,调用接口: /calculatemanager/calculate
|
|
|
+ {"productId":1,"bizType":"geshui","paramMap":{"jibenjixiao":9700,"jibengongzi":12300,"jianzhishouru":3240,"zashui":100,"caipiaoshouru":-200},"saveResult":true}
|
|
|
+ 公式计算结果将会写入到 calc_result 表,计算过程中用到的指标以及子公式的结果将会写入到 calc_indicator_result 表。
|
|
|
+ 上述接口会返回计算结果id。
|
|
|
+4.用http的客户端工具(如postman),使用如下参数(calcResultId=结算结果id),调用接口: /calculatemanager/desc
|
|
|
+ 此接口会返回公式运算过程的描述信息。
|
|
|
+5.可以通过往 fml_formula 表里面配置公式,往 fml_formula_indicator 表里面配置指标,然后再往 calc_formula 表里面配置在什么产品什么业务类型使用该公式,实现自己的公式使用。
|
|
|
|
|
|
-1. xxxx
|
|
|
-2. xxxx
|
|
|
-3. xxxx
|
|
|
+#### 公式与指标
|
|
|
+1.公式
|
|
|
+ 用于计算某项业务数据的表达式,比如用于计算【工资】的一种表达式:
|
|
|
+ 基本工资 + 绩效工资 + 其它收入
|
|
|
+ 在xbc-cm中,公式用 xbc.formula.engine.fml.vo.XbcFmlFormulaVo 进行描述
|
|
|
+2.指标
|
|
|
+ 参与公式计算的变量。比如,上面的工资公式里面,下面三个变量都是指标:
|
|
|
+ 基本工资,绩效工资,其它收入
|
|
|
+ 在xbc-cm中,指标用 xbc.formula.engine.fml.vo.XbcFmlFormulaIndicatorVo 进行描述
|
|
|
+3.指标类型
|
|
|
+ 在 XbcFmlFormulaIndicatorVo 里面,定义了指标的五种类型:
|
|
|
+ 1)SPECIFIED_TYPE
|
|
|
+ 指定值类型。表示在公式计算时,直接使用指标对象的【specifiedVal】值,作为指标值进行运算。
|
|
|
+ 计算引擎会试图将该值转换为BigDecimal类型,如果转换失败,则使用String进行计算。
|
|
|
+ 2)SCRIPT_TYPE
|
|
|
+ 脚本类型。表示在公式计算时,这个指标需要运行一段脚本程序得到指标值。目前的版本还未实现。
|
|
|
+ 3)FORMULA_TYPE
|
|
|
+ 公式类型。表示在公式计算时,这个指标自身也是一个公式,公式存放在【formulaVo】里面。需要先对该公式进行计算,计算的结果作为这个指标的值,参与主公式的计算。
|
|
|
+ 4)PARAM_TYPE
|
|
|
+ 参数类型。表示在公式计算时,这个指标是外部传入的一个参数。
|
|
|
+ 计算引擎会以指标的【specifiedVal】值为key在 XbcFmlCalculator.calculte 的 【Object... formulaParams】参数里面的Map类型参数里面查找,如果没有Map类型的参数,
|
|
|
+ 则以指标的【specifiedVal】值为字段名,在formulaParams的数据对象里面查找。找到后,则将找到的值作为指标值,参与公式计算。
|
|
|
+ 5)FUNC_TYPE
|
|
|
+ 函数类型。表示指标本身是一个自定义函数,系统会先运行该自定义函数,并将结果作为指标值,进行公式计算。
|
|
|
|
|
|
#### 参与贡献
|
|
|
|
|
|
-1. Fork 本仓库
|
|
|
-2. 新建 Feat_xxx 分支
|
|
|
-3. 提交代码
|
|
|
-4. 新建 Pull Request
|
|
|
-
|
|
|
|
|
|
#### 特技
|
|
|
|
|
|
-1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
|
|
|
-2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
|
|
|
-3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
|
|
|
-4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
|
|
|
-5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
|
|
|
-6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|