导出优化

This commit is contained in:
chuzhichao 2023-05-05 12:03:48 +08:00
parent 4a646654cd
commit 36b559c7e8
6 changed files with 111 additions and 15 deletions

View File

@ -21,6 +21,11 @@
<artifactId>ruoyi-common</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>mybatis-plus-api</artifactId>

View File

@ -2,6 +2,7 @@ package com.cyl.wms.domain;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableField;
import com.cyl.wms.pojo.vo.PlaceAndItem;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
@ -50,4 +51,16 @@ public class Inventory extends BaseAudit implements PlaceAndItem {
@ApiModelProperty("删除标识")
private Integer delFlag;
@TableField(exist = false)
private String itemNo;
@TableField(exist = false)
private String itemName;
@TableField(exist = false)
private String warehouseName;
@TableField(exist = false)
private String areaName;
}

View File

@ -22,17 +22,19 @@ public class InventoryHistoryVO extends BaseAudit implements AreaAndItemInfo {
/**
* 操作id出库入库库存移动表单id
*/
@Excel(name = "操作id" , readConverterExp = "出库、入库、库存移动表单id" )
private Long formId;
/**
* 操作类型
*/
@Excel(name = "操作类型", handler = DictDealHandler.class, args = {"wms_receipt_type", "wms_shipment_type", "wms_movement_type"})
private Integer formType;
/**
* 操作类型名称
*/
@Excel(name = "操作类型")
private String formTypeName;
/**
* 物料ID
*/
@Excel(name = "物料ID" )
private Long itemId;
@Excel(name = "物料名称" )
private String itemName;
@ -41,15 +43,11 @@ public class InventoryHistoryVO extends BaseAudit implements AreaAndItemInfo {
/**
* 货架id
*/
@Excel(name = "货架id" )
private Long rackId;
@Excel(name = "货架名称" )
private String rackName;
@Excel(name = "仓库id" )
private Long warehouseId;
@Excel(name = "仓库名称" )
private String warehouseName;
@Excel(name = "库区id" )
private Long areaId;
@Excel(name = "库区名称" )

View File

@ -15,25 +15,24 @@ public class InventoryVO extends BaseAudit implements AreaAndItemInfo {
/** ID */
private Long id;
/** 物料ID */
@Excel(name = "物料ID")
private Long itemId;
// 物料名称
private String itemName;
// 物料编号
@Excel(name = "物料编码")
private String itemNo;
// 物料名称
@Excel(name = "物料名称")
private String itemName;
/** 货架id */
@Excel(name = "货架id")
private Long rackId;
// 货架 名称
private String rackName;
@Excel(name = "仓库id")
private Long warehouseId;
// 仓库 名称
@Excel(name = "仓库")
private String warehouseName;
@Excel(name = "库区id")
private Long areaId;
// 库区 名称
@Excel(name = "库区")
private String areaName;
/** 库存 */
@Excel(name = "库存")

View File

@ -53,6 +53,7 @@ public class InventoryHistoryService {
List<InventoryHistory> list = queryInventoryHistories(query);
List<InventoryHistoryVO> res = inventoryHistoryConvert.dos2vos(list);
inventoryService.injectAreaAndItemInfo(res);
inventoryService.injectDictDataLabel(res);
return res;
}

View File

@ -7,12 +7,15 @@ import com.cyl.wms.domain.*;
import com.cyl.wms.mapper.InventoryMapper;
import com.cyl.wms.pojo.query.InventoryQuery;
import com.cyl.wms.pojo.vo.AreaAndItemInfo;
import com.cyl.wms.pojo.vo.InventoryHistoryVO;
import com.cyl.wms.pojo.vo.InventoryVO;
import com.cyl.wms.pojo.vo.PlaceAndItem;
import com.github.pagehelper.PageHelper;
import com.ruoyi.common.constant.CommonConstant;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.SortUtil;
import com.ruoyi.system.service.ISysDictDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
@ -45,6 +48,8 @@ public class InventoryService {
private RackService rackService;
@Autowired
private ItemService itemService;
@Autowired
private ISysDictDataService sysDictDataService;
/**
* 查询库存
@ -89,7 +94,7 @@ public class InventoryService {
if (query.getQuantityEnd() != null) {
qw.le("quantity" , query.getQuantityEnd());
}
return inventoryMapper.selectList(qw);
return getInventoryList(qw);
}
/**
@ -144,6 +149,14 @@ public class InventoryService {
return inventoryMapper.updateDelFlagByIds(ids);
}
public List<Inventory> getInventoryList(QueryWrapper<Inventory> qw){
List<Inventory> items = inventoryMapper.selectList(qw);
injectItemNoAndItemName(items);
injectWarehouseName(items);
injectAreaName(items);
return items;
}
public boolean canOutStock(Long itemId, Long warehouseId, Long areaId, Long rackId, BigDecimal quantity) {
QueryWrapper<Inventory> qw = new QueryWrapper<>();
qw.eq("item_id" , itemId)
@ -334,4 +347,71 @@ public class InventoryService {
injectAreaAndItemInfo(res);
return res;
}
/**
* 注入物料编码和名称
*
* @param res 物料
*/
public void injectItemNoAndItemName(List<Inventory> res) {
if (CollUtil.isEmpty(res)) {
return;
}
Set<Long> items = res.stream().map(Inventory::getItemId).collect(Collectors.toSet());
Map<Long, Item> itemMap = itemService.selectByIdIn(items).stream().collect(Collectors.toMap(Item::getId, it -> it));
res.forEach(it -> {
if (it.getItemId() != null && itemMap.containsKey(it.getItemId())) {
it.setItemNo(itemMap.get(it.getItemId()).getItemNo());
it.setItemName(itemMap.get(it.getItemId()).getItemName());
}
});
}
/**
* 注入仓库名称
* @param res 物料
*/
public void injectWarehouseName(List<Inventory> res){
if (CollUtil.isEmpty(res)){
return;
}
Set<Long> warehouses = res.stream().map(Inventory::getWarehouseId).collect(Collectors.toSet());
Map<Long, Warehouse> warehouseMap = warehouseService.selectByIdIn(warehouses).stream().collect(Collectors.toMap(Warehouse::getId, it -> it));
res.forEach(it -> {
if (it.getWarehouseId() != null && warehouseMap.containsKey(it.getWarehouseId())){
it.setWarehouseName(warehouseMap.get(it.getWarehouseId()).getWarehouseName());
}
});
}
/**
* 注入库区名称
* @param res 物料
*/
public void injectAreaName(List<Inventory> res){
if (CollUtil.isEmpty(res)){
return;
}
Set<Long> areas = res.stream().map(Inventory::getAreaId).collect(Collectors.toSet());
Map<Long, Area> areaMap = areaService.selectByIdIn(areas).stream().collect(Collectors.toMap(Area::getId, it -> it));
res.forEach(it -> {
if (it.getAreaId() != null && areaMap.containsKey(it.getAreaId())){
it.setAreaName(areaMap.get(it.getAreaId()).getAreaName());
}
});
}
public void injectDictDataLabel(List<InventoryHistoryVO> res){
if (CollUtil.isEmpty(res)){
return;
}
Set<String> dictTypes = new HashSet<>();
dictTypes.add("wms_inventory_oper_type");
Map<String, SysDictData> sysDictDataMap = sysDictDataService.selectDictDataByTypes(dictTypes).stream().collect(Collectors.toMap(SysDictData::getDictValue, it -> it));
res.forEach(it -> {
if (it.getFormType() != null && sysDictDataMap.containsKey(String.valueOf(it.getFormType()))){
it.setFormTypeName(sysDictDataMap.get(String.valueOf(it.getFormType())).getDictLabel());
}
});
}
}