|  |  |  | 
|---|
|  |  |  | 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.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); | 
|---|
|  |  |  |  | 
|---|