package com.zy.asrs.task.handler; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.core.exception.CoolException; import com.zy.asrs.entity.WrkMastExecute; import com.zy.asrs.entity.param.AgvTaskCreateParam; import com.zy.asrs.entity.param.AgvTaskParam; import com.zy.asrs.service.AgvBasDevpService; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.impl.WrkMastExecuteServiceImpl; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; @Slf4j @Service @Transactional public class AutoMoveTwoAndThreeGoOneHandler extends AbstractHandler { @Value("${agv.url}") private String url; @Value("${agv.taskCreatePath}") private String taskCreatePath; @Autowired AgvBasDevpService agvBasDevpService; @Autowired private ApiLogService apiLogService; @Autowired private WrkMastExecuteServiceImpl wrkMastExecuteService; public ReturnT start(WrkMastExecute wrkMastExecute) { try{ AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam(); getRequestParam(agvTaskCreateParam,wrkMastExecute); int doHttpRequest = doHttpRequest(agvTaskCreateParam, "搬运任务下发==>2-3==1", url, taskCreatePath, null, "127.0.0.1"); if(doHttpRequest != 0){ throw new CoolException("任务下发失败,code:"+doHttpRequest); } wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode()); wrkMastExecute.setModiTime(new Date()); if (!wrkMastExecuteService.updateById(wrkMastExecute)){ throw new CoolException("任务下发成功,但是更新执行任务状态失败:"+doHttpRequest); } }catch (Exception e){ log.error("搬运任务下发===》异常:"+e.getMessage()); } return SUCCESS; } public ReturnT start1(WrkMastExecute wrkMastExecute) { try{ AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam(); getRequestParam(agvTaskCreateParam,wrkMastExecute); int doHttpRequest = doHttpRequest(agvTaskCreateParam, "搬运任务下发", url, taskCreatePath, null, "127.0.0.1"); if(doHttpRequest != 0){ throw new CoolException("任务下发失败,code:"+doHttpRequest); } wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode()); wrkMastExecute.setModiTime(new Date()); if (!wrkMastExecuteService.updateById(wrkMastExecute)){ throw new CoolException("任务下发成功,但是更新执行任务状态失败:"+doHttpRequest); } }catch (Exception e){ log.error("搬运任务下发===》异常:"+e.getMessage()); } return SUCCESS; } private void getRequestParam(AgvTaskCreateParam agvTaskCreateParam, WrkMastExecute wrkMastExecute){ List agvTaskParamList = Arrays.asList( //起始位 new AgvTaskParam(wrkMastExecute.getRoute()[wrkMastExecute.getNowPosition()]), //目标位 new AgvTaskParam(wrkMastExecute.getRoute()[wrkMastExecute.getEndPosition()])); Long wrkNo = wrkMastExecute.getWrkNo(); if (wrkMastExecute.getNowPosition()==1){ agvTaskCreateParam.setTaskCode(wrkMastExecute.getWrkNo().toString()); }else { wrkNo = -wrkNo; agvTaskCreateParam.setTaskCode(wrkNo.toString()); } if (!wrkMastExecute.getSouFloor().equals(wrkMastExecute.getEndFloor())) { agvTaskCreateParam.setTaskTyp("F06"); } else { agvTaskCreateParam.setTaskTyp("F01"); } agvTaskCreateParam.setPositionCodePath(agvTaskParamList); } private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip){ // if (true){ // apiLogService.save( // namespace, // url + path, // appkey, // ip, // JSON.toJSONString(JSONObject.toJSONString(requestParam)), // "", // true // ); // return 0; // } 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 张超 throw new CoolException("调用AGV响应错误"); //return code; } success = true; return code; }catch (Exception e){ log.error(e.getMessage()); //throw new CoolException("调用AGV响应错误"); return 1; }finally { apiLogService.save( namespace, url + path, appkey, ip, JSON.toJSONString(JSONObject.toJSONString(requestParam)), response, success ); } } }