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.AgvHaiKangTaskCreateParam; 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; @Slf4j @Service @Transactional public class AutoMoveHaiKangHandler extends AbstractHandler { @Value("${agv.url}") private String url; @Value("${agv.taskCreatePath}") private String taskCreatePath; @Autowired private ApiLogService apiLogService; @Autowired private WrkMastExecuteServiceImpl wrkMastExecuteService; public ReturnT start(WrkMastExecute wrkMastExecute) { try{ AgvHaiKangTaskCreateParam agvTaskCreateParam = new AgvHaiKangTaskCreateParam(); 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(AgvHaiKangTaskCreateParam agvHaiKangTaskCreateParam, 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){ agvHaiKangTaskCreateParam.setTaskCode(wrkMastExecute.getWrkNo().toString()); }else { wrkNo = -wrkNo; agvHaiKangTaskCreateParam.setTaskCode(wrkNo.toString()); } if (!wrkMastExecute.getSouFloor().equals(wrkMastExecute.getEndFloor())) { agvHaiKangTaskCreateParam.setTaskTyp("F06"); } else { agvHaiKangTaskCreateParam.setTaskTyp("F01"); } // agvHaiKangTaskCreateParam.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) .setJson(JSONObject.toJSONString(requestParam)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); int code = Integer.parseInt(jsonObject.get("code").toString()); if(code != 0){ throw new CoolException("调用AGV响应错误"); } success = true; return code; }catch (Exception e){ log.error(e.getMessage()); throw new CoolException("调用AGV响应错误"); }finally { apiLogService.save( namespace, url + path, appkey, ip, JSON.toJSONString(JSONObject.toJSONString(requestParam)), response, success ); } } }