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

导出excel接口完善

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