src/main/java/com/zy/asrs/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/WrkMast.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/WrkMastExecute.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/AgvHaiKangTaskCreateParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/OpenService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/AutoMoveHaiKangScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/handler/AutoMoveHaiKangHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -204,4 +204,16 @@ System.out.println(JSON.toJSONString(param1)); } /** * 库存统计 */ @RequestMapping("/agv/haikang/complete/v1") public R agvHaiKang(@RequestHeader(required = false) String wrkNo, HttpServletRequest request) { // auth(wrkNo, null, request); return R.ok().add(openService.agvHaiKang(wrkNo)); } } src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -495,6 +495,15 @@ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime); } public Long getWrkStsComplete(){ if (Cools.isEmpty(this.wrkSts)){ return this.wrkSts; } if (this.ioType>10){ return this.wrkSts+2; }else { return this.wrkSts+2; } } } src/main/java/com/zy/asrs/entity/WrkMastExecute.java
@@ -240,5 +240,14 @@ return null; } public Long getWrkStsCode(){ switch (this.wrkSts.intValue()){ case 1: return (long)2; default: return this.wrkSts+1; } } } src/main/java/com/zy/asrs/entity/param/AgvHaiKangTaskCreateParam.java
New file @@ -0,0 +1,34 @@ package com.zy.asrs.entity.param; import lombok.Data; import java.io.Serializable; /** * 对接ESS 任务下发参数 */ @Data public class AgvHaiKangTaskCreateParam implements Serializable { private static final long serialVersionUID = 1L; //任务号 private String taskCode; //任务类型 private String taskTyp; private Long sign; private Integer start; private Integer end; // //任务组 // private String taskGroupCode; // // //任务组优先级 // private int groupPriority; } src/main/java/com/zy/asrs/service/OpenService.java
@@ -43,4 +43,7 @@ * @param param */ void syncMat(MatSyncParam param); boolean agvHaiKang(String wrkNo); } src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -48,6 +48,8 @@ private TagService tagService; @Autowired private TagMapper tagMapper; @Autowired private WrkMastService wrkMastService; @Override @Transactional @@ -544,4 +546,14 @@ } @Override @Transactional public boolean agvHaiKang(String wrkNo) { WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Long.parseLong(wrkNo))); wrkMast.setWrkSts(wrkMast.getWrkStsComplete()); wrkMastService.updateById(wrkMast); return true; } } src/main/java/com/zy/asrs/task/AutoMoveHaiKangScheduler.java
New file @@ -0,0 +1,122 @@ package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.entity.WrkMastExecute; import com.zy.asrs.service.WrkMastExecuteService; import com.zy.asrs.task.handler.AutoMoveHaiKangHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; // 自动移库 @Slf4j @Component public class AutoMoveHaiKangScheduler { @Autowired private WrkMastExecuteService wrkMastExecuteService; @Autowired private AutoMoveHaiKangHandler autoMoveHaiKangHandler; /** * 执行agv_wrk_mast_execute任务 */ // @Scheduled(cron = "0/2 * * * * ? ") private void autoMove(){ List<WrkMastExecute> wrkMastExecuteList = wrkMastExecuteService.selectList(new EntityWrapper<WrkMastExecute>().eq("io_type", 121).eq("wrk_sts",0L)); for (WrkMastExecute wrkMastExecute:wrkMastExecuteList){ try{ if (true){ autoMoveHaiKangHandler.start(wrkMastExecute); } }catch (Exception e){ log.error("执行agv_wrk_mast_execute任务异常===》异常原因:"+e.getMessage()); } } } // // /** // * 下一步agv_wrk_mast_execute任务 // */ //// @Scheduled(cron = "0/2 * * * * ? ") // private void autoMove2(){ // List<WrkMastExecute> wrkMastExecuteList = wrkMastExecuteService.selectList(new EntityWrapper<WrkMastExecute>().eq("io_type", 121).eq("wrk_sts",3L)); // for (WrkMastExecute wrkMastExecute:wrkMastExecuteList){ // Date now = new Date(); // try{ // if (wrkMastExecute.getStatus()==2 && wrkMastExecute.getNowPosition()==1){ // //判断电梯忙不忙 // int count = wrkMastExecuteService.selectCount(new EntityWrapper<WrkMastExecute>().eq("io_type", 121).eq("status", 2)); // if(count<3){ // wrkMastExecute.setStatus(3); // wrkMastExecute.setWrkSts(0L); // wrkMastExecute.setModiTime(now); // wrkMastExecute.setEndPosition(4); // wrkMastExecuteService.updateById(wrkMastExecute); // updateAgvBasDevp(agvBasDevp,"R",agvBasDevp.getLocType2(),agvBasDevp.getBarcode()); // } // } // }catch (Exception e){ // log.error("执行agv_wrk_mast_execute任务异常===》异常原因:"+e.getMessage()); // } // } // } // // /** // * 下一步agv_wrk_mast_execute任务 // */ //// @Scheduled(cron = "0/2 * * * * ? ") // private void autoMove3(){ // List<WrkMastExecute> wrkMastExecuteList = wrkMastExecuteService.selectList(new EntityWrapper<WrkMastExecute>().eq("io_type", 121).eq("wrk_sts",2L)); // for (WrkMastExecute wrkMastExecute:wrkMastExecuteList){ // Date now = new Date(); // try{ // if (wrkMastExecute.getStatus()==2){ // AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no", wrkMastExecute.getRoute()[wrkMastExecute.getEndPosition()])); // if (Cools.isEmpty(agvBasDevp) || !agvBasDevp.getLocSts().equals("S")){ // log.error("站点状态locsts参数有误:locSts:"+agvBasDevp.getLocSts$()); // }else { // wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode()); // wrkMastExecute.setModiTime(now); // wrkMastExecute.setNowPosition(wrkMastExecute.getEndPosition()); // wrkMastExecuteService.updateById(wrkMastExecute); // updateAgvBasDevp(agvBasDevp,"F",agvBasDevp.getLocType2(),agvBasDevp.getBarcode()); // } // }else if (wrkMastExecute.getStatus()==3 || wrkMastExecute.getStatus()==4){ // AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no", wrkMastExecute.getRoute()[wrkMastExecute.getNowPosition()])); // if (Cools.isEmpty(agvBasDevp) || !agvBasDevp.getLocSts().equals("R")){ // log.error("站点状态locsts参数有误:locSts:"+agvBasDevp.getLocSts$()); // }else { // wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode()); // wrkMastExecute.setModiTime(now); // wrkMastExecute.setNowPosition(wrkMastExecute.getEndPosition()); // wrkMastExecuteService.updateById(wrkMastExecute); // agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(),"O","",(short)0); // } // }else if (wrkMastExecute.getStatus()==1){ // wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode()); // wrkMastExecute.setModiTime(now); // wrkMastExecute.setNowPosition(wrkMastExecute.getEndPosition()); // wrkMastExecuteService.updateById(wrkMastExecute); // } // }catch (Exception e){ // log.error("执行agv_wrk_mast_execute任务异常===》异常原因:"+e.getMessage()); // } // } // } // // // // private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts, Short continerType, String containerCode){ // if(!Cools.isEmpty(agvBasDevp)){ // agvBasDevp.setLocSts(locSts); // agvBasDevp.setLocType2(continerType); // agvBasDevp.setBarcode(containerCode); // agvBasDevpService.updateById(agvBasDevp); // } // } } src/main/java/com/zy/asrs/task/handler/AutoMoveHaiKangHandler.java
New file @@ -0,0 +1,149 @@ 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<String> { @Value("${agv.url}") private String url; @Value("${agv.taskCreatePath}") private String taskCreatePath; @Autowired private ApiLogService apiLogService; @Autowired private WrkMastExecuteServiceImpl wrkMastExecuteService; public ReturnT<String> 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<String> 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<AgvTaskParam> 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 ); } } } src/main/resources/application.yml
@@ -10,7 +10,7 @@ enabled: false datasource: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver url: jdbc:sqlserver://192.168.4.15:1433;databasename=source url: jdbc:sqlserver://127.0.0.1:1433;databasename=jxgtasrs username: sa password: sa@123 mvc: