提交 48e5c129 authored 作者: 吕本才's avatar 吕本才

导出excel接口完善

上级 a14ab6ae
...@@ -81,8 +81,8 @@ public class DealerBigScreenController extends BaseController { ...@@ -81,8 +81,8 @@ public class DealerBigScreenController extends BaseController {
@GetMapping("/result/totalResult") @GetMapping("/result/totalResult")
public AjaxResult totalResult() { public AjaxResult totalResult() {
List<DealerBigScreenTotalResultRes> list = resultService.totalResult(); DealerBigScreenTotalResultRes res = resultService.totalResult();
return success(list); return success(res);
} }
@GetMapping("/zip/download") @GetMapping("/zip/download")
......
...@@ -1850,12 +1850,13 @@ public class ExcelUtil<T> ...@@ -1850,12 +1850,13 @@ public class ExcelUtil<T>
public void exportExcelFile(File excelFile) { public void exportExcelFile(File excelFile) {
try { try {
writeSheet(); writeSheet();
FileOutputStream inputStream = new FileOutputStream(excelFile);
FileInputStream inputStream = new FileInputStream(excelFile); wb.write(inputStream);
wb = WorkbookFactory.create(inputStream);
inputStream.close(); inputStream.close();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.error("excel文件写入异常{}", e.getMessage());
throw new RuntimeException("excel文件写入异常");
} }
} }
} }
...@@ -3,6 +3,7 @@ package com.ruoyi.dealer.domain; ...@@ -3,6 +3,7 @@ package com.ruoyi.dealer.domain;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.Excel;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -19,26 +20,31 @@ public class DealerRoundResult { ...@@ -19,26 +20,31 @@ public class DealerRoundResult {
* 主键id * 主键id
*/ */
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
@Excel(name = "主键id")
private Long resultId; private Long resultId;
/** /**
* 经销商id * 经销商id
*/ */
@Excel(name = "经销商标识")
private Long dealerId; private Long dealerId;
/** /**
* 经销商名称 * 经销商名称
*/ */
@Excel(name = "经销商名称")
private String dealerName; private String dealerName;
/** /**
* 当前轮次 * 当前轮次
*/ */
@Excel(name = "经销商名称")
private Integer roundTime; private Integer roundTime;
/** /**
* 增加的预付款万 * 增加的预付款万
*/ */
@Excel(name = "预付款")
private Integer paymentTtl; private Integer paymentTtl;
/** /**
...@@ -49,6 +55,7 @@ public class DealerRoundResult { ...@@ -49,6 +55,7 @@ public class DealerRoundResult {
/** /**
* 手机号 * 手机号
*/ */
@Excel(name = "手机号")
private String phone; private String phone;
/** /**
...@@ -69,11 +76,14 @@ public class DealerRoundResult { ...@@ -69,11 +76,14 @@ public class DealerRoundResult {
* 第一轮分组+第二列分组 * 第一轮分组+第二列分组
* 分组名称 * 分组名称
*/ */
@Excel(name = "经销商分组")
private String groupName; private String groupName;
@Excel(name = "经销商目标")
private Integer goalTtlAct; private Integer goalTtlAct;
/** /**
* 预付款达成的百分比 * 预付款达成的百分比
*/ */
@Excel(name = "经销商达成率")
private String paymentPercentage; private String paymentPercentage;
private Integer version; private Integer version;
...@@ -83,6 +93,7 @@ public class DealerRoundResult { ...@@ -83,6 +93,7 @@ public class DealerRoundResult {
* 第二轮分组使用,例如:华东组、华南组、华北一组、华北二组、华中组、西南组、西北组 * 第二轮分组使用,例如:华东组、华南组、华北一组、华北二组、华中组、西南组、西北组
* *
*/ */
@Excel(name = "经销商大区分组")
private String salesRegionGroupName; private String salesRegionGroupName;
......
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.dealer.domain.DealerRoundResult; import com.ruoyi.dealer.domain.DealerRoundResult;
import com.ruoyi.dealer.domain.dto.DealerBigScreenGroupResultDto; import com.ruoyi.dealer.domain.dto.DealerBigScreenGroupResultDto;
import com.ruoyi.dealer.domain.dto.DealerBigScreenGroupResultRes; import com.ruoyi.dealer.domain.dto.DealerBigScreenGroupResultRes;
import com.ruoyi.dealer.domain.dto.DealerBigScreenTotalResultRes;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Results;
...@@ -35,5 +36,15 @@ public interface DealerRoundResultMapper extends BaseMapper<DealerRoundResult> { ...@@ -35,5 +36,15 @@ public interface DealerRoundResultMapper extends BaseMapper<DealerRoundResult> {
@Result(column = "payment_percentage", property = "paymentPercentage")// 字段名与属性名一致时可省略 @Result(column = "payment_percentage", property = "paymentPercentage")// 字段名与属性名一致时可省略
}) })
List<DealerBigScreenGroupResultDto> groupTotalList(); List<DealerBigScreenGroupResultDto> groupTotalList();
@Select("select sum(result.payment_ttl) as payment_ttl,sum(result.goal_ttl_act) as goal_ttl_act , 100*sum(result.payment_ttl)/sum(result.goal_ttl_act) as payment_percentage from dealer_round_result result " +
" order by payment_percentage desc ")
// 手动指定映射:column(数据库字段)→ property(Java属性)
@Results({
@Result(column = "payment_ttl", property = "paymentTtl"),
@Result(column = "goal_ttl_act", property = "goalTtlAct"),
@Result(column = "payment_percentage", property = "paymentPercentage")// 字段名与属性名一致时可省略
})
List<DealerBigScreenTotalResultRes> getTotalResult();
// 若需要自定义 SQL 方法,可在此添加 // 若需要自定义 SQL 方法,可在此添加
} }
...@@ -25,6 +25,6 @@ public interface IDealerRoundResultService extends IService<DealerRoundResult> { ...@@ -25,6 +25,6 @@ public interface IDealerRoundResultService extends IService<DealerRoundResult> {
String downloadZip(); String downloadZip();
List<DealerBigScreenTotalResultRes> totalResult(); DealerBigScreenTotalResultRes totalResult();
// 自定义业务方法声明(可选) // 自定义业务方法声明(可选)
} }
...@@ -166,10 +166,12 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM ...@@ -166,10 +166,12 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM
List<DealerRoundResult> groupData = entry.getValue(); List<DealerRoundResult> groupData = entry.getValue();
ExcelUtil<DealerRoundResult> util = new ExcelUtil<>(DealerRoundResult.class); ExcelUtil<DealerRoundResult> util = new ExcelUtil<>(DealerRoundResult.class);
String excelFileName = "分组结果_" + groupName + ".xlsx"; String excelFileName = "分组结果_" + groupName ;
File excelFile = FileUtil.createTempFile(); // 创建临时文件 // 创建临时文件
File excelFile = FileUtil.createTempFile(excelFileName,".xlsx",true);
util.init(groupData, "分组结果", groupName, Excel.Type.EXPORT); util.init(groupData, "分组结果", groupName, Excel.Type.EXPORT);
util.exportExcelFile(excelFile); // 导出到临时文件 // 导出到excel文件
util.exportExcelFile(excelFile);
excelFilePaths.add(excelFile.getAbsolutePath()); excelFilePaths.add(excelFile.getAbsolutePath());
} }
...@@ -177,15 +179,21 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM ...@@ -177,15 +179,21 @@ public class DealerRoundResultServiceImpl extends ServiceImpl<DealerRoundResultM
// 生成 ZIP 文件 // 生成 ZIP 文件
File zipFile = FileUtil.createTempFile(); File zipFile = FileUtil.createTempFile();
InputStream[] inputStreams =new InputStream[excelFilePaths.size()]; InputStream[] inputStreams =new InputStream[excelFilePaths.size()];
for (int i = 0; i < excelFilePaths.size(); i++) {
inputStreams[i] = FileUtil.getInputStream(excelFilePaths.get(i));
}
File zip = ZipUtil.zip(zipFile, excelFilePaths.toArray(new String[0]), inputStreams);// 打包所有 Excel 文件 File zip = ZipUtil.zip(zipFile, excelFilePaths.toArray(new String[0]), inputStreams);// 打包所有 Excel 文件
// 返回 ZIP 文件路径 // 返回 ZIP 文件路径
return zipFile.getAbsolutePath(); return zip.getAbsolutePath();
} }
@Override @Override
public List<DealerBigScreenTotalResultRes> totalResult() { public DealerBigScreenTotalResultRes totalResult() {
return null; List<DealerBigScreenTotalResultRes> roundResults = this.baseMapper.getTotalResult();
DealerBigScreenTotalResultRes res = roundResults.get(0);
res.setPaymentPercentage(getPercentage(res.getPaymentTtl(), res.getGoalTtlAct(), 2) + "%");
return res;
} }
private String getPercentage(Integer paymentTtl, Integer goalTtlAct,Integer scale) { private String getPercentage(Integer paymentTtl, Integer goalTtlAct,Integer scale) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论