Parcourir la source

特殊学生导出接口调整

codingliang il y a 7 mois
Parent
commit
1e3fa3826b

+ 13 - 9
src/main/java/com/sqx/modules/exportExecl/controller/ExportExeclController.java

@@ -1,8 +1,8 @@
 package com.sqx.modules.exportExecl.controller;
 
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jcraft.jsch.SftpException;
 import com.sqx.common.utils.PageUtils;
@@ -13,9 +13,9 @@ 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;
 import com.sqx.modules.exportExecl.model.ExportJob;
 import com.sqx.modules.exportExecl.service.ExportJobService;
+import com.sqx.modules.member.query.SpecialFavorStudentQuery;
 import com.sqx.modules.order.dao.AppOrderDao;
 import com.sqx.modules.order.dto.OrderQueryDto;
 import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
@@ -27,21 +27,15 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.poi.util.IOUtils;
-import org.jetbrains.annotations.NotNull;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.BufferedInputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.net.URLEncoder;
-import java.nio.file.Files;
-import java.nio.file.Paths;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
@@ -319,4 +313,14 @@ public class ExportExeclController {
         }
     }
 
+    @GetMapping("exportSpecialFavorStudent")
+    @ApiOperation("导出特殊照顾学生列表")
+    public Result exportSpecialFavorStudent(@RequestAttribute("userId") Long userId, SpecialFavorStudentQuery queryDTO) {
+        ExportJob exportJob = buildExportJob("特殊照顾学生列表.xlsx","specialFavorStudent", userId.toString(),
+                queryDTO.buildQueryConditionString(),
+                JSONUtil.toJsonStr(queryDTO));
+        exportJobService.save(exportJob);
+
+        return Result.success("特殊照顾学生列表导出成功");
+    }
 }

+ 0 - 6
src/main/java/com/sqx/modules/member/controller/SpecialFavorStudentController.java

@@ -71,10 +71,4 @@ public class SpecialFavorStudentController{
         specialFavorStudentService.importData(file);
         return Result.success();
     }
-
-    @GetMapping("export")
-    @ApiOperation("导出特殊照顾学生")
-    public void export(@Valid SpecialFavorStudentQuery query) {
-        specialFavorStudentService.export(query);
-    }
 }

+ 46 - 0
src/main/java/com/sqx/modules/member/query/SpecialFavorStudentQuery.java

@@ -1,11 +1,13 @@
 package com.sqx.modules.member.query;
 
+import cn.hutool.core.util.StrUtil;
 import com.sqx.common.query.PageQuery;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.text.SimpleDateFormat;
 import java.util.Date;
 
 /**
@@ -33,4 +35,48 @@ public class SpecialFavorStudentQuery extends PageQuery {
     @ApiModelProperty("查询认证结束时间")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date endTime;
+
+    /**
+     * 拼接查询条件字符串
+     * @return 拼接后的查询条件字符串
+     */
+    public String buildQueryConditionString() {
+        StringBuilder conditionBuilder = new StringBuilder();
+
+        // 拼接真实姓名条件
+        if (StrUtil.isNotBlank(this.name)) {
+            conditionBuilder.append("真实姓名: ").append(this.name).append(",");
+        }
+
+        // 拼接学号条件
+        if (StrUtil.isNotBlank(this.studentNumber)) {
+            conditionBuilder.append("学号: ").append(this.studentNumber).append(",");
+        }
+
+        // 拼接验证状态条件(转换为中文)
+        if (StrUtil.isNotBlank(this.verifyStatus)) {
+            String verifyStatusText = "1".equals(this.verifyStatus) ? "已验证" : "未验证";
+            conditionBuilder.append("验证状态: ").append(verifyStatusText).append(",");
+        }
+
+        // 拼接认证开始时间条件
+        if (this.startTime != null) {
+            conditionBuilder.append("认证开始时间: ")
+                    .append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime))
+                    .append(",");
+        }
+
+        // 拼接认证结束时间条件
+        if (this.endTime != null) {
+            conditionBuilder.append("认证结束时间: ")
+                    .append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime))
+                    .append(",");
+        }
+
+        // 拼接分页信息
+        conditionBuilder.append("当前页码: ").append(getPage())
+                .append(",每页条数: ").append(getLimit());
+
+        return conditionBuilder.toString();
+    }
 }

+ 0 - 2
src/main/java/com/sqx/modules/member/service/SpecialFavorStudentService.java

@@ -18,8 +18,6 @@ public interface SpecialFavorStudentService extends IService<SpecialFavorStudent
 
     void importData(MultipartFile file);
 
-    void export(SpecialFavorStudentQuery query);
-
     /**
      * 特殊照顾学生认证审核
      * @param userId 登录用户id

+ 0 - 11
src/main/java/com/sqx/modules/member/service/impl/SpecialFavorStudentServiceImpl.java

@@ -103,17 +103,6 @@ public class SpecialFavorStudentServiceImpl extends ServiceImpl<SpecialFavorStud
     }
 
     @Override
-    public void export(SpecialFavorStudentQuery query) {
-        IPage<SpecialFavorStudentVO> page = baseMapper.pages(new Page<>(query.getPage(), query.getLimit()), query);
-        List<SpecialFavorStudentVO> records = page.getRecords();
-        records.forEach(e -> {
-            e.setVerifyStatus(e.getVerifyStatus() == "1" ? "已验证" : "未验证");
-        });
-
-        EasyExcelUtil.exportExcel(records, SpecialFavorStudentVO.class, "特殊照顾学生列表", "特殊照顾学生列表");
-    }
-
-    @Override
     @Transactional(rollbackFor = Exception.class)
     public void verify(Long userId, SpecialFavorStudentVerifyDTO dto) {
         LambdaQueryWrapper<SpecialFavorStudent> queryWrapper = new LambdaQueryWrapper<>();

+ 0 - 7
src/main/java/com/sqx/modules/member/vo/SpecialFavorStudentVO.java

@@ -23,35 +23,28 @@ public class SpecialFavorStudentVO implements Serializable {
    private Long id;
 
    @ApiModelProperty(value = "真实姓名")
-   @ExcelProperty("真实姓名")
    private String name;
 
    @ApiModelProperty(value = "学号")
-   @ExcelProperty("学号")
    private String studentNumber;
 
    @ApiModelProperty(value = "验证状态;0未认证、1已认证")
-   @ExcelProperty("验证状态")
    private String verifyStatus;
 
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-   @ExcelProperty("创建时间")
    private Date createTime;
 
    @ApiModelProperty(value = "验证用户id")
    private Long verifyUserId;
 
    @ApiModelProperty(value = "验证用户名")
-   @ExcelProperty("验证用户名")
    private String verifyUserName;
 
    @ApiModelProperty(value = "验证用户手机号")
-   @ExcelProperty("验证用户手机号")
    private String verifyUserPhone;
 
    @ApiModelProperty(value = "最后验证时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-   @ExcelProperty("最后验证时间")
    private Date lastVerifyTime;
 }

+ 41 - 11
src/main/java/com/sqx/scheduler/export/ExportScheduler.java

@@ -1,9 +1,10 @@
 package com.sqx.scheduler.export;
 
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.sqx.common.utils.Constant;
-import com.sqx.common.utils.Result;
+import com.sqx.common.utils.PageUtils;
 import com.sqx.common.utils.SftpUtil;
 import com.sqx.modules.address.query.InsideAddressQuery;
 import com.sqx.modules.address.service.InsideAddressService;
@@ -18,6 +19,9 @@ import com.sqx.modules.datacentre.service.DataCentreService;
 import com.sqx.modules.exportExecl.dto.AccountEntry;
 import com.sqx.modules.exportExecl.model.ExportJob;
 import com.sqx.modules.exportExecl.service.ExportJobService;
+import com.sqx.modules.member.query.SpecialFavorStudentQuery;
+import com.sqx.modules.member.service.SpecialFavorStudentService;
+import com.sqx.modules.member.vo.SpecialFavorStudentVO;
 import com.sqx.modules.order.dto.OrderQueryDto;
 import com.sqx.modules.order.service.AppOrderService;
 import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
@@ -28,7 +32,6 @@ import com.sqx.modules.reconciliation.service.PlatformBillService;
 import com.sqx.modules.utils.excel.ExcelData;
 import com.sqx.modules.utils.excel.ExportExcelUtils;
 import com.sqx.scheduler.config.SchedulerLock;
-import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.jetbrains.annotations.NotNull;
@@ -39,21 +42,21 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 /**
  * 优惠券定时任务
@@ -78,8 +81,10 @@ public class ExportScheduler {
     private final UserMoneyDetailsService userMoneyDetailsService;
     private final DataCentreService dataCentreService;
     private final PlatformBillService platformBillService;
-
     private final InsideAddressService insideAddressService;
+    private final SpecialFavorStudentService specialFavorStudentService;
+
+    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
 
     /**
@@ -123,7 +128,8 @@ public class ExportScheduler {
                 InputStream inputStream=null;
                 ByteArrayOutputStream os = new ByteArrayOutputStream();
                 try {
-                    ExcelData excelData=new ExcelData();
+                    new ExcelData();
+                    ExcelData excelData;
                     if("order".equals(fileType)){
                         excelData=getOrderExcelData(exportJob);
                     }else if("recharge".equals(fileType)){
@@ -146,6 +152,8 @@ public class ExportScheduler {
                         excelData=getPlatformBillExcelData(exportJob);
                     }else if ("shippingAddress".equals(fileType)){
                         excelData=getShippingAddressExcelData(exportJob);
+                    } else if("specialFavorStudent".equals(fileType)){
+                        excelData = getSpecialFavorStudentExcelData(exportJob);
                     }else{
                         continue;
                     }
@@ -190,8 +198,30 @@ public class ExportScheduler {
         }
     }
 
+    private ExcelData getSpecialFavorStudentExcelData(ExportJob exportJob) {
+        SpecialFavorStudentQuery query = JSONUtil.toBean(exportJob.getConditions(), SpecialFavorStudentQuery.class);
+        ExcelData data = new ExcelData();
+        data.setName("特殊照顾学生列表");
+        data.setTitles(Arrays.asList("姓名", "学号", "验证状态", "创建时间", "验证用户名", "验证手机号", "验证时间"));
+        PageUtils pages = specialFavorStudentService.pages(query);
+        List<List<Object>> rows = pages.getList().stream().map(e -> {
+            SpecialFavorStudentVO vo = (SpecialFavorStudentVO) e;
+            List<Object> row = new ArrayList<>();
+            row.add(vo.getName());
+            row.add(vo.getStudentNumber());
+            row.add(StrUtil.equals(vo.getVerifyStatus(), "0") ? "未认证" : "已认证");
+            row.add(vo.getCreateTime());
+            row.add(vo.getVerifyUserName());
+            row.add(vo.getVerifyUserPhone());
+            row.add(vo.getLastVerifyTime());
+            return row;
+        }).collect(Collectors.toList());
+        data.setRows(rows);
+
+        return data;
+    }
+
     private ExcelData getShippingAddressExcelData(ExportJob exportJob) {
-        DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         String[] conditions=exportJob.getConditions().split(",",-1);
         InsideAddressQuery query = new InsideAddressQuery();
         query.setAddressDetail(conditions[1]);
@@ -200,12 +230,12 @@ public class ExportScheduler {
             query.setStationId(Long.valueOf(conditions[3]));
         }
         if(!"".equals(conditions[4])){
-            Date start = Date.from(LocalDateTime.parse(conditions[4], dateTimeFormatter1).atZone(ZoneId.systemDefault()).toInstant());
+            Date start = Date.from(LocalDateTime.parse(conditions[4], dateTimeFormatter).atZone(ZoneId.systemDefault()).toInstant());
             log.info("start:"+start);
             query.setStartTime(start);
         }
         if(!"".equals(conditions[5])){
-            Date end = Date.from(LocalDateTime.parse(conditions[5], dateTimeFormatter1).atZone(ZoneId.systemDefault()).toInstant());
+            Date end = Date.from(LocalDateTime.parse(conditions[5], dateTimeFormatter).atZone(ZoneId.systemDefault()).toInstant());
             query.setEndTime(end);
             log.info("end:"+end);
         }
@@ -253,7 +283,7 @@ public class ExportScheduler {
             String start="";
             if (ObjectUtils.isNotEmpty(createTime)) {
                 LocalDateTime localDateTime = LocalDateTime.ofInstant(createTime.toInstant(), ZoneId.systemDefault());
-                start = localDateTime.format(dateTimeFormatter1);
+                start = localDateTime.format(dateTimeFormatter);
             }
             row.add(start);
             rows.add(row);