|
@@ -0,0 +1,254 @@
|
|
|
+package com.winhc.bigdata.calc;
|
|
|
+
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.util.NumberUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import org.apache.commons.logging.Log;
|
|
|
+import org.apache.commons.logging.LogFactory;
|
|
|
+
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+public class DimScore {
|
|
|
+
|
|
|
+ private static final Log LOG = LogFactory.getLog(DimScore.class);
|
|
|
+
|
|
|
+ public static double registEvaluate(String registCapiStr) {
|
|
|
+ //private static final Pattern p = Pattern.compile("[^0-9]");
|
|
|
+ //String registCapiStr = StringUtils.isNotBlank(resEx) ? p.matcher(resEx).replaceAll("").trim() : "";
|
|
|
+ if (StrUtil.isBlank(registCapiStr)) {
|
|
|
+ return 5;
|
|
|
+ }
|
|
|
+ double registCapi = 0d;
|
|
|
+ double registScore = 5;
|
|
|
+ try {
|
|
|
+ registCapi = MoneyConversion.convert(registCapiStr, MoneyConversion.MoneyUnit.万元);
|
|
|
+ if (registCapi < 50) {
|
|
|
+ registScore = 5;
|
|
|
+ } else if (registCapi >= 50 && registCapi < 500) {
|
|
|
+ registScore = 10;
|
|
|
+ } else if (registCapi >= 500 && registCapi < 1000) {
|
|
|
+ registScore = 15;
|
|
|
+ } else if (registCapi >= 1000 && registCapi < 5000) {
|
|
|
+ registScore = 20;
|
|
|
+ } else if (registCapi >= 5000) {
|
|
|
+ registScore = 25;
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ LOG.error(e.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ return registScore;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static double actualEvaluate(String recCapStr, String registCapiStr) {
|
|
|
+
|
|
|
+ if (StrUtil.isBlank(recCapStr) || StrUtil.isBlank(registCapiStr)) {
|
|
|
+ return 3;
|
|
|
+ }
|
|
|
+ double registCapi = 0d;
|
|
|
+
|
|
|
+ double recCap = 0d;
|
|
|
+
|
|
|
+ try {
|
|
|
+ registCapi = MoneyConversion.convert(registCapiStr, MoneyConversion.MoneyUnit.万元);
|
|
|
+ recCap = MoneyConversion.convert(recCapStr, MoneyConversion.MoneyUnit.万元);
|
|
|
+
|
|
|
+ if (registCapi <= 0) {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ double rate = NumberUtil.div(recCap, registCapi, 4);
|
|
|
+ if (rate == 0) {
|
|
|
+ return 1;
|
|
|
+ } else if (rate > 0 && rate < NumberUtil.div(1, 5, 4)) {
|
|
|
+ return 2;
|
|
|
+ } else if (rate >= NumberUtil.div(1, 5, 4) && rate < NumberUtil.div(1, 3, 4)) {
|
|
|
+ return 3;
|
|
|
+ } else if (rate >= NumberUtil.div(1, 3, 4) && rate < NumberUtil.div(2, 3, 4)) {
|
|
|
+ return 4;
|
|
|
+ } else if (rate >= NumberUtil.div(2, 3, 4) && rate <= 1) {
|
|
|
+ return 5;
|
|
|
+ } else {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ LOG.error(e.toString());
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static double industryEvaluate(String industry) {
|
|
|
+ if (StrUtil.isBlank(industry)) {
|
|
|
+ return 6;
|
|
|
+ }
|
|
|
+ double score = 0;
|
|
|
+ switch (industry) {
|
|
|
+ case "批发和零售业":
|
|
|
+ score = 4;
|
|
|
+ break;
|
|
|
+ case "农、林、牧、渔业":
|
|
|
+ score = 5;
|
|
|
+ break;
|
|
|
+ case "居民服务、修理和其他服务业":
|
|
|
+ case "信息传输、软件和信息科技服务业":
|
|
|
+ score = 7;
|
|
|
+ break;
|
|
|
+ case "科学研究和技术服务业":
|
|
|
+ case "住宿和餐饮业":
|
|
|
+ case "教育":
|
|
|
+ case "金融业":
|
|
|
+ case "采矿业":
|
|
|
+ case "公共管理、社会保障和社会组织":
|
|
|
+ score = 8;
|
|
|
+ break;
|
|
|
+ case "文化、教育和娱乐业":
|
|
|
+ case "房地产业":
|
|
|
+ score = 9;
|
|
|
+ break;
|
|
|
+ case "制造业":
|
|
|
+ case "建筑业":
|
|
|
+ case "交通运输、仓储和邮政业":
|
|
|
+ case "水利、环境和公共设置管理业":
|
|
|
+ case "卫生和社会工作":
|
|
|
+ case "电力、热力、燃气及谁生产和供应业":
|
|
|
+ case "国际组织":
|
|
|
+ score = 10;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ score = 6;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return score;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static double companyTypeEvaluate(String econKind) {
|
|
|
+ float score = 6;
|
|
|
+ //TO DO 上市公司加分未考虑
|
|
|
+// float extScore = 0;
|
|
|
+// if (StrUtil.containsAny(econKind,"国资委","国家机构", "国有资产")) {
|
|
|
+// extScore = 15;
|
|
|
+// }
|
|
|
+// if ("1".equals(isOnStock) || (econKind.contains("非上市") && econKind.contains("上市"))) {
|
|
|
+// extScore = 8;
|
|
|
+// }
|
|
|
+ if (StrUtil.isBlank(econKind)) {
|
|
|
+ return 6;
|
|
|
+ } else if (StrUtil.containsAny(econKind, "普通合伙")) {
|
|
|
+ score = 6;
|
|
|
+ } else if (StrUtil.containsAny(econKind, "个体工商户", "有限合伙", "联营企业")) {
|
|
|
+ score = 7;
|
|
|
+ } else if (econKind.contains("集体所有制")) {
|
|
|
+ score = 8;
|
|
|
+ } else if (StrUtil.containsAny(econKind, "独资企业")) {
|
|
|
+ score = 10;
|
|
|
+ } else if (StrUtil.containsAny(econKind, "外商投资企业")) {
|
|
|
+ score = 12;
|
|
|
+ } else if (StrUtil.containsAny(econKind, "国有", "国企", "国有独资", "国有控股")) {
|
|
|
+ score = 13;
|
|
|
+ } else if (econKind.contains("股份有限公司")) {
|
|
|
+ score = 15;
|
|
|
+ } else if (econKind.contains("有限责任公司")) {
|
|
|
+ score = 10;
|
|
|
+ } else {
|
|
|
+ return 9;
|
|
|
+ }
|
|
|
+ return score;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static double companyStatusEvaluate(String status) {
|
|
|
+ if(StrUtil.isBlank(status)){
|
|
|
+ return 10f;
|
|
|
+ }
|
|
|
+ if (StrUtil.containsAny(status, "在业", "存续", "迁入", "迁出", "在营", "开业")) {
|
|
|
+ return 25;
|
|
|
+ } else if (StrUtil.containsAny(status, "停业")) {
|
|
|
+ return 5;
|
|
|
+ } else if (StrUtil.containsAny(status, "吊销", "清算")) {
|
|
|
+ return 0;
|
|
|
+ } else if (StrUtil.equals(status, "注销")) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ return 10f;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static double startDateEvaluate(String startDate) {
|
|
|
+ if (StrUtil.isBlank(startDate)) {
|
|
|
+ return 2d;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Date start = DateUtil.parse(startDate);
|
|
|
+ Date now = new Date();
|
|
|
+ long dis = DateUtil.betweenYear(start, now, true);
|
|
|
+ if (dis < 1) {
|
|
|
+ return 2d;
|
|
|
+ } else if (dis < 3) {
|
|
|
+ return 5d;
|
|
|
+ } else if (dis < 6) {
|
|
|
+ return 6d;
|
|
|
+ } else if (dis < 10) {
|
|
|
+ return 7f;
|
|
|
+ } else {
|
|
|
+ return 8f;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ LOG.error("", e);
|
|
|
+ return 2f;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static double endDateEvaluate(String termStart, String termEnd) {
|
|
|
+ if (StrUtil.isBlank(termStart)) {
|
|
|
+ return 2d;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Date start = DateUtil.parse(termStart);
|
|
|
+ Date end = new Date();
|
|
|
+ if (StrUtil.isNotBlank(termEnd)) {
|
|
|
+ end = DateUtil.parse(termEnd);
|
|
|
+ }
|
|
|
+ long dis = DateUtil.betweenYear(start, end, true);
|
|
|
+ if (dis < 1) {
|
|
|
+ return 2d;
|
|
|
+ } else if (dis < 5) {
|
|
|
+ return 4d;
|
|
|
+ } else {
|
|
|
+ return 5d;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ LOG.error("", e);
|
|
|
+ return 2d;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static double addressEvaluate(String address) {
|
|
|
+ if (StrUtil.isBlank(address)) {
|
|
|
+ return 2d;
|
|
|
+ }
|
|
|
+ if (address.contains("北京") || address.contains("上海") || address.contains("广东") || address.contains("江苏")
|
|
|
+ || address.contains("浙江")) {
|
|
|
+ return 7d;
|
|
|
+ } else if (address.contains("山东") || address.contains("四川") || address.contains("河南") ||
|
|
|
+ address.contains("安徽") || address.contains("河北") || address.contains("重庆") || address.contains("湖南") ||
|
|
|
+ address.contains("湖北") || address.contains("天津") || address.contains("贵州")) {
|
|
|
+ return 5d;
|
|
|
+ } else if (address.contains("黑龙江") || address.contains("吉林") || address.contains("辽宁") || address.contains("宁夏") ||
|
|
|
+ address.contains("内蒙古") || address.contains("西藏") || address.contains("新疆") || address.contains("青海") ||
|
|
|
+ address.contains("海南")) {
|
|
|
+ return 4d;
|
|
|
+ } else if (address.contains("山西") || address.contains("陕西") || address.contains("云南") || address.contains("广西")) {
|
|
|
+ return 3d;
|
|
|
+ } else if (address.contains("香港") || address.contains("澳门") || address.contains("台湾")) {
|
|
|
+ return 1d;
|
|
|
+ }
|
|
|
+ return 2d;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ System.out.println(DimScore.actualEvaluate("1", "3"));
|
|
|
+ System.out.println(DimScore.actualEvaluate("1", "0"));
|
|
|
+ System.out.println(DimScore.registEvaluate("400 "));
|
|
|
+ System.out.println(DimScore.registEvaluate("60.16 万美元"));
|
|
|
+ }
|
|
|
+}
|