diff --git a/src/main/java/com/wms/controller/ExcelController.java b/src/main/java/com/wms/controller/ExcelController.java index 9c6ee31..28cde1c 100644 --- a/src/main/java/com/wms/controller/ExcelController.java +++ b/src/main/java/com/wms/controller/ExcelController.java @@ -181,7 +181,7 @@ public class ExcelController { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); uploadFileHashStringList.remove(fileVo.getHash()); response.setCode(ResponseCode.ERROR.getCode()); - response.setMessage("导入工作日历异常。"); + response.setMessage("导入工作日历异常:" + e.getMessage()); return convertJsonString(response); } } @@ -222,7 +222,7 @@ public class ExcelController { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); uploadFileHashStringList.remove(fileVo.getHash()); response.setCode(ResponseCode.ERROR.getCode()); - response.setMessage("导入DBS异常。"); + response.setMessage("导入DBS异常:" + e.getMessage()); return convertJsonString(response); } } @@ -263,7 +263,7 @@ public class ExcelController { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); uploadFileHashStringList.remove(fileVo.getHash()); response.setCode(ResponseCode.ERROR.getCode()); - response.setMessage("导入工单异常。"); + response.setMessage("导入工单异常:" + e.getMessage()); return convertJsonString(response); } } @@ -804,6 +804,36 @@ public class ExcelController { .sheet("工作分析报表") .doWrite(goodsList.stream().map(WorkSummaryExcelVo::of).toList()); } + + /** + * 导出工单 + * + * @param response 请求 + */ + @PostMapping("/downloadKateOrdersExcel") + @ResponseBody + public void downloadKateOrdersExcel(@RequestBody KateOrdersQuery kateOrdersQuery, HttpServletResponse response) throws IOException { + logger.info("导出工单,筛选参数:{},请求ip:{}", convertJsonString(kateOrdersQuery), getIpAddr(servletRequest)); + //设置响应格式 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + String fileName = URLEncoder.encode("工单报表", StandardCharsets.UTF_8).replaceAll("\\+", "%20"); + response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + // 内容样式 + HorizontalCellStyleStrategy horizontalCellStyleStrategy = ExcelContentStyle.getContentStyle(); + // 查询参数 + LambdaQueryWrapper kateOrdersLamdaQueryWrapper = new LambdaQueryWrapper() + .eq(kateOrdersQuery.getPlanStartDate() != null, KateOrders::getPlanStartDate, kateOrdersQuery.getPlanStartDate()) + .eq(kateOrdersQuery.getOrderStatus() != null, KateOrders::getOrderStatus, kateOrdersQuery.getOrderStatus()); + List kateOrdersList = kateOrdersService.list(kateOrdersLamdaQueryWrapper); + EasyExcel.write(response.getOutputStream(), KateOrdersExcelVo.class) + .excelType(ExcelTypeEnum.XLSX) + .registerWriteHandler(horizontalCellStyleStrategy) + .sheet("工单报表") + .doWrite(kateOrdersList.stream().map(KateOrdersExcelVo::of).toList()); + } + /** * 导出工作流总结 * diff --git a/src/main/java/com/wms/controller/KateWorkQueryController.java b/src/main/java/com/wms/controller/KateWorkQueryController.java index 5db6316..c928c48 100644 --- a/src/main/java/com/wms/controller/KateWorkQueryController.java +++ b/src/main/java/com/wms/controller/KateWorkQueryController.java @@ -964,7 +964,7 @@ public class KateWorkQueryController { */ @PostMapping("/queryWorkDate") @ResponseBody - public String getOrders(@RequestBody WorkDateQuery workDateQuery) { + public String queryWorkDate(@RequestBody WorkDateQuery workDateQuery) { logger.info("接收到查询工作日历请求:{},请求ip:{}", convertJsonString(workDateQuery), HttpUtils.getIpAddr(servletRequest)); ResponseEntity response = new ResponseEntity(); try { @@ -977,17 +977,23 @@ public class KateWorkQueryController { if (workDateQuery.getSourceType() == 1) { // 查询当前正在使用的 List workDateVoList = new ArrayList<>(); - int index = 1; + int index = 0; for (LocalDate workDate : localWorkDateList) { + index++; + if (workDateQuery.getWorkDate() != null && !workDate.equals(workDateQuery.getWorkDate())) { + // 此处用于查询工作日期 + continue; + } WorkDateVo workDateVo = new WorkDateVo(); workDateVo.setKeyId(index); workDateVo.setWorkDate(workDate); workDateVoList.add(workDateVo); - index++; } + // 获取分页信息 + PageDto pageDto = PageDto.ofList(workDateVoList.size(), (workDateVoList.size() + workDateQuery.getPageSize()) / workDateQuery.getPageSize(), workDateQuery.getPageNo(), workDateQuery.getPageSize(), workDateVoList); response.setCode(ResponseCode.OK.getCode()); response.setMessage("查询工作日历成功"); - response.setReturnData(workDateVoList); + response.setReturnData(pageDto); return convertJsonString(response); } else if (workDateQuery.getSourceType() == 2) { // 查询数据库 diff --git a/src/main/java/com/wms/entity/app/dto/PageDto.java b/src/main/java/com/wms/entity/app/dto/PageDto.java index 5996657..dea1456 100644 --- a/src/main/java/com/wms/entity/app/dto/PageDto.java +++ b/src/main/java/com/wms/entity/app/dto/PageDto.java @@ -40,4 +40,26 @@ public class PageDto { pageDto.setLists(page.getRecords().stream().map(converter).toList()); return pageDto; } + + /** + * 将列表集合转换为分页结果 + * @param total 总数 + * @param pages 总页数 + * @param voList 列表集合 + * @return + * @param + */ + public static PageDto ofList(long total, long pages, long pageNo, long pageSize, List voList) { + PageDto pageDto = new PageDto<>(); + // 设置总数 + pageDto.setTotal(total); + // 设置总页数 + pageDto.setPages(pages); + if (voList.isEmpty()) { + pageDto.setLists(Collections.emptyList()); + return pageDto; + } + pageDto.setLists(voList.subList((int) ((pageNo - 1) * pageSize), (int) Math.min(pageNo * pageSize, total))); + return pageDto; + } } diff --git a/src/main/java/com/wms/utils/excel/listener/UploadDbsListener.java b/src/main/java/com/wms/utils/excel/listener/UploadDbsListener.java index c1607f1..7e6275f 100644 --- a/src/main/java/com/wms/utils/excel/listener/UploadDbsListener.java +++ b/src/main/java/com/wms/utils/excel/listener/UploadDbsListener.java @@ -53,7 +53,7 @@ public class UploadDbsListener implements ReadListener { public void onException(Exception exception, AnalysisContext context) throws Exception { int rowCount = context.readRowHolder().getRowIndex() + 1; logger.error("处理Dbs数据发生异常,第{}行发生异常。", rowCount); - throw new Exception("第" + rowCount + "行数据异常。" + exception.getMessage()); + throw new Exception("第" + rowCount + "行数据异常," + exception.getMessage()); } /** @@ -74,7 +74,7 @@ public class UploadDbsListener implements ReadListener { if (indexOfCurrentDate == -1) { // 工作日不包含此开工日期 logger.error("第{}行DBS开工日期为非工作日。", rowCount); - throw new RuntimeException("第" + rowCount + "行DBS开工日期为非工作日。"); + throw new RuntimeException("第" + rowCount + "行DBS开工日期" + kateDbsExcelVo.getPlanStartDate().toLocalDate() + "为非工作日。"); } cachedDataList.add(kateDbsExcelVo); } diff --git a/src/main/java/com/wms/utils/excel/listener/UploadKateOrdersListener.java b/src/main/java/com/wms/utils/excel/listener/UploadKateOrdersListener.java index a6e0949..a3d7e94 100644 --- a/src/main/java/com/wms/utils/excel/listener/UploadKateOrdersListener.java +++ b/src/main/java/com/wms/utils/excel/listener/UploadKateOrdersListener.java @@ -53,7 +53,7 @@ public class UploadKateOrdersListener implements ReadListener public void onException(Exception exception, AnalysisContext context) throws Exception { int rowCount = context.readRowHolder().getRowIndex() + 1; logger.error("处理工单数据发生异常,第{}行发生异常。", rowCount); - throw new Exception("第" + rowCount + "行数据异常。" + exception.getMessage()); + throw new Exception("第" + rowCount + "行数据异常," + exception.getMessage()); } /** @@ -79,14 +79,14 @@ public class UploadKateOrdersListener implements ReadListener if (indexOfCurrentDate == -1) { // 工作日不包含此开工日期 logger.error("第{}行工单需求日期为非工作日。", rowCount); - throw new RuntimeException("第" + rowCount + "行工单需求日期为非工作日。"); + throw new RuntimeException("第" + rowCount + "行工单需求日期" + kateOrdersExcelVo.getPlanStartDate() + "为非工作日。"); } cachedDataList.add(kateOrdersExcelVo); } - if (!isAddReqmtDate) { + if (isAddReqmtDate) { // 缺少开工日期 - logger.error("第{}行工单缺少开工日期。", rowCount); - throw new RuntimeException("第" + rowCount + "行工单缺少开工日期。"); + logger.error("第{}行工单缺少需求日期。", rowCount); + throw new RuntimeException("第" + rowCount + "行工单缺少需求日期。"); } } }