package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.zy.asrs.entity.ManPakOut; import com.zy.asrs.mapper.ManPakOutMapper; import com.zy.asrs.service.ManPakOutService; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service("manPakOutService") public class ManPakOutServiceImpl extends ServiceImpl implements ManPakOutService { public void updateAllStatus(String orderNo, int status) { this.baseMapper.updateAllStatus(orderNo,status); } @Override public ManPakOut selectByOrderWithName(String orderNo) { return this.baseMapper.selectByOrderWithName(orderNo); } @Override public List selectByLocType(String locType) { return this.selectList(new EntityWrapper().like("loc_no",locType+"-") .andNew().eq("status",0).or().eq("status",8)); } @Override public List pakoutByLocType(String locType) { List manPakOuts = this.selectByLocType(locType); manPakOuts.sort((m1,m2) -> { //取库位编码最后6位得到排列层 String locNo1 = m1.getLocNo().substring(m1.getLocNo().length()-6); String locNo2 = m2.getLocNo().substring(m2.getLocNo().length()-6); int row1 = Integer.parseInt(locNo1.substring(0, 2)); int row2 = Integer.parseInt(locNo2.substring(0, 2)); int bay1 = Integer.parseInt(locNo1.substring(2,4)); int bay2 = Integer.parseInt(locNo2.substring(2,4)); //每两排为一个起点,根据列来由近到远排序 if((row1 + 1)/2 != (row2+1)/2){ return row1 - row2; }else { return bay1 - bay2; } }); return manPakOuts; } public static void main(String[] args) { String str = "DT-13C-010203"; System.out.println(str.substring(str.length()-6)); List list = new ArrayList<>(); list.add(new ManPakOut("DT-C-010403")); list.add(new ManPakOut("DT-C-050203")); list.add(new ManPakOut("DT-C-040503")); list.add(new ManPakOut("DT-C-030203")); list.add(new ManPakOut("DT-C-010503")); list.add(new ManPakOut("DT-C-020103")); list.add(new ManPakOut("DT-C-020203")); list.add(new ManPakOut("DT-C-040103")); //Collections.sort(list); list.sort((m1,m2) ->{ //取库位编码最后6位得到排列层 String locNo1 = m1.getLocNo().substring(m1.getLocNo().length()-6); String locNo2 = m2.getLocNo().substring(m2.getLocNo().length()-6); int row1 = Integer.parseInt(locNo1.substring(0, 2)); int row2 = Integer.parseInt(locNo2.substring(0, 2)); int bay1 = Integer.parseInt(locNo1.substring(2,4)); int bay2 = Integer.parseInt(locNo2.substring(2,4)); if((row1 + 1)/2 != (row2+1)/2){ return row1 - row2; }else { return bay1 - bay2; } }); list.forEach(manPakOut -> { System.out.println(manPakOut); }); } }