From 835be703696c44af1e510eca5fe2f6b8553a3b56 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 24 六月 2024 17:04:57 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java | 34 +++++++++--
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/MotionLog.java | 6 ++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java | 26 +-------
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java | 2
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java | 4
zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml | 5 +
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java | 2
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java | 32 ++++++++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java | 9 ++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java | 20 ++++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java | 6 ++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ConveyorCommandService.java | 6 ++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/MotionDto.java | 3 +
13 files changed, 121 insertions(+), 34 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java
index c66ac21..3aa33ba 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java
@@ -1,8 +1,11 @@
package com.zy.asrs.wcs.core.action;
import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.wcs.core.entity.Task;
import com.zy.asrs.wcs.core.model.command.*;
import com.zy.asrs.wcs.core.model.enums.LiftCommandModeType;
+import com.zy.asrs.wcs.core.service.TaskService;
import com.zy.asrs.wcs.core.utils.RedisUtil;
import com.zy.asrs.wcs.rcs.News;
import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
@@ -22,6 +25,8 @@
@Autowired
private RedisUtil redisUtil;
+ @Autowired
+ private TaskService taskService;
public synchronized boolean assignWork(Device device, LiftAssignCommand assignCommand) {
LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getId().intValue());
@@ -50,6 +55,11 @@
public synchronized boolean executeWork(Device device, Integer taskNo) {
Object obj = redisUtil.get(DeviceRedisConstant.LIFT_WORK_FLAG + taskNo);
if (obj == null) {
+ return false;
+ }
+
+ Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskNo, taskNo));
+ if (task == null) {
return false;
}
@@ -98,6 +108,16 @@
if (liftProtocol.getLev() == command.getTargetLev()) {
command.setComplete(true);
}
+
+ if (task.getTaskSts() < 100) {//鍏ュ簱鍒ゆ柇鎵樼洏鏄惁杩涘叆鎻愬崌鏈�
+ if (!liftProtocol.getHasTray()) {
+ return false;
+ }
+ } else if (task.getTaskSts() >= 100 && task.getTaskSts() < 200) {//鍑哄簱鍒ゆ柇鎵樼洏鏄惁绂诲紑鎻愬崌鏈�
+ if (liftProtocol.getHasTray()) {
+ return false;
+ }
+ }
} else if (command.getMode() == LiftCommandModeType.RESET.id) {
//澶嶄綅
command.setComplete(true);
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/MotionDto.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/MotionDto.java
index 66fcff2..763ea91 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/MotionDto.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/MotionDto.java
@@ -32,6 +32,9 @@
//鍚屾 1: 鏄� 0: 鍚�
private Integer sync;
+ //鎵ц瀹屾垚鍚庢槸鍚﹂噴鏀炬彁鍗囨満锛岄粯璁や笉閲婃斁 1: 閲婃斁 0: 涓嶉噴鏀�
+ private Integer releaseLift;
+
public static MotionDto build(BuildSupport<MotionDto> support) {
MotionDto dto = new MotionDto();
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java
index 2145544..0a4cbf2 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java
@@ -76,6 +76,12 @@
private Integer sync;
/**
+ * 鎵ц瀹屾垚鍚庢槸鍚﹂噴鏀炬彁鍗囨満锛岄粯璁や笉閲婃斁 1: 閲婃斁 0: 涓嶉噴鏀�
+ */
+ @ApiModelProperty(value= "鎵ц瀹屾垚鍚庢槸鍚﹂噴鏀炬彁鍗囨満锛岄粯璁や笉閲婃斁 1: 閲婃斁 0: 涓嶉噴鏀�")
+ private Integer releaseLift;
+
+ /**
* 浠诲姟绫诲瀷
*/
@ApiModelProperty(value= "浠诲姟绫诲瀷")
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/MotionLog.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/MotionLog.java
index 142dc4e..b7a6c52 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/MotionLog.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/MotionLog.java
@@ -88,6 +88,12 @@
private Integer sync;
/**
+ * 鎵ц瀹屾垚鍚庢槸鍚﹂噴鏀炬彁鍗囨満锛岄粯璁や笉閲婃斁 1: 閲婃斁 0: 涓嶉噴鏀�
+ */
+ @ApiModelProperty(value= "鎵ц瀹屾垚鍚庢槸鍚﹂噴鏀炬彁鍗囨満锛岄粯璁や笉閲婃斁 1: 閲婃斁 0: 涓嶉噴鏀�")
+ private Integer releaseLift;
+
+ /**
* 浠诲姟绫诲瀷
*/
@ApiModelProperty(value= "浠诲姟绫诲瀷")
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
index cb368ee..126fd3d 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
@@ -117,13 +117,6 @@
return motionList;
}
- //妫�娴嬫彁鍗囨満鏄惁鏈変换鍔$粦瀹�
- boolean liftResult = Utils.checkLiftHasBinding(Integer.parseInt(transferLiftDevice.getDeviceNo()));
- if (liftResult) {
- //瀛樺湪浠诲姟锛岀姝㈣В鏋�
- return motionList;
- }
-
//鑾峰彇灏忚溅寰呮満搴撲綅 ==> 杩涙彁鍗囨満
ShuttleStandby shuttleStandbyTo = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
.eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId())
@@ -177,7 +170,6 @@
})),
MotionDto.build((dto -> {
dto.setShuttleNo(shuttleDevice.getId().intValue());
- dto.setLiftNo(transferLiftDevice.getId().intValue());
dto.setLocNo(standbyLocNoTo);
})),
MotionCtgType.SHUTTLE_MOVE
@@ -233,6 +225,7 @@
null
, MotionDto.build((dto -> {
dto.setLiftNo(transferLiftDevice.getId().intValue());
+ dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満
}))
));
@@ -382,6 +375,7 @@
null
, MotionDto.build((dto -> {
dto.setLiftNo(transferLiftDevice.getId().intValue());
+ dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満
}))
));
@@ -454,13 +448,6 @@
//妫�娴嬬┛姊溅鏄惁鏈変换鍔$粦瀹�
boolean shuttleResult = Utils.checkShuttleHasBinding(shuttleDevice, task.getTaskNo());
if (shuttleResult) {
- //瀛樺湪浠诲姟锛岀姝㈣В鏋�
- return motionList;
- }
-
- //妫�娴嬫彁鍗囨満鏄惁鏈変换鍔$粦瀹�
- boolean liftResult = Utils.checkLiftHasBinding(Integer.parseInt(transferLiftDevice.getDeviceNo()));
- if (liftResult) {
//瀛樺湪浠诲姟锛岀姝㈣В鏋�
return motionList;
}
@@ -636,6 +623,7 @@
dto.setLev(5);//绱㈢墝椤圭洰5灞傛槸杈撻�佺嚎灞�
dto.setStaNo(1);//鎻愬崌鏈哄乏渚�
dto.setSync(0);//寮傛鎵ц
+ dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満
}))
));
@@ -781,6 +769,7 @@
null
, MotionDto.build((dto -> {
dto.setLiftNo(transferLiftDevice.getId().intValue());
+ dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満
}))
));
@@ -979,13 +968,6 @@
//妫�娴嬬┛姊溅鏄惁鏈変换鍔$粦瀹�
boolean shuttleResult = Utils.checkShuttleHasBinding(shuttleDevice, task.getTaskNo());
if (shuttleResult) {
- //瀛樺湪浠诲姟锛岀姝㈣В鏋�
- return motionList;
- }
-
- //妫�娴嬫彁鍗囨満鏄惁鏈変换鍔$粦瀹�
- boolean liftResult = Utils.checkLiftHasBinding(Integer.parseInt(transferLiftDevice.getDeviceNo()));
- if (liftResult) {
//瀛樺湪浠诲姟锛岀姝㈣В鏋�
return motionList;
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java
index ae6aadf..db4c697 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java
@@ -55,13 +55,15 @@
motion.setOrigin(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), origin.getLev())));
}
motion.setTarget(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), target.getLev())));
- }));
-// if (target.getUpdateLiftNo() != null && target.getWrkNo() != null) {
-// if (target.getUpdateLiftNo()) {
-//
-// }
-// }
+ if (target.getSync() != null) {
+ motion.setSync(target.getSync());
+ }
+
+ if (target.getReleaseLift() != null) {
+ motion.setReleaseLift(target.getReleaseLift());
+ }
+ }));
return motionList;
}
@@ -87,6 +89,10 @@
if (target.getSync() != null) {
motion.setSync(target.getSync());
+ }
+
+ if (target.getReleaseLift() != null) {
+ motion.setReleaseLift(target.getReleaseLift());
}
}));
@@ -166,6 +172,14 @@
motion.setDeviceCtg(DeviceCtgType.LIFT.val());
motion.setDevice(String.valueOf(target.getLiftNo()));
motion.setMotionCtg(MotionCtgType.LIFT_LOCK.val());
+
+ if (target.getSync() != null) {
+ motion.setSync(target.getSync());
+ }
+
+ if (target.getReleaseLift() != null) {
+ motion.setReleaseLift(target.getReleaseLift());
+ }
}));
return motionList;
@@ -181,6 +195,14 @@
motion.setDeviceCtg(DeviceCtgType.LIFT.val());
motion.setDevice(String.valueOf(target.getLiftNo()));
motion.setMotionCtg(MotionCtgType.LIFT_UNLOCK.val());
+
+ if (target.getSync() != null) {
+ motion.setSync(target.getSync());
+ }
+
+ if (target.getReleaseLift() != null) {
+ motion.setReleaseLift(target.getReleaseLift());
+ }
}));
return motionList;
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ConveyorCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ConveyorCommandService.java
index fa26255..181deb3 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ConveyorCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ConveyorCommandService.java
@@ -5,6 +5,7 @@
import com.zy.asrs.wcs.core.utils.ConveyorDispatcher;
import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
+import com.zy.asrs.wcs.rcs.model.protocol.StaProtocol;
import com.zy.asrs.wcs.rcs.thread.DevpThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +37,11 @@
case CONVEYOR_INBOUND_TO_LIFT://杈撻�佺嚎鍏ュ簱鑷虫彁鍗囨満
break;
case CONVEYOR_OUTBOUND://杈撻�佺嚎鍑哄簱
+ StaProtocol staProtocol = devpThread.getStation().get(Integer.parseInt(motion.getOrigin()));
+ if (!(staProtocol.isAutoing() && staProtocol.isLoading())) {
+ return false;
+ }
+
boolean result = devpThread.writeWorkSta(Integer.parseInt(motion.getOrigin()), motion.getTaskNo().shortValue(), Short.parseShort(motion.getTarget()));
if (!result) {
return false;
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
index 6cace00..7c55f48 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
@@ -12,6 +12,7 @@
import com.zy.asrs.wcs.core.model.enums.MotionStsType;
import com.zy.asrs.wcs.core.service.MotionService;
import com.zy.asrs.wcs.core.service.TaskService;
+import com.zy.asrs.wcs.core.utils.Utils;
import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
import com.zy.asrs.wcs.rcs.model.enums.LiftProtocolStatusType;
import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
@@ -59,6 +60,14 @@
return false;
}
+ //妫�娴嬫彁鍗囨満鏄惁鏈変换鍔$粦瀹�
+ boolean liftResult = Utils.checkLiftHasBinding(deviceNo, String.valueOf(motion.getTaskNo()));
+ if (liftResult) {
+ //瀛樺湪浠诲姟锛岀姝㈡墽琛�
+ return false;
+ }
+
+ //姣忔鎵ц鎻愬崌鏈烘寚浠ら兘缁戝畾鎻愬崌鏈�
Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskNo, motion.getTaskNo()));
if (task == null) {
return false;
@@ -194,6 +203,14 @@
return false;
}
+ if (motion.getReleaseLift() == 1) {//閲婃斁鎻愬崌鏈�
+ task.setLiftNo(null);
+ task.setUpdateTime(new Date());
+ if (!taskService.updateById(task)) {
+ return false;
+ }
+ }
+
break;
case LIFT_WITH_GOODS:
// 鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
@@ -215,6 +232,13 @@
}
}
+ if (motion.getReleaseLift() == 1) {//閲婃斁鎻愬崌鏈�
+ task.setLiftNo(null);
+ task.setUpdateTime(new Date());
+ if (!taskService.updateById(task)) {
+ return false;
+ }
+ }
break;
case LIFT_WITH_SHUTTLE:
@@ -263,6 +287,14 @@
if (liftThread.isLock(null)) {
return false;
}
+
+ if (motion.getReleaseLift() == 1) {//閲婃斁鎻愬崌鏈�
+ task.setLiftNo(null);
+ task.setUpdateTime(new Date());
+ if (!taskService.updateById(task)) {
+ return false;
+ }
+ }
break;
case LIFT_SHUTTLE_ARRIVAL:
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
index 4943afc..ec0fd46 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
@@ -44,7 +44,7 @@
List<Task> selectWorkingByShuttle(Integer shuttleNo, String taskNo);
- List<Task> selectWorkingByLift(Integer liftNo);
+ List<Task> selectWorkingByLift(Integer liftNo, String taskNo);
Task selectChargeWorking(Integer shuttleNo);
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
index 5bc6821..fbdde05 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
@@ -42,7 +42,7 @@
List<Task> selectWorkingByShuttle(Integer shuttleNo, String taskNo);
- List<Task> selectWorkingByLift(Integer liftNo);
+ List<Task> selectWorkingByLift(Integer liftNo, String taskNo);
Task selectChargeWorking(Integer shuttleNo);
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
index 7aec3bf..89b2b24 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
@@ -132,8 +132,8 @@
}
@Override
- public List<Task> selectWorkingByLift(Integer liftNo) {
- return this.baseMapper.selectWorkingByLift(liftNo);
+ public List<Task> selectWorkingByLift(Integer liftNo, String taskNo) {
+ return this.baseMapper.selectWorkingByLift(liftNo, taskNo);
}
@Override
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java
index 7da2faa..a982931 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java
@@ -199,8 +199,15 @@
* 妫�娴嬫彁鍗囨満鏄惁鏈変换鍔$粦瀹�
*/
public static boolean checkLiftHasBinding(Integer liftNo) {
+ return checkLiftHasBinding(liftNo, null);
+ }
+
+ /**
+ * 妫�娴嬫彁鍗囨満鏄惁鏈変换鍔$粦瀹�
+ */
+ public static boolean checkLiftHasBinding(Integer liftNo, String taskNo) {
TaskService taskService = SpringUtils.getBean(TaskService.class);
- List<Task> tasks = taskService.selectWorkingByLift(liftNo);
+ List<Task> tasks = taskService.selectWorkingByLift(liftNo, taskNo);
if (tasks.isEmpty()) {
return false;//鏃犱换鍔$粦瀹�
}
diff --git a/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml b/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
index f3550fb..87c82de 100644
--- a/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
+++ b/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
@@ -116,7 +116,10 @@
<select id="selectWorkingByLift" resultType="com.zy.asrs.wcs.core.entity.Task">
select * from wcs_task
where task_sts in (1,2,3,101,102,103,301,302,303,401,402,403)
- and lift_no = #{liftNo}
+ and lift_no = #{liftNo}
+ <if test="taskNo!=null">
+ and task_no != #{taskNo}
+ </if>
order by priority desc,start_time,task_no asc
</select>
--
Gitblit v1.9.1