package com.zy.asrs.common.wms.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.common.wms.mapper.LocDirectionMapper; import com.zy.asrs.common.wms.entity.LocDirection; import com.zy.asrs.common.wms.service.LocDirectionService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Collections; import java.util.List; @Service("locDirectionService") public class LocDirectionServiceImpl extends ServiceImpl implements LocDirectionService { @Override public List> getInnerList(Long hostId) { List inner = this.list(new LambdaQueryWrapper() .eq(LocDirection::getHostId, hostId) .eq(LocDirection::getType, "inner")); return this.parseData(inner); } @Override public List> getOuterList(Long hostId) { List outer = this.list(new LambdaQueryWrapper() .eq(LocDirection::getHostId, hostId) .eq(LocDirection::getType, "outer")); return this.parseData(outer); } @Override public List> getNaturalList(Long hostId) { List natural = this.list(new LambdaQueryWrapper() .eq(LocDirection::getHostId, hostId) .eq(LocDirection::getType, "natural")); return this.parseData(natural); } @Override public List> parseData(List origin) { ArrayList> data = new ArrayList<>(); for (LocDirection direction : origin) { ArrayList list = new ArrayList<>(); String[] split = direction.getData().split(","); for (String row : split) { list.add(Integer.parseInt(row)); } data.add(list); } return data; } @Override public boolean isAsc(Integer row, String direction, Long hostId) { List> 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 obj = null; for (ArrayList 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; } @Override public List getInnerDeepRow(Long hostId) { ArrayList data = new ArrayList<>(); List> innerList = getInnerList(hostId); for (ArrayList list : innerList) { data.add(list.get(0)); } return data; } }