|  |  | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.core.common.DateUtils; | 
 |  |  | import com.core.exception.CoolException; | 
 |  |  | import com.zy.asrs.domain.param.ForwardAGVTaskParam; | 
 |  |  | import com.zy.asrs.entity.*; | 
 |  |  | import com.zy.asrs.mapper.*; | 
 |  |  | import com.zy.asrs.service.*; | 
 |  |  | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  | import org.springframework.transaction.interceptor.TransactionAspectSupport; | 
 |  |  |  | 
 |  |  | import java.text.DecimalFormat; | 
 |  |  | import java.text.SimpleDateFormat; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.concurrent.TimeUnit; | 
 |  |  | import java.util.stream.Collectors; | 
 |  |  | 
 |  |  | //        News.infoNoLog(""+mark+" - 0"+" - outOfDevp执行完成"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public synchronized void forwardAGVInTasks() { | 
 |  |  |         for (DevpSlave devp : slaveProperties.getDevp()) { | 
 |  |  |             // 遍历入库口 | 
 |  |  |             for (DevpSlave.Sta agvSta : devp.getAgvOutSta()) { | 
 |  |  |                 // 获取入库站信息 | 
 |  |  |                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); | 
 |  |  |                 StaProtocol staProtocol = devpThread.getStation().get(agvSta.getStaNo()); | 
 |  |  |                 if (staProtocol == null) { | 
 |  |  |                     continue; | 
 |  |  |                 } else { | 
 |  |  |                     staProtocol = staProtocol.clone(); | 
 |  |  |                 } | 
 |  |  |                 if (!(staProtocol.stateType == DevpStateType.AUTO && staProtocol.workType == DevpWorkType.BUSY && staProtocol.requestType == DevpRequestType.OUT)){ | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 if (staProtocol.getWorkNo() != 0){ | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getWorkNo()).eq("wrk_sts", 101).in("crn_no", 8, 9)); | 
 |  |  |                 if(!Cools.isEmpty(wrkMast1)){ | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 //查询状态为2的任务 | 
 |  |  |                 //查询状态为2的任务 | 
 |  |  |                 WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>() | 
 |  |  |                         .eq("wrk_no", staProtocol.getWorkNo()) | 
 |  |  |                         .in("io_type",1,10,53,54,57) | 
 |  |  |                         .in("wrk_sts", 2,104) | 
 |  |  |                         .in("crn_no",8,9)); | 
 |  |  |                 if (Cools.isEmpty(wrkMast)) { | 
 |  |  |                     log.error(agvSta.getStaNo()+"站,转发agv任务未找到对应任务,任务号:"+staProtocol.getWorkNo()); | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 ForwardAGVTaskParam forwardAGVTaskParam = new ForwardAGVTaskParam(); | 
 |  |  |                 getAgvTaskParam(forwardAGVTaskParam,wrkMast,staProtocol.getSiteId()); | 
 |  |  |                 String request = forwardAGVHttpRequest(forwardAGVTaskParam, "10.0.100.110:8182", "/rcms/services/rest/hikRpcService/genAgvSchedulingTask"); | 
 |  |  |                 if ("SUCCESS".equals(request)) { | 
 |  |  |                     wrkMast.setWrkSts(101L); | 
 |  |  |                     boolean update = wrkMastService.updateById(wrkMast); | 
 |  |  |                     if (update){ | 
 |  |  |                         log.info("入库转发AGV任务完成,任务号:"+wrkMast.getWrkNo()); | 
 |  |  |                         devpThread.setPakMk(staProtocol.getSiteId(), false); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void getAgvTaskParam(ForwardAGVTaskParam agvTaskCreateParam,WrkMast param,Integer staNo){ | 
 |  |  |         List<ForwardAGVTaskParam.PositionCodePaths> agvTaskParamList = Arrays.asList( | 
 |  |  |                 //起始位 | 
 |  |  |                 new ForwardAGVTaskParam.PositionCodePaths(staNo.toString(),"05"), | 
 |  |  |                 //目标位 | 
 |  |  |                 new ForwardAGVTaskParam.PositionCodePaths(param.getLocNo(),"05") | 
 |  |  |         ); | 
 |  |  |         Date date = new Date(); | 
 |  |  |         DecimalFormat df = new DecimalFormat("0000"); | 
 |  |  |         String wrkNo = "Ctu"+df.format(param.getWrkNo())+date.getTime()/1000; | 
 |  |  |         agvTaskCreateParam.setReqCode(wrkNo); | 
 |  |  |         agvTaskCreateParam.setReqTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); | 
 |  |  |         agvTaskCreateParam.setTaskTyp("GT1"); | 
 |  |  |         agvTaskCreateParam.setCtnrCode(param.getBarcode()); | 
 |  |  |         agvTaskCreateParam.setPositionCodePath(agvTaskParamList); | 
 |  |  |         agvTaskCreateParam.setCtnrTyp("1"); | 
 |  |  |         agvTaskCreateParam.setTaskCode(wrkNo); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private String forwardAGVHttpRequest(Object requestParam, String url, String path){ | 
 |  |  |         String response = ""; | 
 |  |  |         String success = "error"; | 
 |  |  |         try { | 
 |  |  |             response = new HttpHandler.Builder() | 
 |  |  |                     .setUri(url) | 
 |  |  | //                    .setHttps(true) | 
 |  |  |                     .setPath(path) | 
 |  |  |                     .setJson(JSONObject.toJSONString(requestParam)) | 
 |  |  |                     .build() | 
 |  |  |                     .doPost(); | 
 |  |  |             JSONObject jsonObject = JSON.parseObject(response); | 
 |  |  |  | 
 |  |  |             String message = jsonObject.get("code").toString(); | 
 |  |  |             if(("0").equals(message) || ("请求编号已存在").contains(message)){ | 
 |  |  |                 success = "SUCCESS"; | 
 |  |  |             }else { | 
 |  |  |                 success = message; | 
 |  |  |             } | 
 |  |  |             log.info("转发agv任务:请求体:"+JSONObject.toJSONString(requestParam)+",返回值:"+jsonObject); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         return success; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  |