|
@ -5,6 +5,7 @@ import com.alibaba.excel.EasyExcel; |
|
|
import com.alibaba.excel.ExcelWriter; |
|
|
import com.alibaba.excel.ExcelWriter; |
|
|
import com.alibaba.excel.write.metadata.WriteSheet; |
|
|
import com.alibaba.excel.write.metadata.WriteSheet; |
|
|
import com.example.demo.Util.ExcelUploadUtil; |
|
|
import com.example.demo.Util.ExcelUploadUtil; |
|
|
|
|
|
import com.example.demo.Util.ExecutionContextUtil; |
|
|
import com.example.demo.Util.JWTUtil; |
|
|
import com.example.demo.Util.JWTUtil; |
|
|
import com.example.demo.controller.ConsumeController; |
|
|
import com.example.demo.controller.ConsumeController; |
|
|
import com.example.demo.controller.GoldDetailController; |
|
|
import com.example.demo.controller.GoldDetailController; |
|
@ -26,6 +27,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; |
|
|
import com.example.demo.service.AiEmotionService; |
|
|
import com.example.demo.service.AiEmotionService; |
|
|
|
|
|
|
|
|
import com.github.pagehelper.PageInfo; |
|
|
import com.github.pagehelper.PageInfo; |
|
|
|
|
|
import jakarta.servlet.http.HttpServletRequest; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
@ -41,6 +43,7 @@ import org.springframework.transaction.annotation.Transactional; |
|
|
import java.io.*; |
|
|
import java.io.*; |
|
|
import java.text.ParseException; |
|
|
import java.text.ParseException; |
|
|
import java.text.SimpleDateFormat; |
|
|
import java.text.SimpleDateFormat; |
|
|
|
|
|
import java.util.Arrays; |
|
|
import java.util.Date; |
|
|
import java.util.Date; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
|
|
|
|
|
@ -90,6 +93,8 @@ public class ExportExcelServiceImpl implements ExportExcelService { |
|
|
// 2. 获取基本参数 |
|
|
// 2. 获取基本参数 |
|
|
recordId = rootNode.path("recordId").asLong(); |
|
|
recordId = rootNode.path("recordId").asLong(); |
|
|
JsonNode requestDataNode = rootNode.path("requestData"); |
|
|
JsonNode requestDataNode = rootNode.path("requestData"); |
|
|
|
|
|
JsonNode token = requestDataNode.path("token"); |
|
|
|
|
|
String tokenValue = token.asText(); |
|
|
JsonNode goldDetailNode = requestDataNode.path("goldDetail"); |
|
|
JsonNode goldDetailNode = requestDataNode.path("goldDetail"); |
|
|
GoldDetail goldDetail = objectMapper.treeToValue(goldDetailNode, GoldDetail.class); |
|
|
GoldDetail goldDetail = objectMapper.treeToValue(goldDetailNode, GoldDetail.class); |
|
|
|
|
|
|
|
@ -105,50 +110,56 @@ public class ExportExcelServiceImpl implements ExportExcelService { |
|
|
outputStream = new FileOutputStream(tempFile); // 使用文件输出流 |
|
|
outputStream = new FileOutputStream(tempFile); // 使用文件输出流 |
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
// 从JSON中提取单个值 |
|
|
// 从JSON中提取单个值 |
|
|
// String text = requestDataNode.has("text") ? requestDataNode.get("text").asText() : null; |
|
|
|
|
|
// Integer sort = requestDataNode.has("sort") ? requestDataNode.get("sort").asInt() : null; |
|
|
|
|
|
// String field = requestDataNode.has("field") ? requestDataNode.get("field").asText() : null; |
|
|
|
|
|
// String deptId = requestDataNode.has("deptId") ? requestDataNode.get("deptId").asText() : null; |
|
|
|
|
|
// Integer jwcode = requestDataNode.has("jwcode") ? requestDataNode.get("jwcode").asInt() : null; |
|
|
|
|
|
// String payPlatform = requestDataNode.has("payPlatform") ? requestDataNode.get("payPlatform").asText() : null; |
|
|
|
|
|
// Integer type = requestDataNode.has("type") ? requestDataNode.get("type").asInt() : null; |
|
|
|
|
|
// String market = requestDataNode.has("market") ? requestDataNode.get("market").asText() : null; |
|
|
|
|
|
|
|
|
|
|
|
Date startTime = null; |
|
|
Date startTime = null; |
|
|
if (requestDataNode.has("startTime")) { |
|
|
|
|
|
String startTimeStr = requestDataNode.get("startTime").asText(); |
|
|
|
|
|
try { |
|
|
|
|
|
startTime = dateFormat.parse(startTimeStr); |
|
|
|
|
|
} catch (ParseException e) { |
|
|
|
|
|
System.err.println("无法解析 startTime: " + startTimeStr); |
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
|
|
|
if (goldDetailNode.has("startTime") && goldDetailNode.get("startTime") != null) { |
|
|
|
|
|
String startTimeStr = goldDetailNode.get("startTime").asText(); |
|
|
|
|
|
if (!"null".equalsIgnoreCase(startTimeStr) && !startTimeStr.trim().isEmpty()) { |
|
|
|
|
|
try { |
|
|
|
|
|
startTime = dateFormat.parse(startTimeStr); |
|
|
|
|
|
} catch (ParseException e) { |
|
|
|
|
|
System.err.println("无法解析 startTime: " + startTimeStr); |
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 解析 endTime |
|
|
// 解析 endTime |
|
|
Date endTime = null; |
|
|
Date endTime = null; |
|
|
if (requestDataNode.has("endTime")) { |
|
|
|
|
|
String endTimeStr = requestDataNode.get("endTime").asText(); |
|
|
|
|
|
try { |
|
|
|
|
|
endTime = dateFormat.parse(endTimeStr); |
|
|
|
|
|
} catch (ParseException e) { |
|
|
|
|
|
System.err.println("无法解析 endTime: " + endTimeStr); |
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (goldDetailNode.has("endTime") && goldDetailNode.get("endTime") != null) { |
|
|
|
|
|
String endTimeStr = goldDetailNode.get("endTime").asText(); |
|
|
|
|
|
if (!"null".equalsIgnoreCase(endTimeStr) && !endTimeStr.trim().isEmpty()) { |
|
|
|
|
|
try { |
|
|
|
|
|
endTime = dateFormat.parse(endTimeStr); |
|
|
|
|
|
} catch (ParseException e) { |
|
|
|
|
|
System.err.println("无法解析 endTime: " + endTimeStr); |
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
try { |
|
|
try { |
|
|
// 6. 初始化Excel写入器(指向本地文件流) |
|
|
// 6. 初始化Excel写入器(指向本地文件流) |
|
|
excelWriter = initExcelWriter(outputStream, "user"); |
|
|
|
|
|
|
|
|
excelWriter = EasyExcel.write(outputStream, GoldDetail.class).build(); |
|
|
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); |
|
|
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); |
|
|
// 7. 分页查询并写入数据 |
|
|
// 7. 分页查询并写入数据 |
|
|
Page page = new Page(); |
|
|
Page page = new Page(); |
|
|
|
|
|
page.setGoldDetail(goldDetail); |
|
|
|
|
|
if(goldDetail.getMarkets()==null||goldDetail.getMarkets().isEmpty()){ |
|
|
|
|
|
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(tokenValue), Admin.class); |
|
|
|
|
|
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); |
|
|
|
|
|
if(!markets.contains("总部")) { |
|
|
|
|
|
page.getGoldDetail().setMarkets(markets); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
page.setPageNum(1); |
|
|
page.setPageNum(1); |
|
|
page.setPageSize(5000); |
|
|
page.setPageSize(5000); |
|
|
Integer totalCount = 0; |
|
|
Integer totalCount = 0; |
|
|
page.setGoldDetail(goldDetail); |
|
|
|
|
|
|
|
|
|
|
|
boolean hasMore = true; |
|
|
boolean hasMore = true; |
|
|
while (hasMore) { |
|
|
while (hasMore) { |
|
|
Result pageResult = goldDetailController.getGoldDetail(page); |
|
|
|
|
|
|
|
|
Result pageResult = goldDetailController.ExcelGoldDetail(page); |
|
|
Integer code = pageResult.getCode(); |
|
|
Integer code = pageResult.getCode(); |
|
|
Object data = pageResult.getData(); |
|
|
Object data = pageResult.getData(); |
|
|
|
|
|
|
|
@ -309,7 +320,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { |
|
|
@Override |
|
|
@Override |
|
|
public Exception handleExcel(String message) throws Exception { |
|
|
public Exception handleExcel(String message) throws Exception { |
|
|
System.out.println("明细导出excel数据开始执行:" + message); |
|
|
System.out.println("明细导出excel数据开始执行:" + message); |
|
|
long startTime = System.currentTimeMillis(); |
|
|
|
|
|
|
|
|
long stTime = System.currentTimeMillis(); |
|
|
Long recordId = null; |
|
|
Long recordId = null; |
|
|
String fileName = null; |
|
|
String fileName = null; |
|
|
File tempFile = null; |
|
|
File tempFile = null; |
|
@ -322,6 +333,8 @@ public class ExportExcelServiceImpl implements ExportExcelService { |
|
|
// 2. 获取基本参数 |
|
|
// 2. 获取基本参数 |
|
|
recordId = rootNode.path("recordId").asLong(); |
|
|
recordId = rootNode.path("recordId").asLong(); |
|
|
JsonNode requestDataNode = rootNode.path("requestData"); |
|
|
JsonNode requestDataNode = rootNode.path("requestData"); |
|
|
|
|
|
JsonNode token = requestDataNode.path("token"); |
|
|
|
|
|
String tokenValue = token.asText(); |
|
|
JsonNode userNode = requestDataNode.path("user"); |
|
|
JsonNode userNode = requestDataNode.path("user"); |
|
|
User user = objectMapper.treeToValue(userNode, User.class); |
|
|
User user = objectMapper.treeToValue(userNode, User.class); |
|
|
// 3. 验证导出记录 |
|
|
// 3. 验证导出记录 |
|
@ -334,26 +347,61 @@ public class ExportExcelServiceImpl implements ExportExcelService { |
|
|
// 初始化临时文件(保存到本地临时目录) |
|
|
// 初始化临时文件(保存到本地临时目录) |
|
|
tempFile = File.createTempFile("export_", ".xlsx"); |
|
|
tempFile = File.createTempFile("export_", ".xlsx"); |
|
|
outputStream = new FileOutputStream(tempFile); // 使用文件输出流 |
|
|
outputStream = new FileOutputStream(tempFile); // 使用文件输出流 |
|
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
// 从JSON中提取单个值 |
|
|
// 从JSON中提取单个值 |
|
|
// String text = requestDataNode.has("text") ? requestDataNode.get("text").asText() : null; |
|
|
// String text = requestDataNode.has("text") ? requestDataNode.get("text").asText() : null; |
|
|
// Integer sort = requestDataNode.has("sort") ? requestDataNode.get("sort").asInt() : null; |
|
|
// Integer sort = requestDataNode.has("sort") ? requestDataNode.get("sort").asInt() : null; |
|
|
// String field = requestDataNode.has("field") ? requestDataNode.get("field").asText() : null; |
|
|
// String field = requestDataNode.has("field") ? requestDataNode.get("field").asText() : null; |
|
|
// String deptId = requestDataNode.has("deptId") ? requestDataNode.get("deptId").asText() : null; |
|
|
// String deptId = requestDataNode.has("deptId") ? requestDataNode.get("deptId").asText() : null; |
|
|
|
|
|
|
|
|
|
|
|
Date startTime = null; |
|
|
|
|
|
if (userNode.has("startTime") && userNode.get("startTime") != null) { |
|
|
|
|
|
String startTimeStr = userNode.get("startTime").asText(); |
|
|
|
|
|
if (!"null".equalsIgnoreCase(startTimeStr) && !startTimeStr.trim().isEmpty()) { |
|
|
|
|
|
try { |
|
|
|
|
|
startTime = dateFormat.parse(startTimeStr); |
|
|
|
|
|
} catch (ParseException e) { |
|
|
|
|
|
System.err.println("无法解析 startTime: " + startTimeStr); |
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 解析 endTime |
|
|
|
|
|
Date endTime = null; |
|
|
|
|
|
|
|
|
|
|
|
if (userNode.has("endTime") && userNode.get("endTime") != null) { |
|
|
|
|
|
String endTimeStr = userNode.get("endTime").asText(); |
|
|
|
|
|
if (!"null".equalsIgnoreCase(endTimeStr) && !endTimeStr.trim().isEmpty()) { |
|
|
|
|
|
try { |
|
|
|
|
|
endTime = dateFormat.parse(endTimeStr); |
|
|
|
|
|
} catch (ParseException e) { |
|
|
|
|
|
System.err.println("无法解析 endTime: " + endTimeStr); |
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
try { |
|
|
try { |
|
|
// 6. 初始化Excel写入器(指向本地文件流) |
|
|
// 6. 初始化Excel写入器(指向本地文件流) |
|
|
excelWriter = ExcelWriter(outputStream, "user"); |
|
|
|
|
|
|
|
|
excelWriter = EasyExcel.write(outputStream, User.class).build(); |
|
|
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); |
|
|
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); |
|
|
// 7. 分页查询并写入数据 |
|
|
// 7. 分页查询并写入数据 |
|
|
Page page = new Page(); |
|
|
Page page = new Page(); |
|
|
|
|
|
page.setUser(user); |
|
|
|
|
|
if(user.getMarkets()==null||user.getMarkets().isEmpty()){ |
|
|
|
|
|
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(tokenValue), Admin.class); |
|
|
|
|
|
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); |
|
|
|
|
|
if(!markets.contains("总部")) { |
|
|
|
|
|
page.getUser().setMarkets(markets); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
page.setPageNum(1); |
|
|
page.setPageNum(1); |
|
|
page.setPageSize(5000); |
|
|
page.setPageSize(5000); |
|
|
page.setUser(user); |
|
|
|
|
|
Integer totalCount = 0; |
|
|
Integer totalCount = 0; |
|
|
boolean hasMore = true; |
|
|
boolean hasMore = true; |
|
|
while (hasMore) { |
|
|
while (hasMore) { |
|
|
Result pageResult = goldDetailController.getGold(page); |
|
|
|
|
|
|
|
|
Result pageResult = goldDetailController.ExcelGold(page); |
|
|
Integer code = pageResult.getCode(); |
|
|
Integer code = pageResult.getCode(); |
|
|
Object data = pageResult.getData(); |
|
|
Object data = pageResult.getData(); |
|
|
|
|
|
|
|
@ -502,8 +550,8 @@ public class ExportExcelServiceImpl implements ExportExcelService { |
|
|
throw new Exception("删除临时文件失败", e); |
|
|
throw new Exception("删除临时文件失败", e); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
long endTime = System.currentTimeMillis(); |
|
|
|
|
|
log.info("导出任务完成,耗时: {}毫秒", (endTime - startTime)); |
|
|
|
|
|
|
|
|
long eTime = System.currentTimeMillis(); |
|
|
|
|
|
log.info("导出任务完成,耗时: {}毫秒", (eTime - stTime)); |
|
|
} |
|
|
} |
|
|
return null; |
|
|
return null; |
|
|
} |
|
|
} |
|
@ -548,7 +596,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { |
|
|
try { |
|
|
try { |
|
|
// 6. 初始化Excel写入器(指向本地文件流) |
|
|
// 6. 初始化Excel写入器(指向本地文件流) |
|
|
try { |
|
|
try { |
|
|
excelWriter = EasyExcel.write(outputStream, GoldDetail.class).build(); |
|
|
|
|
|
|
|
|
excelWriter = EasyExcel.write(outputStream, RechargeUser.class).build(); |
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
log.error("Excel 写入器初始化失败", e); |
|
|
log.error("Excel 写入器初始化失败", e); |
|
|
throw new RuntimeException("Excel 写入器初始化失败", e); |
|
|
throw new RuntimeException("Excel 写入器初始化失败", e); |
|
@ -763,7 +811,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { |
|
|
|
|
|
|
|
|
try { |
|
|
try { |
|
|
// 6. 初始化Excel写入器(指向本地文件流) |
|
|
// 6. 初始化Excel写入器(指向本地文件流) |
|
|
excelWriter = ConExcelWriter(outputStream, "user"); |
|
|
|
|
|
|
|
|
excelWriter = EasyExcel.write(outputStream, ConsumeUser.class).build(); |
|
|
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); |
|
|
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); |
|
|
// 7. 分页查询并写入数据 |
|
|
// 7. 分页查询并写入数据 |
|
|
Page page = new Page(); |
|
|
Page page = new Page(); |
|
@ -969,14 +1017,10 @@ public class ExportExcelServiceImpl implements ExportExcelService { |
|
|
tempFile = File.createTempFile("export_", ".xlsx"); |
|
|
tempFile = File.createTempFile("export_", ".xlsx"); |
|
|
outputStream = new FileOutputStream(tempFile); // 使用文件输出流 |
|
|
outputStream = new FileOutputStream(tempFile); // 使用文件输出流 |
|
|
// 从JSON中提取单个值 |
|
|
// 从JSON中提取单个值 |
|
|
String text = requestDataNode.has("text") ? requestDataNode.get("text").asText() : null; |
|
|
|
|
|
Integer sort = requestDataNode.has("sort") ? requestDataNode.get("sort").asInt() : null; |
|
|
|
|
|
String field = requestDataNode.has("field") ? requestDataNode.get("field").asText() : null; |
|
|
|
|
|
String deptId = requestDataNode.has("deptId") ? requestDataNode.get("deptId").asText() : null; |
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
try { |
|
|
// 6. 初始化Excel写入器(指向本地文件流) |
|
|
// 6. 初始化Excel写入器(指向本地文件流) |
|
|
excelWriter = RefundExcelWriter(outputStream, "user"); |
|
|
|
|
|
|
|
|
excelWriter = EasyExcel.write(outputStream, RefundUser.class).build(); |
|
|
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); |
|
|
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); |
|
|
// 7. 分页查询并写入数据 |
|
|
// 7. 分页查询并写入数据 |
|
|
Page page = new Page(); |
|
|
Page page = new Page(); |
|
|