From b320e00202be0ad9e32f66f969a391694ee36841 Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Fri, 18 Jul 2025 22:23:21 +0800 Subject: [PATCH] =?UTF-8?q?7.18=E5=AF=BC=E5=87=BA=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/GoldDetailController.java | 81 +++++++++++++- .../com/example/demo/domain/DTO/GoldDetailDTO.java | 2 +- .../java/com/example/demo/domain/entity/User.java | 28 ++++- .../com/example/demo/domain/vo/GoldDetail.java | 7 +- src/main/java/com/example/demo/domain/vo/Page.java | 2 +- .../com/example/demo/domain/vo/RechargeUser.java | 40 +++---- .../example/demo/serviceImpl/AdminServiceImpl.java | 1 - .../demo/serviceImpl/ExportExcelServiceImpl.java | 120 ++++++++++++++------- .../demo/serviceImpl/GoldDetailServiceImpl.java | 4 + .../example/demo/serviceImpl/MenuServiceImpl.java | 1 + src/main/resources/application.yml | 8 +- src/main/resources/mapper/GoldDetailMapper.xml | 35 ++++-- 12 files changed, 245 insertions(+), 84 deletions(-) diff --git a/src/main/java/com/example/demo/controller/GoldDetailController.java b/src/main/java/com/example/demo/controller/GoldDetailController.java index 23db9b9..54143af 100644 --- a/src/main/java/com/example/demo/controller/GoldDetailController.java +++ b/src/main/java/com/example/demo/controller/GoldDetailController.java @@ -1,22 +1,31 @@ package com.example.demo.controller; import com.example.demo.Util.BusinessException; +import com.example.demo.Util.JWTUtil; import com.example.demo.Util.RedisLockUtil; import com.example.demo.domain.DTO.GoldDetailDTO; 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.vo.GoldDetail; import com.example.demo.domain.vo.Page; import com.example.demo.domain.vo.Result; import com.example.demo.service.GoldDetailService; import com.example.demo.serviceImpl.AiEmotionServiceImpl; +import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; 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; /** @@ -36,13 +45,14 @@ import java.util.UUID; public class GoldDetailController { private final GoldDetailService goldDetailService; + @Autowired private RedisLockUtil redisLockUtil; @Autowired private AiEmotionServiceImpl aiEmotionServiceImpl; @PostMapping("/getGoldDetail") - public Result getGoldDetail(@RequestBody Page page){ + public Result getGoldDetail(@RequestBody Page page) throws Exception { if(ObjectUtils.isEmpty(page.getPageNum())){ return Result.error("页码数为空!"); @@ -51,22 +61,50 @@ public class GoldDetailController { return Result.error("页大小为空!"); } 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 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())); } } @PostMapping("/getTotal") - public Result getTotal(@RequestBody Page page) { + public Result getTotal(@RequestBody Page page) throws Exception { Integer pageNum = page.getPageNum(); Integer pageSize = page.getPageSize(); 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 markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); + if(!markets.contains("总部")) { + page.getGoldDetail().setMarkets(markets); + } + } return Result.success(goldDetailService.sumGold(pageNum,pageSize,goldDetail)); } @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 markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); + + if(!markets.contains("总部")) { + user.setMarkets(markets); + } + } return Result.success(goldDetailService.GoldTotal(user)); } @PostMapping("/getGold") - public Result getGold(@RequestBody Page page) { + public Result getGold(@RequestBody Page page) throws Exception { System.out.println( page); if(ObjectUtils.isEmpty(page.getPageNum())){ return Result.error("页码数为空!"); @@ -74,6 +112,16 @@ public class GoldDetailController { if(ObjectUtils.isEmpty(page.getPageSize())){ 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 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())); } @PostMapping("/export") @@ -110,5 +158,30 @@ public class GoldDetailController { 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())); + } } diff --git a/src/main/java/com/example/demo/domain/DTO/GoldDetailDTO.java b/src/main/java/com/example/demo/domain/DTO/GoldDetailDTO.java index dc0b518..86b7918 100644 --- a/src/main/java/com/example/demo/domain/DTO/GoldDetailDTO.java +++ b/src/main/java/com/example/demo/domain/DTO/GoldDetailDTO.java @@ -34,7 +34,7 @@ public class GoldDetailDTO { @NotNull(message = "page不能为空") private Integer page = 1; @NotNull(message = "pageSize不能为空") - private Integer pageSize = 20; + private Integer pageSize = 5000; // @Override // public String toString() { diff --git a/src/main/java/com/example/demo/domain/entity/User.java b/src/main/java/com/example/demo/domain/entity/User.java index c0533af..14589dc 100644 --- a/src/main/java/com/example/demo/domain/entity/User.java +++ b/src/main/java/com/example/demo/domain/entity/User.java @@ -1,5 +1,7 @@ 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.JsonIgnoreProperties; import lombok.Data; @@ -7,6 +9,7 @@ import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.Date; +import java.util.List; @Data @NoArgsConstructor @@ -14,30 +17,49 @@ import java.util.Date; public class User implements Serializable { private static final long serialVersionUID = 1L; + @ExcelProperty("客户id") private Integer id; // 客户id + @ExcelProperty("精网号") private Integer jwcode; // 精网号 + @ExcelProperty("客户姓名") private String name; // 客户姓名 + @ExcelProperty("所属地区") private String market; // 所属地区 + @ExcelProperty("历史永久金币") private Integer sumPermanentGold; // 历史永久金币 + @ExcelProperty("历史六月免费金币") private Integer sumFreeJune; // 历史六月免费金币 + @ExcelProperty("历史十二月免费金币") private Integer sumFreeDecember; // 历史十二月免费金币 + @ExcelProperty("历史任务金币") private Integer sumTaskGold; // 历史任务金币 + @ExcelProperty("当前永久金币") private Integer currentPermanentGold; // 当前永久金币 + @ExcelProperty("当前六月免费金币") private Integer currentFreeJune; // 当前六月免费金币 + @ExcelProperty("当前十二月免费金币") private Integer currentFreeDecember; // 当前十二月免费金币 + @ExcelProperty("当前任务金币") private Integer currentTaskGold; // 当前任务金币 + @ExcelProperty("充值次数") private Integer rechargeNum; // 充值次数 + @ExcelProperty("历史消费") private Integer sumConsume; // 历史消费 + @ExcelProperty("历史消费次数") private Integer consumeNum; // 消费次数 - + @ExcelIgnore + private List markets; +@ExcelProperty("首充日期") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai") private Date firstRecharge; // 首充日期 - + @ExcelProperty("创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date createTime; // 创建时间 - + @ExcelProperty("更新时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date updateTime; // 更新时间 + @ExcelIgnore private String sortField; //排序字段 + @ExcelIgnore private String sortOrder; //排序顺序 } \ No newline at end of file diff --git a/src/main/java/com/example/demo/domain/vo/GoldDetail.java b/src/main/java/com/example/demo/domain/vo/GoldDetail.java index 77bac75..673b640 100644 --- a/src/main/java/com/example/demo/domain/vo/GoldDetail.java +++ b/src/main/java/com/example/demo/domain/vo/GoldDetail.java @@ -8,6 +8,7 @@ import lombok.NoArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; +import java.util.List; /** * @program: GOLD @@ -46,10 +47,10 @@ public class GoldDetail { private Integer taskGold; // 任务金币 @ExcelProperty("提交人") private String adminName; //提交人 - @ExcelProperty("开始时间") + @ExcelIgnore @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date startTime; // 开始时间 - @ExcelProperty("结束时间") + @ExcelIgnore @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date endTime; // 结束时间 @ExcelIgnore @@ -59,5 +60,7 @@ public class GoldDetail { @ExcelIgnore @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date auditTime; + @ExcelIgnore + private List markets; } diff --git a/src/main/java/com/example/demo/domain/vo/Page.java b/src/main/java/com/example/demo/domain/vo/Page.java index a11d30f..d4e2efd 100644 --- a/src/main/java/com/example/demo/domain/vo/Page.java +++ b/src/main/java/com/example/demo/domain/vo/Page.java @@ -17,7 +17,7 @@ import lombok.NoArgsConstructor; public class Page { private static final long serialVersionUID = 1L; - + private String token; private Integer pageNum; private Integer pageSize; private GoldDetail goldDetail; diff --git a/src/main/java/com/example/demo/domain/vo/RechargeUser.java b/src/main/java/com/example/demo/domain/vo/RechargeUser.java index 75fb205..5bd6c8d 100644 --- a/src/main/java/com/example/demo/domain/vo/RechargeUser.java +++ b/src/main/java/com/example/demo/domain/vo/RechargeUser.java @@ -25,63 +25,63 @@ public class RechargeUser { private static final long serialVersionUID = 1L; - @ExcelProperty("客户姓名") +// @ExcelProperty("客户姓名") private String name; // 客户姓名 - @ExcelProperty("精网号") +// @ExcelProperty("精网号") private Integer jwcode; // 精网号 - @ExcelProperty("所属地区") +// @ExcelProperty("所属地区") private String market; // 所属地区 - @ExcelProperty("活动名称") +// @ExcelProperty("活动名称") private String activity; // 活动名称 - @ExcelProperty("汇率ID") +// @ExcelProperty("汇率ID") private Integer rateId; // 汇率ID - @ExcelProperty("汇率名称") +// @ExcelProperty("汇率名称") private String rateName; // 汇率名称 - @ExcelProperty("金额[分]") +// @ExcelProperty("金额[分]") private Integer money; // 金额[分] - @ExcelProperty("永久金币") +// @ExcelProperty("永久金币") private Integer permanentGold; // 永久金币 - @ExcelProperty("免费金币") +// @ExcelProperty("免费金币") private Integer freeGold; // 免费金币 - @ExcelProperty("支付方式") +// @ExcelProperty("支付方式") private String payModel; // 支付方式 - @ExcelProperty("支付平台") +// @ExcelProperty("支付平台") private String payPlatform; // 支付平台 - @ExcelProperty("支付凭证") +// @ExcelProperty("支付凭证") private String voucher; // 支付凭证 - @ExcelProperty("备注") +// @ExcelProperty("备注") private String remark; // 备注 - @ExcelProperty("提交人Id") +// @ExcelProperty("提交人Id") private Integer adminId; // 提交人Id - @ExcelProperty("提交人姓名") +// @ExcelProperty("提交人姓名") private String adminName; // 提交人姓名 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") - @ExcelProperty("创建时间") +// @ExcelProperty("创建时间") private Date payTime; // 创建时间 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") - @ExcelIgnore +// @ExcelIgnore private Date startTime; // 开始时间 - @ExcelIgnore +// @ExcelIgnore @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date endTime; // 结束时间 - @ExcelIgnore +// @ExcelIgnore private String sortField; //排序字段 - @ExcelIgnore +// @ExcelIgnore private String sortOrder; //排序顺序 private List markets; // 地区列表 diff --git a/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java index 405fecf..84929ec 100644 --- a/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java @@ -38,7 +38,6 @@ public class AdminServiceImpl implements AdminService { Admin adminInDB = adminMapper.getAdmin(account); System.out.println("adminInDB:" + adminInDB); - System.out.println("adminInDB markets: " + adminInDB.getMarkets()); // 添加日志检查 if (adminInDB == null) { throw new RuntimeException("无此精网号"); } diff --git a/src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java index 119bcf6..9abcc07 100644 --- a/src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java +++ b/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.write.metadata.WriteSheet; import com.example.demo.Util.ExcelUploadUtil; +import com.example.demo.Util.ExecutionContextUtil; import com.example.demo.Util.JWTUtil; import com.example.demo.controller.ConsumeController; import com.example.demo.controller.GoldDetailController; @@ -26,6 +27,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.example.demo.service.AiEmotionService; import com.github.pagehelper.PageInfo; +import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -41,6 +43,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.*; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.Date; import java.util.List; @@ -90,6 +93,8 @@ public class ExportExcelServiceImpl implements ExportExcelService { // 2. 获取基本参数 recordId = rootNode.path("recordId").asLong(); JsonNode requestDataNode = rootNode.path("requestData"); + JsonNode token = requestDataNode.path("token"); + String tokenValue = token.asText(); JsonNode goldDetailNode = requestDataNode.path("goldDetail"); GoldDetail goldDetail = objectMapper.treeToValue(goldDetailNode, GoldDetail.class); @@ -105,50 +110,56 @@ public class ExportExcelServiceImpl implements ExportExcelService { outputStream = new FileOutputStream(tempFile); // 使用文件输出流 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 从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; - 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 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 { // 6. 初始化Excel写入器(指向本地文件流) - excelWriter = initExcelWriter(outputStream, "user"); + excelWriter = EasyExcel.write(outputStream, GoldDetail.class).build(); WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); // 7. 分页查询并写入数据 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 markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); + if(!markets.contains("总部")) { + page.getGoldDetail().setMarkets(markets); + } + } page.setPageNum(1); page.setPageSize(5000); Integer totalCount = 0; - page.setGoldDetail(goldDetail); + boolean hasMore = true; while (hasMore) { - Result pageResult = goldDetailController.getGoldDetail(page); + Result pageResult = goldDetailController.ExcelGoldDetail(page); Integer code = pageResult.getCode(); Object data = pageResult.getData(); @@ -309,7 +320,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { @Override public Exception handleExcel(String message) throws Exception { System.out.println("明细导出excel数据开始执行:" + message); - long startTime = System.currentTimeMillis(); + long stTime = System.currentTimeMillis(); Long recordId = null; String fileName = null; File tempFile = null; @@ -322,6 +333,8 @@ public class ExportExcelServiceImpl implements ExportExcelService { // 2. 获取基本参数 recordId = rootNode.path("recordId").asLong(); JsonNode requestDataNode = rootNode.path("requestData"); + JsonNode token = requestDataNode.path("token"); + String tokenValue = token.asText(); JsonNode userNode = requestDataNode.path("user"); User user = objectMapper.treeToValue(userNode, User.class); // 3. 验证导出记录 @@ -334,26 +347,61 @@ public class ExportExcelServiceImpl implements ExportExcelService { // 初始化临时文件(保存到本地临时目录) tempFile = File.createTempFile("export_", ".xlsx"); outputStream = new FileOutputStream(tempFile); // 使用文件输出流 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 从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; + 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 { // 6. 初始化Excel写入器(指向本地文件流) - excelWriter = ExcelWriter(outputStream, "user"); + excelWriter = EasyExcel.write(outputStream, User.class).build(); WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); // 7. 分页查询并写入数据 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 markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); + if(!markets.contains("总部")) { + page.getUser().setMarkets(markets); + } + } page.setPageNum(1); page.setPageSize(5000); - page.setUser(user); Integer totalCount = 0; boolean hasMore = true; while (hasMore) { - Result pageResult = goldDetailController.getGold(page); + Result pageResult = goldDetailController.ExcelGold(page); Integer code = pageResult.getCode(); Object data = pageResult.getData(); @@ -502,8 +550,8 @@ public class ExportExcelServiceImpl implements ExportExcelService { throw new Exception("删除临时文件失败", e); } } - long endTime = System.currentTimeMillis(); - log.info("导出任务完成,耗时: {}毫秒", (endTime - startTime)); + long eTime = System.currentTimeMillis(); + log.info("导出任务完成,耗时: {}毫秒", (eTime - stTime)); } return null; } @@ -548,7 +596,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { try { // 6. 初始化Excel写入器(指向本地文件流) try { - excelWriter = EasyExcel.write(outputStream, GoldDetail.class).build(); + excelWriter = EasyExcel.write(outputStream, RechargeUser.class).build(); } catch (Exception e) { log.error("Excel 写入器初始化失败", e); throw new RuntimeException("Excel 写入器初始化失败", e); @@ -763,7 +811,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { try { // 6. 初始化Excel写入器(指向本地文件流) - excelWriter = ConExcelWriter(outputStream, "user"); + excelWriter = EasyExcel.write(outputStream, ConsumeUser.class).build(); WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); // 7. 分页查询并写入数据 Page page = new Page(); @@ -969,14 +1017,10 @@ public class ExportExcelServiceImpl implements ExportExcelService { tempFile = File.createTempFile("export_", ".xlsx"); outputStream = new FileOutputStream(tempFile); // 使用文件输出流 // 从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 { // 6. 初始化Excel写入器(指向本地文件流) - excelWriter = RefundExcelWriter(outputStream, "user"); + excelWriter = EasyExcel.write(outputStream, RefundUser.class).build(); WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); // 7. 分页查询并写入数据 Page page = new Page(); diff --git a/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java index cb31373..f1fc02c 100644 --- a/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java @@ -49,6 +49,7 @@ public class GoldDetailServiceImpl implements GoldDetailService { @Override public PageInfo getGoldDetail(Integer pageNum, Integer pageSize, GoldDetail goldDetail) { PageHelper.startPage(pageNum, pageSize); + System.out.println(goldDetail.getMarkets()); List list = goldDetailMapper.getGoldDetail(goldDetail); return new PageInfo<>(list); } @@ -157,7 +158,9 @@ public class GoldDetailServiceImpl implements GoldDetailService { exportData.put("recordId", recordId); // 手动构造请求数据(避免 toString() 只返回部分字段) + Map headers = new HashMap<>(); Map requestData = new HashMap<>(); + requestData.put("token", token); requestData.put("goldDetail", dto.getGoldDetail()); exportData.put("requestData", requestData); @@ -212,6 +215,7 @@ public class GoldDetailServiceImpl implements GoldDetailService { // 手动构造请求数据(避免 toString() 只返回部分字段) Map requestData = new HashMap<>(); + requestData.put("token", token); requestData.put("user", dto.getUser()); exportData.put("requestData", requestData); diff --git a/src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java index 7e792e1..805d9f5 100644 --- a/src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java +++ b/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.service.MenuService; import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 93468e1..6af4432 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -4,9 +4,9 @@ spring: fail-on-unknown-properties: false datasource: 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 hikari: pool-name: mysql1HikariCP @@ -69,7 +69,7 @@ spring: database: 0 host: localhost port: 6379 -# password: Ngc0FYUTA6h3wC5J + password: 123456 lettuce: pool: diff --git a/src/main/resources/mapper/GoldDetailMapper.xml b/src/main/resources/mapper/GoldDetailMapper.xml index c827bbd..018605a 100644 --- a/src/main/resources/mapper/GoldDetailMapper.xml +++ b/src/main/resources/mapper/GoldDetailMapper.xml @@ -24,8 +24,11 @@ and `ugr`.type = #{type} - - and `user`.market = #{market} + + AND user.market IN + + #{markets} + and ugr.`audit_time` BETWEEN #{startTime} AND #{endTime} @@ -56,8 +59,11 @@ and `ugr`.type = #{type} - - and `user`.market = #{market} + + AND user.market IN + + #{market} + and ugr.`audit_time` BETWEEN #{startTime} AND #{endTime} @@ -71,8 +77,11 @@ and jwcode = #{jwcode} - - and market = #{market} + + AND user.market IN + + #{markets} + @@ -95,8 +104,11 @@ and jwcode = #{jwcode} - - and market = #{market} + + AND user.market IN + + #{markets} + @@ -116,8 +128,11 @@ and `ugr`.type = #{type} - - and `user`.market = #{market} + + AND user.market IN + + #{markets} + and ugr.`audit_time` BETWEEN #{startTime} AND #{endTime}