Browse Source

任务提交 订单查询财务相关
BUG提交 增加订单字段

秦国才 4 years ago
parent
commit
3aa16b504f

+ 58 - 1
common/fire-dto/src/main/java/com/fire/es/OrderEsDto.java

@@ -1,6 +1,7 @@
 package com.fire.es;
 
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.data.annotation.Id;
 import org.springframework.data.elasticsearch.annotations.Document;
@@ -16,203 +17,259 @@ public class OrderEsDto {
      * 订单ID
      */
     @Id
+    @ApiModelProperty(value = "订单ID")
     private String orderId;
 
     /**
      * 接入ID号
      */
+    @ApiModelProperty(value = "接入ID号")
     @Field(type = FieldType.Keyword)
     private String flowAppId;
 
     /**
      * 流量包ID号
      */
+    @ApiModelProperty(value = "流量包ID号")
     @Field(type = FieldType.Keyword)
     private String packageId;
 
     /**
      * 客户ID号
      */
+    @ApiModelProperty(value = "客户ID号")
     @Field(type = FieldType.Integer)
     private Integer enterpriseId;
 
     /**
      * 订单类型 2:流量 3:话费
      */
+    @ApiModelProperty(value = "订单类型 2:流量 3:话费")
     @Field(type = FieldType.Integer)
     private Integer orderType;
 
     /**
      * 用户手机号
      */
+    @ApiModelProperty(value = "用户手机号")
     @Field(type = FieldType.Keyword)
     private String usedMobile;
 
     /**
      * 客户订单号
      */
+    @ApiModelProperty(value = "客户订单号")
     @Field(type = FieldType.Keyword)
     private String extorderId;
 
     /**
      * 分发记录号
      */
+    @ApiModelProperty(value = "分发记录号")
     @Field(type = FieldType.Keyword)
     private String recId;
 
     /**
      * 下单时间
      */
+    @ApiModelProperty(value = "下单时间")
     @Field(type = FieldType.Date)
     private Date applyDate;
     /**
      * 激活日期
      */
+    @ApiModelProperty(value = "激活日期")
     @Field(type = FieldType.Date)
     private Date activeDate;
     /**
      * 订单超时
      */
+    @ApiModelProperty(value = "订单超时")
     @Field(type = FieldType.Date)
     private Date limitedDate;
     /**
      * 订单状态 1-待发 2-已发 3-成功
      *   4-失败 5-风控
      */
+    @ApiModelProperty(value = "订单状态 1-待发 2-已发 3-成功 4-失败 5-风控")
     @Field(type = FieldType.Integer)
     private Integer status;
     /**
      * 订单备注
      */
+    @ApiModelProperty(value = "订单备注")
     @Field(type = FieldType.Keyword)
     private String note;
     /**
      * 归属运营商
      */
+    @ApiModelProperty(value = "归属运营商")
     @Field(type = FieldType.Keyword)
     private String mobileOperator;
     /**
      * 归属地市
      */
+    @ApiModelProperty(value = "运营商归属地")
     @Field(type = FieldType.Text, analyzer = "ik_max_word")
     private String mobileHome;
     /**
      * 供应商返回订单号
      */
+    @ApiModelProperty(value = "供应商返回订单号")
     @Field(type = FieldType.Keyword)
     private String gwSeqNo;
     /**
      * 供应商返回状态
      */
+    @ApiModelProperty(value = "供应商返回状态")
     @Field(type = FieldType.Keyword)
     private String gwStatus;
     /**
      * 最后修改日期
      */
+    @ApiModelProperty(value = "最后修改日期")
     @Field(type = FieldType.Date)
     private Date lastModifyDate;
     /**
      * 供应商网关错误代码
      */
+    @ApiModelProperty(value = "供应商网关错误代码")
     @Field(type = FieldType.Keyword)
     private String gwErrorCode;
     /**
      * 面额
      */
+    @ApiModelProperty(value = "面额")
     @Field(type = FieldType.Integer)
     private Integer flowAmount;
 
     /**
      * 回调状态
      */
+    @ApiModelProperty(value = "回调状态")
     @Field(type = FieldType.Keyword)
     private String dealFlag;
 
     /**
      * 未知
      */
+    @ApiModelProperty(value = "未知")
     @Field(type = FieldType.Keyword)
     private String oprCode;
 
     /**
      * 成本
      */
+    @ApiModelProperty(value = "成本")
     @Field(type = FieldType.Integer)
     private Integer usageLimit;
 
     /**
      * 分发组发送次数
      */
+    @ApiModelProperty(value = "分发组发送次数")
     @Field(type = FieldType.Integer)
     private Integer batchCount;
 
     /**
      * 总发送次数
      */
+    @ApiModelProperty(value = "总发送次数")
     @Field(type = FieldType.Integer)
     private Integer sendCount;
     /**
      * 省级行政编码
      */
+    @ApiModelProperty(value = "总发送次数")
     @Field(type = FieldType.Keyword)
     private String areaCode;
     /**
      * 客户结算价格
      */
+    @ApiModelProperty(value = "客户结算价格")
     @Field(type = FieldType.Integer)
     private Integer price;
     /**
      * 代理商结算价格
      */
+    @ApiModelProperty(value = "代理商结算价格")
     @Field(type = FieldType.Integer)
     private Integer partnerBalancePrice;
     /**
      * 运行商成本价格
      */
+    @ApiModelProperty(value = "运行商成本价格")
     @Field(type = FieldType.Integer)
     private Integer operatorBalancePrice;
 
     /**
      * 客户产品
      */
+    @ApiModelProperty(value = "客户产品")
     @Field(type = FieldType.Integer)
     private Integer orderDetailId;
 
     /**
      * 通道ID
      */
+    @ApiModelProperty(value = "通道ID")
     @Field(type = FieldType.Integer)
     private Integer channelId;
 
     /**
      * 回调时间
      */
+    @ApiModelProperty(value = "回调时间")
     @Field(type = FieldType.Date)
     private Date checkTime;
 
     /**
      * 产品ID
      */
+    @ApiModelProperty(value = "产品ID")
     @Field(type = FieldType.Keyword)
     private String productId;
 
     /**
-     * 备用1
+     * 官方凭证
      */
+    @ApiModelProperty(value = "官方凭证")
     @Field(type = FieldType.Keyword)
     private String attr1;
+
     /**
      * 备用2
      */
+    @ApiModelProperty(value = "备用2")
     @Field(type = FieldType.Keyword)
     private String attr2;
 
     /**
      * 备用3
      */
+    @ApiModelProperty(value = "备用3")
     @Field(type = FieldType.Keyword)
     private String attr3;
 
+    /**
+     * 客户名称
+     */
+    @ApiModelProperty(value = "客户名称")
+    @Field(type = FieldType.Text, analyzer = "ik_max_word")
+    private String user;
 
+    /**
+     * 通道名称
+     */
+    @ApiModelProperty(value = "通道名称")
+    @Field(type = FieldType.Text, analyzer = "ik_max_word")
+    private String channelName;
+
+    /**
+     * app接入名称
+     */
+    @ApiModelProperty(value = "app接入名称")
+    @Field(type = FieldType.Text, analyzer = "ik_max_word")
+    private String appId;
 
 }

+ 6 - 0
modules/admin/src/main/java/com/fire/admin/rest/OrderRest.java

@@ -36,6 +36,12 @@ public class OrderRest {
         return new BaseRestResponse<>(orderManagementService.orderSearch(orderSearchPram));
     }
 
+    @PostMapping("/searchFinance")
+    @ApiOperation(value = "订单查询(财务)", notes = "order_search_Finance.py")
+    public BaseRestResponse<Map<String,Object>> orderSearchFinance(@RequestBody OrderSearchPram orderSearchPram) {
+        return new BaseRestResponse<>(orderManagementService.orderSearchFinance(orderSearchPram));
+    }
+
 
 
 

+ 98 - 61
modules/admin/src/main/java/com/fire/admin/service/OrderManagementService.java

@@ -7,6 +7,10 @@ import org.apache.logging.log4j.util.Strings;
 import org.elasticsearch.index.query.BoolQueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.index.query.RangeQueryBuilder;
+import org.elasticsearch.search.aggregations.AggregationBuilders;
+import org.elasticsearch.search.aggregations.Aggregations;
+import org.elasticsearch.search.aggregations.metrics.ParsedSum;
+import org.elasticsearch.search.aggregations.metrics.SumAggregationBuilder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
@@ -30,10 +34,10 @@ public class OrderManagementService {
     /**
      * 订单查询
      */
-    public Map<String,Object> orderSearch(OrderSearchPram orderSearchPram) {
-        //以创建时间倒序排列
+    public Map<String, Object> orderSearch(OrderSearchPram orderSearchPram) {
         HashMap<String, Object> pageMap = new HashMap<>();
-        ArrayList<OrderEsDto> resultsList = new ArrayList<OrderEsDto>();
+        ArrayList<OrderEsDto> resultsList = new ArrayList<>();
+        //以创建时间倒序排列
         Sort sort = Sort.by(Sort.Direction.DESC, "applyDate");
         Date applyDateStart = orderSearchPram.getApplyDateStart();
         Date applyDateEnd = orderSearchPram.getApplyDateEnd();
@@ -54,11 +58,13 @@ public class OrderManagementService {
             rangeQueryBuilder = QueryBuilders.rangeQuery("checkTime")
                     .gte(orderSearchPram.getCheckTimeStart().getTime())
                     .lte(orderSearchPram.getCheckTimeEnd().getTime());
-        } else {
-            rangeQueryBuilder = QueryBuilders.rangeQuery("applyDate")
-                    .gte(applyDateStart.getTime())
-                    .lte(applyDateEnd.getTime());
-        }
+            boolQuery.must(rangeQueryBuilder);
+            }
+        rangeQueryBuilder = QueryBuilders.rangeQuery("applyDate")
+                .gte(applyDateStart.getTime())
+                .lte(applyDateEnd.getTime());
+        boolQuery.must(rangeQueryBuilder);
+
         //筛选条件
         //订单号
         if (Strings.isNotBlank(orderSearchPram.getOrderId())) {
@@ -71,22 +77,26 @@ public class OrderManagementService {
         //电话号码
         if (Strings.isNotBlank(orderSearchPram.getUsedMobile())) {
             String usedMobiles = orderSearchPram.getUsedMobile();
-            if (usedMobiles.indexOf(",") >= 0){
+            if (usedMobiles.indexOf(",") >= 0) {
                 String[] usedMobileList = usedMobiles.split(",");
                 for (String usedMobile : usedMobileList) {
                     boolQuery.should(QueryBuilders.termQuery("usedMobile", usedMobile));
                 }
-            }else{
+            } else {
                 boolQuery.must(QueryBuilders.termQuery("usedMobile", usedMobiles));
             }
         }
-        //客户名称 暂时用的ID
+        //客户名称
         if (Strings.isNotBlank(orderSearchPram.getEnterpriseIdDesc())) {
-            boolQuery.must(QueryBuilders.termQuery("enterpriseId", orderSearchPram.getEnterpriseIdDesc()));
+            BoolQueryBuilder tempQueryBuilder = QueryBuilders.boolQuery();
+            tempQueryBuilder.should(QueryBuilders.wildcardQuery("user.keyword", "*" + orderSearchPram.getEnterpriseIdDesc() + "*"));
+            boolQuery.must(tempQueryBuilder);
         }
-        //通道名称 暂时用的ID
+        //通道名称
         if (Strings.isNotBlank(orderSearchPram.getChannelIdDesc())) {
-            boolQuery.must(QueryBuilders.termQuery("channelId", orderSearchPram.getChannelIdDesc()));
+            BoolQueryBuilder tempQueryBuilder = QueryBuilders.boolQuery();
+            tempQueryBuilder.should(QueryBuilders.wildcardQuery("channelName.keyword", "*" + orderSearchPram.getChannelIdDesc() + "*"));
+            boolQuery.must(tempQueryBuilder);
         }
         //订单状态
         if (Strings.isNotBlank(orderSearchPram.getStatus())) {
@@ -109,35 +119,37 @@ public class OrderManagementService {
 
         NativeSearchQuery query = new NativeSearchQueryBuilder()
                 .withPageable(pageable)
-                .withQuery(boolQuery.must(rangeQueryBuilder))
+                .withQuery(boolQuery)
                 .build();
         //查询数据
-        SearchHits<OrderEsDto> hits = restTemplate.search(query, OrderEsDto.class);
-        long total = hits.getTotalHits();
-        List<SearchHit<OrderEsDto>> searchHits = hits.getSearchHits();
-        System.out.println("一共" + total + "个");
-        System.out.println("搜索结果" + searchHits.size() + "个");
-        for (SearchHit<OrderEsDto> searchHit : searchHits) {
-            OrderEsDto orderEsDto = searchHit.getContent();
-            resultsList.add(orderEsDto);
-//            log.info(stuEntity.toString());
-        }
-        pageMap.put("records",resultsList);
-        pageMap.put("size",size);
-        pageMap.put("current",page + 1);
-        pageMap.put("total",total);
-        pageMap.put("pages",total%size == 0 ? (int)total/size:(int)total/size + 1);
+        try {
+            SearchHits<OrderEsDto> hits = restTemplate.search(query, OrderEsDto.class);
+            long total = hits.getTotalHits();
+            List<SearchHit<OrderEsDto>> searchHits = hits.getSearchHits();
+            System.out.println("一共" + total + "个");
+            System.out.println("搜索结果" + searchHits.size() + "个");
+            for (SearchHit<OrderEsDto> searchHit : searchHits) {
+                OrderEsDto orderEsDto = searchHit.getContent();
+                resultsList.add(orderEsDto);
+            }
+            pageMap.put("records", resultsList);
+            pageMap.put("size", size);
+            pageMap.put("current", page + 1);
+            pageMap.put("total", total);
+            pageMap.put("pages", total % size == 0 ? (int) total / size : (int) total / size + 1);
+        } catch (Exception e) {
+            log.error(String.valueOf(e));
+        }
         return pageMap;
     }
 
     /**
      * 订单查询(财务)
-     *
      */
-    public Map<String,Object> orderSearchFinance(OrderSearchPram orderSearchPram) {
-        //以创建时间倒序排列
+    public Map<String, Object> orderSearchFinance(OrderSearchPram orderSearchPram) {
         HashMap<String, Object> pageMap = new HashMap<>();
-        ArrayList<OrderEsDto> resultsList = new ArrayList<OrderEsDto>();
+        ArrayList<OrderEsDto> resultsList = new ArrayList<>();
+        //以创建时间倒序排列
         Sort sort = Sort.by(Sort.Direction.DESC, "applyDate");
         Date applyDateStart = orderSearchPram.getApplyDateStart();
         Date applyDateEnd = orderSearchPram.getApplyDateEnd();
@@ -158,11 +170,13 @@ public class OrderManagementService {
             rangeQueryBuilder = QueryBuilders.rangeQuery("checkTime")
                     .gte(orderSearchPram.getCheckTimeStart().getTime())
                     .lte(orderSearchPram.getCheckTimeEnd().getTime());
-        } else {
-            rangeQueryBuilder = QueryBuilders.rangeQuery("applyDate")
-                    .gte(applyDateStart.getTime())
-                    .lte(applyDateEnd.getTime());
+            boolQuery.must(rangeQueryBuilder);
         }
+        rangeQueryBuilder = QueryBuilders.rangeQuery("applyDate")
+                .gte(applyDateStart.getTime())
+                .lte(applyDateEnd.getTime());
+        boolQuery.must(rangeQueryBuilder);
+
         //筛选条件
         //订单号
         if (Strings.isNotBlank(orderSearchPram.getOrderId())) {
@@ -175,22 +189,26 @@ public class OrderManagementService {
         //电话号码
         if (Strings.isNotBlank(orderSearchPram.getUsedMobile())) {
             String usedMobiles = orderSearchPram.getUsedMobile();
-            if (usedMobiles.indexOf(",") >= 0){
+            if (usedMobiles.indexOf(",") >= 0) {
                 String[] usedMobileList = usedMobiles.split(",");
                 for (String usedMobile : usedMobileList) {
                     boolQuery.should(QueryBuilders.termQuery("usedMobile", usedMobile));
                 }
-            }else{
+            } else {
                 boolQuery.must(QueryBuilders.termQuery("usedMobile", usedMobiles));
             }
         }
-        //客户名称 暂时用的ID
+        //客户名称
         if (Strings.isNotBlank(orderSearchPram.getEnterpriseIdDesc())) {
-            boolQuery.must(QueryBuilders.termQuery("enterpriseId", orderSearchPram.getEnterpriseIdDesc()));
+            BoolQueryBuilder tempQueryBuilder = QueryBuilders.boolQuery();
+            tempQueryBuilder.should(QueryBuilders.wildcardQuery("user.keyword", "*" + orderSearchPram.getEnterpriseIdDesc() + "*"));
+            boolQuery.must(tempQueryBuilder);
         }
-        //通道名称 暂时用的ID
+        //通道名称
         if (Strings.isNotBlank(orderSearchPram.getChannelIdDesc())) {
-            boolQuery.must(QueryBuilders.termQuery("channelId", orderSearchPram.getChannelIdDesc()));
+            BoolQueryBuilder tempQueryBuilder = QueryBuilders.boolQuery();
+            tempQueryBuilder.should(QueryBuilders.wildcardQuery("channelName.keyword", "*" + orderSearchPram.getChannelIdDesc() + "*"));
+            boolQuery.must(tempQueryBuilder);
         }
         //订单状态
         if (Strings.isNotBlank(orderSearchPram.getStatus())) {
@@ -211,34 +229,53 @@ public class OrderManagementService {
             boolQuery.must(tempQueryBuilder);
         }
 
+        //统计条件
+        SumAggregationBuilder sumBuilder = AggregationBuilders.sum("sumPrice").field("price");
+        SumAggregationBuilder sumBuilder2 = AggregationBuilders.sum("sumPartnerPrice").field("partnerBalancePrice");
+        SumAggregationBuilder sumBuilder3 = AggregationBuilders.sum("sumOperatorPrice").field("operatorBalancePrice");
+
+
         NativeSearchQuery query = new NativeSearchQueryBuilder()
                 .withPageable(pageable)
                 .withQuery(boolQuery.must(rangeQueryBuilder))
+                .addAggregation(sumBuilder)
                 .build();
+        query.addAggregation(sumBuilder2);
+        query.addAggregation(sumBuilder3);
         //查询数据
-        SearchHits<OrderEsDto> hits = restTemplate.search(query, OrderEsDto.class);
-        long total = hits.getTotalHits();
-        List<SearchHit<OrderEsDto>> searchHits = hits.getSearchHits();
-        System.out.println("一共" + total + "个");
-        System.out.println("搜索结果" + searchHits.size() + "个");
-        for (SearchHit<OrderEsDto> searchHit : searchHits) {
-            OrderEsDto orderEsDto = searchHit.getContent();
-            resultsList.add(orderEsDto);
-//            log.info(stuEntity.toString());
-        }
-        pageMap.put("records",resultsList);
-        pageMap.put("size",size);
-        pageMap.put("current",page + 1);
-        pageMap.put("total",total);
-        pageMap.put("pages",total%size == 0 ? (int)total/size:(int)total/size + 1);
+        try {
+            SearchHits<OrderEsDto> hits = restTemplate.search(query, OrderEsDto.class);
+            Aggregations aggregations = hits.getAggregations();
+            double sumPrice = ((ParsedSum) aggregations.get("sumPrice")).getValue();
+            double sumPartnerPrice = ((ParsedSum) aggregations.get("sumPartnerPrice")).getValue();
+            double sumOperatorPrice = ((ParsedSum) aggregations.get("sumOperatorPrice")).getValue();
+
+            long total = hits.getTotalHits();
+            List<SearchHit<OrderEsDto>> searchHits = hits.getSearchHits();
+            System.out.println("一共" + total + "个");
+            System.out.println("搜索结果" + searchHits.size() + "个");
+            for (SearchHit<OrderEsDto> searchHit : searchHits) {
+                OrderEsDto orderEsDto = searchHit.getContent();
+                resultsList.add(orderEsDto);
+            }
+            pageMap.put("sumPrice", sumPrice);
+            pageMap.put("sumPartnerPrice", sumPartnerPrice);
+            pageMap.put("sumOperatorPrice", sumOperatorPrice);
+            pageMap.put("records", resultsList);
+            pageMap.put("size", size);
+            pageMap.put("current", page + 1);
+            pageMap.put("total", total);
+            pageMap.put("pages", total % size == 0 ? (int) total / size : (int) total / size + 1);
+        }catch(Exception e) {
+            log.error(String.valueOf(e));
+        }
         return pageMap;
     }
+}
 
 
 
 
-}
-