From 2599526586d46212c48eaccba1a8cea97e14176d Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期四, 14 八月 2025 16:41:04 +0800
Subject: [PATCH] 1
---
src/main/java/com/zy/asrs/domain/param/TaskDto.java | 23 +
src/main/java/com/zy/asrs/controller/OpenController.java | 88 +++++++
src/main/java/com/zy/asrs/domain/param/OpenBusSubmitParam.java | 18 +
src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java | 387 ++++++++++++++++++++++++-------
src/main/java/com/zy/core/CtuMainProcess.java | 13 +
src/main/java/com/zy/asrs/domain/param/TaskReportParam.java | 111 +++++++++
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 30 ++
src/main/resources/application.yml | 7
8 files changed, 588 insertions(+), 89 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
new file mode 100644
index 0000000..f022fd8
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -0,0 +1,88 @@
+package com.zy.asrs.controller;
+
+import com.core.common.R;
+import com.zy.asrs.domain.param.TaskReportParam;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.impl.CtuMainServiceImpl;
+import com.zy.common.web.BaseController;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+
+/**
+ * Created by vincent on 2022/4/8
+ */
+@Slf4j
+@RestController
+@RequestMapping("open/asrs")
+public class OpenController extends BaseController {
+
+
+ @Autowired
+ private LocMastService locMastService;
+
+
+ @Autowired
+ private CtuMainServiceImpl ctuMainService;
+
+
+ @Value("${ctu.url}")
+ private String ctuUrl;
+
+ @Value("${ctu.locSync}")
+ private String locSync;
+
+ private static final boolean auth = true;
+
+ public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{
+ add("ea1f0459efc02a79f046f982767939ae");
+ }};
+
+
+ private String getLocSts(Long sts) {
+ //15 IDLE 绌洪棽
+ //16 STOCK 鍦ㄥ簱
+ //17 PAKIN 鍏ュ簱棰勭害
+ //18 PAKOUT 鍑哄簱棰勭害
+ //19 DISABLED 绂佺敤
+ switch (sts.intValue()) {
+ case 15:
+ return "O";
+ case 16:
+ return "F";
+ case 17:
+ return "S";
+ case 18:
+ return "R";
+ case 19:
+ return "X";
+ default:
+ return "W";
+ }
+ }
+
+ /**
+ * 浠诲姟鐘舵�佷笂鎶ユ帴鏀�
+ */
+ @RequestMapping("/task/sync/v1")
+ public R taskSync(@RequestBody TaskReportParam param) {
+ if (param == null || param.getSeqNum() == null || param.getQrCode() == null) {
+ return R.error("鍙傛暟涓虹┖");
+ }
+ if (param.getQrCode().equals("1547")) {
+ log.info("1001浠诲姟鐘舵�佷笂鎶ユ帴鏀讹細{}", param);
+ ctuMainService.setFlag1001(true);
+ } else if (param.getQrCode().equals("1612")) {
+ log.info("1007浠诲姟鐘舵�佷笂鎶ユ帴鏀讹細{}", param);
+ ctuMainService.setFlag1007(true);
+ }
+ return R.ok();
+ }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/domain/param/OpenBusSubmitParam.java b/src/main/java/com/zy/asrs/domain/param/OpenBusSubmitParam.java
new file mode 100644
index 0000000..b86de79
--- /dev/null
+++ b/src/main/java/com/zy/asrs/domain/param/OpenBusSubmitParam.java
@@ -0,0 +1,18 @@
+package com.zy.asrs.domain.param;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by vincent on 2023/6/12
+ */
+@Data
+public class OpenBusSubmitParam {
+
+ private String batch;
+
+ private List<TaskDto> taskList = new ArrayList<>();
+
+}
diff --git a/src/main/java/com/zy/asrs/domain/param/TaskDto.java b/src/main/java/com/zy/asrs/domain/param/TaskDto.java
new file mode 100644
index 0000000..7a30eb9
--- /dev/null
+++ b/src/main/java/com/zy/asrs/domain/param/TaskDto.java
@@ -0,0 +1,23 @@
+package com.zy.asrs.domain.param;
+
+import lombok.Data;
+
+/**
+ * Created by vincent on 2023/6/12
+ */
+@Data
+public class TaskDto {
+
+ private String seqNum;
+
+ private String oriLoc;
+
+ private String oriSta;
+
+ private String destLoc;
+
+ private String destSta;
+
+ private Integer priority = 1;
+
+}
diff --git a/src/main/java/com/zy/asrs/domain/param/TaskReportParam.java b/src/main/java/com/zy/asrs/domain/param/TaskReportParam.java
new file mode 100644
index 0000000..6d9df83
--- /dev/null
+++ b/src/main/java/com/zy/asrs/domain/param/TaskReportParam.java
@@ -0,0 +1,111 @@
+package com.zy.asrs.domain.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class TaskReportParam implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+
+
+ /**
+ * 鎬荤嚎
+ */
+ @ApiModelProperty(value = "鎬荤嚎")
+ private String busNo;
+
+ /**
+ * 浠诲姟鍙�
+ */
+ @ApiModelProperty(value = "浠诲姟鍙�")
+ private String seqNum;
+
+
+ /**
+ * 浠诲姟杩涘害
+ */
+ @ApiModelProperty(value = "浠诲姟杩涘害")
+ private Integer taskSts;
+
+
+ /**
+ * AGV
+ */
+ @ApiModelProperty(value = "AGV")
+ private String agvId;
+
+
+ /**
+ * 鎵�鍦ㄤ笂鎶ョ偣浣�
+ */
+ @ApiModelProperty(value = "鎵�鍦ㄤ笂鎶ョ偣浣�")
+ private String qrCode;
+
+ /**
+ * 搴撲綅鎴栫珯鐐�
+ */
+ @ApiModelProperty(value = "搴撲綅鎴栫珯鐐�")
+ private String locNo;
+
+
+ /**
+ * 涓婃姤娆℃暟
+ */
+ @ApiModelProperty(value = "涓婃姤娆℃暟")
+ private Integer reportTimes;
+
+ /**
+ * 鎵樼洏鐮�
+ */
+ @ApiModelProperty(value = "鎵樼洏鐮�")
+ private String zpallet;
+
+ /**
+ * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
+ */
+ @ApiModelProperty(value = "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ")
+ private Integer deleted;
+
+ /**
+ * 绉熸埛
+ */
+ @ApiModelProperty(value = "绉熸埛")
+ private Long tenantId;
+
+ /**
+ * 娣诲姞浜哄憳
+ */
+ @ApiModelProperty(value = "娣诲姞浜哄憳")
+ private Long createBy;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value = "娣诲姞鏃堕棿")
+ private Date createTime;
+
+ /**
+ * 淇敼浜哄憳
+ */
+ @ApiModelProperty(value = "淇敼浜哄憳")
+ private Long updateBy;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ private Date updateTime;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value = "澶囨敞")
+ private String memo;
+
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java
index c61aa25..9c94401 100644
--- a/src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java
@@ -1,12 +1,15 @@
package com.zy.asrs.service.impl;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.Cools;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.entity.WrkMast;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.core.common.DateUtils;
+import com.core.exception.CoolException;
+import com.zy.asrs.domain.param.OpenBusSubmitParam;
+import com.zy.asrs.domain.param.TaskDto;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WrkMastService;
+import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.News;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
@@ -16,14 +19,15 @@
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.SiemensDevpThread;
+import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
/**
* 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -32,10 +36,22 @@
@Slf4j
@Service("ctuMainService")
@Transactional
+@Data
public class CtuMainServiceImpl {
public static final long COMMAND_TIMEOUT = 5 * 1000;
+ @Value("${ctu.url}")
+ private String ctuUrl;
+
+ @Value("${ctu.sendTask}")
+ private String sendTask;
+
+ @Value("${ctu.getLoc}")
+ private String getLoc;
+
+ @Value("${ctu.update}")
+ private String updateSta;
@Autowired
private SlaveProperties slaveProperties;
@@ -49,64 +65,91 @@
@Autowired
private WrkMastService wrkMastService;
+ private boolean flag1001 = false;
- public Integer wrkNo = 10000;
+ private boolean flag1007 = false;
+
/**
* 鍏ュ簱锛屼粠鎷f枡绔欏埌鍏ュ簱绔欙紙CTU鍙栬揣绔欙級
*/
public synchronized void generateStoreWrkFile(Integer mark) {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
- for (DevpSlave devp : slaveProperties.getDevp()) {
- // 閬嶅巻鍏ュ簱鍙�
- for (DevpSlave.Sta inSta : devp.getInSta()) {
- // 鑾峰彇鍏ュ簱绔欎俊鎭�
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
- StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
- if (staProtocol == null) {
- continue;
- } else {
- staProtocol = staProtocol.clone();
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(1004);
+ if (staProtocol == null) {
+ return;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鏉′欢
+// if (!staProtocol.isLoading()) {
+// return;
+// }
+ // && staProtocol.isInEnable()
+ if (staProtocol.getWorkNo() > 0 && staProtocol.isAutoing() && !staProtocol.isEmptyMk() && staProtocol.isPakMk()) {
+ if (staProtocol.getStaNo() == 1004) {
+ try {
+ Thread.sleep(8000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
}
- // 鍒ゆ柇鏄惁婊¤冻鏉′欢
-// if (!staProtocol.isLoading()) {
-// continue;
-// }
- // && staProtocol.isInEnable()
- if (staProtocol.isAutoing() && !staProtocol.isEmptyMk() && staProtocol.isPakMk()) {
- WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo());
- if (wrkMast != null) {
- //涓嬪彂绉诲姩浠诲姟锛屽苟鐢熸垚鍏ュ簱宸ヤ綔妗�
- WrkMast in = new WrkMast();
- wrkMast.setWrkSts(223L);
- wrkMast.setModiTime(new Date());
- wrkMastService.updateById(wrkMast);
- in.setSourceLocNo("1007");
- in.setLocNo(wrkMast.getSourceLocNo());
- in.setIoType(10);
- in.setIoTime(new Date());
- in.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
- in.setIoPri(13D); // 浼樺厛绾э細13
- in.setFullPlt("Y"); // 婊℃澘锛歒
- in.setPicking("N"); // 鎷f枡
- in.setExitMk("N"); // 閫�鍑�
- in.setEmptyMk("Y"); // 绌烘澘
- in.setLinkMis("N");
- in.setAppeTime(new Date());
- in.setModiTime(new Date());
- in.setBarcode(wrkMast.getBarcode());
- in.setPlcWrkNo(wrkMast.getPlcWrkNo());
- wrkMastService.insert(in);
- LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
- locMast.setLocSts("S");
- locMast.setModiTime(new Date());
- locMastService.updateById(locMast);
- }
- }
+ staProtocol.setStaNo((short) 1007);
+ boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+ log.info("鍏ュ簱杈撻�佺嚎涓嬪彂锛歿},{}", staProtocol.getWorkNo(), 1007);
+
}
+// WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo());
+// if (wrkMast != null) {
+// //涓嬪彂绉诲姩浠诲姟锛屽苟鐢熸垚鍏ュ簱宸ヤ綔妗�
+// WrkMast in = new WrkMast();
+// wrkMast.setWrkSts(223L);
+// wrkMast.setModiTime(new Date());
+// wrkMastService.updateById(wrkMast);
+// in.setSourceLocNo("1007");
+// in.setLocNo(wrkMast.getSourceLocNo());
+// in.setIoType(10);
+// in.setIoTime(new Date());
+// in.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+// in.setIoPri(13D); // 浼樺厛绾э細13
+// in.setFullPlt("Y"); // 婊℃澘锛歒
+// in.setPicking("N"); // 鎷f枡
+// in.setExitMk("N"); // 閫�鍑�
+// in.setEmptyMk("Y"); // 绌烘澘
+// in.setLinkMis("N");
+// in.setAppeTime(new Date());
+// in.setModiTime(new Date());
+// in.setBarcode(wrkMast.getBarcode());
+// in.setPlcWrkNo(wrkMast.getPlcWrkNo());
+// wrkMastService.insert(in);
+// LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+// locMast.setLocSts("S");
+// locMast.setModiTime(new Date());
+// locMastService.updateById(locMast);
+// }
+
}
}
+
+ public synchronized void outToPlc(Integer mark) {
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(1007);
+ if (staProtocol == null) {
+ return;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鏉′欢
+ if (!staProtocol.isLoading()) {
+ return;
+ }
+ if (flag1007 && staProtocol.getWorkNo() > 0 && staProtocol.isAutoing() && !staProtocol.isEmptyMk() && staProtocol.isPakMk()) {
+ boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol));
+ log.info("鍙栬蛋鍐欏叆纭浣嶏細{},{}", staProtocol.getWorkNo(), 1007);
+ }
+ }
/**
* 鍑哄簱
@@ -129,40 +172,45 @@
continue;
}
//&& staProtocol.isOutEnable()
- if (staProtocol.isAutoing() && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999) && staProtocol.isPakMk()) {
+ if (flag1001 && staProtocol.isAutoing() && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999) && staProtocol.isPakMk()) {
News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
// 鍒ゆ柇閲嶅宸ヤ綔妗�
// 106涔熺畻涓婏紝浠ュ悗106-銆�107鐢ㄤ簬鏇存柊搴撳瓨
- WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("loc_no", "1001").in("wrk_sts", 106, 107));
- if (wrkMast == null) {
- continue;
- }
+// WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("loc_no", "1001").in("wrk_sts", 106, 107));
+// if (wrkMast == null) {
+// continue;
+// }
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
- staProtocol.setWorkNo(wrkMast.getPlcWrkNo());
+ staProtocol.setWorkNo((int) (Math.random() * 10000));
staProtocol.setStaNo((short) 1004);
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- log.info("杈撻�佺嚎涓嬪彂3锛歿},{}", wrkMast.getWrkNo(), 1004);
+ log.info("杈撻�佺嚎涓嬪彂3锛歿},{}", staProtocol.getWorkNo(), 1004);
if (result) {
- // 鏇存柊宸ヤ綔涓绘。
- wrkMast.setWrkSts(108L);
- wrkMast.setModiTime(new Date());
- if (wrkMastMapper.updateById(wrkMast) == 0) {
- News.error("" + mark + " - 1" + " - 鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
- }
+ setFlag1001(false);
} else {
News.error("" + mark + " - 2" + " - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
}
-
} else {
News.errorNoLog("" + mark + " - 6" + " - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 鑷姩淇″彿锛�" + staProtocol.isLoading() + "銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable() + "銆佺┖鏉夸俊鍙凤細" + staProtocol.isEmptyMk() + "銆佸伐浣滃彿锛�" + staProtocol.getWorkNo() + "銆侀攣瀹氭爣璁�" + staProtocol.isPakMk() + "銆佸叆搴撳嵃璁帮細" + staProtocol.getStamp());
}
}
}
}
+
+ public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
+ add(1001);
+ add(1002);
+ add(1003);
+ add(1004);
+ add(1005);
+ add(1006);
+ add(1007);
+
+ }};
public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
@@ -193,34 +241,197 @@
}
// && staProtocol.isInEnable()
if (staProtocol.isInEnable()) {
- getWrk(staProtocol, "-2");
+ OpenBusSubmitParam openBusSubmitParam = new OpenBusSubmitParam();
+ openBusSubmitParam.setBatch(DateUtils.convert(new Date()));
+ List<TaskDto> taskList = new ArrayList<>();
+ TaskDto taskDto = new TaskDto();
+ Random rand = new Random();
+ taskDto.setSeqNum(rand.nextInt(10000) + "");
+ taskDto.setDestLoc(getFLoc(staProtocol.getSiteId() + "-2", "15"));
+ taskDto.setOriSta(staProtocol.getSiteId() + "-2");
+ taskDto.setPriority(123);
+ taskList.add(taskDto);
+ openBusSubmitParam.setTaskList(taskList);
+ sendTask(openBusSubmitParam, staProtocol);
}
if (staProtocol.isOutEnable()) {
- getWrk(staProtocol, "-3");
+ OpenBusSubmitParam openBusSubmitParam = new OpenBusSubmitParam();
+ openBusSubmitParam.setBatch(DateUtils.convert(new Date()));
+ List<TaskDto> taskList = new ArrayList<>();
+ TaskDto taskDto = new TaskDto();
+ Random rand = new Random();
+ taskDto.setSeqNum(rand.nextInt(10000) + "");
+ taskDto.setDestLoc(getFLoc(staProtocol.getSiteId() + "-3", "15"));
+ taskDto.setOriSta(staProtocol.getSiteId() + "-3");
+ taskDto.setPriority(123);
+ taskList.add(taskDto);
+ openBusSubmitParam.setTaskList(taskList);
+ sendTask(openBusSubmitParam, staProtocol);
}
}
}
- private void getWrk(StaProtocol staProtocol, String lev) {
- List<WrkMast> sourceLocNo = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("source_loc_no", staProtocol.getSiteId() + lev));
- if (!Cools.isEmpty(sourceLocNo) && !sourceLocNo.isEmpty()) {
- return;
+ public synchronized void autoOut(Integer mark) {
+ int i = 0;
+ for (Integer staNo : staNos1) {
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鏉′欢
+ if (!staProtocol.isAutoing()) {
+ continue;
+ }
+ if (staProtocol.isLoading()) {
+ continue;
+ }
+ if (staProtocol.getStaNo() != 0) {
+ continue;
+ }
+ i++;
}
- WrkMast in = new WrkMast();
- in.setSourceLocNo(staProtocol.getSiteId() + lev);
- in.setLocNo("");
- in.setIoType(10);
- in.setIoTime(new Date());
- in.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
- in.setIoPri(13D); // 浼樺厛绾э細13
- in.setFullPlt("Y"); // 婊℃澘锛歒
- in.setPicking("N"); // 鎷f枡
- in.setExitMk("N"); // 閫�鍑�
- in.setEmptyMk("Y"); // 绌烘澘
- in.setLinkMis("N");
- in.setAppeTime(new Date());
- in.setModiTime(new Date());
- wrkMastService.insert(in);
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(1001);
+ if (i >= 7) {
+ OpenBusSubmitParam openBusSubmitParam = new OpenBusSubmitParam();
+ openBusSubmitParam.setBatch(DateUtils.convert(new Date()));
+ List<TaskDto> taskList = new ArrayList<>();
+ TaskDto taskDto = new TaskDto();
+ taskDto.setSeqNum(Math.random() * 1000 + "");
+ taskDto.setOriLoc(getFLoc("1001", "16"));
+ taskDto.setDestSta("1001");
+ taskDto.setPriority(123);
+ taskList.add(taskDto);
+ openBusSubmitParam.setTaskList(taskList);
+ sendTask(openBusSubmitParam, staProtocol);
+ }
}
+
+ public synchronized void autoIn(Integer mark) {
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(1007);
+ if (staProtocol == null) {
+ return;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鏉′欢
+ if (!staProtocol.isAutoing()) {
+ return;
+ }
+ if (!staProtocol.isLoading()) {
+ return;
+ }
+ if (staProtocol.getStaNo() > 0) {
+ return;
+ }
+ OpenBusSubmitParam openBusSubmitParam = new OpenBusSubmitParam();
+ openBusSubmitParam.setBatch(DateUtils.convert(new Date()));
+ List<TaskDto> taskList = new ArrayList<>();
+ TaskDto taskDto = new TaskDto();
+ taskDto.setSeqNum(Math.random() * 1000 + "");
+ taskDto.setDestLoc(getFLoc("1007", "15"));
+ taskDto.setOriLoc("1007");
+ taskDto.setPriority(123);
+ taskList.add(taskDto);
+ openBusSubmitParam.setTaskList(taskList);
+ sendTask(openBusSubmitParam, staProtocol);
+ }
+
+
+ public void updateSta(Integer mark) {
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol1 = devpThread.getStation().get(1001);
+ StaProtocol staProtocol7 = devpThread.getStation().get(1007);
+ if (staProtocol1 == null) {
+ return;
+ }
+ if (staProtocol7 == null) {
+ return;
+ }
+ updateSta("1001", staProtocol1.isLoading() ? "16" : "15");
+ updateSta("1007", staProtocol7.isLoading() ? "16" : "15");
+ }
+
+ @Transactional
+ public void 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);
+ } else {
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", ctuUrl + sendTask, JSON.toJSONString(openBusSubmitParam), response);
+ throw new CoolException("璋冪敤涓嬪彂浠诲姟鎺ュ彛鎶ラ敊");
+ }
+ } catch (Exception e) {
+ log.error("fail", e);
+ }
+ }
+
+ @Transactional
+ public void updateSta(String staNo, String sts) {
+ Map<String, String> data = new HashMap<String, String>();
+ data.put("staNo", staNo);
+ data.put("sts", sts);
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(ctuUrl)
+ .setPath(updateSta)
+ .setTimeout(1200, TimeUnit.SECONDS)
+ .setJson(JSON.toJSONString(data))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ //log.info("涓嬪彂浠诲姟杩斿洖鏁版嵁锛歿}", response);
+ } else {
+ //log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", ctuUrl + sendTask, JSON.toJSONString(data), response);
+ //throw new CoolException("璋冪敤涓嬪彂浠诲姟鎺ュ彛鎶ラ敊");
+ }
+ } catch (Exception e) {
+ log.error("fail", e);
+ }
+ }
+
+ @Transactional
+ public String getFLoc(String staNo, String sts) {
+ Map<String, String> data = new HashMap<String, String>();
+ data.put("staNo", staNo);
+ data.put("sts", sts);
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(ctuUrl)
+ .setPath(getLoc)
+ .setTimeout(1200, TimeUnit.SECONDS)
+ .setJson(JSON.toJSONString(data))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ //log.info("涓嬪彂浠诲姟杩斿洖鏁版嵁锛歿}", response);
+ JSONObject loc = JSON.parseObject(jsonObject.getString("data"));
+ return loc.getString("locNo");
+ } else {
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", ctuUrl + sendTask, JSON.toJSONString(data), response);
+ throw new CoolException("璋冪敤涓嬪彂浠诲姟鎺ュ彛鎶ラ敊");
+ }
+ } catch (Exception e) {
+ log.error("fail", e);
+ }
+ return null;
+ }
}
diff --git a/src/main/java/com/zy/core/CtuMainProcess.java b/src/main/java/com/zy/core/CtuMainProcess.java
index 693743c..da7a89b 100644
--- a/src/main/java/com/zy/core/CtuMainProcess.java
+++ b/src/main/java/com/zy/core/CtuMainProcess.java
@@ -43,15 +43,26 @@
}
- // 鍏ュ簱
+ // 鑷姩鍏ュ簱
ctuMainService.generateStoreWrkFile(1);
// 鍑哄簱
ctuMainService.out(2);
+
+ // 鍑哄簱
+ ctuMainService.outToPlc(6);
+
// 101-108鎸夐挳鍏ュ簱
ctuMainService.in(3);
+ //1001鑷姩鍑�
+ //ctuMainService.autoOut(4);
+
+ //1007鑷姩鍏�
+ //ctuMainService.autoIn(5);
+
+ ctuMainService.updateSta(6);
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index ea0532e..5abe98d 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -123,6 +123,11 @@
write((StaProtocol) task.getData());
log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�" + ((StaProtocol) task.getData()).getWorkNo() + "," + ((StaProtocol) task.getData()).getStaNo());
break;
+ // 鍐欐暟鎹� ID+鐩爣绔�
+ case 3:
+ write2((StaProtocol) task.getData());
+ log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�" + ((StaProtocol) task.getData()).getWorkNo() + "," + ((StaProtocol) task.getData()).getStaNo());
+ break;
default:
break;
}
@@ -396,6 +401,31 @@
}
}
+ private void write2(StaProtocol staProtocol) throws InterruptedException {
+ if (null == staProtocol) {
+ return;
+ }
+ OperateResult write = null;
+ boolean[] array = new boolean[1];
+ array[0] = true;
+ //浠诲姟涓嬪彂娆℃暟
+ int writeCount = 0;
+ do {
+ write = siemensS7Net.Write("DB102.0", array);
+ if (write.IsSuccess) {
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ break;
+ } else {
+ writeCount++;
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ } while (writeCount < 5);
+
+ if (!write.IsSuccess) {
+ News.error("SiemensDevp" + " - 4" + " - 鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+ }
+ }
+
// 鏇存柊鍏ュ嚭搴撴ā寮�
private void updateIoMode() throws InterruptedException {
if (this.ioModeOf2F != IoModeType.NONE) {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index c18b0d6..dec22c3 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,6 +19,13 @@
database: 0
# password: xltys1995
+ctu:
+ url: 10.10.10.200:8088
+ locSync: /api/open/loc/sync
+ sendTask: /api/open/bus/submit
+ getLoc: /api/open/loc/one
+ update: /api/open/sta/update
+
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
# global-config:
--
Gitblit v1.9.1