From 6166c4551aa61019413713e8f2ce1aa626dec971 Mon Sep 17 00:00:00 2001 From: vincentlu <t1341870251@gmail.com> Date: 星期二, 01 四月 2025 13:50:07 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 158 ++++++++++++++++++++++++------- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java | 56 +---------- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/ActionTypeType.java | 4 version/db/jbly/20250401/dual.sql | 12 ++ zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvDirectionType.java | 1 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java | 16 +++ 6 files changed, 159 insertions(+), 88 deletions(-) diff --git a/version/db/jbly/20250401/dual.sql b/version/db/jbly/20250401/dual.sql new file mode 100644 index 0000000..34a946c --- /dev/null +++ b/version/db/jbly/20250401/dual.sql @@ -0,0 +1,12 @@ +INSERT INTO man_sta_sts (id, uuid, name, status, deleted, tenant_id, create_by, create_time, update_by, update_time, memo) VALUES (15, 'IDLE', '绌洪棽', 1, 0, 2, 41, '2023-06-09 02:11:08', 41, '2023-06-09 02:11:38', ''); +INSERT INTO man_sta_sts (id, uuid, name, status, deleted, tenant_id, create_by, create_time, update_by, update_time, memo) VALUES (16, 'STOCK', '鏈夎揣', 1, 0, 2, 41, '2023-06-09 02:11:20', 41, '2023-06-18 15:20:31', ''); +INSERT INTO man_sta_sts (id, uuid, name, status, deleted, tenant_id, create_by, create_time, update_by, update_time, memo) VALUES (17, 'PAKIN', '鏀捐揣棰勭害', 1, 0, null, 41, '2023-06-18 15:20:58', 41, '2023-06-18 15:20:58', ''); +INSERT INTO man_sta_sts (id, uuid, name, status, deleted, tenant_id, create_by, create_time, update_by, update_time, memo) VALUES (18, 'PAKOUT', '鍙栬揣棰勭害', 1, 0, null, 41, '2023-06-18 15:21:08', 41, '2023-06-18 15:21:08', ''); +INSERT INTO man_sta_sts (id, uuid, name, status, deleted, tenant_id, create_by, create_time, update_by, update_time, memo) VALUES (19, 'DISABLED', '绂佺敤', 1, 0, null, 41, '2023-06-18 15:21:29', 41, '2023-06-18 15:21:29', ''); +INSERT INTO man_sta_sts (id, uuid, name, status, deleted, tenant_id, create_by, create_time, update_by, update_time, memo) VALUES (20, 'OTHER', '鍏朵粬', 1, 0, null, 41, '2023-06-21 21:17:06', 41, '2023-06-21 21:17:06', ''); + +alter table man_sta + add angle varchar(255) null comment '浣滀笟瑙掑害' after offset; + +INSERT INTO man_action_type (id, uuid, name, status, deleted, tenant_id, create_by, create_time, update_by, update_time, memo) VALUES (26, 'ReadyTakeFromConveyorSta', '鍑嗗浠庤緭閫佺嚎鍙栬揣', 1, 0, null, 41, '2023-06-09 19:41:10', 41, '2023-06-09 19:41:10', null); +INSERT INTO man_action_type (id, uuid, name, status, deleted, tenant_id, create_by, create_time, update_by, update_time, memo) VALUES (27, 'ReadyReleaseToConveyorSta', '鍑嗗寰�杈撻�佺嚎鏀捐揣', 1, 0, null, 41, '2023-06-09 19:41:10', 41, '2023-06-09 19:41:10', null); diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvDirectionType.java b/zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvDirectionType.java index 26ea410..7454ec5 100644 --- a/zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvDirectionType.java +++ b/zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvDirectionType.java @@ -4,6 +4,7 @@ LEFT(1), RIGHT(2), + FORWARD(0), ; public int val; 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 e49c524..99f715d 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 @@ -866,28 +866,11 @@ // 妫�楠屾柟鍚� if (!lastDirection.equals(workDirection)) { throw new CoolException(agvNo + "鍙峰皬杞︽柟鍚戦敊璇紝璇锋帹鑷宠浆寮偣鎵嬪姩璋冩暣"); - // turn -// actionList.add(new Action( -// null, // 缂栧彿 -// task.getBusId(), // 鎬荤嚎 -// task.getId(), // 浠诲姟 -// null, // 鍔ㄤ綔鍙� -// null, // 浼樺厛绾� -// ActionTypeType.TurnCorner.desc, // 鍚嶇О -// mapService.isTurnCorner(lastCode.getData()) ? 1D : 0D, // 灞炴�у�� -// lastCode.getData(), // 鍦伴潰鐮� -// String.valueOf(workDirection), // 鍔ㄤ綔鍙傛暟 -// ActionTypeType.TurnCorner.val(), // 鍔ㄤ綔绫诲瀷 -// actionPrepareSts, // 鍔ㄤ綔杩涘害 -// agvId, // AGV -// now // 宸ヤ綔鏃堕棿 -// )); -// lastDirection = workDirection; } // 璐ф灦鍙栬揣 Loc oriLoc = locService.getById(task.getOriLoc()); // 璁$畻宸﹀彸鏂瑰悜 - agvDirectionType = mapService.calculateAgvWorkDirection(oriLoc, lastCode); + agvDirectionType = mapService.calculateAgvWorkDirectionByShelf(oriLoc, lastCode); actionList.add(new Action( null, // 缂栧彿 task.getBusId(), // 鎬荤嚎 @@ -925,23 +908,6 @@ // 妫�楠屾柟鍚� if (!lastDirection.equals(workDirection)) { throw new CoolException(agvNo + "鍙峰皬杞︽柟鍚戦敊璇紝璇锋帹鑷宠浆寮偣鎵嬪姩璋冩暣"); -// // turn -// actionList.add(new Action( -// null, // 缂栧彿 -// task.getBusId(), // 鎬荤嚎 -// task.getId(), // 浠诲姟 -// null, // 鍔ㄤ綔鍙� -// null, // 浼樺厛绾� -// ActionTypeType.TurnCorner.desc, // 鍚嶇О -// mapService.isTurnCorner(lastCode.getData()) ? 1D : 0D, // 灞炴�у�� -// lastCode.getData(), // 鍦伴潰鐮� -// String.valueOf(workDirection), // 鍔ㄤ綔鍙傛暟 -// ActionTypeType.TurnCorner.val(), // 鍔ㄤ綔绫诲瀷 -// actionPrepareSts, // 鍔ㄤ綔杩涘害 -// agvId, // AGV -// now // 宸ヤ綔鏃堕棿 -// )); -// lastDirection = workDirection; } // 鏆傚瓨鐐瑰彇璐ц揣 actionList.add(new Action( @@ -963,7 +929,7 @@ // 璐ф灦鏀捐揣 Loc destLoc = locService.getById(task.getDestLoc()); // 璁$畻宸﹀彸鏂瑰悜 - agvDirectionType = mapService.calculateAgvWorkDirection(destLoc, lastCode); + agvDirectionType = mapService.calculateAgvWorkDirectionByShelf(destLoc, lastCode); actionList.add(new Action( null, // 缂栧彿 task.getBusId(), // 鎬荤嚎 @@ -981,8 +947,128 @@ )); break; case ORI_STA: + // 绔欑偣鍙栬揣 + Sta oriSta = staService.getById(task.getOriSta()); + Double oriStaWorkDirection = mapService.getStaAngle(oriSta, workDirection); + // 妫�楠屾柟鍚� + if (!lastDirection.equals(oriStaWorkDirection)) { + if (!lastCode.getCornerBool()) { + throw new CoolException(agvNo + "鍙峰皬杞︽柟鍚戦敊璇紝璇锋帹鑷宠浆寮偣鎵嬪姩璋冩暣"); + } + // turn + actionList.add(new Action( + null, // 缂栧彿 + task.getBusId(), // 鎬荤嚎 + task.getId(), // 浠诲姟 + null, // 鍔ㄤ綔鍙� + null, // 浼樺厛绾� + ActionTypeType.TurnCorner.desc, // 鍚嶇О + mapService.isTurnCorner(lastCode.getData()) ? 1D : 0D, // 灞炴�у�� + lastCode.getData(), // 鍦伴潰鐮� + String.valueOf(oriStaWorkDirection), // 鍔ㄤ綔鍙傛暟 + ActionTypeType.TurnCorner.val(), // 鍔ㄤ綔绫诲瀷 + actionPrepareSts, // 鍔ㄤ綔杩涘害 + agvId, // AGV + now // 宸ヤ綔鏃堕棿 + )); + lastDirection = oriStaWorkDirection; + } + // 璁$畻璐у弶宸ヤ綔鏂瑰悜 + agvDirectionType = mapService.calculateAgvWorkDirectionByStation(oriSta, lastCode); + actionList.add(new Action( + null, // 缂栧彿 + task.getBusId(), // 鎬荤嚎 + task.getId(), // 浠诲姟 + null, // 鍔ㄤ綔鍙� + null, // 浼樺厛绾� + ActionTypeType.ReadyTakeFromShelvesLoc.desc, // 鍚嶇О + (double) agvDirectionType.val, // 灞炴�у�� + lastCode.getData(), // 鍦伴潰鐮� + String.valueOf(oriSta.getOffset()), // 鍔ㄤ綔鍙傛暟 + ActionTypeType.ReadyTakeFromShelvesLoc.val(), // 鍔ㄤ綔绫诲瀷 + actionPrepareSts, // 鍔ㄤ綔杩涘害 + agvId, // AGV + now // 宸ヤ綔鏃堕棿 + )); + // 鏆傚瓨鐐规斁璐� + assert backpackType != null; + actionList.add(new Action( + null, // 缂栧彿 + task.getBusId(), // 鎬荤嚎 + task.getId(), // 浠诲姟 + null, // 鍔ㄤ綔鍙� + null, // 浼樺厛绾� + ActionTypeType.ReadyReleaseToAgvSite.desc, // 鍚嶇О + (double) backpackType.lev, // 灞炴�у�� + lastCode.getData(), // 鍦伴潰鐮� + String.valueOf(backpackType.height), // 鍔ㄤ綔鍙傛暟 + ActionTypeType.ReadyReleaseToAgvSite.val(), // 鍔ㄤ綔绫诲瀷 + actionPrepareSts, // 鍔ㄤ綔杩涘害 + agvId, // AGV + now // 宸ヤ綔鏃堕棿 + )); break; case DEST_STA: + // 绔欑偣鏀捐揣 + Sta destSta = staService.getById(task.getDestSta()); + Double destStaWorkDirection = mapService.getStaAngle(destSta, workDirection); + // 妫�楠屾柟鍚� + if (!lastDirection.equals(destStaWorkDirection)) { + if (!lastCode.getCornerBool()) { + throw new CoolException(agvNo + "鍙峰皬杞︽柟鍚戦敊璇紝璇锋帹鑷宠浆寮偣鎵嬪姩璋冩暣"); + } + // turn + actionList.add(new Action( + null, // 缂栧彿 + task.getBusId(), // 鎬荤嚎 + task.getId(), // 浠诲姟 + null, // 鍔ㄤ綔鍙� + null, // 浼樺厛绾� + ActionTypeType.TurnCorner.desc, // 鍚嶇О + mapService.isTurnCorner(lastCode.getData()) ? 1D : 0D, // 灞炴�у�� + lastCode.getData(), // 鍦伴潰鐮� + String.valueOf(destStaWorkDirection), // 鍔ㄤ綔鍙傛暟 + ActionTypeType.TurnCorner.val(), // 鍔ㄤ綔绫诲瀷 + actionPrepareSts, // 鍔ㄤ綔杩涘害 + agvId, // AGV + now // 宸ヤ綔鏃堕棿 + )); + lastDirection = destStaWorkDirection; + } + // 鏆傚瓨鐐瑰彇璐� + assert backpackType != null; + actionList.add(new Action( + null, // 缂栧彿 + task.getBusId(), // 鎬荤嚎 + task.getId(), // 浠诲姟 + null, // 鍔ㄤ綔鍙� + null, // 浼樺厛绾� + ActionTypeType.ReadyTakeFromAgvSite.desc, // 鍚嶇О + (double) backpackType.lev, // 灞炴�у�� + lastCode.getData(), // 鍦伴潰鐮� + String.valueOf(backpackType.height), // 鍔ㄤ綔鍙傛暟 + ActionTypeType.ReadyTakeFromAgvSite.val(), // 鍔ㄤ綔绫诲瀷 + actionPrepareSts, // 鍔ㄤ綔杩涘害 + agvId, // AGV + now // 宸ヤ綔鏃堕棿 + )); + // 璁$畻璐у弶宸ヤ綔鏂瑰悜 + agvDirectionType = mapService.calculateAgvWorkDirectionByStation(destSta, lastCode); + actionList.add(new Action( + null, // 缂栧彿 + task.getBusId(), // 鎬荤嚎 + task.getId(), // 浠诲姟 + null, // 鍔ㄤ綔鍙� + null, // 浼樺厛绾� + ActionTypeType.ReadyReleaseToShelvesLoc.desc, // 鍚嶇О + (double) agvDirectionType.val, // 灞炴�у�� + lastCode.getData(), // 鍦伴潰鐮� + String.valueOf(destSta.getOffset()), // 鍔ㄤ綔鍙傛暟 + ActionTypeType.ReadyReleaseToShelvesLoc.val(), // 鍔ㄤ綔绫诲瀷 + actionPrepareSts, // 鍔ㄤ綔杩涘害 + agvId, // AGV + now // 宸ヤ綔鏃堕棿 + )); break; case TO_CHARGE: // 妫�楠屾柟鍚� diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java index cb00614..1da3a4f 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java @@ -12,6 +12,7 @@ import com.zy.acs.manager.manager.entity.Code; import com.zy.acs.manager.manager.entity.Loc; import com.zy.acs.manager.manager.entity.Segment; +import com.zy.acs.manager.manager.entity.Sta; import com.zy.acs.manager.manager.service.ActionService; import com.zy.acs.manager.manager.service.CodeService; import com.zy.acs.manager.system.service.ConfigService; @@ -154,7 +155,7 @@ } // 鍧愭爣璐ф灦闃堝�� todo:luxiaotao - public AgvDirectionType calculateAgvWorkDirection(Loc loc, Code code) { + public AgvDirectionType calculateAgvWorkDirectionByShelf(Loc loc, Code code) { Integer compDirect = loc.getCompDirect(); AgvDirectionType agvDirectionType = null; if (compDirect == 0) { @@ -166,6 +167,19 @@ return agvDirectionType; } + public Double getStaAngle(Sta sta, Double workDirection) { + if (null == sta) { + return null; + } + if (Cools.isEmpty(sta.getAngle())) { + return workDirection; + } + return Double.parseDouble(sta.getAngle()); + } + + public AgvDirectionType calculateAgvWorkDirectionByStation(Sta sta, Code code) { + return AgvDirectionType.FORWARD; + } public double calculateDistance(double x1, double y1, double x2, double y2) { double deltaX = x2 - x1; diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java index a2e42f6..5cdd1cc 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java @@ -71,6 +71,12 @@ private Double offset; /** + * 浣滀笟瑙掑害 + */ + @ApiModelProperty(value= "浣滀笟瑙掑害") + private String angle; + + /** * 鑷姩 */ @ApiModelProperty(value= "鑷姩") @@ -153,56 +159,6 @@ */ @ApiModelProperty(value= "澶囨敞") private String memo; - - public Sta() {} - - public Sta(String uuid,Long zoneId,String staNo,String name,Long staType,Long code,Double offset,String autoing,String loading,String inEnable,String outEnable,String zpallet,Long staSts,Integer status,Integer deleted,Long tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { - this.uuid = uuid; - this.zoneId = zoneId; - this.staNo = staNo; - this.name = name; - this.staType = staType; - this.code = code; - this.offset = offset; - this.autoing = autoing; - this.loading = loading; - this.inEnable = inEnable; - this.outEnable = outEnable; - this.zpallet = zpallet; - this.staSts = staSts; - this.status = status; - this.deleted = deleted; - this.tenantId = tenantId; - this.createBy = createBy; - this.createTime = createTime; - this.updateBy = updateBy; - this.updateTime = updateTime; - this.memo = memo; - } - -// Sta sta = new Sta( -// null, // 缂栧彿 -// null, // 搴撳尯 -// null, // 绔欏彿 -// null, // 鍚嶇О -// null, // 绔欑被鍨媅闈炵┖] -// null, // 鏉$爜 -// null, // 鍋忕Щ閲� -// null, // 鑷姩 -// null, // 鏈夌墿 -// null, // 鍙叆 -// null, // 鍙嚭 -// null, // 鎵樼洏鐮� -// null, // 绔欑姸鎬� -// null, // 鐘舵�乕闈炵┖] -// null, // 鏄惁鍒犻櫎[闈炵┖] -// null, // 绉熸埛 -// null, // 娣诲姞浜哄憳 -// null, // 娣诲姞鏃堕棿[闈炵┖] -// null, // 淇敼浜哄憳 -// null, // 淇敼鏃堕棿 -// null // 澶囨敞 -// ); public String getZoneId$(){ ZoneService service = SpringUtils.getBean(ZoneService.class); diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/ActionTypeType.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/ActionTypeType.java index 94af12f..6aa6718 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/ActionTypeType.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/ActionTypeType.java @@ -16,8 +16,10 @@ StraightAheadUnturnable("宸烽亾鐩磋鍓嶈繘"), // 宸烽亾鐩磋鍓嶈繘 StraightAheadTurnable("鐩磋鍓嶈繘"), // 鐩磋鍓嶈繘 ReadyTakeFromShelvesLoc("鍑嗗浠庤揣鏋跺彇璐�"), // 鍑嗗浠庤揣鏋跺彇璐� + ReadyTakeFromConveyorSta("鍑嗗浠庤緭閫佺嚎鍙栬揣"), // 鍑嗗浠庤緭閫佺嚎鍙栬揣 ReadyTakeFromAgvSite("鍑嗗浠嶢GV鏆傚瓨璐т綅鍙栬揣"), // 鍑嗗浠嶢GV鏆傚瓨璐т綅鍙栬揣 - ReadyReleaseToShelvesLoc("鍑嗗浠庤揣鏋舵斁璐�"), // 鍑嗗浠庤揣鏋舵斁璐� + ReadyReleaseToShelvesLoc("鍑嗗寰�璐ф灦鏀捐揣"), // 鍑嗗浠庤揣鏋舵斁璐� + ReadyReleaseToConveyorSta("鍑嗗寰�杈撻�佺嚎鏀捐揣"), // 鍑嗗寰�杈撻�佺嚎鏀捐揣 ReadyReleaseToAgvSite("鍑嗗寰�AGV鏆傚瓨璐т綅鏀捐揣"), // 鍑嗗寰�AGV鏆傚瓨璐т綅鏀捐揣 FinishPath("鏁翠釜璺緞缁撴潫"), // 鏁翠釜璺緞缁撴潫 DockingCharge("瀵规帴鍏呯數妗�"), // 瀵规帴鍏呯數妗� -- Gitblit v1.9.1