瀏覽代碼

添加查询订单统计接口

soobin 2 年之前
父節點
當前提交
326edd114c

+ 52 - 176
src/main/java/com/szwl/controller/TOrderController.java

@@ -26,11 +26,10 @@ import com.szwl.model.excel.CoinOrderTarget;
 import com.szwl.model.excel.OrderByAdminTarget;
 import com.szwl.model.excel.OrderByClientidTarget;
 import com.szwl.model.excel.OrderTarget;
-import com.szwl.model.query.Filter;
-import com.szwl.model.query.Pageable;
-import com.szwl.model.query.StatisticsParam;
-import com.szwl.model.query.TOrderParam;
+import com.szwl.model.query.*;
+import com.szwl.model.utils.DateUtils;
 import com.szwl.model.utils.FgObjectUtil;
+import com.szwl.model.utils.JsonUtils;
 import com.szwl.service.TAreaService;
 import com.szwl.service.TCoinOrderService;
 import com.szwl.service.TEquipmentService;
@@ -40,7 +39,6 @@ import com.szwl.service.es.EsTOrderService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.time.DateUtils;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -661,178 +659,7 @@ public class TOrderController {
                         .setData(chartColumn)
                         .setMessage("SUCCESS"));
     }
-    /**
-     *
-     * @return
-     */
-    @ApiOperation(value = "机器获取数据统计")
-    @PostMapping("/getStatisticsByClientId")
-    public ResponseEntity<?> getStatisticsByClientId(@RequestBody StatisticsParam param) {
-        TEquipment equipment0 = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
-        param.setAdminId(String.valueOf(equipment0.getAdminId()));
-        //  判断是否为外国
-        param.setIfForeign(isForeignUser(param.getAdminId()));
-        log.info("param:{}", param);
-        TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(param.getAdminId()));
-        if(admin.getType()<2){
-            param.setAdminId(null);
-            if(param.getEquipmentId()!=null){
-                //查机器
-                TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(param.getEquipmentId()));
-                param.setClientId(equipment.getClientId());
-            }
-            if(StringUtils.isNotEmpty(param.getClientId())){
-                //补全clientId
-                TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
-                param.setClientId(tEquipment.getClientId());
-                param.setClientId(tEquipment.getClientId());
-            }
-        }else {
-            if(admin.getType()==2){
-                //商家
-                if(param.getEquipmentId()!=null&&param.getEquipmentId()!=""){
-                    //查机器
-                    TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(param.getEquipmentId()));
-                    param.setClientId(equipment.getClientId());
-
-                }
-                if(StringUtils.isNotEmpty(param.getClientId())){
-                    param.setAdminId(null);
-                    //判断是否是这个商家的
-                    TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
-                    if(tEquipment.getAdminId().toString().equals(admin.getId().toString())){
-                        param.setClientId(tEquipment.getClientId());
-                        param.setEquipmentId(String.valueOf(tEquipment.getId()));
-                    }
-                }
-            }
-            if(admin.getType()==3){
-                //子账户只能查相对的机器的订单
-                //商家子账户
-                if(param.getEquipmentId()!=null){
-                    //查机器
-                    TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(param.getEquipmentId()));
-                    param.setClientId(equipment.getClientId());
-
-                }else{
-                    TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getId())));
-                    if(adminEquipment.getType().equals("0")){
-                        TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
-                        param.setAdminId(admin1.getId().toString());
-                    }else {
-                        List<String> list = R.getDataIfSuccess(szwlFeign.getClientIds(param.getAdminId()));
-                        param.setClientIds(list);
-                    }
-                }
-                if(StringUtils.isNotEmpty(param.getClientId())){
-                    param.setAdminId(null);
-                    //判断是否是这个子账号的
-                    TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
-
-                    TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getId())));
-                    if(adminEquipment.getType().equals("0")){
-                        TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
-                        if(tEquipment.getAdminId().toString().equals(admin1.getId())){
-                            param.setAdminId(null);
-                            param.setClientId(tEquipment.getClientId());
-                            param.setEquipmentId(String.valueOf(tEquipment.getId()));
-                        }
-                    }else {
-                        int i = 0;
-                        List<String> list = R.getDataIfSuccess(szwlFeign.getClientIds(param.getAdminId()));
-                        if(list.size()>0){
-                            for(String clientID:list){
-                                if(clientID.equals(tEquipment.getClientId())){
-                                    i++;
-                                }
-                            }
-                        }
-                        if(i>0){
-                            param.setClientId(tEquipment.getClientId());
-                            param.setEquipmentId(String.valueOf(tEquipment.getId()));
-                        }
 
-                    }
-                }
-            }
-
-        }
-        if(StringUtils.isNotEmpty(param.getUsername())){
-            if(param.getUsername().equals("all")){
-                //商家查全部
-                //判断是不是商家账户
-                if(admin.getType()==3){
-                    //查下级账户id集合
-                    List<Long> list = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
-                    if(list.size()>0){
-                        param.setAdminIds(list);
-                        param.setAdminId(null);
-                    }
-                }
-            }
-        }
-        FgObjectUtil.objectNullOrEmptySel(param, "chartType$");
-        ChartColumn chartColumn = new ChartColumn();
-        if(StringUtils.isNotEmpty(param.getIfForeign())&&param.getIfForeign().equals("1")){
-            if(StringUtils.isNotEmpty(param.getPayType())&&param.getPayType().equals("all")){
-                param.setPayType(null);
-            }
-            //国外查MYSQL
-
-            chartColumn  = orderService.getStatistics(param);
-        }else{
-            //查去年的数据找数据库
-            String endDate = param.getEndDate();
-            String toYear = "2022-01-01 00:00:00";
-            Date date =null;
-            Date year = null;
-            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            try {
-                //使用SimpleDateFormat的parse()方法生成Date
-                date = sf.parse(endDate);
-                year = sf.parse(toYear);
-            } catch (ParseException e) {
-                e.printStackTrace();
-            }
-            if(date.getTime()<year.getTime()){
-                chartColumn  = orderService.getStatistics(param);
-            }else {
-                if (ElasticsearchRunner.ES_RUNNING) {
-                    try {
-                        // 查es
-                        chartColumn = esTOrderService.getStatistics(param);
-                    }catch (Exception e){
-                        log.error("使用es 查询发生错误:{}",e);
-                        // 查 mysql
-//                    chartColumn  = tOrderService.getStatistics(param);
-                    }
-                }else{
-                    // 查 mysql
-//                chartColumn  = tOrderService.getStatistics(param);
-                }
-            }
-
-        }
-//		if (ElasticsearchRunner.ES_RUNNING) {
-//			try {
-//				// 查es
-//				chartColumn = esTOrderService.getStatistics(param);
-//			}catch (Exception e){
-//				log.error("使用es 查询发生错误:{}",e);
-//				// 查 mysql
-//				chartColumn  = tOrderService.getStatistics(param);
-//			}
-//		}else{
-//			// 查 mysql
-//			chartColumn  = tOrderService.getStatistics(param);
-//		}
-        return ResponseEntity
-                .status(HttpStatus.OK)
-                .body(new ResultMessage()
-                        .setCode(true)
-                        .setData(chartColumn)
-                        .setMessage("SUCCESS"));
-    }
     /**
      *  统计 机器销售排行
      * @param param
@@ -1750,6 +1577,55 @@ public class TOrderController {
         esTOrderService.insertData(order);
         return R.ok("同步es成功");
     }
+
+    /**
+     * 线上通过时间分组
+     * @param clientId
+     * @param startTime
+     * @param endTime
+     * @param unit
+     * @return
+     */
+    @RequestMapping(value = "/getStatisticsByClientId", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
+    @ResponseBody
+    public Object getStatisticsByClientId(String clientId, String startTime, String endTime, Integer unit) {
+        String date = "";
+        switch (unit) {
+            //按小时计算
+            case 0:
+                date = DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss;
+                break;
+            //按天
+            case 1:
+                date = DateUtils.PATTERN_yyyy_MM_dd;
+                break;
+            //按月
+            case 2:
+                date = DateUtils.PATTERN_yyyy_MM;
+                break;
+            //按年
+            case 3:
+                date = DateUtils.PATTERN_yyyy;
+                break;
+        }
+        SimpleDateFormat format = new SimpleDateFormat(date);
+        Date date1 = null;
+        Date date2 = null;
+        try {
+            date1 =  format.parse(startTime);
+            date2 =  format.parse(endTime);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        List<OrderStatisticsDTO> list = orderService.findByTime(clientId, date1, date2, unit);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("code", 0);
+        jsonObject.put("data", JsonUtils.toJson(list));
+        jsonObject.put("errmsg", "");
+
+        return jsonObject;
+    }
+
     /**
      * 获取每天的开始时间 00:00:00:00
      *

+ 3 - 0
src/main/java/com/szwl/mapper/TOrderMapper.java

@@ -5,6 +5,7 @@ import com.szwl.model.bean.OrderDaoChuDTO;
 import com.szwl.model.entity.TOrder;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.szwl.model.query.OrderDaoChuParam;
+import com.szwl.model.query.OrderStatisticsDTO;
 import com.szwl.model.query.Pageable;
 import com.szwl.model.query.StatisticsParam;
 
@@ -31,4 +32,6 @@ public interface TOrderMapper extends BaseMapper<TOrder> {
     List<ChartBean> getEquipmentStatistics(StatisticsParam param);
 
     public List<OrderDaoChuDTO> getOrderDaoCu(OrderDaoChuParam daoChuParam);
+
+    List<OrderStatisticsDTO> findByTime(String clientId, Date startTime, Date endTime, Integer unit);
 }

+ 30 - 0
src/main/java/com/szwl/mapper/xml/TOrderMapper.xml

@@ -352,5 +352,35 @@
         order by priceTotal desc
         limit #{current} , #{size}
     </select>
+    <select id="findByTime" resultType="com.szwl.model.query.OrderStatisticsDTO">
+        select count(id) as totalNumber, sum(price) as totalPrice,
+        <choose>
+            <when test="unit == 0">
+                DATE_FORMAT(create_date, '%Y-%m-%d %H:00:00') as sTime
+            </when>
+            <when test="unit == 1">
+                DATE_FORMAT(create_date, '%Y-%m-%d') as sTime
+            </when>
+            <when test="unit == 2">
+                DATE_FORMAT(create_date, '%Y-%m') as sTime
+            </when>
+            <when test="unit == 3">
+                DATE_FORMAT(create_date, '%Y') as sTime
+            </when>
+        </choose>
+        FROM  t_order
+        where 1=1
+        <if test="clientId != null and clientId != ''">
+            AND client_id = #{clientId}
+        </if>
+        <if test="startTime != null">
+            AND create_date &gt;= #{startTime}
+        </if>
+        <if test="endTime != null">
+            AND create_date &lt;= #{endTime}
+        </if>
+        GROUP BY sTime
+        ORDER BY sTime
+    </select>
 
 </mapper>

+ 55 - 0
src/main/java/com/szwl/model/query/OrderStatisticsDTO.java

@@ -0,0 +1,55 @@
+package com.szwl.model.query;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+/**
+ * 订单统计
+ */
+public class OrderStatisticsDTO implements Comparable<OrderStatisticsDTO> {
+
+    /**
+     * 时间
+     */
+
+    private String sTime;
+
+    /**
+     * 销售总金额
+     */
+    private BigDecimal totalPrice;
+
+    /**
+     * 销售个数
+     */
+    private BigInteger totalNumber;
+
+    public BigDecimal getTotalPrice() {
+        return totalPrice;
+    }
+
+    public void setTotalPrice(BigDecimal totalPrice) {
+        this.totalPrice = totalPrice;
+    }
+
+    public BigInteger getTotalNumber() {
+        return totalNumber;
+    }
+
+    public void setTotalNumber(BigInteger totalNumber) {
+        this.totalNumber = totalNumber;
+    }
+
+    public String getsTime() {
+        return sTime;
+    }
+
+    public void setsTime(String sTime) {
+        this.sTime = sTime;
+    }
+
+    @Override
+    public int compareTo(OrderStatisticsDTO o) {
+        return this.getsTime().compareTo(o.getsTime());
+    }
+}

+ 2 - 0
src/main/java/com/szwl/model/utils/DateUtils.java

@@ -15,6 +15,8 @@ public class DateUtils
   public static final String PATTERN_yyyyMMddHHmmssSSS = "yyyyMMddHHmmssSSS";
   public static final String PATTERN_yyyy_MM_dd = "yyyy-MM-dd";
   public static final String PATTERN_yyyy_M_d = "yyyy-M-d";
+  public static final String PATTERN_yyyy_MM = "yyyy-MM";
+  public static final String PATTERN_yyyy = "yyyy";
   public static final String PATTERN_yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
   public static final String PATTERN_yyyy_MM_dd_HH_mm = "yyyy-MM-dd HH:mm";
   public static final String PATTERN_HH_mm_ss = "HH:mm:ss";

+ 135 - 0
src/main/java/com/szwl/model/utils/JsonUtils.java

@@ -0,0 +1,135 @@
+/*
+ * 
+ * 
+ * 
+ */
+package com.szwl.model.utils;
+
+import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.gexin.fastjson.JSONObject;
+import com.gexin.fastjson.serializer.SimplePropertyPreFilter;
+import org.springframework.util.Assert;
+
+import java.io.IOException;
+import java.io.Writer;
+
+/**
+ * Utils - JSON
+ */
+public final class JsonUtils {
+
+    /**
+     * ObjectMapper
+     */
+    private static ObjectMapper mapper = new ObjectMapper();
+
+    /**
+     * 不可实例化
+     */
+    private JsonUtils() {
+    }
+
+    /**
+     * 将对象转换为JSON字符串
+     *
+     * @param value 对象
+     * @return JSOn字符串
+     */
+    public static String toJson(Object value) {
+        try {
+            return mapper.writeValueAsString(value);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 将JSON字符串转换为对象
+     *
+     * @param json      JSON字符串
+     * @param valueType 对象类型
+     * @return 对象
+     */
+    public static <T> T toObject(String json, Class<T> valueType) {
+        Assert.hasText(json);
+        Assert.notNull(valueType);
+        try {
+            return mapper.readValue(json, valueType);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 将对象转成JSON
+     *
+     * @param object 对象
+     * @param attrs  包含的属性值
+     * @return 对象
+     */
+    public static String toString(Object object, String... attrs) {
+        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(object.getClass(), attrs);
+        return JSONObject.toJSONString(object, filter);
+    }
+
+    /**
+     * 将JSON字符串转换为对象
+     *
+     * @param json          JSON字符串
+     * @param typeReference 对象类型
+     * @return 对象
+     */
+//    public static <T> T toObject(String json, TypeReference<?> typeReference) {
+//        Assert.hasText(json);
+//        Assert.notNull(typeReference);
+//        try {
+//            return mapper.readValue(json, typeReference);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//        return null;
+//    }
+
+    /**
+     * 将JSON字符串转换为对象
+     *
+     * @param json     JSON字符串
+     * @param javaType 对象类型
+     * @return 对象
+     */
+    public static <T> T toObject(String json, JavaType javaType) {
+        Assert.hasText(json);
+        Assert.notNull(javaType);
+        try {
+            return mapper.readValue(json, javaType);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 将对象转换为JSON流
+     *
+     * @param writer writer
+     * @param value  对象
+     */
+    public static void writeValue(Writer writer, Object value) {
+        try {
+            mapper.writeValue(writer, value);
+        } catch (JsonGenerationException e) {
+            e.printStackTrace();
+        } catch (JsonMappingException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+
+}

+ 3 - 0
src/main/java/com/szwl/service/TOrderService.java

@@ -6,6 +6,7 @@ import com.szwl.model.entity.TAdmin;
 import com.szwl.model.entity.TOrder;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.szwl.model.excel.OrderTarget;
+import com.szwl.model.query.OrderStatisticsDTO;
 import com.szwl.model.query.Pageable;
 import com.szwl.model.query.StatisticsParam;
 
@@ -30,4 +31,6 @@ public interface TOrderService extends IService<TOrder> {
     List<OrderDaoChuDTO> orderDaoChu(String begin, String end, Long adminId, String clientId, String type, long current, long size);
 
     List<OrderTarget> findById(TAdmin admin, List<TOrder> list) throws ParseException;
+
+    List<OrderStatisticsDTO> findByTime(String clientId, Date startTime, Date endTime, Integer unit);
 }

+ 6 - 0
src/main/java/com/szwl/service/impl/TOrderServiceImpl.java

@@ -13,6 +13,7 @@ import com.szwl.model.entity.TOrder;
 import com.szwl.mapper.TOrderMapper;
 import com.szwl.model.excel.OrderTarget;
 import com.szwl.model.query.OrderDaoChuParam;
+import com.szwl.model.query.OrderStatisticsDTO;
 import com.szwl.model.query.Pageable;
 import com.szwl.model.query.StatisticsParam;
 import com.szwl.model.utils.DateUtils;
@@ -202,4 +203,9 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
         return list1;
     }
 
+    @Override
+    public List<OrderStatisticsDTO> findByTime(String clientId, Date startTime, Date endTime, Integer unit) {
+        return tOrderMapper.findByTime(clientId,startTime,endTime,unit);
+    }
+
 }