zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CommonService.java
@@ -228,6 +228,13 @@ throw new CoolException("入库路径不存在"); } //找相同空托盘 LambdaQueryWrapper<LocMast> wrapper0 = new LambdaQueryWrapper<LocMast>() .eq(LocMast::getLocSts, "D") .eq(LocMast::getLocType1, locTypeDto.getLocType1()) .eq(LocMast::getCrnNo, staDesc.getDeviceNo()) .eq(LocMast::getHostId, hostId); LambdaQueryWrapper<LocMast> wrapper1 = new LambdaQueryWrapper<LocMast>() .eq(LocMast::getLocSts, "O") .eq(LocMast::getLocType1, locTypeDto.getLocType1()) @@ -245,6 +252,18 @@ wrapper1.le(LocMast::getLev1, locRangeDto.getTargetLev()); } List<LocMast> locMasts0 = locMastService.list(wrapper0); if (!locMasts0.isEmpty()) { for (LocMast loc : locMasts0) { LocMast locMast0 = locMastService.findNearloc(loc.getLocNo(), hostId, locRangeDto); if (null != locMast0) { locMast = locMast0; break; } } } if (locMast == null) { List<LocMast> locMasts = locMastService.list(wrapper1); if (!locMasts.isEmpty()) { for (LocMast loc : locMasts) { @@ -255,6 +274,7 @@ } } } } if (locMast == null) { throw new CoolException("缺少空库位"); zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDirectionService.java
@@ -16,4 +16,6 @@ List<ArrayList<Integer>> parseData(List<LocDirection> origin); boolean isAsc(Integer row, String direction, Long hostId); } zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDirectionServiceImpl.java
@@ -50,4 +50,32 @@ } return data; } @Override public boolean isAsc(Integer row, String direction, Long hostId) { List<ArrayList<Integer>> list = null; if(direction.equals("inner")){ list = this.getInnerList(hostId); } else if (direction.equals("outer")) { list = this.getOuterList(hostId); }else { list = this.getNaturalList(hostId); } ArrayList<Integer> obj = null; for (ArrayList<Integer> arrayList : list) { if(arrayList.contains(row)){ obj = arrayList; break; } } if (obj != null && obj.size() >= 2) { Integer i0 = obj.get(0); Integer i1 = obj.get(1); return i0 - i1 < 0; } return false; } } zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocMastServiceImpl.java
@@ -5,15 +5,20 @@ 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) { @@ -50,13 +55,19 @@ @Override public LocMast findNearloc(String locNo, Long hostId, LocRangeDto locRangeDto) { LocMast locMast = null; List<String> groupOuterLoc = Utils.getGroupInnerLoc(locNo, hostId); if (!Cools.isEmpty(groupOuterLoc)) { 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, groupOuterLoc) .eq(LocMast::getHostId, hostId) .orderByAsc(LocMast::getRow1); .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());