ソースを参照

feat:“添加机器销售分支付方式统计功能“

soobin 1 年間 前
コミット
e72eb082b6

+ 38 - 45
src/main/java/com/szwl/controller/TOrderController.java

@@ -237,7 +237,7 @@ public class TOrderController {
             if (StringUtils.isNotEmpty(clientId)) {
                 TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId));
                 //判断机器是否属于这个登陆账号
-                if(equipment != null) {
+                if (equipment != null) {
                     if (admin.getType() > 1) {
                         //商家
                         if (equipment.getAdminId().toString().equals(admin.getId().toString())) {
@@ -312,7 +312,7 @@ public class TOrderController {
             //显示订单所属机器的设备名称
             List<TOrder> orderList = iPage.getRecords();
             List<OrderDetailsVo> orderDetailsVos = new ArrayList<>();
-            if(orderList.size()>0){
+            if (orderList.size() > 0) {
                 // 设备编号集合
                 List<String> clientIds = new ArrayList<>();
                 for (TOrder order : orderList) {
@@ -341,7 +341,7 @@ public class TOrderController {
                     LambdaQueryWrapper<TOrderDetails> queryWrapper = Wrappers.lambdaQuery();
                     queryWrapper.eq(TOrderDetails::getOrderSn, order.getSn());
                     List<TOrderDetails> orderDetailsList = orderDetailsService.list(queryWrapper);
-                    if(orderDetailsList != null) {
+                    if (orderDetailsList != null) {
                         orderDetailsVo.setOrderDetails(orderDetailsList);
                     }
                     orderDetailsVos.add(orderDetailsVo);
@@ -353,7 +353,8 @@ public class TOrderController {
             pageList.setTotal(iPage.getTotal());
             pageList.setSize(iPage.getSize());
             return R.ok(pageList);
-        };
+        }
+        ;
 
         //1,海外
         if (type.equals("1")) {
@@ -476,7 +477,7 @@ public class TOrderController {
 
             if (StringUtils.isNotEmpty(clientId)) {
                 TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId));
-                if(equipment != null) {
+                if (equipment != null) {
                     //判断机器是否属于这个登陆账号
                     if (admin.getType() > 1) {
                         //商家
@@ -487,7 +488,7 @@ public class TOrderController {
                         query.eq(TCoinOrder::getClientId, equipment.getClientId());
                     }
                 } else {
-                    return R.fail(ResponseCodesEnum.A0001,"设备不存在");
+                    return R.fail(ResponseCodesEnum.A0001, "设备不存在");
                 }
             }
             if (startDate != null) {
@@ -949,42 +950,7 @@ public class TOrderController {
 //                chartColumn  = tOrderService.getStatistics(param);
                 }
             }
-//            if (ElasticsearchRunner.ES_RUNNING) {
-//                try {
-//                    // 查es
-//                    chartColumn = esTEquipmentService.getEquipmentStatistics(param);
-//                }catch (Exception e){
-//                    log.error("使用es 查询发生错误:{}",e);
-//                    // 查 mysql
-////                    chartColumn = tOrderService.getEquipmentStatistics(param);
-//                }
-//            }else{
-//                // 查 mysql
-////                chartColumn = tOrderService.getEquipmentStatistics(param);
-//            }
         }
-//        try {
-//            // 查es
-//            chartColumn = esTEquipmentService.getEquipmentStatistics(param);
-//        }catch (Exception e){
-//            log.error("使用es 查询发生错误:{}",e);
-//            // 查 mysql
-////                    chartColumn = tOrderService.getEquipmentStatistics(param);
-//        }
-//        if (ElasticsearchRunner.ES_RUNNING) {
-//            try {
-//                // 查es
-//                chartColumn = esTEquipmentService.getEquipmentStatistics(param);
-//            }catch (Exception e){
-//                log.error("使用es 查询发生错误:{}",e);
-//                // 查 mysql
-//                chartColumn = tOrderService.getEquipmentStatistics(param);
-//            }
-//        }else{
-//            // 查 mysql
-//            chartColumn = tOrderService.getEquipmentStatistics(param);
-//        }
-
         return ResponseEntity
                 .status(HttpStatus.OK)
                 .body(new ResultMessage()
@@ -993,6 +959,33 @@ public class TOrderController {
                         .setMessage("SUCCESS"));
     }
 
+    @ApiOperation("机器销售统计")
+    @PostMapping("/getEquipmentPageStatistics")
+    public ResponseModel<?> getEquipmentPageStatistics(@RequestBody StatisticsParam param) {
+        SellChartColumn sellChartColumn;
+        if (StringUtils.isNotEmpty(param.getAdminId())) {
+            TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(param.getAdminId()));
+            if (admin.getType() == 3) {
+                //子账户只能查相对的机器的订单
+                //商家子账户
+                TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getId())));
+                if (!adminEquipment.getType().equals("0")) {
+                    List<String> list = R.getDataIfSuccess(szwlFeign.getClientIds(param.getAdminId()));
+                    param.setClientIds(list);
+                    if (StringUtils.isNotEmpty(adminEquipment.getEquipmentIds())) {
+                        List<String> strings = Arrays.asList(adminEquipment.getEquipmentIds().split(","));
+                        param.setEquipmentIds(strings);
+                    } else {
+                        return R.fail(ResponseCodesEnum.A0001, "没有绑定机器/no machine");
+                    }
+                }
+                param.setAdminId(String.valueOf(admin.getParentId()));
+            }
+        }
+        sellChartColumn = esTEquipmentService.getEquipmentPageStatistics(param);
+        return R.ok(sellChartColumn);
+    }
+
     @ApiOperation(value = "查询国内线上订单")
     @RequestMapping(value = "/findOrder", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
     @ResponseBody
@@ -2010,11 +2003,11 @@ public class TOrderController {
     @ApiOperation("发送退款短信提醒")
     @GetMapping("/sentMessage")
     public ResponseModel<?> sentMessage(Long id, String customerPhone) {
-        if(id == null) {
+        if (id == null) {
             return R.fail(ResponseCodesEnum.A0001);
         }
         String result = orderService.setMessage(id, customerPhone);
-        if(result.equals(ConfigConsts.SUCCESS)) {
+        if (result.equals(ConfigConsts.SUCCESS)) {
             return R.ok("发送成功");
         } else {
             return R.fail(ResponseCodesEnum.A0001, result);
@@ -2024,11 +2017,11 @@ public class TOrderController {
     @ApiOperation("是否开发票")
     @GetMapping("/updateIsInvoice")
     public ResponseModel<?> updateIsInvoice(Long id, Integer isInvoice) {
-        if(id == null || isInvoice ==null ){
+        if (id == null || isInvoice == null) {
             return R.fail(ResponseCodesEnum.A0001);
         }
         TOrder order = orderService.getById(id);
-        if (order ==null) {
+        if (order == null) {
             return R.fail(ResponseCodesEnum.A0001, "订单不存在");
         }
         order.setIsInvoice(isInvoice);

+ 34 - 0
src/main/java/com/szwl/model/bean/SellChartBean.java

@@ -0,0 +1,34 @@
+package com.szwl.model.bean;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+@Accessors(chain = true)
+@NoArgsConstructor
+@Getter
+@Setter
+@ToString
+public class SellChartBean {
+
+    @ApiModelProperty(value="统计类目")
+    private String category;
+
+    @ApiModelProperty(value="硬币")
+    private Float coinNum;
+
+    @ApiModelProperty(value="纸币")
+    private Float paperMoneyNum;
+
+    @ApiModelProperty(value="硬币+纸币")
+    private Float coinAndPaperMoneyNum;
+
+    @ApiModelProperty(value="信用卡")
+    private Float creditCardNum;
+
+    @ApiModelProperty(value="电子支付")
+    private Float electronicNum;
+}

+ 97 - 0
src/main/java/com/szwl/model/bean/SellChartColumn.java

@@ -0,0 +1,97 @@
+package com.szwl.model.bean;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.List;
+
+@Accessors(chain = true)
+@NoArgsConstructor
+@Getter
+@Setter
+@ToString
+public class SellChartColumn {
+
+    @ApiModelProperty(value = "统计类目")
+    private ArrayList<String> categories;
+
+    @ApiModelProperty(value = "统计类目值")
+    private ArrayList<ChartSerie> series;
+
+    public SellChartColumn(List<SellChartBean> list) {
+
+        ArrayList<String> categories = new ArrayList<>();
+
+        ArrayList<Float> coinList = new ArrayList<>();
+
+        ArrayList<Float> paperMoneyList = new ArrayList<>();
+
+        ArrayList<Float> coinAndPaperMoneyList = new ArrayList<>();
+
+        ArrayList<Float> creditCardList = new ArrayList<>();
+
+        ArrayList<Float> electronicList = new ArrayList<>();
+
+        for (SellChartBean bean : list) {
+            categories.add(bean.getCategory());
+            if (bean.getCoinNum() != null) {
+                coinList.add(Float.valueOf(format(bean.getCoinNum())));
+            }
+            if (bean.getPaperMoneyNum() != null) {
+                paperMoneyList.add(Float.valueOf(format(bean.getPaperMoneyNum())));
+            }
+            if (bean.getPaperMoneyNum() != null) {
+                coinAndPaperMoneyList.add(Float.valueOf(format(bean.getPaperMoneyNum())));
+            }
+            if (bean.getCreditCardNum() != null) {
+                creditCardList.add(Float.valueOf(format(bean.getCreditCardNum())));
+            }
+            if (bean.getElectronicNum() != null) {
+                electronicList.add(Float.valueOf(format(bean.getElectronicNum())));
+            }
+        }
+
+        this.setCategories(categories);
+        ChartSerie coin = new ChartSerie();
+        coin.setName("硬币");
+        coin.setData(coinList);
+
+        ChartSerie paperMoney = new ChartSerie();
+        paperMoney.setName("纸币");
+        paperMoney.setData(paperMoneyList);
+
+        ChartSerie coinAndPaperMoney = new ChartSerie();
+        coinAndPaperMoney.setName("硬币+纸币");
+        coinAndPaperMoney.setData(coinAndPaperMoneyList);
+
+        ChartSerie creditCard = new ChartSerie();
+        creditCard.setName("信用卡");
+        creditCard.setData(creditCardList);
+
+        ChartSerie electronic = new ChartSerie();
+        electronic.setName("电子支付");
+        electronic.setData(electronicList);
+
+        ArrayList<ChartSerie> series = new ArrayList<>();
+        series.add(coin);
+        series.add(paperMoney);
+        series.add(coinAndPaperMoney);
+        series.add(creditCard);
+        series.add(electronic);
+        this.setSeries(series);
+    }
+
+
+    public static String format(Float value) {
+        BigDecimal bd = new BigDecimal(value);//创建一个bd对象,将要转换的值value传入构造函数
+        bd = bd.setScale(2, RoundingMode.HALF_UP);//调用setScale方法进行数据格式化,保留两位小数,采用四舍五入规则
+        return bd.toString(); //返回bd对象的值(转化为string形式)
+    }
+}

+ 17 - 16
src/main/java/com/szwl/model/query/TCoinOrderParam.java

@@ -1,7 +1,7 @@
 /**
  * Date:2019-09-23 17:09:15
  * author:吴洪双
-*/
+ */
 
 package com.szwl.model.query;
 
@@ -25,9 +25,9 @@ import java.util.List;
 @Setter
 @ToString
 public class TCoinOrderParam extends TCoinOrder {
-	 @CamelCaseToUnderscore
-     @ApiModelProperty(value = "排序,如:id desc")
-     private String orderByClause;
+    @CamelCaseToUnderscore
+    @ApiModelProperty(value = "排序,如:id desc")
+    private String orderByClause;
     @ApiModelProperty(value = "是否distinct")
     private boolean distinct;
     @ApiModelProperty(value = "分页,展示多少条记录")
@@ -37,24 +37,25 @@ public class TCoinOrderParam extends TCoinOrder {
     @ApiModelProperty(value = "主键id 集合,用于批量删除和批量修改")
     private List primaryKeyList;
     private List<TCoinOrder> entityList;//实体集合,用于批量新增
-    
-	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	private Date createDate_start;
-	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	private Date createDate_end;
-	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	private Date modifyDate_start;
-	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	private Date modifyDate_end;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createDate_start;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createDate_end;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date modifyDate_start;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date modifyDate_end;
     private String clientId_like;
     private List clientId_inList;
     private String sn_like;
     private String createDate_like;
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date payDate_start;
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date payDate_end;
-/*==================================以上是自动生成部分字段======================================*/
+    /*==================================以上是自动生成部分字段======================================*/
     private List adminId_inList;
     private List productName_notInList;
+    private List equipmentId_inList;
 }

+ 175 - 69
src/main/java/com/szwl/service/es/EsTEquipmentService.java

@@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.szwl.feign.SzwlFeign;
 import com.szwl.model.bean.ChartBean;
 import com.szwl.model.bean.ChartColumn;
+import com.szwl.model.bean.SellChartBean;
+import com.szwl.model.bean.SellChartColumn;
 import com.szwl.model.bo.R;
 import com.szwl.model.bo.ResponseModel;
 import com.szwl.model.entity.TEquipment;
@@ -57,6 +59,7 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
     EsTOrderService esTOrderService;
     @Autowired
     SzwlFeign szwlFeign;
+
     @Override
     public String getTableName() {
         return "es_t_equipment";
@@ -79,21 +82,21 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
 
     @Override
     public void initTableFun() {
-        try{
+        try {
             String tableName = getTableName();
             GetIndexRequest request = new GetIndexRequest(tableName);
 //            DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest(this.getTableName());
 //            restHighLevelClient.indices().delete(deleteIndexRequest,RequestOptions.DEFAULT);
             boolean isExists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);
             if (!isExists) {
-                log.info("es 索引 开始创建"+tableName);
+                log.info("es 索引 开始创建" + tableName);
                 createTable();
                 // 初始化旧流水
                 int num = 0;
                 while (true) {
                     int limit = MAX_ROW;
 //                    int offset= num * MAX_ROW;
-                    int offset= num;
+                    int offset = num;
 
                     LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
                     Page<TEquipment> page = new Page<>(offset, limit, true);
@@ -105,16 +108,16 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
 //                    List<TEquipment> list = tEquipmentService.selectByOption(example);
                     insertBatch(list);
                     num++;
-                    if(list.size()< MAX_ROW){ // 数据小于 最大值 ,证明后面已无数据,则跳出
+                    if (list.size() < MAX_ROW) { // 数据小于 最大值 ,证明后面已无数据,则跳出
                         break;
                     }
                 }
             } else {
-                log.info("es 索引 "+tableName+" 已存在不再创建");
+                log.info("es 索引 " + tableName + " 已存在不再创建");
             }
             InitEsTableStatus = true;
-        }catch (Exception e){
-            log.error("ElasticsearchRunner InitEsTEquipmentThread 发生错误:{}" , e);
+        } catch (Exception e) {
+            log.error("ElasticsearchRunner InitEsTEquipmentThread 发生错误:{}", e);
             throw new MyException("ElasticsearchRunner InitEsTEquipmentThread 发生错误:" + e.getMessage());
         }
     }
@@ -133,8 +136,10 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
 //    public TEquipment setEntityPrimaryKey(TEquipment tEquipment, String value) {
 //        return tEquipment.setId(Long.parseLong(value));
 //    }
+
     /**
      * 根据时间 重新同步es
+     *
      * @param
      * @return
      */
@@ -172,40 +177,41 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
 
 
     public ChartColumn getEquipmentStatistics(StatisticsParam param) {
-        if(StringUtils.equals("0",param.getIfForeign())) { // 国内用户
+        if (StringUtils.equals("0", param.getIfForeign())) { // 国内用户
             return getEquipmentStatistics_0(param);
-        }else{ // 国外用户
+        } else { // 国外用户
             return getEquipmentStatistics_1(param);
         }
     }
 
     /**
      * 统计 国内
+     *
      * @param param
      * @return
      */
     public ChartColumn getEquipmentStatistics_0(StatisticsParam param) {
         BoolQueryBuilder boolQueryBuilder;
-        String startDate = param.getStartDate().replace("/","-");
-        String endDate = param.getEndDate().replace("/","-");
-        Date start = DateUtils.parseDate(startDate+" 00:00:00",DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss,new Date());
-        Date end = DateUtils.parseDate(endDate+" 23:59:59",DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss,new Date());
+        String startDate = param.getStartDate().replace("/", "-");
+        String endDate = param.getEndDate().replace("/", "-");
+        Date start = DateUtils.parseDate(startDate + " 00:00:00", DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss, new Date());
+        Date end = DateUtils.parseDate(endDate + " 23:59:59", DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss, new Date());
         TOrderParam tOrderParam = new TOrderParam();
         tOrderParam.setStatus(1);
-        if(param.getEquipmentIds()!=null&&param.getEquipmentIds().size()>0){ // 设备id
+        if (param.getEquipmentIds() != null && param.getEquipmentIds().size() > 0) { // 设备id
             tOrderParam.setEquipmentId_inList(param.getEquipmentIds());
         }
         tOrderParam.setCreateDate_start(start);
         tOrderParam.setCreateDate_end(end);
-        if(StringUtils.isNotEmpty(param.getAdminId())){ // 所属商家id
+        if (StringUtils.isNotEmpty(param.getAdminId())) { // 所属商家id
             tOrderParam.setAdminId(Long.parseLong(param.getAdminId()));
         }
 
         boolQueryBuilder = esTOrderService.getParam2QueryBuilder(tOrderParam);
         // 公司平台
         String companyType = param.getCompanyType();
-        if(StringUtils.isNotEmpty(companyType)) {
-            if(companyType.equals("0")) {
+        if (StringUtils.isNotEmpty(companyType)) {
+            if (companyType.equals("0")) {
                 boolQueryBuilder.must(
                         QueryBuilders.boolQuery().should(
                                 QueryBuilders.termQuery("companyType", "0")
@@ -216,13 +222,13 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
                         )
                 );
             } else {
-                boolQueryBuilder.must(QueryBuilders.termQuery("companyType","1"));
+                boolQueryBuilder.must(QueryBuilders.termQuery("companyType", "1"));
             }
         }
         // 设备类型
         String machineType = param.getMachineType();
-        if(StringUtils.isNotEmpty(machineType)) {
-            if(machineType.equals("0")) {
+        if (StringUtils.isNotEmpty(machineType)) {
+            if (machineType.equals("0")) {
                 boolQueryBuilder.must(
                         QueryBuilders.boolQuery().should(
                                 QueryBuilders.termQuery("machineType", "0")
@@ -233,15 +239,15 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
                         )
                 );
             } else {
-                boolQueryBuilder.must(QueryBuilders.termQuery("machineType",machineType));
+                boolQueryBuilder.must(QueryBuilders.termQuery("machineType", machineType));
             }
         }
-        if("1".equals(param.getChangeType())){
+        if ("1".equals(param.getChangeType())) {
             // 花型统计
-            return getEquipmentStatistics(boolQueryBuilder,esTOrderService.getTableName(),"productName.keyword");
-        }else{
+            return getEquipmentStatistics(boolQueryBuilder, esTOrderService.getTableName(), "productName.keyword");
+        } else {
             log.info("1");
-            ChartColumn chartColumn = getEquipmentStatistics(boolQueryBuilder,esTOrderService.getTableName(),"equipmentId");
+            ChartColumn chartColumn = getEquipmentStatistics(boolQueryBuilder, esTOrderService.getTableName(), "equipmentId");
 
             // 设置categories
             ArrayList<String> equipmentIdList = chartColumn.getCategories();
@@ -249,15 +255,15 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
 //            for(String e:equipmentIdList){
 //                list.add(Long.valueOf(e));
 //            }
-            for(String e:equipmentIdList){
+            for (String e : equipmentIdList) {
                 TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(e));
-                if(equipment!=null&&equipment.getId()!=null){
-                    if(StringUtils.isNotEmpty(equipment.getName())){
+                if (equipment != null && equipment.getId() != null) {
+                    if (StringUtils.isNotEmpty(equipment.getName())) {
                         list.add(equipment.getName());
-                    }else {
-                        list.add(equipment.getClientId().substring(equipment.getClientId().length()-6,equipment.getClientId().length()));
+                    } else {
+                        list.add(equipment.getClientId().substring(equipment.getClientId().length() - 6, equipment.getClientId().length()));
                     }
-                }else {
+                } else {
                     list.add(e);
                 }
 
@@ -297,65 +303,53 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
             return chartColumn;
         }
     }
+
     /**
      * 统计 国外
+     *
      * @param param
      * @return
      */
     public ChartColumn getEquipmentStatistics_1(StatisticsParam param) {
         BoolQueryBuilder boolQueryBuilder;
-        String startDate = param.getStartDate().replace("/","-");
-        String endDate = param.getEndDate().replace("/","-");
-        Date start = DateUtils.parseDate(startDate+" 00:00:00", DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss,new Date());
-        Date end = DateUtils.parseDate(endDate+" 23:59:59", DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss,new Date());
+        String startDate = param.getStartDate().replace("/", "-");
+        String endDate = param.getEndDate().replace("/", "-");
+        Date start = DateUtils.parseDate(startDate + " 00:00:00", DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss, new Date());
+        Date end = DateUtils.parseDate(endDate + " 23:59:59", DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss, new Date());
         TCoinOrderParam tCoinOrderParam = new TCoinOrderParam();
 
 //        tCoinOrderParam.setCreateDate_start(start);
         tCoinOrderParam.setPayDate_start(start);
 //        tCoinOrderParam.setCreateDate_end(end);
         tCoinOrderParam.setPayDate_end(end);
-        if(param.getClientIds() != null && param.getClientIds().size()>0){ // 设备
+        if (param.getClientIds() != null && param.getClientIds().size() > 0) { // 设备
             tCoinOrderParam.setClientId_inList(param.getClientIds());
         }
-        if(StringUtils.isNotEmpty(param.getAdminId())){ // 所属商家id
+        if (StringUtils.isNotEmpty(param.getAdminId())) { // 所属商家id
             tCoinOrderParam.setAdminId(Long.parseLong(param.getAdminId()));
         }
 
         boolQueryBuilder = esTCoinOrderService.getParam2QueryBuilder(tCoinOrderParam);
-        if("1".equals(param.getChangeType())){
+        if ("1".equals(param.getChangeType())) {
             // 花型统计
-            return getEquipmentStatistics(boolQueryBuilder,esTCoinOrderService.getTableName(),"productName.keyword");
-        }else{
+            return getEquipmentStatistics(boolQueryBuilder, esTCoinOrderService.getTableName(), "productName.keyword");
+        } else {
             log.info("1");
-            ChartColumn chartColumn = getEquipmentStatistics(boolQueryBuilder,esTCoinOrderService.getTableName(),"clientId.keyword");
+            ChartColumn chartColumn = getEquipmentStatistics(boolQueryBuilder, esTCoinOrderService.getTableName(), "clientId.keyword");
 
             // 设置categories
             ArrayList<String> clientIdList = chartColumn.getCategories();
-//            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);
                 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())){
+                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(equipment.getClientId().substring(equipment.getClientId().length() - 6, equipment.getClientId().length()));
                     }
-                }else {
+                } else {
                     categories_final.add(clientId);
                 }
             }
@@ -364,7 +358,7 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
         }
     }
 
-    public ChartColumn getEquipmentStatistics(BoolQueryBuilder queryBuilder,String tableName ,String termField) {
+    public ChartColumn getEquipmentStatistics(BoolQueryBuilder queryBuilder, String tableName, String termField) {
         try {
             // 仅为名称,用以获取返回结果
             String aggregationResultName = "aggregationResult";
@@ -383,7 +377,7 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
             termsAggregationBuilder.size(60);
             termsAggregationBuilder.order(BucketOrder.compound(
                     //先按sales,降序排
-                BucketOrder.aggregation(aggSumName,false)
+                    BucketOrder.aggregation(aggSumName, false)
             ));
             // 根据字段price 求和 sum, sales 仅为名称,用以获取返回结果
             SumAggregationBuilder sumAggregationBuilder = AggregationBuilders.sum(aggSumName).field("price");
@@ -416,22 +410,18 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
                 ParsedSum saleNum2 = bucket.getAggregations().get(aggName_refundQuantity);
                 String saleNumStr1 = format1((float) saleNum1.getValue());
                 String saleNumStr2 = format1((float) saleNum2.getValue());
-                if(StringUtils.isEmpty(saleNumStr1)){
+                if (StringUtils.isEmpty(saleNumStr1)) {
                     saleNumStr1 = "1";
                 }
                 chartBean.setSaleNum(Float.valueOf(saleNumStr1) - Float.valueOf(saleNumStr2));
-//                chartBean.setSaleNum(Float.valueOf(bucket.getDocCount()));
                 ParsedSum sum = bucket.getAggregations().get(aggSumName);
                 ParsedSum refundSum = bucket.getAggregations().get(aggName_refundAmount);
                 String s1 = format1((float) sum.getValue());
                 String s2 = format1((float) refundSum.getValue());
                 chartBean.setSalePrice(Float.valueOf(s1) - Float.valueOf(s2));
-//                chartBean.setSalePrice(Double.valueOf(sum.getValue()).intValue());
-//                String s = format1((float)sum.getValue());
-//                chartBean.setSalePrice(Float.valueOf(s));
                 chartBeanList.add(chartBean);
             }
-            log.debug("chartBeanList:{}",chartBeanList);
+            log.debug("chartBeanList:{}", chartBeanList);
             ChartColumn chartColumn = new ChartColumn(chartBeanList);
             return chartColumn;
         } catch (Exception e) {
@@ -439,10 +429,126 @@ public class EsTEquipmentService extends EsBaseService<TEquipment, TEquipmentPar
             throw new MyException(getTableName() + " es根据条件 聚合查询 报错:" + e.getMessage());
         }
     }
-    public static String format1(Float value){
+
+    public static String format1(Float value) {
         BigDecimal bd = new BigDecimal(value);//创建一个bd对象,将要转换的值value传入构造函数
         bd = bd.setScale(2, RoundingMode.HALF_UP);//调用setScale方法进行数据格式化,保留两位小数,采用四舍五入规则
         return bd.toString(); //返回bd对象的值(转化为string形式)
     }
 
+    public SellChartColumn getEquipmentPageStatistics(StatisticsParam param) {
+
+        BoolQueryBuilder boolQueryBuilder;
+        String startDate = param.getStartDate().replace("/", "-");
+        String endDate = param.getEndDate().replace("/", "-");
+        Date start = DateUtils.parseDate(startDate + " 00:00:00", DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss, new Date());
+        Date end = DateUtils.parseDate(endDate + " 23:59:59", DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss, new Date());
+
+        TCoinOrderParam tCoinOrderParam = new TCoinOrderParam();
+        tCoinOrderParam.setPayDate_start(start);
+        tCoinOrderParam.setPayDate_end(end);
+        if (param.getEquipmentIds() != null && !param.getEquipmentIds().isEmpty()) { // 设备id
+            tCoinOrderParam.setEquipmentId_inList(param.getEquipmentIds());
+        }
+        if (StringUtils.isNotEmpty(param.getAdminId())) { // 所属商家id
+            tCoinOrderParam.setAdminId(Long.parseLong(param.getAdminId()));
+        }
+
+        boolQueryBuilder = esTCoinOrderService.getParam2QueryBuilder(tCoinOrderParam);
+        SellChartColumn chartColumn = getEquipmentPageStatistics(boolQueryBuilder, esTCoinOrderService.getTableName(), "equipmentId");
+
+        // 设置categories
+        ArrayList<String> equipmentIdList = chartColumn.getCategories();
+
+        ArrayList<String> categories_final = new ArrayList<>();
+        for (String equipmentId : equipmentIdList) {
+            TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(equipmentId));
+            if (equipment != null) {
+                if (StringUtils.isNotEmpty(equipment.getName())) {
+                    categories_final.add(equipment.getName());
+                } else {
+                    categories_final.add(equipment.getClientId().substring(equipment.getClientId().length() - 6));
+                }
+            } else {
+                categories_final.add(equipmentId);
+            }
+        }
+        chartColumn.setCategories(categories_final);
+        return chartColumn;
+    }
+
+    private SellChartColumn getEquipmentPageStatistics(BoolQueryBuilder queryBuilder, String tableName, String termField) {
+        try {
+            // 仅为名称,用以获取返回结果
+            String aggregationResultName = "aggregationResult";
+            // 仅为名称,用以获取返回结果
+            String aggPayTypeResultName = "aggPayTypeResult";
+            // 仅为名称,用以获取返回结果
+            String aggSumName = "sales";
+            // 仅为名称,用以获取返回结果
+            String totalPrice = "totalPrice";
+
+
+            // 根据字段 termField 聚合
+            TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders.terms(aggregationResultName).field(termField);
+            // 聚合后 返回前30条 记录
+            termsAggregationBuilder.size(1000);
+            // 按totalPrice降序排序
+            termsAggregationBuilder.order(BucketOrder.compound(BucketOrder.aggregation(totalPrice, false)));
+            TermsAggregationBuilder payTypeAggregation  = AggregationBuilders.terms(aggPayTypeResultName).field("payType");
+
+            // 根据字段price 求和 sum, sales 仅为名称,用以获取返回销售额
+            SumAggregationBuilder sumAggregationBuilder = AggregationBuilders.sum(aggSumName).field("price");
+            payTypeAggregation.subAggregation(sumAggregationBuilder);
+            termsAggregationBuilder.subAggregation(payTypeAggregation);
+
+            // 添加总价格的聚合
+            SumAggregationBuilder totalPriceAggregation = AggregationBuilders.sum(totalPrice).field("price");
+            termsAggregationBuilder.subAggregation(totalPriceAggregation);
+
+            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
+            // 指定size为0,不返回文档 因为只需要数量
+            sourceBuilder.query(queryBuilder).aggregation(termsAggregationBuilder).size(0);
+            SearchRequest searchRequest = new SearchRequest(tableName);
+            searchRequest.source(sourceBuilder);
+            log.debug("sourceBuilder:{}", sourceBuilder);
+            SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
+            Aggregations aggregations = searchResponse.getAggregations();
+            Terms terms = aggregations.get(aggregationResultName);
+
+            List<SellChartBean> chartBeanList = new ArrayList<>();
+            for (Terms.Bucket bucket : terms.getBuckets()) {
+                SellChartBean sellChartBean = new SellChartBean();
+                sellChartBean.setCategory(bucket.getKeyAsString());
+                Terms aggPayTypeResult = bucket.getAggregations().get(aggPayTypeResultName);
+                for(Terms.Bucket bucketPayType : aggPayTypeResult.getBuckets()) {
+                    // 支付方式
+                    String payType = bucketPayType.getKeyAsString();
+                    log.info("payType:{}", payType);
+                    // 支付方式的销售额
+                    ParsedSum sum = bucketPayType.getAggregations().get(aggSumName);
+                    float sumValue = (float) sum.getValue();
+                    log.info("sumValue:{}", sumValue);
+                    if (StringUtils.equals("1", payType)) {
+                        sellChartBean.setCoinNum(sumValue);
+                    } else if (StringUtils.equals("2", payType)) {
+                        sellChartBean.setPaperMoneyNum(sumValue);
+                    } else if (StringUtils.equals("3", payType)) {
+                        sellChartBean.setCoinAndPaperMoneyNum(sumValue);
+                    } else if (StringUtils.equals("4", payType)) {
+                        sellChartBean.setCreditCardNum(sumValue);
+                    } else if (StringUtils.equals("5", payType)) {
+                        sellChartBean.setElectronicNum(sumValue);
+                    }
+                }
+                chartBeanList.add(sellChartBean);
+            }
+            log.debug("chartBeanList:{}", chartBeanList);
+            SellChartColumn sellChartColumn = new SellChartColumn(chartBeanList);
+            return sellChartColumn;
+        } catch (Exception e) {
+            log.error("{} es根据条件 聚合查询 报错:{}", getTableName(), e);
+            throw new MyException(getTableName() + " es根据条件 聚合查询 报错:" + e.getMessage());
+        }
+    }
 }

+ 0 - 2
src/main/java/com/szwl/service/es/EsTOrderService.java

@@ -396,13 +396,11 @@ public class EsTOrderService extends EsBaseService<TOrder, TOrderParam> {
                 chartBean.setSaleNum(Float.valueOf(saleNumStr1) - Float.valueOf(saleNumStr2));
                 //统计订单数
                 chartBean.setOrderNum(Float.valueOf(bucket.getDocCount()));
-//                chartBean.setSaleNum(Long.valueOf(bucket.getDocCount()).intValue());
                 ParsedSum sum = bucket.getAggregations().get(aggSumName);
                 ParsedSum refundSum = bucket.getAggregations().get(aggName_refundAmount);
                 String s1 = format1((float) sum.getValue());
                 String s2 = format1((float) refundSum.getValue());
                 chartBean.setSalePrice(Float.valueOf(s1) - Float.valueOf(s2));
-//                chartBean.setSalePrice(Double.valueOf(sum.getValue()).intValue());
                 chartBeanList.add(chartBean);
             }
             ChartColumn chartColumn = new ChartColumn(chartBeanList);