|  |  | 
 |  |  |  | 
 |  |  | import java.io.IOException; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.concurrent.TimeUnit; | 
 |  |  |  | 
 |  |  | @Service | 
 |  |  | @Slf4j | 
 |  |  | 
 |  |  |     public void updateWrkStsByWrkNo(int wrkNo, long wrkSts) { | 
 |  |  |         AgvWrkMast agvWrkMast = this.selectById(wrkNo); | 
 |  |  |         //判断要修改的工作档状态是否合理,如果不合理则抛出异常 | 
 |  |  |         checkWrkSts(agvWrkMast,wrkSts); | 
 |  |  |         checkWrkSts(agvWrkMast, wrkSts); | 
 |  |  |         agvWrkMast.setWrkSts(wrkSts); | 
 |  |  |         agvWrkMast.setModiTime(new Date()); | 
 |  |  |         this.updateById(agvWrkMast); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public void updateWrkStsByWrkNo(int wrkNo, long wrkSts,String manuType,long userId) { | 
 |  |  |     public void updateWrkStsByWrkNo(int wrkNo, long wrkSts, String manuType, long userId) { | 
 |  |  |         Date now = new Date(); | 
 |  |  |         AgvWrkMast agvWrkMast = this.selectById(wrkNo); | 
 |  |  |         //判断要修改的工作档状态是否合理,如果不合理则抛出异常 | 
 |  |  |         checkWrkSts(agvWrkMast,wrkSts); | 
 |  |  |         checkWrkSts(agvWrkMast, wrkSts); | 
 |  |  |         agvWrkMast.setWrkSts(wrkSts); | 
 |  |  |         agvWrkMast.setManuType(manuType); | 
 |  |  |         agvWrkMast.setModiTime(now); | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // TODO 判断规则 | 
 |  |  |     private boolean checkWrkSts(AgvWrkMast agvWrkMast,long wrkSts){ | 
 |  |  |  | 
 |  |  |     private boolean checkWrkSts(AgvWrkMast agvWrkMast, long wrkSts) { | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         return true; | 
 |  |  | 
 |  |  |         AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam(); | 
 |  |  |         //agvTaskCreateParam.setTaskType(taskType); | 
 |  |  |  | 
 |  |  |         getRequestParam(agvTaskCreateParam,agvWrkMast); | 
 |  |  |         getRequestParam(agvTaskCreateParam, agvWrkMast); | 
 |  |  |  | 
 |  |  |         return doHttpRequest(agvTaskCreateParam,"搬运任务下发",url, taskCreatePath,null,"127.0.0.1"); | 
 |  |  |         return doHttpRequest(agvTaskCreateParam, "搬运任务下发", url, taskCreatePath, null, "127.0.0.1"); | 
 |  |  |  | 
 |  |  |         //return containerMoveParam; | 
 |  |  |     } | 
 |  |  | 
 |  |  |     public int startAllcationIn(AgvWrkMast agvWrkMast) throws IOException { | 
 |  |  |         AgvBasDevp basDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo()); | 
 |  |  |         //检索库位,选择合适的库位 | 
 |  |  |         AgvLocMast locMast = agvCommonService.getLocNo(basDevp.getLocType1(),basDevp.getFloor(),false,true); | 
 |  |  |         AgvLocMast locMast = agvCommonService.getLocNo(basDevp.getLocType1(), basDevp.getFloor(), false, true); | 
 |  |  |         agvWrkMast.setLocNo(locMast.getLocNo()); | 
 |  |  |         agvWrkMast.setWrkSts(201L); | 
 |  |  |         agvWrkMast.setLogErrMemo("startAllcationIn"); | 
 |  |  | 
 |  |  |     //货架入场 | 
 |  |  |     public int containerMoveIn(List<AgvWrkMast> agvWrkMastList) throws IOException { | 
 |  |  |         //调用货架入场时所需要参数 | 
 |  |  |         Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>(); | 
 |  |  |         List<Map<String,String>> positionCodeMapList = new ArrayList<>(); | 
 |  |  |         containerMoveParam.put("containerMoveIns",positionCodeMapList); | 
 |  |  |         Map<String, List<Map<String, String>>> containerMoveParam = new HashMap<>(); | 
 |  |  |         List<Map<String, String>> positionCodeMapList = new ArrayList<>(); | 
 |  |  |         containerMoveParam.put("containerMoveIns", positionCodeMapList); | 
 |  |  |  | 
 |  |  |         getContainerMoveParam(agvWrkMastList,positionCodeMapList); | 
 |  |  |         getContainerMoveParam(agvWrkMastList, positionCodeMapList); | 
 |  |  |  | 
 |  |  |         if(Cools.isEmpty(positionCodeMapList)){ | 
 |  |  |         if (Cools.isEmpty(positionCodeMapList)) { | 
 |  |  |             return 0; | 
 |  |  |         } | 
 |  |  |         return doHttpRequest(containerMoveParam,"货架入场任务下发",url, containerMoveInPath,null,"127.0.0.1"); | 
 |  |  |         return doHttpRequest(containerMoveParam, "货架入场任务下发", url, containerMoveInPath, null, "127.0.0.1"); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //货架离场 | 
 |  |  |     public int containerMoveOut(List<AgvWrkMast> agvWrkMastList){ | 
 |  |  |         Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>(); | 
 |  |  |         List<Map<String,String>> positionCodeMapList = new ArrayList<>(); | 
 |  |  |         containerMoveParam.put("containerMoveOuts",positionCodeMapList); | 
 |  |  |         for(AgvWrkMast agvWrkMast : agvWrkMastList){ | 
 |  |  |             Map<String,String> positionCodeMap = new HashMap<>(); | 
 |  |  |             positionCodeMap.put("positionCode",agvWrkMast.getLocNo()); | 
 |  |  |     public int containerMoveOut(List<AgvWrkMast> agvWrkMastList) { | 
 |  |  |         Map<String, List<Map<String, String>>> containerMoveParam = new HashMap<>(); | 
 |  |  |         List<Map<String, String>> positionCodeMapList = new ArrayList<>(); | 
 |  |  |         containerMoveParam.put("containerMoveOuts", positionCodeMapList); | 
 |  |  |         for (AgvWrkMast agvWrkMast : agvWrkMastList) { | 
 |  |  |             Map<String, String> positionCodeMap = new HashMap<>(); | 
 |  |  |             positionCodeMap.put("positionCode", agvWrkMast.getLocNo()); | 
 |  |  |             positionCodeMapList.add(positionCodeMap); | 
 |  |  |         } | 
 |  |  |         return doHttpRequest(containerMoveParam,"货架离场任务下发",url, containerMoveOutPath,null,"127.0.0.1"); | 
 |  |  |         return doHttpRequest(containerMoveParam, "货架离场任务下发", url, containerMoveOutPath, null, "127.0.0.1"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public boolean insertByIncrease(AgvWrkMast agvWrkMast) { | 
 |  |  | 
 |  |  |     //货架到达通知 | 
 |  |  |     public int containerArrived(AgvWrkMast agvWrkMast) { | 
 |  |  |  | 
 |  |  |         Map<String,String> containerArrivedParam = new HashMap<>(); | 
 |  |  |         containerArrivedParam.put("slotCode",agvWrkMast.getSourceLocNo()); | 
 |  |  |         containerArrivedParam.put("containerCode",agvWrkMast.getBarcode()); | 
 |  |  |         Map<String, String> containerArrivedParam = new HashMap<>(); | 
 |  |  |         containerArrivedParam.put("slotCode", agvWrkMast.getSourceLocNo()); | 
 |  |  |         containerArrivedParam.put("containerCode", agvWrkMast.getBarcode()); | 
 |  |  |  | 
 |  |  |         return doHttpRequest(containerArrivedParam,"货架达到通知",url, containerArrivedPath,null,"127.0.0.1"); | 
 |  |  |         return doHttpRequest(containerArrivedParam, "货架达到通知", url, containerArrivedPath, null, "127.0.0.1"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public List<AgvWrkMast> selectReadyAgvWrkMast() { | 
 |  |  |         List<String> stationCodes = agvBasDevpService.selectAllStationCode(); | 
 |  |  |         Wrapper<AgvWrkMast> wrapper = new EntityWrapper<AgvWrkMast>().eq("wrk_sts", 21L).like(false, "loc_no", "@"); | 
 |  |  |         wrapper.in("loc_no",stationCodes); | 
 |  |  |         wrapper.in("loc_no", stationCodes); | 
 |  |  |         return this.selectList(wrapper); | 
 |  |  |         //return this.baseMapper.selectReadyAgvWrkMast(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public AgvWrkMast selectByContainerCode(String containerCode) { | 
 |  |  |         return this.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode",containerCode)); | 
 |  |  |         return this.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", containerCode)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |         AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam(); | 
 |  |  |         agvTaskCreateParam.setTaskCode(wrkNo + ""); | 
 |  |  |  | 
 |  |  |         return doHttpRequest(agvTaskCreateParam,"取消任务下发",url, taskCancelPath,null,"127.0.0.1"); | 
 |  |  |         return doHttpRequest(agvTaskCreateParam, "取消任务下发", url, taskCancelPath, null, "127.0.0.1"); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     private void getContainerMoveParam(List<AgvWrkMast> agvWrkMastList,List<Map<String,String>> positionCodeMapList){ | 
 |  |  |     private void getContainerMoveParam(List<AgvWrkMast> agvWrkMastList, List<Map<String, String>> positionCodeMapList) { | 
 |  |  |         //往货架入场参数中放入源站点位置 | 
 |  |  |         for(AgvWrkMast agvWrkMast : agvWrkMastList){ | 
 |  |  |         for (AgvWrkMast agvWrkMast : agvWrkMastList) { | 
 |  |  |             //判断是否为输送线入库,是则不需要货架进场请求 | 
 |  |  |             if("Y".equals(agvWrkMast.getMk())){ | 
 |  |  |             if ("Y".equals(agvWrkMast.getMk())) { | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             Map<String,String> positionCodeMap = new HashMap<>(); | 
 |  |  |             positionCodeMap.put("positionCode",agvWrkMast.getSourceLocNo()); | 
 |  |  |             Map<String, String> positionCodeMap = new HashMap<>(); | 
 |  |  |             positionCodeMap.put("positionCode", agvWrkMast.getSourceLocNo()); | 
 |  |  |             positionCodeMapList.add(positionCodeMap); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void getRequestParam(AgvTaskCreateParam agvTaskCreateParam,AgvWrkMast agvWrkMast){ | 
 |  |  |     private void getRequestParam(AgvTaskCreateParam agvTaskCreateParam, AgvWrkMast agvWrkMast) { | 
 |  |  |  | 
 |  |  |         List<AgvTaskParam> agvTaskParamList = Arrays.asList( | 
 |  |  |                 //起始位 | 
 |  |  | 
 |  |  | //        //目标位 | 
 |  |  | //        agvTaskParamList.add(new AgvTaskParam(agvWrkMast.getLocNo())); | 
 |  |  |  | 
 |  |  |         if(agvWrkMast.getIoType() == 53 || agvWrkMast.getIoType() == 57 ){ | 
 |  |  |         if (agvWrkMast.getIoType() == 53 || agvWrkMast.getIoType() == 57) { | 
 |  |  |             agvWrkMast.setWrkNo(-agvWrkMast.getWrkNo()); | 
 |  |  |         } | 
 |  |  |         agvTaskCreateParam.setTaskCode(agvWrkMast.getWrkNo().toString()); | 
 |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip){ | 
 |  |  |     private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip) { | 
 |  |  |         String response = ""; | 
 |  |  |         boolean success = false; | 
 |  |  |         try { | 
 |  |  |             response = new HttpHandler.Builder() | 
 |  |  |                     .setUri(url) | 
 |  |  |                     .setPath(path) | 
 |  |  |                     .setTimeout(30, TimeUnit.SECONDS) | 
 |  |  |                     .setJson(JSONObject.toJSONString(requestParam)) | 
 |  |  |                     .build() | 
 |  |  |                     .doPost(); | 
 |  |  |             JSONObject jsonObject = JSON.parseObject(response); | 
 |  |  |  | 
 |  |  |             int code = Integer.parseInt(jsonObject.get("code").toString()); | 
 |  |  |             if(code != 0){ | 
 |  |  |                 //TODO 张超 | 
 |  |  |             if (code != 0) { | 
 |  |  |                 if (code == 6) { | 
 |  |  |                     log.info("AGV任务单号已上报:{}", response); | 
 |  |  |                     String message = jsonObject.getString("message"); | 
 |  |  |                     if (!Cools.isEmpty(message) && message.contains("已存在任务单头为")) { | 
 |  |  |                         success = true; | 
 |  |  |                         return 0; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 throw new CoolException("调用AGV响应错误"); | 
 |  |  |                 //return code; | 
 |  |  |             } | 
 |  |  |             success = true; | 
 |  |  |             return code; | 
 |  |  |         }catch (Exception e){ | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             log.error(e.getMessage()); | 
 |  |  |             //TODO 张超 | 
 |  |  |             throw new CoolException("调用AGV响应错误"); | 
 |  |  |             //return 1; | 
 |  |  |         }finally { | 
 |  |  |         } finally { | 
 |  |  |             apiLogService.save( | 
 |  |  |                     namespace, | 
 |  |  |                     url + path, |