he2802 1 рік тому
батько
коміт
83832bcecd

+ 12 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderStatisticsController.java

@@ -118,4 +118,16 @@ public class TopOrderStatisticsController extends BaseController {
         List<String> list = iTopOldOrderService.getBusinessList(bo);
         return AjaxResult.success(list);
     }
+
+    @ApiOperation("下单客户")
+    @GetMapping("/customer")
+    public AjaxResult<List<TopOrderCustomerVo>> getCustomerList() {
+        return AjaxResult.success(iTopOldOrderService.getCustomerList());
+    }
+
+    @ApiOperation("订单总计")
+    @GetMapping("/total")
+    public AjaxResult<TopOrderTotalVo> getOrderTotal(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getOrderTotal(bo));
+    }
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -2526,7 +2526,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
             List<QuestionBusiness> questionBusinessList = iQuestionBusinessService
                     .list(new LambdaQueryWrapper<QuestionBusiness>()
                             .eq(QuestionBusiness::getMajorId, oldExamId)
-                            .eq(QuestionBusiness::getMajorId, 2));
+                            .eq(QuestionBusiness::getType, 2));
             if (CollectionUtils.isNotEmpty(questionBusinessList)) {
                 for (QuestionBusiness item : questionBusinessList) {
                     item.setId(null);

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopOldOrderMapper.java

@@ -97,4 +97,6 @@ public interface TopOldOrderMapper extends BaseMapper<TopOldOrder> {
 
     Long getOrderTenant(Long customerId);
 
+    List<TopOrderCustomerVo> getCustomerList();
+
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopOldOrderService.java

@@ -169,4 +169,8 @@ public interface ITopOldOrderService extends IService<TopOldOrder> {
 	TopOrderAreaVo getOrderAreaData(TopOrderStatisticsBo bo);
 
 	TopConversionRateVo getConversionRateData(TopOrderStatisticsBo bo);
+
+	List<TopOrderCustomerVo> getCustomerList();
+
+	TopOrderTotalVo getOrderTotal(TopOrderStatisticsBo bo);
 }

+ 91 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java

@@ -3103,6 +3103,97 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         return rateVo;
     }
 
+    @Override
+    public List<TopOrderCustomerVo> getCustomerList() {
+        return baseMapper.getCustomerList();
+    }
+
+    @Override
+    public TopOrderTotalVo getOrderTotal(TopOrderStatisticsBo bo) {
+        TopOrderTotalVo resultVo = new TopOrderTotalVo();
+        //筛选时间处理
+        if (ObjectUtils.isNull(bo.getTimeSign()) && ObjectUtils.isNull(bo.getStartTime()) && ObjectUtils.isNull(bo.getEndTime())){
+            //没有选择时间范围,默认为当前时间向前推30天
+            Long nowTime = DateUtils.getNowTime();
+            Long dayBefore = DateUtils.getDayBefore(nowTime, 30);
+            bo.setStartTime(dayBefore);
+            bo.setEndTime(nowTime);
+        }else if (ObjectUtils.isNotNull(bo.getTimeSign())){
+            switch (bo.getTimeSign()){
+                case 1://本周
+                    Map<String, Long> timeInterval = DateUtils.getTimeInterval(new Date());
+                    bo.setStartTime(timeInterval.get("start"));
+                    bo.setEndTime(timeInterval.get("end"));
+                    break;
+                case 2://本月
+                    Long toMonthZeroTime = DateUtils.getToMonthZeroTime();
+                    bo.setStartTime(toMonthZeroTime);
+                    bo.setEndTime(DateUtils.getNowTime());
+                    break;
+                case 3://本年
+                    Long toYearZeroTime = DateUtils.getToYearZeroTime();
+                    bo.setStartTime(toYearZeroTime);
+                    bo.setEndTime(DateUtils.getNowTime());
+                    break;
+                default :
+                    break;
+            }
+        }
+        TopOrderStatisticsDetailTotalVo totalVo = baseMapper.getDetailStatisticsTotal(bo.getStartTime(),bo.getEndTime());
+        resultVo.setOrderNum(totalVo.getOrderNumTotal());
+        resultVo.setMoney(totalVo.getMoneyTotal());
+        BigDecimal moneyTotal = totalVo.getMoneyTotal();
+        Long numTotal = totalVo.getOrderNumTotal();
+        //环比
+        Long startTime = bo.getStartTime();
+        Long endTime = bo.getEndTime();
+        Long time = endTime - startTime;
+        Long timeTwo =startTime - time;
+        TopOrderStatisticsDetailTotalVo totalVoTwo = baseMapper.getDetailStatisticsTotal(timeTwo,startTime);
+        if (ObjectUtils.isNotNull(totalVoTwo)){
+            BigDecimal money = totalVoTwo.getMoneyTotal();
+            if (ObjectUtils.isNull(money)){
+                resultVo.setMoneyYearRate(moneyTotal);
+            }else if (money.compareTo(BigDecimal.ZERO) > 0){
+                BigDecimal subtract = moneyTotal.subtract(money);
+                BigDecimal divide = subtract.divide(money,2, RoundingMode.HALF_UP);
+                resultVo.setMoneyWeekRate(divide.multiply(new BigDecimal("100")));
+            }
+            Long num = totalVoTwo.getOrderNumTotal();
+            if (ObjectUtils.isNull(num)){
+                resultVo.setYearRate(new BigDecimal(numTotal));
+            }else if (num > 0){
+                Long subtract = numTotal - num;
+                BigDecimal divide = new BigDecimal(subtract).divide(new BigDecimal(num),2, RoundingMode.HALF_UP);
+                resultVo.setWeekRate(divide.multiply(new BigDecimal("100")));
+            }
+        }
+
+        //同比
+        Long startBefore = DateUtils.getDayBefore(bo.getStartTime(), 365);
+        Long endBefore = DateUtils.getDayBefore(bo.getEndTime(), 365);
+        TopOrderStatisticsDetailTotalVo totalVo3 = baseMapper.getDetailStatisticsTotal(startBefore,endBefore);
+        if (ObjectUtils.isNotNull(totalVo3)){
+            BigDecimal money = totalVo3.getMoneyTotal();
+            if (ObjectUtils.isNull(money)){
+                resultVo.setMoneyYearRate(moneyTotal);
+            }else if (money.compareTo(BigDecimal.ZERO) > 0){
+                BigDecimal subtract = moneyTotal.subtract(money);
+                BigDecimal divide = subtract.divide(money,2, RoundingMode.HALF_UP);
+                resultVo.setMoneyYearRate(divide.multiply(new BigDecimal("100")));
+            }
+            Long num = totalVo3.getOrderNumTotal();
+            if (ObjectUtils.isNull(num)){
+                resultVo.setYearRate(new BigDecimal(numTotal));
+            }else if (num > 0){
+                Long subtract = numTotal - num;
+                BigDecimal divide = new BigDecimal(subtract).divide(new BigDecimal(num),2, RoundingMode.HALF_UP);
+                resultVo.setYearRate(divide.multiply(new BigDecimal("100")));
+            }
+        }
+        return resultVo;
+    }
+
     private List<Long> getDayTime(Long startTime,Long endTime){
         List<Long> tiemList = new ArrayList<>();
         Long zeroTime = DateUtils.getScheduleTimeZeroTime(startTime);

+ 20 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderCustomerVo.java

@@ -0,0 +1,20 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年11月02日 8:50
+ */
+@Data
+public class TopOrderCustomerVo implements Serializable {
+
+    @ApiModelProperty("客户ID")
+    private Long customerId;
+
+    @ApiModelProperty("客户名称")
+    private String customerName;
+}

+ 4 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderStatisticsViewVo.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -14,11 +15,11 @@ import java.util.List;
 public class TopOrderStatisticsViewVo implements Serializable {
 
     @ApiModelProperty("统计天")
-    private List<TopOrderStatisticsTwoVo> dayView;
+    private List<TopOrderStatisticsTwoVo> dayView = new ArrayList<>();
 
     @ApiModelProperty("统计周")
-    private List<TopOrderStatisticsTwoVo> weekView;
+    private List<TopOrderStatisticsTwoVo> weekView = new ArrayList<>();
 
     @ApiModelProperty("统计月")
-    private List<TopOrderStatisticsTwoVo> monthView;
+    private List<TopOrderStatisticsTwoVo> monthView = new ArrayList<>();
 }

+ 33 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderTotalVo.java

@@ -0,0 +1,33 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年11月02日 9:26
+ */
+@Data
+public class TopOrderTotalVo implements Serializable {
+
+    @ApiModelProperty("数量")
+    private Long orderNum;
+
+    @ApiModelProperty("环比")
+    private BigDecimal weekRate;
+
+    @ApiModelProperty("同比")
+    private BigDecimal yearRate;
+
+    @ApiModelProperty("金额")
+    private BigDecimal money;
+
+    @ApiModelProperty("金额环比")
+    private BigDecimal moneyWeekRate;
+
+    @ApiModelProperty("金额同比")
+    private BigDecimal moneyYearRate;
+}

+ 13 - 0
zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml

@@ -1736,4 +1736,17 @@
     <select id="getOrderTenant" parameterType="java.lang.Long" resultType="java.lang.Long">
         SELECT tenant_id FROM top_old_order WHERE old_customer_id = #{customerId} LIMIT 1
     </select>
+
+    <select id="getCustomerList" resultType="com.zhongzheng.modules.top.order.vo.TopOrderCustomerVo">
+        SELECT
+            too.old_customer_id as customerId,
+            ( SELECT purchase_org FROM v_top_order vto WHERE vto.old_customer_id = too.old_customer_id LIMIT 1 ) as customerName
+        FROM
+            v_top_order too
+        WHERE
+            too.`status` = 1
+          AND too.old_customer_id IS NOT NULL
+        GROUP BY
+            too.old_customer_id
+    </select>
 </mapper>