| package com.zy.asrs.common.wms.service.impl; | 
|   | 
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
| import com.zy.asrs.common.domain.dto.LocRangeDto; | 
| import com.zy.asrs.common.utils.Utils; | 
| import com.zy.asrs.common.wms.mapper.LocMastMapper; | 
| import com.zy.asrs.common.wms.entity.LocMast; | 
| import com.zy.asrs.common.wms.service.LocDirectionService; | 
| import com.zy.asrs.common.wms.service.LocMastService; | 
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
| import com.zy.asrs.framework.common.Cools; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
|   | 
| import java.util.List; | 
|   | 
| @Service("locMastService") | 
| public class LocMastServiceImpl extends ServiceImpl<LocMastMapper, LocMast> implements LocMastService { | 
|   | 
|     @Autowired | 
|     private LocDirectionService locDirectionService; | 
|   | 
|     @Override | 
|     public List<String> queryGroupEmptyStock(String sourceLocNo, Long hostId) { | 
|         if (Cools.isEmpty(sourceLocNo)) { | 
|             return null; | 
|         } | 
|         LocMast sourceStock = this.getOne(new LambdaQueryWrapper<LocMast>() | 
|                 .eq(LocMast::getLocNo, sourceLocNo) | 
|                 .eq(LocMast::getHostId, hostId)); | 
|         if (Cools.isEmpty(sourceStock)) { | 
|             return null; | 
|         } | 
|         return this.baseMapper.queryGroupEmptyStock(hostId); | 
|     } | 
|   | 
|     @Override | 
|     public List<LocMast> queryFreeLocMast2(Short locType1, Integer rowBeg, Integer rowEnd, Integer bayBeg, Integer bayEnd, Integer levBeg, Integer levEnd, Long hostId,Long whsType) { | 
|         return this.baseMapper.queryFreeLocMast2(locType1, rowBeg, rowEnd, bayBeg, bayEnd, levBeg, levEnd, hostId, whsType); | 
|     } | 
|   | 
|     @Override | 
|     public Boolean checkEmptyCount(LocMast locMast, int quaOfBlank, Long hostId) { | 
|         if (locMast == null) { | 
|             return false; | 
|         } | 
|         int count = this.baseMapper.selectCount(new LambdaQueryWrapper<LocMast>() | 
|                 .eq(LocMast::getLocSts, 'O') | 
| //                .eq(LocMast::getLocType3, locMast.getLocType3()) | 
|                 .eq(LocMast::getLev1, locMast.getLev1()) | 
|                 .eq(LocMast::getHostId, hostId)); | 
|         return count > quaOfBlank; | 
|     } | 
|   | 
|     @Override | 
|     public LocMast findNearloc(String locNo, Long hostId, LocRangeDto locRangeDto) { | 
|         LocMast locMast = null; | 
|         List<String> groupLoc = Utils.getGroupLoc(locNo, hostId); | 
|         boolean asc = locDirectionService.isAsc(Utils.getRow(locNo), "inner", hostId); | 
|         if (!Cools.isEmpty(groupLoc)) { | 
|             LambdaQueryWrapper<LocMast> wrapper = new LambdaQueryWrapper<LocMast>() | 
|                     .eq(LocMast::getLocSts, 'O') | 
|                     .in(LocMast::getLocNo, groupLoc) | 
|                     .eq(LocMast::getHostId, hostId); | 
|             if (asc) { | 
|                 wrapper.orderByAsc(LocMast::getRow1); | 
|             }else { | 
|                 wrapper.orderByDesc(LocMast::getRow1); | 
|             } | 
|   | 
|             //库位搜索范围 | 
|             if (locRangeDto != null) { | 
|                 wrapper.ge(LocMast::getRow1, locRangeDto.getStartRow()); | 
|                 wrapper.le(LocMast::getRow1, locRangeDto.getTargetRow()); | 
|                 wrapper.ge(LocMast::getBay1, locRangeDto.getStartBay()); | 
|                 wrapper.le(LocMast::getBay1, locRangeDto.getTargetBay()); | 
|                 wrapper.ge(LocMast::getLev1, locRangeDto.getStartLev()); | 
|                 wrapper.le(LocMast::getLev1, locRangeDto.getTargetLev()); | 
|             } | 
|             locMast = this.getOne(wrapper, false); | 
|         } | 
|         return locMast; | 
|     } | 
| } |