diff --git a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/address/controller/AddressController.java b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/address/controller/AddressController.java index d482fdb..33b673b 100644 --- a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/address/controller/AddressController.java +++ b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/address/controller/AddressController.java @@ -2,6 +2,7 @@ package net.lab1024.sa.admin.module.business.wms.base.address.controller; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.module.business.wms.base.address.domain.entity.AddressEntity; import net.lab1024.sa.admin.module.business.wms.base.address.domain.form.AddressAddForm; import net.lab1024.sa.admin.module.business.wms.base.address.domain.form.AddressQueryForm; @@ -31,6 +32,8 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; +import static java.lang.Thread.sleep; + /** * 收货地址 Controller * @@ -41,6 +44,7 @@ import java.util.List; @RestController @Tag(name = "收货地址") +@Slf4j public class AddressController { @Resource @@ -124,6 +128,17 @@ public class AddressController { @GetMapping("/address/exportAddress/{taskId}") @SaCheckPermission("address:exportAddress") public void exportAddress(@PathVariable String taskId, HttpServletResponse response) { + long startTime = System.currentTimeMillis(); addressQueryService.exportAddress(taskId, response); + long endTime = System.currentTimeMillis(); + log.info("导出地址数据完成,耗时:{}ms", endTime - startTime); + if (endTime - startTime <= 1000) { + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + log.error("异常", e); + } + } + exportTaskService.cleanupTask(taskId); } } diff --git a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/address/service/impl/AddressQueryServiceImpl.java b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/address/service/impl/AddressQueryServiceImpl.java index 538d580..1530471 100644 --- a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/address/service/impl/AddressQueryServiceImpl.java +++ b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/address/service/impl/AddressQueryServiceImpl.java @@ -14,24 +14,16 @@ import net.lab1024.sa.admin.module.business.wms.base.address.domain.vo.AddressEx import net.lab1024.sa.admin.module.business.wms.base.address.domain.vo.AddressVO; import net.lab1024.sa.admin.module.business.wms.base.address.manager.AddressManager; import net.lab1024.sa.admin.module.business.wms.base.address.service.AddressQueryService; -import net.lab1024.sa.admin.module.business.wms.base.item.domain.vo.ItemsExcelVO; import net.lab1024.sa.admin.module.business.wms.excel.ExportTaskService; import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.exception.BusinessException; import net.lab1024.sa.base.common.util.SmartExcelUtil; import net.lab1024.sa.base.common.util.SmartPageUtil; -import net.lab1024.sa.base.common.util.SmartResponseUtil; -import net.lab1024.sa.base.module.support.dict.constant.DictConst; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.cursor.Cursor; -import org.apache.poi.ss.usermodel.IndexedColors; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; import java.util.*; import java.util.stream.Collectors; @@ -239,7 +231,7 @@ public class AddressQueryServiceImpl implements AddressQueryService { exportTaskService.updateProgress(taskId, -1); } finally { exportTaskService.updateProgress(taskId, 100); - exportTaskService.cleanupTask(taskId); + } } } diff --git a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/controller/ItemController.java b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/controller/ItemController.java index f8fdefa..39d3824 100644 --- a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/controller/ItemController.java +++ b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/controller/ItemController.java @@ -1,6 +1,7 @@ package net.lab1024.sa.admin.module.business.wms.base.item.controller; import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.module.business.wms.base.item.domain.entity.ItemEntity; import net.lab1024.sa.admin.module.business.wms.base.item.domain.form.ItemAddForm; import net.lab1024.sa.admin.module.business.wms.base.item.domain.form.ItemQueryForm; @@ -14,6 +15,7 @@ import net.lab1024.sa.admin.module.business.wms.base.item.domain.form.ItemAddFor import net.lab1024.sa.admin.module.business.wms.base.item.domain.form.ItemQueryForm; import net.lab1024.sa.admin.module.business.wms.base.item.service.ItemQueryService; import net.lab1024.sa.admin.module.business.wms.base.item.service.ItemService; +import net.lab1024.sa.admin.module.business.wms.excel.ExportTaskService; import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.domain.RequestUser; import net.lab1024.sa.base.common.domain.ValidateList; @@ -36,12 +38,13 @@ import java.util.List; * 物料信息 Controller * * @author 霍锦 - * @since 2024-11-25 17:08:18 + * @since 2024-11-25 17:08:18 * copyright 友仓 */ @RestController @Tag(name = "物料信息") +@Slf4j public class ItemController { @Resource @@ -50,6 +53,9 @@ public class ItemController { @Resource private ItemQueryService itemQueryService; + @Resource + private ExportTaskService exportTaskService; + @Operation(summary = "分页查询 @author 霍锦") @PostMapping("/item/queryPage") @SaCheckPermission("item:query") @@ -107,11 +113,20 @@ public class ItemController { } @Operation(summary = "导出 霍锦") - @GetMapping("/item/exportItems") + @GetMapping("/item/exportItems/{taskId}") @SaCheckPermission("item:exportItems") @OperateLog - public void exportItems(HttpServletResponse response) throws IOException { - List itemsList = itemQueryService.queryItemsExcelVO(); - SmartExcelUtil.exportExcel(response, "物料信息.xlsx", "物料", ItemsExcelVO.class, itemsList); + public void exportItems(@PathVariable String taskId, HttpServletResponse response){ + long startTime = System.currentTimeMillis(); + itemQueryService.exportItem(taskId, response); + log.info("导出物料数据完成,耗时:{}ms", System.currentTimeMillis() - startTime); + if (System.currentTimeMillis() - startTime <= 1000) { + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + log.error("异常", e); + } + } + exportTaskService.cleanupTask(taskId); } } diff --git a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/dao/ItemDao.java b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/dao/ItemDao.java index 734de60..f7166db 100644 --- a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/dao/ItemDao.java +++ b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/dao/ItemDao.java @@ -1,6 +1,8 @@ package net.lab1024.sa.admin.module.business.wms.base.item.dao; import java.util.List; + +import net.lab1024.sa.admin.module.business.wms.base.address.domain.vo.AddressVO; import net.lab1024.sa.admin.module.business.wms.base.item.domain.entity.ItemEntity; import net.lab1024.sa.admin.module.business.wms.base.item.domain.form.ItemQueryForm; import net.lab1024.sa.admin.module.business.wms.base.item.domain.vo.ItemVO; @@ -31,4 +33,7 @@ public interface ItemDao extends BaseMapper { */ List queryPage(Page page, @Param("queryForm") ItemQueryForm queryForm); + //游标分页 + List listByCursor(@Param("lastId") Long lastId, @Param("pageSize") int pageSize); + } diff --git a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/domain/vo/ItemsExcelVO.java b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/domain/vo/ItemsExcelVO.java index 5031481..c487e27 100644 --- a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/domain/vo/ItemsExcelVO.java +++ b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/domain/vo/ItemsExcelVO.java @@ -1,6 +1,7 @@ package net.lab1024.sa.admin.module.business.wms.base.item.domain.vo; import cn.idev.excel.annotation.ExcelProperty; +import cn.idev.excel.annotation.write.style.ColumnWidth; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -10,6 +11,7 @@ import lombok.NoArgsConstructor; @Builder @AllArgsConstructor @NoArgsConstructor +@ColumnWidth(20) public class ItemsExcelVO { @ExcelProperty("物料编码") diff --git a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/service/ItemQueryService.java b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/service/ItemQueryService.java index 2a3c300..0d7df87 100644 --- a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/service/ItemQueryService.java +++ b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/service/ItemQueryService.java @@ -1,5 +1,6 @@ package net.lab1024.sa.admin.module.business.wms.base.item.service; +import jakarta.servlet.http.HttpServletResponse; import net.lab1024.sa.admin.module.business.wms.base.item.domain.entity.ItemEntity; import net.lab1024.sa.admin.module.business.wms.base.item.domain.form.ItemQueryForm; import net.lab1024.sa.admin.module.business.wms.base.item.domain.form.ItemSelect; @@ -67,4 +68,6 @@ public interface ItemQueryService { * @return List */ List queryItemsExcelVO(); + + void exportItem(String taskId, HttpServletResponse response); } diff --git a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/service/impl/ItemQueryServiceImpl.java b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/service/impl/ItemQueryServiceImpl.java index 5db88c6..12c725c 100644 --- a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/service/impl/ItemQueryServiceImpl.java +++ b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/base/item/service/impl/ItemQueryServiceImpl.java @@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Maps; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import net.lab1024.sa.admin.module.business.wms.base.address.domain.vo.AddressExcelVO; +import net.lab1024.sa.admin.module.business.wms.base.address.domain.vo.AddressVO; import net.lab1024.sa.admin.module.business.wms.base.item.dao.ItemDao; import net.lab1024.sa.admin.module.business.wms.base.item.domain.entity.ItemEntity; import net.lab1024.sa.admin.module.business.wms.base.item.domain.form.ItemQueryForm; @@ -12,7 +15,9 @@ import net.lab1024.sa.admin.module.business.wms.base.item.domain.vo.ItemVO; import net.lab1024.sa.admin.module.business.wms.base.item.domain.vo.ItemsExcelVO; import net.lab1024.sa.admin.module.business.wms.base.item.manager.ItemManager; import net.lab1024.sa.admin.module.business.wms.base.item.service.ItemQueryService; +import net.lab1024.sa.admin.module.business.wms.excel.ExportTaskService; import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.util.SmartExcelUtil; import net.lab1024.sa.base.common.util.SmartPageUtil; import net.lab1024.sa.base.module.support.dict.constant.DictConst; import net.lab1024.sa.base.module.support.dict.service.DictService; @@ -38,6 +43,9 @@ public class ItemQueryServiceImpl implements ItemQueryService { @Resource private DictService dictService; + @Resource + private ExportTaskService exportTaskService; + /** * 分页查询 * @@ -158,4 +166,32 @@ public class ItemQueryServiceImpl implements ItemQueryService { ) .collect(Collectors.toList()); } + + public void exportItem(String taskId, HttpServletResponse response){ + try { + SmartExcelUtil.batchExportExcel( + response, + "物料信息.xlsx", + "物料信息", + ItemsExcelVO.class, + taskId, + itemManager.count(), + (lastId, pageSize) -> itemDao.listByCursor(lastId, pageSize), + item -> ItemsExcelVO.builder() + .itemCode(item.getItemCode()) + .itemName(item.getItemName()) + .itemType(dictService.getDictDataLabel(DictConst.ITEM_TYPE.getValue(), item.getItemType())) + .unit(dictService.getDictDataLabel(DictConst.ITEM_UNIT.getValue(), item.getUnit())) + .disabledFlag(item.getDisabledFlag() ? "启用" : "禁用") + .build(), + ItemVO::getItemId, + 2000, + (processed, progress) -> exportTaskService.updateProgress(taskId, progress) + ); + } catch (Exception e) { + exportTaskService.updateProgress(taskId, -1); + } finally { + exportTaskService.updateProgress(taskId, 100); + } + } } diff --git a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/excel/ExportTaskService.java b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/excel/ExportTaskService.java index 88883c4..47e67ba 100644 --- a/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/excel/ExportTaskService.java +++ b/nc_wms_java/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/wms/excel/ExportTaskService.java @@ -25,7 +25,7 @@ public class ExportTaskService { } public Long getProgress(String taskId) { - return progressMap.getOrDefault(taskId, -1L); + return progressMap.getOrDefault(taskId, 0L); } public void cleanupTask(String taskId) { diff --git a/nc_wms_java/sa-admin/src/main/resources/mapper/business/wms/base/item/ItemMapper.xml b/nc_wms_java/sa-admin/src/main/resources/mapper/business/wms/base/item/ItemMapper.xml index 2f0faa4..d80daa6 100644 --- a/nc_wms_java/sa-admin/src/main/resources/mapper/business/wms/base/item/ItemMapper.xml +++ b/nc_wms_java/sa-admin/src/main/resources/mapper/business/wms/base/item/ItemMapper.xml @@ -33,5 +33,18 @@ ORDER BY t_item.item_code + + diff --git a/nc_wms_java/sa-admin/src/main/resources/prod/log4j2-spring.xml b/nc_wms_java/sa-admin/src/main/resources/prod/log4j2-spring.xml index e0b752b..efb5e7d 100644 --- a/nc_wms_java/sa-admin/src/main/resources/prod/log4j2-spring.xml +++ b/nc_wms_java/sa-admin/src/main/resources/prod/log4j2-spring.xml @@ -106,7 +106,7 @@ - +