From 606e903e80fa9a7e77c72879494b47fbd195b93a Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期五, 22 八月 2025 13:42:17 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 166 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java index f81a2ea..37ca2d9 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -8,6 +8,7 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.*; +import com.zy.asrs.entity.vo.AgvSiteListVo; import com.zy.asrs.mapper.BasDevpMapper; import com.zy.asrs.mapper.ManLocDetlMapper; import com.zy.asrs.service.*; @@ -83,6 +84,61 @@ @Resource private BasDevpMapper basDevpMapper; + @Autowired + private AgvSiteService agvSiteService; + + + + @Override + @Transactional(rollbackFor = Exception.class) + public void AgvStaBind(CombParam param,Long userId) { + AgvSite agvSite = agvSiteService.selectOne(new EntityWrapper<AgvSite>().eq("name", param.getBarcode())); + if (Cools.isEmpty(agvSite)){ + throw new CoolException("鏈壘鍒癆GV鏆傚瓨浣嶄俊鎭�"); + } + if (agvSite.getStatus() != 0){ + throw new CoolException("AGV鏆傚瓨浣嶇姸鎬佷笉涓虹┖闂�"); + } + + int workNo = commonService.getWorkNo(1); + Date now = new Date(); + WrkMast wrkMast1 = new WrkMast(); + wrkMast1.setWrkNo(workNo); + wrkMast1.setWrkSts(2L); + wrkMast1.setIoType(300); + wrkMast1.setIoTime(now); + wrkMast1.setIoPri(13D); // 浼樺厛绾э細13 + wrkMast1.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast1.setPicking("N"); // 鎷f枡 + wrkMast1.setExitMk("N"); // 閫�鍑� + wrkMast1.setEmptyMk("N"); // 绌烘澘 + wrkMast1.setLinkMis("N"); + wrkMast1.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast1.setAppeTime(now); + wrkMast1.setModiUser(userId); + wrkMast1.setModiTime(now); + wrkMast1.setBarcode(param.getBarcode()); + if (!wrkMastService.insert(wrkMast1)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 鐢熸垚宸ヤ綔妗f槑缁� + param.getCombMats().forEach(waitPakin -> { + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(waitPakin); + wrkDetl.setWrkNo(workNo); + wrkDetl.setIoTime(now); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + }); + + agvSite.setWorkNo(workNo); + agvSite.setStatus(1); + agvSiteService.updateById(agvSite); + + } @Override public R inLocCallAgv(String sta, String inSta) { @@ -222,6 +278,58 @@ } } return success ? R.ok("瑙g粦鎴愬姛") : R.parse(message); + } + + public boolean sendAgvTask(String org,String tar){ + + ForwardAGVTaskParam forwardAGVTaskParam = new ForwardAGVTaskParam(); + forwardAGVTaskParam.setReqCode(UUID.randomUUID().toString().replace("-", "")); + forwardAGVTaskParam.setClientCode("IWMS"); + forwardAGVTaskParam.setTaskTyp("GT3"); + forwardAGVTaskParam.setCtnrTyp("2"); + forwardAGVTaskParam.setPriority("1"); + List<ForwardAGVTaskParam.PositionCodePaths> positionCodePathsList = new ArrayList<>(); + positionCodePathsList.add(new ForwardAGVTaskParam.PositionCodePaths(org, "05")); + positionCodePathsList.add(new ForwardAGVTaskParam.PositionCodePaths(tar, "05")); + forwardAGVTaskParam.setPositionCodePath(positionCodePathsList); + + String body = JSON.toJSONString(forwardAGVTaskParam); + String response = ""; + String message = ""; + boolean success = false; + try { + response = new HttpHandler.Builder() + .setUri(ApiInterfaceConstant.AGV_IP) + .setPath(ApiInterfaceConstant.AGV_CALL_IN_PATH) + .setJson(body) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(0)) { + success = true; + } else { + + log.error("鍛煎彨agv澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", ApiInterfaceConstant.AGV_IP + ApiInterfaceConstant.AGV_CALL_IN_PATH, body, response); + } + } catch (Exception e) { + log.error("鍏ュ簱鍛煎彨agv寮傚父", e); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + "鍏ュ簱鍛煎彨agv", + ApiInterfaceConstant.AGV_IP + ApiInterfaceConstant.AGV_CALL_IN_PATH, + null, + "127.0.0.1", + body, + response, + success + ); + } catch (Exception e) { + log.error("", e); + } + } + return success; } private boolean bindPodAndBerth(String sta) { @@ -1223,6 +1331,64 @@ } + @Override + public R siteList() { + List<AgvSite> agvSites = agvSiteService.selectList(new EntityWrapper<AgvSite>()); + ArrayList<AgvSiteListVo> agvSiteListVos = new ArrayList<>(); + for (AgvSite agvSite : agvSites) { + AgvSiteListVo agvSiteListVo = new AgvSiteListVo(); + agvSiteListVo.setAgvSite(agvSite); + if (Cools.isEmpty(agvSite.getWorkNo())){ + continue; + } + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", agvSite.getWorkNo())); + if (null == wrkMast){ + continue; + } + List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", agvSite.getWorkNo())); + agvSiteListVo.setWrkDetls(wrkDetls); + agvSiteListVos.add(agvSiteListVo); + } + return R.ok(agvSiteListVos); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R lineCall(Map<String, Object> map) { + String orgSite = map.get("orgSite").toString(); + String tarSite = map.get("tarSite").toString(); + if (Cools.isEmpty(orgSite) || Cools.isEmpty(tarSite)) { + return R.error("鏁版嵁涓虹┖"); + } + AgvSite orgAgvSite = agvSiteService.selectOne(new EntityWrapper<AgvSite>().eq("name", orgSite)); + + AgvSite tarAgvSite = agvSiteService.selectOne(new EntityWrapper<AgvSite>().eq("name", tarSite)); + if (Cools.isEmpty(orgAgvSite) || Cools.isEmpty(tarAgvSite)) { + return R.error("绔欑偣鏁版嵁閿欒"); + } + + //鏇存柊tar绔欑偣鐘舵�� + tarAgvSite.setWorkNo(orgAgvSite.getWorkNo()); + tarAgvSite.setStatus(2); + if (!agvSiteService.updateById(tarAgvSite)){ + throw new CoolException("鍙枡绔欐洿鏂板け璐�"); + } + //鏇存柊org绔欑偣鐘舵�� + orgAgvSite.setStatus(2); + if (!agvSiteService.updateById(orgAgvSite)){ + throw new CoolException("婧愮珯鏇存柊澶辫触"); + } + + //鍛煎彨agv +// boolean success = sendAgvTask(orgSite, tarSite); +// if (!success){ +// throw new CoolException("鍛煎彨agv澶辫触"); +// } + + return R.ok(); + } + + public void uploadErp(InventoryErpParam param){ String response = ""; boolean success = false; -- Gitblit v1.9.1