package cn.iocoder.yudao.module.wms.controller.admin.inventory;
|
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.dict.core.DictFrameworkUtils;
|
import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.WmsInventoryReservePageReqVO;
|
import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.WmsInventoryReserveRespVO;
|
import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryReserveDO;
|
import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
|
import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
|
import cn.iocoder.yudao.module.wms.enums.DictTypeConstants;
|
import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryReserveService;
|
import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
|
import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import jakarta.annotation.Resource;
|
import jakarta.validation.Valid;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.List;
|
import java.util.Map;
|
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
|
|
@Tag(name = "管理后台 - 库存预留")
|
@RestController
|
@RequestMapping("/wms/inventory-reserve")
|
@Validated
|
public class WmsInventoryReserveController {
|
|
@Resource
|
private WmsInventoryReserveService reserveService;
|
|
@Resource
|
private WmsItemSkuService itemSkuService;
|
|
@Resource
|
private WmsWarehouseService warehouseService;
|
|
@GetMapping("/page")
|
@Operation(summary = "获得库存预留分页")
|
@PreAuthorize("@ss.hasPermission('wms:inventory-reserve:query')")
|
public CommonResult<PageResult<WmsInventoryReserveRespVO>> getInventoryReservePage(@Valid WmsInventoryReservePageReqVO reqVO) {
|
PageResult<WmsInventoryReserveDO> pageResult = reserveService.getReservePage(reqVO);
|
// 转换
|
PageResult<WmsInventoryReserveRespVO> voPageResult = BeanUtils.toBean(pageResult, WmsInventoryReserveRespVO.class);
|
// 补充信息
|
enrichReserveList(voPageResult.getList());
|
return success(voPageResult);
|
}
|
|
@GetMapping("/get")
|
@Operation(summary = "获得库存预留详情")
|
@Parameter(name = "id", description = "编号", required = true, example = "1")
|
@PreAuthorize("@ss.hasPermission('wms:inventory-reserve:query')")
|
public CommonResult<WmsInventoryReserveRespVO> getInventoryReserve(@RequestParam("id") Long id) {
|
WmsInventoryReserveDO reserve = reserveService.getReserve(id);
|
if (reserve == null) {
|
return success(null);
|
}
|
WmsInventoryReserveRespVO respVO = BeanUtils.toBean(reserve, WmsInventoryReserveRespVO.class);
|
// 补充信息
|
enrichReserve(respVO);
|
return success(respVO);
|
}
|
|
@PostMapping("/release")
|
@Operation(summary = "释放库存预留")
|
@Parameter(name = "id", description = "编号", required = true, example = "1")
|
@PreAuthorize("@ss.hasPermission('wms:inventory-reserve:release')")
|
public CommonResult<Boolean> releaseInventoryReserve(@RequestParam("id") Long id) {
|
WmsInventoryReserveDO reserve = reserveService.getReserve(id);
|
if (reserve != null) {
|
reserveService.releaseReserve(reserve.getReserveNo());
|
}
|
return success(true);
|
}
|
|
/**
|
* 批量补充预留记录信息
|
*/
|
private void enrichReserveList(List<WmsInventoryReserveRespVO> list) {
|
if (list == null || list.isEmpty()) {
|
return;
|
}
|
// 获取 SKU 信息
|
Map<Long, WmsItemSkuDO> skuMap = itemSkuService.getItemSkuMap(
|
convertSet(list, WmsInventoryReserveRespVO::getSkuId));
|
// 获取仓库信息
|
Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
|
convertSet(list, WmsInventoryReserveRespVO::getWarehouseId));
|
|
for (WmsInventoryReserveRespVO vo : list) {
|
// 业务类型名称
|
vo.setBizTypeName(DictFrameworkUtils.parseDictDataLabel(DictTypeConstants.WMS_RESERVE_BIZ_TYPE, vo.getBizType()));
|
// 状态名称
|
vo.setStatusName(DictFrameworkUtils.parseDictDataLabel(DictTypeConstants.WMS_RESERVE_STATUS, vo.getStatus()));
|
// SKU 名称
|
WmsItemSkuDO sku = skuMap.get(vo.getSkuId());
|
if (sku != null) {
|
vo.setSkuName(sku.getName());
|
}
|
// 仓库名称
|
WmsWarehouseDO warehouse = warehouseMap.get(vo.getWarehouseId());
|
if (warehouse != null) {
|
vo.setWarehouseName(warehouse.getName());
|
}
|
}
|
}
|
|
/**
|
* 补充单个预留记录信息
|
*/
|
private void enrichReserve(WmsInventoryReserveRespVO vo) {
|
// 业务类型名称
|
vo.setBizTypeName(DictFrameworkUtils.parseDictDataLabel(DictTypeConstants.WMS_RESERVE_BIZ_TYPE, vo.getBizType()));
|
// 状态名称
|
vo.setStatusName(DictFrameworkUtils.parseDictDataLabel(DictTypeConstants.WMS_RESERVE_STATUS, vo.getStatus()));
|
// SKU 名称
|
List<WmsItemSkuDO> skuList = itemSkuService.getItemSkuListByIds(List.of(vo.getSkuId()));
|
if (!skuList.isEmpty()) {
|
vo.setSkuName(skuList.get(0).getName());
|
}
|
// 仓库名称
|
WmsWarehouseDO warehouse = warehouseService.getWarehouse(vo.getWarehouseId());
|
if (warehouse != null) {
|
vo.setWarehouseName(warehouse.getName());
|
}
|
}
|
|
}
|