From 2a6e27f1c0064690d6fc6ab137d64c02fc0742da Mon Sep 17 00:00:00 2001 From: zhang <zc857179121@qq.com> Date: 星期一, 16 六月 2025 16:16:09 +0800 Subject: [PATCH] 1 --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 55 ++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 38 insertions(+), 17 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java index 99f715d..8f9d1bf 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java @@ -179,7 +179,7 @@ if (!destSta.getStaSts().equals(StaStsType.IDLE.val())) { throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status"); } - destSta.setStaSts(StaStsType.PAKIN.val()); + destSta.setStaSts(StaStsType.READY_RELEASE.val()); destSta.setUpdateTime(now); if (!staService.updateById(destSta)) { throw new BusinessException("destSta锛�" + task.getDestSta$() + " failed to update"); @@ -190,7 +190,7 @@ if (!oriSta.getStaSts().equals(StaStsType.STOCK.val())) { throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status"); } - oriSta.setStaSts(StaStsType.PAKOUT.val()); + oriSta.setStaSts(StaStsType.READY_TAKE.val()); oriSta.setUpdateTime(now); if (!staService.updateById(oriSta)) { throw new BusinessException("oriSta锛�" + task.getOriSta$() + " failed to update"); @@ -211,7 +211,7 @@ if (!oriSta.getStaSts().equals(StaStsType.STOCK.val())) { throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status"); } - oriSta.setStaSts(StaStsType.PAKOUT.val()); + oriSta.setStaSts(StaStsType.READY_TAKE.val()); oriSta.setUpdateTime(now); if (!staService.updateById(oriSta)) { throw new BusinessException("oriSta锛�" + task.getOriSta$() + " failed to update"); @@ -221,7 +221,7 @@ if (!destSta.getStaSts().equals(StaStsType.IDLE.val())) { throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status"); } - destSta.setStaSts(StaStsType.PAKIN.val()); + destSta.setStaSts(StaStsType.READY_RELEASE.val()); destSta.setUpdateTime(now); if (!staService.updateById(destSta)) { throw new BusinessException("destSta锛�" + task.getDestSta$() + " failed to update"); @@ -288,7 +288,7 @@ try { // valid ----------------------------------------------- Agv agv = agvService.getById(agvId); - if (!agvService.judgeEnable(agv.getId(), false)) { + if (!agvService.judgeEnable(agv.getId(), false, false)) { return; } if (!Cools.isEmpty(taskService.selectInSts(agvId, TaskStsType.ASSIGN, TaskStsType.PROGRESS))) { @@ -529,13 +529,14 @@ /** * 鍏呯數 鍥炲緟鏈轰綅浠诲姟 + * zc 鏂板浜嗘槸鍚﹀己鍒讹紝寮哄埗璇存槑鐢辩敤鎴峰彂璧凤紝灏忚溅鍦ㄨ秴杩囦綆鐢甸噺灏卞彲浠ュ仛绉诲姩鍏呯數鍘诲緟鏈轰綅 */ @Transactional(propagation = Propagation.REQUIRES_NEW) // although there is a Transactional here that the lock is isolated, but we can't join the caller's Transactional - public boolean buildMinorTask(Long agvId, TaskTypeType taskType, String destination, Jam jam) { + public boolean buildMinorTask(Long agvId, TaskTypeType taskType, String destination, Jam jam,boolean force) { if (Cools.isEmpty(agvId, taskType)) { return false; } try { String agvNo = agvService.getAgvNo(agvId); - if (!agvService.judgeEnable(agvId)) { + if (!agvService.judgeEnable(agvId,false, force)) { return false; } if (!Cools.isEmpty(taskService.selectInSts(agvId, TaskStsType.ASSIGN, TaskStsType.PROGRESS))) { @@ -859,6 +860,7 @@ // 浣滀笟鐐瑰姩浣� AgvDirectionType agvDirectionType; + Double staWorkDirection; AgvBackpackType backpackType = AgvBackpackType.query(segment.getBackpack()); switch (Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType()))) { case ORI_LOC: @@ -974,18 +976,18 @@ lastDirection = oriStaWorkDirection; } // 璁$畻璐у弶宸ヤ綔鏂瑰悜 - agvDirectionType = mapService.calculateAgvWorkDirectionByStation(oriSta, lastCode); + staWorkDirection = mapService.calculateAgvWorkDirectionByStation(oriStaWorkDirection, lastDirection); actionList.add(new Action( null, // 缂栧彿 task.getBusId(), // 鎬荤嚎 task.getId(), // 浠诲姟 null, // 鍔ㄤ綔鍙� null, // 浼樺厛绾� - ActionTypeType.ReadyTakeFromShelvesLoc.desc, // 鍚嶇О - (double) agvDirectionType.val, // 灞炴�у�� + ActionTypeType.ReadyTakeFromConveyorSta.desc, // 鍚嶇О + staWorkDirection, // 灞炴�у�� lastCode.getData(), // 鍦伴潰鐮� String.valueOf(oriSta.getOffset()), // 鍔ㄤ綔鍙傛暟 - ActionTypeType.ReadyTakeFromShelvesLoc.val(), // 鍔ㄤ綔绫诲瀷 + ActionTypeType.ReadyTakeFromConveyorSta.val(), // 鍔ㄤ綔绫诲瀷 actionPrepareSts, // 鍔ㄤ綔杩涘害 agvId, // AGV now // 宸ヤ綔鏃堕棿 @@ -1053,18 +1055,18 @@ now // 宸ヤ綔鏃堕棿 )); // 璁$畻璐у弶宸ヤ綔鏂瑰悜 - agvDirectionType = mapService.calculateAgvWorkDirectionByStation(destSta, lastCode); + staWorkDirection = mapService.calculateAgvWorkDirectionByStation(destStaWorkDirection, lastDirection); actionList.add(new Action( null, // 缂栧彿 task.getBusId(), // 鎬荤嚎 task.getId(), // 浠诲姟 null, // 鍔ㄤ綔鍙� null, // 浼樺厛绾� - ActionTypeType.ReadyReleaseToShelvesLoc.desc, // 鍚嶇О - (double) agvDirectionType.val, // 灞炴�у�� + ActionTypeType.ReadyReleaseToConveyorSta.desc, // 鍚嶇О + staWorkDirection, // 灞炴�у�� lastCode.getData(), // 鍦伴潰鐮� String.valueOf(destSta.getOffset()), // 鍔ㄤ綔鍙傛暟 - ActionTypeType.ReadyReleaseToShelvesLoc.val(), // 鍔ㄤ綔绫诲瀷 + ActionTypeType.ReadyReleaseToConveyorSta.val(), // 鍔ㄤ綔绫诲瀷 actionPrepareSts, // 鍔ㄤ綔杩涘害 agvId, // AGV now // 宸ヤ綔鏃堕棿 @@ -1212,6 +1214,13 @@ if (Cools.isEmpty(actionList)) { return; } + + Long agvId = actionList.get(0).getAgvId(); + String agvNo = agvService.getAgvNo(agvId); + if (!agvService.judgeOnline(agvId)) { + return; + } + long actionIssuedSts = ActionStsType.ISSUED.val(); for (Action action : actionList) { action.setActionSts(actionIssuedSts); @@ -1238,10 +1247,8 @@ } } - String agvNo = agvService.getAgvNo(actionList.get(0).getAgvId()); AgvAction agvAction = new AgvAction(agvNo, actionGroupId); for (Action action : actionList) { - switch (Objects.requireNonNull(ActionTypeType.get(action.getActionTypeEl()))) { case TurnCorner: agvAction.add(new AgvActionItem<>(TurnCornerAction.class) @@ -1275,6 +1282,13 @@ .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams()))) ); break; + case ReadyTakeFromConveyorSta: + agvAction.add(new AgvActionItem<>(ReadyTakeFromConveyorSta.class) + .setVal(action.getVal().intValue()) + .setQrCode(action.getCode()) + .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams()))) + ); + break; case ReadyTakeFromAgvSite: agvAction.add(new AgvActionItem<>(ReadyTakeFromAgvSite.class) .setVal(action.getVal().intValue()) @@ -1289,6 +1303,13 @@ .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams()))) ); break; + case ReadyReleaseToConveyorSta: + agvAction.add(new AgvActionItem<>(ReadyReleaseToConveyorSta.class) + .setVal(action.getVal().intValue()) + .setQrCode(action.getCode()) + .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams()))) + ); + break; case ReadyReleaseToAgvSite: agvAction.add(new AgvActionItem<>(ReadyReleaseToAgvSite.class) .setVal(action.getVal().intValue()) -- Gitblit v1.9.1