Explorar o código

骑手排行导出

wanxl hai 1 ano
pai
achega
3455f5b9f9

+ 3 - 0
src/main/java/com/sqx/modules/datacentre/dao/DataCentreDao.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sqx.modules.app.entity.UserEntity;
 import com.sqx.modules.app.entity.UserMoneyDetails;
 import com.sqx.modules.datacentre.query.DataCenterQuery;
+import com.sqx.modules.datacentre.query.RankListQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.errand.entity.Feedback;
 import com.sqx.modules.errand.entity.TbIndent;
@@ -99,4 +100,6 @@ public interface DataCentreDao {
     BigDecimal cancelOrderMoney(@Param("query") DataCenterQuery query);
 
     List<TbOrder> excelShopCenter(@Param("query")ShopCenterQuery query);
+
+    List<TbIndent> excelRankList(@Param("query") RankListQuery query);
 }

+ 39 - 0
src/main/java/com/sqx/modules/datacentre/query/RankListQuery.java

@@ -0,0 +1,39 @@
+package com.sqx.modules.datacentre.query;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.util.StringUtils;
+
+import javax.validation.constraints.Pattern;
+
+@Data
+public class RankListQuery extends DataCenterQuery {
+
+    @ApiModelProperty(value = "地区")
+    private String address;
+
+    @ApiModelProperty(value = "骑手站点id")
+    private String riderStationId;
+
+    @ApiModelProperty(value = "登录人id")
+    private String userId;
+
+    public String toStrMessage() {
+        StringBuilder stringBuilder=new StringBuilder();
+        stringBuilder
+                .append(StringUtils.hasText(address)?"商铺类型编号:"+address+";":"")
+                .append(StringUtils.hasText(getDateType())?"日期类型:"+getDateType()+";":"")
+                .append(StringUtils.hasText(getDate())?"日期:"+getDate()+";":"")
+                .append(StringUtils.hasText(riderStationId)?"查询类型:"+riderStationId+";":"");
+        return stringBuilder.toString();
+    }
+
+    public String toStrCode() {
+        return
+                ","+(address==null?"":address)
+                +","+(getDateType()==null?"":getDateType())
+                +","+(getDate()==null?"":getDate())
+                +","+(riderStationId==null?"":riderStationId)
+                +",";
+    }
+}

+ 3 - 0
src/main/java/com/sqx/modules/datacentre/service/DataCentreService.java

@@ -2,6 +2,7 @@ package com.sqx.modules.datacentre.service;
 
 import com.sqx.common.utils.Result;
 import com.sqx.modules.datacentre.query.DataCenterQuery;
+import com.sqx.modules.datacentre.query.RankListQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.utils.excel.ExcelData;
@@ -32,6 +33,8 @@ public interface DataCentreService {
 
     ExcelData excelShopCenter(ShopCenterQuery queryDTO);
 
+    ExcelData excelRankingList(RankListQuery queryDTO);
+
     Result selectUserCenter(DataCenterQuery query);
 
     Result selectUserFeedback(String userEmail, Integer page, Integer limit);

+ 26 - 1
src/main/java/com/sqx/modules/datacentre/service/impl/DataCentreServiceImpl.java

@@ -17,6 +17,7 @@ import com.sqx.modules.coupon.dao.TbCouponUserDao;
 import com.sqx.modules.coupon.entity.TbCouponUser;
 import com.sqx.modules.datacentre.dao.DataCentreDao;
 import com.sqx.modules.datacentre.query.DataCenterQuery;
+import com.sqx.modules.datacentre.query.RankListQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.datacentre.service.DataCentreService;
 import com.sqx.modules.errand.entity.Feedback;
@@ -413,6 +414,30 @@ public class DataCentreServiceImpl implements DataCentreService {
         }
         return Result.success();
     }
-
+    @Override
+    public ExcelData excelRankingList(RankListQuery query) {
+        List<TbIndent> tbOrderList = dataCentreDao.excelRankList(query);
+        ExcelData data = new ExcelData();
+        data.setName("骑手排行");
+        List<String> titleList=Arrays.asList(
+                "排名",
+                "骑手昵称",
+                "地区 ",
+                "骑手所在站点",
+                "总收益");
+        data.setTitles(WalletDetailExportTitle());
+        List<List<Object>> rows = new ArrayList<>();
+        for (TbIndent tbOrder:tbOrderList ){
+            List<Object> row = new ArrayList<>();
+            row.add(tbOrder.getRankNum());
+            row.add(tbOrder.getNickName());
+            row.add(tbOrder.getUserProvince()+tbOrder.getUserCity()+tbOrder.getUserDistrict());
+            row.add(tbOrder.getStationName());
+            row.add(tbOrder.getMoneyOrder());
+            rows.add(row);
+        }
+        data.setRows(rows);
+        return data;
+    }
 
 }

+ 3 - 0
src/main/java/com/sqx/modules/errand/entity/TbIndent.java

@@ -263,6 +263,9 @@ public class TbIndent implements Serializable {
 
     @TableField(exist = false)
     private Integer evaluateMessage;
+//    站点名称
+    @TableField(exist = false)
+    private String stationName;
 
 
 

+ 15 - 0
src/main/java/com/sqx/modules/exportExecl/controller/ExportExeclController.java

@@ -8,6 +8,7 @@ import com.sqx.common.utils.PageUtils;
 import com.sqx.common.utils.Result;
 import com.sqx.common.utils.SftpUtil;
 import com.sqx.modules.common.service.CommonInfoService;
+import com.sqx.modules.datacentre.query.RankListQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.exportExecl.dto.AccountEntry;
 import com.sqx.modules.exportExecl.mapper.ExportJobMapper;
@@ -259,4 +260,18 @@ public class ExportExeclController {
             return Result.error("新增入账管理导出计划失败");
         }
     }
+    @GetMapping("excelRankList")
+    @ApiOperation("导出骑手排行")
+    public Result excelRankList(RankListQuery queryDTO) throws Exception{
+        if(!StringUtils.hasText(queryDTO.getUserId())){
+            return Result.error("用户id不能为空");
+        }
+        ExportJob exportJob =this.buildExportJob("骑手排行.xlsx","rankList",queryDTO.getUserId(),queryDTO.toStrMessage(),queryDTO.toStrCode());
+        boolean a=exportJobService.save(exportJob);
+        if (a){
+            return Result.success("新增骑手排行导出计划成功");
+        }else{
+            return Result.error("新增骑手排行导出计划失败");
+        }
+    }
 }

+ 14 - 0
src/main/java/com/sqx/scheduler/export/ExportScheduler.java

@@ -6,6 +6,7 @@ import com.sqx.modules.app.entity.RechargeRecord;
 import com.sqx.modules.app.service.RechargeRecordService;
 import com.sqx.modules.app.service.UserMoneyDetailsService;
 import com.sqx.modules.common.service.CommonInfoService;
+import com.sqx.modules.datacentre.query.RankListQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.datacentre.service.DataCentreService;
 import com.sqx.modules.exportExecl.dto.AccountEntry;
@@ -116,6 +117,8 @@ public class ExportScheduler {
                         excelData=getShopCenterExcelData(exportJob);
                     }else if("accountEntry".equals(fileType)){
                         excelData=getAccountEntryExcelData(exportJob);
+                    }else if("rankList".equals(fileType)){
+                        excelData=getRankListExcelData(exportJob);
                     }else{
                         continue;
                     }
@@ -272,6 +275,7 @@ public class ExportScheduler {
         query.setDateType(conditions[5]);
         return dataCentreService.excelShopCenter(query);
     }
+    //导出入账管理
     private ExcelData getAccountEntryExcelData(ExportJob exportJob) {
         String[] conditions=exportJob.getConditions().split(",",-1);
         AccountEntry query =new AccountEntry();
@@ -284,4 +288,14 @@ public class ExportScheduler {
         query.setEndTime(conditions[7]);
         return userMoneyDetailsService.excelAccountEntry(query);
     }
+    //导出骑手收益排行
+    private ExcelData getRankListExcelData(ExportJob exportJob){
+        String[] conditions=exportJob.getConditions().split(",",-1);
+        RankListQuery query =new RankListQuery();
+        query.setAddress(conditions[1]);
+        query.setDateType(conditions[2]);
+        query.setDate(conditions[3]);
+        query.setRiderStationId(conditions[4]);
+        return dataCentreService.excelRankingList(query);
+    }
 }

+ 32 - 0
src/main/resources/mapper/dataCentre/dataCenterMapper.xml

@@ -190,6 +190,38 @@
         ORDER BY moneyOrder DESC
     </select>
 
+    <select id="excelRankList" resultType="com.sqx.modules.errand.entity.TbIndent">
+        SELECT
+        *,
+        @rank_num := @rank_num + 1 AS rankNum
+        FROM
+        ( SELECT @rank_num := 0 ) r,
+        ( SELECT ifnull( sum( rider_money ), 0 ) AS moneyOrder, i.rider_user_id, u.nick_name as nickName, u.avatar as
+        avatar,
+        i.user_province as userProvince, i.user_city as userCity, i.user_district as userDistrict,rs.station_name as stationName
+        FROM tb_indent i left join tb_user u on i.rider_user_id = u.user_id
+        left join rider_station rs on u.rider_station_id=rs.id
+        WHERE i.rider_user_id IS NOT NULL
+        <if test="query.address!=null and query.address!=''">
+            and (i.user_province like concat('%',#{query.address},'%') or i.user_city like concat('%',#{query.address},'%') or
+            i.user_district like concat('%',#{query.address},'%'))
+        </if>
+        <if test="query.dateType=='day'">
+            and date_format(i.create_time,'%Y-%m-%d')=date_format(#{query.date},'%Y-%m-%d')
+        </if>
+        <if test="query.dateType=='month'">
+            and date_format(i.create_time,'%Y-%m')=date_format(#{query.date},'%Y-%m')
+        </if>
+        <if test="query.dateType=='year'">
+            and date_format(i.create_time,'%Y')=date_format(#{query.date},'%Y')
+        </if>
+        <if test="query.riderStationId != null and query.riderStationId !=''">
+            and u.rider_station_id=#{query.riderStationId}
+        </if>
+        GROUP BY i.rider_user_id ) a
+        ORDER BY moneyOrder DESC
+    </select>
+
     <select id="selectNewShopCount" resultType="int">
         select count(*) from goods_shop where 1 = 1
         <if test="query.dateType=='day'">