| | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.R; |
| | | import com.core.common.*; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.AgvTaskAssignmentParam; |
| | |
| | | response, bool); |
| | | } |
| | | |
| | | /* |
| | | * agv任务生成 Full |
| | | * */ |
| | | public synchronized void agvTaskCreateFull() { |
| | | // 根据输送线plc遍历 |
| | | for (DevpSlave devp : slaveProperties.getDevp()) { |
| | | // 遍历出库口 |
| | | for (DevpSlave.Sta outStaAgv : devp.getOutStaAgvFull()) { |
| | | // 获取入库站信息 |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(outStaAgv.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | |
| | | // 判断是否满足入库条件 |
| | | if (!staProtocol.isLoading()){ |
| | | continue; |
| | | } |
| | | if (staProtocol.isAutoing() ) { |
| | | WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast) || Cools.isEmpty(wrkMast.getTakeNone()) || !wrkMast.getTakeNone().equals("1")){ |
| | | continue; |
| | | } |
| | | |
| | | // 判断重复工作档 |
| | | List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("task_no", staProtocol.getWorkNo())); |
| | | if (!basAgvMastList.isEmpty()) { |
| | | wrkMast.setTakeNone("2"); |
| | | wrkMastMapper.updateById(wrkMast); |
| | | continue; |
| | | } |
| | | |
| | | // 任务生成区 -------------------------------------------------------------------------- |
| | | |
| | | BasAgvMast basAgvMast = new BasAgvMast(); |
| | | |
| | | |
| | | try { |
| | | LocTypeDto locTypeDto = new LocTypeDto(staProtocol); |
| | | |
| | | SearchLocParam param = new SearchLocParam(); |
| | | param.setBarcode(wrkMast.getBarcode()); |
| | | param.setIoType(1); |
| | | param.setSourceStaNo(outStaAgv.getStaNo()); |
| | | param.setLocType1(locTypeDto.getLocType1()); |
| | | String response = new HttpHandler.Builder() |
| | | .setUri(wmsUrl) |
| | | .setPath("/rpc/pakin/agv/loc/v1") |
| | | .setJson(JSON.toJSONString(param)) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | | StartupDto dto = jsonObject.getObject("data", StartupDto.class); |
| | | |
| | | basAgvMast.setTaskNo(wrkMast.getWrkNo()); |
| | | basAgvMast.setSourceStaNo(outStaAgv.getStaNo()); |
| | | basAgvMast.setLocNo(dto.getLocNo()); |
| | | basAgvMast.setSourceLocNo(wrkMast.getSourceLocNo()); |
| | | basAgvMast.setDevpId(devp.getId()); |
| | | basAgvMast.setIoType(2); |
| | | |
| | | basAgvMastService.insert(basAgvMast); |
| | | |
| | | |
| | | wrkMast.setTakeNone("2"); |
| | | wrkMastMapper.updateById(wrkMast); |
| | | } else { |
| | | News.error(JSON.toJSONString(staProtocol)); |
| | | } |
| | | } catch (Exception e) { |
| | | News.error(JSON.toJSONString(e.getMessage())); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* |
| | | * agv任务生成 Empty |
| | | * */ |
| | | public synchronized void agvTaskCreateEmpty() { |
| | | // 根据输送线plc遍历 |
| | | for (DevpSlave devp : slaveProperties.getDevp()) { |
| | | // 遍历出库口 |
| | | for (DevpSlave.Sta outStaAgv : devp.getOutStaAgvEmpty()) { |
| | | // 获取入库站信息 |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(outStaAgv.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | |
| | | // 判断是否满足入库条件 |
| | | if (!staProtocol.isLoading()){ |
| | | continue; |
| | | } |
| | | |
| | | String barcode = staProtocol.getBarcode(); |
| | | if(!Cools.isEmpty(barcode)) { |
| | | if("NG".endsWith(barcode) || "NoRead".equals(barcode)) { |
| | | News.info("{}号站点扫描器检测条码信息:{}", outStaAgv.getStaNo(), barcode); |
| | | continue; |
| | | } |
| | | } else { |
| | | News.info("{}号站点扫描器检测条码信息:{}", outStaAgv.getStaNo(), barcode); |
| | | continue; |
| | | } |
| | | if (staProtocol.isAutoing()) { |
| | | |
| | | // 判断重复工作档 |
| | | List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("source_sta_no", outStaAgv.getStaNo())); |
| | | if (!basAgvMastList.isEmpty()) { |
| | | News.info("{}号站点存在任务执行中,请等待任务执行完毕:{}", outStaAgv.getStaNo(), barcode); |
| | | continue; |
| | | } |
| | | |
| | | List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("barcode", barcode)); |
| | | if (!locMastList.isEmpty()) { |
| | | News.info("{}号站点条码信息重复:{}", outStaAgv.getStaNo(), barcode); |
| | | continue; |
| | | } |
| | | // 任务生成区 -------------------------------------------------------------------------- |
| | | |
| | | BasAgvMast basAgvMast = new BasAgvMast(); |
| | | |
| | | |
| | | try { |
| | | LocTypeDto locTypeDto = new LocTypeDto(staProtocol); |
| | | |
| | | SearchLocParam param = new SearchLocParam(); |
| | | param.setBarcode(barcode); |
| | | param.setIoType(1); |
| | | param.setSourceStaNo(outStaAgv.getStaNo()); |
| | | param.setLocType1(locTypeDto.getLocType1()); |
| | | String response = new HttpHandler.Builder() |
| | | .setUri(wmsUrl) |
| | | .setPath("/rpc/pakin/agv/loc/v1") |
| | | .setJson(JSON.toJSONString(param)) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | | StartupDto dto = jsonObject.getObject("data", StartupDto.class); |
| | | |
| | | basAgvMast.setTaskNo(outStaAgv.getStaNo()); |
| | | basAgvMast.setSourceStaNo(outStaAgv.getStaNo()); |
| | | basAgvMast.setLocNo(dto.getLocNo()); |
| | | basAgvMast.setDevpId(devp.getId()); |
| | | basAgvMast.setIoType(2); |
| | | |
| | | basAgvMastService.insert(basAgvMast); |
| | | } else { |
| | | News.error(JSON.toJSONString(staProtocol)); |
| | | } |
| | | } catch (Exception e) { |
| | | News.error(JSON.toJSONString(e.getMessage())); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /* |
| | | * agv任务下发:AGV库位==》输送线站点 |
| | |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | |
| | | if (!Cools.isEmpty(staProtocol.getWorkNo()) && staProtocol.getWorkNo().equals(basAgvMast.getTaskNo())){ |
| | | if ((!Cools.isEmpty(staProtocol.getWorkNo()) && staProtocol.getWorkNo().equals(basAgvMast.getTaskNo())) |
| | | || |
| | | (basAgvMast.getSourceStaNo().equals(2033))){ |
| | | |
| | | AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast); |
| | | |