From ad79ba405b2d1ac96423f88f4e8a76c584b9d38a Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期一, 09 二月 2026 15:57:06 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java | 156 ++++++++
src/main/java/com/zy/core/utils/WmsOperateUtils.java | 111 +++++
src/main/java/com/zy/core/network/entity/ZyCrnStatusEntity.java | 6
src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java | 64 ++
src/main/java/com/zy/asrs/entity/BasCrnp.java | 7
src/main/resources/mapper/BasCrnpMapper.xml | 1
pom.xml | 2
src/main/java/com/zy/core/model/protocol/CrnProtocol.java | 5
src/main/java/com/zy/common/model/StartupDto.java | 12
src/main/java/com/zy/core/network/real/ZyStationRealConnect.java | 27
src/main/java/com/zy/core/network/entity/ZyDualCrnStatusEntity.java | 2
src/main/java/com/zy/core/model/protocol/StationProtocol.java | 3
src/main/java/com/zy/core/network/ZyCrnConnectDriver.java | 12
src/main/java/com/zy/asrs/utils/Utils.java | 34 +
src/main/java/com/zy/core/thread/impl/ZyStationThread.java | 1
src/main/webapp/views/index.html | 8
src/main/java/com/zy/asrs/domain/NotifyDto.java | 3
src/main/java/com/zy/core/thread/CrnThread.java | 5
src/main/webapp/static/js/common.js | 2
src/main/java/com/zy/common/service/CommonService.java | 45 +
src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java | 27 +
src/main/java/com/zy/core/network/real/ZyCrnRealConnect.java | 201 +++++++++-
src/main/java/com/zy/core/plugin/FakeProcess.java | 13
src/main/java/com/zy/core/utils/StationOperateProcessUtils.java | 123 +++++
src/main/java/com/zy/asrs/controller/OpenController.java | 42 ++
src/main/java/com/zy/asrs/entity/WrkMast.java | 7
src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java | 3
src/main/resources/mapper/WrkMastMapper.xml | 1
src/main/java/com/zy/asrs/domain/param/CreateOutTaskParam.java | 3
src/main/java/com/zy/asrs/task/NotifyScheduler.java | 2
src/main/java/com/zy/core/model/command/CrnCommand.java | 6
src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java | 111 ++---
src/main/java/com/zy/asrs/domain/param/CreateLocMoveTaskParam.java | 2
src/main/webapp/views/locMast/locMast_detail.html | 6
src/main/java/com/zy/core/plugin/NormalProcess.java | 41 +
src/main/java/com/zy/core/enums/WrkStsType.java | 1
src/main/java/com/zy/asrs/domain/enums/NotifyMsgType.java | 2
src/main/java/com/zy/common/model/MonitorParam.java | 8
src/main/java/com/zy/asrs/domain/param/CreateInTaskParam.java | 16
src/main/java/com/zy/core/network/api/ZyCrnConnectApi.java | 5
src/main/java/com/zy/core/enums/RedisKeyType.java | 1
src/main/resources/application.yml | 7
42 files changed, 957 insertions(+), 177 deletions(-)
diff --git a/pom.xml b/pom.xml
index a5e538c..51cee7e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -144,7 +144,7 @@
</dependencies>
<build>
- <finalName>wcs</finalName>
+ <finalName>hcwcs</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index abc031f..138fc9c 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -5,13 +5,16 @@
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.domain.param.*;
+import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.DeviceConfig;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.DeviceConfigService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WrkMastService;
import com.zy.common.annotations.OpenApiLog;
+import com.zy.common.model.MonitorParam;
import com.zy.common.service.CommonService;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
@@ -58,6 +61,8 @@
private ConfigService configService;
@Autowired
private DeviceConfigService deviceConfigService;
+ @Autowired
+ private BasDevpService basDevpService;
// 绉诲簱浠诲姟
@PostMapping("/createLocMoveTask")
@@ -352,4 +357,41 @@
return R.ok();
}
+ // 鍙嶉浠诲姟鎵ц缁撴灉
+ @PostMapping("/stationStatus")
+ public R stationStatus(@RequestBody MonitorParam param){
+ if(param == null || param.getStationIds().length == 0){
+ return R.error("杈撳叆鐨勫弬鏁颁负绌�");
+ }
+ List<StationProtocol> basDevps = new ArrayList<>();
+ Boolean flag = false;
+ // 鑾峰彇杈撻�佺珯鐐规暟鎹�
+ ArrayList<StationProtocol> stationProtocols = new ArrayList<>();
+ List<DeviceConfig> stationList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+ .eq("device_type", String.valueOf(SlaveType.Devp)));
+ for (DeviceConfig device : stationList) {
+ StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, device.getDeviceNo());
+ if (stationThread == null) {
+ continue;
+ }
+
+ List<StationProtocol> stationProtocolList = stationThread.getStatus();
+ if (stationProtocolList == null) {
+ continue;
+ }
+ for (StationProtocol stationProtocol : stationProtocolList) {
+ for (int i = 0; i < param.getStationIds().length; i++) {
+ if (stationProtocol.getStationId().equals(param.getStationIds()[i])){
+ flag = true;
+ basDevps.add(stationProtocol);
+ }
+ }
+ }
+ }
+ if(flag){
+ return R.ok().add(basDevps);
+ }
+ return null;
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/domain/NotifyDto.java b/src/main/java/com/zy/asrs/domain/NotifyDto.java
index eb15f4b..3a37ed2 100644
--- a/src/main/java/com/zy/asrs/domain/NotifyDto.java
+++ b/src/main/java/com/zy/asrs/domain/NotifyDto.java
@@ -40,4 +40,7 @@
//涓婃閲嶈瘯鏃堕棿
private Long lastRetryTime = 0L;
+ //閲嶉噺
+ private Double weight;
+
}
diff --git a/src/main/java/com/zy/asrs/domain/enums/NotifyMsgType.java b/src/main/java/com/zy/asrs/domain/enums/NotifyMsgType.java
index f9d1067..716894e 100644
--- a/src/main/java/com/zy/asrs/domain/enums/NotifyMsgType.java
+++ b/src/main/java/com/zy/asrs/domain/enums/NotifyMsgType.java
@@ -4,7 +4,7 @@
//浠诲姟
TASK_COMPLETE("task_complete", "浠诲姟瀹屾垚"),
TASK_CANCEL("task_cancel", "浠诲姟鍙栨秷"),
-
+ ARRIVE_AT_THE_DESTINATION("task_arrive", "鍒拌揪鐩殑鍦�"),
CRN_IN_TASK_RUN("crn_in_task_run", "鍫嗗灈鏈哄叆搴撲换鍔℃墽琛屼腑"),
CRN_IN_TASK_COMPLETE("crn_in_task_complete", "鍫嗗灈鏈哄叆搴撲换鍔℃墽琛屽畬鎴�"),
CRN_OUT_TASK_RUN("crn_out_task_run", "鍫嗗灈鏈哄嚭搴撲换鍔℃墽琛屼腑"),
diff --git a/src/main/java/com/zy/asrs/domain/param/CreateInTaskParam.java b/src/main/java/com/zy/asrs/domain/param/CreateInTaskParam.java
index db454c1..0d9a783 100644
--- a/src/main/java/com/zy/asrs/domain/param/CreateInTaskParam.java
+++ b/src/main/java/com/zy/asrs/domain/param/CreateInTaskParam.java
@@ -5,22 +5,20 @@
@Data
public class CreateInTaskParam {
- //wms浠诲姟鍙�
- private String taskNo;
+ private String sourceStaNo;
- //婧愮珯
- private Integer sourceStaNo;
+ private String staNo;
- //鐩爣绔�
- private Integer staNo;
+ private Integer crnNo;
- //鐩爣搴撲綅
private String locNo;
- //鏉$爜
+ private Integer workNo;
+
+ private String taskNo;
+
private String barcode;
- //浠诲姟浼樺厛绾�
private Integer taskPri;
}
diff --git a/src/main/java/com/zy/asrs/domain/param/CreateLocMoveTaskParam.java b/src/main/java/com/zy/asrs/domain/param/CreateLocMoveTaskParam.java
index fbf9138..baa8a3e 100644
--- a/src/main/java/com/zy/asrs/domain/param/CreateLocMoveTaskParam.java
+++ b/src/main/java/com/zy/asrs/domain/param/CreateLocMoveTaskParam.java
@@ -17,4 +17,6 @@
//浠诲姟浼樺厛绾�
private Integer taskPri;
+ //鎵樼洏鐮�
+ private String barcode;
}
diff --git a/src/main/java/com/zy/asrs/domain/param/CreateOutTaskParam.java b/src/main/java/com/zy/asrs/domain/param/CreateOutTaskParam.java
index 2ddcf09..f1bd6e9 100644
--- a/src/main/java/com/zy/asrs/domain/param/CreateOutTaskParam.java
+++ b/src/main/java/com/zy/asrs/domain/param/CreateOutTaskParam.java
@@ -9,6 +9,9 @@
private String taskNo;
//鍑哄簱搴撲綅
+ private String sourceLocNo;
+
+ //鐩爣搴撲綅
private String locNo;
//浠诲姟浼樺厛绾�
diff --git a/src/main/java/com/zy/asrs/entity/BasCrnp.java b/src/main/java/com/zy/asrs/entity/BasCrnp.java
index 8a24879..37193d3 100644
--- a/src/main/java/com/zy/asrs/entity/BasCrnp.java
+++ b/src/main/java/com/zy/asrs/entity/BasCrnp.java
@@ -111,6 +111,13 @@
@TableField("max_out_task")
private Integer maxOutTask;
+ /**
+ * 鎸囧畾搴撲綅闇�瑕佷寒鐏�
+ */
+ @ApiModelProperty(value= "鏈�澶у嚭搴撲换鍔℃暟")
+ @TableField("arr")
+ private String arr;
+
public BasCrnp() {}
public BasCrnp(Integer status,Integer wrkNo,String inEnable,String outEnable,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index e339021..aa69cc8 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -189,6 +189,13 @@
@TableField(value = "batch_seq")
private Integer batchSeq;
+ /**
+ * 閲嶉噺
+ */
+ @ApiModelProperty(value= "閲嶉噺")
+ @TableField(value = "weight")
+ private Double weight;
+
public String getWrkSts$(){
BasWrkStatusMapper mapper = SpringUtils.getBean(BasWrkStatusMapper.class);
BasWrkStatus entity = mapper.selectById(this.wrkSts);
diff --git a/src/main/java/com/zy/asrs/task/NotifyScheduler.java b/src/main/java/com/zy/asrs/task/NotifyScheduler.java
index 8e40b08..9bc36ed 100644
--- a/src/main/java/com/zy/asrs/task/NotifyScheduler.java
+++ b/src/main/java/com/zy/asrs/task/NotifyScheduler.java
@@ -107,6 +107,8 @@
continue;
}
NotifyDto notifyDto = (NotifyDto) object;
+ int id =notifyDto.getId().intValue();
+ notifyDto.setId((Long.valueOf(id)));
if (System.currentTimeMillis() - notifyDto.getLastRetryTime() < 1000 * notifyDto.getRetryTime()) {
continue;
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index db3a663..0cf04f8 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -680,4 +680,38 @@
return null;
}
+ //灏唚ms搴撲綅鍙疯浆鎹㈡垚wcs搴撲綅鍙�
+ public static String WMSLocToWCSLoc(String locNo) {
+ String row = locNo.substring(0, 2);
+ int i = 0;
+ for (char c : row.toCharArray()) {
+ if (c == '0') {
+ i++;
+ }else {
+ break;
+ }
+ }
+ row = row.substring(i);
+ int j = 0;
+ String boy = locNo.substring(2, 5);
+ for (char c : boy.toCharArray()) {
+ if (c == '0') {
+ j++;
+ }else {
+ break;
+ }
+ }
+ boy = boy.substring(j);
+ int k = 0;
+ String lev = locNo.substring(5);
+ for (char c : lev.toCharArray()) {
+ if (c == '0') {
+ k++;
+ }else {
+ break;
+ }
+ }
+ lev = lev.substring(k);
+ return row + "-" + boy + "-" + lev;
+ }
}
diff --git a/src/main/java/com/zy/common/model/MonitorParam.java b/src/main/java/com/zy/common/model/MonitorParam.java
new file mode 100644
index 0000000..d496e4c
--- /dev/null
+++ b/src/main/java/com/zy/common/model/MonitorParam.java
@@ -0,0 +1,8 @@
+package com.zy.common.model;
+
+import lombok.Data;
+
+@Data
+public class MonitorParam {
+ Integer[] stationIds;
+}
diff --git a/src/main/java/com/zy/common/model/StartupDto.java b/src/main/java/com/zy/common/model/StartupDto.java
index 58de959..38548e7 100644
--- a/src/main/java/com/zy/common/model/StartupDto.java
+++ b/src/main/java/com/zy/common/model/StartupDto.java
@@ -5,9 +5,19 @@
@Data
public class StartupDto {
+ private Integer sourceStaNo;
+
+ private Integer staNo;
+
+ private Integer crnNo;
+
private String locNo;
- private String taskNo;
+ private Integer workNo;
+
+ private Integer taskNo;
+
+ private String barcode;
private Integer taskPri;
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 6026fd8..52fba06 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -12,11 +12,13 @@
import com.zy.common.utils.NavigateUtils;
import com.zy.common.utils.RedisUtil;
import com.zy.core.News;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.enums.WrkIoType;
-import com.zy.core.enums.WrkStsType;
+import com.zy.core.cache.MessageQueue;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.*;
import com.zy.core.model.StationObjModel;
+import com.zy.core.model.Task;
+import com.zy.core.model.command.StationCommand;
+import com.zy.core.thread.StationThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -177,7 +179,10 @@
if (!sourceCrnResult.getCrnNo().equals(targetCrnResult.getCrnNo())) {
throw new CoolException("婧愬簱浣嶅拰鐩爣搴撲綅涓嶅湪鍚屼竴宸烽亾");
}
-
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wms_wrk_no", param.getTaskNo()));
+ if (!wrkMasts.isEmpty()) {
+ throw new CoolException("宸茬粡鐢熸垚鏀逛换鍔″彿浠诲姟="+param.getTaskNo());
+ }
// 鑾峰彇宸ヤ綔鍙�
int workNo = getWorkNo(WrkIoType.LOC_MOVE.id);
// 淇濆瓨宸ヤ綔妗�
@@ -222,6 +227,7 @@
//鍏ュ簱浠诲姟
public WrkMast createInTask(CreateInTaskParam param) {
Date now = new Date();
+// String s = Utils.WMSLocToWCSLoc(param.getLocNo());
LocMast locMast = locMastService.queryByLoc(param.getLocNo());
if (null == locMast) {
throw new CoolException(param.getLocNo() + "鐩爣搴撲綅涓嶅瓨鍦�");
@@ -248,16 +254,22 @@
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
wrkMast.setIoTime(now);
- wrkMast.setWrkSts(WrkStsType.NEW_INBOUND.sts); // 宸ヤ綔鐘舵�侊細1.鐢熸垚鍏ュ簱浠诲姟
+ wrkMast.setWrkSts(WrkStsType.INBOUND_DEVICE_RUN.sts); // 宸ヤ綔鐘舵�侊細3.璁惧鎼繍涓�
wrkMast.setIoType(WrkIoType.IN.id); // 鍏ュ嚭搴撶姸鎬侊細 1.鍏ュ簱
wrkMast.setIoPri(ioPri);
wrkMast.setLocNo(param.getLocNo()); // 鐩爣搴撲綅
- wrkMast.setSourceStaNo(param.getSourceStaNo());//婧愮珯
- wrkMast.setStaNo(param.getStaNo());//鐩爣绔�
- wrkMast.setWmsWrkNo(param.getTaskNo());
+ wrkMast.setSourceStaNo(Integer.valueOf(param.getSourceStaNo()));//婧愮珯
+ wrkMast.setStaNo(Integer.valueOf(param.getSourceStaNo()));//鐩爣绔�
+ wrkMast.setWmsWrkNo(String.valueOf(param.getTaskNo()));
wrkMast.setBarcode(param.getBarcode());
wrkMast.setAppeTime(now);
wrkMast.setModiTime(now);
+ StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, 1);
+
+ StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO,
+ wrkMast.getWrkNo(), Integer.valueOf(param.getSourceStaNo()), Integer.valueOf(param.getSourceStaNo()), 0);
+
+ MessageQueue.offer(SlaveType.Devp, 1, new Task(2, command));
if (findCrnResult.getCrnType().equals(SlaveType.Crn)) {
wrkMast.setCrnNo(findCrnResult.getCrnNo());
@@ -285,7 +297,7 @@
//鍑哄簱浠诲姟
public boolean createOutTask(CreateOutTaskParam param) {
Date now = new Date();
- LocMast locMast = locMastService.queryByLoc(param.getLocNo());
+ LocMast locMast = locMastService.queryByLoc(param.getSourceLocNo());
if (null == locMast) {
throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
}
@@ -336,6 +348,19 @@
wrkMast.setIoType(WrkIoType.OUT.id); // 鍏ュ嚭搴撶姸鎬侊細 101.鍑哄簱
wrkMast.setIoPri(ioPri);
wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
+
+ if(!Cools.isEmpty(param.getLocNo())) {
+ //鐩爣绔欑偣
+ LocMast locMast1 = locMastService.queryByLoc(param.getLocNo());
+ if (null == locMast1) {
+ throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
+ }
+
+ if (!locMast1.getLocSts().equals("O")) {
+ throw new CoolException("鐩爣搴撲綅涓嶅浜庡湪搴撶姸鎬�");
+ }
+ wrkMast.setLocNo(locMast1.getLocNo()); //鐩爣搴撲綅
+ }
wrkMast.setSourceStaNo(sourceStationId);//婧愮珯
wrkMast.setStaNo(staNo);//鐩爣绔�
wrkMast.setWmsWrkNo(param.getTaskNo());
diff --git a/src/main/java/com/zy/core/enums/RedisKeyType.java b/src/main/java/com/zy/core/enums/RedisKeyType.java
index 566de01..01de1e1 100644
--- a/src/main/java/com/zy/core/enums/RedisKeyType.java
+++ b/src/main/java/com/zy/core/enums/RedisKeyType.java
@@ -41,6 +41,7 @@
STATION_IN_EXECUTE_LIMIT("station_in_execute_limit_"),
STATION_OUT_EXECUTE_LIMIT("station_out_execute_limit_"),
STATION_OUT_EXECUTE_COMPLETE_LIMIT("station_out_execute_complete_limit_"),
+ STATION_OUT_EXECUTE_DESTINATION_LIMIT("station_out_execute_destination_limit_"),
CHECK_STATION_RUN_BLOCK_LIMIT_("check_station_run_block_limit_"),
CHECK_SHALLOW_LOC_STATUS_LIMIT("check_shallow_loc_status_limit_"),
GENERATE_ENABLE_IN_STATION_DATA_LIMIT("generate_enable_in_station_data_limit_"),
diff --git a/src/main/java/com/zy/core/enums/WrkStsType.java b/src/main/java/com/zy/core/enums/WrkStsType.java
index 59b4665..0b702d2 100644
--- a/src/main/java/com/zy/core/enums/WrkStsType.java
+++ b/src/main/java/com/zy/core/enums/WrkStsType.java
@@ -15,6 +15,7 @@
OUTBOUND_RUN(102, "璁惧鎼繍涓�"),
OUTBOUND_RUN_COMPLETE(103, "璁惧鎼繍瀹屾垚"),
STATION_RUN(104, "绔欑偣杩愯涓�"),
+ ARRIVE_AT_THE_DESTINATION(105, "鍒拌揪鐩殑鍦�"),
COMPLETE_OUTBOUND(109, "鍑哄簱瀹屾垚"),
SETTLE_OUTBOUND(110, "鍑哄簱搴撳瓨鏇存柊"),
diff --git a/src/main/java/com/zy/core/model/command/CrnCommand.java b/src/main/java/com/zy/core/model/command/CrnCommand.java
index dcc61c9..c0f42d8 100644
--- a/src/main/java/com/zy/core/model/command/CrnCommand.java
+++ b/src/main/java/com/zy/core/model/command/CrnCommand.java
@@ -53,4 +53,10 @@
// 浠诲姟纭 0锛氭湭纭 1锛氬凡纭
private Integer command = 0;
+ private int index;
+
+ private short value;
+
+ private String locNo;
+
}
diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
index ffceec0..d69f099 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -173,6 +173,11 @@
*/
private Map<String, Object> extend;
+ /**
+ * DB110.200 - DB110.398 data
+ */
+ private short[] db110Data;
+
public void setMode(Integer mode) {
this.mode = mode;
this.modeType = CrnModeType.get(mode);
diff --git a/src/main/java/com/zy/core/model/protocol/StationProtocol.java b/src/main/java/com/zy/core/model/protocol/StationProtocol.java
index c2c9f52..b632d03 100644
--- a/src/main/java/com/zy/core/model/protocol/StationProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StationProtocol.java
@@ -63,6 +63,9 @@
*/
private Map<String, Object> extend;
+ //寮傚父
+ private String systemWarning;
+
@Override
public StationProtocol clone() {
try {
diff --git a/src/main/java/com/zy/core/network/ZyCrnConnectDriver.java b/src/main/java/com/zy/core/network/ZyCrnConnectDriver.java
index 48a8a51..e885eb5 100644
--- a/src/main/java/com/zy/core/network/ZyCrnConnectDriver.java
+++ b/src/main/java/com/zy/core/network/ZyCrnConnectDriver.java
@@ -97,4 +97,16 @@
return zyCrnConnectApi.sendCommand(command);
}
+ public CommandResponse sendCommand1(CrnCommand command) {
+ return zyCrnConnectApi.sendCommand1(command);
+ }
+
+ public CommandResponse sendCommand2(CrnCommand command) {
+ return zyCrnConnectApi.sendCommand2(command);
+ }
+
+ public CommandResponse sendCommand3(CrnCommand command) {
+ return zyCrnConnectApi.sendCommand3(command);
+ }
+
}
diff --git a/src/main/java/com/zy/core/network/api/ZyCrnConnectApi.java b/src/main/java/com/zy/core/network/api/ZyCrnConnectApi.java
index ab07f10..3824f39 100644
--- a/src/main/java/com/zy/core/network/api/ZyCrnConnectApi.java
+++ b/src/main/java/com/zy/core/network/api/ZyCrnConnectApi.java
@@ -14,4 +14,9 @@
CommandResponse sendCommand(CrnCommand command);//涓嬪彂鍛戒护
+ CommandResponse sendCommand1(CrnCommand command);
+
+ CommandResponse sendCommand2(CrnCommand command);
+
+ CommandResponse sendCommand3(CrnCommand command);
}
diff --git a/src/main/java/com/zy/core/network/entity/ZyCrnStatusEntity.java b/src/main/java/com/zy/core/network/entity/ZyCrnStatusEntity.java
index 9ddfe6b..a86dc70 100644
--- a/src/main/java/com/zy/core/network/entity/ZyCrnStatusEntity.java
+++ b/src/main/java/com/zy/core/network/entity/ZyCrnStatusEntity.java
@@ -122,4 +122,10 @@
private Integer temp4;
+ private Double weight;
+
+ /**
+ * DB110.200 - DB110.398 data
+ */
+ private short[] db110Data;
}
diff --git a/src/main/java/com/zy/core/network/entity/ZyDualCrnStatusEntity.java b/src/main/java/com/zy/core/network/entity/ZyDualCrnStatusEntity.java
index 33f12eb..884166e 100644
--- a/src/main/java/com/zy/core/network/entity/ZyDualCrnStatusEntity.java
+++ b/src/main/java/com/zy/core/network/entity/ZyDualCrnStatusEntity.java
@@ -145,4 +145,6 @@
//鏉$爜
private String barcode;
+ private Float weight;
+
}
diff --git a/src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java b/src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java
index 570b9aa..26986f6 100644
--- a/src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java
+++ b/src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java
@@ -55,6 +55,33 @@
return response;
}
+ @Override
+ public CommandResponse sendCommand1(CrnCommand command) {
+ CommandResponse response = new CommandResponse(false);
+ if (command.getTaskMode().intValue() == CrnTaskModeType.LOC_MOVE.id) {
+ //鍙栨斁璐�
+ executor.submit(() -> commandTake(command));
+ } else if (command.getTaskMode().intValue() == CrnTaskModeType.CRN_MOVE.id) {
+ //绉诲姩
+ executor.submit(() -> commandMove(command));
+ } else if (command.getTaskMode().intValue() == CrnTaskModeType.NONE.id) {
+ //澶嶄綅
+ executor.submit(() -> commandTaskComplete(command));
+ }
+ response.setResult(true);
+ return response;
+ }
+
+ @Override
+ public CommandResponse sendCommand2(CrnCommand command) {
+ return null;
+ }
+
+ @Override
+ public CommandResponse sendCommand3(CrnCommand command) {
+ return null;
+ }
+
private void commandTaskComplete(CrnCommand command) {
this.crnStatus.setTaskNo(0);
this.crnStatus.setStatus(CrnStatusType.IDLE.id);
diff --git a/src/main/java/com/zy/core/network/real/ZyCrnRealConnect.java b/src/main/java/com/zy/core/network/real/ZyCrnRealConnect.java
index ba2a839..0568d82 100644
--- a/src/main/java/com/zy/core/network/real/ZyCrnRealConnect.java
+++ b/src/main/java/com/zy/core/network/real/ZyCrnRealConnect.java
@@ -5,12 +5,9 @@
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.alibaba.fastjson.JSON;
+import com.core.common.Cools;
import com.core.common.DateUtils;
-import com.core.common.SpringUtils;
-import com.zy.asrs.entity.BasCrnpOpt;
import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.service.BasCrnpOptService;
-import com.zy.asrs.utils.Utils;
import com.zy.core.News;
import com.zy.core.cache.OutputQueue;
import com.zy.core.model.CommandResponse;
@@ -34,9 +31,9 @@
boolean connected = false;
siemensNet = new SiemensS7Net(SiemensPLCS.S1200, deviceConfig.getIp());
OperateResult connect = siemensNet.ConnectServer();
- if(connect.IsSuccess){
+ if (connect.IsSuccess) {
connected = true;
- OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戝爢鍨涙満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
+ OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝爢鍨涙満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
News.info("鍫嗗灈鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort());
} else {
OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝爢鍨涙満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
@@ -55,7 +52,7 @@
@Override
public ZyCrnStatusEntity getStatus() {
try {
- OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56);
+ OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 60);
if (result.IsSuccess) {
ZyCrnStatusEntity crnStatus = new ZyCrnStatusEntity();
crnStatus.setCrnNo(deviceConfig.getDeviceNo());
@@ -78,6 +75,14 @@
crnStatus.setYDistance((double) siemensNet.getByteTransform().TransSingle(result.Content, 44));
crnStatus.setXDuration((double) siemensNet.getByteTransform().TransSingle(result.Content, 48));
crnStatus.setYDuration((double) siemensNet.getByteTransform().TransSingle(result.Content, 52));
+ crnStatus.setWeight((double) siemensNet.getByteTransform().TransSingle(result.Content, 56));
+
+ // 璇诲彇DB110.200 - DB110.398
+ OperateResultExOne<byte[]> resultDb110 = siemensNet.Read("DB110.200", (short) 200);
+ if (resultDb110.IsSuccess) {
+ short[] db110Data = siemensNet.getByteTransform().TransInt16(resultDb110.Content, 0, 100);
+ crnStatus.setDb110Data(db110Data);
+ }
return crnStatus;
} else {
@@ -103,23 +108,20 @@
}
int writeAck = 0;
- boolean commandResult = false;
do {
- OperateResultExOne<byte[]> commandReadResult = siemensNet.Read("DB100.0", (short) 2);
- if (commandReadResult.IsSuccess) {
- short commandRead = siemensNet.getByteTransform().TransInt16(commandReadResult.Content, 0);
- if (commandRead == 1) {
- Thread.sleep(500);
- }else {
- commandResult = true;
+ OperateResult resultAck = siemensNet.Write("DB100.0", (short) 0);
+ if (resultAck.IsSuccess) {
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 2);
+ short ack = siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
+ if (ack != 0) {
+ writeAck++;
+ } else {
+ News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", command.getCrnNo(), "ack澶嶄綅瀹屾垚");
+ break;
}
}
} while (writeAck < 5);
-
- if (!commandResult) {
- response.setMessage("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}" + command.getCrnNo() + "浠诲姟鐘舵�佷綅寮傚父");
- return response;
- }
short[] array = new short[9];
array[0] = (short) 0;
@@ -160,7 +162,7 @@
Thread.sleep(500);
} while (idx < 5);
- OperateResult confirmResult = siemensNet.Write("DB100.0", (short) 1);
+ OperateResult confirmResult = siemensNet.Write("DB100.18", (short) 1);
if (!confirmResult.IsSuccess) {
News.error("鍫嗗灈鏈哄啓鍏ョ‘璁ゆ暟鎹け璐� ===>> [id:{}]", command.getCrnNo());
response.setMessage("鍫嗗灈鏈哄啓鍏ョ‘璁ゆ暟鎹け璐�");
@@ -179,6 +181,163 @@
response.setMessage("鍛戒护涓嬪彂澶辫触");
}
+ if (!Cools.isEmpty(command.getLocNo())){
+ OperateResult resultAck = siemensNet.Write("DB110." + command.getIndex() * 2, command.getValue());
+ if (resultAck.IsSuccess) {
+ News.info("搴撲綅鐧借壊鐏懡浠や笅鍙慬locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
+ } else {
+ News.error("搴撲綅鐧借壊鐏懡浠や笅鍙戝け璐locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
+ }
+ }
+
+ return response;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return response;
+ }
+
+ @Override
+ public CommandResponse sendCommand1(CrnCommand command) {
+ CommandResponse response = new CommandResponse(false);
+ try {
+ if (null == command) {
+ News.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+ response.setMessage("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+ return response;
+ }
+
+ int writeAck = 0;
+ do {
+ OperateResult resultAck = siemensNet.Write("DB100.0", (short) 0);
+ if (resultAck.IsSuccess) {
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 2);
+ short ack = siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
+ if (ack != 0) {
+ writeAck++;
+ } else {
+ News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", command.getCrnNo(), "ack澶嶄綅瀹屾垚");
+ break;
+ }
+ }
+ } while (writeAck < 5);
+
+ short[] array = new short[10];
+ array[0] = (short) 1;
+ array[1] = command.getTaskNo().shortValue();
+ array[2] = command.getTaskMode().shortValue();
+ array[3] = command.getSourcePosX().shortValue();
+ array[4] = command.getSourcePosY().shortValue();
+ array[5] = command.getSourcePosZ().shortValue();
+ array[6] = command.getDestinationPosX().shortValue();
+ array[7] = command.getDestinationPosY().shortValue();
+ array[8] = command.getDestinationPosZ().shortValue();
+ array[9] = (short) 0;
+
+ OperateResult result = siemensNet.Write("DB100.0", array);
+ if (!result.IsSuccess) {
+ response.setMessage("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}" + command.getCrnNo() + "浠诲姟鐘舵�佷綅寮傚父");
+ return response;
+ }
+
+ int idx = 0;
+ do {
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20);
+ if (resultRead.IsSuccess) {
+ short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2);
+ short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4);
+ short sourcePosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 6);
+ short sourcePosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 8);
+ short sourcePosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10);
+ short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12);
+ short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14);
+ short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 16);
+ if (taskNo == 0 || taskMode == 0 || sourcePosX == 0 || sourcePosY == 0 || sourcePosZ == 0 || destinationPosX == 0 || destinationPosY == 0 || destinationPosZ == 0) {
+ result = siemensNet.Write("DB100.0", array);
+ } else {
+ break;
+ }
+ }
+ idx++;
+ Thread.sleep(500);
+ } while (idx < 5);
+
+ if (result != null && result.IsSuccess) {
+ News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", command.getCrnNo(), JSON.toJSON(command));
+ OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), command.getCrnNo(), JSON.toJSON(command)));
+ response.setResult(true);
+ response.setMessage("鍛戒护涓嬪彂鎴愬姛");
+ } else {
+ News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}]", command.getCrnNo());
+ OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}]", DateUtils.convert(new Date()), command.getCrnNo()));
+ response.setResult(false);
+ response.setMessage("鍛戒护涓嬪彂澶辫触");
+ }
+
+ if (!Cools.isEmpty(command.getLocNo())){
+ OperateResult resultAck = siemensNet.Write("DB110." + command.getIndex() * 2, command.getValue());
+ if (resultAck.IsSuccess) {
+ Integer index = command.getIndex()*2 + 200;
+ OperateResult resultAck1 = siemensNet.Write("DB110." + index, command.getValue());
+ if (resultAck1.IsSuccess) {
+ News.info("搴撲綅姗欒壊鎸夐挳鍛戒护涓嬪彂[locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
+ } else {
+ News.error("搴撲綅鐧借壊鐏懡浠や笅鍙戝け璐locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
+ }
+ News.info("搴撲綅鐧借壊鐏懡浠や笅鍙慬locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
+ } else {
+ News.error("搴撲綅鐧借壊鐏懡浠や笅鍙戝け璐locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
+ }
+ }
+
+ return response;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return response;
+ }
+
+ @Override
+ public CommandResponse sendCommand2(CrnCommand command) {
+ CommandResponse response = new CommandResponse(false);
+ try {
+ if (null == command) {
+ News.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+ response.setMessage("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+ return response;
+ }
+
+
+ OperateResult resultAck = siemensNet.Write("DB110." + command.getIndex() * 2, command.getValue());
+ if (resultAck.IsSuccess) {
+ News.info("搴撲綅鐧借壊鐏懡浠や笅鍙慬locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
+ } else {
+ News.error("搴撲綅鐧借壊鐏懡浠や笅鍙戝け璐locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
+ }
+ return response;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return response;
+ }
+
+ @Override
+ public CommandResponse sendCommand3(CrnCommand command) {
+ CommandResponse response = new CommandResponse(false);
+ try {
+ if (null == command) {
+ News.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+ response.setMessage("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+ return response;
+ }
+ Integer index = command.getIndex()*2 + 200;
+ OperateResult resultAck = siemensNet.Write("DB110." + index, command.getValue());
+ if (resultAck.IsSuccess) {
+ News.info("搴撲綅姗欒壊鎸夐挳鍛戒护涓嬪彂[locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
+ } else {
+ News.error("搴撲綅鐧借壊鐏懡浠や笅鍙戝け璐locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
+ }
return response;
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java b/src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java
index cd57da7..ca224d8 100644
--- a/src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java
+++ b/src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java
@@ -58,43 +58,33 @@
@Override
public ZyDualCrnStatusEntity getStatus() {
try {
- OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 66);
+ OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56);
if (result.IsSuccess) {
ZyDualCrnStatusEntity crnStatus = new ZyDualCrnStatusEntity();
crnStatus.setCrnNo(deviceConfig.getDeviceNo());
- crnStatus.setMode((int) siemensNet.getByteTransform().TransInt16(result.Content, 0));
- //宸ヤ綅1
- crnStatus.setTaskNo((int) siemensNet.getByteTransform().TransInt16(result.Content, 2));
- crnStatus.setStatus((int) siemensNet.getByteTransform().TransInt16(result.Content, 4));
- crnStatus.setForkPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 6));
- crnStatus.setLoaded((int) siemensNet.getByteTransform().TransInt16(result.Content, 8));
- crnStatus.setTaskReceive((int) siemensNet.getByteTransform().TransInt16(result.Content, 10));
-
- //宸ヤ綅2
- crnStatus.setTaskNoTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 12));
- crnStatus.setStatusTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 14));
- crnStatus.setForkPosTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 16));
- crnStatus.setLoadedTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 18));
- crnStatus.setTaskReceiveTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 20));
-
- crnStatus.setBay((int) siemensNet.getByteTransform().TransInt16(result.Content, 22));
- crnStatus.setLevel((int) siemensNet.getByteTransform().TransInt16(result.Content, 24));
- crnStatus.setLiftPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 26));
- crnStatus.setWalkPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 28));
- crnStatus.setAlarm((int) siemensNet.getByteTransform().TransInt16(result.Content, 30));
- crnStatus.setTemp1((int) siemensNet.getByteTransform().TransInt16(result.Content, 34));
- crnStatus.setTemp2((int) siemensNet.getByteTransform().TransInt16(result.Content, 36));
- crnStatus.setTemp3((int) siemensNet.getByteTransform().TransInt16(result.Content, 38));
- crnStatus.setTemp4((int) siemensNet.getByteTransform().TransInt16(result.Content, 40));
- crnStatus.setXSpeed((int) siemensNet.getByteTransform().TransInt16(result.Content, 42));
- crnStatus.setYSpeed((int) siemensNet.getByteTransform().TransInt16(result.Content, 44));
- crnStatus.setZSpeed((int) siemensNet.getByteTransform().TransInt16(result.Content, 46));
- crnStatus.setXDistance((int) siemensNet.getByteTransform().TransInt16(result.Content, 48));
- crnStatus.setYDistance((int) siemensNet.getByteTransform().TransInt16(result.Content, 50));
- crnStatus.setXDuration((int) siemensNet.getByteTransform().TransInt16(result.Content, 52));
- crnStatus.setYDuration((int) siemensNet.getByteTransform().TransInt16(result.Content, 54));
- crnStatus.setGoodsType((int) siemensNet.getByteTransform().TransInt16(result.Content, 56));
+ crnStatus.setMode((int)siemensNet.getByteTransform().TransInt16(result.Content, 0));
+ crnStatus.setTaskNo((int)siemensNet.getByteTransform().TransInt16(result.Content, 2));
+ crnStatus.setStatus((int)siemensNet.getByteTransform().TransInt16(result.Content, 4));
+ crnStatus.setBay((int)siemensNet.getByteTransform().TransInt16(result.Content, 6));
+ crnStatus.setLevel((int)siemensNet.getByteTransform().TransInt16(result.Content, 8));
+ crnStatus.setForkPos((int)siemensNet.getByteTransform().TransInt16(result.Content, 10));
+ crnStatus.setLiftPos((int)siemensNet.getByteTransform().TransInt16(result.Content, 12));
+ crnStatus.setWalkPos((int)siemensNet.getByteTransform().TransInt16(result.Content, 14));
+ crnStatus.setLoaded((int)siemensNet.getByteTransform().TransInt16(result.Content, 16));
+ crnStatus.setAlarm((int)siemensNet.getByteTransform().TransInt16(result.Content, 18));
+ crnStatus.setTemp1((int)siemensNet.getByteTransform().TransInt16(result.Content, 20));
+ crnStatus.setTemp2((int)siemensNet.getByteTransform().TransInt16(result.Content, 22));
+ crnStatus.setTemp3((int)siemensNet.getByteTransform().TransInt16(result.Content, 24));
+ crnStatus.setTemp4((int)siemensNet.getByteTransform().TransInt16(result.Content, 26));
+ crnStatus.setXSpeed((int)siemensNet.getByteTransform().TransInt16(result.Content, 28));
+ crnStatus.setYSpeed((int)siemensNet.getByteTransform().TransInt16(result.Content, 32));
+ crnStatus.setZSpeed((int)siemensNet.getByteTransform().TransInt16(result.Content, 36));
+ crnStatus.setXDistance((int) siemensNet.getByteTransform().TransSingle(result.Content, 40));
+ crnStatus.setYDistance((int) siemensNet.getByteTransform().TransSingle(result.Content, 44));
+ crnStatus.setXDuration((int) siemensNet.getByteTransform().TransSingle(result.Content, 48));
+ crnStatus.setYDuration((int) siemensNet.getByteTransform().TransSingle(result.Content, 52));
+ crnStatus.setWeight(siemensNet.getByteTransform().TransSingle(result.Content, 56));
String barcode = siemensNet.getByteTransform().TransString(result.Content, 58, 8, "UTF-8");
crnStatus.setBarcode(barcode);
@@ -121,34 +111,37 @@
return response;
}
+ int writeAck = 0;
+ do {
+ OperateResult resultAck = siemensNet.Write("DB100.0", (short) 0);
+ if (resultAck.IsSuccess){
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 2);
+ short ack = siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
+ if (ack != 0) {
+ writeAck++;
+ }else {
+// News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), "ack澶嶄綅瀹屾垚");
+ break;
+ }
+ }
+ }while (writeAck <5);
+
String address = "DB100.0";
- if (command.getStation() == 1) {
- //宸ヤ綅1
- address = "DB100.0";
- }else {
- //宸ヤ綅2
- address = "DB100.18";
- }
- String confirmAddress = "DB100.16";
- if (command.getStation() == 1) {
- //宸ヤ綅1
- confirmAddress = "DB100.16";
- }else {
- //宸ヤ綅2
- confirmAddress = "DB100.34";
- }
+ String confirmAddress = "DB100.18";
- short[] array = new short[9];
- array[0] = command.getTaskNo().shortValue();
- array[1] = command.getTaskMode().shortValue();
- array[2] = command.getSourcePosX().shortValue();
- array[3] = command.getSourcePosY().shortValue();
- array[4] = command.getSourcePosZ().shortValue();
- array[5] = command.getDestinationPosX().shortValue();
- array[6] = command.getDestinationPosY().shortValue();
- array[7] = command.getDestinationPosZ().shortValue();
- array[8] = (short) 0;
+ short[] array = new short[10];
+ array[0] = 0;
+ array[1] = command.getTaskNo().shortValue();
+ array[2] = command.getTaskMode().shortValue();
+ array[3] = command.getSourcePosX().shortValue();
+ array[4] = command.getSourcePosY().shortValue();
+ array[5] = command.getSourcePosZ().shortValue();
+ array[6] = command.getDestinationPosX().shortValue();
+ array[7] = command.getDestinationPosY().shortValue();
+ array[8] = command.getDestinationPosZ().shortValue();
+ array[9] = (short) 0;
OperateResult result = siemensNet.Write(address, array);
if (!result.IsSuccess) {
@@ -159,7 +152,7 @@
int idx = 0;
do {
- OperateResultExOne<byte[]> resultRead = siemensNet.Read(address, (short) 18);
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read(address, (short) 20);
if (resultRead.IsSuccess) {
short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2);
short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4);
diff --git a/src/main/java/com/zy/core/network/real/ZyStationRealConnect.java b/src/main/java/com/zy/core/network/real/ZyStationRealConnect.java
index f3fab96..fe83d45 100644
--- a/src/main/java/com/zy/core/network/real/ZyStationRealConnect.java
+++ b/src/main/java/com/zy/core/network/real/ZyStationRealConnect.java
@@ -99,7 +99,7 @@
if (result.IsSuccess) {
for (int i = 0; i < statusList.size(); i++) {
ZyStationStatusEntity statusEntity = statusList.get(i); // 绔欑偣缂栧彿
- statusEntity.setTaskNo((int) siemensNet.getByteTransform().TransInt16(result.Content, i * 8)); // 宸ヤ綔鍙�
+ statusEntity.setTaskNo(siemensNet.getByteTransform().TransInt32(result.Content, i * 8)); // 宸ヤ綔鍙�
statusEntity.setTargetStaNo((int) siemensNet.getByteTransform().TransInt16(result.Content, i * 8 + 4)); // 鐩爣绔�
boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, i * 8 + 6, 2);
@@ -109,25 +109,32 @@
statusEntity.setOutEnable(status[3]);// 鍙嚭
statusEntity.setEmptyMk(status[4]); // 绌烘澘淇″彿
statusEntity.setFullPlt(status[5]); // 婊℃墭鐩�
+
+ if (statusEntity.getStationId()==1015){
+ OperateResultExOne<byte[]> result1 = siemensNet.Read("DB101.3826", (short) (4));
+ if (result1.IsSuccess) {
+ statusEntity.setWeight((double) siemensNet.getByteTransform().TransSingle(result1.Content, 0));
+ }
+ }
}
}
// 鏉$爜鎵弿鍣�
- OperateResultExOne<byte[]> result2 = siemensNet.Read("DB101.840", (short) (barcodeOriginList.size() * 8));
+ OperateResultExOne<byte[]> result2 = siemensNet.Read("DB101.3760", (short) (barcodeOriginList.size() * 52));
if (result2.IsSuccess) {
for (int i = 0; i < barcodeOriginList.size(); i++) {
ZyStationStatusEntity barcodeEntity = findStatusEntityByBarcodeIdx(i + 1);
if (barcodeEntity == null) {
continue;
}
- String barcode = siemensNet.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
+ String barcode = siemensNet.getByteTransform().TransString(result2.Content, i * 52, 52, "UTF-8");
barcode = barcode.trim();
barcodeEntity.setBarcode(barcode);
}
}
// 鎶ヨ淇℃伅
- OperateResultExOne<byte[]> result3 = siemensNet.Read("DB101.800", (short) (barcodeOriginList.size() * 3));
+ OperateResultExOne<byte[]> result3 = siemensNet.Read("DB101.2400", (short) (barcodeOriginList.size() * 3));
if (result3.IsSuccess) {
for (int i = 0; i < barcodeOriginList.size(); i++) {
ZyStationStatusEntity barcodeEntity = findStatusEntityByBarcodeIdx(i + 1);
@@ -189,15 +196,17 @@
}
OperateResult write = null;
+ OperateResult write1 = null;
// 浠诲姟涓嬪彂娆℃暟
int writeCount = 0;
do {
- short[] data = new short[2];
- data[0] = command.getTaskNo().shortValue();
- data[1] = command.getTargetStaNo().shortValue();
+// short[] data = new short[2];
+// data[0] = command.getTaskNo();
+// data[1] = command.getTargetStaNo().shortValue();
- write = siemensNet.Write("DB100." + index * 4, data);
- if (write.IsSuccess) {
+ write = siemensNet.Write("DB100." + index * 6, command.getTaskNo());
+ write1 =siemensNet.Write("DB100." + (index * 6+4), command.getTargetStaNo().shortValue());
+ if (write.IsSuccess&&write1.IsSuccess) {
log.error("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛銆傜珯鐐圭紪鍙�={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", command.getStationId(), JSON.toJSON(command),
writeCount);
commandResponse.setResult(true);
diff --git a/src/main/java/com/zy/core/plugin/FakeProcess.java b/src/main/java/com/zy/core/plugin/FakeProcess.java
index 4a137df..1c8841b 100644
--- a/src/main/java/com/zy/core/plugin/FakeProcess.java
+++ b/src/main/java/com/zy/core/plugin/FakeProcess.java
@@ -327,8 +327,8 @@
CreateInTaskParam taskParam = new CreateInTaskParam();
taskParam.setTaskNo(String.valueOf(commonService.getWorkNo(WrkIoType.IN.id)));
- taskParam.setSourceStaNo(stationId);
- taskParam.setStaNo(targetStationId);
+ taskParam.setSourceStaNo(String.valueOf(stationId));
+ taskParam.setStaNo(String.valueOf(targetStationId));
taskParam.setLocNo(locMast.getLocNo());
taskParam.setBarcode(stationProtocol.getBarcode());
WrkMast wrkMast = commonService.createInTask(taskParam);
@@ -491,7 +491,7 @@
News.error("WMS鍏ュ簱璇锋眰澶辫触锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
- stationProtocol.getPalletHeight());
+ stationProtocol.getPalletHeight(),stationProtocol.getWeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
continue;
}
@@ -502,7 +502,7 @@
StartupDto dto = jsonObject.getObject("data", StartupDto.class);
CreateInTaskParam taskParam = new CreateInTaskParam();
- taskParam.setTaskNo(dto.getTaskNo());
+ taskParam.setTaskNo(String.valueOf(dto.getTaskNo()));
taskParam.setLocNo(dto.getLocNo());
taskParam.setTaskPri(dto.getTaskPri());
taskParam.setBarcode(barcode);
@@ -520,7 +520,7 @@
News.error("WMS鍏ュ簱鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
- stationProtocol.getPalletHeight());
+ stationProtocol.getPalletHeight(),stationProtocol.getWeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
}
} else {
@@ -529,7 +529,7 @@
// 娌℃湁璇锋眰杩涜涓紝鍙戣捣鏂扮殑寮傛璇锋眰
News.info("鍙戣捣寮傛WMS鍏ュ簱璇锋眰锛宐arcode={}锛宻tationId={}", barcode, stationIdVal);
wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
- stationProtocol.getPalletHeight());
+ stationProtocol.getPalletHeight(),stationProtocol.getWeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
}
}
@@ -789,6 +789,7 @@
wrkMast.setWrkSts(updateWrkSts);
wrkMast.setSystemMsg("");
+ wrkMast.setWeight(Cools.isEmpty(crnProtocol.getWeight()) ? 11.11 : crnProtocol.getWeight());
wrkMast.setIoTime(new Date());
if (wrkMastService.updateById(wrkMast)) {
CrnCommand resetCommand = crnThread.getResetCommand(crnProtocol.getCrnNo());
diff --git a/src/main/java/com/zy/core/plugin/NormalProcess.java b/src/main/java/com/zy/core/plugin/NormalProcess.java
index 46d5934..018cbfc 100644
--- a/src/main/java/com/zy/core/plugin/NormalProcess.java
+++ b/src/main/java/com/zy/core/plugin/NormalProcess.java
@@ -70,6 +70,8 @@
stationOperateProcessUtils.stationInExecute();
//鎵ц杈撻�佺珯鐐瑰嚭搴撲换鍔�
stationOperateProcessUtils.stationOutExecute();
+ //妫�娴嬪嚭搴撲换鍔″埌杈剧洰鐨勫湴
+ stationOperateProcessUtils.arriveAtTheDestination();
//妫�娴嬭緭閫佺珯鐐瑰嚭搴撲换鍔℃墽琛屽畬鎴�
stationOperateProcessUtils.stationOutExecuteFinish();
@@ -120,18 +122,29 @@
if (stationProtocol == null) {
continue;
}
+ String barcode = stationProtocol.getBarcode();
// 婊¤冻鑷姩銆佹湁鐗┿�佹湁宸ヤ綔鍙凤紝鐢熸垚鍏ュ簱鏁版嵁
if (stationProtocol.isAutoing()
&& stationProtocol.isLoading()
- && stationProtocol.getTaskNo() > 0) {
+ && stationProtocol.getTaskNo() == 0) {
if (Cools.isEmpty(stationProtocol.getBarcode())) {
continue;
}
+ //鏄惁鎶ヨ
+ if (stationProtocol.getError()>0){
+ StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO,
+ 9991, 1015, 1013, 0);
+ stationProtocol.setSystemWarning(stationProtocol.getErrorMsg());
+ MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
+ continue;
+ }
+ String[] split = barcode.split(",");
+ String bar = split[0];
// 妫�娴嬩换鍔℃槸鍚︾敓鎴�
List<WrkMast> wrkMasts = wrkMastService
- .selectList(new EntityWrapper<WrkMast>().eq("barcode", stationProtocol.getBarcode()));
+ .selectList(new EntityWrapper<WrkMast>().eq("barcode", bar));
if (!wrkMasts.isEmpty()) {
continue;
}
@@ -141,7 +154,7 @@
continue;
}
- String barcode = stationProtocol.getBarcode();
+
Integer stationIdVal = stationProtocol.getStationId();
// 1. 棣栧厛鏌ヨ鏄惁鏈夊凡瀹屾垚鐨勫紓姝ュ搷搴�
@@ -154,8 +167,9 @@
News.error("WMS鍏ュ簱璇锋眰澶辫触锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
- stationProtocol.getPalletHeight());
+ stationProtocol.getPalletHeight(),stationProtocol.getWeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
+// stationProtocol.setSys
continue;
}
@@ -165,25 +179,34 @@
StartupDto dto = jsonObject.getObject("data", StartupDto.class);
CreateInTaskParam taskParam = new CreateInTaskParam();
- taskParam.setTaskNo(dto.getTaskNo());
+ taskParam.setTaskNo(String.valueOf(dto.getTaskNo()));
taskParam.setLocNo(dto.getLocNo());
taskParam.setTaskPri(dto.getTaskPri());
- taskParam.setBarcode(barcode);
+ taskParam.setBarcode(dto.getBarcode());
+ taskParam.setSourceStaNo(String.valueOf(dto.getSourceStaNo()));
+ taskParam.setStaNo(String.valueOf(dto.getStaNo()));
+ taskParam.setCrnNo(dto.getCrnNo());
WrkMast wrkMast = commonService.createInTask(taskParam);
StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO,
- wrkMast.getWrkNo(), stationId, stationId, 0);
+ wrkMast.getWrkNo(), dto.getSourceStaNo(), dto.getStaNo(), 0);
if (command == null) {
News.taskInfo(wrkMast.getWrkNo(), "鑾峰彇杈撻�佺嚎鍛戒护澶辫触");
continue;
}
+ stationProtocol.setSystemWarning("");
MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
} else {
+
+ stationProtocol.setSystemWarning(jsonObject.getString("msg"));
+ StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO,
+ 9991, 1015, 1013, 0);
+ MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
// 鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹�
News.error("WMS鍏ュ簱鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
- stationProtocol.getPalletHeight());
+ stationProtocol.getPalletHeight(),stationProtocol.getWeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
}
} else {
@@ -192,7 +215,7 @@
// 娌℃湁璇锋眰杩涜涓紝鍙戣捣鏂扮殑寮傛璇锋眰
News.info("鍙戣捣寮傛WMS鍏ュ簱璇锋眰锛宐arcode={}锛宻tationId={}", barcode, stationIdVal);
wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
- stationProtocol.getPalletHeight());
+ stationProtocol.getPalletHeight(),stationProtocol.getWeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
}
// 濡傛灉鏈夎姹傝繘琛屼腑锛岀瓑寰呬笅娆″惊鐜啀妫�鏌�
diff --git a/src/main/java/com/zy/core/thread/CrnThread.java b/src/main/java/com/zy/core/thread/CrnThread.java
index 46cbd00..50011bc 100644
--- a/src/main/java/com/zy/core/thread/CrnThread.java
+++ b/src/main/java/com/zy/core/thread/CrnThread.java
@@ -17,4 +17,9 @@
CommandResponse sendCommand(CrnCommand command);//涓嬪彂鍛戒护
+ CommandResponse sendCommand1(CrnCommand command);
+
+ CommandResponse sendCommand2(CrnCommand command);
+
+ CommandResponse sendCommand3(CrnCommand command);
}
diff --git a/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java b/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
index b680358..f3bbd8a 100644
--- a/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
@@ -30,6 +30,9 @@
import java.text.MessageFormat;
import java.util.Date;
+import java.util.List;
+import java.util.ArrayList;
+import com.zy.core.utils.WmsOperateUtils;
import com.zy.asrs.entity.BasCrnpErrLog;
import com.zy.asrs.service.BasCrnpErrLogService;
@@ -45,6 +48,7 @@
private ZyCrnConnectDriver zyCrnConnectDriver;
private CrnProtocol crnProtocol;
private int deviceLogCollectTime = 200;
+ private List<Integer> lastReportedIndices = new ArrayList<>();
public ZySiemensCrnThread(DeviceConfig deviceConfig, RedisUtil redisUtil) {
this.deviceConfig = deviceConfig;
@@ -81,6 +85,16 @@
if (step == 2) {
sendCommand((CrnCommand) task.getData());
}
+ if (step == 3) {
+ sendCommand1((CrnCommand) task.getData());
+ }
+ if (step == 4) {
+ sendCommand2((CrnCommand) task.getData());
+ }
+ if (step == 5) {
+ sendCommand3((CrnCommand) task.getData());
+ }
+
Thread.sleep(100);
} catch (Exception e) {
@@ -178,6 +192,33 @@
crnProtocol.setYDistance(crnStatus.getYDistance());
crnProtocol.setXDuration(crnStatus.getXDuration());
crnProtocol.setYDuration(crnStatus.getYDuration());
+ crnProtocol.setWeight(crnStatus.getWeight());
+ crnProtocol.setDb110Data(crnStatus.getDb110Data());
+
+ // 涓婃姤鍫嗗灈鏈篋B110鐘舵�佹暟鎹�
+ short[] db110Data = crnProtocol.getDb110Data();
+ List<Integer> currentIndices = new ArrayList<>();
+ if (db110Data != null) {
+ for (int i = 0; i < db110Data.length; i++) {
+ if (db110Data[i] == 1) {
+ currentIndices.add(i);
+ }
+ }
+ }
+ //!currentIndices.equals(lastReportedIndices)
+ boolean changed = true;
+
+ if (changed) {
+ try {
+ WmsOperateUtils wmsOperateUtils = SpringUtils.getBean(WmsOperateUtils.class);
+ if (wmsOperateUtils != null) {
+ wmsOperateUtils.reportCrnDb110Status(crnProtocol.getCrnNo(), currentIndices);
+ lastReportedIndices = new ArrayList<>(currentIndices);
+ }
+ } catch (Exception e) {
+ log.error("Report Crn Db110 Status Fail", e);
+ }
+ }
OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), deviceConfig.getDeviceNo()));
@@ -331,4 +372,119 @@
}
}
}
+
+ @Override
+ public synchronized CommandResponse sendCommand1(CrnCommand command) {
+ this.crnProtocol.setLastCommandTime(System.currentTimeMillis());
+ CommandResponse response = null;
+ try {
+ response = zyCrnConnectDriver.sendCommand1(command);
+ return response;
+ } finally {
+ String sourceLocNo = Utils.getLocNo(command.getSourcePosX(), command.getSourcePosY(), command.getSourcePosZ());
+ String targetLocNo = Utils.getLocNo(command.getDestinationPosX(), command.getDestinationPosY(), command.getDestinationPosZ());
+ BasCrnpOptService bean = SpringUtils.getBean(BasCrnpOptService.class);
+ ZyCrnStatusEntity statusEntity = zyCrnConnectDriver.getStatus();
+ BasCrnpOpt basCrnpOpt = new BasCrnpOpt(
+ command.getTaskNo().intValue(),
+ command.getCrnNo(),
+ new Date(),
+ String.valueOf(command.getTaskMode()),
+ sourceLocNo,
+ targetLocNo,
+ null,
+ null,
+ null,
+ JSON.toJSONString(command),
+ JSON.toJSONString(statusEntity),
+ 1,
+ JSON.toJSONString(response)
+ );
+ if (bean != null) {
+ bean.insert(basCrnpOpt);
+ }
+ }
+ }
+
+ /**
+ * 绠$悊绔欑偣鐨勭櫧鐏儏鍐�
+ * 1(浜紝闂儊锛屼笂浣嶄笅鍙戜换鍔�)
+ * 榛樿0(鏆�)
+ * @param command
+ * @return
+ */
+
+ @Override
+ public synchronized CommandResponse sendCommand2(CrnCommand command) {
+ this.crnProtocol.setLastCommandTime(System.currentTimeMillis());
+ CommandResponse response = null;
+ try {
+ response = zyCrnConnectDriver.sendCommand2(command);
+ return response;
+ } finally {
+ String sourceLocNo = Utils.getLocNo(command.getSourcePosX(), command.getSourcePosY(), command.getSourcePosZ());
+ String targetLocNo = Utils.getLocNo(command.getDestinationPosX(), command.getDestinationPosY(), command.getDestinationPosZ());
+ BasCrnpOptService bean = SpringUtils.getBean(BasCrnpOptService.class);
+ ZyCrnStatusEntity statusEntity = zyCrnConnectDriver.getStatus();
+ BasCrnpOpt basCrnpOpt = new BasCrnpOpt(
+ command.getTaskNo().intValue(),
+ command.getCrnNo(),
+ new Date(),
+ String.valueOf(command.getTaskMode()),
+ sourceLocNo,
+ targetLocNo,
+ null,
+ null,
+ null,
+ JSON.toJSONString(command),
+ JSON.toJSONString(statusEntity),
+ 1,
+ JSON.toJSONString(response)
+ );
+ if (bean != null) {
+ bean.insert(basCrnpOpt);
+ }
+ }
+ }
+
+ /**
+ * 绠$悊绔欑偣鐨勯粍鑹叉寜閽姸鎬佸強棰滆壊
+ * 1:浜哄伐鎸夋寜閽‘璁�
+ * 2:涓婁綅鏈烘帴鏀跺畬鎴愶紝杩愯缁�
+ * 0:浠诲姟缁撴潫涓婁綅鏈烘竻闄ょ姸鎬�
+ * @param command
+ * @return
+ */
+ @Override
+ public synchronized CommandResponse sendCommand3(CrnCommand command) {
+ this.crnProtocol.setLastCommandTime(System.currentTimeMillis());
+ CommandResponse response = null;
+ try {
+ response = zyCrnConnectDriver.sendCommand3(command);
+ return response;
+ } finally {
+ String sourceLocNo = Utils.getLocNo(command.getSourcePosX(), command.getSourcePosY(), command.getSourcePosZ());
+ String targetLocNo = Utils.getLocNo(command.getDestinationPosX(), command.getDestinationPosY(), command.getDestinationPosZ());
+ BasCrnpOptService bean = SpringUtils.getBean(BasCrnpOptService.class);
+ ZyCrnStatusEntity statusEntity = zyCrnConnectDriver.getStatus();
+ BasCrnpOpt basCrnpOpt = new BasCrnpOpt(
+ command.getTaskNo().intValue(),
+ command.getCrnNo(),
+ new Date(),
+ String.valueOf(command.getTaskMode()),
+ sourceLocNo,
+ targetLocNo,
+ null,
+ null,
+ null,
+ JSON.toJSONString(command),
+ JSON.toJSONString(statusEntity),
+ 1,
+ JSON.toJSONString(response)
+ );
+ if (bean != null) {
+ bean.insert(basCrnpOpt);
+ }
+ }
+ }
}
diff --git a/src/main/java/com/zy/core/thread/impl/ZyStationThread.java b/src/main/java/com/zy/core/thread/impl/ZyStationThread.java
index 62ea5a9..544fb8b 100644
--- a/src/main/java/com/zy/core/thread/impl/ZyStationThread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZyStationThread.java
@@ -82,7 +82,6 @@
if (step == 2) {
sendCommand((StationCommand) task.getData());
}
-
Thread.sleep(100);
} catch (Exception e) {
log.error("StationProcess Fail", e);
diff --git a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
index 52ff58a..d1bd424 100644
--- a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
@@ -28,13 +28,11 @@
import com.zy.core.model.protocol.StationProtocol;
import com.zy.core.thread.CrnThread;
import com.zy.core.thread.StationThread;
+import lombok.Synchronized;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
@Component
public class CrnOperateProcessUtils {
@@ -123,7 +121,8 @@
}
}
- private synchronized void crnExecuteIn(BasCrnp basCrnp, CrnThread crnThread) {
+ @Synchronized
+ private void crnExecuteIn(BasCrnp basCrnp, CrnThread crnThread) {
CrnProtocol crnProtocol = crnThread.getStatus();
if(crnProtocol == null){
return;
@@ -204,12 +203,19 @@
String sourceLocNo = Utils.getLocNo(stationObjModel.getDeviceRow(), stationObjModel.getDeviceBay(), stationObjModel.getDeviceLev());
CrnCommand command = crnThread.getPickAndPutCommand(sourceLocNo, wrkMast.getLocNo(), wrkMast.getWrkNo(), crnNo);
-
wrkMast.setWrkSts(WrkStsType.INBOUND_RUN.sts);
wrkMast.setCrnNo(crnNo);
wrkMast.setSystemMsg("");
wrkMast.setIoTime(new Date());
+ //缁欏簱浣嶇櫧鑹叉寚绀虹伅浜伅
+ String[] split = basCrnp.getArr().split(",");
+ int i = Arrays.asList(split).indexOf(wrkMast.getLocNo());
if (wrkMastService.updateById(wrkMast)) {
+ if (i>-1){
+ command.setLocNo(wrkMast.getLocNo());
+ command.setIndex(i);
+ command.setValue((short)1);
+ }
MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command));
notifyUtils.notify(String.valueOf(SlaveType.Crn), crnNo, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_IN_TASK_RUN, null);
News.info("鍫嗗灈鏈哄懡浠や笅鍙戞垚鍔燂紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(command));
@@ -298,7 +304,15 @@
wrkMast.setCrnNo(crnNo);
wrkMast.setSystemMsg("");
wrkMast.setIoTime(new Date());
+ //缁欏簱浣嶇櫧鑹叉寚绀虹伅浜伅
+ String[] split = basCrnp.getArr().split(",");
+ int i = Arrays.asList(split).indexOf(wrkMast.getSourceLocNo());
if (wrkMastService.updateById(wrkMast)) {
+ if (i>-1){
+ command.setLocNo(wrkMast.getSourceLocNo());
+ command.setIndex(i);
+ command.setValue((short)1);
+ }
MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command));
notifyUtils.notify(String.valueOf(SlaveType.Crn), crnNo, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_OUT_TASK_RUN, null);
News.info("鍫嗗灈鏈哄懡浠や笅鍙戞垚鍔燂紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(command));
@@ -530,7 +544,20 @@
wrkMast.setCrnNo(crnNo);
wrkMast.setSystemMsg("");
wrkMast.setIoTime(new Date());
+ //缁欏簱浣嶇櫧鑹叉寚绀虹伅浜伅
+ String[] split = basCrnp.getArr().split(",");
+ int i = Arrays.asList(split).indexOf(wrkMast.getLocNo());
+ String locNo = wrkMast.getLocNo();
+ if (i == -1) {
+ i = Arrays.asList(split).indexOf(wrkMast.getSourceLocNo());
+ locNo = wrkMast.getSourceLocNo();
+ }
if (wrkMastService.updateById(wrkMast)) {
+ if (i>-1){
+ command.setLocNo(locNo);
+ command.setIndex(i);
+ command.setValue((short)1);
+ }
MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command));
notifyUtils.notify(String.valueOf(SlaveType.Crn), crnNo, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_TRANSFER_TASK_RUN, null);
News.info("鍫嗗灈鏈哄懡浠や笅鍙戞垚鍔燂紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(command));
@@ -568,16 +595,29 @@
News.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", basCrnp.getCrnNo(), crnProtocol.getTaskNo());
continue;
}
-
+ //缁欏簱浣嶇櫧鑹叉寚绀虹伅浜伅
+ String[] split = basCrnp.getArr().split(",");
+ int i = -1;
+ String locNo = "";
Long updateWrkSts = null;
if(wrkMast.getWrkSts() == WrkStsType.INBOUND_RUN.sts){
updateWrkSts = WrkStsType.COMPLETE_INBOUND.sts;
+ i = Arrays.asList(split).indexOf(wrkMast.getLocNo());
+ locNo = wrkMast.getLocNo();
notifyUtils.notify(String.valueOf(SlaveType.Crn), crnProtocol.getCrnNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_IN_TASK_COMPLETE, null);
}else if(wrkMast.getWrkSts() == WrkStsType.OUTBOUND_RUN.sts){
updateWrkSts = WrkStsType.OUTBOUND_RUN_COMPLETE.sts;
+ i = Arrays.asList(split).indexOf(wrkMast.getSourceLocNo());
+ locNo = wrkMast.getSourceLocNo();
notifyUtils.notify(String.valueOf(SlaveType.Crn), crnProtocol.getCrnNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_OUT_TASK_COMPLETE, null);
}else if(wrkMast.getWrkSts() == WrkStsType.LOC_MOVE_RUN.sts){
updateWrkSts = WrkStsType.COMPLETE_LOC_MOVE.sts;
+ i = Arrays.asList(split).indexOf(wrkMast.getLocNo());
+ locNo = wrkMast.getLocNo();
+ if(i==-1){
+ i = Arrays.asList(split).indexOf(wrkMast.getSourceLocNo());
+ locNo = wrkMast.getSourceLocNo();
+ }
notifyUtils.notify(String.valueOf(SlaveType.Crn), crnProtocol.getCrnNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_TRANSFER_TASK_COMPLETE, null);
}else{
News.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗗伐浣滅姸鎬佸紓甯搞�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", basCrnp.getCrnNo(), crnProtocol.getTaskNo());
@@ -587,9 +627,15 @@
wrkMast.setWrkSts(updateWrkSts);
wrkMast.setSystemMsg("");
wrkMast.setIoTime(new Date());
+ wrkMast.setWeight(crnProtocol.getWeight());
if (wrkMastService.updateById(wrkMast)) {
CrnCommand resetCommand = crnThread.getResetCommand(crnProtocol.getCrnNo());
- MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, resetCommand));
+ if (i>-1){
+ resetCommand.setLocNo(locNo);
+ resetCommand.setIndex(i);
+ resetCommand.setValue((short)0);
+ }
+ MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(3, resetCommand));
News.info("鍫嗗灈鏈轰换鍔$姸鎬佹洿鏂版垚鍔燂紝鍫嗗灈鏈哄彿={}锛屽伐浣滃彿={}", basCrnp.getCrnNo(), crnProtocol.getTaskNo());
}
@@ -794,7 +840,7 @@
String moveLocNo = dto.getLocNo();
CreateLocMoveTaskParam moveTaskParam = new CreateLocMoveTaskParam();
- moveTaskParam.setTaskNo(dto.getTaskNo());
+ moveTaskParam.setTaskNo(String.valueOf(dto.getTaskNo()));
moveTaskParam.setSourceLocNo(shallowLocNo);
moveTaskParam.setLocNo(moveLocNo);
try {
diff --git a/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
index 409f546..70adfcf 100644
--- a/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
@@ -606,6 +606,7 @@
wrkMast.setWrkSts(updateWrkSts);
wrkMast.setSystemMsg("");
wrkMast.setIoTime(new Date());
+ wrkMast.setWeight(300D);
if (wrkMastService.updateById(wrkMast)) {
News.info("鍙屽伐浣嶅爢鍨涙満浠诲姟鐘舵�佹洿鏂版垚鍔燂紝鍫嗗灈鏈哄彿={}锛屽伐浣滃彿={}", basDualCrnp.getCrnNo(), taskNo);
}
@@ -672,7 +673,7 @@
String moveLocNo = dto.getLocNo();
CreateLocMoveTaskParam moveTaskParam = new CreateLocMoveTaskParam();
- moveTaskParam.setTaskNo(dto.getTaskNo());
+ moveTaskParam.setTaskNo(String.valueOf(dto.getTaskNo()));
moveTaskParam.setSourceLocNo(shallowLocNo);
moveTaskParam.setLocNo(moveLocNo);
try {
diff --git a/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java b/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
index 8237bbe..4a14a33 100644
--- a/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
@@ -4,8 +4,10 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.exception.CoolException;
+import com.zy.asrs.domain.enums.NotifyMsgType;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
+import com.zy.asrs.utils.NotifyUtils;
import com.zy.common.entity.FindCrnNoResult;
import com.zy.common.model.StartupDto;
import com.zy.common.service.CommonService;
@@ -17,7 +19,9 @@
import com.zy.core.model.StationObjModel;
import com.zy.core.model.Task;
import com.zy.core.model.command.StationCommand;
+import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.model.protocol.StationProtocol;
+import com.zy.core.thread.CrnThread;
import com.zy.core.thread.StationThread;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -43,13 +47,15 @@
private LocMastService locMastService;
@Autowired
private WmsOperateUtils wmsOperateUtils;
+ @Autowired
+ private NotifyUtils notifyUtils;
//鎵ц杈撻�佺珯鐐瑰叆搴撲换鍔�
public synchronized void stationInExecute() {
List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<>());
for (BasDevp basDevp : basDevps) {
StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, basDevp.getDevpNo());
- if(stationThread == null){
+ if (stationThread == null) {
continue;
}
@@ -58,7 +64,7 @@
List<StationObjModel> list = basDevp.getBarcodeStationList$();
for (StationObjModel entity : list) {
Integer stationId = entity.getStationId();
- if(!stationMap.containsKey(stationId)){
+ if (!stationMap.containsKey(stationId)) {
continue;
}
@@ -68,7 +74,7 @@
}
Object lock = redisUtil.get(RedisKeyType.STATION_IN_EXECUTE_LIMIT.key + stationId);
- if(lock != null){
+ if (lock != null) {
continue;
}
@@ -101,7 +107,7 @@
}
StationCommand command = stationThread.getCommand(StationCommandType.MOVE, wrkMast.getWrkNo(), stationId, targetStationId, 0);
- if(command == null){
+ if (command == null) {
News.taskInfo(wrkMast.getWrkNo(), "{}宸ヤ綔,鑾峰彇杈撻�佺嚎鍛戒护澶辫触", wrkMast.getWrkNo());
continue;
}
@@ -130,7 +136,7 @@
BasCrnp basCrnp = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", wrkMast.getCrnNo()));
if (basCrnp != null) {
outStationList = basCrnp.getOutStationList$();
- if(outStationList.isEmpty()){
+ if (outStationList.isEmpty()) {
News.info("鍫嗗灈鏈�:{} 鍑哄簱绔欑偣鏈缃�", basCrnp.getCrnNo());
continue;
}
@@ -139,7 +145,7 @@
BasDualCrnp basDualCrnp = basDualCrnpService.selectOne(new EntityWrapper<BasDualCrnp>().eq("crn_no", wrkMast.getDualCrnNo()));
if (basDualCrnp != null) {
outStationList = basDualCrnp.getOutStationList$();
- if(outStationList.isEmpty()){
+ if (outStationList.isEmpty()) {
News.info("鍙屽伐浣嶅爢鍨涙満:{} 鍑哄簱绔欑偣鏈缃�", basDualCrnp.getCrnNo());
continue;
}
@@ -147,7 +153,7 @@
for (StationObjModel stationObjModel : outStationList) {
StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, stationObjModel.getDeviceNo());
- if(stationThread == null){
+ if (stationThread == null) {
continue;
}
@@ -168,7 +174,7 @@
&& stationProtocol.getTaskNo() == 0
) {
StationCommand command = stationThread.getCommand(StationCommandType.MOVE, wrkMast.getWrkNo(), stationProtocol.getStationId(), wrkMast.getStaNo(), 0);
- if(command == null){
+ if (command == null) {
News.taskInfo(wrkMast.getWrkNo(), "鑾峰彇杈撻�佺嚎鍛戒护澶辫触");
continue;
}
@@ -181,15 +187,96 @@
News.info("杈撻�佺珯鐐瑰嚭搴撳懡浠や笅鍙戞垚鍔燂紝绔欑偣鍙�={}锛屽伐浣滃彿={}锛屽懡浠ゆ暟鎹�={}", stationProtocol.getStationId(), wrkMast.getWrkNo(), JSON.toJSONString(command));
redisUtil.set(RedisKeyType.STATION_OUT_EXECUTE_LIMIT.key + stationProtocol.getStationId(), "lock", 5);
redisUtil.set(RedisKeyType.STATION_OUT_EXECUTE_COMPLETE_LIMIT.key + wrkMast.getWrkNo(), "lock", 60 * 5);
+ redisUtil.set(RedisKeyType.STATION_OUT_EXECUTE_DESTINATION_LIMIT.key + wrkMast.getWrkNo(), "lock", 60 * 5);
}
}
}
}
}
+ //妫�娴嬪嚭搴撲换鍔″埌杈剧洰鐨勫湴
+ public synchronized void arriveAtTheDestination() {
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.STATION_RUN.sts));
+ for (WrkMast wrkMast : wrkMasts) {
+ Integer wrkNo = wrkMast.getWrkNo();
+
+// Object lock = redisUtil.get(RedisKeyType.STATION_OUT_EXECUTE_DESTINATION_LIMIT.key + wrkNo);
+// if (lock != null) {
+// continue;
+// }
+
+ boolean complete = false;
+
+ StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, 1);
+ if (stationThread == null) {
+ continue;
+ }
+ List<StationProtocol> list = stationThread.getStatus();
+ for (StationProtocol stationProtocol : list) {
+ if (stationProtocol.getTaskNo().equals(wrkNo)&&stationProtocol.getStationId().equals(wrkMast.getStaNo())) {
+ complete = true;
+ }
+ }
+ if (complete) {
+ //涓婃姤--鍒拌揪鐩殑鍦颁笂鎶ms
+ notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.ARRIVE_AT_THE_DESTINATION, JSON.toJSONString(wrkMast));
+ wrkMast.setWrkSts(WrkStsType.ARRIVE_AT_THE_DESTINATION.sts);
+ wrkMast.setIoTime(new Date());
+ wrkMastService.updateById(wrkMast);
+ }
+ }
+ }
+
+ //妫�娴嬪簱浣嶆鑹叉寜閽俊鍙� 1锛氬憳宸ョ‘璁わ紙甯镐寒锛� 2 锛氫笂浣嶆満纭锛堥棯鐑侊級0 锛氱唲鐏�
+ public synchronized void locNo() {
+ List<BasCrnp> basCrnps = basCrnpService.selectList(null);
+ for (BasCrnp basCrnp : basCrnps) {
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, basCrnp.getCrnNo());
+ if(crnThread == null){
+ continue;
+ }
+
+ CrnProtocol crnProtocol = crnThread.getStatus();
+ if(crnProtocol == null){
+ continue;
+ }
+
+
+ }
+// List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.ARRIVE_AT_THE_DESTINATION.sts));
+// for (WrkMast wrkMast : wrkMasts) {
+// Integer wrkNo = wrkMast.getWrkNo();
+//
+// Object lock = redisUtil.get(RedisKeyType.STATION_OUT_EXECUTE_COMPLETE_LIMIT.key + wrkNo);
+// if (lock != null) {
+// continue;
+// }
+//
+// boolean complete = false;
+//
+// StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, wrkMast.getStaNo());
+// if (stationThread == null) {
+// continue;
+// }
+// List<StationProtocol> list = stationThread.getStatus();
+// for (StationProtocol stationProtocol : list) {
+// if (stationProtocol.getTaskNo().equals(wrkNo)) {
+// complete = true;
+// }
+// }
+// if (complete) {
+// //涓婃姤--鍒拌揪鐩殑鍦颁笂鎶ms
+// notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.ARRIVE_AT_THE_DESTINATION, JSON.toJSONString(wrkMast));
+// wrkMast.setWrkSts(WrkStsType.ARRIVE_AT_THE_DESTINATION.sts);
+// wrkMast.setIoTime(new Date());
+// wrkMastService.updateById(wrkMast);
+// }
+// }
+ }
+
//妫�娴嬭緭閫佺珯鐐瑰嚭搴撲换鍔℃墽琛屽畬鎴�
public synchronized void stationOutExecuteFinish() {
- List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.STATION_RUN.sts));
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.ARRIVE_AT_THE_DESTINATION.sts));
for (WrkMast wrkMast : wrkMasts) {
Integer wrkNo = wrkMast.getWrkNo();
@@ -227,7 +314,7 @@
List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<>());
for (BasDevp basDevp : basDevps) {
StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, basDevp.getDevpNo());
- if(stationThread == null){
+ if (stationThread == null) {
continue;
}
@@ -238,10 +325,10 @@
List<StationProtocol> list = stationThread.getStatus();
for (StationProtocol stationProtocol : list) {
- if(stationProtocol.isAutoing()
- && stationProtocol.isLoading()
- && stationProtocol.getTaskNo() > 0
- && stationProtocol.isRunBlock()
+ if (stationProtocol.isAutoing()
+ && stationProtocol.isLoading()
+ && stationProtocol.getTaskNo() > 0
+ && stationProtocol.isRunBlock()
) {
WrkMast wrkMast = wrkMastService.selectByWorkNo(stationProtocol.getTaskNo());
if (wrkMast == null) {
@@ -306,7 +393,7 @@
}
StationCommand command = stationThread.getCommand(StationCommandType.MOVE, wrkMast.getWrkNo(), stationProtocol.getStationId(), targetStationId, 0);
- if(command == null){
+ if (command == null) {
News.taskInfo(wrkMast.getWrkNo(), "{}宸ヤ綔,鑾峰彇杈撻�佺嚎鍛戒护澶辫触", wrkMast.getWrkNo());
continue;
}
@@ -329,7 +416,7 @@
wrkMast.setCrnNo(crnNo);
} else if (findCrnNoResult.getCrnType().equals(SlaveType.DualCrn)) {
wrkMast.setDualCrnNo(crnNo);
- }else {
+ } else {
throw new CoolException("鏈煡璁惧绫诲瀷");
}
@@ -339,10 +426,10 @@
} else {
News.error("璇锋眰WMS鎺ュ彛澶辫触锛侊紒锛乺esponse锛歿}", response);
}
- }else {
+ } else {
//杩愯鍫靛锛岄噸鏂拌绠楄矾绾�
StationCommand command = stationThread.getCommand(StationCommandType.MOVE, wrkMast.getWrkNo(), stationProtocol.getStationId(), wrkMast.getStaNo(), 0);
- if(command == null){
+ if (command == null) {
News.taskInfo(wrkMast.getWrkNo(), "鑾峰彇杈撻�佺嚎鍛戒护澶辫触");
continue;
}
diff --git a/src/main/java/com/zy/core/utils/WmsOperateUtils.java b/src/main/java/com/zy/core/utils/WmsOperateUtils.java
index 42e682a..107733a 100644
--- a/src/main/java/com/zy/core/utils/WmsOperateUtils.java
+++ b/src/main/java/com/zy/core/utils/WmsOperateUtils.java
@@ -5,24 +5,24 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
-import com.zy.asrs.entity.BasCrnp;
-import com.zy.asrs.entity.BasDualCrnp;
-import com.zy.asrs.entity.BasStation;
-import com.zy.asrs.entity.HttpRequestLog;
-import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.*;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.BasDualCrnpService;
import com.zy.asrs.service.BasStationService;
import com.zy.asrs.service.HttpRequestLogService;
import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.service.impl.LocMastServiceImpl;
import com.zy.asrs.utils.Utils;
import com.zy.common.entity.FindCrnNoResult;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.RedisUtil;
import com.zy.core.News;
+import com.zy.core.cache.MessageQueue;
import com.zy.core.enums.RedisKeyType;
import com.zy.core.enums.SlaveType;
+import com.zy.core.model.Task;
+import com.zy.core.model.command.CrnCommand;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -53,14 +53,17 @@
private BasStationService basStationService;
@Autowired
private RedisUtil redisUtil;
+ @Autowired
+ private LocMastServiceImpl locMastService;
// 鐢宠鍏ュ簱浠诲姟
- public synchronized String applyInTask(String barcode, Integer sourceStaNo, Integer locType1) {
+ public synchronized String applyInTask(String barcode, Integer sourceStaNo, Integer locType1,Double weight) {
Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
if (systemConfigMapObj == null) {
News.error("绯荤粺Config缂撳瓨澶辨晥");
return null;
}
+
HashMap<String, String> systemConfigMap = (HashMap<String, String>) systemConfigMapObj;
String wmsUrl = systemConfigMap.get("wmsSystemUri");
@@ -95,6 +98,8 @@
requestParam.put("sourceStaNo", stationNo);
requestParam.put("locType1", locType1);
requestParam.put("row", Utils.getInTaskEnableRow(sourceStaNo));
+ requestParam.put("ioType",1);
+ requestParam.put("weight", weight);
response = new HttpHandler.Builder()
.setUri(wmsUrl)
@@ -134,13 +139,12 @@
/**
* 寮傛鐢宠鍏ュ簱浠诲姟 - 闈為樆濉炵増鏈�
- * 灏嗚姹傛彁浜ゅ埌绾跨▼姹犲紓姝ユ墽琛岋紝缁撴灉瀛樺偍鍒癛edis涓�
*
* @param barcode 鎵樼洏鐮�
* @param sourceStaNo 绔欑偣缂栧彿
* @param locType1 鎵樼洏楂樺害
*/
- public void applyInTaskAsync(String barcode, Integer sourceStaNo, Integer locType1) {
+ public void applyInTaskAsync(String barcode, Integer sourceStaNo, Integer locType1,Double weight) {
String requestKey = RedisKeyType.ASYNC_WMS_IN_TASK_REQUEST.key + barcode + "_" + sourceStaNo;
String responseKey = RedisKeyType.ASYNC_WMS_IN_TASK_RESPONSE.key + barcode + "_" + sourceStaNo;
@@ -156,18 +160,18 @@
// 鎻愪氦寮傛浠诲姟
new Thread(() -> {
try {
- String response = applyInTask(barcode, sourceStaNo, locType1);
+ String response = applyInTask(barcode, sourceStaNo, locType1,weight);
if (response != null) {
// 瀛樺偍鍝嶅簲缁撴灉锛岃缃�60绉掕秴鏃�
redisUtil.set(responseKey, response, 60);
- News.info("寮傛WMS鍏ュ簱璇锋眰瀹屾垚锛宐arcode={}锛宻tationId={}锛宺esponse={}", barcode, sourceStaNo, response);
+ News.info("寮傛WMS鍏ュ簱璇锋眰瀹屾垚锛宐arcode={}锛宻tationId={}锛宺esponse={},weight={}", barcode, sourceStaNo, response,weight);
} else {
// 璇锋眰澶辫触锛屽瓨鍌ㄥけ璐ユ爣璁�
redisUtil.set(responseKey, "FAILED", 10);
- News.error("寮傛WMS鍏ュ簱璇锋眰澶辫触锛宐arcode={}锛宻tationId={}", barcode, sourceStaNo);
+ News.error("寮傛WMS鍏ュ簱璇锋眰澶辫触锛宐arcode={}锛宻tationId={},weight={}", barcode, sourceStaNo,weight);
}
} catch (Exception e) {
- News.error("寮傛WMS鍏ュ簱璇锋眰寮傚父锛宐arcode={}锛宻tationId={}锛宔rror={}", barcode, sourceStaNo, e.getMessage());
+ News.error("寮傛WMS鍏ュ簱璇锋眰寮傚父锛宐arcode={}锛宻tationId={}锛宔rror={},weight={}", barcode, sourceStaNo, e.getMessage(),weight);
redisUtil.set(responseKey, "ERROR:" + e.getMessage(), 10);
} finally {
// 娓呴櫎璇锋眰杩涜涓爣璁�
@@ -388,4 +392,87 @@
return response;
}
+ // 涓婃姤鍫嗗灈鏈篋B110鐘舵�佹暟鎹�
+ public void reportCrnDb110Status(Integer crnNo, List<Integer> indices) {
+ Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
+ if (systemConfigMapObj == null) {
+ News.error("绯荤粺Config缂撳瓨澶辨晥");
+ return;
+ }
+ HashMap<String, String> systemConfigMap = (HashMap<String, String>) systemConfigMapObj;
+
+ String wmsUrl = systemConfigMap.get("wmsSystemUri");
+ if (wmsUrl == null) {
+ News.error("鏈厤缃甒MS绯荤粺URI锛岄厤缃枃浠禖ode缂栫爜锛歸msSystemUri");
+ return;
+ }
+
+ String wmsSystemCrnStatusUrl = systemConfigMap.get("wmsSystemCrnStatusUrl");
+ if (wmsSystemCrnStatusUrl == null) {
+ News.error("鏈厤缃甒MS鍫嗗灈鏈虹姸鎬佷笂鎶ユ帴鍙e湴鍧�锛岄厤缃枃浠禖ode缂栫爜锛歸msSystemCrnStatusUrl");
+ return;
+ }
+
+ String response = null;
+ int result = 0;
+ BasCrnp crnNo1 = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", crnNo));
+ if (crnNo1 == null) {
+ return;
+ }
+ // 鏍规嵁indices涓嬫爣浠巆rnNo1鐨刟rr鏁扮粍涓彇鍑哄搴斿��
+ String[] split = crnNo1.getArr().split(",");
+ for (Integer idx : indices) {
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", split[idx]));
+ if (locMast == null||Cools.isEmpty(locMast.getBarcode())) {
+ News.info("娌℃湁鏌ヨ鍒拌搴撲綅鎴栬�呮病鏈夋壘鍒拌搴撲綅瀵瑰簲鎵樼洏鐮� 锛歿}", split[idx]);
+ CrnCommand command = new CrnCommand();
+ command.setLocNo(locMast.getLocNo());
+ command.setIndex(idx);
+ command.setValue((short)0);
+ MessageQueue.offer(SlaveType.Crn, crnNo, new Task(5, command));
+ continue;
+ }
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath(wmsSystemCrnStatusUrl)
+ .setJson(locMast.getBarcode())
+ .setTimeout(30, TimeUnit.SECONDS)
+ .build()
+ .doPost();
+ if (response != null) {
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code") == 200) {
+ result = 1;
+ CrnCommand command = new CrnCommand();
+ command.setLocNo(locMast.getLocNo());
+ command.setIndex(idx);
+ command.setValue((short)2);
+ MessageQueue.offer(SlaveType.Crn, crnNo, new Task(5, command));
+
+ News.info("璇锋眰WMS鍫嗗灈鏈虹姸鎬佷笂鎶ユ帴鍙f垚鍔燂紒锛侊紒url锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + wmsSystemCrnStatusUrl,
+ JSON.toJSONString(locMast.getBarcode()), response);
+ } else {
+ News.info("璇锋眰WMS鍫嗗灈鏈虹姸鎬佷笂鎶ユ帴鍙eけ璐ワ紝鎺ュ彛杩斿洖Code寮傚父锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}",
+ wmsUrl + wmsSystemCrnStatusUrl, JSON.toJSONString(locMast.getBarcode()), response);
+ }
+ } else {
+ News.info("璇锋眰WMS鍫嗗灈鏈虹姸鎬佷笂鎶ユ帴鍙eけ璐ワ紝鎺ュ彛鏈搷搴旓紒锛侊紒url锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + wmsSystemCrnStatusUrl,
+ JSON.toJSONString(locMast.getBarcode()), response);
+ }
+ } catch (Exception e) {
+ News.error("璇锋眰WMS鍫嗗灈鏈虹姸鎬佷笂鎶ユ帴鍙e紓甯革紒锛侊紒url锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + wmsSystemCrnStatusUrl,
+ JSON.toJSONString(locMast.getBarcode()), response, e);
+ } finally {
+ HttpRequestLog httpRequestLog = new HttpRequestLog();
+ httpRequestLog.setName(wmsUrl + wmsSystemCrnStatusUrl);
+ httpRequestLog.setRequest(JSON.toJSONString(locMast.getBarcode()));
+ httpRequestLog.setResponse(response);
+ httpRequestLog.setCreateTime(new Date());
+ httpRequestLog.setResult(result);
+ httpRequestLogService.insert(httpRequestLog);
+ }
+ }
+
+ }
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 751358e..841d4cb 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -17,7 +17,7 @@
validation-timeout: 3000
connection-test-query: select 1
driver-class-name: com.mysql.jdbc.Driver
- url: jdbc:mysql://127.0.0.1:3306/wcs?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+ url: jdbc:mysql://127.0.0.1:3306/hcwcs?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
mvc:
@@ -61,7 +61,7 @@
#License鐩稿叧閰嶇疆
license:
- subject: crnWcsDev
+ subject: jxhcwcs
publicAlias: publicCert
storePass: public_zhongyang_123456789
licensePath: license.lic
@@ -72,7 +72,8 @@
threadControlCount: 10
liftType: lift
-mainProcessPlugin: FakeProcess
+#mainProcessPlugin: FakeProcess
+mainProcessPlugin: NormalProcess
deviceLogStorage:
# 璁惧鏃ュ織瀛樺偍鏂瑰紡 mysql file
diff --git a/src/main/resources/mapper/BasCrnpMapper.xml b/src/main/resources/mapper/BasCrnpMapper.xml
index 8751e37..a8391d8 100644
--- a/src/main/resources/mapper/BasCrnpMapper.xml
+++ b/src/main/resources/mapper/BasCrnpMapper.xml
@@ -20,6 +20,7 @@
<result column="max_in_task" property="maxInTask" />
<result column="max_out_task" property="maxOutTask" />
<result column="deep_rows" property="deepRows" />
+ <result column="arr" property="arr" />
</resultMap>
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 8af8efe..39d9de3 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -29,6 +29,7 @@
<result column="system_msg" property="systemMsg" />
<result column="batch" property="batch" />
<result column="batch_seq" property="batchSeq" />
+ <result column="weight" property="weight" />
</resultMap>
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index 1b9840b..146effc 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -1,4 +1,4 @@
-var baseUrl = "/wcs";
+var baseUrl = "/hcwcs";
// 璧嬪��
function setVal(el, val) {
diff --git a/src/main/webapp/views/index.html b/src/main/webapp/views/index.html
index f970799..58fdc5a 100644
--- a/src/main/webapp/views/index.html
+++ b/src/main/webapp/views/index.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
- <title>娴欐睙涓壃 - 鑷姩鍖栫珛浣撲粨搴� - WCS</title>
+ <title>WCS</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport"
@@ -87,7 +87,7 @@
<!-- 澶撮儴 -->
<div class="layui-header">
<div class="layui-logo">
- <img src="../static/images/zy-logo-dark.png" style="display: inline-block; width: 60%;height: auto">
+<!-- <img src="../static/images/zy-logo-dark.png" style="display: inline-block; width: 60%;height: auto">-->
<!-- <span style="margin-top: 0; letter-spacing: 10px">涓壃绔嬪簱</span>-->
<!-- <img src="../static/image/logo.svg"/>-->
<!-- <cite>涓壃 - Zoneyung</cite>-->
@@ -142,10 +142,6 @@
<!-- 涓讳綋閮ㄥ垎 -->
<div class="layui-body"></div>
<!-- 搴曢儴 -->
- <div class="layui-footer layui-text">
- copyright 漏 2026 娴欐睙涓壃绔嬪簱鎶�鏈湁闄愬叕鍙� all rights reserved.
- <span class="pull-right" id="system-version">Version loading...</span>
- </div>
</div>
diff --git a/src/main/webapp/views/locMast/locMast_detail.html b/src/main/webapp/views/locMast/locMast_detail.html
index e10ea1d..f36efee 100644
--- a/src/main/webapp/views/locMast/locMast_detail.html
+++ b/src/main/webapp/views/locMast/locMast_detail.html
@@ -57,6 +57,12 @@
<input id="locType" class="layui-input" type="text" autocomplete="off">
</div>
</div>
+ <div class="layui-inline" style="width:80%;">
+ <label class="layui-form-label">鎵樼洏鐮侊細</label>
+ <div class="layui-input-inline">
+ <input id="barcode" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
<div id="data-detail-btn" class="layui-btn-container layui-form-item">
<div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
--
Gitblit v1.9.1