no message
							parent
							
								
									4aa8f25ae8
								
							
						
					
					
						commit
						07057ceed7
					
				| 
						 | 
				
			
			@ -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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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<ItemsExcelVO> 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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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<ItemEntity> {
 | 
			
		|||
     */
 | 
			
		||||
    List<ItemVO> queryPage(Page page, @Param("queryForm") ItemQueryForm queryForm);
 | 
			
		||||
 | 
			
		||||
    //游标分页
 | 
			
		||||
    List<ItemVO> listByCursor(@Param("lastId") Long lastId, @Param("pageSize") int pageSize);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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("物料编码")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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<ItemsExcelVO>
 | 
			
		||||
     */
 | 
			
		||||
    List<ItemsExcelVO> queryItemsExcelVO();
 | 
			
		||||
 | 
			
		||||
    void exportItem(String taskId, HttpServletResponse response);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,5 +33,18 @@
 | 
			
		|||
        ORDER BY t_item.item_code
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
    <select id="listByCursor" resultType="net.lab1024.sa.admin.module.business.wms.base.item.domain.vo.ItemVO">
 | 
			
		||||
        SELECT t_item.item_id,
 | 
			
		||||
               t_item.item_code,
 | 
			
		||||
               t_item.item_name,
 | 
			
		||||
               t_item.item_type,
 | 
			
		||||
               t_item.unit,
 | 
			
		||||
               t_item.disabled_flag
 | 
			
		||||
        FROM t_item
 | 
			
		||||
        WHERE t_item.item_id > #{lastId}
 | 
			
		||||
        ORDER BY t_item.item_id ASC -- 必须升序
 | 
			
		||||
            LIMIT #{pageSize}
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -106,7 +106,7 @@
 | 
			
		|||
            <AppenderRef ref="druidSlowSqlLog"/>
 | 
			
		||||
        </logger>
 | 
			
		||||
 | 
			
		||||
        <Root level="warn">
 | 
			
		||||
        <Root level="error">
 | 
			
		||||
            <AppenderRef ref="Console"/>
 | 
			
		||||
            <AppenderRef ref="debug"/>
 | 
			
		||||
            <AppenderRef ref="info"/>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue