添加库存信息

main
HUOJIN\92525 2025-04-09 14:12:34 +08:00
parent 74a963ac66
commit 7c8f7d1c4a
7 changed files with 130 additions and 8 deletions

View File

@ -2,8 +2,10 @@ package net.lab1024.sa.admin.module.business.wms.base.stock.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Maps;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import net.lab1024.sa.admin.module.business.wms.base.area.domain.entity.AreaEntity; import net.lab1024.sa.admin.module.business.wms.base.area.domain.entity.AreaEntity;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.entity.ItemEntity;
import net.lab1024.sa.admin.module.business.wms.base.location.domain.entity.LocationEntity; import net.lab1024.sa.admin.module.business.wms.base.location.domain.entity.LocationEntity;
import net.lab1024.sa.admin.module.business.wms.base.location.domain.vo.LocationVO; 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.manager.LocationManager;
@ -20,6 +22,7 @@ import net.lab1024.sa.admin.module.business.wms.base.stock.domain.entity.StockEn
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.StockQueryForm;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.form.StockSelect; import net.lab1024.sa.admin.module.business.wms.base.stock.domain.form.StockSelect;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.vo.StocksExcelVO; 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.base.common.domain.PageResult; import net.lab1024.sa.base.common.domain.PageResult;
import net.lab1024.sa.base.common.util.SmartPageUtil; 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.constant.DictConst;
@ -42,6 +45,9 @@ public class StockQueryService {
@Resource @Resource
private LocationManager locationManager; private LocationManager locationManager;
@Resource
private StockManager stockManager;
@Resource @Resource
private DictService dictService; private DictService dictService;
@ -70,6 +76,27 @@ public class StockQueryService {
return SmartPageUtil.convert2PageResult(page, list); return SmartPageUtil.convert2PageResult(page, list);
} }
/**
* id
*
* @param stockIdList id
* @return Map<Long, StockEntity>
*/
public Map<Long, StockEntity> queryStockList(List<Long> stockIdList) {
if (CollectionUtils.isEmpty(stockIdList)) {
return Collections.emptyMap();
}
stockIdList = stockIdList.stream().distinct().collect(Collectors.toList());
Map<Long, StockEntity> stockMap = Maps.newHashMap();
for (Long stockId : stockIdList) {
StockEntity stock = stockManager.queryStock(stockId);
if (stock != null) {
stockMap.put(stockId, stock);
}
}
return stockMap;
}
/** /**
* *
* *

View File

@ -7,13 +7,9 @@ import net.lab1024.sa.admin.module.business.wms.inventory.domain.vo.InventoryVO;
import net.lab1024.sa.admin.module.business.wms.inventory.service.InventoryQueryService; import net.lab1024.sa.admin.module.business.wms.inventory.service.InventoryQueryService;
import net.lab1024.sa.admin.module.business.wms.inventory.service.InventoryService; import net.lab1024.sa.admin.module.business.wms.inventory.service.InventoryService;
import net.lab1024.sa.base.common.domain.ValidateList; import net.lab1024.sa.base.common.domain.ValidateList;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
import net.lab1024.sa.base.common.domain.ResponseDTO; import net.lab1024.sa.base.common.domain.ResponseDTO;
import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.domain.PageResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
@ -61,15 +57,15 @@ public class InventoryController {
@Operation(summary = "批量删除 @author 霍锦") @Operation(summary = "批量删除 @author 霍锦")
@PostMapping("/inventory/batchDelete") @PostMapping("/inventory/batchDelete")
@SaCheckPermission("inventory:delete") @SaCheckPermission("inventory:batchDelete")
public ResponseDTO<String> batchDelete(@RequestBody ValidateList<Long> idList) { public ResponseDTO<String> batchDelete(@RequestBody ValidateList<Long> idList) {
return inventoryService.batchDelete(idList); return inventoryService.batchDelete(idList);
} }
@Operation(summary = "单个删除 @author 霍锦") @Operation(summary = "单个删除 @author 霍锦")
@GetMapping("/inventory/delete/{inventoryId}") @GetMapping("/inventory/delete")
@SaCheckPermission("inventory:delete") @SaCheckPermission("inventory:delete")
public ResponseDTO<String> batchDelete(@PathVariable Long inventoryId) { public ResponseDTO<String> delete(@RequestParam Long inventoryId) {
return inventoryService.delete(inventoryId); return inventoryService.delete(inventoryId);
} }
} }

View File

@ -12,6 +12,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import net.lab1024.sa.base.common.util.SmartRequestUtil;
/** /**
* *

View File

@ -1,5 +1,6 @@
package net.lab1024.sa.admin.module.business.wms.inventory.domain.form; package net.lab1024.sa.admin.module.business.wms.inventory.domain.form;
import io.swagger.v3.oas.annotations.media.Schema;
import net.lab1024.sa.base.common.domain.PageParam; import net.lab1024.sa.base.common.domain.PageParam;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -16,4 +17,13 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class InventoryQueryForm extends PageParam { public class InventoryQueryForm extends PageParam {
@Schema(description = "物料")
private Long itemId;
@Schema(description = "库位")
private Long locationId;
@Schema(description = "容器")
private Long stockId;
} }

View File

@ -1,8 +1,10 @@
package net.lab1024.sa.admin.module.business.wms.inventory.domain.vo; package net.lab1024.sa.admin.module.business.wms.inventory.domain.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Data; import lombok.Data;
/** /**
@ -23,12 +25,24 @@ public class InventoryVO {
@Schema(description = "物料属性") @Schema(description = "物料属性")
private Long itemKeyId; private Long itemKeyId;
@Schema(description = "物料编码")
private String itemCode;
@Schema(description = "物料名称")
private String itemName;
@Schema(description = "库位") @Schema(description = "库位")
private Long locationId; private Long locationId;
@Schema(description = "库位编码")
private String locationCode;
@Schema(description = "容器") @Schema(description = "容器")
private Long stockId; private Long stockId;
@Schema(description = "容器编码")
private String stockCode;
@Schema(description = "数量") @Schema(description = "数量")
private BigDecimal quantity; private BigDecimal quantity;

View File

@ -3,28 +3,87 @@ package net.lab1024.sa.admin.module.business.wms.inventory.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.entity.ItemEntity;
import net.lab1024.sa.admin.module.business.wms.base.item.service.ItemQueryService;
import net.lab1024.sa.admin.module.business.wms.base.location.domain.entity.LocationEntity;
import net.lab1024.sa.admin.module.business.wms.base.location.service.LocationQueryService;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.entity.StockEntity;
import net.lab1024.sa.admin.module.business.wms.base.stock.service.StockQueryService;
import net.lab1024.sa.admin.module.business.wms.inventory.dao.InventoryDao; import net.lab1024.sa.admin.module.business.wms.inventory.dao.InventoryDao;
import net.lab1024.sa.admin.module.business.wms.inventory.domain.entity.InventoryEntity; import net.lab1024.sa.admin.module.business.wms.inventory.domain.entity.InventoryEntity;
import net.lab1024.sa.admin.module.business.wms.inventory.domain.form.InventoryQueryForm; import net.lab1024.sa.admin.module.business.wms.inventory.domain.form.InventoryQueryForm;
import net.lab1024.sa.admin.module.business.wms.inventory.domain.vo.InventoryVO; import net.lab1024.sa.admin.module.business.wms.inventory.domain.vo.InventoryVO;
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.entity.ItemKeyEntity;
import net.lab1024.sa.admin.module.business.wms.itemKey.service.ItemKeyQueryService;
import net.lab1024.sa.admin.module.business.wms.task.domain.vo.TaskVO;
import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.domain.PageResult;
import net.lab1024.sa.base.common.util.SmartPageUtil; import net.lab1024.sa.base.common.util.SmartPageUtil;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service @Service
public class InventoryQueryService { public class InventoryQueryService {
@Resource @Resource
private InventoryDao inventoryDao; private InventoryDao inventoryDao;
@Resource
private ItemQueryService itemQueryService;
@Resource
private StockQueryService stockQueryService;
@Resource
private LocationQueryService locationQueryService;
@Resource
private ItemKeyQueryService itemKeyQueryService;
/** /**
* *
*/ */
public PageResult<InventoryVO> queryPage(InventoryQueryForm queryForm) { public PageResult<InventoryVO> queryPage(InventoryQueryForm queryForm) {
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm); Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
List<InventoryVO> list = inventoryDao.queryPage(page, queryForm); List<InventoryVO> list = inventoryDao.queryPage(page, queryForm);
// 查询物料属性
List<Long> itemKeyIds = list.stream().map(InventoryVO::getItemKeyId).distinct().collect(Collectors.toList());
Map<Long, ItemKeyEntity> itemKeyMap = itemKeyQueryService.queryItemKeyList(itemKeyIds);
//查询物料
List<Long> itemIds = itemKeyMap.values().stream().map(ItemKeyEntity::getItemId).distinct().collect(Collectors.toList());
Map<Long, ItemEntity> itemMap = itemQueryService.queryItemList(itemIds);
//查询容器
List<Long> stockIds = list.stream().map(InventoryVO::getStockId).distinct().collect(Collectors.toList());
Map<Long, StockEntity> stockMap = stockQueryService.queryStockList(stockIds);
//查询库位
List<Long> locationIds = list.stream().map(InventoryVO::getLocationId).distinct().collect(Collectors.toList());
Map<Long, LocationEntity> locationMap = locationQueryService.queryLocationList(locationIds);
list.forEach(InventoryVO -> {
ItemKeyEntity itemKey = itemKeyMap.get(InventoryVO.getItemKeyId());
if (itemKey != null) {
ItemEntity item = itemMap.get(itemKey.getItemId());
if (item != null) {
InventoryVO.setItemCode(item.getItemCode());
InventoryVO.setItemName(item.getItemName());
}
}
StockEntity stock = stockMap.get(InventoryVO.getStockId());
if (stock != null) {
InventoryVO.setStockCode(stock.getStockCode());
}
LocationEntity location = locationMap.get(InventoryVO.getLocationId());
if (location != null) {
InventoryVO.setLocationCode(location.getLocationCode());
}
});
return SmartPageUtil.convert2PageResult(page, list); return SmartPageUtil.convert2PageResult(page, list);
} }

View File

@ -21,6 +21,21 @@
SELECT SELECT
<include refid="base_columns"/> <include refid="base_columns"/>
FROM t_inventory FROM t_inventory
<where>
<!--物料-->
<if test="queryForm.itemId != null">
AND t_inventory.item_key_id in (select item_key_id from t_item_key where item_id = #{queryForm.itemId})
</if>
<!--库位-->
<if test="queryForm.locationId != null">
AND t_inventory.location_id=#{queryForm.locationId}
</if>
<!--容器-->
<if test="queryForm.stockId != null">
AND t_inventory.stock_id=#{queryForm.stockId}
</if>
</where>
ORDER BY t_inventory.create_time
</select> </select>