Browse Source

7.18导出修改完毕

huangqizheng/feature-20250718222252-导出修改完毕
huangqizhen 1 month ago
parent
commit
b320e00202
  1. 81
      src/main/java/com/example/demo/controller/GoldDetailController.java
  2. 2
      src/main/java/com/example/demo/domain/DTO/GoldDetailDTO.java
  3. 28
      src/main/java/com/example/demo/domain/entity/User.java
  4. 7
      src/main/java/com/example/demo/domain/vo/GoldDetail.java
  5. 2
      src/main/java/com/example/demo/domain/vo/Page.java
  6. 40
      src/main/java/com/example/demo/domain/vo/RechargeUser.java
  7. 1
      src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java
  8. 120
      src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java
  9. 4
      src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java
  10. 1
      src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java
  11. 8
      src/main/resources/application.yml
  12. 35
      src/main/resources/mapper/GoldDetailMapper.xml

81
src/main/java/com/example/demo/controller/GoldDetailController.java

@ -1,22 +1,31 @@
package com.example.demo.controller; package com.example.demo.controller;
import com.example.demo.Util.BusinessException; import com.example.demo.Util.BusinessException;
import com.example.demo.Util.JWTUtil;
import com.example.demo.Util.RedisLockUtil; import com.example.demo.Util.RedisLockUtil;
import com.example.demo.domain.DTO.GoldDetailDTO; import com.example.demo.domain.DTO.GoldDetailDTO;
import com.example.demo.domain.DTO.GoldUserDTO; import com.example.demo.domain.DTO.GoldUserDTO;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.User; import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.GoldDetail; import com.example.demo.domain.vo.GoldDetail;
import com.example.demo.domain.vo.Page; import com.example.demo.domain.vo.Page;
import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.Result;
import com.example.demo.service.GoldDetailService; import com.example.demo.service.GoldDetailService;
import com.example.demo.serviceImpl.AiEmotionServiceImpl; import com.example.demo.serviceImpl.AiEmotionServiceImpl;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.UUID; import java.util.UUID;
/** /**
@ -36,13 +45,14 @@ import java.util.UUID;
public class GoldDetailController { public class GoldDetailController {
private final GoldDetailService goldDetailService; private final GoldDetailService goldDetailService;
@Autowired @Autowired
private RedisLockUtil redisLockUtil; private RedisLockUtil redisLockUtil;
@Autowired @Autowired
private AiEmotionServiceImpl aiEmotionServiceImpl; private AiEmotionServiceImpl aiEmotionServiceImpl;
@PostMapping("/getGoldDetail") @PostMapping("/getGoldDetail")
public Result getGoldDetail(@RequestBody Page page){
public Result getGoldDetail(@RequestBody Page page) throws Exception {
if(ObjectUtils.isEmpty(page.getPageNum())){ if(ObjectUtils.isEmpty(page.getPageNum())){
return Result.error("页码数为空!"); return Result.error("页码数为空!");
@ -51,22 +61,50 @@ public class GoldDetailController {
return Result.error("页大小为空!"); return Result.error("页大小为空!");
} }
else{ else{
if(page.getGoldDetail().getMarkets()==null||page.getGoldDetail().getMarkets().isEmpty()){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));;
if(!markets.contains("总部")) {
page.getGoldDetail().setMarkets(markets);
}
}
return Result.success(goldDetailService.getGoldDetail(page.getPageNum(), page.getPageSize(), page.getGoldDetail())); return Result.success(goldDetailService.getGoldDetail(page.getPageNum(), page.getPageSize(), page.getGoldDetail()));
} }
} }
@PostMapping("/getTotal") @PostMapping("/getTotal")
public Result getTotal(@RequestBody Page page) {
public Result getTotal(@RequestBody Page page) throws Exception {
Integer pageNum = page.getPageNum(); Integer pageNum = page.getPageNum();
Integer pageSize = page.getPageSize(); Integer pageSize = page.getPageSize();
GoldDetail goldDetail = page.getGoldDetail(); GoldDetail goldDetail = page.getGoldDetail();
if(page.getGoldDetail().getMarkets()==null||page.getGoldDetail().getMarkets().isEmpty()){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("总部")) {
page.getGoldDetail().setMarkets(markets);
}
}
return Result.success(goldDetailService.sumGold(pageNum,pageSize,goldDetail)); return Result.success(goldDetailService.sumGold(pageNum,pageSize,goldDetail));
} }
@PostMapping("/goldTotal") @PostMapping("/goldTotal")
public Result GoldTotal(@RequestBody User user) {
public Result GoldTotal(@RequestBody User user) throws Exception {
if(user.getMarkets()==null||user.getMarkets().isEmpty()) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("总部")) {
user.setMarkets(markets);
}
}
return Result.success(goldDetailService.GoldTotal(user)); return Result.success(goldDetailService.GoldTotal(user));
} }
@PostMapping("/getGold") @PostMapping("/getGold")
public Result getGold(@RequestBody Page page) {
public Result getGold(@RequestBody Page page) throws Exception {
System.out.println( page); System.out.println( page);
if(ObjectUtils.isEmpty(page.getPageNum())){ if(ObjectUtils.isEmpty(page.getPageNum())){
return Result.error("页码数为空!"); return Result.error("页码数为空!");
@ -74,6 +112,16 @@ public class GoldDetailController {
if(ObjectUtils.isEmpty(page.getPageSize())){ if(ObjectUtils.isEmpty(page.getPageSize())){
return Result.error("页大小为空!"); return Result.error("页大小为空!");
} }
if(page.getUser().getMarkets()==null||page.getUser().getMarkets().isEmpty()) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("总部")) {
page.getUser().setMarkets(markets);
}
}
return Result.success(goldDetailService.getGold(page.getPageNum(), page.getPageSize(), page.getUser())); return Result.success(goldDetailService.getGold(page.getPageNum(), page.getPageSize(), page.getUser()));
} }
@PostMapping("/export") @PostMapping("/export")
@ -110,5 +158,30 @@ public class GoldDetailController {
redisLockUtil.unlock(lockKey, requestId); redisLockUtil.unlock(lockKey, requestId);
} }
} }
@PostMapping("/exportqqq")
public Result ExcelGoldDetail(@RequestBody Page page) throws Exception {
if(ObjectUtils.isEmpty(page.getPageNum())){
return Result.error("页码数为空!");
}
if(ObjectUtils.isEmpty(page.getPageSize())){
return Result.error("页大小为空!");
}
else{
return Result.success(goldDetailService.getGoldDetail(page.getPageNum(), page.getPageSize(), page.getGoldDetail()));
}
}
public Result ExcelGold(@RequestBody Page page) throws Exception {
System.out.println( page);
if(ObjectUtils.isEmpty(page.getPageNum())){
return Result.error("页码数为空!");
}
if(ObjectUtils.isEmpty(page.getPageSize())){
return Result.error("页大小为空!");
}
return Result.success(goldDetailService.getGold(page.getPageNum(), page.getPageSize(), page.getUser()));
}
} }

2
src/main/java/com/example/demo/domain/DTO/GoldDetailDTO.java

@ -34,7 +34,7 @@ public class GoldDetailDTO {
@NotNull(message = "page不能为空") @NotNull(message = "page不能为空")
private Integer page = 1; private Integer page = 1;
@NotNull(message = "pageSize不能为空") @NotNull(message = "pageSize不能为空")
private Integer pageSize = 20;
private Integer pageSize = 5000;
// @Override // @Override
// public String toString() { // public String toString() {

28
src/main/java/com/example/demo/domain/entity/User.java

@ -1,5 +1,7 @@
package com.example.demo.domain.entity; package com.example.demo.domain.entity;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data; import lombok.Data;
@ -7,6 +9,7 @@ import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@ -14,30 +17,49 @@ import java.util.Date;
public class User implements Serializable { public class User implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ExcelProperty("客户id")
private Integer id; // 客户id private Integer id; // 客户id
@ExcelProperty("精网号")
private Integer jwcode; // 精网号 private Integer jwcode; // 精网号
@ExcelProperty("客户姓名")
private String name; // 客户姓名 private String name; // 客户姓名
@ExcelProperty("所属地区")
private String market; // 所属地区 private String market; // 所属地区
@ExcelProperty("历史永久金币")
private Integer sumPermanentGold; // 历史永久金币 private Integer sumPermanentGold; // 历史永久金币
@ExcelProperty("历史六月免费金币")
private Integer sumFreeJune; // 历史六月免费金币 private Integer sumFreeJune; // 历史六月免费金币
@ExcelProperty("历史十二月免费金币")
private Integer sumFreeDecember; // 历史十二月免费金币 private Integer sumFreeDecember; // 历史十二月免费金币
@ExcelProperty("历史任务金币")
private Integer sumTaskGold; // 历史任务金币 private Integer sumTaskGold; // 历史任务金币
@ExcelProperty("当前永久金币")
private Integer currentPermanentGold; // 当前永久金币 private Integer currentPermanentGold; // 当前永久金币
@ExcelProperty("当前六月免费金币")
private Integer currentFreeJune; // 当前六月免费金币 private Integer currentFreeJune; // 当前六月免费金币
@ExcelProperty("当前十二月免费金币")
private Integer currentFreeDecember; // 当前十二月免费金币 private Integer currentFreeDecember; // 当前十二月免费金币
@ExcelProperty("当前任务金币")
private Integer currentTaskGold; // 当前任务金币 private Integer currentTaskGold; // 当前任务金币
@ExcelProperty("充值次数")
private Integer rechargeNum; // 充值次数 private Integer rechargeNum; // 充值次数
@ExcelProperty("历史消费")
private Integer sumConsume; // 历史消费 private Integer sumConsume; // 历史消费
@ExcelProperty("历史消费次数")
private Integer consumeNum; // 消费次数 private Integer consumeNum; // 消费次数
@ExcelIgnore
private List<String> markets;
@ExcelProperty("首充日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai")
private Date firstRecharge; // 首充日期 private Date firstRecharge; // 首充日期
@ExcelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime; // 创建时间 private Date createTime; // 创建时间
@ExcelProperty("更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date updateTime; // 更新时间 private Date updateTime; // 更新时间
@ExcelIgnore
private String sortField; //排序字段 private String sortField; //排序字段
@ExcelIgnore
private String sortOrder; //排序顺序 private String sortOrder; //排序顺序
} }

7
src/main/java/com/example/demo/domain/vo/GoldDetail.java

@ -8,6 +8,7 @@ import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @program: GOLD * @program: GOLD
@ -46,10 +47,10 @@ public class GoldDetail {
private Integer taskGold; // 任务金币 private Integer taskGold; // 任务金币
@ExcelProperty("提交人") @ExcelProperty("提交人")
private String adminName; //提交人 private String adminName; //提交人
@ExcelProperty("开始时间")
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date startTime; // 开始时间 private Date startTime; // 开始时间
@ExcelProperty("结束时间")
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间 private Date endTime; // 结束时间
@ExcelIgnore @ExcelIgnore
@ -59,5 +60,7 @@ public class GoldDetail {
@ExcelIgnore @ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date auditTime; private Date auditTime;
@ExcelIgnore
private List<String> markets;
} }

2
src/main/java/com/example/demo/domain/vo/Page.java

@ -17,7 +17,7 @@ import lombok.NoArgsConstructor;
public class Page { public class Page {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String token;
private Integer pageNum; private Integer pageNum;
private Integer pageSize; private Integer pageSize;
private GoldDetail goldDetail; private GoldDetail goldDetail;

40
src/main/java/com/example/demo/domain/vo/RechargeUser.java

@ -25,63 +25,63 @@ public class RechargeUser {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ExcelProperty("客户姓名")
// @ExcelProperty("客户姓名")
private String name; // 客户姓名 private String name; // 客户姓名
@ExcelProperty("精网号")
// @ExcelProperty("精网号")
private Integer jwcode; // 精网号 private Integer jwcode; // 精网号
@ExcelProperty("所属地区")
// @ExcelProperty("所属地区")
private String market; // 所属地区 private String market; // 所属地区
@ExcelProperty("活动名称")
// @ExcelProperty("活动名称")
private String activity; // 活动名称 private String activity; // 活动名称
@ExcelProperty("汇率ID")
// @ExcelProperty("汇率ID")
private Integer rateId; // 汇率ID private Integer rateId; // 汇率ID
@ExcelProperty("汇率名称")
// @ExcelProperty("汇率名称")
private String rateName; // 汇率名称 private String rateName; // 汇率名称
@ExcelProperty("金额[分]")
// @ExcelProperty("金额[分]")
private Integer money; // 金额[] private Integer money; // 金额[]
@ExcelProperty("永久金币")
// @ExcelProperty("永久金币")
private Integer permanentGold; // 永久金币 private Integer permanentGold; // 永久金币
@ExcelProperty("免费金币")
// @ExcelProperty("免费金币")
private Integer freeGold; // 免费金币 private Integer freeGold; // 免费金币
@ExcelProperty("支付方式")
// @ExcelProperty("支付方式")
private String payModel; // 支付方式 private String payModel; // 支付方式
@ExcelProperty("支付平台")
// @ExcelProperty("支付平台")
private String payPlatform; // 支付平台 private String payPlatform; // 支付平台
@ExcelProperty("支付凭证")
// @ExcelProperty("支付凭证")
private String voucher; // 支付凭证 private String voucher; // 支付凭证
@ExcelProperty("备注")
// @ExcelProperty("备注")
private String remark; // 备注 private String remark; // 备注
@ExcelProperty("提交人Id")
// @ExcelProperty("提交人Id")
private Integer adminId; // 提交人Id private Integer adminId; // 提交人Id
@ExcelProperty("提交人姓名")
// @ExcelProperty("提交人姓名")
private String adminName; // 提交人姓名 private String adminName; // 提交人姓名
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
@ExcelProperty("创建时间")
// @ExcelProperty("创建时间")
private Date payTime; // 创建时间 private Date payTime; // 创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
@ExcelIgnore
// @ExcelIgnore
private Date startTime; // 开始时间 private Date startTime; // 开始时间
@ExcelIgnore
// @ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间 private Date endTime; // 结束时间
@ExcelIgnore
// @ExcelIgnore
private String sortField; //排序字段 private String sortField; //排序字段
@ExcelIgnore
// @ExcelIgnore
private String sortOrder; //排序顺序 private String sortOrder; //排序顺序
private List<String> markets; // 地区列表 private List<String> markets; // 地区列表

1
src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java

@ -38,7 +38,6 @@ public class AdminServiceImpl implements AdminService {
Admin adminInDB = adminMapper.getAdmin(account); Admin adminInDB = adminMapper.getAdmin(account);
System.out.println("adminInDB:" + adminInDB); System.out.println("adminInDB:" + adminInDB);
System.out.println("adminInDB markets: " + adminInDB.getMarkets()); // 添加日志检查
if (adminInDB == null) { if (adminInDB == null) {
throw new RuntimeException("无此精网号"); throw new RuntimeException("无此精网号");
} }

120
src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java

@ -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();

4
src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java

@ -49,6 +49,7 @@ public class GoldDetailServiceImpl implements GoldDetailService {
@Override @Override
public PageInfo<GoldDetail> getGoldDetail(Integer pageNum, Integer pageSize, GoldDetail goldDetail) { public PageInfo<GoldDetail> getGoldDetail(Integer pageNum, Integer pageSize, GoldDetail goldDetail) {
PageHelper.startPage(pageNum, pageSize); PageHelper.startPage(pageNum, pageSize);
System.out.println(goldDetail.getMarkets());
List<GoldDetail> list = goldDetailMapper.getGoldDetail(goldDetail); List<GoldDetail> list = goldDetailMapper.getGoldDetail(goldDetail);
return new PageInfo<>(list); return new PageInfo<>(list);
} }
@ -157,7 +158,9 @@ public class GoldDetailServiceImpl implements GoldDetailService {
exportData.put("recordId", recordId); exportData.put("recordId", recordId);
// 手动构造请求数据避免 toString() 只返回部分字段 // 手动构造请求数据避免 toString() 只返回部分字段
Map<String, String> headers = new HashMap<>();
Map<String, Object> requestData = new HashMap<>(); Map<String, Object> requestData = new HashMap<>();
requestData.put("token", token);
requestData.put("goldDetail", dto.getGoldDetail()); requestData.put("goldDetail", dto.getGoldDetail());
exportData.put("requestData", requestData); exportData.put("requestData", requestData);
@ -212,6 +215,7 @@ public class GoldDetailServiceImpl implements GoldDetailService {
// 手动构造请求数据避免 toString() 只返回部分字段 // 手动构造请求数据避免 toString() 只返回部分字段
Map<String, Object> requestData = new HashMap<>(); Map<String, Object> requestData = new HashMap<>();
requestData.put("token", token);
requestData.put("user", dto.getUser()); requestData.put("user", dto.getUser());
exportData.put("requestData", requestData); exportData.put("requestData", requestData);

1
src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java

@ -8,6 +8,7 @@ import com.example.demo.mapper.MenuMapper;
import com.example.demo.mapper.RoleMapper; import com.example.demo.mapper.RoleMapper;
import com.example.demo.service.MenuService; import com.example.demo.service.MenuService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;

8
src/main/resources/application.yml

@ -4,9 +4,9 @@ spring:
fail-on-unknown-properties: false fail-on-unknown-properties: false
datasource: datasource:
mysql1: mysql1:
jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgold?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true
username: hwgold
password: aDiw7MERSATdfGta
jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgoldc?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true
username: hwgoldc
password: zB48T55wCsHC8KPz
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
hikari: hikari:
pool-name: mysql1HikariCP pool-name: mysql1HikariCP
@ -69,7 +69,7 @@ spring:
database: 0 database: 0
host: localhost host: localhost
port: 6379 port: 6379
# password: Ngc0FYUTA6h3wC5J
password: 123456
lettuce: lettuce:
pool: pool:

35
src/main/resources/mapper/GoldDetailMapper.xml

@ -24,8 +24,11 @@
<if test="type != null"> <if test="type != null">
and `ugr`.type = #{type} and `ugr`.type = #{type}
</if> </if>
<if test="market != null and market.length > 0">
and `user`.market = #{market}
<if test="markets!= null">
AND user.market IN
<foreach collection="markets" item="markets" open="(" separator="," close=")">
#{markets}
</foreach>
</if> </if>
<if test="startTime != null and endTime != null"> <if test="startTime != null and endTime != null">
and ugr.`audit_time` BETWEEN #{startTime} AND #{endTime} and ugr.`audit_time` BETWEEN #{startTime} AND #{endTime}
@ -56,8 +59,11 @@
<if test="type != null"> <if test="type != null">
and `ugr`.type = #{type} and `ugr`.type = #{type}
</if> </if>
<if test="market != null and market.length > 0">
and `user`.market = #{market}
<if test="markets != null">
AND user.market IN
<foreach collection="markets" item="markets" open="(" separator="," close=")">
#{market}
</foreach>
</if> </if>
<if test="startTime != null and endTime != null"> <if test="startTime != null and endTime != null">
and ugr.`audit_time` BETWEEN #{startTime} AND #{endTime} and ugr.`audit_time` BETWEEN #{startTime} AND #{endTime}
@ -71,8 +77,11 @@
<if test="jwcode != null"> <if test="jwcode != null">
and jwcode = #{jwcode} and jwcode = #{jwcode}
</if> </if>
<if test="market != null and market.length > 0">
and market = #{market}
<if test="markets != null">
AND user.market IN
<foreach collection="markets" item="markets" open="(" separator="," close=")">
#{markets}
</foreach>
</if> </if>
</where> </where>
<choose> <choose>
@ -95,8 +104,11 @@
<if test="jwcode != null "> <if test="jwcode != null ">
and jwcode = #{jwcode} and jwcode = #{jwcode}
</if> </if>
<if test="market != null and market.length > 0">
and market = #{market}
<if test="markets != null">
AND user.market IN
<foreach collection="markets" item="markets" open="(" separator="," close=")">
#{markets}
</foreach>
</if> </if>
</where> </where>
</select> </select>
@ -116,8 +128,11 @@
<if test="type != null"> <if test="type != null">
and `ugr`.type = #{type} and `ugr`.type = #{type}
</if> </if>
<if test="market != null and market.length > 0">
and `user`.market = #{market}
<if test="markets != null">
AND user.market IN
<foreach collection="markets" item="markets" open="(" separator="," close=")">
#{markets}
</foreach>
</if> </if>
<if test="startTime != null and endTime != null"> <if test="startTime != null and endTime != null">
and ugr.`audit_time` BETWEEN #{startTime} AND #{endTime} and ugr.`audit_time` BETWEEN #{startTime} AND #{endTime}

Loading…
Cancel
Save