Commit 84d87902 authored by liaoanyuan's avatar liaoanyuan

增加管理端充值卡导出功能

parent 930e9e71
package cn.wisenergy.mapper;
import cn.wisenergy.model.app.CardInfo;
import cn.wisenergy.model.dto.ExportCardDto;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
......@@ -32,4 +33,11 @@ public interface CardMapper extends BaseMapper<CardInfo> {
* @return 充值卡信息
*/
CardInfo getBySecretKey(@Param("secretKey") String secretKey);
/**
* 通过批次号获取所有字卡
* @param batchNumber 批次号
* @return 子卡集合
*/
List<CardInfo> getList(@Param("batchNumber")String batchNumber);
}
......@@ -95,4 +95,16 @@
</where>
</select>
<select id="getList" resultMap="cardMap">
select
<include refid="cols_all"/>
from
<include refid="table"/>
<where>
batch_Number=#{batchNumber}
and status=0
and is_delete=0
</where>
</select>
</mapper>
package cn.wisenergy.model.dto;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 充值卡子卡导出实体类dto
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
//内容高度
@ContentRowHeight(25)
//表头行高度
@HeadRowHeight(25)
//列的宽度
@ColumnWidth(25)
public class ExportCardDto {
@ExcelProperty(value = "卡号")
private String cardNumber;
@ExcelProperty(value = "密码")
private String secretKey;
}
......@@ -5,6 +5,8 @@ import cn.wisenergy.model.app.RefillCard;
import cn.wisenergy.model.dto.RefillCardDto;
import com.github.pagehelper.PageInfo;
import javax.servlet.http.HttpServletResponse;
public interface RefillCardService {
/**
......@@ -35,4 +37,6 @@ public interface RefillCardService {
* @return true 成功 false 失败
*/
R<Boolean> createCard(Integer id);
R<Boolean> createExcel(String batchNumber, HttpServletResponse response);
}
package cn.wisenergy.service.app.impl;
import cn.wisenergy.common.constant.CommonAttributes;
import cn.wisenergy.common.utils.*;
import cn.wisenergy.mapper.CardMapper;
import cn.wisenergy.mapper.RefillCardMapper;
import cn.wisenergy.model.app.CardInfo;
import cn.wisenergy.model.app.RefillCard;
import cn.wisenergy.model.dto.ExportCardDto;
import cn.wisenergy.model.dto.RefillCardDto;
import cn.wisenergy.model.vo.UserQueryVo;
import cn.wisenergy.service.app.RefillCardService;
import cn.wisenergy.service.common.RefillCardManager;
import com.alibaba.excel.EasyExcel;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Slf4j
......@@ -119,4 +119,46 @@ public class RefillCardServiceImpl implements RefillCardService {
return refillCardManager.addCardMannger(byId);
}
@Override
public R<Boolean> createExcel(String batchNumber, HttpServletResponse response) {
log.info("RefillCardServiceImpl[].createExcel[].input.param:batchNumber"+batchNumber);
if (StringUtils.isEmpty(batchNumber)) {
return R.error("传入的参数为空");
}
try {
// 设置内容格式 以及 编码方式
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 调用service去获取数据
List<CardInfo> list = cardMapper.getList(batchNumber);
if (CollectionUtils.isEmpty(list)) {
return R.error("该批次号占时未有子卡");
}
// 使用java8新特性的stream流去处理数据,把空的数据过滤掉
List<ExportCardDto> resultBo = list.stream().filter(Objects::nonNull)
.map(t -> {
return ExportCardDto.builder()
.cardNumber(t.getCardNumber())
.secretKey(t.getSecretKey())
.build();
}).collect(Collectors.toList());
// 设置文件名称
String fileName = batchNumber;
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
// sheet名称
EasyExcel.write(response.getOutputStream(), ExportCardDto.class).sheet(batchNumber).doWrite(resultBo);
return R.ok(0,true);
} catch (Exception e) {
return R.ok(1,false);
}
}
}
package cn.wisenergy.web.admin.controller.app;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.model.app.RefillCard;
import cn.wisenergy.model.dto.RefillCardDto;
import cn.wisenergy.service.app.RefillCardService;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -16,6 +14,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
@Api(tags = "充值卡管理")
@RestController
@RequestMapping("/refillCard")
......@@ -65,4 +65,13 @@ public class RefillCardController {
log.info("RefillCardController[].createCard[].input.param:id"+id);
return refillCardService.createCard(id);
}
@ApiOperation(value = "充值卡导出",notes = "充值卡导出",httpMethod = "GET")
@ApiImplicitParam(name = "batchNumber",value = "充值卡批次号",dataType = "string",required = true)
@GetMapping(value = "/exportCard")
public R<Boolean> exportCard(String batchNumber, HttpServletResponse response){
log.info("RefillCardController[].exportCard[].input.param:batchNumber"+batchNumber);
return refillCardService.createExcel(batchNumber,response);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment