| | |
| | | throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中"); |
| | | } |
| | | //检索库位,选择合适的库位 |
| | | AgvLocMast locMast = agvCommonService.getLocNo(agvLocMast.getLocType1(),floor); |
| | | AgvLocMast locMast = agvCommonService.getLocNo(agvLocMast.getLocType1(),floor,false,true); |
| | | if (Cools.isEmpty(locMast)) { |
| | | throw new CoolException("当前楼层没有空库位"); |
| | | } |
| | |
| | | if (agvWrkMast.getCrnNo() != agvBasDevp.getFloor()) { |
| | | throw new CoolException("请移动到->" + agvWrkMast.getCrnNo() + "楼入库点入库"); |
| | | } |
| | | AgvLocMast locNo = agvCommonService.getLocNo(3, 1); |
| | | AgvLocMast locNo = agvCommonService.getLocNo(3, 1,false,true); |
| | | //工作状态 |
| | | agvWrkMast.setWrkSts(211L); |
| | | //入出库类型 |
| | |
| | | List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("supp_code", agvBasDevp.getBarcode())); |
| | | |
| | | //检索库位,选择合适的库位 |
| | | AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1(),agvBasDevp.getFloor()); |
| | | AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1(),agvBasDevp.getFloor(),false,false); |
| | | //生成工作档 |
| | | AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),agvBasDevp.getBarcode(),now,userId, agvBasDevp.getLocType2()); |
| | | //标记是否为输送线入库 |
| | |
| | | } |
| | | |
| | | //检索库位,选择合适的库位 |
| | | AgvLocMast agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor()); |
| | | AgvLocMast agvLocMast = new AgvLocMast(); |
| | | |
| | | |
| | | //查询入库通知档 |
| | | List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectByContainerCode(containerCode); |
| | | if(!Cools.isEmpty(agvWaitPakinList)){ |
| | | |
| | | agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false); |
| | | |
| | | String devNo = agvBasDevp.getDevNo(); |
| | | String locNo = agvLocMast.getLocNo(); |
| | |
| | | //更新源站点状态 |
| | | updateAgvBasDevp(agvBasDevp,"R",containerType); |
| | | }else { |
| | | agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),true,true); |
| | | // 生成工作档 10.空板入库 |
| | | createWrkMast(10,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),containerCode,now,userId,containerType); |
| | | //更新源站点状态 |
| | |
| | | public int startAllcationIn(AgvWrkMast agvWrkMast) throws IOException { |
| | | AgvBasDevp basDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo()); |
| | | //检索库位,选择合适的库位 |
| | | AgvLocMast locMast = agvCommonService.getLocNo(basDevp.getLocType1(),basDevp.getFloor()); |
| | | AgvLocMast locMast = agvCommonService.getLocNo(basDevp.getLocType1(),basDevp.getFloor(),false,true); |
| | | agvWrkMast.setLocNo(locMast.getLocNo()); |
| | | agvWrkMast.setWrkSts(201L); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | |
| | | agvWrkMast.setWrkNo(-agvWrkMast.getWrkNo()); |
| | | } |
| | | agvTaskCreateParam.setTaskCode(agvWrkMast.getWrkNo().toString()); |
| | | if (agvWrkMast.getIoType() == 108 || (agvWrkMast.getIoType() == 109 && agvWrkMast.getWrkSts() == 201) || agvWrkMast.getIoType() == 12) { |
| | | agvTaskCreateParam.setTaskTyp("F06"); |
| | | } else { |
| | | agvTaskCreateParam.setTaskTyp("F01"); |
| | | switch (agvWrkMast.getIoType()) { |
| | | case 108: |
| | | case 12: |
| | | agvTaskCreateParam.setTaskTyp("F06"); |
| | | break; |
| | | case 109: |
| | | if (agvWrkMast.getWrkSts() == 201) { |
| | | agvTaskCreateParam.setTaskTyp("F06"); |
| | | } else { |
| | | agvTaskCreateParam.setTaskTyp("F01"); |
| | | } |
| | | break; |
| | | case 1: |
| | | // 入库任务是只有 接驳位 -- > 库位 |
| | | AgvLocMast loc = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvWrkMast.getLocNo())); |
| | | String locSub = loc.getLocNo().substring(loc.getLocNo().length() - 4).substring(0, 2).substring(0, 2); |
| | | if ("02".equals(locSub)) { |
| | | agvTaskCreateParam.setTaskTyp("F06"); |
| | | } else { |
| | | agvTaskCreateParam.setTaskTyp("F01"); |
| | | } |
| | | break; |
| | | default: |
| | | agvTaskCreateParam.setTaskTyp("F01"); |
| | | break; |
| | | } |
| | | |
| | | agvTaskCreateParam.setPositionCodePath(agvTaskParamList); |
| | |
| | | */ |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | private void autoEmptyBack4(){ |
| | | // if (determineFloorConnection(2)){ |
| | | // 查询 不为1楼的空货架 |
| | | List<AgvLocMast> agvLocMasts = agvLocMastService.selectList( |
| | | new EntityWrapper<AgvLocMast>() |
| | | .ne("floor", 1) |
| | | .eq("loc_sts","D") |
| | | .eq("loc_type1",3)); |
| | | if (agvLocMasts.isEmpty()) { |
| | | return; |
| | | // 查询 不为1楼的空货架 |
| | | List<AgvLocMast> agvLocMasts = agvLocMastService.selectList( |
| | | new EntityWrapper<AgvLocMast>() |
| | | .ne("floor", 1) |
| | | .eq("loc_sts","D") |
| | | .eq("loc_type1",3)); |
| | | if (agvLocMasts.isEmpty()) { |
| | | return; |
| | | } |
| | | for (AgvLocMast agvLocMast : agvLocMasts) { |
| | | try{ |
| | | autoMoveHandler.autoEmptyBack4(agvLocMast); |
| | | } catch (Exception e){ |
| | | log.error("库位号"+agvLocMast.getLocNo()+"空板自动回库 库位-接驳点 库位-吸塑车间,处理失败:===》异常原因:"+e.getMessage()); |
| | | } |
| | | for (AgvLocMast agvLocMast : agvLocMasts) { |
| | | try{ |
| | | autoMoveHandler.autoEmptyBack4(agvLocMast); |
| | | } catch (Exception e){ |
| | | log.error("库位号"+agvLocMast.getLocNo()+"空板自动回库 库位-接驳点 库位-吸塑车间,处理失败:===》异常原因:"+e.getMessage()); |
| | | } |
| | | } |
| | | // } |
| | | } |
| | | } |
| | | |
| | | private boolean determineFloorConnection(Integer floor){ |
| | |
| | | doHandMove2(agvWrkMast); |
| | | return SUCCESS; |
| | | } |
| | | |
| | | //根据库位的loctype值发送任务--弃用 |
| | | private ReturnT<String> doAutoMove(AgvLocMast agvLocMast) { |
| | | Date now = new Date(); |
| | | //查询工作档 |
| | |
| | | throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中"); |
| | | } |
| | | //检索库位,选择合适的库位 |
| | | AgvLocMast LocMast = agvCommonService.getLocNo(3,agvLocMast.getLocType3()); |
| | | AgvLocMast LocMast = agvCommonService.getLocNo(3,agvLocMast.getLocType3(),false,true); |
| | | //生成工作档 |
| | | AgvWrkMast mast = new AgvWrkMast(); |
| | | //工作状态 |
| | |
| | | private ReturnT<String> doAutoMove2(AgvWrkMast agvWrkMast) { |
| | | Date now = new Date(); |
| | | //检索库位,选择合适的库位 |
| | | AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo()); |
| | | AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,true); |
| | | if (Cools.isEmpty(locMast)) { |
| | | throw new CoolException("暂无库位"); |
| | | } |
| | |
| | | Date now = new Date(); |
| | | AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo()); |
| | | //检索空闲接驳位,选择合适的接驳位 |
| | | AgvLocMast locMast = agvCommonService.getLocNo(3, 1); |
| | | AgvLocMast locMast = agvCommonService.getLocNo(3, 1,true,true); |
| | | if (Cools.isEmpty(locMast)) { |
| | | throw new CoolException("1楼暂无空库位"); |
| | | } |
| | |
| | | throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中"); |
| | | } |
| | | //检索库位,选择合适的库位 |
| | | AgvLocMast LocMast = agvCommonService.getLocNo(3,1); |
| | | AgvLocMast LocMast = agvCommonService.getLocNo(3,1,true,true); |
| | | //生成工作档 |
| | | AgvWrkMast mast = new AgvWrkMast(); |
| | | //工作状态 |
| | |
| | | ioType = 109; |
| | | } else { |
| | | //检索库位,选择合适的库位 |
| | | locMast = agvCommonService.getLocNo(3,1); |
| | | locMast = agvCommonService.getLocNo(3,1,true,true); |
| | | locNo = locMast.getLocNo(); |
| | | wrkSts = 201L; |
| | | ioType = 109; |
| | |
| | | //入出库类型 |
| | | mast.setIoType(109); |
| | | //检索库位,选择合适的库位 |
| | | AgvLocMast locMast = agvCommonService.getLocNo(3,1); |
| | | AgvLocMast locMast = agvCommonService.getLocNo(3,1,true,true); |
| | | mast.setLocNo(locMast.getLocNo()); |
| | | updateAgvLocMast(locMast,"S"); |
| | | } else { |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | * 检索库位号 |
| | | * @return locNo 检索到的库位号 |
| | | */ |
| | | public AgvLocMast getLocNo(int type, int floor) { |
| | | public AgvLocMast getLocNo(int type, int floor,boolean isEmpty,boolean isCurrLev) { |
| | | // 目标库位 |
| | | AgvLocMast locMast = null; |
| | | // if(Cools.isEmpty(agvWaitPakinList)){ |
| | |
| | | |
| | | try{ |
| | | // 开始查找库位 ==============================>> |
| | | locMast = getLocNoRule(type,floor); |
| | | locMast = getLocNoRule(type,floor,isEmpty,isCurrLev); |
| | | if (locMast != null) { |
| | | return locMast; |
| | | } |
| | | }catch (Exception e){ |
| | | throw new CoolException("楼层号:"+floor+";该楼层没有空库位===>"+e.getMessage()); |
| | | throw new CoolException(floor+"楼;该楼层没有空库位===>"+e.getMessage()); |
| | | } |
| | | |
| | | //找不到库位,抛出异常 |
| | | throw new CoolException("楼层号:"+floor+";该楼层没有空库位"); |
| | | throw new CoolException(floor+"楼;该楼层没有空库位"); |
| | | } |
| | | |
| | | /* |
| | |
| | | } |
| | | |
| | | //随机取一个货位 |
| | | private AgvLocMast getLocNoRule(int type,int floor){ |
| | | private AgvLocMast getLocNoRule(int type,int floor,boolean isEmpty,boolean isCurrLev){ |
| | | Boolean orderBy = false; |
| | | int levCount = 0; |
| | | int times = 1; |
| | | if (floor == 1) { |
| | | orderBy = true; |
| | | levCount = 2; |
| | | } else { |
| | | orderBy = false; |
| | | levCount = 1; |
| | | } |
| | | try{ |
| | | List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(new EntityWrapper<AgvLocMast>() |
| | | .eq("loc_sts", "O") |
| | | .eq("floor", floor) |
| | | .eq("loc_type1", type)); |
| | | EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("loc_sts", "O").eq("loc_type1", type); |
| | | List<AgvLocMast> agvLocMasts = new ArrayList<>(); |
| | | //不是空板优先找2层 |
| | | if (isEmpty) { |
| | | wrapper.eq("floor", floor).eq("lev1",1); |
| | | } else { |
| | | wrapper.eq("floor", floor).orderBy("lev1",!orderBy); |
| | | } |
| | | |
| | | |
| | | //当目标库位是1楼 |
| | | if(floor == 1) { |
| | | wrapper.orderBy("loc_no",false); |
| | | } |
| | | agvLocMasts = agvLocMastService.selectList(wrapper); |
| | | //是否当前层 |
| | | if (Cools.isEmpty(agvLocMasts) && !isCurrLev) { |
| | | if (times < levCount) { |
| | | times++; |
| | | return getLocNoRule(type,floor,isEmpty,isCurrLev); |
| | | } |
| | | } |
| | | for (AgvLocMast agvLocMast : agvLocMasts){ |
| | | AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo())); |
| | | if (agvLocMast1.getLocSts().equals("O")){ |
| | |
| | | currentLev: { |
| | | deep: true, |
| | | handler(val) { |
| | | console.log(val) |
| | | this.init() |
| | | if (this.searchMatnr != "" |
| | | || this.searchOrderNo != "" |
| | |
| | | currentFloor: { |
| | | deep: true, |
| | | handler(val) { |
| | | if (val == 1) { |
| | | this.floorList = [1,2] |
| | | } else { |
| | | this.floorList = [1] |
| | | } |
| | | this.init() |
| | | if (this.searchMatnr != "" |
| | | || this.searchOrderNo != "" |