소스 검색

用户订单导出

cup 3 년 전
부모
커밋
f967687f2f

+ 79 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserTicketOrderMgrController.java

@@ -1,20 +1,36 @@
 package com.qs.mp.web.controller.api.admin;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.qs.mp.admin.domain.excel.UserTicketOrderExcel;
 import com.qs.mp.admin.domain.param.UserTicketOrderQueryParam;
 import com.qs.mp.admin.domain.vo.UserTicketOrderDetailVO;
 import com.qs.mp.admin.domain.vo.UserTicketOrderListVO;
+import com.qs.mp.common.annotation.Log;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
+import com.qs.mp.common.enums.BusinessType;
+import com.qs.mp.common.utils.StringUtils;
+import com.qs.mp.user.domain.UserTicketOrder;
+import com.qs.mp.user.domain.excel.DeliverOrderExcel;
+import com.qs.mp.user.domain.vo.UserDeliverOrderItemVO;
+import com.qs.mp.user.domain.vo.UserDeliverOrderVO;
 import com.qs.mp.user.service.IUserTicketOrderService;
+import com.qs.mp.utils.ExcelUtil;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @author Cup
@@ -36,7 +52,22 @@ public class UserTicketOrderMgrController extends BaseApiController {
     )
     public TableDataInfo list(@RequestBody UserTicketOrderQueryParam userTicketOrderQueryParam) {
         startPage();
-        List<UserTicketOrderListVO> list = userTicketOrderService.listUserTicketOrder(userTicketOrderQueryParam);
+        QueryWrapper<UserTicketOrder> queryWrapper = new QueryWrapper<>();
+        if (StringUtils.isNotBlank(userTicketOrderQueryParam.getBoxTitle())) {
+            queryWrapper.like("t1.title", userTicketOrderQueryParam.getBoxTitle());
+        }
+        if (Objects.nonNull(userTicketOrderQueryParam.getBoxType())) {
+            queryWrapper.eq("t3.type", userTicketOrderQueryParam.getBoxType());
+        }
+        if (StringUtils.isNotBlank(userTicketOrderQueryParam.getPhone())) {
+            queryWrapper.eq("t2.phonenumber", userTicketOrderQueryParam.getPhone());
+        }
+        if (Objects.nonNull(userTicketOrderQueryParam.getStartTime()) && Objects.nonNull(userTicketOrderQueryParam.getEndTime())) {
+            queryWrapper.between("t1.created_time", userTicketOrderQueryParam.getStartTime(), userTicketOrderQueryParam.getEndTime());
+        }
+        queryWrapper.orderByDesc("t1.created_time");
+
+        List<UserTicketOrderListVO> list = userTicketOrderService.listUserTicketOrder(queryWrapper);
         return getDataTable(list);
     }
 
@@ -50,5 +81,52 @@ public class UserTicketOrderMgrController extends BaseApiController {
         return AjaxResult.success(userTicketOrderService.detail(orderId));
     }
 
+//    @Log(title = "用户订单导出", businessType = BusinessType.EXPORT)
+    @PostMapping("export")
+    @ApiOperation("用户订单导出")
+    public AjaxResult export(@RequestBody UserTicketOrderQueryParam userTicketOrderQueryParam) {
+        QueryWrapper<UserTicketOrder> queryWrapper = new QueryWrapper<>();
+        if (StringUtils.isNotBlank(userTicketOrderQueryParam.getBoxTitle())) {
+            queryWrapper.like("t1.title", userTicketOrderQueryParam.getBoxTitle());
+        }
+        if (Objects.nonNull(userTicketOrderQueryParam.getBoxType())) {
+            queryWrapper.eq("t3.type", userTicketOrderQueryParam.getBoxType());
+        }
+        if (StringUtils.isNotBlank(userTicketOrderQueryParam.getPhone())) {
+            queryWrapper.eq("t2.phonenumber", userTicketOrderQueryParam.getPhone());
+        }
+        if (Objects.nonNull(userTicketOrderQueryParam.getStartTime()) && Objects.nonNull(userTicketOrderQueryParam.getEndTime())) {
+            queryWrapper.between("t1.created_time", userTicketOrderQueryParam.getStartTime(), userTicketOrderQueryParam.getEndTime());
+        }
+        queryWrapper.orderByDesc("t1.created_time");
+        int totalSize = userTicketOrderService.countUserTicketOrder(queryWrapper);
+        if (totalSize == 0) {
+            return AjaxResult.error("没有符合条件的用户订单");
+        }
+        int pageSize = 2000;
+        List<UserTicketOrderListVO> userTicketOrderListVOList = new ArrayList<>();
+        if (totalSize > pageSize) {
+            int totalPage = totalSize % pageSize == 0 ? totalSize / pageSize : totalSize / pageSize + 1;
+            for (int i = 0; i < totalPage; i++) {
+                queryWrapper.last("limit " + (i * pageSize) + ", " + pageSize);
+                List<UserTicketOrderListVO> list = userTicketOrderService.listUserTicketOrder(queryWrapper);
+                if (CollectionUtils.isNotEmpty(list)) {
+                    userTicketOrderListVOList.addAll(list);
+                }
+            }
+        } else {
+            userTicketOrderListVOList = userTicketOrderService.listUserTicketOrder(queryWrapper);
+        }
+        List<UserTicketOrderExcel> excelList = userTicketOrderListVOList.stream().map(userTicketOrderListVO -> {
+            UserTicketOrderExcel userTicketOrderExcel = new UserTicketOrderExcel();
+            BeanUtils.copyProperties(userTicketOrderListVO, userTicketOrderExcel);
+            userTicketOrderExcel.setBoxType(userTicketOrderListVO.getBoxType().getDesc());
+            return userTicketOrderExcel;
+        }).collect(Collectors.toList());
+
+        ExcelUtil<UserTicketOrderExcel> util = new ExcelUtil<>(UserTicketOrderExcel.class);
+        return util.exportExcel(excelList, "用户盲票订单导出", false);
+    }
+
 
 }

+ 49 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/excel/UserTicketOrderExcel.java

@@ -0,0 +1,49 @@
+package com.qs.mp.admin.domain.excel;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.qs.mp.common.annotation.Excel;
+import com.qs.mp.common.enums.TicketTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 用户盲票订单导出类
+ * @author Cup
+ * @date 2022/5/6
+ */
+@ApiModel("用户盲票订单导出类")
+@Data
+public class UserTicketOrderExcel {
+
+    @Excel(name = "订单编号")
+    private String orderId;
+
+    @Excel(name = "下单时间")
+    private Date createdTime;
+
+    @Excel(name = "盲票组名称")
+    private String title;
+
+    @Excel(name = "盲票类型")
+    private String boxType;
+
+    @Excel(name = "盲票售价")
+    private Integer salePrice;
+
+    @Excel(name = "支付金额")
+    private Integer payAmt;
+
+
+    @Excel(name = "用户昵称")
+    private String nickName;
+
+    @Excel(name = "用户手机号")
+    private String phone;
+
+
+
+}

+ 3 - 1
mp-service/src/main/java/com/qs/mp/user/mapper/UserTicketOrderMapper.java

@@ -95,8 +95,10 @@ public interface UserTicketOrderMapper extends BaseMapper<UserTicketOrder> {
 
 	/**
 	 * 查询用户盲票订单详情
-	 * @param orderId
+	 * @param
 	 * @return
 	 */
 	UserTicketOrderDetailVO selectUserTicketOrderDetail(@Param(Constants.WRAPPER) QueryWrapper<UserTicketOrder> queryWrapper);
+
+	int countUserTicketOrder(@Param(Constants.WRAPPER) QueryWrapper<UserTicketOrder> queryWrapper);
 }

+ 7 - 2
mp-service/src/main/java/com/qs/mp/user/service/IUserTicketOrderService.java

@@ -1,5 +1,6 @@
 package com.qs.mp.user.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.admin.domain.param.UserTicketOrderQueryParam;
 import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.admin.domain.vo.TicketCntVO;
@@ -135,10 +136,9 @@ public interface IUserTicketOrderService extends IService<UserTicketOrder> {
 
     /**
      * 获取用户盲票订单列表
-     * @param userTicketOrderQueryParam
      * @return
      */
-    List<UserTicketOrderListVO> listUserTicketOrder(UserTicketOrderQueryParam userTicketOrderQueryParam);
+    List<UserTicketOrderListVO> listUserTicketOrder(QueryWrapper<UserTicketOrder> queryWrapper);
 
 
     /**
@@ -148,4 +148,9 @@ public interface IUserTicketOrderService extends IService<UserTicketOrder> {
      */
     UserTicketOrderDetailVO detail(String orderId);
 
+    /**
+     * 统计用户订单数量
+     * @return
+     */
+    int countUserTicketOrder(QueryWrapper<UserTicketOrder> queryWrapper);
 }

+ 6 - 19
mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java

@@ -552,28 +552,15 @@ public class UserTicketOrderServiceImpl extends
   }
 
   @Override
-  public List<UserTicketOrderListVO> listUserTicketOrder(UserTicketOrderQueryParam userTicketOrderQueryParam) {
-    QueryWrapper<UserTicketOrder> queryWrapper = new QueryWrapper<>();
-    if (StringUtils.isNotBlank(userTicketOrderQueryParam.getBoxTitle())) {
-      queryWrapper.like("t1.title", userTicketOrderQueryParam.getBoxTitle());
-    }
-    if (Objects.nonNull(userTicketOrderQueryParam.getBoxType())) {
-      queryWrapper.eq("t3.type", userTicketOrderQueryParam.getBoxType());
-    }
-
-    if (StringUtils.isNotBlank(userTicketOrderQueryParam.getPhone())) {
-      queryWrapper.eq("t2.phonenumber", userTicketOrderQueryParam.getPhone());
-    }
-
-    if (Objects.nonNull(userTicketOrderQueryParam.getStartTime()) && Objects.nonNull(userTicketOrderQueryParam.getEndTime())) {
-      queryWrapper.between("t1.created_time", userTicketOrderQueryParam.getStartTime(), userTicketOrderQueryParam.getEndTime());
-    }
-
-    queryWrapper.orderByDesc("t1.created_time");
-
+  public List<UserTicketOrderListVO> listUserTicketOrder(QueryWrapper<UserTicketOrder> queryWrapper) {
     return getBaseMapper().listUserTicketOrder(queryWrapper);
   }
 
+  @Override
+  public int countUserTicketOrder(QueryWrapper<UserTicketOrder> queryWrapper) {
+    return getBaseMapper().countUserTicketOrder(queryWrapper);
+  }
+
   @Override
   public UserTicketOrderDetailVO detail(String orderId) {
     QueryWrapper<UserTicketOrder> queryWrapper = new QueryWrapper<>();

+ 8 - 0
mp-service/src/main/resources/mapper/user/UserTicketOrderMapper.xml

@@ -159,4 +159,12 @@
 				 left join mp_channel t4 on t3.channel_id = t4.channel_id
 		${ew.customSqlSegment}
 	</select>
+
+    <select id="countUserTicketOrder" resultType="integer">
+		select count(*)
+		from mp_user_ticket_order t1
+		left join sys_user t2 on t1.user_id = t2.user_id
+		left join mp_ticket_box t3 on t1.box_id = t3.box_id
+		${ew.customSqlSegment}
+	</select>
 </mapper>