| src/main/java/com/zy/asrs/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/BasAgvMast.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/BasAgvMastLog.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/param/AgvBindCtnrAndBinTwoParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/param/AgvGoTheArnParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/param/bindCtnrAndBinParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/WorkLogScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/constant/AgvConstant.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/BasAgvMastLogMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/static/js/common.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -374,6 +374,9 @@ } catch (Exception e){ return R.error("单据编号[order_id]以 "+sign_arm_sku+" 与 "+sign_arm_order+" 作为拆分标记拆分失败!!!"); } if (param.getArm_no()>4){ return R.ok(); } openService.taskArmWorkOrderStatus(param); return R.ok(); @@ -451,7 +454,7 @@ boolean taskAgvReport = openService.TaskAgvReport(param); if (taskAgvReport){ agvBindAndBin(String.valueOf(param.getTaskNo())); return R.ok(); return new R(0,"成功"); } return R.error("任务号不存在"); } @@ -551,7 +554,7 @@ Thread.sleep(500); openService.agvBindAndBin(taskNo); } catch (Exception e) { log.error("异步处理AGV光栅后续逻辑失败", e); log.error("异步处理AGV搬运后续逻辑失败", e); } } src/main/java/com/zy/asrs/entity/BasAgvMast.java
@@ -136,9 +136,15 @@ @TableField("devp_id") private Integer devpId; /** * barcode */ @ApiModelProperty(value= "barcode") private String barcode; @ApiModelProperty(value= "任务类型") @TableField("io_type") private Integer ioType; private Integer ioType;//AGV库位==》输送线站点 0 AGV库位==》AGV库位 1 输送线站点==》AGV库位 2 输送线站点==》输送线站点 3 public BasAgvMast() { SnowflakeIdWorker snowflakeIdWorker = SpringUtils.getBean(SnowflakeIdWorker.class); src/main/java/com/zy/asrs/entity/BasAgvMastLog.java
@@ -87,6 +87,12 @@ private Integer floorNo; /** * barcode */ @ApiModelProperty(value= "barcode") private String barcode; /** * 状态 0: 初始 1: 作业中 2: 完成 */ @ApiModelProperty(value= "状态 0: 初始 1: 作业中 2: 完成 ") src/main/java/com/zy/asrs/entity/param/AgvBindCtnrAndBinTwoParam.java
New file @@ -0,0 +1,15 @@ package com.zy.asrs.entity.param; import lombok.Data; /* * Created by Monkey D. Luffy on 2025.09.09 * */ @Data public class AgvBindCtnrAndBinTwoParam { private String reqCode; private String podCode;//托盘码 private String positionCode = "2034";//站点 private String indBind; } src/main/java/com/zy/asrs/entity/param/AgvGoTheArnParam.java
@@ -23,7 +23,7 @@ case "3100101": case "3100201": ArmAgvGratingParam armAgvGratingParam1 = new ArmAgvGratingParam(); armAgvGratingParam1.setArmNo(5); armAgvGratingParam1.setArmNo(6); armAgvGratingParam1.setChannel("A1"); armList.add(armAgvGratingParam1); return armList; @@ -34,11 +34,11 @@ case "2900101": case "2900201": ArmAgvGratingParam armAgvGratingParam2 = new ArmAgvGratingParam(); armAgvGratingParam2.setArmNo(5); armAgvGratingParam2.setArmNo(6); armAgvGratingParam2.setChannel("A2"); armList.add(armAgvGratingParam2); ArmAgvGratingParam armAgvGratingParam3 = new ArmAgvGratingParam(); armAgvGratingParam3.setArmNo(6); armAgvGratingParam3.setArmNo(5); armAgvGratingParam3.setChannel("A1"); armList.add(armAgvGratingParam3); return armList; @@ -47,7 +47,7 @@ case "2800101": case "2800201": ArmAgvGratingParam armAgvGratingParam4 = new ArmAgvGratingParam(); armAgvGratingParam4.setArmNo(6); armAgvGratingParam4.setArmNo(5); armAgvGratingParam4.setChannel("A2"); armList.add(armAgvGratingParam4); return armList; src/main/java/com/zy/asrs/entity/param/bindCtnrAndBinParam.java
@@ -7,5 +7,6 @@ String barcode; //托盘条码 String staNo; // 目标站点 String locNo; // 目标库位 Integer floorNo = 1; // 目标楼层 String indBind; // 0:解绑 1:绑定 } src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -18,6 +18,7 @@ import com.zy.asrs.utils.MatUtils; import com.zy.asrs.utils.OrderInAndOutUtil; import com.zy.asrs.utils.Utils; import com.zy.common.constant.AgvConstant; import com.zy.common.constant.ArmConstant; import com.zy.common.model.DetlDto; import com.zy.common.service.CommonService; @@ -807,6 +808,8 @@ basAgvMast.setStaNo(param.getStaNo()); basAgvMast.setSourceLocNo(param.getSourceLocNo()); basAgvMast.setLocNo(param.getLocNo()); String locNo = null; String staNo = null; // 默认值 basAgvMast.setPriority(1L); // 默认优先级 basAgvMast.setStatus(0); // 初始状态 @@ -814,11 +817,33 @@ basAgvMast.setModiTime(new Date()); // 修改时间 basAgvMast.setIoType(param.getIoType());// 任务类型 basAgvMast.setFloorNo(param.getFloorNo()); //楼层 switch (basAgvMast.getIoType()){ // AGV库位==》输送线站点 0 // AGV库位==》AGV库位 1 // 输送线站点==》AGV库位 2 // 输送线站点==》输送线站点 3 case 0: case 1: locNo = param.getSourceLocNo(); break; case 2: case 3: staNo = param.getSourceStaNo().toString(); break; } // 插入数据库 basAgvMastService.insert(basAgvMast); bindCtnrAndBinParam bindParam = new bindCtnrAndBinParam(); bindParam.setBarcode(basAgvMast.getTimestamp().toString()); bindParam.setIndBind("1"); bindParam.setFloorNo(basAgvMast.getFloorNo()); bindParam.setLocNo(locNo); bindParam.setStaNo(staNo); if(bindCtnrAndBin(bindParam)){ return true; }else{ throw new CoolException("未能绑定"); } } @Override @@ -865,6 +890,7 @@ if (param == null) { throw new CoolException("参数不能为空"); } if (param.getFloorNo()==1){ AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(); BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class); BasAgvLocNo basAgvLocNoSou = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("loc_no", param.getLocNo())); @@ -880,8 +906,8 @@ } agvBindCtnrAndBinParam.setIndBind(param.getIndBind()); try { String URL = "http://10.10.10.200:8181/rcms/services/rest/hikRpcService"; // AGV接口地址 String mesPath = "bindCtnrAndBin"; // 接口路径 String URL = AgvConstant.AGV_URL+"/"+AgvConstant.AGV_hikRpcService; // AGV接口地址 String mesPath = AgvConstant.getAGVADAPTOR(param.getFloorNo()); // 接口路径 String response = ""; boolean success = false; try { @@ -910,6 +936,7 @@ } catch (Exception e) { throw new CoolException(e.getMessage()); } } else {} return true; } @@ -933,7 +960,7 @@ agvGoParam.setCode("0"); agvGoParam.setMessage("继续执行"); agvGoParam.setReqCode(param.getReqCode()); ReturnT<String> result = new PostMesDataUtils().postMesDataArmGrating("光栅下发后继续任务:", URL, AGVPath, param); ReturnT<String> result = new PostMesDataUtils().postMesDataArmGrating("光栅下发后继续任务:", URL, AGVPath, agvGoParam); if (result.getCode()==200){ return true; } @@ -946,10 +973,17 @@ String URL = "http://10.10.10.200:8181/"; // AGV接口地址 String AGVPath = "rcms/services/rest/hikRpcService/bindCtnrAndBin"; // 接口路径 BasAgvMast basAgvMast = basAgvMastService.selectOne(new EntityWrapper<BasAgvMast>().eq("task_no",taskNo)); if (Cools.isEmpty(basAgvMast)){ return false; } if (basAgvMast.getFloorNo()==1){ BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class); BasAgvLocNo basAgvLocNoEnd = basAgvLocNoService.selectOne( new EntityWrapper<BasAgvLocNo>().eq("sta_no", basAgvMast.getStaNo()) ); if (Cools.isEmpty(basAgvMast)){ return false; } AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(); agvBindCtnrAndBinParam.setReqCode(basAgvMast.getTaskNo() + "-" + basAgvMast.getTimestamp()); agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString()); @@ -958,9 +992,30 @@ agvBindCtnrAndBinParam.setIndBind("0"); ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器绑定解绑", URL,AGVPath, agvBindCtnrAndBinParam); if (resultBind.getCode()!=200){ basAgvMast.setStatus(4); basAgvMastService.updateById(basAgvMast); return true; } return false; }else { if (basAgvMast.getIoType()==0 && basAgvMast.getStaNo()==2034){ AgvBindCtnrAndBinTwoParam agvBindCtnrAndBinTwoParam = new AgvBindCtnrAndBinTwoParam(); agvBindCtnrAndBinTwoParam.setReqCode(basAgvMast.getTaskNo() + "-" + basAgvMast.getTimestamp()); agvBindCtnrAndBinTwoParam.setPodCode(basAgvMast.getBarcode()); agvBindCtnrAndBinTwoParam.setPositionCode(basAgvMast.getStaNo().toString()); agvBindCtnrAndBinTwoParam.setIndBind("0");; ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器绑定解绑", AgvConstant.AGV_URL+"/"+AgvConstant.AGV_hikRpcService,AgvConstant.getAGVADAPTOR(2), agvBindCtnrAndBinTwoParam); if (resultBind.getCode()!=200){ basAgvMast.setStatus(4); basAgvMastService.updateById(basAgvMast); return true; } } } return false; } src/main/java/com/zy/asrs/task/WorkLogScheduler.java
@@ -72,7 +72,7 @@ @Scheduled(cron = "0/10 * * * * ? ") private void executeAgv(){ List<BasAgvMast> basAgvstList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("status", 3)); List<BasAgvMast> basAgvstList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("status", 4)); if (basAgvstList.isEmpty()) { return; } src/main/java/com/zy/common/constant/AgvConstant.java
New file @@ -0,0 +1,23 @@ package com.zy.common.constant; /* * Created by Monkey D. Luffy on 2025.09.09 * */ public class AgvConstant { public static final String AGV_URL = "http://10.10.10.200:8181"; public static final String AGV_hikRpcService = "rcms/services/rest/hikRpcService"; public static final String AGV_bindPodAndBerth = "bindPodAndBerth";//bangding 2 public static final String AGV_bindCtnrAndBin = "bindCtnrAndBin";//bangding 1 public static String getAGVADAPTOR(int f) { switch (f) { case 1: return AGV_bindCtnrAndBin; default: return AGV_bindPodAndBerth; } } } src/main/resources/mapper/BasAgvMastLogMapper.xml
@@ -13,6 +13,7 @@ <result column="loc_no" property="locNo" /> <result column="priority" property="priority" /> <result column="floor_no" property="floorNo" /> <result column="barcode" property="barcode" /> <result column="status" property="status" /> <result column="error_time" property="errorTime" /> <result column="error_memo" property="errorMemo" /> src/main/webapp/static/js/common.js
@@ -203,8 +203,8 @@ ,{field: 'safeQty', align: 'center',title: '总件数', hide: true} ,{field: 'weight', align: 'center',title: '单箱净重kg', hide: false} ,{field: 'manLength', align: 'center',title: '长(毫米)', hide: false} ,{field: 'height', align: 'center',title: '宽(毫米)', hide: false} ,{field: 'width', align: 'center',title: '高(毫米)', hide: false} ,{field: 'width', align: 'center',title: '宽(毫米)', hide: false} ,{field: 'height', align: 'center',title: '高(毫米)', hide: false} // ,{field: 'length', align: 'center',title: '单箱毛重', hide: true}