From 2f269a156fc820de8ee893475f0d89e0d77a732a Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 11 十二月 2023 17:16:29 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java | 75 ++++++++++++++++++++++++++++++++++++-
1 files changed, 73 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java
index 5534011..e899da4 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java
@@ -1,5 +1,6 @@
package com.zy.asrs.service.impl;
+import com.alibaba.fastjson.JSON;
import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.domain.enums.WorkNoType;
@@ -9,14 +10,27 @@
import com.zy.asrs.service.StaDescService;
import com.zy.asrs.service.TaskWrkService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.utils.CommandUtils;
+import com.zy.asrs.utils.Utils;
import com.zy.common.service.CommonService;
+import com.zy.core.DevpThread;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.CrnTaskModeType;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.CrnSlave;
+import com.zy.core.model.Task;
+import com.zy.core.model.command.CrnCommand;
+import com.zy.core.model.protocol.StaProtocol;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
+@Slf4j
@Service("taskWrkService")
public class TaskWrkServiceImpl extends ServiceImpl<TaskWrkMapper, TaskWrk> implements TaskWrkService {
@@ -46,7 +60,7 @@
}
@Override
- @Transactional
+ @Transactional(propagation = Propagation.REQUIRES_NEW)
public void distribute(String taskNo, Long userId) {
TaskWrk taskWrk = this.selectByTaskNo(taskNo);
if (taskWrk == null) {
@@ -60,6 +74,9 @@
//鍒涘缓浠诲姟
if (taskWrk.getIoType() == 1) {
//1.鍏ュ簱
+ if (taskWrk.getStartPoint() == null || taskWrk.getTargetPoint() == null) {
+ throw new CoolException("鏈帴鏀跺埌璧风偣鍜岀粓鐐癸紝涓嶈繘琛屾淳鍙�");
+ }
startup(taskWrk, userId);
}else if(taskWrk.getIoType() == 2){
//2.鍑哄簱
@@ -75,7 +92,7 @@
//鍏ュ簱浠诲姟娲惧彂
StaDesc staDesc = staDescService.queryCrn(taskWrk.getIoType(), Integer.parseInt(taskWrk.getStartPoint()));
if (staDesc == null) {
- return;//涓嶅瓨鍦ㄨ矾寰�
+ throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
}
int workNo = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙�
taskWrk.setWrkNo(workNo);//宸ヤ綔鍙�
@@ -86,6 +103,28 @@
taskWrk.setModiTime(new Date());
taskWrk.setModiUser(userId);
updateById(taskWrk);
+
+ CrnSlave.CrnStn crnStn = Utils.getCrnStnByStaNo(staDesc.getCrnStn(), true);
+ if (crnStn == null) {
+ throw new CoolException("鍫嗗灈鏈哄叆搴撶珯涓嶅瓨鍦�");
+ }
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(staDesc.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+ crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
+ crnCommand.setSourcePosX(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosY(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰
+ crnCommand.setSourcePosZ(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓
+ crnCommand.setDestinationPosX(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosY(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞�
+ crnCommand.setDestinationPosZ(Utils.getRowShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺�
+ crnCommand.setCommand((short)1);
+ if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
+ log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
+ throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
+ }
}
@Override
@@ -104,6 +143,38 @@
taskWrk.setModiTime(new Date());
taskWrk.setModiUser(userId);
updateById(taskWrk);
+
+ CrnSlave.CrnStn crnStn = Utils.getCrnStnByStaNo(staDesc.getCrnStn(), false);
+ if (crnStn == null) {
+ throw new CoolException("鍫嗗灈鏈哄嚭搴撶珯涓嶅瓨鍦�");
+ }
+ //鐢熸垚鍫嗗灈鏈哄嚭搴撳懡浠�
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(taskWrk.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+ crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
+ crnCommand.setSourcePosX(Utils.getBayShort(taskWrk.getStartPoint())); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY(Utils.getLevShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ(Utils.getRowShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(crnStn.getLev().shortValue()); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(crnStn.getRow().shortValue()); // 鐩爣搴撲綅灞�
+ crnCommand.setCommand((short)1);
+ if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
+ log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
+ throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
+ }
+
+ //鐢熸垚杈撻�佺嚎鍛戒护
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()).clone();
+ staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+ staProtocol.setStaNo((short) Integer.parseInt(taskWrk.getTargetPoint()));
+ if (!CommandUtils.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
+ log.error("杈撻�佺嚎鍛戒护鐢熸垚澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
+ throw new CoolException("杈撻�佺嚎鍛戒护鐢熸垚澶辫触");
+ }
}
@Override
--
Gitblit v1.9.1