| src/main/java/com/zy/asrs/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/constant/AgvConstant.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/service/CommonService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/web/WcsController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -578,7 +578,7 @@ @Async public void agvBindAndBin(String taskNo) { try { Thread.sleep(500); Thread.sleep(1000); openService.agvBindAndBin(taskNo); } catch (Exception e) { log.error("异步处理AGV搬运后续逻辑失败", e); src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -11,9 +11,11 @@ import com.zy.asrs.mapper.LocMastMapper; import com.zy.asrs.mapper.ManLocDetlMapper; import com.zy.asrs.service.*; import com.zy.asrs.task.core.ReturnT; 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.MesConstant; import com.zy.common.entity.Parameter; import com.zy.common.model.DetlDto; @@ -22,6 +24,7 @@ import com.zy.common.model.enums.WorkNoType; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import com.zy.erp.kingdee.utils.PostMesDataUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -587,6 +590,10 @@ param.getCombMats().forEach(elem -> { DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(), elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme()); detlDto.setMemo(elem.getMemo()); detlDto.setSupp(elem.getSupp()); detlDto.setManu(elem.getManu()); detlDto.setSuppCode(elem.getSuppCode()); if (DetlDto.has(detlDtos, detlDto)) { DetlDto one = DetlDto.findDto(detlDtos, detlDto); assert one != null; @@ -613,6 +620,10 @@ waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); waitPakin.setMemo(detlDto.getMemo()); waitPakin.setSupp(detlDto.getSupp()); waitPakin.setSuppCode(detlDto.getSuppCode()); waitPakin.setManu(detlDto.getManu()); waitPakin.setStandby1(detlDto.getStandby1()); waitPakin.setStandby2(detlDto.getStandby2()); waitPakin.setStandby3(detlDto.getStandby3()); @@ -645,6 +656,10 @@ elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme()); DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(), elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme()); detlDto.setMemo(elem.getMemo()); detlDto.setSupp(elem.getSupp()); detlDto.setManu(elem.getManu()); detlDto.setSuppCode(elem.getSuppCode()); if (DetlDto.has(detlDtos, detlDto)) { DetlDto one = DetlDto.findDto(detlDtos, detlDto); assert one != null; @@ -670,17 +685,21 @@ waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); waitPakin.setMemo(detlDto.getMemo()); waitPakin.setSupp(detlDto.getSupp()); waitPakin.setSuppCode(detlDto.getSuppCode()); waitPakin.setManu(detlDto.getManu()); waitPakin.setStandby1(detlDto.getStandby1()); waitPakin.setStandby2(detlDto.getStandby2()); waitPakin.setStandby3(detlDto.getStandby3()); waitPakin.setBoxType1(detlDto.getBoxType1()); waitPakin.setBoxType2(detlDto.getBoxType2()); waitPakin.setBoxType3(detlDto.getBoxType3()); waitPakin.setMemo(detlDto.getMemo()); if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); } } // orderService.updateSettle(order.getId(), 2L, userId); OrderInAndOutUtil.updateOrder(Boolean.TRUE,order.getId(), 2L, userId); } @@ -689,7 +708,7 @@ @Override @Transactional public void combAgv(CombParam param, Long userId) { if (Cools.isEmpty(param.getBarcode(), param.getCombMats(),param.getLocNo())) { if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { throw new CoolException(BaseRes.PARAM); } // if(param.getCombMats().size()>1){ @@ -715,20 +734,30 @@ if (countLoc > 0 || countWrk > 0 || countwait > 0) { throw new CoolException("组托档/工作档/库存条码数据已存在===>>" + param.getBarcode()); } if(locMast == null){ throw new CoolException("不存在该库位" + param.getLocNo()); } Date now = new Date(); boolean allEmpty = true; if (param.getCombMats() != null) { for (CombParam.CombMat mat : param.getCombMats()) { if (!Cools.isEmpty(mat.getOrderNo())) { allEmpty = false; break; } } } // 无单组托 if (Cools.isEmpty(param.getOrderNo())) { if (allEmpty) { // 生成入库通知档 List<DetlDto> detlDtos = new ArrayList<>(); param.getCombMats().forEach(elem -> { DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(), elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme()); detlDto.setMemo(elem.getMemo()); detlDto.setSupp(elem.getSupp()); detlDto.setManu(elem.getManu()); detlDto.setSuppCode(elem.getSuppCode()); if (DetlDto.has(detlDtos, detlDto)) { DetlDto one = DetlDto.findDto(detlDtos, detlDto); assert one != null; @@ -755,6 +784,10 @@ waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); waitPakin.setMemo(detlDto.getMemo()); waitPakin.setSupp(detlDto.getSupp()); waitPakin.setSuppCode(detlDto.getSuppCode()); waitPakin.setManu(detlDto.getManu()); waitPakin.setStandby1(detlDto.getStandby1()); waitPakin.setStandby2(detlDto.getStandby2()); waitPakin.setStandby3(detlDto.getStandby3()); @@ -768,7 +801,7 @@ // 关联组托 } else { // Order order = orderService.selectByNo(param.getOrderNo()); Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, param.getOrderNo()); Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, param.getCombMats().get(0).getOrderNo()); if (Cools.isEmpty(order) || order.getSettle() > 2) { throw new CoolException("单据编号已过期"); } @@ -783,14 +816,14 @@ if (elem.getAnfme() > orderDetl.getEnableQty()) { throw new CoolException(orderDetl.getMatnr() + "入库数量不合法"); } // 修改订单作业数量 // if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) { // throw new CoolException("修改单据作业数量失败"); // } OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE,order.getId(), elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(), elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme()); DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(), elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme()); detlDto.setMemo(elem.getMemo()); detlDto.setSupp(elem.getSupp()); detlDto.setManu(elem.getManu()); detlDto.setSuppCode(elem.getSuppCode()); if (DetlDto.has(detlDtos, detlDto)) { DetlDto one = DetlDto.findDto(detlDtos, detlDto); assert one != null; @@ -816,6 +849,10 @@ waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); waitPakin.setMemo(detlDto.getMemo()); waitPakin.setSupp(detlDto.getSupp()); waitPakin.setSuppCode(detlDto.getSuppCode()); waitPakin.setManu(detlDto.getManu()); waitPakin.setStandby1(detlDto.getStandby1()); waitPakin.setStandby2(detlDto.getStandby2()); waitPakin.setStandby3(detlDto.getStandby3()); @@ -825,10 +862,25 @@ if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); } locMast.setLocSts("R"); locMastService.updateById(locMast); } // orderService.updateSettle(order.getId(), 2L, userId); locMast.setLocSts("R"); if(!locMastService.updateById(locMast)){ throw new CoolException("新增agv入库任务失败"); } BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class); BasAgvLocNo basAgvLocNoSou = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("loc_no", param.getLocNo())); AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(); agvBindCtnrAndBinParam.setCtnrCode(param.getBarcode()); agvBindCtnrAndBinParam.setCtnrTyp("1"); agvBindCtnrAndBinParam.setStgBinCode(basAgvLocNoSou.getAgvLocNo()); agvBindCtnrAndBinParam.setReqCode(String.valueOf(System.currentTimeMillis())); agvBindCtnrAndBinParam.setIndBind("1"); ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器解绑", AgvConstant.AGV_URL+"/"+AgvConstant.AGV_1LBind,AgvConstant.getAGVADAPTOR(1), agvBindCtnrAndBinParam); if(resultBind.getCode() != 200){ throw new CoolException("agv入库绑定失败"); } OrderInAndOutUtil.updateOrder(Boolean.TRUE,order.getId(), 2L, userId); } } src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -833,24 +833,28 @@ if (param == null) { throw new CoolException("参数不能为空"); } // 创建对象(构造函数中已生成 timestamp) BasAgvMast basAgvMast = new BasAgvMast(); // 生成 WMS 任务号(如无外部传入,可以使用雪花ID 或自增) Long ts = basAgvMast.getTimestamp(); if (ts == null) { throw new CoolException("timestamp 生成失败"); } String locNo = null; String staNo = null; basAgvMast.setBarcode(Long.toString(ts)); basAgvMast.setTaskNo(commonService.getWorkNo(0)); // 赋值参数 basAgvMast.setSourceStaNo(param.getSourceStaNo()); basAgvMast.setStaNo(param.getStaNo()); basAgvMast.setSourceLocNo(param.getSourceLocNo()); basAgvMast.setLocNo(param.getLocNo()); String locNo = null; String staNo = null; // 默认值 basAgvMast.setPriority(1L); // 默认优先级 basAgvMast.setStatus(0); // 初始状态 basAgvMast.setAppeTime(new Date()); // 添加时间 basAgvMast.setModiTime(new Date()); // 修改时间 basAgvMast.setIoType(param.getIoType());// 任务类型 basAgvMast.setFloorNo(param.getFloorNo()); //楼层 basAgvMast.setPriority(1L); basAgvMast.setStatus(0); basAgvMast.setAppeTime(new Date()); basAgvMast.setModiTime(new Date()); basAgvMast.setIoType(param.getIoType()); basAgvMast.setFloorNo(param.getFloorNo()); switch (basAgvMast.getIoType()){ // AGV库位==》输送线站点 0 // AGV库位==》AGV库位 1 @@ -865,10 +869,10 @@ staNo = param.getSourceStaNo().toString(); break; } // 插入数据库 basAgvMastService.insert(basAgvMast); bindCtnrAndBinParam bindParam = new bindCtnrAndBinParam(); bindParam.setBarcode(basAgvMast.getTimestamp().toString()); bindParam.setBarcode(Long.toString(ts)); bindParam.setIndBind("1"); bindParam.setFloorNo(basAgvMast.getFloorNo()); bindParam.setLocNo(locNo); @@ -975,6 +979,8 @@ } @Override @Transactional public boolean agvApplicationPassedTheGrating(ArmAgvGratingParam arm) { @@ -1005,7 +1011,7 @@ @Override @Transactional public boolean agvBindAndBin(String taskNo) { String URL = "http://10.10.10.200:8181/"; // AGV接口地址 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)){ @@ -1016,39 +1022,45 @@ BasAgvLocNo basAgvLocNoEnd = basAgvLocNoService.selectOne( new EntityWrapper<BasAgvLocNo>().eq("sta_no", basAgvMast.getStaNo()) ); BasAgvLocNo locNo = basAgvLocNoService.selectOne( new EntityWrapper<BasAgvLocNo>().eq("loc_no", basAgvMast.getLocNo()) ); String binCode = basAgvLocNoEnd != null ? basAgvLocNoEnd.getAgvLocNo() : (locNo != null ? locNo.getAgvLocNo() : null); if (Cools.isEmpty(basAgvMast)){ return false; } String ctnrCode = basAgvMast.getBarcode().length() > 1?basAgvMast.getBarcode():basAgvMast.getTimestamp().toString(); AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(); agvBindCtnrAndBinParam.setReqCode(basAgvMast.getTaskNo() + "-" + basAgvMast.getTimestamp()); agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString()); agvBindCtnrAndBinParam.setReqCode(basAgvMast.getTaskNo() + "-" + System.currentTimeMillis()); agvBindCtnrAndBinParam.setCtnrCode(ctnrCode); agvBindCtnrAndBinParam.setCtnrTyp("1"); agvBindCtnrAndBinParam.setStgBinCode(basAgvLocNoEnd.getAgvLocNo()); agvBindCtnrAndBinParam.setStgBinCode(binCode); agvBindCtnrAndBinParam.setIndBind("0"); ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器绑定解绑", URL,AGVPath, agvBindCtnrAndBinParam); if (resultBind.getCode()!=200){ 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 || basAgvMast.getStaNo()==4003)){ if (basAgvMast.getIoType()==0 && (basAgvMast.getSourceStaNo()==2033 || basAgvMast.getStaNo()==4003)){ AgvBindCtnrAndBinTwoParam agvBindCtnrAndBinTwoParam = new AgvBindCtnrAndBinTwoParam(); agvBindCtnrAndBinTwoParam.setReqCode(String.valueOf(snowflakeIdWorker.nextId())); agvBindCtnrAndBinTwoParam.setPodcode(basAgvMast.getBarcode()); agvBindCtnrAndBinTwoParam.setPositionCode(basAgvMast.getStaNo().toString()); agvBindCtnrAndBinTwoParam.setIndBind("0");; ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器绑定解绑", ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器解绑", AgvConstant.AGV_URL+"/"+AgvConstant.AGV_hikRpcService,AgvConstant.getAGVADAPTOR(2), agvBindCtnrAndBinTwoParam); if (resultBind.getCode()!=200){ if (resultBind.getCode()!=1){ basAgvMast.setStatus(4); basAgvMastService.updateById(basAgvMast); return true; } } } return false; } src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java
@@ -114,10 +114,14 @@ LocMast locMast2 = locMastService.selectById(basAgvMast.getLocNo()); // 修改库位状态 S ====>> F if (locMast2.getLocSts().equals("S")) { if (locMast2.getLocSts().equals("S") ) { locMast2.setLocSts("F"); locMast2.setIoTime(now); locMast2.setModiTime(now); } else if(basAgvMast.getTaskNo()>10000){ locMast2.setLocSts("D"); locMast2.setIoTime(now); locMast2.setModiTime(now); } else { return FAIL.setMsg("库位状态异常"); } src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
@@ -470,6 +470,7 @@ OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(mat); orderDetl.setAnfme(anfme);//总箱数 orderDetl.setErpAnfme(anfme); orderDetl.setOrderId(order.getId()); orderDetl.setOrderNo(order.getOrderNo());//表头单据 orderDetl.setSupp(supp);//供应商名称(货源) src/main/java/com/zy/common/constant/AgvConstant.java
@@ -8,9 +8,9 @@ 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_1LBind = "rcms/services/rest/hikRpcService/bindCtnrAndBin"; 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: src/main/java/com/zy/common/service/CommonService.java
@@ -1007,7 +1007,7 @@ //此程序用于优化堆垛机异常时的运行时间 int[] locNecessaryParameters = Utils.LocNecessaryParameters(rowLastno, curRow, crnNumber); curRow = locNecessaryParameters[1]; crnNo = locNecessaryParameters[2]; crnNo = 6; rowCount = locNecessaryParameters[0]; nearRow = locNecessaryParameters[3]; @@ -1047,7 +1047,7 @@ // 开始查找库位 ==============================>> // 1.按规则查找库位 if (Cools.isEmpty(locMast) && crnNo != 0) { if (Cools.isEmpty(locMast)) { List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .eq("row1", nearRow) .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()) src/main/java/com/zy/common/web/WcsController.java
@@ -126,7 +126,7 @@ } // 源站点状态检测 BasDevp sourceStaNo = basDevpService.selectById(param.getSourceStaNo()); if(sourceStaNo.getWrkNo() == 0 ){ if(sourceStaNo.getWrkNo() == 0 && sourceStaNo.getDevNo() != 2033){ return R.error("站点工作号不存在"); } sourceStaNo.setLocType1(param.getLocType1()); @@ -265,7 +265,7 @@ // 源站点状态检测 // BasDevp sourceStaNo = basDevpService.checkSiteStatus(transplantWork.getStaNo(), true); WrkMast wrkMast1 = wrkMastService.selectWrkMast(transplantWork.getWorkNo(),transplantWork.getBarcode()); // if(sourceStaNo ==null ){ // if(sourceStaNo ==null )hnagbao1{ // return R.error("该站点盘点移栽许可,请查看源站点状态检测"); // } if(wrkMast1== null){