| | |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.R; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.mapper.BasCrnErrorMapper; |
| | |
| | | private ConfigService configService; |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | @Autowired |
| | | private RcsService rcsService; |
| | | |
| | | @Value("${wms.url}") |
| | | private String wmsUrl; |
| | |
| | | } |
| | | |
| | | // 获取入库站信息 |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | |
| | | try { |
| | | LocTypeDto locTypeDto = new LocTypeDto(staProtocol); |
| | | |
| | | // 输出库位类型信息 |
| | | String locTypeStr = locTypeDto.getLocType1() == 1 ? "低库位" : "高库位"; |
| | | log.info("[入库库位分配] 检测到" + locTypeStr + ",开始分配对应库位"); |
| | | |
| | | SearchLocParam param = new SearchLocParam(); |
| | | param.setBarcode(barcode); |
| | | param.setIoType(1); |
| | | |
| | | WaitPakin waitPakin = new WaitPakin(); |
| | | List<WaitPakin> waitPakinList = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>() |
| | | .eq("zpallet", param.getBarcode()) |
| | | ); |
| | | if (waitPakinList.isEmpty()) { |
| | | param.setIoType(10); |
| | | } else { |
| | | param.setIoType(1); |
| | | } |
| | | |
| | | param.setSourceStaNo(inSta.getStaNo()); |
| | | param.setLocType1(locTypeDto.getLocType1()); |
| | | String response = new HttpHandler.Builder() |
| | |
| | | |
| | | try { |
| | | LocTypeDto locTypeDto = new LocTypeDto(staProtocol); |
| | | |
| | | // 输出库位类型信息 |
| | | String locTypeStr = locTypeDto.getLocType1() == 1 ? "低库位" : "高库位"; |
| | | log.info("[入库库位分配] 检测到" + locTypeStr + ",开始分配对应库位"); |
| | | |
| | | SearchLocParam param = new SearchLocParam(); |
| | | param.setBarcode(wrkMast.getBarcode()); |
| | |
| | | } |
| | | } |
| | | String ip = ""; |
| | | if (wrkMast.getStaNo()==401){ |
| | | if (wrkMast.getStaNo() == 401) { |
| | | ip = "172.26.4.231"; |
| | | }else if (wrkMast.getStaNo()==402){ |
| | | } else if (wrkMast.getStaNo() == 402) { |
| | | ip = "172.26.4.232"; |
| | | }else if (wrkMast.getStaNo()==307){ |
| | | ip = "172.26.1.231"; |
| | |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | |
| | | //判断是否有正在执行中的AGV任务 |
| | | List<AgvTask> agvTasks = agvTaskService.selectList(new EntityWrapper<AgvTask>().eq("wrk_sts", 302).eq("source_sta_no", staProtocol.getSiteId())); |
| | | List<AgvTask> agvTasks = agvTaskService.selectList(new EntityWrapper<AgvTask>().eq("wrk_sts", 302).eq("sta_no", String.valueOf(staProtocol.getSiteId()))); |
| | | if (agvTasks != null && agvTasks.size() > 0) { |
| | | continue; |
| | | } |
| | | |
| | | //站点为401或者402时,任务备注为Q时判断该区域中最外侧站点是否能绑定 |
| | | //能绑定说明站点为空,可以继续出库 |
| | | //站点绑定失败则说明区域满了 |
| | | if (staProtocol.getSiteId()==401||staProtocol.getSiteId()==402) { |
| | | BindOrUnbindParam bindOrUnbindParam = new BindOrUnbindParam(); |
| | | String staNo1="LZP10"; |
| | | String staNo2="LZP11"; |
| | | if (wrkMast.getMemo().equals("Q-L2")){ |
| | | staNo1="LZP15"; |
| | | staNo2="LZP16"; |
| | | }else if (wrkMast.getMemo().equals("Q-L3")){ |
| | | staNo1="LZP20"; |
| | | staNo2="LZP21"; |
| | | }else if (wrkMast.getMemo().equals("Q-L4")){ |
| | | staNo1="LZP26"; |
| | | staNo2="LZP26"; |
| | | }else if (wrkMast.getMemo().equals("Q-L5")){ |
| | | staNo1="LZP30"; |
| | | staNo2="LZP31"; |
| | | } |
| | | bindOrUnbindParam.setSiteCode(staNo1); |
| | | R r = rcsService.bindOrUnbind(bindOrUnbindParam); |
| | | if (r != null && r.get("code").equals(200)) { |
| | | |
| | | }else { |
| | | bindOrUnbindParam.setSiteCode(staNo2); |
| | | r = rcsService.bindOrUnbind(bindOrUnbindParam); |
| | | if (r != null && r.get("code").equals(200)) { |
| | | |
| | | }else{ |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | |
| | | try { |
| | | LocTypeDto locTypeDto = new LocTypeDto(staProtocol); |
| | | |
| | | // 输出库位类型信息 |
| | | String locTypeStr = locTypeDto.getLocType1() == 1 ? "低库位" : "高库位"; |
| | | log.info("[入库库位分配] 检测到" + locTypeStr + ",开始分配对应库位"); |
| | | |
| | | SearchLocParam param = new SearchLocParam(); |
| | | param.setIoType(10); |
| | | param.setSourceStaNo(emptyInSta.getStaNo()); |
| | |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | // 获取工作档数据 |
| | | WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo()); |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",staProtocol.getWorkNo())); |
| | | // if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; } |
| | | if (null == wrkMast) { |
| | | continue; |
| | | } |
| | | News.warnNoLog(""+mark+" - 0"+" - 开始执行:出库 ===>> 工作档信息写入led显示器"); |
| | | News.warnNoLog("" + mark + " - 0" + " - 开始执行:出库 ===>> 工作档信息写入led显示器"); |
| | | wrkMasts.add(wrkMast); |
| | | // 组装命令 |
| | | LedCommand ledCommand = new LedCommand(); |
| | |
| | | ledCommand.setIoType(wrkMast.getIoType()); |
| | | // 出库模式 |
| | | switch (wrkMast.getIoType()) { |
| | | case 1: |
| | | ledCommand.setTitle("全板入库"); |
| | | break; |
| | | case 10: |
| | | ledCommand.setTitle("空板入库"); |
| | | break; |
| | | // case 1: |
| | | // ledCommand.setTitle("全板入库"); |
| | | // break; |
| | | // case 10: |
| | | // ledCommand.setTitle("空板入库"); |
| | | // break; |
| | | case 101: |
| | | ledCommand.setTitle("全板出库"); |
| | | break; |
| | |
| | | ledCommand.setTitle("空板出库"); |
| | | ledCommand.setEmptyMk(true); |
| | | break; |
| | | case 53: |
| | | ledCommand.setTitle("拣料入库"); |
| | | break; |
| | | case 57: |
| | | ledCommand.setTitle("盘点入库"); |
| | | break; |
| | | case 54: |
| | | ledCommand.setTitle("并板入库"); |
| | | break; |
| | | // case 53: |
| | | // ledCommand.setTitle("拣料入库"); |
| | | // break; |
| | | // case 57: |
| | | // ledCommand.setTitle("盘点入库"); |
| | | // break; |
| | | // case 54: |
| | | // ledCommand.setTitle("并板入库"); |
| | | // break; |
| | | default: |
| | | News.error(""+mark+" - 1"+" - 任务入出库类型错误!!![工作号:{}] [入出库类型:{}]", wrkMast.getWrkNo(), wrkMast.getIoType()); |
| | | //News.error("" + mark + " - 1" + " - 任务入出库类型错误!!![工作号:{}] [入出库类型:{}]", wrkMast.getWrkNo(), wrkMast.getIoType()); |
| | | break; |
| | | } |
| | | ledCommand.setSourceLocNo(wrkMast.getSourceLocNo()); |
| | | ledCommand.setLocNo(wrkMast.getLocNo()); |
| | | ledCommand.setStaNo(wrkMast.getStaNo()); |
| | | ledCommand.setBarcode(wrkMast.getBarcode()); |
| | | // ledCommand.setSourceStaNo(wrkMast.getSourceStaNo()); |
| | | if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) { |
| | | List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo()); |
| | | try{ |
| | | if (wrkMast.getIoType()>100){ |
| | | for (WrkDetl wrkDetl : wrkDetls){ |
| | | try { |
| | | if (wrkMast.getIoType() > 100) { |
| | | for (WrkDetl wrkDetl : wrkDetls) { |
| | | LocDetl locDetl = locDetlService.selectMatnrSpecs(wrkDetl.getMatnr(), wrkDetl.getSpecs(), wrkMast.getSourceLocNo()); |
| | | wrkDetl.setWeight(locDetl.getAnfme()); |
| | | if (Cools.isEmpty(locDetl)) { |
| | | wrkDetl.setWeight(0.0); |
| | | }else { |
| | | wrkDetl.setWeight(locDetl.getAnfme()); |
| | | } |
| | | } |
| | | }else { |
| | | for (WrkDetl wrkDetl : wrkDetls){ |
| | | } else { |
| | | for (WrkDetl wrkDetl : wrkDetls) { |
| | | wrkDetl.setWeight(wrkDetl.getAnfme()); |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | log.error("工作档案明细输入电视机失败1:异常信息==》"+e); |
| | | } catch (Exception e) { |
| | | log.error("工作档案明细输入电视机失败1:异常信息==》" + e); |
| | | } |
| | | wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getWeight(),wrkDetl.getSpecs(),wrkDetl.getSku()))); |
| | | wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getWeight(), wrkDetl.getSpecs(), wrkDetl.getSku(),wrkDetl.getZpallet()))); |
| | | } |
| | | commands.add(ledCommand); |
| | | } |
| | |
| | | if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) { |
| | | continue; |
| | | } |
| | | // 命令下发 ------------------------------------------------------------------------------- |
| | | // if (!commands.isEmpty()) { |
| | | // if (led.getId() < 7) { |
| | | // if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) { |
| | | // News.error(""+mark+" - 2"+" - {}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort()); |
| | | // continue; |
| | | // } else { |
| | | // ledThread.setLedMk(false); |
| | | // } |
| | | // } else { |
| | | // if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) { |
| | | // News.error(""+mark+" - 3"+" - {}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort()); |
| | | // continue; |
| | | // } else { |
| | | // ledThread.setLedMk(false); |
| | | // } |
| | | // } |
| | | // |
| | | // } |
| | | // 命令下发 ------------------------------------------------------------------------------- |
| | | if (!commands.isEmpty()) { |
| | | if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) { |
| | | News.error("{}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort()); |
| | | continue; |
| | | }else { |
| | | } else { |
| | | ledThread.setLedMk(false); |
| | | } |
| | | } |
| | |
| | | wrkMast.setOveMk("Y"); |
| | | wrkMast.setModiTime(new Date()); |
| | | if (wrkMastMapper.updateById(wrkMast) == 0) { |
| | | News.errorNoLog(""+mark+" - 4"+" - 更新工作档失败"); |
| | | News.errorNoLog("" + mark + " - 4" + " - 更新工作档失败"); |
| | | throw new CoolException("更新工作档失败"); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | } |
| | | News.infoNoLog(""+mark+" - 0"+" - 出库 ===>> 工作档信息写入led显示器执行完成"); |
| | | News.infoNoLog("" + mark + " - 0" + " - 出库 ===>> 工作档信息写入led显示器执行完成"); |
| | | } |
| | | |
| | | /** |