TRX 1 рік тому
батько
коміт
2415ea050a

+ 37 - 2
FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/statistic/BusinessMainStatisticModel.java

@@ -21,10 +21,45 @@ public class BusinessMainStatisticModel {
     @Schema(description = "统计项")
     private List<StatisticItem> items = new ArrayList<>();
 
-    @Schema(description = "当前金额金额,单位分")
+    @Schema(description = "当前金额,单位分")
     private BigDecimal amount = BigDecimal.ZERO;
 
     @Schema(description = "当前订单数量")
-    private String total;
+    private Long total = 0L;
 
+    @Schema(description = "上一个金额,单位分")
+    private BigDecimal preAmount = BigDecimal.ZERO;
+
+    @Schema(description = "上一个订单数量")
+    private Long preTotal = 0L;
+
+    @Schema(description = "金额的增长")
+    private BigDecimal percentageAmount = BigDecimal.ZERO;
+
+    /**
+     * 计算比例
+     *
+     * @return
+     */
+    public BigDecimal getPercentageAmount() {
+        BigDecimal per = BigDecimal.ZERO;
+        if (amount.compareTo(BigDecimal.ZERO) > 0 && preAmount.compareTo(BigDecimal.ZERO) > 0) {
+            per = (amount.subtract(preAmount)).divide(preAmount, 4, BigDecimal.ROUND_HALF_UP)
+                    .multiply(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
+        }
+        return per;
+    }
+
+    @Schema(description = "订单的增长")
+    private BigDecimal percentageTotal = BigDecimal.ZERO;
+
+    public BigDecimal getPercentageTotal() {
+        BigDecimal per = BigDecimal.ZERO;
+        if (total != null && total > 0 && preTotal != null && preTotal > 0) {
+            per = (BigDecimal.valueOf(total)).subtract(BigDecimal.valueOf(preTotal))
+                    .divide(BigDecimal.valueOf(preTotal), 4, BigDecimal.ROUND_HALF_UP)
+                    .multiply(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
+        }
+        return per;
+    }
 }

+ 1 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/statistic/StatisticSearch.java

@@ -25,7 +25,7 @@ public class StatisticSearch {
     @Schema(description = "商户oid,当isAllBusinessMain=false,传入该值")
     private String shopOid;
 
-    @Schema(description = "统计类型,按年、月、周", hidden = true)
+    @Schema(description = "统计类型,按年、月、周")
     private StatisticType statisticType = StatisticType.Month;
 
 }

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/payment/impl/ExpenseFlowDaoImpl.java

@@ -261,10 +261,10 @@ public class ExpenseFlowDaoImpl extends BaseImpl implements ExpenseFlowDaoExtend
             }).collect(Collectors.toList());
             number = numbers.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
         }
+        // 总金额
         expenseFlowCount.setPayAmount(number);
         // 数据条数
         expenseFlowCount.setTotal(countExpenseFlows(param));
-
         return expenseFlowCount;
     }
 

+ 23 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/ExpenseFlowServiceImpl.java

@@ -585,6 +585,7 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
         ExpenseFlowSearch param = new ExpenseFlowSearch();
         param.setIsPaySuccess(Boolean.TRUE);
         BeanUtils.copyProperties(statisticSearch, param);
+
         List<String> shopOids = getSearchAllShopOid(param);
         if (ObjectUtils.isEmpty(shopOids)) {
             return ResultContent.buildFail("请选择查询商户或所有的");
@@ -615,6 +616,17 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
                     StatisticItem item = StatisticItem.builder().name(key).amount(value).build();
                     items.add(item);
                 }
+                param.setMonth(month);
+                ExpenseFlowCount count = expenseFlowDao.countBuinessMainPayment(param);
+                statisticModel.setTotal(count.getTotal());
+                statisticModel.setAmount(count.getPayAmount());
+
+                if (month > 1) {
+                    param.setMonth(month - 1);
+                    count = expenseFlowDao.countBuinessMainPayment(param);
+                    statisticModel.setPreTotal(count.getTotal());
+                    statisticModel.setPreAmount(count.getPayAmount());
+                }
             } else if (statisticType == StatisticType.Week) {
                 // 按月
                 int week = DateUtils.getCurrentWeekInYear();
@@ -627,11 +639,21 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
                     StatisticItem item = StatisticItem.builder().name(key).amount(value).build();
                     items.add(item);
                 }
+                param.setWeek(week);
+                ExpenseFlowCount count = expenseFlowDao.countBuinessMainPayment(param);
+                statisticModel.setTotal(count.getTotal());
+                statisticModel.setAmount(count.getPayAmount());
+
+                if (week > 1) {
+                    param.setWeek(week - 1);
+                    count = expenseFlowDao.countBuinessMainPayment(param);
+                    statisticModel.setPreTotal(count.getTotal());
+                    statisticModel.setPreAmount(count.getPayAmount());
+                }
             }
         }
         statisticModel.setItems(items);
 
-
         return ResultContent.buildSuccess(statisticModel);
     }
 

+ 9 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/test/Test.java

@@ -35,11 +35,17 @@ public class Test {
         map.put("money", BigDecimal.valueOf(563.21));
         System.out.println("map = " + JSONUtil.toJsonStr(map));
 
-        BigDecimal b1 = BigDecimal.valueOf(564.32);
-        BigDecimal b2 = BigDecimal.valueOf(54.32);
+        BigDecimal b1 = BigDecimal.valueOf(54.32);
+        BigDecimal b2 = BigDecimal.valueOf(564.32);
         System.out.println("m= " + b1.divide(b2, 5, RoundingMode.HALF_UP));
 
-        System.out.println("weekDays: " + DateUtils.getCurrentHourOfDay());
+        BigDecimal per = BigDecimal.ZERO;
+        if (b1.compareTo(BigDecimal.ZERO) > 0 && b2.compareTo(BigDecimal.ZERO) > 0) {
+            per = (b1.subtract(b2)).divide(b2, 4, BigDecimal.ROUND_HALF_UP)
+                    .multiply(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
+        }
+
+        System.out.println("per: " + per);
 
         GroovyShell groovyShell = new GroovyShell();
         String res = " println 'Hello, Groovy!' ";

+ 23 - 24
FullCardServer/src/main/java/com/zhongshu/card/server/core/util/DateUtils.java

@@ -17,11 +17,33 @@ public class DateUtils {
 
     public final static String FORMAT_LONG = "yyyy-MM-dd HH:mm:ss";
 
+    public final static String pattern = "yyyy-MM-dd";
+
+    /**
+     * yyyyMMdd
+     */
+    public final static String pattern1 = "yyyyMMdd";
+
+    public final static String patternStr = "yyyy年MM月dd日";
+
+    public final static String patternyyyyMM = "yyyy-MM";
+
+    public final static String patternyyyyM = "yyyy-M";
+
+    public final static String patternHHmm = "HH:mm";
+
+    public final static String patternyyyyMis = "yyyy-MM-dd HH:mm";
+
+    public final static String patternyyyySSS = "yyyy-MM-dd HH:mm:ss SSS";
+
+    public final static String patternyyyy = "yyyy";
+
+    public final static String patternMM = "MM";
+
     public static Long timeToLong(String time) {
         return timeToLong(time, FORMAT_LONG);
     }
 
-
     public static Long timeToLong(String time, String format) {
         if (!org.springframework.util.StringUtils.hasText(time)) {
             return null;
@@ -48,29 +70,6 @@ public class DateUtils {
         return null;
     }
 
-    public final static String pattern = "yyyy-MM-dd";
-
-    /**
-     * yyyyMMdd
-     */
-    public final static String pattern1 = "yyyyMMdd";
-
-    public final static String patternStr = "yyyy年MM月dd日";
-
-    public final static String patternyyyyMM = "yyyy-MM";
-
-    public final static String patternyyyyM = "yyyy-M";
-
-    public final static String patternHHmm = "HH:mm";
-
-    public final static String patternyyyyMis = "yyyy-MM-dd HH:mm";
-
-    public final static String patternyyyySSS = "yyyy-MM-dd HH:mm:ss SSS";
-
-    public final static String patternyyyy = "yyyy";
-
-    public final static String patternMM = "MM";
-
     public static String paresTime(Long time, String pattern) {
         if (time == null || time <= 0) {
             return "";