| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.warehouse.dto.WarehouseDto; |
| | | import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto; |
| | | import com.ruoyi.warehouse.dto.WarehouseTreeDto; |
| | | import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesMapper; |
| | | import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesRowcolMapper; |
| | | import com.ruoyi.warehouse.mapper.WarehouseMapper; |
| | | import com.ruoyi.warehouse.pojo.Warehouse; |
| | | import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves; |
| | | import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol; |
| | | import com.ruoyi.warehouse.service.WarehouseGoodsShelvesService; |
| | | import com.ruoyi.warehouse.service.WarehouseService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.sql.Array; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static org.springframework.beans.BeanUtils.copyProperties; |
| | | |
| | | /** |
| | | * @author 86151 |
| | |
| | | private WarehouseMapper warehouseMapper; |
| | | @Autowired |
| | | private WarehouseGoodsShelvesService warehouseGoodsShelvesService; |
| | | @Autowired |
| | | private WarehouseGoodsShelvesMapper warehouseGoodsShelvesMapper; |
| | | @Autowired |
| | | private WarehouseGoodsShelvesRowcolMapper warehouseGoodsShelvesRowcolMapper; |
| | | |
| | | @Override |
| | | public List<Warehouse> listPage(Warehouse warehouse) { |
| | | return warehouseMapper.listPage( warehouse); |
| | | } |
| | | |
| | | // @Override |
| | | // public boolean deleteByIds(List<Long> ids) { |
| | | // |
| | | // for (Long id : ids) { |
| | | // List<WarehouseGoodsShelves> list = warehouseGoodsShelvesService.list(new QueryWrapper<WarehouseGoodsShelves>().lambda() |
| | | // .eq(WarehouseGoodsShelves::getWarehouseId, id)); |
| | | // if(list.size()>0){ |
| | | // log.error("仓库下有货架,不能删除 重新选择"); |
| | | // return false; |
| | | // } |
| | | // } |
| | | // return removeByIds(ids); |
| | | // } |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean deleteByIds(List<Long> ids) { |
| | | // 1. 检查是否有货架 |
| | | Wrapper<WarehouseGoodsShelves> queryWrapper = new LambdaQueryWrapper<WarehouseGoodsShelves>() |
| | | .in(WarehouseGoodsShelves::getWarehouseId, ids); |
| | | List<WarehouseGoodsShelves> shelvesList = warehouseGoodsShelvesService.list(queryWrapper); |
| | | //获得shelvesList中所有的Id |
| | | |
| | | List<Long> shelvesIds = shelvesList.stream().map(WarehouseGoodsShelves::getId).collect(Collectors.toList()); |
| | | // 2. 删除货架 |
| | | if (!shelvesIds.isEmpty()) { |
| | | warehouseGoodsShelvesService.deleteByIds(shelvesIds); |
| | | boolean b = warehouseGoodsShelvesService.deleteByIds(shelvesIds); |
| | | if (!b) { |
| | | throw new RuntimeException("删除货架失败"); |
| | | } |
| | | } |
| | | return removeByIds(ids); |
| | | } |
| | | |
| | | @Override |
| | | public List<Warehouse> findList(Warehouse warehouse) { |
| | | return warehouseMapper.listAll(warehouse); |
| | | } |
| | | /** |
| | | * 查询仓库-货架-层列三级树结构 |
| | | */ |
| | | @Override |
| | | public List<WarehouseTreeDto> findListTree() { |
| | | |
| | | // 查询所有根节点(仓库) |
| | | LambdaQueryWrapper<Warehouse> queryWrapper = new LambdaQueryWrapper<>(); |
| | | // 查询仓库列表(一级节点) |
| | | List<Warehouse> warehouseList = warehouseMapper.selectList(queryWrapper); |
| | | |
| | | // 转换为树节点并构建子树 |
| | | List<WarehouseTreeDto> tree = new ArrayList<>(); |
| | | for (Warehouse warehouse : warehouseList) { |
| | | WarehouseTreeDto node = convertToWarehouseTreeDto(warehouse); |
| | | // 为每个仓库添加货架子节点 |
| | | node.setChildren(buildShelfChildrenNodes(warehouse.getId())); |
| | | tree.add(node); |
| | | } |
| | | return tree; |
| | | } |
| | | /** |
| | | * 构建货架子节点(二级节点) |
| | | */ |
| | | private List<WarehouseTreeDto> buildShelfChildrenNodes(Long warehouseId) { |
| | | // 查询指定仓库下的所有货架 |
| | | LambdaQueryWrapper<WarehouseGoodsShelves> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(WarehouseGoodsShelves::getWarehouseId, warehouseId); |
| | | List<WarehouseGoodsShelves> shelfList = warehouseGoodsShelvesMapper.selectList(queryWrapper); |
| | | |
| | | // 转换为树节点并构建层列子节点 |
| | | List<WarehouseTreeDto> shelfNodes = new ArrayList<>(); |
| | | for (WarehouseGoodsShelves shelf : shelfList) { |
| | | WarehouseTreeDto shelfNode = convertToShelfTreeDto(shelf); |
| | | // 为每个货架添加层列子节点 |
| | | shelfNode.setChildren(buildRowcolChildrenNodes(shelf.getId())); |
| | | shelfNodes.add(shelfNode); |
| | | } |
| | | |
| | | return shelfNodes; |
| | | } |
| | | |
| | | /** |
| | | * 构建层列子节点(三级节点) |
| | | */ |
| | | private List<WarehouseTreeDto> buildRowcolChildrenNodes(Long shelfId) { |
| | | // 查询指定货架下的所有层列 |
| | | LambdaQueryWrapper<WarehouseGoodsShelvesRowcol> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, shelfId); |
| | | List<WarehouseGoodsShelvesRowcol> rowcolList = warehouseGoodsShelvesRowcolMapper.selectList(queryWrapper); |
| | | |
| | | // 转换为树节点(层列没有子节点) |
| | | List<WarehouseTreeDto> rowcolNodes = new ArrayList<>(); |
| | | for (WarehouseGoodsShelvesRowcol rowcol : rowcolList) { |
| | | WarehouseTreeDto rowcolNode = convertToRowcolTreeDto(rowcol); |
| | | rowcolNodes.add(rowcolNode); |
| | | } |
| | | |
| | | return rowcolNodes; |
| | | } |
| | | |
| | | /** |
| | | * 仓库实体转换为树节点DTO |
| | | */ |
| | | private WarehouseTreeDto convertToWarehouseTreeDto(Warehouse warehouse) { |
| | | WarehouseTreeDto dto = new WarehouseTreeDto(); |
| | | copyProperties(warehouse, dto); |
| | | dto.setLabel(warehouse.getWarehouseName()); |
| | | dto.setChildren(new ArrayList<>()); |
| | | return dto; |
| | | } |
| | | |
| | | /** |
| | | * 货架实体转换为树节点DTO |
| | | */ |
| | | private WarehouseTreeDto convertToShelfTreeDto(WarehouseGoodsShelves shelf) { |
| | | WarehouseTreeDto dto = new WarehouseTreeDto(); |
| | | copyProperties(shelf, dto); |
| | | // dto.setLabel(shelf.getGoodsShelvesName()); |
| | | dto.setLabel(shelf.getName()); |
| | | dto.setChildren(new ArrayList<>()); |
| | | return dto; |
| | | } |
| | | |
| | | /** |
| | | * 层列实体转换为树节点DTO |
| | | */ |
| | | private WarehouseTreeDto convertToRowcolTreeDto(WarehouseGoodsShelvesRowcol rowcol) { |
| | | WarehouseTreeDto dto = new WarehouseTreeDto(); |
| | | copyProperties(rowcol, dto); |
| | | // dto.setLabel(rowcol.getStorey() + "-" + rowcol.getArrange()); |
| | | dto.setLabel(rowcol.getRow() + "-" + rowcol.getCol()); |
| | | dto.setChildren(new ArrayList<>()); |
| | | return dto; |
| | | } |
| | | |
| | | } |
| | | |
| | | |