Ver Fonte

首页数据统计导出

zouxuan há 1 ano atrás
pai
commit
d7d664f106

+ 72 - 4
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/IndexController.java

@@ -5,12 +5,11 @@ import com.microsvc.toolkit.common.webportal.exception.BizException;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.queryInfo.SysMusicCompareRecordQueryInfo;
-import com.yonge.cooleshow.biz.dal.service.PaymentDivMemberRecordService;
-import com.yonge.cooleshow.biz.dal.service.SysMusicCompareRecordService;
-import com.yonge.cooleshow.biz.dal.service.TenantPersonStatService;
-import com.yonge.cooleshow.biz.dal.service.UserOrderService;
+import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.wrapper.OssFileWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.PaymentDivMemberRecordWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantPersonStatWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.teacher.TeacherWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.page.PageInfo;
@@ -24,7 +23,11 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Api(tags = "首页统计")
 @RequestMapping("${app-config.url.tenant:}/index")
@@ -41,6 +44,8 @@ public class IndexController extends BaseController {
     private PaymentDivMemberRecordService paymentDivMemberRecordService;
     @Autowired
     private UserOrderService userOrderService;
+    @Autowired
+    private OssFileService ossFileService;
 
 
     @ApiOperation("学员训练数据统计列表")
@@ -58,6 +63,39 @@ public class IndexController extends BaseController {
         return succeed(sysMusicCompareRecordService.weChatStudentTrainData(queryInfo));
     }
 
+    @ApiOperation("导出学员训练数据统计列表")
+    @PostMapping("exportStudentTrainData")
+    public HttpResponseResult<OssFileWrapper.ExportFile> exportStudentTrainData
+            (@RequestBody SysMusicCompareRecordQueryInfo.WechatCompareRecordQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("获取用户信息失败");
+        }
+        if(StringUtils.isEmpty(queryInfo.getStartTime())){
+            throw new BizException("请选择筛选时间");
+        }
+        queryInfo.setTenantId(sysUser.getTenantId());
+        List<SysMusicCompareRecordQueryInfo.WechatCompareRecordPageDto> rows = sysMusicCompareRecordService.weChatStudentTrainData(queryInfo).getRows();
+        if (rows.isEmpty()) {
+            throw new BizException("没有可导出数据");
+        }
+
+        List<SysMusicCompareRecordQueryInfo.WechatCompareRecordExportDto> templates = rows.stream().map(next -> {
+            SysMusicCompareRecordQueryInfo.WechatCompareRecordExportDto template = new SysMusicCompareRecordQueryInfo.WechatCompareRecordExportDto();
+            template.setUsername(next.getUsername());
+            template.setSubjectName(next.getSubjectName());
+            template.setAvgTrainTimes(next.getAvgTrainTimes());
+            template.setTrainTimes(next.getTrainTimes());
+            template.setTrainDays(next.getTrainDays());
+            return template;
+        }).collect(Collectors.toList());
+
+        String format = new SimpleDateFormat("yyyyMMddHHmm").format(new Date());
+        OssFileWrapper.ExportFile exportFile = ossFileService.uploadFile(templates,
+                TeacherWrapper.ExportTeacherTemplate.class, format, "练习统计列表");
+        return succeed(exportFile);
+    }
+
 
     @ApiOperation("首页学员训练数据统计列表、汇总")
     @PostMapping("studentTrainData")
@@ -125,6 +163,36 @@ public class IndexController extends BaseController {
         return succeed(PageUtil.pageInfo(paymentDivMemberRecordService.queryIncome(QueryInfo.getPage(query), query)));
     }
 
+    @ApiOperation("导出收入明细列表")
+    @PostMapping("exportIncome")
+    public HttpResponseResult<OssFileWrapper.ExportFile>
+    exportIncome(@RequestBody PaymentDivMemberRecordWrapper.IndexIncomeQuery query){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("获取用户信息失败");
+        }
+        query.setTenantId(sysUser.getTenantId());
+        List<PaymentDivMemberRecordWrapper.IndexIncomeQueryDto> rows = paymentDivMemberRecordService.queryIncome(QueryInfo.getPage(query), query).getRecords();
+        if (rows.isEmpty()) {
+            throw new BizException("没有可导出数据");
+        }
+
+        List<PaymentDivMemberRecordWrapper.IndexIncomeExportDto> templates = rows.stream().map(next -> {
+            PaymentDivMemberRecordWrapper.IndexIncomeExportDto template = new PaymentDivMemberRecordWrapper.IndexIncomeExportDto();
+            template.setName(next.getName());
+            template.setPhone(next.getPhone());
+            template.setAmount(next.getAmount());
+            template.setPayTime(next.getPayTime());
+            template.setOrderType(next.getOrderType().getName());
+            return template;
+        }).collect(Collectors.toList());
+
+        String format = new SimpleDateFormat("yyyyMMddHHmm").format(new Date());
+        OssFileWrapper.ExportFile exportFile = ossFileService.uploadFile(templates,
+                TeacherWrapper.ExportTeacherTemplate.class, format, "练习统计列表");
+        return succeed(exportFile);
+    }
+
     @ApiOperation("收入订单详情")
     @PostMapping("getIncomeOrderDetail")
     public HttpResponseResult<PaymentDivMemberRecordWrapper.OrderDetailDto> getIncomeOrderDetail(String orderNo){

+ 26 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/SysMusicCompareRecordQueryInfo.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.queryInfo;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.yonge.cooleshow.biz.dal.enums.FeatureType;
 import com.yonge.cooleshow.biz.dal.enums.HeardLevelEnum;
 import com.yonge.toolset.base.page.QueryInfo;
@@ -133,27 +134,52 @@ public class SysMusicCompareRecordQueryInfo {
     @Data
     public static class WechatCompareRecordPageDto{
         @ApiModelProperty(name = "用户编号")
+        @ExcelProperty(value = "用户编号")
         private Long userId;
 
         @ApiModelProperty(name = "头像")
+        @ExcelProperty(value = "头像")
         private String avatar;
 
         @ApiModelProperty(name = "姓名")
+        @ExcelProperty(value = "姓名")
         private String username;
 
         @ApiModelProperty(name = "声部")
+        @ExcelProperty(value = "声部")
         private String subjectName;
 
         @ApiModelProperty(name = "训练总时长")
+        @ExcelProperty(value = "训练总时长")
         private Integer trainTimes = 0;
 
         @ApiModelProperty(name = "训练天数")
+        @ExcelProperty(value = "训练天数")
         private Integer trainDays = 0;
 
         @ApiModelProperty(name = "平均训练时长")
+        @ExcelProperty(value = "平均训练时长")
         private Integer avgTrainTimes = 0;
 
     }
+    @Data
+    public static class WechatCompareRecordExportDto{
+        @ExcelProperty(value = "姓名")
+        private String username;
+
+        @ExcelProperty(value = "声部")
+        private String subjectName;
+
+        @ExcelProperty(value = "平均训练时长")
+        private Integer avgTrainTimes = 0;
+
+        @ExcelProperty(value = "总时长")
+        private Integer trainTimes = 0;
+
+        @ExcelProperty(value = "训练天数")
+        private Integer trainDays = 0;
+
+    }
 
     @Data
     public static class WechatCompareRecordDto{

+ 21 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/PaymentDivMemberRecordWrapper.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.wrapper;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.fastjson.JSON;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
@@ -124,6 +125,26 @@ public class PaymentDivMemberRecordWrapper {
     }
 
     @Data
+    @ApiModel("首页收入明细导出")
+    public static class IndexIncomeExportDto{
+
+        @ExcelProperty("用户名称")
+        private String name;
+
+        @ExcelProperty("手机号")
+        private String phone;
+
+        @ExcelProperty("收入")
+        private BigDecimal amount;
+
+        @ExcelProperty("订单时间")
+        private String payTime;
+
+        @ExcelProperty("订单类型")
+        private String orderType;
+    }
+
+    @Data
     @ApiModel("首页收入、支出汇总")
     public static class IndexIncomeSummaryDto{