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