no message

main
HUOJIN\92525 2025-05-12 15:12:20 +08:00
parent af7aa0a046
commit 0af18033e9
16 changed files with 263 additions and 21 deletions

View File

@ -71,10 +71,17 @@ public interface ItemQueryService {
List<ItemsExcelVO> queryItemsExcelVO();
/**
*
* @return
*
* @param queryForm
* @return long
*/
long itemCount(ItemQueryForm queryForm);
/**
*
* @param taskId ID
* @param queryForm
* @param response
*/
void exportItem(String taskId, ItemQueryForm queryForm, HttpServletResponse response);
}

View File

@ -6,9 +6,9 @@ import net.lab1024.sa.admin.module.business.wms.base.location.domain.form.*;
import net.lab1024.sa.admin.module.business.wms.base.location.domain.vo.LocationVO;
import net.lab1024.sa.admin.module.business.wms.base.location.service.LocationQueryService;
import net.lab1024.sa.admin.module.business.wms.base.location.service.LocationService;
import net.lab1024.sa.admin.module.business.wms.excel.ExportTaskService;
import net.lab1024.sa.base.common.domain.RequestUser;
import net.lab1024.sa.base.common.domain.ValidateList;
import net.lab1024.sa.base.common.util.SmartExcelUtil;
import net.lab1024.sa.base.common.util.SmartRequestUtil;
import net.lab1024.sa.base.module.support.operatelog.annotation.OperateLog;
import org.springframework.web.bind.annotation.*;
@ -42,6 +42,9 @@ public class LocationController {
@Resource
private LocationQueryService locationQueryService;
@Resource
private ExportTaskService exportTaskService;
@Operation(summary = "分页查询 @author 霍锦")
@PostMapping("/location/queryPage")
@SaCheckPermission("location:query")
@ -115,12 +118,12 @@ public class LocationController {
}
@Operation(summary = "导出 霍锦")
@GetMapping("/location/exportLocations")
@PostMapping("/location/exportLocations/{taskId}")
@SaCheckPermission("location:exportLocations")
@OperateLog
public void exportLocations(HttpServletResponse response) throws IOException {
List<LocationsExcelVO> locationsList = locationQueryService.queryLocationsExcelVO();
SmartExcelUtil.exportExcel(response, "库位信息.xlsx", "库位", LocationsExcelVO.class, locationsList);
public void exportLocations(@PathVariable String taskId, @RequestBody @Valid LocationQueryForm queryForm, HttpServletResponse response) {
locationQueryService.exportLocation(taskId, queryForm, response);
exportTaskService.cleanupTask(taskId);
}
}

View File

@ -1,6 +1,9 @@
package net.lab1024.sa.admin.module.business.wms.base.location.dao;
import java.util.List;
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;
import net.lab1024.sa.admin.module.business.wms.base.location.domain.entity.LocationEntity;
import net.lab1024.sa.admin.module.business.wms.base.location.domain.form.LocationQueryForm;
import net.lab1024.sa.admin.module.business.wms.base.location.domain.vo.LocationVO;
@ -33,4 +36,7 @@ public interface LocationDao extends BaseMapper<LocationEntity> {
*/
List<LocationVO> queryPage(Page page, @Param("queryForm") LocationQueryForm queryForm);
//游标分页
List<LocationVO> listByCursor(@Param("lastId") Long lastId, @Param("pageSize") int pageSize,@Param("queryForm") LocationQueryForm queryForm);
}

View File

@ -1,6 +1,7 @@
package net.lab1024.sa.admin.module.business.wms.base.location.domain.form;
import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.write.style.ColumnWidth;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -12,6 +13,7 @@ import java.math.BigDecimal;
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ColumnWidth(20)
public class LocationsExcelVO {
@ExcelProperty("库区")
private String areaName;

View File

@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.business.wms.base.location.service;
import jakarta.servlet.http.HttpServletResponse;
import net.lab1024.sa.admin.module.business.wms.base.location.domain.entity.LocationEntity;
import net.lab1024.sa.admin.module.business.wms.base.location.domain.form.LocationQueryForm;
import net.lab1024.sa.admin.module.business.wms.base.location.domain.form.LocationSelect;
@ -7,6 +8,7 @@ import net.lab1024.sa.admin.module.business.wms.base.location.domain.form.Locati
import net.lab1024.sa.admin.module.business.wms.base.location.domain.vo.LocationVO;
import net.lab1024.sa.base.common.domain.PageResult;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@ -83,4 +85,19 @@ public interface LocationQueryService {
*/
List<LocationsExcelVO> queryLocationsExcelVO();
/**
*
* @param queryForm
* @return long
*/
long locationCount(LocationQueryForm queryForm);
/**
*
* @param taskId ID
* @param queryForm
* @param response
*/
void exportLocation(String taskId, LocationQueryForm queryForm, HttpServletResponse response);
}

View File

@ -4,9 +4,10 @@ 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 lombok.extern.slf4j.Slf4j;
import net.lab1024.sa.admin.constant.UsageStatusEnum;
import net.lab1024.sa.admin.module.business.wms.base.area.domain.entity.AreaEntity;
import net.lab1024.sa.admin.module.business.wms.base.area.domain.form.AreaSelect;
import net.lab1024.sa.admin.module.business.wms.base.area.manager.AreaManager;
import net.lab1024.sa.admin.module.business.wms.base.area.service.AreaQueryService;
import net.lab1024.sa.admin.module.business.wms.base.location.dao.LocationDao;
@ -17,8 +18,10 @@ import net.lab1024.sa.admin.module.business.wms.base.location.domain.form.Locati
import net.lab1024.sa.admin.module.business.wms.base.location.domain.vo.LocationVO;
import net.lab1024.sa.admin.module.business.wms.base.location.manager.LocationManager;
import net.lab1024.sa.admin.module.business.wms.base.location.service.LocationQueryService;
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.SmartEnumUtil;
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;
@ -33,6 +36,7 @@ import java.util.Objects;
import java.util.stream.Collectors;
@Service
@Slf4j
public class LocationQueryServiceImpl implements LocationQueryService {
@Resource
@ -50,6 +54,9 @@ public class LocationQueryServiceImpl implements LocationQueryService {
@Resource
private DictService dictService;
@Resource
private ExportTaskService exportTaskService;
/**
*
*
@ -244,4 +251,51 @@ public class LocationQueryServiceImpl implements LocationQueryService {
}
@Override
public long locationCount(LocationQueryForm queryForm) {
LambdaQueryWrapper<LocationEntity> queryWrapper = new LambdaQueryWrapper<>();
if (queryForm.getAreaId() != null) {
queryWrapper.eq(LocationEntity::getAreaId, queryForm.getAreaId());
}
if (queryForm.getLocationId() != null) {
queryWrapper.eq(LocationEntity::getLocationId, queryForm.getLocationId());
}
if (StringUtils.isNotBlank(queryForm.getStatus())) {
queryWrapper.eq(LocationEntity::getStatus, queryForm.getStatus());
}
if (queryForm.getDisabledFlag() != null) {
queryWrapper.eq(LocationEntity::getDisabledFlag, queryForm.getDisabledFlag());
}
return locationManager.count(queryWrapper);
}
@Override
public void exportLocation(String taskId, LocationQueryForm queryForm, HttpServletResponse response) {
try {
SmartExcelUtil.batchExportExcel(
response,
"库位信息.xlsx",
"库位信息",
LocationsExcelVO.class,
taskId,
locationCount(queryForm),
(lastId, pageSize) -> locationDao.listByCursor(lastId, pageSize, queryForm),
location -> LocationsExcelVO.builder()
.areaName(areaManager.queryArea(location.getAreaId()).getAreaName())
.locationCode(location.getLocationCode())
.locationType(dictService.getDictDataLabel(DictConst.LOC_TYPE.getValue(), location.getLocationType()))
.status(SmartEnumUtil.getEnumDescByValue(location.getStatus(), UsageStatusEnum.class))
.disabledFlag(location.getDisabledFlag() ? "启用" : "禁用")
.build(),
LocationVO::getLocationId,
2000,
(processed, progress) -> exportTaskService.updateProgress(taskId, progress)
);
} catch (Exception e) {
exportTaskService.updateProgress(taskId, -1);
} finally {
exportTaskService.updateProgress(taskId, 100);
}
}
}

View File

@ -2,6 +2,7 @@ package net.lab1024.sa.admin.module.business.wms.base.stock.controller;
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;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.vo.ItemsExcelVO;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.entity.StockEntity;
@ -15,6 +16,7 @@ import net.lab1024.sa.admin.module.business.wms.base.stock.service.StockQuerySer
import net.lab1024.sa.admin.module.business.wms.base.stock.service.StockService;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.form.StockQueryForm;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.form.StockUpdateForm;
import net.lab1024.sa.admin.module.business.wms.excel.ExportTaskService;
import net.lab1024.sa.base.common.domain.RequestUser;
import net.lab1024.sa.base.common.domain.ValidateList;
import net.lab1024.sa.base.common.util.SmartExcelUtil;
@ -51,6 +53,9 @@ public class StockController {
@Resource
private StockQueryService stockQueryService;
@Resource
private ExportTaskService exportTaskService;
@Operation(summary = "分页查询 @author 霍锦")
@PostMapping("/stock/queryPage")
@SaCheckPermission("stock:query")
@ -108,11 +113,11 @@ public class StockController {
}
@Operation(summary = "导出 霍锦")
@GetMapping("/stock/exportStocks")
@PostMapping("/stock/exportStocks/{taskId}")
@SaCheckPermission("stock:exportStocks")
@OperateLog
public void stock(HttpServletResponse response) throws IOException {
List<StocksExcelVO> stocksList = stockQueryService.queryStocksExcelVO();
SmartExcelUtil.exportExcel(response, "容器信息.xlsx", "容器", StocksExcelVO.class, stocksList);
public void stock(@PathVariable String taskId, @RequestBody @Valid StockQueryForm queryForm, HttpServletResponse response){
stockQueryService.exportStock(taskId, queryForm, response);
exportTaskService.cleanupTask(taskId);
}
}

View File

@ -1,6 +1,9 @@
package net.lab1024.sa.admin.module.business.wms.base.stock.dao;
import java.util.List;
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;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.entity.StockEntity;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.form.StockQueryForm;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.vo.StockVO;
@ -33,4 +36,7 @@ public interface StockDao extends BaseMapper<StockEntity> {
*/
List<StockVO> queryPage(Page page, @Param("queryForm") StockQueryForm queryForm);
//游标分页
List<StockVO> listByCursor(@Param("lastId") Long lastId, @Param("pageSize") int pageSize, @Param("queryForm") StockQueryForm queryForm);
}

View File

@ -1,6 +1,8 @@
package net.lab1024.sa.admin.module.business.wms.base.stock.service;
import jakarta.servlet.http.HttpServletResponse;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.form.ItemQueryForm;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.entity.StockEntity;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.form.StockQueryForm;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.form.StockSelect;
@ -77,4 +79,20 @@ public interface StockQueryService {
* @return List<StocksExcelVO>
*/
List<StocksExcelVO> queryStocksExcelVO();
/**
*
* @param queryForm
* @return long
*/
long stockCount(StockQueryForm queryForm);
/**
*
* @param taskId ID
* @param queryForm
* @param response
*/
void exportStock(String taskId, StockQueryForm queryForm, HttpServletResponse response);
}

View File

@ -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.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.location.domain.entity.LocationEntity;
import net.lab1024.sa.admin.module.business.wms.base.location.manager.LocationManager;
import net.lab1024.sa.admin.module.business.wms.base.location.service.LocationQueryService;
@ -15,7 +18,9 @@ import net.lab1024.sa.admin.module.business.wms.base.stock.domain.vo.StockVO;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.vo.StocksExcelVO;
import net.lab1024.sa.admin.module.business.wms.base.stock.manager.StockManager;
import net.lab1024.sa.admin.module.business.wms.base.stock.service.StockQueryService;
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;
@ -46,6 +51,9 @@ public class StockQueryServiceImpl implements StockQueryService {
@Resource
private LocationQueryService locationQueryService;
@Resource
private ExportTaskService exportTaskService;
/**
*
*
@ -193,4 +201,51 @@ public class StockQueryServiceImpl implements StockQueryService {
)
.collect(Collectors.toList());
}
@Override
public long stockCount(StockQueryForm queryForm) {
LambdaQueryWrapper<StockEntity> queryWrapper = new LambdaQueryWrapper<>();
if (queryForm.getStockId() != null) {
queryWrapper.eq(StockEntity::getStockId, queryForm.getStockId());
}
if (queryForm.getLocationId() != null) {
queryWrapper.eq(StockEntity::getLocationId, queryForm.getLocationId());
}
if (StringUtils.isNotBlank(queryForm.getStatus())) {
queryWrapper.eq(StockEntity::getStatus, queryForm.getStatus());
}
if (queryForm.getDisabledFlag() != null) {
queryWrapper.eq(StockEntity::getDisabledFlag, queryForm.getDisabledFlag());
}
return stockManager.count(queryWrapper);
}
@Override
public void exportStock(String taskId, StockQueryForm queryForm, HttpServletResponse response) {
try {
SmartExcelUtil.batchExportExcel(
response,
"容器信息.xlsx",
"容器信息",
StocksExcelVO.class,
taskId,
stockCount(queryForm),
(lastId, pageSize) -> stockDao.listByCursor(lastId, pageSize, queryForm),
stock -> StocksExcelVO.builder()
.stockCode(stock.getStockCode())
.stockType(dictService.getDictDataLabel(DictConst.STOCK_TYPE.getValue(), stock.getStockType()))
.locationCode(locationManager.queryLocation(stock.getLocationId()) == null ? null : locationManager.queryLocation(stock.getLocationId()).getLocationCode())
.disabledFlag(stock.getDisabledFlag() ? "启用" : "禁用")
.build(),
StockVO::getStockId,
2000,
(processed, progress) -> exportTaskService.updateProgress(taskId, progress)
);
} catch (Exception e) {
exportTaskService.updateProgress(taskId, -1);
} finally {
exportTaskService.updateProgress(taskId, 100);
}
}
}

View File

@ -4,7 +4,6 @@ import jakarta.servlet.ServletOutputStream;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

View File

@ -42,11 +42,12 @@
</select>
<select id="listByCursor" resultType="net.lab1024.sa.admin.module.business.wms.base.address.domain.vo.AddressVO">
SELECT t_address.address_id,
t_address.name,
t_address.person,
t_address.telephone,
t_address.address
SELECT
t_address.address_id,
t_address.name,
t_address.person,
t_address.telephone,
t_address.address
FROM t_address
<where>
t_address.address_id > #{lastId}

View File

@ -37,7 +37,8 @@
</select>
<select id="listByCursor" resultType="net.lab1024.sa.admin.module.business.wms.base.item.domain.vo.ItemVO">
SELECT t_item.item_id,
SELECT
t_item.item_id,
t_item.item_code,
t_item.item_name,
t_item.item_type,

View File

@ -4,7 +4,10 @@
<!-- 查询结果列 -->
<sql id="base_columns">
t_location.location_id,
t_location
.
location_id
,
t_location.location_code,
t_location.location_name,
t_location.status,
@ -44,5 +47,36 @@
ORDER BY t_location.location_code
</select>
<select id="listByCursor" resultType="net.lab1024.sa.admin.module.business.wms.base.location.domain.vo.LocationVO">
SELECT
t_location.location_id,
t_location.area_id,
t_location.location_code,
t_location.status,
t_location.disabled_flag,
t_location.location_type
FROM t_location
<where>
t_location.location_id > #{lastId}
<if test="queryForm.areaId != null">
AND t_location.area_id=#{queryForm.areaId}
</if>
<!--库位-->
<if test="queryForm.locationId != null">
AND t_location.location_id=#{queryForm.locationId}
</if>
<!--状态-->
<if test="queryForm.status != null and queryForm.status != ''">
AND t_location.status=#{queryForm.status}
</if>
<!--是否启用-->
<if test="queryForm.disabledFlag != null">
AND t_location.disabled_flag=#{queryForm.disabledFlag}
</if>
</where>
ORDER BY t_location.location_id ASC -- 必须升序
LIMIT #{pageSize}
</select>
</mapper>

View File

@ -40,5 +40,38 @@
ORDER BY t_stock.stock_code
</select>
<select id="listByCursor" resultType="net.lab1024.sa.admin.module.business.wms.base.stock.domain.vo.StockVO">
SELECT
t_stock.stock_id,
t_stock.stock_code,
t_stock.location_id,
t_stock.disabled_flag,
t_stock.stock_type,
FROM t_stock
<where>
t_stock.stock_id > #{lastId}
<!--容器-->
<if test="queryForm.stockId != null ">
AND t_stock.stock_id=#{queryForm.stockId}
</if>
<!--库位-->
<if test="queryForm.locationId != null">
AND t_stock.location_id=#{queryForm.locationId}
</if>
<!--状态-->
<if test="queryForm.status != null and queryForm.status != ''">
AND t_stock.status=#{queryForm.status}
</if>
<!--是否启用-->
<if test="queryForm.disabledFlag != null">
AND t_stock.disabled_flag=#{queryForm.disabledFlag}
</if>
</where>
ORDER BY t_stock.stock_id ASC -- 必须升序
LIMIT #{pageSize}
</select>
</mapper>

View File

@ -46,6 +46,7 @@ import java.util.stream.Collectors;
* @Email lab1024@163.com
* @Copyright 1024 https://1024lab.net 2012-2024
*/
@Slf4j
public final class SmartExcelUtil {
/**
@ -113,7 +114,7 @@ public final class SmartExcelUtil {
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
System.out.println("异常" + e.getMessage());
log.error("异常:{}", e.getMessage());
}
}
excelWriter.finish();