Bläddra i källkod

Merge branch 'hotfix-fengkong-0115'

Hu Jie 7 år sedan
förälder
incheckning
c8fe1ac61d

+ 16 - 25
src/main/java/com/uas/platform/b2b/openapi/service/impl/TradingDataServiceImpl.java

@@ -5,9 +5,7 @@ import com.uas.platform.b2b.openapi.model.CustTrading;
 import com.uas.platform.b2b.openapi.model.RecentOfMonth;
 import com.uas.platform.b2b.openapi.model.RecentOfYear;
 import com.uas.platform.b2b.openapi.service.TradingDataService;
-import com.uas.platform.b2b.openapi.support.ErpRate;
-import com.uas.platform.b2b.openapi.support.NumFormat;
-import com.uas.platform.b2b.openapi.support.TimeStauts;
+import com.uas.platform.b2b.openapi.support.*;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -46,7 +44,7 @@ public class TradingDataServiceImpl implements TradingDataService {
         Double apBillSum = getApBillSum(enUU);
         // 获取历史退货率
         Double orderSum = getOrderSum(enUU);
-        Double historyReturn = NumFormat.getPercent(orderSum == 0.0 ? 0.0 : returnSum / orderSum);
+        Double historyReturn = NumFormat.getPercent(NumDefaultUtil.DOUBLE.equals(orderSum) ? NumDefaultUtil.DOUBLE : returnSum / orderSum);
         map.put("timeSum", timeSum);
         map.put("acceptSum", acceptSum);
         map.put("returnSum", returnSum);
@@ -64,23 +62,24 @@ public class TradingDataServiceImpl implements TradingDataService {
         Double sum = getAcceptSum(enUU, null) - getReturnSum(enUU, null);
         Integer sumNum = getAcceptNum(enUU, null) - getReturnNum(enUU, null);
         if (CollectionUtils.isNotEmpty(datas)) {
-            for (CustTrading custTrading : datas) {
+            System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "100");
+            datas.parallelStream().forEach(custTrading -> {
                 Double acceptSum = getAcceptSum(enUU, custTrading.getCustUU());
                 Double returnSum = getReturnSum(enUU, custTrading.getCustUU());
                 custTrading.setRealAccept(NumFormat.getTwo(acceptSum - returnSum));
-                if (StringUtils.isEmpty(acceptSum) || acceptSum == 0.0) {
-                    custTrading.setAcceptPercent(0.00);
+                if (StringUtils.isEmpty(acceptSum) || NumDefaultUtil.DOUBLE.equals(acceptSum)) {
+                    custTrading.setAcceptPercent(NumDefaultUtil.DOUBLE);
                 } else {
-                    custTrading.setAcceptPercent(NumFormat.getPercent(sum == 0.0 ? 0.0 : (acceptSum - returnSum) / sum));
+                    custTrading.setAcceptPercent(NumFormat.getPercent(NumDefaultUtil.DOUBLE.equals(sum) ? NumDefaultUtil.DOUBLE : (acceptSum - returnSum) / sum));
                 }
                 Integer acceptNum = getAcceptNum(enUU, custTrading.getCustUU());
                 Integer realNum = acceptNum - getReturnNum(enUU, custTrading.getCustUU());
                 custTrading.setRealNum(realNum);
-                if (0 != acceptNum) {
-                    custTrading.setNumPercent(NumFormat.getPercent(sumNum == 0 ? 0 : (double) realNum / sumNum));
+                if (!NumDefaultUtil.INTEGER.equals(acceptNum)) {
+                    custTrading.setNumPercent(NumFormat.getPercent(NumDefaultUtil.INTEGER.equals(sumNum) ? NumDefaultUtil.INTEGER : (double) realNum / sumNum));
                 }
                 custTrading.setTimeSum(NumFormat.getOne(getTimeSum(enUU, custTrading.getCustUU())));
-            }
+            });
         }
         map.put("data", datas);
         return map;
@@ -571,22 +570,14 @@ public class TradingDataServiceImpl implements TradingDataService {
      */
     @Override
     public Double getTimeSum(Long enUU, Long custUU) {
-        StringBuffer last = new StringBuffer("SELECT ifnull((SELECT pu_date from purc$orders "
-                + "WHERE pu_venduu = " + enUU + " and pu_date is not null ");
+        StringBuffer sql = new StringBuffer("SELECT TIMESTAMPDIFF(MONTH,min(pu_date),max(pu_date)) from purc$orders WHERE pu_venduu = " + enUU);
         if (!StringUtils.isEmpty(custUU)) {
-            last.append("and pu_enuu = " + custUU + "");
+            sql.append(" and pu_enuu = " + custUU);
         }
-        last.append(" ORDER BY pu_date desc limit 1),now()) pu_date");
-        StringBuffer first = new StringBuffer("SELECT ifnull((SELECT pu_date from purc$orders "
-                + "WHERE pu_venduu = " + enUU + " and pu_date is not null ");
-        if (!StringUtils.isEmpty(custUU)) {
-            first.append("and pu_enuu = " + custUU + "");
+        Double result = commonDao.queryForObject(sql.toString(), Double.class);
+        if (StringUtils.isEmpty(result)) {
+            result = NumDefaultUtil.DOUBLE;
         }
-        first.append(" ORDER BY pu_date asc limit 1),now()) pu_date");
-        Date lastTime = commonDao.queryForObject(last.toString(), Date.class);
-        Date firstTime = commonDao.queryForObject(first.toString(), Date.class);
-        StringBuffer result = new StringBuffer("SELECT TIMESTAMPDIFF(MONTH,'" + firstTime + "','" + lastTime + "')");
-        Double resultTime = commonDao.queryForObject(result.toString(), Double.class) / TimeStauts.TYEAR.value();
-        return NumFormat.getOne(resultTime);
+        return NumFormat.getOne(result / TimeStauts.TYEAR.value());
     }
 }

+ 1 - 1
src/main/java/com/uas/platform/b2b/openapi/service/impl/UsoftServiceImpl.java

@@ -139,7 +139,7 @@ public class UsoftServiceImpl implements UsoftService {
                 + " on pai_paid = pa_id where pai_paid = " + acceptId;
         List<UsoftAcceptItem> acceptItems = commonDao.query(sql, UsoftAcceptItem.class);
         if (!CollectionUtils.isEmpty(acceptItems)) {
-            acceptItems.forEach( acceptItem -> {
+            acceptItems.parallelStream().forEach( acceptItem -> {
                 Product product = commonDao.queryBean("select pr_code code,pr_title title,pr_cmpcode cmpcode,"
                         + "pr_spec spec from purc$acceptitem WHERE pai_id = " + acceptItem.getId(), Product.class);
                 acceptItem.setProduct(product);

+ 19 - 0
src/main/java/com/uas/platform/b2b/openapi/support/NumDefaultUtil.java

@@ -0,0 +1,19 @@
+package com.uas.platform.b2b.openapi.support;
+
+/**
+ * 基本类型默认值
+ * @Author: huj
+ * @Date: Created in 11:38 2019/01/15.
+ */
+public class NumDefaultUtil {
+
+    public final static Integer INTEGER = 0;
+
+    public final static Double DOUBLE = 0.0;
+
+    public final static String ONE_DECIMAL_POINT = "#.0";
+
+    public final static String TWO_DECIMAL_POINT = "#.00";
+
+    public final static String TWO_DECIMAL_PERCENT = "##.00%";
+}

+ 54 - 5
src/main/java/com/uas/platform/b2b/openapi/support/NumFormat.java

@@ -7,6 +7,7 @@ import java.util.Calendar;
 import java.util.Date;
 
 /**
+ * 工具类,百分比、时间、小数点计算
  * @Author: huj
  * @Date: Created in 16:55 2018/9/20.
  */
@@ -20,27 +21,43 @@ public class NumFormat {
         }
     }
 
+
+    /**
+     * 获取一位小数
+     * @param result
+     * @return
+     */
     public static Double getOne(Double result) {
-        DecimalFormat df = new DecimalFormat("#.0");
+        DecimalFormat df = new DecimalFormat(NumDefaultUtil.ONE_DECIMAL_POINT);
         if (StringUtils.isEmpty(result)) {
-            return 0.0;
+            return NumDefaultUtil.DOUBLE;
         } else {
             return Double.parseDouble(df.format(result));
         }
     }
 
+    /**
+     * 取两位小数
+     * @param result
+     * @return
+     */
     public static Double getTwo(Double result) {
-        DecimalFormat df = new DecimalFormat("#.00");
+        DecimalFormat df = new DecimalFormat(NumDefaultUtil.TWO_DECIMAL_POINT);
         if (StringUtils.isEmpty(result)) {
-            return 0.00;
+            return NumDefaultUtil.DOUBLE;
         } else {
             return Double.parseDouble(df.format(result));
         }
     }
 
+    /**
+     * 保留两位小数
+     * @param result
+     * @return
+     */
     public static Double getPercent(Double result) {
         //设置百分数精确度2即保留两位小数
-        DecimalFormat dfPercent = new DecimalFormat("##.00%");
+        DecimalFormat dfPercent = new DecimalFormat(NumDefaultUtil.TWO_DECIMAL_PERCENT);
         String resultStr = dfPercent.format(result);
         String needStr = resultStr.substring(0, resultStr.length() - 1);
         return getTwo(Double.valueOf(needStr));
@@ -85,6 +102,10 @@ public class NumFormat {
         return 0.0;
     }
 
+    /**
+     * 前半年开始时间
+     * @return
+     */
     public static java.sql.Date getsixM() {
         Calendar ca = Calendar.getInstance();
         ca.setTime(getDayStartMon());
@@ -92,6 +113,10 @@ public class NumFormat {
         return new java.sql.Date(ca.getTime().getTime());
     }
 
+    /**
+     * 前四个月开始时间, xxx月1号
+     * @return
+     */
     public static java.sql.Date getThreeM() {
         Calendar ca = Calendar.getInstance();
         ca.setTime(getDayStartMon());
@@ -99,6 +124,10 @@ public class NumFormat {
         return new java.sql.Date(ca.getTime().getTime());
     }
 
+    /**
+     * 前三个月开始时间, xxx月1号
+     * @return
+     */
     public static java.sql.Date getTwoM() {
         Calendar ca = Calendar.getInstance();
         ca.setTime(getDayStartMon());
@@ -106,6 +135,10 @@ public class NumFormat {
         return new java.sql.Date(ca.getTime().getTime());
     }
 
+    /**
+     * 前两个月开始时间, xxx月1号
+     * @return
+     */
     public static java.sql.Date getOneM() {
         Calendar ca = Calendar.getInstance();
         ca.setTime(getDayStartMon());
@@ -113,6 +146,10 @@ public class NumFormat {
         return new java.sql.Date(ca.getTime().getTime());
     }
 
+    /**
+     * 上月开始时间
+     * @return
+     */
     public static java.sql.Date getThisM() {
         Calendar ca = Calendar.getInstance();
         ca.setTime(getDayStartMon());
@@ -120,11 +157,19 @@ public class NumFormat {
         return new java.sql.Date(ca.getTime().getTime());
     }
 
+    /**
+     * 本月开始时间
+     * @return
+     */
     public static java.sql.Date getNowM() {
         return new java.sql.Date(getDayStartMon().getTime());
     }
 
 
+    /**
+     * 本年开始时间,xxxx年1月1号 00:00:00
+     * @return
+     */
     public static Date getDayStartYear() {
         Calendar calendar = Calendar.getInstance();
         calendar.set(Calendar.MONTH, 0);
@@ -136,6 +181,10 @@ public class NumFormat {
         return calendar.getTime();
     }
 
+    /**
+     * 本月开始时间,xxxx年年xx月1号 00:00:00
+     * @return
+     */
     public static Date getDayStartMon() {
         Calendar calendar = Calendar.getInstance();
         calendar.set(Calendar.DATE, 1);