From c381eed309ff7bf1af0d6a2d4cdbee9d1e6143f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E8=BE=89?= Date: Wed, 19 Apr 2023 18:42:28 +0800 Subject: [PATCH] init finance --- .DS_Store | Bin 0 -> 6148 bytes plugin-finance-function/.DS_Store | Bin 0 -> 6148 bytes plugin-finance-function/build.gradle | 122 ++++ plugin-finance-function/build/.DS_Store | Bin 0 -> 6148 bytes ...gin-com.fr.plugin.function.finance-3.0.zip | Bin 0 -> 52308 bytes ...gin-com.fr.plugin.function.finance-3.0.jar | Bin 0 -> 56864 bytes ...gin-com.fr.plugin.function.finance-3.0.jar | Bin 0 -> 56864 bytes .../build/temp/plugin/plugin.xml | 85 +++ .../build/tmp/makeJar/MANIFEST.MF | 2 + plugin-finance-function/encrypt.xml | 13 + plugin-finance-function/plugin.xml | 85 +++ plugin-finance-function/readme.md | 48 ++ plugin-finance-function/src/.DS_Store | Bin 0 -> 6148 bytes plugin-finance-function/src/main/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/com/fr/plugin/DateUtil.java | 565 ++++++++++++++++++ .../src/main/java/com/fr/plugin/FV.java | 60 ++ .../java/com/fr/plugin/FinanceFinder.java | 10 + .../fr/plugin/FinanceFunctionConstants.java | 6 + .../main/java/com/fr/plugin/FinanceGroup.java | 29 + .../src/main/java/com/fr/plugin/IPMT.java | 66 ++ .../src/main/java/com/fr/plugin/IRR.java | 196 ++++++ .../src/main/java/com/fr/plugin/MIRR.java | 112 ++++ .../src/main/java/com/fr/plugin/NPER.java | 62 ++ .../src/main/java/com/fr/plugin/NPV.java | 52 ++ .../src/main/java/com/fr/plugin/PMT.java | 82 +++ .../src/main/java/com/fr/plugin/PPMT.java | 68 +++ .../src/main/java/com/fr/plugin/PV.java | 63 ++ .../src/main/java/com/fr/plugin/Rate.java | 130 ++++ .../main/java/com/fr/plugin/UpbaaDate.java | 111 ++++ .../src/main/java/com/fr/plugin/XIRR.java | 136 +++++ .../src/main/java/com/fr/plugin/XirrData.java | 116 ++++ .../resources/com/fr/plugin/demo.properties | 1 + .../com/fr/plugin/demo_zh_CN.properties | 1 + 33 files changed, 2221 insertions(+) create mode 100644 .DS_Store create mode 100644 plugin-finance-function/.DS_Store create mode 100644 plugin-finance-function/build.gradle create mode 100644 plugin-finance-function/build/.DS_Store create mode 100644 plugin-finance-function/build/install/fine-plugin-com.fr.plugin.function.finance-3.0.zip create mode 100644 plugin-finance-function/build/libs/fine-plugin-com.fr.plugin.function.finance-3.0.jar create mode 100644 plugin-finance-function/build/temp/plugin/fine-plugin-com.fr.plugin.function.finance-3.0.jar create mode 100644 plugin-finance-function/build/temp/plugin/plugin.xml create mode 100644 plugin-finance-function/build/tmp/makeJar/MANIFEST.MF create mode 100644 plugin-finance-function/encrypt.xml create mode 100644 plugin-finance-function/plugin.xml create mode 100644 plugin-finance-function/readme.md create mode 100644 plugin-finance-function/src/.DS_Store create mode 100644 plugin-finance-function/src/main/.DS_Store create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/DateUtil.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/FV.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/FinanceFinder.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/FinanceFunctionConstants.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/FinanceGroup.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/IPMT.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/IRR.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/MIRR.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/NPER.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/NPV.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/PMT.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/PPMT.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/PV.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/Rate.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/UpbaaDate.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/XIRR.java create mode 100644 plugin-finance-function/src/main/java/com/fr/plugin/XirrData.java create mode 100644 plugin-finance-function/src/main/resources/com/fr/plugin/demo.properties create mode 100644 plugin-finance-function/src/main/resources/com/fr/plugin/demo_zh_CN.properties diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..52c909eb9f02b5f210034c8bac6d6e8c3c971b2e GIT binary patch literal 6148 zcmeHKL2uJA6n@?^<}eUFAa%!FxOJ!*8jJ%|DCNKn6a)uATherGq%@A2gbGTh{soS3 z=AXcYU$84bfg2Zuc+d8rQ2{9&CWic^=kNL1&wl>u*fjvKP8qoX4FKS%gw}a1ej(IO zx+E*wa{-aj7|Fo(dt#I=^)wE{fMMWYWPrY13$DTdVkoNL@6p%Awvp&|!$gGW<9n~2 zt#4mG+^)7qe{9c&3ugoSgrU%c3=$~i+$n6qA?A=mfZBt;te4U*&@UhjCwZnb_!wqM zoEPo(F&eWiC+XonRkNm6RO=0ieaejhe9Mj>>zv;_b2;}%XdUt z1aaCQ%iuWbW0$9o<1`YJjwsV8m*e=V!M1H~?>9E5)9u}zmg8RAnYEnhjhk-Ex!&HM z&1~Mh;@-M~ z!)or;A7OC=eO`ZXJbw3{Hc-txM&jo-`}(g8-E{I)d8nG&5i z-#AlQn`8|GhJn*yfX)X8mC(~TS16ATEaVda(L%QrwB>P%=#T@^(>Pa%9u%fR5mhMD zPYkBQ(eLPfp2oRC6%I_!jN|B;nSP-#IXn6t*&Udt(3FM&!$6gRRaI@!{eSoO@BeC$ zsTl?g1OF8R%Vl3w<3+gRbIDR4Lfzkb&rFoGU~R QiuofTX)uLh;8Yp-4wmuGf&c&j literal 0 HcmV?d00001 diff --git a/plugin-finance-function/.DS_Store b/plugin-finance-function/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..037447d284e2215a32c23fb83debbc245f4d0b1b GIT binary patch literal 6148 zcmeHKPm9w)6o1opHQD;7g3!I0i{POw?aHn$i_onV*@GfP^x(>F(u6jUWJ;4-*IMbv zP``m^FCIO3@e_FUTL>Q1_hv?$v=tA6NSOySzsbD!=FjiVp9}!7*3fGJQ~AMb(t;FJ%>_gz+VBoS-f=_jF4*b{&46a$|6_pm?i#o-gaAUw?q50*_Ap)fE<_AH zW9g2PzS`*@-F_G(X}$i56^f;`Q>P8XC>v*u$99j8?9@qzNy`~LqOW^S+H+O;KIh@D zvg1Ao{LxY6;!Pf>P7wP8;T(8AnjAh1Vvmnnd>DI)XvdZc(=-k9sIoC0Z(ZN6S&ggP zlbSWYw%e##JN2!}#5Agx8#fM)qmyUj=aUzX>>VI}0e!k_RO3z;c~-G<%aQD3MF z?+)|Yh_~B{0OR(#_WrjoANJ=hygyjip?M#ym&)2(`?x^r6zlhI5 zv#8C5g}ui{S5nkAFv=@AJ3T4QfM(!t7@+gP!bI3qIF%@l4$Q<80I`JCLa#yE24B|>WRUmJJwsuuBmV;QMv`Az)Eeq-NGrUyLDl5bk|y#jxmvt-BhA*!AxDpqCi*i d1|}h>v#5aBR5+E0H7NQ=K+vEw&A>lp;0HD$-@pI> literal 0 HcmV?d00001 diff --git a/plugin-finance-function/build.gradle b/plugin-finance-function/build.gradle new file mode 100644 index 0000000..89632b2 --- /dev/null +++ b/plugin-finance-function/build.gradle @@ -0,0 +1,122 @@ + +apply plugin: 'java' + + +ext { + /** + * 项目中依赖的jar的路径 + * 1.如果依赖的jar需要打包到zip中,放置在lib根目录下 + * 2.如果依赖的jar仅仅是编译时需要,防止在lib下子目录下即可 + */ + libPath = "$projectDir/../webroot/WEB-INF/lib" + + /** + * 是否对插件的class进行加密保护,防止反编译 + */ + guard = true + + def pluginInfo = getPluginInfo() + pluginPre = "fine-plugin" + pluginName = pluginInfo.id + pluginVersion = pluginInfo.version + + outputPath = "$projectDir/../webroot/WEB-INF/plugins/plugin-" + pluginName + "-1.0/classes" +} + +group = 'com.fr.plugin' +version = '10.0' +sourceCompatibility = '8' + +sourceSets { + main { + java.outputDir = file(outputPath) + output.resourcesDir = file(outputPath) + } +} + +ant.importBuild("encrypt.xml") +//定义ant变量 +ant.projectDir = projectDir +ant.references["compile.classpath"] = ant.path { + fileset(dir: libPath, includes: '**/*.jar') + fileset(dir: ".",includes:"**/*.jar" ) +} + +classes.dependsOn('clean') + +task copyFiles(type: Copy,dependsOn: 'classes'){ + from outputPath + into "$projectDir/classes" +} + +task preJar(type:Copy,dependsOn: guard ? 'compile_encrypt_javas' : 'compile_plain_javas'){ + from "$projectDir/classes" + into "$projectDir/transform-classes" + include "**/*.*" +} +jar.dependsOn("preJar") + +task makeJar(type: Jar,dependsOn: preJar){ + from fileTree(dir: "$projectDir/transform-classes") + baseName pluginPre + appendix pluginName + version pluginVersion + destinationDir = file("$buildDir/libs") + + doLast(){ + delete file("$projectDir/classes") + delete file("$projectDir/transform-classes") + } +} + +task copyFile(type: Copy,dependsOn: ["makeJar"]){ + from "$buildDir/libs" + from("$projectDir/lib") { + include "*.jar" + } + from "$projectDir/plugin.xml" + into file("$buildDir/temp/plugin") +} + +task zip(type:Zip,dependsOn:["copyFile"]){ + from "$buildDir/temp/plugin" + destinationDir file("$buildDir/install") + baseName pluginPre + appendix pluginName + version pluginVersion +} + +//控制build时包含哪些文件,排除哪些文件 +processResources { +// exclude everything +// 用*.css没效果 +// exclude '**/*.css' +// except this file +// include 'xx.xml' +} + +/*读取plugin.xml中的version*/ +def getPluginInfo(){ + def xmlFile = file("plugin.xml") + if (!xmlFile.exists()) { + return ["id":"none", "version":"1.0.0"] + } + def plugin = new XmlParser().parse(xmlFile) + def version = plugin.version[0].text() + def id = plugin.id[0].text() + return ["id":id,"version":version] +} + +repositories { + mavenLocal() + maven { + url = uri('http://mvn.finedevelop.com/repository/maven-public/') + } +} + +dependencies { + //使用本地jar + implementation fileTree(dir: 'lib', include: ['**/*.jar']) + implementation fileTree(dir: libPath, include: ['**/*.jar']) +} + diff --git a/plugin-finance-function/build/.DS_Store b/plugin-finance-function/build/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..82221db2847fa11c117399c24ca528e45f2840ce GIT binary patch literal 6148 zcmeHKu};G<5IxgK6j+MH09z*Z{s0P9nCL|N0ki~_N(rf2*z*g_tjrAj0ul=h3`lH< ze?aWKvt4SFRAMOtbSK#_@!k1dUS+!`BGo!innVpEs-rOmtLQ3>{oG2nWJflDO3yK- z9-YxKCF!6PEd!!}DDc}9;I+F#1FYFoG-v%bJ4bmoa>}iU%JMkwr+FVy^_%s#r}5S8 zZuNXwo_sTMbW&norXi}EU}x!3N@+T9BObb7{1V~Tb+_Gpwsn=FW;M-^^6PnIK>}1U zq&`jjN?tT2<@b4CF*SI3Z_Q}r^S7+C>=CRDm z-cXcg$9Sm2Nks;w7X?HCUxAu=ZSeWOH~;?cC&`;AAPW2|1ym4s;ub#1o~@;ig~M0s7CVuK)l5 literal 0 HcmV?d00001 diff --git a/plugin-finance-function/build/install/fine-plugin-com.fr.plugin.function.finance-3.0.zip b/plugin-finance-function/build/install/fine-plugin-com.fr.plugin.function.finance-3.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..5f0364b0c8e5ee12c0f19d5063ae0be017ce25a2 GIT binary patch literal 52308 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 Qj}LevX(xMe|3B9M0mHu?rT_o{ literal 0 HcmV?d00001 diff --git a/plugin-finance-function/build/libs/fine-plugin-com.fr.plugin.function.finance-3.0.jar b/plugin-finance-function/build/libs/fine-plugin-com.fr.plugin.function.finance-3.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..4de59d7608e60a099e7c682f9d86d0ff591f2108 GIT binary patch literal 56864 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

03F*^_L_LQ#7j{^q_Ml>l69!4jS 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

03F*^_L_LQ#7j{^q_Ml>l69!4jS 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 + com.fr.plugin.function.finance + + yes + 3.0 + 10.0~11.0 + 2020-04-01 + yanghui + + + ]]> + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugin-finance-function/build/tmp/makeJar/MANIFEST.MF b/plugin-finance-function/build/tmp/makeJar/MANIFEST.MF new file mode 100644 index 0000000..59499bc --- /dev/null +++ b/plugin-finance-function/build/tmp/makeJar/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/plugin-finance-function/encrypt.xml b/plugin-finance-function/encrypt.xml new file mode 100644 index 0000000..1401cd1 --- /dev/null +++ b/plugin-finance-function/encrypt.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugin-finance-function/plugin.xml b/plugin-finance-function/plugin.xml new file mode 100644 index 0000000..5d7d19e --- /dev/null +++ b/plugin-finance-function/plugin.xml @@ -0,0 +1,85 @@ + + com.fr.plugin.function.finance + + yes + 3.0 + 10.0~11.0 + 2020-04-01 + yanghui + + + ]]> + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugin-finance-function/readme.md b/plugin-finance-function/readme.md new file mode 100644 index 0000000..143418f --- /dev/null +++ b/plugin-finance-function/readme.md @@ -0,0 +1,48 @@ +# 函数插件 +该插件实现Excel中的PMT,RATE,IRR,XIRR的财务函数; + +XIRR函数的功能:计算一组定期或者不定期现金流的内部收益率; +XIRR函数的语法结构:XIRR(values, dates, [guess]), +values为现金流; +dates为现金流相对应的日期; +guess为选填参数,表示预期利率,不填系统默认为10%; +XIRR使用示例:XIRR(A1:A25,B1:B25)或XIRR(A1:A25,B1:B25,0.11),所选区域支持去空,比如只有24期数据,选择A1:A34也是可以的,但为保证计算结果的准确性,必须保证中间数据是连续的; + + +IRR函数的功能:计算一组定期现金流的内部收益率; +IRR函数的语法结构:XIRR(values, [guess])。 +values为必填参数,表示现金流; +guess为选填参数,表示预期利率,不填系统默认为10%; +IRR使用示例:XIRR(A1:A25)或XIRR(A1:A250.11),所选区域支持去空,比如只有24期数据,选择A1:A34也是可以的,但为保证计算结果的准确性,必须保证中间数据是连续的; + +RATE函数的功能:计算每期年金的利率; +RATE函数的语法结构:RATE(nper, pmt, pv, [fv], [type], [guess]), +nper必填参数,为年金的付款总期数; +pmt必填参数,为每期的付款金额; +pv必填参数,为现值即一系列未来付款当前值的总和; +fv可选参数。 表示未来值,或在最后一次付款后希望得到的现金余额。 如果省略 fv,则假定其值为 0; +type可选参数,用以指定各期的付款时间是在期初还是期末,传值为数字 0-期末 或 1-期初,默认为期末; +guess可选参数,表示预期利率。如果省略 guess,则假定其值为 10%。 +RATE函数使用示例:rate(24,14708.05,-315450),在相同条件下贷款的年利率为rate(24,14708.05,-315450)*12 + + +PMT函数的功能:用于根据固定付款额和固定利率计算贷款的付款额; +PMT函数的语法结构:PMT(rate, nper, pv, [fv], [type]); +rate参数必填,表示贷款利率; +nper参数必填,表示该项贷款的付款总数,即期数; +pv参数必填,表示现值,或一系列未来付款额现在所值的总额,也叫本金; +fv可选参数。 表示未来值,或在最后一次付款后希望得到的现金余额。 如果省略 fv,则假定其值为 0; +type可选参数,用以指定各期的付款时间是在期初还是期末,传值为数字 0-期末 或 1-期初,默认为期末; +PMT使用的示例:pmt(0.078/12,24,20000,,1)或pmt(0.078/12,24,20000) + + + + + + + + + + + + diff --git a/plugin-finance-function/src/.DS_Store b/plugin-finance-function/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..672f0f5ef2fb6740c2aceb0b810a53afae7f7d72 GIT binary patch literal 6148 zcmeHKK~BUl478z0mALGYW4^FI2&?jfy>NtXB|vJ)N{D-&!Vh=^yn-u_;0BCigIZB> zTcky{l#FA?PBT)In230F-z|w2L{y^*vM4hm=2_Q)O+Es$hFH_Z?8wW`2nFW&VV!E z3^)VMz^)mvYq~z(^+KNC8E^*njsZCz0-9hn%!=jcKvzltUm&DFe^$H Sv6pb5KLiRP-Z=w*z`!SZvonVP literal 0 HcmV?d00001 diff --git a/plugin-finance-function/src/main/.DS_Store b/plugin-finance-function/src/main/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..35f7ddd14f139246f2460061db57e6ae3916da80 GIT binary patch literal 6148 zcmeHKOHRWu5FLjsQnBe0iH)z&EvrxkB-Xt^e+YzHr2>_8mYjr(a2N!afcHG6#7gKA zRn?3%e)fFg$xD=pMZ}G_%aO=XL<%S|8(`=W`l%hsqJ>V!Ypm`@lSRGWbRx}gs0{Gg z)miuq{=`Z + * Copyright: Copyright(c) 2013 + *

+ *

+ * Company: morelap + *

+ * @Version 1.0 + * @Author
Morelap + * + * + */ +public class DateUtil { + public static final long Minute_MilliSecond = 60 * 1000; + public static final long Hour_MilliSecond = Minute_MilliSecond * 60; + /** + * milliseconds of a day + */ + public static final long Day_MilliSecond = Hour_MilliSecond * 24; + /** + * milliseconds of a week + */ + public static final long Week_MilliSecond = Day_MilliSecond * 7; + /** + * milliseconds of a month + */ + public static final long Month_MilliSecond = Week_MilliSecond * 30; + /** + * yyyyMMdd + */ + public static final String Date_Default_Formate = "yyyyMMdd"; + /** + * yyyy-MM-dd HH:mm:ss 2010-05-11 17:22:26 + */ + public static final String Date_Formate_All = "yyyy-MM-dd HH:mm:ss"; + /** + * dd/MM/yyyy, hh:mm + */ + public static final String DATE_FORMATE_TRANSACTION = "dd/MM/yyyy, hh:mm"; + /** + * MM/dd HH:mm + */ + public static final String DATE_FORMATE_DAY_HOUR_MINUTE = "MM/dd HH:mm"; + /** + * HH:mm + */ + public static final String DATE_FORMATE_HOUR_MINUTE = "HH:mm"; + public static final String DATE_FORMATE_HOUR_MINUTE_SECOND = "HH:mm:ss"; + + public static SimpleDateFormat dateFormate = new SimpleDateFormat(); + + /** + * 获取当前的字符串日期 + * + * @param splite + * 格式的分割线如 - 则获取的日期时间格式如下: + * @return 返回2013-07-19 + */ + public static String getNowStringDate(String splite) { + StringBuffer format = new StringBuffer(); + if (splite == null) { + format.append(Date_Default_Formate); + } else { + format.append("yyyy").append(splite).append("MM").append(splite) + .append("dd"); + } + return (new SimpleDateFormat(format.toString())).format(new Date()); + } + + /** + * 获取当前的字符串日期时间 + * + * @param splite + * 格式的分割线如 - 则获取的日期时间格式如下: + * @return 返回2013-07-19 09:08:22 + */ + public static String getNowStringDateTime(String splite) { + StringBuffer format = new StringBuffer(); + if (splite == null) { + format.append(Date_Default_Formate); + } else { + format.append("yyyy").append(splite).append("MM").append(splite) + .append("dd").append(" HH:mm:ss"); + } + return (new SimpleDateFormat(format.toString())).format(new Date()); + } + + /** + * 获取当前的字符串期时间 + * + * @param splite + * 格式的分割线如 - 则获取的日期时间格式如下: + * @return 返回09:08:22 + */ + public static String getNowStringTime() { + StringBuffer format = new StringBuffer(DATE_FORMATE_HOUR_MINUTE_SECOND); + return (new SimpleDateFormat(format.toString())).format(new Date()); + + } + + /** + * 获取昨天的日期 + * + * @return Date + */ + public static Date getYesterdayDate() { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DATE, -1); + return calendar.getTime(); + } + + /** + * 获取指定日期的后面的一天 即日期+1 + * + * @param stringDate + * 格式为:2012-02-02 + * @return Date + */ + public static Date getForwardDate(String stringDate) { + int year = Integer.parseInt(stringDate.substring(0, 4)); + int month = Integer.parseInt(stringDate.substring(5, 7)); + int day = Integer.parseInt(stringDate.substring(8, 10)); + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month - 1); + c.set(Calendar.DAY_OF_MONTH, day); + + c.add(Calendar.DATE, 1);// 在此日期的基础上+1 + return c.getTime(); + } + + /** + * 获取指定日期的后面的一天 即日期+1 + * + * @param stringDate + * 格式为:2012-02-02 + * @return Date + */ + public static String getForwardStringDate(String stringDate, String splite) { + int year = Integer.parseInt(stringDate.substring(0, 4)); + int month = Integer.parseInt(stringDate.substring(5, 7)); + int day = Integer.parseInt(stringDate.substring(8, 10)); + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month - 1); + c.set(Calendar.DAY_OF_MONTH, day); + c.add(Calendar.DATE, 1);// 在此日期的基础上+1 + return getStringDateByDate(c.getTime(), splite); + } + + /** + * 根据传进来的日期date 和格式分割线返回一个字符串的日期 + * + * @param date + * 日期 + * @param splite + * 日期格式的分割线 如:- + * @return 2013-07-19 + */ + public static String getStringDateByDate(Date date, String splite) { + StringBuffer format = new StringBuffer(); + if (splite == null) { + format.append(Date_Default_Formate); + } else { + format.append("yyyy").append(splite).append("MM").append(splite) + .append("dd"); + } + if (date == null) { + date = new Date(); + } + return (new SimpleDateFormat(format.toString())).format(date); + } + + /** + * 根据传进来的日期stringdate 和格式分割线返回一个字符串的日期 + * + * @param stringDate + * 日期 + * @param splite + * 日期格式的分割线 如:- + * @return 2013-07-19 + */ + public static String getStringDateByStringDate(String stringDate, + String splite) { + Date date = getDateByStringTime(stringDate); + return getStringDateByDate(date, splite); + } + + /** + * 根据传进来的整数获取一个日期Date + * + * @param year + * 年 + * @param month + * 月 + * @param day + * 日 + * @return Date + */ + public static Date getDateByIntegerDate(int year, int month, int day) { + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month - 1); + c.set(Calendar.DAY_OF_MONTH, day); + return c.getTime(); + } + + /** + * 根据传进来的字符串日期格式 获得一个date + * + * @param stringTime + * 格式如:2013-02-13 中间的-可以为其他字符 + * @return date + */ + public static Date getDateByStringTime(String stringTime) { + int year = Integer.parseInt(stringTime.substring(0, 4)); + int month = Integer.parseInt(stringTime.substring(5, 7)); + int day = Integer.parseInt(stringTime.substring(8, 10)); + return getDateByIntegerDate(year, month, day); + } + + /** + * 获得指定日期 在1970年到现在的天数 + * + * @param date + * @return 天数 + */ + public static long getDaysFrom1970(Date date) { + String stringTime = DateUtil.getStringDateByDate(date, "-"); + int year = Integer.parseInt(stringTime.substring(0, 4)); + int month = Integer.parseInt(stringTime.substring(5, 7)); + int day = Integer.parseInt(stringTime.substring(8, 10)); + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month - 1); + c.set(Calendar.DAY_OF_MONTH, day); + return (int) (c.getTimeInMillis() / 86400000); + } + + /** + * 获得指定日期 在1970年到现在的天数 + * + * @param 年 + * 月 日 + * @return 天数 + */ + public static long getDaysFrom1970(int year, int month, int day) { + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month - 1); + c.set(Calendar.DAY_OF_MONTH, day); + return (int) (c.getTimeInMillis() / 86400000); + } + + /** + * 获得指定日期 在1970年到现在的天数 + * + * @param date 格式2013-03-05 中间的-可以是其他符号 或者没有符号 + * @param hasSplite 代表中间是否有符号,默认是有的,如果为false则日期的格式为:20130305 + * @return 天数 + */ + public static long getDaysFrom1970(String stringTime,boolean hasSplite) { + int year,month,day; + if(hasSplite){ + year = Integer.parseInt(stringTime.substring(0, 4)); + month = Integer.parseInt(stringTime.substring(5, 7)); + day = Integer.parseInt(stringTime.substring(8, 10)); + }else{ + year = Integer.parseInt(stringTime.substring(0, 4)); + month = Integer.parseInt(stringTime.substring(4, 6)); + day = Integer.parseInt(stringTime.substring(6, 8)); + } + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month - 1); + c.set(Calendar.DAY_OF_MONTH, day); + return (int) (c.getTimeInMillis() / 86400000); + } + /** + * 获得今年年初的第一天日期 如2013-01-01 + * + * @param splite + * 分隔符号 + * @return 2013-01-01(字符串形式) + */ + public static String getYearStartString(String splite) { + String sDate = getNowStringDate(splite); + int year = Integer.parseInt(sDate.substring(0, 4)); + String yearStart = new StringBuffer().append(year).append(splite) + .append("01").append(splite).append("01").toString(); + return yearStart; + } + + /** + * 获得今年年初的第一天日期 如2013-01-01 + * + * @return 2013-01-01日期格式 + */ + public static Date getYearStartDate() { + String sDate = getNowStringDate("-"); + int year = Integer.parseInt(sDate.substring(0, 4)); + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, 0); + c.set(Calendar.DAY_OF_MONTH, 1); + return c.getTime(); + } + + /** + * 获得上个周末的 字符串日期, 指星期日 + * @param splite + * 分隔符号 - + * @return String 格式:2013-06-22 + */ + public static String getLastWeekStringDate(String splite) { + String stringDate=getNowStringDate("-"); + int year = Integer.parseInt(stringDate.substring(0, 4)); + int month = Integer.parseInt(stringDate.substring(5, 7)); + int day = Integer.parseInt(stringDate.substring(8, 10)); + int sundayPlus=getSundayPlus(); + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month - 1); + c.set(Calendar.DAY_OF_MONTH, day); + c.add(Calendar.DATE, -sundayPlus);// 在此日期的基础上减去sundayPlus就是上个周末的日期 + return getStringDateByDate(c.getTime(), splite); + } + + /** + * 获得上个周末的日期,date格式 + * + * @return Date + */ + public static Date getLastWeekDate() { + String stringDate=getNowStringDate("-"); + int year = Integer.parseInt(stringDate.substring(0, 4)); + int month = Integer.parseInt(stringDate.substring(5, 7)); + int day = Integer.parseInt(stringDate.substring(8, 10)); + int sundayPlus=getSundayPlus(); + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month - 1); + c.set(Calendar.DAY_OF_MONTH, day); + c.add(Calendar.DATE, -sundayPlus);// 在此日期的基础上减去sundayPlus就是上个周末的日期 + return c.getTime(); + + } + + /** + * 获得上个月末的 字符串日期 + * @return String + */ + public static String getLastMonthStringDate(String splite) { + String stringDate=getNowStringDate("-"); + int year = Integer.parseInt(stringDate.substring(0, 4)); + int month = Integer.parseInt(stringDate.substring(5, 7)); + int day = Integer.parseInt(stringDate.substring(8, 10)); + int monthPlus=getMonthPlus(); + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month - 1); + c.set(Calendar.DAY_OF_MONTH, day); + c.add(Calendar.DATE, -monthPlus);// 在此日期的基础上减去sundayPlus就是上个周末的日期 + return getStringDateByDate(c.getTime(), splite); + } + + /** + * 获得上个月末的日期,date格式 + * + * @return Date + */ + public static Date getLastMonthDate() { + String stringDate=getNowStringDate("-"); + int year = Integer.parseInt(stringDate.substring(0, 4)); + int month = Integer.parseInt(stringDate.substring(5, 7)); + int day = Integer.parseInt(stringDate.substring(8, 10)); + int monthPlus=getMonthPlus(); + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month - 1); + c.set(Calendar.DAY_OF_MONTH, day); + c.add(Calendar.DATE, -monthPlus);// 在此日期的基础上减去sundayPlus就是上个周末的日期 + return c.getTime(); + + } + + + /** + * 获得上个季度末的 字符串日期 + * @return String 2012-03-30 + */ + public static String getLastQuarterStringDate(String splite) { + String stringDate=getNowStringDate("-"); + int year = Integer.parseInt(stringDate.substring(0, 4)); + int month = Integer.parseInt(stringDate.substring(5, 7)); + switch (month) { + case 1: + case 2: + case 3: + month=12; + year--; + break; + case 4: + case 5: + case 6: + month=3; + break; + case 7: + case 8: + case 9: + month=6; + break; + case 10: + case 11: + case 12: + month=9; + break; + default: + break; + } + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month);//这里月份本来是要-1的,所以这里就相当于月份month+1, + c.set(Calendar.DAY_OF_MONTH, 1);//此时的日期刚好为month+1月份的一号 + c.add(Calendar.DATE, -1);// 在1号的基础上减去一天,就是month月末的日期 + return getStringDateByDate(c.getTime(), splite); + } + + /** + * 获得上个季度末的日期,date格式 + * @return Date + */ + public static Date getLastQuarterDate() { + String stringDate=getNowStringDate("-"); + int year = Integer.parseInt(stringDate.substring(0, 4)); + int month = Integer.parseInt(stringDate.substring(5, 7)); + switch (month) { + case 1: + case 2: + case 3: + month=12; + year--; + break; + case 4: + case 5: + case 6: + month=3; + break; + case 7: + case 8: + case 9: + month=6; + break; + case 10: + case 11: + case 12: + month=9; + break; + default: + break; + } + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month);//这里月份本来是要-1的,所以这里就相当于月份month+1, + c.set(Calendar.DAY_OF_MONTH, 1);//此时的日期刚好为month+1月份的一号 + c.add(Calendar.DATE, -1);// 在1号的基础上减去一天,就是month月末的日期 + return c.getTime(); + } + /** + * 获得指定月份的,月末日期 + * @param month 月 + * @return String + */ + public static String getMonthEndStringDateByMonth(int month,String splite){ + String stringDate=getNowStringDate("-"); + int year = Integer.parseInt(stringDate.substring(0, 4)); + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month);//这里月份本来是要-1的,所以这里就相当于月份month+1, + c.set(Calendar.DAY_OF_MONTH, 1);//此时的日期刚好为month+1月份的一号 + c.add(Calendar.DATE, -1);// 在1号的基础上减去一天,就是month月末的日期 + return getStringDateByDate(c.getTime(), splite); + } + + /** + * 获得当前日期与上周日相差的天数 按照外国的理解:星期日是第一天,星期一是第二天. 中国:星期一是第一天. + * + * @return int今天和上周日的相差日期 + */ + public static int getSundayPlus() { + Calendar c = Calendar.getInstance(); + // 获得今天是一周的第几天,星期日是第一天,星期二是第二天...... + int dayOfWeek = c.get(Calendar.DAY_OF_WEEK) - 1; // 因为按中国礼拜一,作为第一天所以这里减1 + if(dayOfWeek==0){ + dayOfWeek=7; + } + return dayOfWeek; + } + + /** + * 获得当前日期与上个月末日期的相差天数 + * + * @return int 今天和上月末的相差日期 + */ + public static int getMonthPlus() { + Calendar c = Calendar.getInstance(); + // 获得今天是一周的第几天,星期日是第一天,星期二是第二天...... + int dayOfMonth = c.get(Calendar.DAY_OF_MONTH); + return dayOfMonth; + } + /** + * 获得两个时间相差的时间间隔,以分钟来计算 + * @param time01 格式为:2012-02-02 08:08:20 + * @param time02 格式为:2012-02-02 08:08:20 + * @return 相差的分钟数 + */ + public static long getTwoTimeInterval(String time01,String time02){ + long t01=stringTimeToMilliseconds(time01); + long t02=stringTimeToMilliseconds(time02); + return Math.abs((t01-t02)/60000); + } + /** + * 把一个字符串日期 转换成毫秒数 + * @param time 格式为:2012-02-02 08:08:20 + * @return 毫秒数 + */ + public static long stringTimeToMilliseconds(String time){ + int year = Integer.parseInt(time.substring(0, 4)); + int month = Integer.parseInt(time.substring(5, 7)); + int day = Integer.parseInt(time.substring(8, 10)); + int hour= Integer.parseInt(time.substring(11, 13)); + int minus= Integer.parseInt(time.substring(14, 16)); + int second= Integer.parseInt(time.substring(17, 19)); + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, year); + c.set(Calendar.MONTH, month - 1); + c.set(Calendar.DAY_OF_MONTH, day); + c.add(Calendar.HOUR_OF_DAY, hour); + c.add(Calendar.MINUTE, minus); + c.add(Calendar.SECOND, second); + return c.getTimeInMillis(); + } + // java.util.Date 是 java.sql.Date 的父类 + // java.sql.Date转为java.util.Date + // java.sql.Date date=new java.sql.Date(); + // java.util.Date d=new java.util.Date (date.getTime()); + // + + // + // java.util.Date转为java.sql.Date + // java.util.Date utilDate=new Date(); + // java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime()); + +} diff --git a/plugin-finance-function/src/main/java/com/fr/plugin/FV.java b/plugin-finance-function/src/main/java/com/fr/plugin/FV.java new file mode 100644 index 0000000..c4f0b8d --- /dev/null +++ b/plugin-finance-function/src/main/java/com/fr/plugin/FV.java @@ -0,0 +1,60 @@ +package com.fr.plugin; + +import com.fr.general.GeneralUtils; +import com.fr.intelli.record.Focus; +import com.fr.intelli.record.Original; +import com.fr.plugin.context.PluginContexts; +import com.fr.record.analyzer.EnableMetrics; +import com.fr.script.AbstractFunction; +import com.fr.stable.StringUtils; +import com.fr.stable.exception.FormulaException; +import com.fr.stable.fun.Authorize; +import com.fr.third.v2.org.apache.poi.ss.formula.functions.FinanceLib; + +import java.math.BigDecimal; +@EnableMetrics +@Authorize(callSignKey = FinanceFunctionConstants.PLUGIN_ID) +public class FV extends AbstractFunction { + @Override + @Focus(id = "com.fr.plugin.function.finance", text = "Plugin-Test_Function_Finance", source = Original.PLUGIN) + public Object run(Object[] objects) throws FormulaException { + if (PluginContexts.currentContext().isAvailable()) { + return cal(objects); + } else { + return "插件未激活,请购买使用"; + } + } + + private Object cal(Object[] objects) { + //年利率 + double rate = trans(objects[0]).doubleValue(); + //贷款期数 + double nper = trans(objects[1]).doubleValue(); + //每期的付款金额 + double pmt= trans(objects[2]).doubleValue(); + //pv 可选 + double pv = 0D; + if(objects.length == 4) { + pv = trans(objects[3]).doubleValue(); + } + //type 可选 + boolean type=false; + if(objects.length == 5) { + pv = trans(objects[3]).doubleValue(); + type = trans(objects[4]).doubleValue()==1; + } + return FinanceLib.fv(rate,nper,pmt,pv,type); + } + + private static BigDecimal trans(Object ele){ + if (ele == null|| StringUtils.isBlank(ele.toString())) { + return new BigDecimal("0"); + } + try{ + String val = GeneralUtils.objectToString(ele); + return new BigDecimal(val.trim()); + }catch(Exception e){ + throw new RuntimeException(e); + } + } +} diff --git a/plugin-finance-function/src/main/java/com/fr/plugin/FinanceFinder.java b/plugin-finance-function/src/main/java/com/fr/plugin/FinanceFinder.java new file mode 100644 index 0000000..fd23f22 --- /dev/null +++ b/plugin-finance-function/src/main/java/com/fr/plugin/FinanceFinder.java @@ -0,0 +1,10 @@ +package com.fr.plugin; + +import com.fr.stable.fun.impl.AbstractLocaleFinder; + +public class FinanceFinder extends AbstractLocaleFinder { + @Override + public String find() { + return "com/fr/plugin/demo"; + } +} diff --git a/plugin-finance-function/src/main/java/com/fr/plugin/FinanceFunctionConstants.java b/plugin-finance-function/src/main/java/com/fr/plugin/FinanceFunctionConstants.java new file mode 100644 index 0000000..d94ee9b --- /dev/null +++ b/plugin-finance-function/src/main/java/com/fr/plugin/FinanceFunctionConstants.java @@ -0,0 +1,6 @@ +package com.fr.plugin; + +public class FinanceFunctionConstants { + + public static final String PLUGIN_ID = "com.fr.plugin.function.finance"; +} diff --git a/plugin-finance-function/src/main/java/com/fr/plugin/FinanceGroup.java b/plugin-finance-function/src/main/java/com/fr/plugin/FinanceGroup.java new file mode 100644 index 0000000..93eba0e --- /dev/null +++ b/plugin-finance-function/src/main/java/com/fr/plugin/FinanceGroup.java @@ -0,0 +1,29 @@ +package com.fr.plugin; + +import com.fr.stable.fun.impl.AbstractFunctionDefContainer; +import com.fr.stable.script.FunctionDef; + +public class FinanceGroup extends AbstractFunctionDefContainer { + @Override + public FunctionDef[] getFunctionDefs() { + return new FunctionDef[]{ + new FunctionDef("IPMT","基于固定利率及等额分期付款方式,返回给定期数内对投资的利息偿还额函数IPMT:参数1为每期期利率,参数2为用于计算其利息数额的期数,参数3为总期数,参数4现值pv,参数5未来值fv,参数6付款时间是在期初还是期末,前四个参数必填,后面两个选填。",IPMT.class.getName()), + new FunctionDef("PPMT","PPMT函数返回根据定期固定付款和固定利率而定的投资在已知期间内的本金偿付额:参数1为每期利率,参数2为期数,参数3为总期数,参数4现值pv,参数5为未来值fv,参数6付款时间是在期初还是期末,前四个参数必填,后面两个选填。",PPMT.class.getName()), + new FunctionDef("PMT","PMT函数根据固定付款额和固定利率计算贷款的付款额:参数1为每期利率,参数2为贷款总期数,参数3现值pv即本金,参数4为未来值fv,参数5为付款时间是在期初还是期末,前三个参数必填,后面两个选填。",PMT.class.getName()), + new FunctionDef("PV","投资的现值PV:参数1为每期利率,参数2为总期数,参数3为每期付款金额,参数4未来值fv,参数5付款时间是在期初还是期末,前三个参数必填,后面两个选填。",PV.class.getName()), + new FunctionDef("FV","计算投资价值的函数FV:参数1为利率,参数2为总期数,参数3为每期付款金额,参数4现值pv,参数5每期付款时间是在期初还是期末,前三个参数必填,后面两个选填。",FV.class.getName()), + new FunctionDef("NPV","使用贴现率和一系列未来支出(负值)和收益(正值)来计算一项投资的净现值NPV:参数1为利率,可变参数-现金流,按正确的顺序输入支出值和收益值。",NPV.class.getName()), + new FunctionDef("NPER","基于固定利率及等额分期付款方式,返回某项投资的总期数NPER:参数1为各期利率,参数2为每期付款金额,参数3为现值pv,参数4未来值fv,参数5付款时间是在期初还是期末,前三个参数必填,后面两个选填。",NPER.class.getName()), + new FunctionDef("IRR","IRR函数返回由值中的数字表示的一系列现金流的内部收益率:参数1为现金流数组,参数2为估计值,参数2为选填,如果省略guess,则假定它为0.1。",IRR.class.getName()), + new FunctionDef("XIRR","XIRR函数返回一组不一定定期发生的现金流的内部收益率:参数1为现金流数组,参数2为对应还款日期列表,参数3估计值为选填。",XIRR.class.getName()), + new FunctionDef("Rate","RATE函数返回年金每期的利率:参数1为贷款总期数,参数2为每期付款金额,参数3为付款金额的总和,参数4为未来值fv,参数5为type付款时间是在期初还是期末,参数6为预期利率,省略的话默认为0.1,前三个参数必填,后三个选填。",Rate.class.getName()), + new FunctionDef("MIRR","MIRR函数返回一系列定期现金流的修改后内部收益率,同时考虑投资的成本和现金再投资的收益率:参数1为现金流数组,参数2为资金支付利率,参数3为再投资收益率。",MIRR.class.getName()) + + }; + } + + @Override + public String getGroupName() { + return "财务函数"; + } +} diff --git a/plugin-finance-function/src/main/java/com/fr/plugin/IPMT.java b/plugin-finance-function/src/main/java/com/fr/plugin/IPMT.java new file mode 100644 index 0000000..5dbb404 --- /dev/null +++ b/plugin-finance-function/src/main/java/com/fr/plugin/IPMT.java @@ -0,0 +1,66 @@ +package com.fr.plugin; + +import com.fr.general.GeneralUtils; +import com.fr.intelli.record.Focus; +import com.fr.intelli.record.Original; +import com.fr.plugin.context.PluginContexts; +import com.fr.record.analyzer.EnableMetrics; +import com.fr.script.AbstractFunction; +import com.fr.stable.StringUtils; +import com.fr.stable.exception.FormulaException; +import com.fr.stable.fun.Authorize; +import com.fr.third.v2.org.apache.poi.ss.formula.functions.Finance; + +import java.math.BigDecimal; +@EnableMetrics +@Authorize(callSignKey = FinanceFunctionConstants.PLUGIN_ID) +public class IPMT extends AbstractFunction { + @Override + @Focus(id = "com.fr.plugin.function.finance", text = "Plugin-Test_Function_Finance", source = Original.PLUGIN) + public Object run(Object[] objects) throws FormulaException { + if (PluginContexts.currentContext().isAvailable()) { + return cal(objects); + } else { + return "插件未激活,请购买使用"; + } + + } + + private Object cal(Object[] objects) { + // 各期利率 必需 + double rate = trans(objects[0]).doubleValue(); + // 指定期数 per 必需 + int per = trans(objects[1]).intValue(); + //年金的付款总期数 必需 + int nper = trans(objects[2]).intValue(); + //pv 必需 现值即一系列未来付款当前值的总和 + double pv = trans(objects[3]).doubleValue(); + + if (objects.length == 4) { + return Finance.ipmt(rate,per,nper,pv); + }else if (objects.length == 5) { + //未来值 + double fv = trans(objects[4]).doubleValue(); + return Finance.ipmt(rate,per,nper,pv,fv); + }else if (objects.length == 6) { + double fv = trans(objects[4]).doubleValue(); + int type= trans(objects[5]).intValue(); + return Finance.ipmt(rate,per,nper,pv,fv,type); + }else { + throw new RuntimeException("输入参数有误"); + } + } + + private static BigDecimal trans(Object ele){ + if (ele == null|| StringUtils.isBlank(ele.toString())) { + return new BigDecimal("0"); + } + try{ + String val = GeneralUtils.objectToString(ele); + return new BigDecimal(val.trim()); + }catch(Exception e){ + throw new RuntimeException(e); + } + } + +} diff --git a/plugin-finance-function/src/main/java/com/fr/plugin/IRR.java b/plugin-finance-function/src/main/java/com/fr/plugin/IRR.java new file mode 100644 index 0000000..769609c --- /dev/null +++ b/plugin-finance-function/src/main/java/com/fr/plugin/IRR.java @@ -0,0 +1,196 @@ +package com.fr.plugin; /** + * @file: PACKAGE_NAME.IRR + * @desc: + * @date:2020/7/7 16:57 + * @author:yanghui + **/ + +import com.fr.general.FArray; +import com.fr.general.GeneralUtils; +import com.fr.intelli.record.Focus; +import com.fr.intelli.record.Original; +import com.fr.plugin.context.PluginContexts; +import com.fr.record.analyzer.EnableMetrics; +import com.fr.script.AbstractFunction; +import com.fr.stable.StringUtils; +import com.fr.stable.fun.Authorize; + +import java.math.BigDecimal; + +@EnableMetrics +@Authorize(callSignKey = FinanceFunctionConstants.PLUGIN_ID) +public class IRR extends AbstractFunction { + + private static final long serialVersionUID = 7634415917398642321L; + private static final String ERROR_VALUE = "#NUM!"; + + + @Override + @Focus(id = "com.fr.plugin.function.finance", text = "Plugin-Test_Function_Finance", source = Original.PLUGIN) + public Object run(Object[] args) { + + if (PluginContexts.currentContext().isAvailable()) { + return cal(args); + } else { + return "插件未激活,请购买使用"; + } + + } + + private Object cal(Object[] args) { + try{ + if(1 == args.length){ + return run( transArr( (FArray) args[0] ) ); + }else if(2 == args.length){ + return run( transArr( (FArray) args[0] ), trans( args[1] ) ); + }else if(3==args.length){ + return "参数个数不合格!"; + } + else{ + FArray cashflow = new FArray(); + BigDecimal guess = new BigDecimal(0.1d); + for (int i = 0; i < args.length; i++) { + if(args[i] == null|| StringUtils.isBlank(args[i].toString())){ + continue; + } + BigDecimal var = new BigDecimal(GeneralUtils.objectToString(args[i]).trim()); + + if ((var.compareTo(BigDecimal.ONE) <1) && (var.compareTo(BigDecimal.ZERO)>-1)) { + guess = var; + }else { + cashflow.add(var); + } + } + return run(cashflow,guess); + } + }catch(Exception e){ + System.out.println(e); + } + return ERROR_VALUE; + } + + /** + * 将其他类型的数字转换为大数(保证精度) + * @param ele + * @return + */ + private static BigDecimal trans(Object ele){ + try{ + String val = GeneralUtils.objectToString(ele); + return new BigDecimal(val.trim()); + }catch(Exception e){ + throw new RuntimeException(e); + } + } + + /** + * 将数组转换为大数数组 + * @param in + * @return + */ + private static FArray transArr(FArray in){ + FArray rt = new FArray(); + for(int i=0;i cashflow){ + return run( cashflow, new BigDecimal(0.1d) ); + } + + private static BigDecimal run(FArray cashflow, BigDecimal guess){ + BigDecimal maxrate = initRateMax(cashflow,guess); + BigDecimal minrate = initRateMin(cashflow,guess); + for( int i=0; i cashflow, BigDecimal guess){ + for( int i=0; i cashflow, BigDecimal guess){ + for( int i=0; i cashflow, BigDecimal rate){ + BigDecimal npv = ZERO; + BigDecimal rpowj = ONE;//(1+r)^0 + BigDecimal radd1 = rate.add(ONE);//1+r + for( int j=0; j 0.0D) { + fv += anIn * Math.pow(1.0D + financeRate, (double)(numOfYears - indexN++)); + } + } + + if (fv != 0.0D && pv != 0.0D) { + value = Math.pow(-fv / pv, 1.0D / (double)numOfYears) - 1.0D; + } + + return value; + } + +} diff --git a/plugin-finance-function/src/main/java/com/fr/plugin/NPER.java b/plugin-finance-function/src/main/java/com/fr/plugin/NPER.java new file mode 100644 index 0000000..81364ac --- /dev/null +++ b/plugin-finance-function/src/main/java/com/fr/plugin/NPER.java @@ -0,0 +1,62 @@ +package com.fr.plugin; + +import com.fr.general.GeneralUtils; +import com.fr.intelli.record.Focus; +import com.fr.intelli.record.Original; +import com.fr.plugin.context.PluginContexts; +import com.fr.record.analyzer.EnableMetrics; +import com.fr.script.AbstractFunction; +import com.fr.stable.StringUtils; +import com.fr.stable.exception.FormulaException; +import com.fr.stable.fun.Authorize; +import com.fr.third.v2.org.apache.poi.ss.formula.functions.FinanceLib; + +import java.math.BigDecimal; + +@EnableMetrics +@Authorize(callSignKey = FinanceFunctionConstants.PLUGIN_ID) +public class NPER extends AbstractFunction { + @Override + @Focus(id = "com.fr.plugin.function.finance", text = "Plugin-Test_Function_Finance", source = Original.PLUGIN) + public Object run(Object[] objects) throws FormulaException { + if (PluginContexts.currentContext().isAvailable()) { + return cal(objects); + } else { + return "插件未激活,请购买使用"; + } + } + + private Object cal(Object[] objects) { + //某一期间的贴现率 + double rate = trans(objects[0]).doubleValue(); + + //每期的付款金额 + double pmt= trans(objects[1]).doubleValue(); + //pv 可选 + double pv = trans(objects[2]).doubleValue(); + //fv 可选 + double fv = 0D; + if(objects.length == 4) { + fv = trans(objects[3]).doubleValue(); + } + //type 可选 + boolean type=false; + if(objects.length == 5) { + fv = trans(objects[3]).doubleValue(); + type = trans(objects[4]).doubleValue()==1; + } + return FinanceLib.nper(rate,pmt,pv,fv,type); + } + + private static BigDecimal trans(Object ele){ + if (ele == null|| StringUtils.isBlank(ele.toString())) { + return new BigDecimal("0"); + } + try{ + String val = GeneralUtils.objectToString(ele); + return new BigDecimal(val.trim()); + }catch(Exception e){ + throw new RuntimeException(e); + } + } +} diff --git a/plugin-finance-function/src/main/java/com/fr/plugin/NPV.java b/plugin-finance-function/src/main/java/com/fr/plugin/NPV.java new file mode 100644 index 0000000..cbfc866 --- /dev/null +++ b/plugin-finance-function/src/main/java/com/fr/plugin/NPV.java @@ -0,0 +1,52 @@ +package com.fr.plugin; + +import com.fr.general.GeneralUtils; +import com.fr.intelli.record.Focus; +import com.fr.intelli.record.Original; +import com.fr.plugin.context.PluginContexts; +import com.fr.record.analyzer.EnableMetrics; +import com.fr.script.AbstractFunction; +import com.fr.stable.StringUtils; +import com.fr.stable.exception.FormulaException; +import com.fr.stable.fun.Authorize; +import com.fr.third.v2.org.apache.poi.ss.formula.functions.FinanceLib; + +import java.math.BigDecimal; +@EnableMetrics +@Authorize(callSignKey = FinanceFunctionConstants.PLUGIN_ID) +public class NPV extends AbstractFunction { + @Override + @Focus(id = "com.fr.plugin.function.finance", text = "Plugin-Test_Function_Finance", source = Original.PLUGIN) + public Object run(Object[] objects) throws FormulaException { + if (PluginContexts.currentContext().isAvailable()) { + return cal(objects); + } else { + return "插件未激活,请购买使用"; + } + + } + + private Object cal(Object[] objects){ + //某一期间的贴现率 + double rate = trans(objects[0]).doubleValue(); + + double[] doubles = new double[objects.length]; + for (int i = 1; i FINANCIAL_PRECISION) && (i < FINANCIAL_MAX_ITERATIONS)) { + rate = (y1 * x0 - y0 * x1) / (y1 - y0); + x0 = x1; + x1 = rate; + + if (Math.abs(rate) < FINANCIAL_PRECISION) { + y = pv * (1 + nper * rate) + pmt * (1 + rate * type) * nper + fv; + } else { + f = Math.exp(nper * Math.log(1 + rate)); + y = pv * f + pmt * (1 / rate + type) * (f - 1) + fv; + } + + y0 = y1; + y1 = y; + ++i; + } + return rate; + + } + + public double simpleCalculateRate(int nper, double pmt, double pv) { + + double fv = 0; + + //0或省略-期末支付 + double type = 0; + + //如果省略预期利率,则假设该值为 10%。 + double guess = 0.1; + + return calculateRate(nper, pmt, pv, fv, type, guess); + } + + + +} \ No newline at end of file diff --git a/plugin-finance-function/src/main/java/com/fr/plugin/UpbaaDate.java b/plugin-finance-function/src/main/java/com/fr/plugin/UpbaaDate.java new file mode 100644 index 0000000..b57bd02 --- /dev/null +++ b/plugin-finance-function/src/main/java/com/fr/plugin/UpbaaDate.java @@ -0,0 +1,111 @@ +package com.fr.plugin; + +/** + * + * @author 小木桩(staker) 这个类是辅助计算xirr的类, 主要是以时间对应现金的形式组成一条现金流 而xirr则是由多条现金流计算出来的 + */ +public class UpbaaDate { + public int year; + public int month; + public int day; + public double payment;// 对应的现金 + + public UpbaaDate(int year, int month, int day, double payment) { + this.year = year; + this.month = month; + this.day = day; + this.payment = payment; + } + + /** + * + * @param stringTime + * 格式为:2013/02/05 + * @param payment 对应的现金 + */ + public UpbaaDate(String stringTime, double payment) { + try { + int start = stringTime.indexOf("-")>stringTime.indexOf("/")?stringTime.indexOf("-"):stringTime.indexOf("/"); + + int end = stringTime.lastIndexOf("-")>stringTime.lastIndexOf("/")?stringTime.lastIndexOf("-"):stringTime.lastIndexOf("/"); + String month = stringTime.substring(start + 1, end); + if (month.length() == 1) { + month = "0" + month; + } + + + String day = stringTime.substring(end + 1); + if (day.length() == 1) { + day = "0" + day; + } + this.year=Integer.parseInt(stringTime.substring(0, 4)); + this.month = Integer.parseInt(month); + this.day=Integer.parseInt(day); + } catch (Exception e) { + // TODO: handle exception + } + this.payment=payment; + } + + /** + * 使用默认构造方法的话,则对应的是当前的时间,即今天的时间 + */ + public UpbaaDate() { + String stringTime=DateUtil.getNowStringDate("/"); + setStringDate(stringTime); + } + /** + * 设置年月日的字符串格式的时间 + * @param stringTime 格式为:2013/02/05 + */ + public void setStringDate(String stringTime){ + try { + this.year=Integer.parseInt(stringTime.substring(0, 4)); + this.month=Integer.parseInt(stringTime.substring(5, 7)); + this.day=Integer.parseInt(stringTime.substring(8, 10)); + } catch (Exception e) { + // TODO: handle exception + } + } + + /** + * 获得1970年到现在的天数 + * @return long + */ + public long getDaysFrom1970(){ + return DateUtil.getDaysFrom1970(year, month, day); + } + /** + * 获得字符串的日期 + * @param split 分隔符 如 - + * @return 如:2013-02-22 + */ + public String getStringDate(String split){ + if(split==null){ + split="-"; + } + StringBuffer stringDate=new StringBuffer(); + stringDate.append(year).append(split); + if(month<10){ + stringDate.append(0).append(month); + }else{ + stringDate.append(month); + } + stringDate.append(split); + if(day<10){ + stringDate.append(0).append(day); + }else{ + stringDate.append(day); + } + return stringDate.toString(); + } + + public static void main(String[] args) { + String a = "2020/7/3"; + int year=Integer.parseInt(a.substring(0, 4)); + + int month=Integer.parseInt(a.substring(5, 7)); + int day=Integer.parseInt(a.substring(8, 10)); + + } +} diff --git a/plugin-finance-function/src/main/java/com/fr/plugin/XIRR.java b/plugin-finance-function/src/main/java/com/fr/plugin/XIRR.java new file mode 100644 index 0000000..cb3129b --- /dev/null +++ b/plugin-finance-function/src/main/java/com/fr/plugin/XIRR.java @@ -0,0 +1,136 @@ +package com.fr.plugin; + +import com.fr.general.FArray; +import com.fr.general.GeneralUtils; +import com.fr.intelli.record.Focus; +import com.fr.intelli.record.Original; +import com.fr.plugin.context.PluginContexts; +import com.fr.record.analyzer.EnableMetrics; +import com.fr.script.AbstractFunction; +import com.fr.stable.StringUtils; +import com.fr.stable.exception.FormulaException; +import com.fr.stable.fun.Authorize; + +import java.math.BigDecimal; +import java.util.ArrayList; + +/** + * @file: PACKAGE_NAME.XIRR + * @desc: + * @date:2020/7/7 17:41 + * @author:yanghui + **/ +@EnableMetrics +@Authorize(callSignKey = FinanceFunctionConstants.PLUGIN_ID) +public class XIRR extends AbstractFunction { + + private static final String ERROR_VALUE = "#NUM!"; + + @Override + @Focus(id = "com.fr.plugin.function.finance", text = "Plugin-Test_Function_Finance", source = Original.PLUGIN) + public Object run(Object[] objects) throws FormulaException { + if (PluginContexts.currentContext().isAvailable()) { + return cal(objects); + } else { + return "插件未激活,请购买使用"; + } + } + + private Object cal(Object[] objects) { + try{ + double guess = 0.1; + if (objects.length == 3) { + guess = trans(objects[2]).doubleValue(); + } + if (objects.length > 3) { + FArray cash = new FArray(); + FArray date = new FArray<>(); + for (int i = 0; i < objects.length; i++) { + if(objects[i] == null|| StringUtils.isBlank(objects[i].toString())){ + continue; + } + String trim = GeneralUtils.objectToString(objects[i]).trim(); + int start = trim.indexOf("-")>trim.indexOf("/")?trim.indexOf("-"):trim.indexOf("/"); + if (start > 0) { + date.add(trim); + }else{ + BigDecimal var = new BigDecimal(trim); + if ((var.compareTo(BigDecimal.ONE) <1) && (var.compareTo(BigDecimal.ZERO)>-1)) { + guess = var.doubleValue(); + }else { + cash.add(var); + } + } + } + return run(cash, date, guess); + } + return run( transArr( (FArray) objects[0] ), transToString((FArray)objects[1]),guess); + }catch(Exception e){ + System.out.println(e); + } + return ERROR_VALUE; + } + + /** + * 将数组转换为大数数组 + * @param in + * @return + */ + private static FArray transArr(FArray in){ + FArray rt = new FArray(); + for(int i=0;i transToString(FArray in){ + FArray rt = new FArray<>(); + for(int i=0;i cashflow, FArray dueDate,double guess){ + + ArrayList list=new ArrayList(); + for(int i=0;i listUpbaa; + public XirrData(ArrayList listUpbaa){ + this.listUpbaa=listUpbaa; + if (listUpbaa != null) { + try { + startDays = listUpbaa.get(0).getDaysFrom1970(); + } catch (Exception e) { + } + } + } + /** + * 计算收益值 + * @return double + */ + public double getPal(){ + if(listUpbaa==null){ + return 0.0; + } + double pal=0; + int count=listUpbaa.size(); + for (int i = 0; i < count; i++) { + pal=pal+listUpbaa.get(i).payment; + } + return pal; + } + /** + * 通过传进来的多条现金流获得xirr值 + * @return 返回收益率 + */ + public double getXirr(double guess) { + if(listUpbaa == null){ + return Error_Null_List; + } + int count=listUpbaa.size(); + if (count <= 1) { + return Error_Less_Cash;// 如果只有一条现金流则返回Error_Less_Cash + } + + if (listUpbaa.get(0).payment > 0) { + return Error_First_Payment; + } + + for (int i = 0; i < count; i++) { + if (listUpbaa.get(1).getDaysFrom1970() < startDays) { + return Error_Date;// 如果不止一条现金流则判断第一条现金流是否为时间最早的,如果不是的话则返回ERROR_DATE + } + } + + boolean isEarn = getXNPVByRate(0) > 0;// 记录是赚钱了还是亏本了 + + if (isEarn) { + return calXirr(0, Max_Rate,guess); + } else { + return calXirr(Min_Rate, 0,guess); + } + } + + private double calXirr(double min,double Max,double guess){ + int calculateCount = 50; + double XIRR = guess; + while (calculateCount > 0) { + XIRR = (min + Max) / 2f; + double xnvp = getXNPVByRate(XIRR); + if (xnvp > 0) { + min = XIRR; + } else { + Max = XIRR; + } + if (Math.abs(XIRR) < Critical) { + break; + } + calculateCount--; + } + return XIRR; + } + + private double getXNPVByRate(double rate) { + double result = 0; + int size = listUpbaa.size(); + for (int i = 0; i < size; i++) { + UpbaaDate date = listUpbaa.get(i); + result = result + + getOneValue(date.payment, rate, (int) date.getDaysFrom1970() + - (int) startDays); + } + return result; + } + + private double getOneValue(double payment, double rate, int dateDistance) { + return payment / ((Math.pow((1 + rate), dateDistance / 365f))); + } +} diff --git a/plugin-finance-function/src/main/resources/com/fr/plugin/demo.properties b/plugin-finance-function/src/main/resources/com/fr/plugin/demo.properties new file mode 100644 index 0000000..ce575b2 --- /dev/null +++ b/plugin-finance-function/src/main/resources/com/fr/plugin/demo.properties @@ -0,0 +1 @@ +Plugin-Test_Function_Abs=Test FINANCE \ No newline at end of file diff --git a/plugin-finance-function/src/main/resources/com/fr/plugin/demo_zh_CN.properties b/plugin-finance-function/src/main/resources/com/fr/plugin/demo_zh_CN.properties new file mode 100644 index 0000000..a26d0ca --- /dev/null +++ b/plugin-finance-function/src/main/resources/com/fr/plugin/demo_zh_CN.properties @@ -0,0 +1 @@ +Plugin-Test_Function_Abs=\u6D4B\u8BD5\u8D22\u52A1\u51FD\u6570 \ No newline at end of file