package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.LocMast; import com.zy.asrs.mapper.LocMastMapper; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.RowLastnoService; import com.zy.asrs.service.WorkService; import com.zy.asrs.utils.Utils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; @Service("locMastService") public class LocMastServiceImpl extends ServiceImpl implements LocMastService { @Autowired private RowLastnoService rowLastnoService; @Autowired private WorkService workService; @Override public List queryFreeLocMast(List rows, Integer rowsLen, Short locType1) { return this.baseMapper.queryFreeLocMast(rows, rowsLen, locType1); } @Override public List queryGroupEmptyStock(String sourceLocNo) { if (Cools.isEmpty(sourceLocNo)) { return null; } LocMast sourceStock = this.selectById(sourceLocNo); if (Cools.isEmpty(sourceStock)) { return null; } return this.baseMapper.queryGroupEmptyStock(sourceStock.getCrnNo()); } @Override public Boolean checkEmptyCount(LocMast locMast) { if (locMast == null) { return false; } return this.baseMapper.selectEmptyLocCount(locMast.getLocType1(), locMast.getCrnNo()) > 1; } @Override public Boolean checkWhole(List locDetls) { return null; } @Override public Boolean isOutMost(String locNo, Boolean pakin) { return Integer.parseInt(locNo.substring(0, 2)) == Utils.getOutermostRow(locNo, true); } @Override public LocMast findOutMost(List locNos) { List rows = locNos.stream().map(item -> Integer.parseInt(item.substring(0, 2))).distinct().collect(Collectors.toList()); if (!rows.retainAll(new ArrayList() {{ add(1);add(2);add(3);}})) { locNos.sort(Comparator.comparingInt(o -> Integer.parseInt(o.substring(0, 2)))); } else { rows = locNos.stream().map(item -> Integer.parseInt(item.substring(0, 2))).distinct().collect(Collectors.toList()); } if (!rows.retainAll(new ArrayList() {{ add(8);add(9);add(10);add(11);}})) { locNos.sort(Comparator.comparingInt(o -> Integer.parseInt(o.substring(0, 2)))); } else { rows = locNos.stream().map(item -> Integer.parseInt(item.substring(0, 2))).distinct().collect(Collectors.toList()); } if (!rows.retainAll(new ArrayList() {{ add(15);add(16);add(17);add(18);}})) { locNos.sort(Comparator.comparingInt(o -> Integer.parseInt(o.substring(0, 2)))); } else { rows = locNos.stream().map(item -> Integer.parseInt(item.substring(0, 2))).distinct().collect(Collectors.toList()); } if (!rows.retainAll(new ArrayList() {{ add(4);add(5);add(6);add(7);}})) { locNos.sort((o1, o2) -> Integer.parseInt(o2.substring(0, 2)) - Integer.parseInt(o1.substring(0, 2))); } else { rows = locNos.stream().map(item -> Integer.parseInt(item.substring(0, 2))).distinct().collect(Collectors.toList()); } if (!rows.retainAll(new ArrayList() {{ add(12);add(13);add(14);}})) { locNos.sort((o1, o2) -> Integer.parseInt(o2.substring(0, 2)) - Integer.parseInt(o1.substring(0, 2))); } else { rows = locNos.stream().map(item -> Integer.parseInt(item.substring(0, 2))).distinct().collect(Collectors.toList()); } if (!rows.retainAll(new ArrayList() {{ add(19);add(20);add(21);}})) { locNos.sort((o1, o2) -> Integer.parseInt(o2.substring(0, 2)) - Integer.parseInt(o1.substring(0, 2))); } else { rows = locNos.stream().map(item -> Integer.parseInt(item.substring(0, 2))).distinct().collect(Collectors.toList()); } // if (!rows.retainAll(new ArrayList() {{ add(1);add(2);add(3);}}) // || !rows.retainAll(new ArrayList() {{ add(8);add(9);add(10);add(11);}}) // || !rows.retainAll(new ArrayList() {{ add(15);add(16);add(17);add(18);}}) // ) { // locNos.sort(Comparator.comparingInt(o -> Integer.parseInt(o.substring(0, 2)))); // } else if (!rows.retainAll(new ArrayList() {{ add(4);add(5);add(6);add(7);}}) // || !rows.retainAll(new ArrayList() {{ add(12);add(13);add(14);}}) // || !rows.retainAll(new ArrayList() {{ add(19);add(20);add(21);}}) // ) { // locNos.sort((o1, o2) -> Integer.parseInt(o2.substring(0, 2)) - Integer.parseInt(o1.substring(0, 2))); // } for (String locNo : locNos) { LocMast locMast = this.selectById(locNo); if (locMast.getLocSts().equals("O")) { return locMast; } } return null; } @Override public synchronized void breakUp(String locNo, List excludeLocNos) { List groupLoc = Utils.getGroupOuterLoc(locNo); Iterator iterator = groupLoc.iterator(); while (iterator.hasNext()) { String next = iterator.next(); LocMast locMast = this.selectById(next); if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) { if (!excludeLocNos.contains(locMast.getLocNo())) { continue; } } iterator.remove(); } workService.shuttleTransfer(groupLoc); } }