From 6876084ffc4a01c1eca6a609dec8c176efc59aae Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期四, 22 一月 2026 15:16:45 +0800
Subject: [PATCH] 1
---
zy-acs-cv/src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java | 121 ++++++++++++++++++++++++++++++++++++----
1 files changed, 109 insertions(+), 12 deletions(-)
diff --git a/zy-acs-cv/src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java b/zy-acs-cv/src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java
index e040e4b..20af2ee 100644
--- a/zy-acs-cv/src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java
+++ b/zy-acs-cv/src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java
@@ -3,9 +3,12 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import com.core.common.DateUtils;
import com.core.exception.CoolException;
import com.zy.asrs.controller.requestParam.StationRequestParam;
+import com.zy.asrs.controller.vo.OpenBusSubmitParam;
import com.zy.asrs.controller.vo.StationStatus;
+import com.zy.asrs.controller.vo.TaskDto;
import com.zy.asrs.entity.Job;
import com.zy.asrs.enums.WorkNoTypeType;
import com.zy.asrs.mapper.JobMapper;
@@ -30,6 +33,7 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -54,6 +58,9 @@
@Value("${ctu.station}")
private String station;
+ @Value("${ctu.sendTask}")
+ private String sendTask;
+
@Autowired
private SlaveProperties slaveProperties;
@@ -67,6 +74,7 @@
/**
* 鍑哄簱鐨勬椂鍊欙紝璁惧涓婅蛋
*/
+ @Transactional
public synchronized void out(Integer mark) {
try {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
@@ -86,7 +94,7 @@
continue;
}
//&& staProtocol.isOutEnable()
- if (staProtocol.isAutoing() && staProtocol.getWorkNo() == 0 ) {
+ if (staProtocol.isAutoing() && staProtocol.getWorkNo() == 0) {
String seqNum = checkStationStatus(releaseSta.getStaNo());
if (seqNum != null) {
Job jobBySeqNum = jobMapper.getJobBySeqNum(seqNum);
@@ -95,7 +103,11 @@
// 涓嬪彂绉诲姩 涓� 涓嬪彂plc鍛戒护
staProtocol.setWorkNo(workNo);
staProtocol.setStaNo(releaseSta.getTargetSta());
- if (jobMapper.insert(new Job(seqNum, workNo)) == 0) {
+ Job job = new Job();
+ job.setSeqNum(seqNum);
+ job.setJobNo(workNo);
+ job.setJobSts(2);
+ if (jobMapper.insert(job) == 0) {
throw new CoolException("鎻掑叆杈撻�佺嚎浠诲姟澶辫触," + jobBySeqNum + " - " + workNo);
}
devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -124,6 +136,7 @@
/**
* 浠庢嫞鏂欑珯鍒板叆搴撶珯锛圕TU鍙栬揣绔欙級
*/
+ @Transactional
public synchronized void fake(Integer mark) {
try {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
@@ -139,12 +152,13 @@
return;
}
if (staProtocol.getWorkNo() > 0 && staProtocol.isAutoing()) {
- Job jobByWorkNo = jobMapper.getJobByWorkNo(staProtocol.getWorkNo());
+ Job jobByWorkNo = jobMapper.getJobByJobNo(staProtocol.getWorkNo());
if (jobByWorkNo != null && jobByWorkNo.getJobSts() == 1) {
staProtocol.setStaNo(1006);
boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
if (result) {
- jobByWorkNo.setJobSts(2);
+ jobByWorkNo.setJobSts(3);
+ jobByWorkNo.setMemo("妯℃嫙鎸夋寜閽�");
jobMapper.updateById(jobByWorkNo);
log.info("鍏ュ簱杈撻�佺嚎涓嬪彂锛歿},{}", staProtocol.getWorkNo(), 1006);
}
@@ -175,7 +189,8 @@
return;
}
if (staProtocol.getWorkNo() > 0 && staProtocol.isAutoing()) {
- if (checkStationStatus(takeSta.getStaNo()) != null) {
+ Job job = jobMapper.getJobByJobNo(staProtocol.getWorkNo());
+ if (job != null && job.getJobSts() >= 5) {
staProtocol.setWorkNo(0);
staProtocol.setStaNo(0);
boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
@@ -192,7 +207,7 @@
}
}
-
+ @Transactional
public synchronized void waitTake(Integer mark) {
try {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
@@ -214,11 +229,21 @@
if (staProtocol.getWorkNo() > 0 && staProtocol.isAutoing()) {
StaProtocol targetStaProtocol = devpThread.getStation().get(inSta.getTargetSta());
if (targetStaProtocol.getWorkNo() == 0 && targetStaProtocol.isAutoing() && !targetStaProtocol.isLoading()) {
- staProtocol.setWorkNo(staProtocol.getWorkNo());
- staProtocol.setStaNo(inSta.getTargetSta());
- boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
- if (result) {
- log.info("" + (mark + LOG_STEP) + "鍏ュ簱鍓嶈繘锛歿},{}", staProtocol.getWorkNo(), inSta.getTargetSta());
+ Job job = jobMapper.getJobByJobNoAndJobSts(staProtocol.getWorkNo(), 2);
+ if (job != null) {
+ staProtocol.setWorkNo(staProtocol.getWorkNo());
+ staProtocol.setStaNo(inSta.getTargetSta());
+ boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+ if (result) {
+ job.setJobSts(4);
+ job.setInTime(new Date());
+ if (jobMapper.updateById(job) == 0) {
+ throw new CoolException("鏇存柊杈撻�佺嚎浠诲姟澶辫触," + " - " + staProtocol.getWorkNo());
+ }
+ log.info("" + (mark + LOG_STEP) + "鍏ュ簱鍓嶈繘锛歿},{}", staProtocol.getWorkNo(), inSta.getTargetSta());
+ }
+ } else {
+ // 妯℃嫙鎿嶄綔閫昏緫
}
}
}
@@ -230,6 +255,78 @@
}
}
+ @Transactional
+ public synchronized void createTake(Integer mark) {
+ try {
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鍏ュ簱鍙�
+ for (DevpSlave.Sta inSta : devp.getInSta()) {
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(inSta.getTargetSta());
+ if (staProtocol == null) {
+ return;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鏉′欢
+ if (!staProtocol.isLoading()) {
+ return;
+ }
+ if (staProtocol.getWorkNo() > 0 && staProtocol.isAutoing()) {
+ Job job = jobMapper.getJobByJobNo(staProtocol.getWorkNo());
+ if (job != null && job.getJobSts() == 4) {
+ job.setJobSts(5);
+ job.setRcsTime(new Date());
+ jobMapper.updateById(job);
+ if (!fakeWms(staProtocol)) {
+ throw new CoolException("浠诲姟鍙戦�佺粰RCS澶辫触," + job.getSeqNum() + " - " + job.getSeqNum());
+ }
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+ }
+
+ public boolean fakeWms(StaProtocol staProtocol) {
+ OpenBusSubmitParam openBusSubmitParam = new OpenBusSubmitParam();
+ openBusSubmitParam.setBatch(DateUtils.convert(new Date()));
+ List<TaskDto> taskList = new ArrayList<>();
+ TaskDto taskDto = new TaskDto();
+ taskDto.setSeqNum("SSX-RK" + staProtocol.getWorkNo());
+ taskDto.setOriSta("1007");
+ taskDto.setPriority(9527);
+ taskList.add(taskDto);
+ openBusSubmitParam.setTaskList(taskList);
+ return sendTask(openBusSubmitParam, staProtocol);
+ }
+
+ @Transactional
+ public boolean sendTask(OpenBusSubmitParam openBusSubmitParam, StaProtocol staProtocol) {
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(ctuUrl)
+ .setPath(sendTask)
+ .setTimeout(1200, TimeUnit.SECONDS)
+ .setJson(JSON.toJSONString(openBusSubmitParam))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ log.info("涓嬪彂浠诲姟杩斿洖鏁版嵁锛歿}", response);
+ return true;
+ }
+ } catch (Exception e) {
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", ctuUrl + sendTask, JSON.toJSONString(openBusSubmitParam), response);
+ }
+ return false;
+ }
/**
* 妫�鏌ョ珯鐐圭姸鎬�
@@ -259,7 +356,7 @@
for (StationStatus object : stationStatuses) {
if (object.getStaNo().equals(staNo + "")) {
if (object.getConveyable()) {
- return object.getSeqNum();
+ return object.getSeqNum() == null ? System.currentTimeMillis() + "" : object.getSeqNum();
} else {
log.info("绔欑偣锛歿}鐘舵�佷笉瀵�", staNo);
return null;
--
Gitblit v1.9.1