Преглед изворни кода

fix:“修复海外订单周月数据,机器排行,统计查询更改为ES”

soobin пре 1 година
родитељ
комит
29676f26b5

+ 14 - 1
src/main/java/com/szwl/controller/TOrderController.java

@@ -792,8 +792,21 @@ public class TOrderController {
                 param.setPayType(null);
             }
             //国外查MYSQL
+            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);
+                chartColumn = orderService.getStatistics(param);
+            }
 
-            chartColumn = orderService.getStatistics(param);
         } else {
             //查去年的数据找数据库
             String endDate = param.getEndDate();

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

@@ -78,11 +78,11 @@
     <!-- 日统计select concat(DATE_FORMAT( a.create_date,'%H'),'点') as categorie,count(1) as saleNum,sum(a.price) as salePrice -->
     <select id="getDayStatistics" resultMap="chartBean" parameterType="com.szwl.model.query.StatisticsParam">
         <if test="ifForeign != null and ifForeign ==0"> -- 国内用户
-            select concat(DATE_FORMAT( a.create_date,'%H'),'点') as categorie,count(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
+            select concat(DATE_FORMAT( a.create_date,'%H'),'点') as categorie,sum(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
             from t_order a where a.status='1' -- 支付成功
         </if>
         <if test="ifForeign != null and ifForeign ==1"> -- 国外用户
-            select concat(DATE_FORMAT( a.pay_date,'%H'),'点') as categorie,count(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
+            select concat(DATE_FORMAT( a.pay_date,'%H'),'点') as categorie,sum(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
             from t_coin_order a  where 1=1
         </if>
         <if test="adminId != null and adminId !=''">
@@ -138,12 +138,12 @@
         --     count(1) as saleNum,sum(a.price) as salePrice
         <if test="ifForeign != null and ifForeign ==0"> -- 国内用户
             select case DATE_FORMAT( a.create_date,'%w') when 0 then '周日' else CONCAT('周',DATE_FORMAT( a.create_date,'%w')) end as categorie,
-            count(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
+            sum(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
             from t_order a where a.status='1' -- 支付成功
         </if>
         <if test="ifForeign != null and ifForeign ==1"> -- 国外用户
             select case DATE_FORMAT( a.pay_date,'%w') when 0 then '周日' else CONCAT('周',DATE_FORMAT( a.pay_date,'%w')) end as categorie,
-            count(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
+            sum(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
             from t_coin_order a  where 1=1
         </if>
         <if test="adminId != null and adminId !=''">
@@ -158,7 +158,7 @@
         <if test="adminIds != null and adminIds !=''">
             and a.admin_id in #{adminIds}
         </if>
-        <if test="ifForeign != null and ifForeign ==1 and clientIds.size()>0">
+        <if test="ifForeign != null and ifForeign ==1 and clientIds != null and clientIds.size()>0">
             and a.client_id in #{clientIds}
         </if>
         <if test="equipmentId != null and equipmentId !=''">
@@ -189,11 +189,11 @@
     <!-- 月统计 -->
     <select id="getMonthStatistics" resultMap="chartBean" parameterType="com.szwl.model.query.StatisticsParam">
         <if test="ifForeign != null and ifForeign ==0"> -- 国内用户
-            select DATE_FORMAT( a.create_date,'%m月%d') as categorie,count(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
+            select DATE_FORMAT( a.create_date,'%m月%d') as categorie,sum(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
             from t_order a where a.status='1' -- 支付成功
         </if>
         <if test="ifForeign != null and ifForeign ==1"> -- 国外用户
-            select DATE_FORMAT( a.pay_date,'%m月%d') as categorie,count(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
+            select DATE_FORMAT( a.pay_date,'%m月%d') as categorie,sum(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
             from t_coin_order a  where 1=1
         </if>
         <if test="adminId != null and adminId !=''">
@@ -208,7 +208,7 @@
         <if test="adminIds != null and adminIds !=''">
             and a.admin_id in #{adminIds}
         </if>
-        <if test="ifForeign != null and ifForeign ==1 and clientIds.size()>0">
+        <if test="ifForeign != null and ifForeign ==1 and clientIds != null and clientIds.size()>0">
             and a.client_id in #{clientIds}
         </if>
         <if test="equipmentId != null and equipmentId !=''">
@@ -251,11 +251,11 @@
         select '12月' as categorie from dual) tab1
         left join (
         <if test="ifForeign != null and ifForeign ==0"> -- 国内用户
-            select concat(DATE_FORMAT( a.create_date,'%m'),'月') as categorie,count(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
+            select concat(DATE_FORMAT( a.create_date,'%m'),'月') as categorie,sum(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
             from t_order a where a.status='1' -- 支付成功
         </if>
         <if test="ifForeign != null and ifForeign ==1"> -- 国外用户
-            select concat(DATE_FORMAT( a.pay_date,'%m'),'月') as categorie,count(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
+            select concat(DATE_FORMAT( a.pay_date,'%m'),'月') as categorie,sum(a.product_number) as saleNum,count(1) as orderNum,sum(a.price) as salePrice
             from t_coin_order a  where 1=1
         </if>
         <if test="adminId != null and adminId !=''">
@@ -270,7 +270,7 @@
         <if test="adminIds != null and adminIds !=''">
             and a.admin_id in #{adminIds}
         </if>
-        <if test="ifForeign != null and ifForeign ==1 and clientIds.size()>0">
+        <if test="ifForeign != null and ifForeign ==1 and clientIds != null and clientIds.size()>0">
             and a.client_id in #{clientIds}
         </if>
         <if test="equipmentId != null and equipmentId !=''">
@@ -298,7 +298,7 @@
     </select>
     <!-- 统计 机器花型销售排行-->
     <select id="getProductNameStatistics" resultType="com.szwl.model.bean.ChartBean">
-        select product_name as categorie,count(a.product_number) as saleNum,sum(a.price) as salePrice
+        select product_name as categorie,sum(a.product_number) as saleNum,sum(a.price) as salePrice
         <if test="ifForeign != null and ifForeign ==0"> -- 国内用户
             from t_order a
             where a.status='1'
@@ -320,7 +320,7 @@
     </select>
     <!-- 统计 机器销售排行-->
     <select id="getEquipmentStatistics" resultType="com.szwl.model.bean.ChartBean">
-        select a.client_id as categorie,count(a.product_number) as saleNum,sum(a.price) as salePrice
+        select a.client_id as categorie,sum(a.product_number) as saleNum,sum(a.price) as salePrice
         <if test="ifForeign != null and ifForeign ==0"> -- 国内用户
             from t_order a
             where  a.status='1'

+ 1 - 1
src/main/java/com/szwl/model/query/StatisticsParam.java

@@ -42,7 +42,7 @@ public class StatisticsParam {
     private List<Long> adminIds;
 
     @ApiModelProperty(value="")
-    private List<String> ClientIds;
+    private List<String> clientIds;
 
     @ApiModelProperty(value="")
     private List<String> equipmentIds;

+ 23 - 14
src/main/java/com/szwl/service/es/EsTEquipmentService.java

@@ -314,7 +314,7 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
         tCoinOrderParam.setPayDate_start(start);
 //        tCoinOrderParam.setCreateDate_end(end);
         tCoinOrderParam.setPayDate_end(end);
-        if(param.getClientIds().size()>0){ // 设备
+        if(param.getClientIds() != null && param.getClientIds().size()>0){ // 设备
             tCoinOrderParam.setClientId_inList(param.getClientIds());
         }
         if(StringUtils.isNotEmpty(param.getAdminId())){ // 所属商家id
@@ -331,24 +331,33 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
 
             // 设置categories
             ArrayList<String> clientIdList = chartColumn.getCategories();
-            TEquipmentParam tEquipmentParam = new TEquipmentParam();
-            tEquipmentParam.setClientId_inList(clientIdList);
-            List<TEquipment> equipmentList = this.selectEntityByEqualToOption(tEquipmentParam);
+//            TEquipmentParam tEquipmentParam = new TEquipmentParam();
+//            tEquipmentParam.setClientId_inList(clientIdList);
+//            List<TEquipment> equipmentList = this.selectEntityByEqualToOption(tEquipmentParam);
 
             ArrayList<String> categories_final = new ArrayList<>();
             for (String clientId : clientIdList) {
-                String finalCategories =  clientId.substring(0,4);
-                Optional<TEquipment> op = equipmentList.stream().filter(
-                        e ->{
-                            return StringUtils.equals(e.getClientId(),clientId);
-                        }
-                ).findFirst();
-                if(op.isPresent()){
-                    if(StringUtils.isNotEmpty(op.get().getName())){
-                        finalCategories = op.get().getName();
+//                String finalCategories =  clientId.substring(0,4);
+                TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId));
+//                Optional<TEquipment> op = equipmentList.stream().filter(
+//                        e ->{
+//                            return StringUtils.equals(e.getClientId(),clientId);
+//                        }
+//                ).findFirst();
+//                if(op.isPresent()){
+//                    if(StringUtils.isNotEmpty(op.get().getName())){
+//                        finalCategories = op.get().getName();
+//                    }
+//                }
+                if(equipment!=null&&equipment.getId()!=null){
+                    if(StringUtils.isNotEmpty(equipment.getName())){
+                        categories_final.add(equipment.getName());
+                    }else {
+                        categories_final.add(equipment.getClientId().substring(equipment.getClientId().length()-6,equipment.getClientId().length()));
                     }
+                }else {
+                    categories_final.add(clientId);
                 }
-                categories_final.add(finalCategories);
             }
             chartColumn.setCategories(categories_final);
             return chartColumn;

+ 18 - 16
src/main/java/com/szwl/service/es/EsTOrderService.java

@@ -141,11 +141,6 @@ public class EsTOrderService extends EsBaseService<TOrder, TOrderParam> {
         return null;
     }
 
-//    @Override
-//    public TOrder setEntityPrimaryKey(TOrder tOrder, String value) {
-//        return tOrder.setId(Long.parseLong(value));
-//    }
-
     /**
      * 根据时间 重新同步es
      * @param
@@ -227,23 +222,26 @@ public class EsTOrderService extends EsBaseService<TOrder, TOrderParam> {
 
         }else{ // 国外用户
             TEquipmentParam tEquipmentParam = new TEquipmentParam();
-            if(StringUtils.isNotEmpty(param.getEquipmentId())){ // 设备id
-                tEquipmentParam.setId(Long.parseLong(param.getEquipmentId()));
-            }
-            List<TEquipment> equipmentList = esTEquipmentService.selectEntityByEqualToOption(tEquipmentParam);
-            List<String> clientIdList = equipmentList.stream().map(TEquipment::getClientId).collect(Collectors.toList());
-
             TCoinOrderParam tCoinOrderParam = new TCoinOrderParam();
             tCoinOrderParam.setCreateDate_start(start);
             tCoinOrderParam.setCreateDate_end(end);
-            tCoinOrderParam.setClientId_inList(clientIdList);
-            if(param.getAdminIds().size()>0){
+            // 设备id
+            if(StringUtils.isNotEmpty(param.getEquipmentId())){
+                tEquipmentParam.setId(Long.parseLong(param.getEquipmentId()));
+                List<TEquipment> equipmentList = esTEquipmentService.selectEntityByEqualToOption(tEquipmentParam);
+                List<String> clientIdList = equipmentList.stream().map(TEquipment::getClientId).collect(Collectors.toList());
+                tCoinOrderParam.setClientId_inList(clientIdList);
+            }
+
+            if(param.getAdminIds() != null && param.getAdminIds().size()>0){
                 tCoinOrderParam.setAdminId_inList(param.getAdminIds());
             }
-            if(StringUtils.isNotEmpty(param.getAdminId())){ // 所属商家id
+            // 所属商家id
+            if(StringUtils.isNotEmpty(param.getAdminId())){
                 tCoinOrderParam.setAdminId(Long.parseLong(param.getAdminId()));
             }
-            if(param.getClientIds().size()>0){ // 设备
+            // 设备
+            if(param.getClientIds() != null && param.getClientIds().size()>0){
                 tCoinOrderParam.setClientId_inList(param.getClientIds());
             }
             boolQueryBuilder = esTCoinOrderService.getParam2QueryBuilder(tCoinOrderParam);
@@ -365,7 +363,11 @@ public class EsTOrderService extends EsBaseService<TOrder, TOrderParam> {
             SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
             // 指定size为0,不返回文档 因为只需要数量
             sourceBuilder.query(queryBuilder).aggregation(dateHistogram).size(0);
-            SearchRequest searchRequest = new SearchRequest(getTableName());
+            String tableName = getTableName();
+            if(StringUtils.isNotEmpty(param.getIfForeign()) && param.getIfForeign().equals("1")) {
+                tableName = esTCoinOrderService.getTableName();
+            }
+            SearchRequest searchRequest = new SearchRequest(tableName);
             searchRequest.source(sourceBuilder);
             log.debug("sourceBuilder:{}", sourceBuilder);
             SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);