From a05a58973d6dc855bfb203ee16189d48238fea62 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 07 十二月 2023 16:33:58 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/entity/BasRgv.java | 236 +++++++
src/main/java/com/zy/core/enums/RgvModeType.java | 45 +
src/main/resources/mapper/BasRgvOptMapper.xml | 27
src/main/java/com/zy/asrs/service/BasRgvService.java | 8
src/main/java/com/zy/core/thread/ZyRgvThread.java | 402 ++++++++++++
src/main/java/com/zy/asrs/utils/Utils.java | 58 +
src/main/java/com/zy/core/model/RgvSlave.java | 33 +
src/main/java/com/zy/core/enums/SlaveType.java | 1
src/main/java/com/zy/core/MainProcess.java | 7
src/main/java/com/zy/core/model/command/RgvCommand.java | 95 ++
src/main/java/com/zy/asrs/service/BasRgvOptService.java | 8
src/main/java/com/zy/core/enums/RgvStatusType.java | 52 +
src/main/java/com/zy/core/enums/RgvWalkPosType.java | 44 +
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 274 +++++++
src/main/java/com/zy/asrs/mapper/BasRgvMapper.java | 12
src/main/resources/mapper/WrkMastMapper.xml | 4
src/main/java/com/zy/asrs/service/impl/BasRgvServiceImpl.java | 12
src/main/java/com/zy/common/CodeBuilder.java | 11
src/main/java/com/zy/core/ServerBootstrap.java | 11
src/main/java/com/zy/core/properties/SlaveProperties.java | 3
src/main/resources/mapper/BasRgvMapper.xml | 32
src/main/java/com/zy/asrs/mapper/BasRgvOptMapper.java | 12
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 3
src/main/java/com/zy/core/RgvThread.java | 9
src/main/java/com/zy/asrs/entity/BasRgvOpt.java | 207 ++++++
src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 134 ++++
src/main/resources/application.yml | 143 ++++
src/main/java/com/zy/asrs/service/impl/BasRgvOptServiceImpl.java | 12
src/main/java/com/zy/core/enums/RgvTaskModeType.java | 42 +
29 files changed, 1,915 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/BasRgv.java b/src/main/java/com/zy/asrs/entity/BasRgv.java
new file mode 100644
index 0000000..bdd5169
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasRgv.java
@@ -0,0 +1,236 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.annotations.TableField;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("asr_bas_rgv")
+public class BasRgv implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * RGV缂栧彿
+ */
+ @ApiModelProperty(value= "RGV缂栧彿")
+ @TableId(value = "rgv_no", type = IdType.INPUT)
+ @TableField("rgv_no")
+ private Integer rgvNo;
+
+ /**
+ * 妯″紡
+ */
+ @ApiModelProperty(value= "妯″紡")
+ private Integer mode;
+
+ /**
+ * 鐘舵��
+ */
+ @ApiModelProperty(value= "鐘舵��")
+ private Integer status;
+
+ /**
+ * 宸ヤ綅1宸ヤ綔鍙�
+ */
+ @ApiModelProperty(value= "宸ヤ綅1宸ヤ綔鍙�")
+ @TableField("task_no1")
+ private Integer taskNo1;
+
+ /**
+ * 宸ヤ綅1鏈夌墿淇″彿
+ */
+ @ApiModelProperty(value= "宸ヤ綅1鏈夌墿淇″彿")
+ private Integer loaded1;
+
+ /**
+ * RGV褰撳墠浣嶇疆
+ */
+ @ApiModelProperty(value= "RGV褰撳墠浣嶇疆")
+ @TableField("rgv_pos")
+ private Integer rgvPos;
+
+ /**
+ * 璧拌鍦ㄥ畾浣�
+ */
+ @ApiModelProperty(value= "璧拌鍦ㄥ畾浣�")
+ @TableField("walk_pos")
+ private Integer walkPos;
+
+ /**
+ * 宸ヤ綅2宸ヤ綔鍙�
+ */
+ @ApiModelProperty(value= "宸ヤ綅2宸ヤ綔鍙�")
+ @TableField("task_no2")
+ private Integer taskNo2;
+
+ /**
+ * 宸ヤ綅2鏈夌墿淇″彿
+ */
+ @ApiModelProperty(value= "宸ヤ綅2鏈夌墿淇″彿")
+ private Integer loaded2;
+
+ /**
+ * 宸ヤ綅1浠诲姟瀹屾垚淇″彿
+ */
+ @ApiModelProperty(value= "宸ヤ綅1浠诲姟瀹屾垚淇″彿")
+ @TableField("task_finish1")
+ private Integer taskFinish1;
+
+ /**
+ * 宸ヤ綅2浠诲姟瀹屾垚淇″彿
+ */
+ @ApiModelProperty(value= "宸ヤ綅2浠诲姟瀹屾垚淇″彿")
+ @TableField("task_finish2")
+ private Integer taskFinish2;
+
+ /**
+ * 寮傚父鐮�
+ */
+ @ApiModelProperty(value= "寮傚父鐮�")
+ private Integer alarm;
+
+ /**
+ * 蹇冭烦
+ */
+ @ApiModelProperty(value= "蹇冭烦")
+ private Integer heart;
+
+ /**
+ * 澶囩敤1
+ */
+ @ApiModelProperty(value= "澶囩敤1")
+ private Integer temp1;
+
+ /**
+ * 澶囩敤2
+ */
+ @ApiModelProperty(value= "澶囩敤2")
+ private Integer temp2;
+
+ /**
+ * 澶囩敤3
+ */
+ @ApiModelProperty(value= "澶囩敤3")
+ private Integer temp3;
+
+ /**
+ * 澶囩敤4
+ */
+ @ApiModelProperty(value= "澶囩敤4")
+ private Integer temp4;
+
+ /**
+ * 澶囩敤5
+ */
+ @ApiModelProperty(value= "澶囩敤5")
+ private Integer temp5;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @ApiModelProperty(value= "鍒涘缓鏃堕棿")
+ @TableField("create_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 鍒涘缓浜哄憳
+ */
+ @ApiModelProperty(value= "鍒涘缓浜哄憳")
+ @TableField("create_by")
+ private Long createBy;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @ApiModelProperty(value= "鏇存柊鏃堕棿")
+ @TableField("update_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 鏇存柊浜哄憳
+ */
+ @ApiModelProperty(value= "鏇存柊浜哄憳")
+ @TableField("update_by")
+ private Long updateBy;
+
+ public BasRgv() {}
+
+ public BasRgv(Integer rgvNo,Integer mode,Integer status,Integer taskNo1,Integer loaded1,Integer rgvPos,Integer walkPos,Integer taskNo2,Integer loaded2,Integer taskFinish1,Integer taskFinish2,Integer alarm,Integer heart,Integer temp1,Integer temp2,Integer temp3,Integer temp4,Integer temp5,Date createTime,Long createBy,Date updateTime,Long updateBy) {
+ this.rgvNo = rgvNo;
+ this.mode = mode;
+ this.status = status;
+ this.taskNo1 = taskNo1;
+ this.loaded1 = loaded1;
+ this.rgvPos = rgvPos;
+ this.walkPos = walkPos;
+ this.taskNo2 = taskNo2;
+ this.loaded2 = loaded2;
+ this.taskFinish1 = taskFinish1;
+ this.taskFinish2 = taskFinish2;
+ this.alarm = alarm;
+ this.heart = heart;
+ this.temp1 = temp1;
+ this.temp2 = temp2;
+ this.temp3 = temp3;
+ this.temp4 = temp4;
+ this.temp5 = temp5;
+ this.createTime = createTime;
+ this.createBy = createBy;
+ this.updateTime = updateTime;
+ this.updateBy = updateBy;
+ }
+
+// BasRgv basRgv = new BasRgv(
+// null, // RGV缂栧彿[闈炵┖]
+// null, // 妯″紡
+// null, // 鐘舵��
+// null, // 宸ヤ綅1宸ヤ綔鍙�
+// null, // 宸ヤ綅1鏈夌墿淇″彿
+// null, // RGV褰撳墠浣嶇疆
+// null, // 璧拌鍦ㄥ畾浣�
+// null, // 宸ヤ綅2宸ヤ綔鍙�
+// null, // 宸ヤ綅2鏈夌墿淇″彿
+// null, // 宸ヤ綅1浠诲姟瀹屾垚淇″彿
+// null, // 宸ヤ綅2浠诲姟瀹屾垚淇″彿
+// null, // 寮傚父鐮�
+// null, // 蹇冭烦
+// null, // 澶囩敤1
+// null, // 澶囩敤2
+// null, // 澶囩敤3
+// null, // 澶囩敤4
+// null, // 澶囩敤5
+// null, // 鍒涘缓鏃堕棿
+// null, // 鍒涘缓浜哄憳
+// null, // 鏇存柊鏃堕棿
+// null // 鏇存柊浜哄憳
+// );
+
+ public String getCreateTime$(){
+ if (Cools.isEmpty(this.createTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+ }
+
+ public String getUpdateTime$(){
+ if (Cools.isEmpty(this.updateTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+ }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/BasRgvOpt.java b/src/main/java/com/zy/asrs/entity/BasRgvOpt.java
new file mode 100644
index 0000000..ebe6d41
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasRgvOpt.java
@@ -0,0 +1,207 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.annotations.TableField;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("asr_bas_rgv_opt")
+public class BasRgvOpt implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value= "")
+ @TableId(value = "id", type = IdType.INPUT)
+ private Long id;
+
+ /**
+ * RGV缂栧彿
+ */
+ @ApiModelProperty(value= "RGV缂栧彿")
+ @TableField("rgv_no")
+ private Integer rgvNo;
+
+ /**
+ * 浠诲姟瀹屾垚纭浣�
+ */
+ @ApiModelProperty(value= "浠诲姟瀹屾垚纭浣�")
+ @TableField("ack_finish")
+ private Integer ackFinish;
+
+ /**
+ * 宸ヤ綅1宸ヤ綔鍙�
+ */
+ @ApiModelProperty(value= "宸ヤ綅1宸ヤ綔鍙�")
+ @TableField("task_no1")
+ private Integer taskNo1;
+
+ /**
+ * 宸ヤ綅1妯″紡
+ */
+ @ApiModelProperty(value= "宸ヤ綅1妯″紡")
+ @TableField("task_mode1")
+ private Integer taskMode1;
+
+ /**
+ * 宸ヤ綅1婧愮珯
+ */
+ @ApiModelProperty(value= "宸ヤ綅1婧愮珯")
+ @TableField("source_sta_no1")
+ private Integer sourceStaNo1;
+
+ /**
+ * 宸ヤ綅1鐩爣绔�
+ */
+ @ApiModelProperty(value= "宸ヤ綅1鐩爣绔�")
+ @TableField("destination_sta_no_1")
+ private Integer destinationStaNo1;
+
+ /**
+ * 宸ヤ綅2宸ヤ綔鍙�
+ */
+ @ApiModelProperty(value= "宸ヤ綅2宸ヤ綔鍙�")
+ @TableField("task_no2")
+ private Integer taskNo2;
+
+ /**
+ * 宸ヤ綅2妯″紡
+ */
+ @ApiModelProperty(value= "宸ヤ綅2妯″紡")
+ @TableField("task_mode2")
+ private Integer taskMode2;
+
+ /**
+ * 宸ヤ綅2婧愮珯
+ */
+ @ApiModelProperty(value= "宸ヤ綅2婧愮珯")
+ @TableField("source_sta_no2")
+ private Integer sourceStaNo2;
+
+ /**
+ * 宸ヤ綅2鐩爣绔�
+ */
+ @ApiModelProperty(value= "宸ヤ綅2鐩爣绔�")
+ @TableField("destination_sta_no2")
+ private Integer destinationStaNo2;
+
+ /**
+ * 浠诲姟纭
+ */
+ @ApiModelProperty(value= "浠诲姟纭")
+ private Integer command;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @ApiModelProperty(value= "鍒涘缓鏃堕棿")
+ @TableField("create_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 鍒涘缓浜哄憳
+ */
+ @ApiModelProperty(value= "鍒涘缓浜哄憳")
+ @TableField("create_by")
+ private Long createBy;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @ApiModelProperty(value= "鏇存柊鏃堕棿")
+ @TableField("update_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 鏇存柊浜哄憳
+ */
+ @ApiModelProperty(value= "鏇存柊浜哄憳")
+ @TableField("update_by")
+ private Long updateBy;
+
+ /**
+ * 鍝嶅簲缁撴灉 1: 姝e父 0: 澶辫触
+ */
+ @ApiModelProperty(value= "鍝嶅簲缁撴灉 1: 姝e父 0: 澶辫触 ")
+ private Integer response;
+
+ public BasRgvOpt() {}
+
+ public BasRgvOpt(Integer rgvNo,Integer ackFinish,Integer taskNo1,Integer taskMode1,Integer sourceStaNo1,Integer destinationStaNo1,Integer taskNo2,Integer taskMode2,Integer sourceStaNo2,Integer destinationStaNo2,Integer command,Date createTime,Long createBy,Date updateTime,Long updateBy,Integer response) {
+ this.rgvNo = rgvNo;
+ this.ackFinish = ackFinish;
+ this.taskNo1 = taskNo1;
+ this.taskMode1 = taskMode1;
+ this.sourceStaNo1 = sourceStaNo1;
+ this.destinationStaNo1 = destinationStaNo1;
+ this.taskNo2 = taskNo2;
+ this.taskMode2 = taskMode2;
+ this.sourceStaNo2 = sourceStaNo2;
+ this.destinationStaNo2 = destinationStaNo2;
+ this.command = command;
+ this.createTime = createTime;
+ this.createBy = createBy;
+ this.updateTime = updateTime;
+ this.updateBy = updateBy;
+ this.response = response;
+ }
+
+// BasRgvOpt basRgvOpt = new BasRgvOpt(
+// null, // [闈炵┖]
+// null, // RGV缂栧彿
+// null, // 浠诲姟瀹屾垚纭浣�
+// null, // 宸ヤ綅1宸ヤ綔鍙�
+// null, // 宸ヤ綅1妯″紡
+// null, // 宸ヤ綅1婧愮珯
+// null, // 宸ヤ綅1鐩爣绔�
+// null, // 宸ヤ綅2宸ヤ綔鍙�
+// null, // 宸ヤ綅2妯″紡
+// null, // 宸ヤ綅2婧愮珯
+// null, // 宸ヤ綅2鐩爣绔�
+// null, // 浠诲姟纭
+// null, // 鍒涘缓鏃堕棿
+// null, // 鍒涘缓浜哄憳
+// null, // 鏇存柊鏃堕棿
+// null, // 鏇存柊浜哄憳
+// null // 鍝嶅簲缁撴灉
+// );
+
+ public String getCreateTime$(){
+ if (Cools.isEmpty(this.createTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+ }
+
+ public String getUpdateTime$(){
+ if (Cools.isEmpty(this.updateTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+ }
+
+ public String getResponse$(){
+ if (null == this.response){ return null; }
+ switch (this.response){
+ case 1:
+ return "姝e父";
+ case 0:
+ return "澶辫触";
+ default:
+ return String.valueOf(this.response);
+ }
+ }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasRgvMapper.java b/src/main/java/com/zy/asrs/mapper/BasRgvMapper.java
new file mode 100644
index 0000000..cb45640
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasRgvMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasRgv;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasRgvMapper extends BaseMapper<BasRgv> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasRgvOptMapper.java b/src/main/java/com/zy/asrs/mapper/BasRgvOptMapper.java
new file mode 100644
index 0000000..b8622e4
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasRgvOptMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasRgvOpt;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasRgvOptMapper extends BaseMapper<BasRgvOpt> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 6af4d04..27cfc46 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -122,4 +122,7 @@
List<WrkMast> selectLaneWrkMastIn();//鏌ヨ鍏ュ簱浠诲姟
List<WrkMast> selectLaneWrkMastOut();//鏌ヨ鍑哄簱浠诲姟
+
+ WrkMast selectByWrkNo(Integer wrkNo);
+
}
diff --git a/src/main/java/com/zy/asrs/service/BasRgvOptService.java b/src/main/java/com/zy/asrs/service/BasRgvOptService.java
new file mode 100644
index 0000000..cd3edcb
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasRgvOptService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasRgvOpt;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasRgvOptService extends IService<BasRgvOpt> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/BasRgvService.java b/src/main/java/com/zy/asrs/service/BasRgvService.java
new file mode 100644
index 0000000..12d4aba
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasRgvService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasRgv;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasRgvService extends IService<BasRgv> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasRgvOptServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasRgvOptServiceImpl.java
new file mode 100644
index 0000000..3d6d2a8
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasRgvOptServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasRgvOptMapper;
+import com.zy.asrs.entity.BasRgvOpt;
+import com.zy.asrs.service.BasRgvOptService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basRgvOptService")
+public class BasRgvOptServiceImpl extends ServiceImpl<BasRgvOptMapper, BasRgvOpt> implements BasRgvOptService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasRgvServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasRgvServiceImpl.java
new file mode 100644
index 0000000..36c7bb0
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasRgvServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasRgvMapper;
+import com.zy.asrs.entity.BasRgv;
+import com.zy.asrs.service.BasRgvService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basRgvService")
+public class BasRgvServiceImpl extends ServiceImpl<BasRgvMapper, BasRgv> implements BasRgvService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 6a8cc16..db8b0e1 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -27,18 +27,18 @@
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.*;
-import com.zy.core.model.CrnSlave;
-import com.zy.core.model.DevpSlave;
-import com.zy.core.model.LedSlave;
-import com.zy.core.model.Task;
+import com.zy.core.model.*;
import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.command.LedCommand;
+import com.zy.core.model.command.RgvCommand;
import com.zy.core.model.protocol.CrnProtocol;
+import com.zy.core.model.protocol.RgvProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.BarcodeThread;
import com.zy.core.thread.LedThread;
import com.zy.core.thread.SiemensDevpThread;
+import com.zy.core.thread.ZyRgvThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -483,8 +483,13 @@
continue;
}
- // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
- wrkMast.setWrkSts(14L);
+ if (crnStn.getStaNo() == 1016 || crnStn.getStaNo() == 1019) {
+ // 鏇存柊宸ヤ綔妗g姸鎬佷负13.RGV鎼繍涓�
+ wrkMast.setWrkSts(13L);
+ }else {
+ // 鏇存柊宸ヤ綔妗g姸鎬佷负14
+ wrkMast.setWrkSts(14L);
+ }
wrkMast.setCrnEndTime(new Date());
if (wrkMastMapper.updateById(wrkMast) != 0) {
// 澶嶄綅鍫嗗灈鏈�
@@ -1950,16 +1955,259 @@
}
- public synchronized void outOfDevp() {
- List<WrkMast> wrkMasts = wrkMastMapper.selectPick();
- for (WrkMast wrkMast : wrkMasts) {
- if (basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())) == 0) {
- wrkMast.setCtnNo("Y");
- if (wrkMastMapper.updateById(wrkMast) == 0) {
- log.error("淇敼{}宸ヤ綔妗eけ璐ワ紝ctn_no", wrkMast.getWrkNo());
+ //RGV鎼繍
+ public synchronized void rgvIoExecute() {
+ for (RgvSlave slave : slaveProperties.getRgv()) {
+ ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getId());
+ if (rgvThread == null) {
+ return;
+ }
+
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ return;
+ }
+
+ // 鍒ゆ柇RGV鏄惁绌洪棽
+ if (rgvProtocol.getModeType() == RgvModeType.COMPUTER
+ && rgvProtocol.getStatusType() == RgvStatusType.IDLE) {
+ // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡锛屽垯浼樺厛鎵弿鍑哄簱绔欑偣
+ if (rgvProtocol.getLastIo().equals("I")) {
+ this.rgvOutExecute(rgvThread, rgvProtocol);//鍑哄簱
+ rgvProtocol.setLastIo("O");
+ }else {
+ this.rgvInExecute(rgvThread, rgvProtocol);//鍏ュ簱
+ rgvProtocol.setLastIo("I");
+ }
+
+ //妫�鏌ユ槸鍚﹀瓨鍦ㄥ伐浣�1浠诲姟瓒呮椂娌′笅鍙�
+ if (rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() == 0) {
+ if (System.currentTimeMillis() - rgvProtocol.getTask1SendTime() > (1000*60)) {
+ //宸ヤ綅1涓嬪彂鏃堕棿瓒呰繃60s
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(rgvProtocol.getRgvNo());//RGV缂栧彿
+ rgvCommand.setCommand((short) 1);//宸ヤ綅1纭
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvCommand.getRgvNo(), new Task(4, rgvCommand))) {
+ log.error("RGV纭鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ return;
+ }
+ log.error("RGV纭鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ }
+ }
+ }
+ }
+ }
+
+ //rgv鍏ュ簱
+ public synchronized void rgvInExecute(ZyRgvThread rgvThread, RgvProtocol rgvProtocol) {
+ for (RgvSlave.Sta sta : rgvThread.getSlave().getInStn()) {
+ if (rgvProtocol.getTaskNo1() > 0) {
+ //妫�娴媟gv宸ヤ綅1鏄惁涓哄叆搴撲换鍔�
+ WrkMast wrkMast1 = wrkMastMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
+ if (wrkMast1.getWrkSts() > 100) {
+ continue;//鍑哄簱浠诲姟璺宠繃
}
}
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, sta.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(sta.getSourceStaNo());
+ //鍒ゆ柇杈撻�佺嚎鏄惁鑷姩銆佹湁鐗┿�佸彲鍏ャ�佹湁宸ヤ綔鍙�
+ if (!(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isOutEnable() && (staProtocol.getWorkNo() > 0))) {
+ continue;
+ }
+
+ //鎼滅储宸ヤ綔妗�
+ WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo().intValue());
+ if (wrkMast == null) {
+ continue;//宸ヤ綔妗d笉瀛樺湪
+ }
+
+ //鑾峰彇RGV鏀捐揣绔欑偣
+ Integer staNo = Utils.getRgvStaNo(rgvProtocol.getRgvNo(), sta.getSourceStaNo(), staProtocol.getStaNo().intValue(), true);
+ if (staNo == null) {
+ continue;//RGV鏀捐揣绔欑偣涓嶅瓨鍦�
+ }
+
+ //鍒ゆ柇鐩爣绔欐槸鍚﹁嚜鍔ㄣ�佸彲鍏ャ�佹棤鐗┿�佹棤宸ヤ綔鍙�
+ StaProtocol staProtocol1 = devpThread.getStation().get(staNo);
+ if (!(staProtocol1.isAutoing() && staProtocol1.isInEnable() && !staProtocol1.isLoading() && (staProtocol1.getWorkNo() == 0))) {
+ continue;
+ }
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(rgvProtocol.getRgvNo());//RGV缂栧彿
+ rgvCommand.setAckFinish((short) 0);
+
+ //鍒ゆ柇rgv宸ヤ綅1鏄惁鍙敤
+ if (rgvProtocol.getTaskNo1() == 0) {
+ rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue());//宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.PICK_RELEASE);//宸ヤ綔妯″紡 鍙栨斁璐�
+ rgvCommand.setSourceStaNo1(staProtocol.getStaNo());//婧愮珯
+ rgvCommand.setDestinationStaNo1(staNo.shortValue());//鐩爣绔�
+ rgvCommand.setCommand((short) 0);//宸ヤ綅1鏆備笉纭
+ } else if (rgvProtocol.getTaskNo2() == 0) {//鍒ゆ柇rgv宸ヤ綅2鏄惁鍙敤
+ rgvCommand.setTaskNo2(wrkMast.getWrkNo().shortValue());//宸ヤ綔鍙�
+ rgvCommand.setTaskMode2(RgvTaskModeType.PICK_RELEASE);//宸ヤ綔妯″紡 鍙栨斁璐�
+ rgvCommand.setSourceStaNo2(staProtocol.getStaNo());//婧愮珯
+ rgvCommand.setDestinationStaNo2(staNo.shortValue());//鐩爣绔�
+ rgvCommand.setCommand((short) 1);//宸ヤ綅2纭
+ }else {
+ continue;//娌℃湁鍙敤RGV宸ヤ綅
+ }
+
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvCommand.getRgvNo(), new Task(2, rgvCommand))) {
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ continue;
+ }
+
+ log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ }
+ }
+
+ //rgv鍑哄簱
+ public synchronized void rgvOutExecute(ZyRgvThread rgvThread, RgvProtocol rgvProtocol) {
+ for (RgvSlave.Sta sta : rgvThread.getSlave().getOutStn()) {
+ if (rgvProtocol.getTaskNo1() > 0) {
+ //妫�娴媟gv宸ヤ綅1鏄惁涓哄嚭搴撲换鍔�
+ WrkMast wrkMast1 = wrkMastMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
+ if (wrkMast1.getWrkSts() < 100) {
+ continue;//鍏ュ簱浠诲姟璺宠繃
+ }
+ }
+
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, sta.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(sta.getSourceStaNo());
+ //鍒ゆ柇杈撻�佺嚎鏄惁鑷姩銆佹湁鐗┿�佸彲鍑恒�佹湁宸ヤ綔鍙�
+ if (!(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isOutEnable() && (staProtocol.getWorkNo() > 0))) {
+ continue;
+ }
+
+ //鎼滅储宸ヤ綔妗�
+ WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo().intValue());
+ if (wrkMast == null) {
+ continue;//宸ヤ綔妗d笉瀛樺湪
+ }
+
+ //鑾峰彇RGV鏀捐揣绔欑偣
+ Integer staNo = Utils.getRgvStaNo(rgvProtocol.getRgvNo(), sta.getSourceStaNo(), staProtocol.getStaNo().intValue(), false);
+ if (staNo == null) {
+ continue;//RGV鏀捐揣绔欑偣涓嶅瓨鍦�
+ }
+
+ //鍒ゆ柇鐩爣绔欐槸鍚﹁嚜鍔ㄣ�佸彲鍑恒�佹棤鐗┿�佹棤宸ヤ綔鍙�
+ StaProtocol staProtocol1 = devpThread.getStation().get(staNo);
+ if (!(staProtocol1.isAutoing() && staProtocol1.isOutEnable() && !staProtocol1.isLoading() && (staProtocol1.getWorkNo() == 0))) {
+ continue;
+ }
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(rgvProtocol.getRgvNo());//RGV缂栧彿
+ rgvCommand.setAckFinish((short) 0);
+
+ //鍒ゆ柇rgv宸ヤ綅1鏄惁鍙敤
+ if (rgvProtocol.getTaskNo1() == 0) {
+ rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue());//宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.PICK_RELEASE);//宸ヤ綔妯″紡 鍙栨斁璐�
+ rgvCommand.setSourceStaNo1(staProtocol.getStaNo());//婧愮珯
+ rgvCommand.setDestinationStaNo1(staNo.shortValue());//鐩爣绔�
+ rgvCommand.setCommand((short) 0);//宸ヤ綅1鏆備笉纭
+ } else if (rgvProtocol.getTaskNo2() == 0) {//鍒ゆ柇rgv宸ヤ綅2鏄惁鍙敤
+ rgvCommand.setTaskNo2(wrkMast.getWrkNo().shortValue());//宸ヤ綔鍙�
+ rgvCommand.setTaskMode2(RgvTaskModeType.PICK_RELEASE);//宸ヤ綔妯″紡 鍙栨斁璐�
+ rgvCommand.setSourceStaNo2(staProtocol.getStaNo());//婧愮珯
+ rgvCommand.setDestinationStaNo2(staNo.shortValue());//鐩爣绔�
+ rgvCommand.setCommand((short) 1);//宸ヤ綅2纭
+ }else {
+ continue;//娌℃湁鍙敤RGV宸ヤ綅
+ }
+
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvCommand.getRgvNo(), new Task(2, rgvCommand))) {
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ continue;
+ }
+
+ log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ }
+ }
+
+ //RGV宸ヤ綔瀹屾垚
+ public synchronized void rgvFinished() {
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ for (RgvSlave slave : slaveProperties.getRgv()) {
+ ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getId());
+ if (rgvThread == null) {
+ return;
+ }
+
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ return;
+ }
+
+ // 鐘舵�侊細绛夊緟纭
+ if (rgvProtocol.getStatusType() == RgvStatusType.WAITING) {
+ if (rgvProtocol.getTaskNo1() == 9999) {
+ // RGV澶嶄綅
+ rgvThread.setResetFlag1(true);
+ }else {
+ // 鑾峰彇寰呯‘璁ゅ伐浣滄。
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
+ if (wrkMast == null) {
+ log.error("RGV澶勪簬绛夊緟纭涓斾换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1());
+ continue;
+ }
+
+ if (rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskFinish1() == 1) {
+ //宸ヤ綅1浠诲姟瀹屾垚
+ // RGV澶嶄綅
+ rgvThread.setResetFlag1(true);
+
+ //缁欑洰鏍囩珯杈撻�佺嚎鍐欏叆鏁版嵁
+ Short destinationPos1 = rgvProtocol.getDestinationPos1();//鑾峰彇宸ヤ綅1鐩爣绔�
+ StaProtocol staProtocol = devpThread.getStation().get(destinationPos1.intValue()).clone();
+ staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());//鍐欏叆宸ヤ綔鍙�
+ staProtocol.setStaNo(wrkMast.getStaNo().shortValue());//鍐欏叆鐩爣绔�
+ if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
+ log.info("{}浠诲姟锛孯GV鎼繍鎴愬姛锛屽啓鍏ヨ緭閫佹暟鎹け璐}", wrkMast.getWrkNo(), JSON.toJSONString(staProtocol));
+ }
+
+ //2鍙稲GV鍜�3鍙稲GV宸ヤ綔瀹屾垚鍚庨渶瑕佹洿鏂板伐浣滄。鐘舵��
+ if (rgvProtocol.getRgvNo() == 2 || rgvProtocol.getRgvNo() == 3) {
+ if (wrkMast.getWrkSts() == 13) {//13.RGV鎼繍涓� => 14.宸插嚭搴�
+ wrkMast.setWrkSts(14L);
+ wrkMast.setModiTime(new Date());
+ wrkMastMapper.updateById(wrkMast);
+ }
+ }
+ }
+
+ if (rgvProtocol.getTaskNo2() > 0 && rgvProtocol.getTaskFinish2() == 1) {
+ //宸ヤ綅2浠诲姟瀹屾垚
+ // RGV澶嶄綅
+ rgvThread.setResetFlag2(true);
+
+ //缁欑洰鏍囩珯杈撻�佺嚎鍐欏叆鏁版嵁
+ Short destinationPos2 = rgvProtocol.getDestinationPos2();//鑾峰彇宸ヤ綅2鐩爣绔�
+ StaProtocol staProtocol = devpThread.getStation().get(destinationPos2.intValue()).clone();
+ staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());//鍐欏叆宸ヤ綔鍙�
+ staProtocol.setStaNo(wrkMast.getStaNo().shortValue());//鍐欏叆鐩爣绔�
+ if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
+ log.info("{}浠诲姟锛孯GV鎼繍鎴愬姛锛屽啓鍏ヨ緭閫佹暟鎹け璐}", wrkMast.getWrkNo(), JSON.toJSONString(staProtocol));
+ }
+
+ //2鍙稲GV鍜�3鍙稲GV宸ヤ綔瀹屾垚鍚庨渶瑕佹洿鏂板伐浣滄。鐘舵��
+ if (rgvProtocol.getRgvNo() == 2 || rgvProtocol.getRgvNo() == 3) {
+ if (wrkMast.getWrkSts() == 13) {//13.RGV鎼繍涓� => 14.宸插嚭搴�
+ wrkMast.setWrkSts(14L);
+ wrkMast.setModiTime(new Date());
+ wrkMastMapper.updateById(wrkMast);
+ }
+ }
+ }
+ }
+ }
}
}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index d1ee128..a2e94d9 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -6,6 +6,7 @@
import java.text.DecimalFormat;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
/**
@@ -186,6 +187,63 @@
return 0;
}
+ //鑾峰彇RGV鏀捐揣绔欑偣
+ public static Integer getRgvStaNo(Integer rgvNo, Integer sourceStaNo, Integer staNo, Boolean pakIn) {
+ if (pakIn) {
+ return getRgvStaNoPakIn(rgvNo, sourceStaNo, staNo);
+ } else {
+ return getRgvStaNoPakOut(rgvNo, sourceStaNo, staNo);
+ }
+ }
+
+ private static Integer getRgvStaNoPakIn(Integer rgvNo, Integer sourceStaNo, Integer staNo) {
+ //鑾峰彇RGV鏀捐揣绔欑偣
+ Integer rgvStaNo = null;
+ if (rgvNo == 1) {
+ switch (staNo) {
+ case 1022:
+ rgvStaNo = 1020;
+ break;
+ case 1025:
+ rgvStaNo = 1023;
+ break;
+ }
+ } else if (rgvNo == 2) {
+ rgvStaNo = 2402;
+ } else if (rgvNo == 3) {
+ if (sourceStaNo == 2102) {
+ rgvStaNo = 2103;
+ } else if (sourceStaNo == 4007 || sourceStaNo == 4016) {
+ rgvStaNo = 2301;
+ }
+ }
+
+ return rgvStaNo;
+ }
+
+ private static Integer getRgvStaNoPakOut(Integer rgvNo, Integer sourceStaNo, Integer staNo) {
+ //鑾峰彇RGV鏀捐揣绔欑偣
+ Integer rgvStaNo = null;
+ if (rgvNo == 1) {
+ if (staNo == 3007 || staNo == 3012) {
+ rgvStaNo = 2401;
+ }else {
+ rgvStaNo = 2013;
+ }
+ } else if (rgvNo == 2) {
+ rgvStaNo = 3001;
+ } else if (rgvNo == 3) {
+ if (sourceStaNo == 2003 && staNo == 2001) {
+ rgvStaNo = 2002;
+ } else if (sourceStaNo == 2003 && staNo == 4001) {
+ rgvStaNo = 4001;
+ } else if (sourceStaNo == 2003 && staNo == 4010) {
+ rgvStaNo = 4010;
+ }
+ }
+ return rgvStaNo;
+ }
+
public static void main(String[] args) {
SlaveProperties slaveProperties = new SlaveProperties();
slaveProperties.setDoubleDeep(true);
diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java
index d2c576a..3b9fcf5 100644
--- a/src/main/java/com/zy/common/CodeBuilder.java
+++ b/src/main/java/com/zy/common/CodeBuilder.java
@@ -1,6 +1,7 @@
package com.zy.common;
import com.core.generators.CoolGenerator;
+import com.core.generators.constant.SqlOsType;
/**
* Created by vincent on 2019-06-04
@@ -15,11 +16,17 @@
// generator.password="xltys1995";
// generator.table="sys_host";
// sqlserver
- generator.url="192.168.3.208:1433;databasename=cool";
+ generator.sqlOsType = SqlOsType.SQL_SERVER;
+ generator.url="192.168.4.15:1433;databasename=mdqdasrs";
generator.username="sa";
generator.password="sa@123";
- generator.table="asr_wrk_detl";
+ generator.table="asr_bas_rgv_opt";
generator.packagePath="com.zy.asrs";
+ generator.html = false;
+ generator.htmlDetail = false;
+ generator.js = false;
+ generator.sql = false;
+ generator.controller = false;
generator.build();
}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 5c536e3..74c178e 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -58,6 +58,12 @@
mainService.crnIoExecute();
// 鍏ュ簱 ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
mainService.storeFinished();
+
+ //RGV鎼繍
+ mainService.rgvIoExecute();
+ //RGV宸ヤ綔瀹屾垚
+ mainService.rgvFinished();
+
// 鍫嗗灈鏈哄紓甯镐俊鎭褰�
mainService.recCrnErr();
// 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
@@ -66,7 +72,6 @@
mainService.ledExecute();
// 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
mainService.ledReset();
-// mainService.outOfDevp();
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/com/zy/core/RgvThread.java b/src/main/java/com/zy/core/RgvThread.java
new file mode 100644
index 0000000..be55a64
--- /dev/null
+++ b/src/main/java/com/zy/core/RgvThread.java
@@ -0,0 +1,9 @@
+package com.zy.core;
+
+public interface RgvThread extends ThreadHandler {
+
+ void setResetFlag1(boolean flag);
+
+ void setResetFlag2(boolean flag);
+
+}
diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java
index 817c710..c2faa69 100644
--- a/src/main/java/com/zy/core/ServerBootstrap.java
+++ b/src/main/java/com/zy/core/ServerBootstrap.java
@@ -6,6 +6,7 @@
import com.zy.core.model.CrnSlave;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.LedSlave;
+import com.zy.core.model.RgvSlave;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.*;
import lombok.extern.slf4j.Slf4j;
@@ -51,6 +52,10 @@
for (Slave crn : slaveProperties.getCrn()) {
MessageQueue.init(SlaveType.Crn, crn);
}
+ // 鍒濆鍖朢GVmq
+ for (Slave rgv : slaveProperties.getRgv()) {
+ MessageQueue.init(SlaveType.Rgv, rgv);
+ }
// 鍒濆鍖栬緭閫佺嚎mq
for (Slave devp : slaveProperties.getDevp()) {
MessageQueue.init(SlaveType.Devp, devp);
@@ -81,6 +86,12 @@
new Thread((Runnable) crnThread).start();
SlaveConnection.put(SlaveType.Crn, crn.getId(), crnThread);
}
+ log.info("鍒濆鍖朢GV绾跨▼...................................................");
+ for (RgvSlave rgv : slaveProperties.getRgv()) {
+ RgvThread rgvThread = new ZyRgvThread(rgv);
+ new Thread((Runnable) rgvThread).start();
+ SlaveConnection.put(SlaveType.Rgv, rgv.getId(), rgvThread);
+ }
// 鍒濆鍖栬緭閫佺嚎绾跨▼
log.info("鍒濆鍖栬緭閫佺嚎绾跨▼...................................................");
for (DevpSlave devp : slaveProperties.getDevp()) {
diff --git a/src/main/java/com/zy/core/enums/RgvModeType.java b/src/main/java/com/zy/core/enums/RgvModeType.java
new file mode 100644
index 0000000..2b2fdc5
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/RgvModeType.java
@@ -0,0 +1,45 @@
+package com.zy.core.enums;
+
+/**
+ * RGV妯″紡鏋氫妇
+ */
+public enum RgvModeType {
+
+ STOP((short) 0, "鍋滄満妯″紡"),
+ MANUAL((short) 1, "鎵嬪姩妯″紡"),
+ AUTO((short) 2, "鑷姩妯″紡"),
+ COMPUTER((short) 3, "鐢佃剳妯″紡"),
+ ;
+
+ public Short id;
+ public String desc;
+
+ RgvModeType(Short id, String desc) {
+ this.id = id;
+ this.desc = desc;
+ }
+
+ public static RgvModeType get(Short id) {
+ if (null == id) {
+ return null;
+ }
+ for (RgvModeType type : RgvModeType.values()) {
+ if (type.id.equals(id)) {
+ return type;
+ }
+ }
+ return null;
+ }
+
+ public static RgvModeType get(RgvModeType type) {
+ if (null == type) {
+ return null;
+ }
+ for (RgvModeType type1 : RgvModeType.values()) {
+ if (type1 == type) {
+ return type1;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/zy/core/enums/RgvStatusType.java b/src/main/java/com/zy/core/enums/RgvStatusType.java
new file mode 100644
index 0000000..972cb31
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/RgvStatusType.java
@@ -0,0 +1,52 @@
+package com.zy.core.enums;
+
+/**
+ * RGV鐘舵�佹灇涓�
+ */
+public enum RgvStatusType {
+
+ OFFLINE((short) -1, "绂荤嚎"),
+ IDLE((short) 0, "绌洪棽"),
+ PICK_WALK((short) 1, "鍙栬揣璧拌"),
+ PICK_WAIT((short) 2, "鍙栬揣绛夊緟"),
+ PICK_WORKING((short) 3, "鍙栬揣涓�"),
+ RELEASE_WALK((short) 4, "鏀捐揣璧拌"),
+ RELEASE_WAIT((short) 5, "鏀捐揣绛夊緟"),
+ RELEASE_WORKING((short) 6, "鏀捐揣涓�"),
+ WALKING((short) 9, "璧拌涓�"),
+ WAITING((short) 90, "浠诲姟瀹屾垚绛夊緟WCS纭"),
+ ALARM((short) 99, "鎶ヨ"),
+ OTHER((short) 100, "鍏朵粬"),
+ ;
+ public Short id;
+ public String desc;
+
+ RgvStatusType(Short id, String desc) {
+ this.id = id;
+ this.desc = desc;
+ }
+
+ public static RgvStatusType get(Short id) {
+ if (null == id) {
+ return null;
+ }
+ for (RgvStatusType type : RgvStatusType.values()) {
+ if (type.id.equals(id)) {
+ return type;
+ }
+ }
+ return null;
+ }
+
+ public static RgvStatusType get(RgvStatusType type) {
+ if (null == type) {
+ return null;
+ }
+ for (RgvStatusType type1 : RgvStatusType.values()) {
+ if (type1 == type) {
+ return type1;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/zy/core/enums/RgvTaskModeType.java b/src/main/java/com/zy/core/enums/RgvTaskModeType.java
new file mode 100644
index 0000000..85a8626
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/RgvTaskModeType.java
@@ -0,0 +1,42 @@
+package com.zy.core.enums;
+
+public enum RgvTaskModeType {
+
+ NONE((short) 0, "鏃�"),
+ PICK((short) 1, "鍙栬揣"),
+ RELEASE((short) 2, "鏀捐揣"),
+ PICK_RELEASE((short) 3, "鍙栨斁璐�"),
+ MOVE((short) 4, "绉诲姩(鍙戝伐浣�1浠诲姟鍗冲彲)"),
+ ;
+ public Short id;
+ public String desc;
+
+ RgvTaskModeType(Short id, String desc) {
+ this.id = id;
+ this.desc = desc;
+ }
+
+ public static RgvTaskModeType get(Short id) {
+ if (null == id) {
+ return null;
+ }
+ for (RgvTaskModeType type : RgvTaskModeType.values()) {
+ if (type.id.equals(id)) {
+ return type;
+ }
+ }
+ return null;
+ }
+
+ public static RgvTaskModeType get(RgvTaskModeType type) {
+ if (null == type) {
+ return null;
+ }
+ for (RgvTaskModeType type1 : RgvTaskModeType.values()) {
+ if (type1 == type) {
+ return type1;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/zy/core/enums/RgvWalkPosType.java b/src/main/java/com/zy/core/enums/RgvWalkPosType.java
new file mode 100644
index 0000000..b245599
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/RgvWalkPosType.java
@@ -0,0 +1,44 @@
+package com.zy.core.enums;
+
+/**
+ * RGV璧拌瀹氫綅鏋氫妇
+ */
+public enum RgvWalkPosType {
+
+ POSITION((short) 0, "鍦ㄥ畾浣�"),
+ NONE((short) 1, "涓嶅湪瀹氫綅"),
+ ;
+
+ public Short id;
+ public String desc;
+
+ RgvWalkPosType(Short id, String desc) {
+ this.id = id;
+ this.desc = desc;
+ }
+
+ public static RgvWalkPosType get(Short id) {
+ if (null == id) {
+ return null;
+ }
+ for (RgvWalkPosType type : RgvWalkPosType.values()) {
+ if (type.id.equals(id)) {
+ return type;
+ }
+ }
+ return null;
+ }
+
+ public static RgvWalkPosType get(RgvWalkPosType type) {
+ if (null == type) {
+ return null;
+ }
+ for (RgvWalkPosType type1 : RgvWalkPosType.values()) {
+ if (type1 == type) {
+ return type1;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/src/main/java/com/zy/core/enums/SlaveType.java b/src/main/java/com/zy/core/enums/SlaveType.java
index 56330fe..0f7934d 100644
--- a/src/main/java/com/zy/core/enums/SlaveType.java
+++ b/src/main/java/com/zy/core/enums/SlaveType.java
@@ -8,6 +8,7 @@
Led,
Scale,
Car,
+ Rgv,
;
public static SlaveType findInstance(String s){
diff --git a/src/main/java/com/zy/core/model/RgvSlave.java b/src/main/java/com/zy/core/model/RgvSlave.java
new file mode 100644
index 0000000..f2de390
--- /dev/null
+++ b/src/main/java/com/zy/core/model/RgvSlave.java
@@ -0,0 +1,33 @@
+package com.zy.core.model;
+
+import com.zy.core.Slave;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class RgvSlave extends Slave {
+
+ private Integer rack;
+
+ private Integer slot;
+
+ private List<Sta> inStn = new ArrayList<>();
+
+ private List<Sta> outStn = new ArrayList<>();
+
+ @Data
+ public static class Sta {
+
+ private Integer staNo;//鐩爣绔�
+
+ private Integer sourceStaNo;//婧愮珯
+
+ private Integer devpPlcId;
+
+ }
+
+}
diff --git a/src/main/java/com/zy/core/model/command/RgvCommand.java b/src/main/java/com/zy/core/model/command/RgvCommand.java
new file mode 100644
index 0000000..3be8caa
--- /dev/null
+++ b/src/main/java/com/zy/core/model/command/RgvCommand.java
@@ -0,0 +1,95 @@
+package com.zy.core.model.command;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.zy.core.enums.RgvTaskModeType;
+import lombok.Data;
+
+/**
+ * RGV鍛戒护鎶ユ枃
+ */
+@Data
+public class RgvCommand {
+
+ // RGV缂栧彿
+ private Integer rgvNo = 0;
+
+ // 浠诲姟瀹屾垚纭浣�
+ private Short ackFinish = 0;
+
+ //**************宸ヤ綅1**************
+
+ // 宸ヤ綅1宸ヤ綔鍙�
+ private Short taskNo1 = 0;
+
+ /**
+ * 浠诲姟妯″紡锛�
+ * 0 = 鏃�
+ * 1 = 鍙栬揣
+ * 2 = 鏀捐揣
+ * 3 = 鍙栨斁璐�
+ * 4 = 绉诲姩(鍙戝伐浣�1浠诲姟鍗冲彲)
+ */
+ private Short taskMode1 = 0;
+
+ @JSONField(serialize = false)
+ private RgvTaskModeType taskModeType1;
+
+ // 宸ヤ綅1婧愮珯
+ private Short sourceStaNo1 = 0;
+
+ // 宸ヤ綅1鐩爣绔�
+ private Short destinationStaNo1 = 0;
+
+ //**************宸ヤ綅1**************
+
+
+ //**************宸ヤ綅2**************
+
+ // 宸ヤ綅2宸ヤ綔鍙�
+ private Short taskNo2 = 0;
+
+ /**
+ * 浠诲姟妯″紡锛�
+ * 0 = 鏃�
+ * 1 = 鍙栬揣
+ * 2 = 鏀捐揣
+ * 3 = 鍙栨斁璐�
+ * 4 = 绉诲姩(鍙戝伐浣�1浠诲姟鍗冲彲)
+ */
+ private Short taskMode2 = 0;
+
+ @JSONField(serialize = false)
+ private RgvTaskModeType taskModeType2;
+
+ // 宸ヤ綅1婧愮珯
+ private Short sourceStaNo2 = 0;
+
+ // 宸ヤ綅1鐩爣绔�
+ private Short destinationStaNo2 = 0;
+
+ //**************宸ヤ綅2**************
+
+ // 浠诲姟纭 0锛氭湭纭 1锛氬凡纭
+ private Short command = 0;
+
+ public void setTaskMode1(Short taskMode){
+ this.taskMode1 = taskMode;
+ this.taskModeType1 = RgvTaskModeType.get(taskMode);
+ }
+
+ public void setTaskMode1(RgvTaskModeType type) {
+ this.taskModeType1 = type;
+ this.taskMode1 = RgvTaskModeType.get(type).id;
+ }
+
+ public void setTaskMode2(Short taskMode){
+ this.taskMode2 = taskMode;
+ this.taskModeType2 = RgvTaskModeType.get(taskMode);
+ }
+
+ public void setTaskMode2(RgvTaskModeType type) {
+ this.taskModeType2 = type;
+ this.taskMode2 = RgvTaskModeType.get(type).id;
+ }
+
+}
diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
new file mode 100644
index 0000000..7001f63
--- /dev/null
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -0,0 +1,134 @@
+package com.zy.core.model.protocol;
+
+import com.zy.core.enums.RgvModeType;
+import com.zy.core.enums.RgvStatusType;
+import com.zy.core.enums.RgvWalkPosType;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class RgvProtocol {
+
+ //RGV缂栧彿
+ private Integer rgvNo;
+
+ //妯″紡
+ private Short mode;
+
+ //RGV妯″紡鏋氫妇
+ private RgvModeType modeType;
+
+ //RGV鐘舵��
+ private Short status;
+
+ //RGV鐘舵�佹灇涓�
+ private RgvStatusType statusType;
+
+ //宸ヤ綅1宸ヤ綔鍙�
+ private Short taskNo1;
+
+ //宸ヤ綅1鏈夌墿淇″彿
+ private Short loaded1;
+
+ //RGV褰撳墠浣嶇疆
+ private Short rgvPos;
+
+ //璧拌鍦ㄥ畾浣� 0锛氬湪瀹氫綅锛�1锛氫笉鍦ㄥ畾浣�
+ private Short walkPos;
+
+ //RGV璧拌鏋氫妇
+ private RgvWalkPosType walkPosType;
+
+ //宸ヤ綅2宸ヤ綔鍙�
+ private Short taskNo2;
+
+ //宸ヤ綅2鏈夌墿淇″彿
+ private Short loaded2;
+
+ //宸ヤ綅1浠诲姟瀹屾垚淇″彿
+ private Short taskFinish1;
+
+ //宸ヤ綅2浠诲姟瀹屾垚淇″彿
+ private Short taskFinish2;
+
+ //寮傚父鐮�
+ private Short alarm;
+
+ //蹇冭烦
+ private Short heart;
+
+ //澶囩敤1
+ private Short temp1;
+
+ //澶囩敤2
+ private Short temp2;
+
+ //澶囩敤3
+ private Short temp3;
+
+ //澶囩敤4
+ private Short temp4;
+
+ //澶囩敤5
+ private Short temp5;
+
+ //宸ヤ綅1浠诲姟妯″紡
+ private Short taskMode1;
+
+ //宸ヤ綅1婧愮珯
+ private Short sourceStn1;
+
+ //宸ヤ綅1鐩爣绔�
+ private Short destinationPos1;
+
+ //宸ヤ綅2浠诲姟妯″紡
+ private Short taskMode2;
+
+ //宸ヤ綅2婧愮珯
+ private Short sourceStn2;
+
+ //宸ヤ綅2鐩爣绔�
+ private Short destinationPos2;
+
+ //宸ヤ綅1涓嬪彂鏃堕棿
+ private Long task1SendTime;
+
+ /**
+ * 鏈�杩戜竴娆″叆鍑哄簱绫诲瀷
+ * I:鍏ュ簱
+ * O:鍑哄簱
+ */
+ private String lastIo = "I";
+
+ public void setMode(Short mode) {
+ this.mode = mode;
+ this.modeType = RgvModeType.get(mode);
+ }
+
+ public void setMode(RgvModeType type) {
+ this.mode = type.id;
+ this.modeType = type;
+ }
+
+ public void setStatus(Short status) {
+ this.status = status;
+ this.statusType = RgvStatusType.get(status);
+ }
+
+ public void setStatus(RgvStatusType type) {
+ this.status = type.id;
+ this.statusType = type;
+ }
+
+ public void setWalkPos(Short walkPos) {
+ this.walkPos = walkPos;
+ this.walkPosType = RgvWalkPosType.get(walkPos);
+ }
+
+ public void setWalkPos(RgvWalkPosType type) {
+ this.walkPos = type.id;
+ this.walkPosType = type;
+ }
+
+}
diff --git a/src/main/java/com/zy/core/properties/SlaveProperties.java b/src/main/java/com/zy/core/properties/SlaveProperties.java
index b2e19a4..52badea 100644
--- a/src/main/java/com/zy/core/properties/SlaveProperties.java
+++ b/src/main/java/com/zy/core/properties/SlaveProperties.java
@@ -4,6 +4,7 @@
import com.zy.core.model.CrnSlave;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.LedSlave;
+import com.zy.core.model.RgvSlave;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@@ -42,4 +43,6 @@
private List<Slave> car = new ArrayList<>();
+ private List<RgvSlave> rgv = new ArrayList<>();
+
}
diff --git a/src/main/java/com/zy/core/thread/ZyRgvThread.java b/src/main/java/com/zy/core/thread/ZyRgvThread.java
new file mode 100644
index 0000000..e10e17f
--- /dev/null
+++ b/src/main/java/com/zy/core/thread/ZyRgvThread.java
@@ -0,0 +1,402 @@
+package com.zy.core.thread;
+
+import HslCommunication.Core.Types.OperateResult;
+import HslCommunication.Core.Types.OperateResultExOne;
+import HslCommunication.Profinet.Siemens.SiemensPLCS;
+import HslCommunication.Profinet.Siemens.SiemensS7Net;
+import com.alibaba.fastjson.JSON;
+import com.core.common.DateUtils;
+import com.core.common.SpringUtils;
+import com.zy.asrs.entity.BasRgv;
+import com.zy.asrs.entity.BasRgvOpt;
+import com.zy.asrs.service.BasRgvOptService;
+import com.zy.asrs.service.BasRgvService;
+import com.zy.core.RgvThread;
+import com.zy.core.cache.MessageQueue;
+import com.zy.core.cache.OutputQueue;
+import com.zy.core.enums.RgvStatusType;
+import com.zy.core.enums.RgvTaskModeType;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.RgvSlave;
+import com.zy.core.model.Task;
+import com.zy.core.model.command.RgvCommand;
+import com.zy.core.model.protocol.RgvProtocol;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+
+import java.text.MessageFormat;
+import java.util.Date;
+
+/**
+ * RGV绾跨▼
+ */
+@Data
+@Slf4j
+public class ZyRgvThread implements Runnable, RgvThread {
+
+ private SiemensS7Net siemensNet;
+ private RgvSlave slave;
+ private RgvProtocol rgvProtocol;
+ private boolean resetFlag1 = false;//宸ヤ綅1澶嶄綅淇″彿
+ private boolean resetFlag2 = false;//宸ヤ綅2澶嶄綅淇″彿
+
+ public ZyRgvThread(RgvSlave slave) {
+ this.slave = slave;
+ }
+
+ @Override
+ @SuppressWarnings("InfiniteLoopStatement")
+ public void run() {
+ this.connect();
+ while (true) {
+ try {
+ int step = 1;
+ Task task = MessageQueue.poll(SlaveType.Rgv, slave.getId());
+ if (task != null) {
+ step = task.getStep();
+ }
+ switch (step) {
+ // 璇绘暟鎹�
+ case 1:
+ readStatus();
+ break;
+ // 鍐欏叆鏁版嵁
+ case 2:
+ write((RgvCommand) task.getData());
+ break;
+ // 澶嶄綅
+ case 3:
+ RgvCommand command = (RgvCommand) task.getData();
+ if (null == command) {
+ command = new RgvCommand();
+ }
+ command.setRgvNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+ command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+ command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡
+ command.setSourceStaNo1((short) 0);//婧愮珯
+ command.setDestinationStaNo1((short) 0);//鐩爣绔�
+ command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+ command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡
+ command.setSourceStaNo2((short) 0);//婧愮珯
+ command.setDestinationStaNo2((short) 0);//鐩爣绔�
+ command.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣�
+ write(command);
+ break;
+ //鍐欏叆鏁版嵁纭鍛戒护
+ case 4:
+ writeCommand((RgvCommand) task.getData());
+ break;
+ default:
+ break;
+ }
+ Thread.sleep(500);
+ } catch (Exception e) {
+// e.printStackTrace();
+ }
+
+ }
+ }
+
+ @Override
+ public boolean connect() {
+ boolean result = false;
+ siemensNet = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp());
+ siemensNet.setRack(slave.getRack().byteValue());
+ siemensNet.setSlot(slave.getSlot().byteValue());
+ OperateResult connect = siemensNet.ConnectServer();
+ if(connect.IsSuccess){
+ result = true;
+ OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆慠GV plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+ log.info("RGV plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ } else {
+ OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慠GV plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+ log.error("RGV plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ initRgv();
+ }
+ return result;
+ }
+
+ /**
+ * 璇诲彇鐘舵��
+ */
+ private void readStatus(){
+ try {
+ OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 34);
+ if (result.IsSuccess) {
+ if (null == rgvProtocol) {
+ rgvProtocol = new RgvProtocol();
+ rgvProtocol.setRgvNo(slave.getId());
+ }
+ rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));//妯″紡
+ rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 2));//RGV鐘舵��
+ rgvProtocol.setTaskNo1(siemensNet.getByteTransform().TransInt16(result.Content, 4));//宸ヤ綅1宸ヤ綔鍙�
+ rgvProtocol.setLoaded1(siemensNet.getByteTransform().TransInt16(result.Content, 6));//宸ヤ綅1鏈夌墿
+ rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransInt16(result.Content, 8));//RGV褰撳墠浣嶇疆
+ rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));//璧拌鍦ㄥ畾浣�
+ rgvProtocol.setTaskNo2(siemensNet.getByteTransform().TransInt16(result.Content, 12));//宸ヤ綅2宸ヤ綔鍙�
+ rgvProtocol.setLoaded2(siemensNet.getByteTransform().TransInt16(result.Content, 14));//宸ヤ綅2鏈夌墿
+ rgvProtocol.setTaskFinish1(siemensNet.getByteTransform().TransInt16(result.Content, 16));//宸ヤ綅1浠诲姟瀹屾垚
+ rgvProtocol.setTaskFinish2(siemensNet.getByteTransform().TransInt16(result.Content, 18));//宸ヤ綅2浠诲姟瀹屾垚
+ rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20));//寮傚父鐮�
+ rgvProtocol.setHeart(siemensNet.getByteTransform().TransInt16(result.Content, 22));//RGV蹇冭烦淇″彿
+ rgvProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 24));//澶囩敤1
+ rgvProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 26));//澶囩敤2
+ rgvProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 28));//澶囩敤3
+ rgvProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 30));//澶囩敤4
+ rgvProtocol.setTemp5(siemensNet.getByteTransform().TransInt16(result.Content, 32));//澶囩敤5
+
+ OperateResultExOne<byte[]> result2 = siemensNet.Read("DB100.0", (short) 22);
+ if (result2.IsSuccess) {
+ rgvProtocol.setTaskMode1(siemensNet.getByteTransform().TransInt16(result.Content, 4));//宸ヤ綅1浠诲姟妯″紡
+ rgvProtocol.setSourceStn1(siemensNet.getByteTransform().TransInt16(result.Content, 6));//宸ヤ綅1婧愮珯
+ rgvProtocol.setDestinationPos1(siemensNet.getByteTransform().TransInt16(result.Content, 8));//宸ヤ綅1鐩爣绔�
+ rgvProtocol.setTaskMode2(siemensNet.getByteTransform().TransInt16(result.Content, 14));//宸ヤ綅2浠诲姟妯″紡
+ rgvProtocol.setSourceStn2(siemensNet.getByteTransform().TransInt16(result.Content, 16));//宸ヤ綅2婧愮珯
+ rgvProtocol.setDestinationPos2(siemensNet.getByteTransform().TransInt16(result.Content, 18));//宸ヤ綅2鐩爣绔�
+ }
+
+ OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+
+ // 澶嶄綅淇″彿
+ if (rgvProtocol.getStatusType().equals(RgvStatusType.WAITING)) {
+ if (resetFlag1) {
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setAckFinish((short) 2);//宸ヤ綅1浠诲姟缁撴潫宸叉帴鏀�
+ if (write(rgvCommand)) {
+ resetFlag1 = false;
+ }
+ }
+
+ if (resetFlag2) {
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setAckFinish((short) 3);//宸ヤ綅2浠诲姟缁撴潫宸叉帴鏀�
+ if (write(rgvCommand)) {
+ resetFlag2 = false;
+ }
+ }
+ }
+
+ try {
+ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+ BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
+ BasRgv basRgv = new BasRgv();
+ basRgv.setRgvNo(slave.getId());
+ basRgv.setMode(rgvProtocol.getMode().intValue());
+ basRgv.setStatus(rgvProtocol.getStatus().intValue());
+ basRgv.setTaskNo1(rgvProtocol.getTaskNo1().intValue());
+ basRgv.setLoaded1(rgvProtocol.getLoaded1().intValue());
+ basRgv.setRgvPos(rgvProtocol.getRgvPos().intValue());
+ basRgv.setWalkPos(rgvProtocol.getWalkPos().intValue());
+ basRgv.setTaskNo2(rgvProtocol.getTaskNo2().intValue());
+ basRgv.setLoaded2(rgvProtocol.getLoaded2().intValue());
+ basRgv.setTaskFinish1(rgvProtocol.getTaskFinish1().intValue());
+ basRgv.setTaskFinish2(rgvProtocol.getTaskFinish2().intValue());
+ basRgv.setAlarm(rgvProtocol.getAlarm().intValue());
+ basRgv.setHeart(rgvProtocol.getHeart().intValue());
+ basRgv.setTemp1(rgvProtocol.getTemp1().intValue());
+ basRgv.setTemp2(rgvProtocol.getTemp2().intValue());
+ basRgv.setTemp3(rgvProtocol.getTemp3().intValue());
+ basRgv.setTemp4(rgvProtocol.getTemp4().intValue());
+ basRgv.setTemp5(rgvProtocol.getTemp5().intValue());
+ if (!basRgvService.updateById(basRgv)){
+ log.error("RGV plc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ }
+ } catch (Exception ignore){}
+
+ } else {
+ initRgv();
+ OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+ log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+ log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ initRgv();
+ }
+ }
+
+ /**
+ * 鍐欏叆鏁版嵁
+ */
+ private boolean write(RgvCommand command) throws InterruptedException {
+ if (null == command) {
+ log.error("RGV鍐欏叆鍛戒护涓虹┖");
+ return false;
+ }
+ command.setRgvNo(slave.getId());
+ OperateResult result = null;
+ if (command.getTaskNo1() > 0 && command.getTaskNo2() == 0) {
+ //鍙湁宸ヤ綅1瀛樺湪浠诲姟涓斾换鍔℃病鏈夎纭锛屽伐浣�1寮�濮嬭鏃�
+ if (command.getCommand() == 0) {
+ rgvProtocol.setTask1SendTime(System.currentTimeMillis());
+ }
+ short[] array = new short[10];
+ array[0] = command.getAckFinish(); // 浠诲姟瀹屾垚纭浣�
+ array[1] = command.getTaskNo1(); // 宸ヤ綅1浠诲姟鍙�
+ array[2] = command.getTaskMode1(); // 宸ヤ綅1妯″紡
+ array[3] = command.getSourceStaNo1(); // 宸ヤ綅1婧愮珯
+ array[4] = command.getDestinationStaNo1(); // 宸ヤ綅1鐩爣绔�
+ array[5] = 0; // 宸ヤ綅2浠诲姟鍙�
+ array[6] = 0; // 宸ヤ綅2妯″紡
+ array[7] = 0; // 宸ヤ綅2婧愮珯
+ array[8] = 0; // 宸ヤ綅2鐩爣绔�
+ array[9] = command.getCommand();// 浠诲姟纭浣�
+ result = siemensNet.Write("DB100.0", array);
+ log.info("RGV鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), array);
+ } else if (command.getTaskNo2() > 0 && command.getTaskNo1() == 0) {
+ //鍙湁宸ヤ綅2瀛樺湪浠诲姟
+ short[] array = new short[5];
+ array[0] = command.getTaskNo2(); // 宸ヤ綅2浠诲姟鍙�
+ array[1] = command.getTaskMode2(); // 宸ヤ綅2妯″紡
+ array[2] = command.getSourceStaNo2(); // 宸ヤ綅2婧愮珯
+ array[3] = command.getDestinationStaNo2(); // 宸ヤ綅2鐩爣绔�
+ array[4] = command.getCommand();// 浠诲姟纭浣�
+ result = siemensNet.Write("DB100.12", array);
+ log.info("RGV鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), array);
+ }else {
+ //宸ヤ綅1鍜屽伐浣�2浠诲姟
+ short[] array = new short[10];
+ array[0] = command.getAckFinish(); // 浠诲姟瀹屾垚纭浣�
+ array[1] = command.getTaskNo1(); // 宸ヤ綅1浠诲姟鍙�
+ array[2] = command.getTaskMode1(); // 宸ヤ綅1妯″紡
+ array[3] = command.getSourceStaNo1(); // 宸ヤ綅1婧愮珯
+ array[4] = command.getDestinationStaNo1(); // 宸ヤ綅1鐩爣绔�
+ array[5] = command.getTaskNo2(); // 宸ヤ綅2浠诲姟鍙�
+ array[6] = command.getTaskMode2(); // 宸ヤ綅2妯″紡
+ array[7] = command.getSourceStaNo2(); // 宸ヤ綅2婧愮珯
+ array[8] = command.getDestinationStaNo2(); // 宸ヤ綅2鐩爣绔�
+ array[9] = command.getCommand();// 浠诲姟纭浣�
+ result = siemensNet.Write("DB100.0", array);
+ log.info("RGV鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), array);
+ }
+
+ if (command.getCommand() == 1) {
+ //浠诲姟琚‘璁�
+ rgvProtocol.setTask1SendTime(0L);//閲嶇疆宸ヤ綅1涓嬪彂鏃堕棿
+ }
+
+ if(!result.IsSuccess){
+ log.error("鍐欏叆RGV plc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+ MessageQueue.offer(SlaveType.Rgv, slave.getId(), new Task(2, command));
+ Thread.sleep(100);
+ readStatus();
+ return false;
+ }
+
+ try {
+ // 鏃ュ織璁板綍
+ BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class);
+ Date now = new Date();
+ BasRgvOpt basRgvOpt = new BasRgvOpt(
+ command.getRgvNo(), // RGV[闈炵┖]
+ command.getAckFinish().intValue(), // 浠诲姟瀹屾垚纭浣�
+ command.getTaskNo1().intValue(), // 浠诲姟鍙�
+ command.getTaskMode1().intValue(), // 妯″紡
+ command.getSourceStaNo1().intValue(), // 婧愮珯
+ command.getDestinationStaNo1().intValue(), // 鐩爣绔�
+ command.getTaskNo2().intValue(), // 浠诲姟鍙�
+ command.getTaskMode2().intValue(), // 妯″紡
+ command.getSourceStaNo2().intValue(), // 婧愮珯
+ command.getDestinationStaNo2().intValue(), // 鐩爣绔�
+ command.getCommand().intValue(),
+ now, // 涓嬪彂鏃堕棿
+ null, // 涓嬪彂浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ null //鍝嶅簲
+ );
+ bean.insert(basRgvOpt);
+ } catch (Exception ignore) {}
+
+ if (result != null && result.IsSuccess) {
+ Thread.sleep(200);
+ this.readStatus();
+ log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
+ OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
+ return true;
+ } else {
+ OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+ log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ return false;
+ }
+ }
+
+ /**
+ * 鍐欏叆鏁版嵁纭鍛戒护
+ */
+ private boolean writeCommand(RgvCommand command) throws InterruptedException {
+ if (null == command) {
+ log.error("RGV鍐欏叆鍛戒护涓虹┖");
+ return false;
+ }
+
+ command.setRgvNo(slave.getId());
+ short[] array = new short[1];
+ array[0] = command.getCommand();// 浠诲姟纭浣�
+ OperateResult result = siemensNet.Write("DB100.20", array);
+ log.info("RGV鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), array);
+
+ if(!result.IsSuccess){
+ log.error("鍐欏叆RGV plc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+ MessageQueue.offer(SlaveType.Rgv, slave.getId(), new Task(2, command));
+ Thread.sleep(100);
+ readStatus();
+ return false;
+ }
+
+ try {
+ // 鏃ュ織璁板綍
+ BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class);
+ Date now = new Date();
+ BasRgvOpt basRgvOpt = new BasRgvOpt(
+ command.getRgvNo(), // RGV[闈炵┖]
+ command.getAckFinish().intValue(), // 浠诲姟瀹屾垚纭浣�
+ command.getTaskNo1().intValue(), // 浠诲姟鍙�
+ command.getTaskMode1().intValue(), // 妯″紡
+ command.getSourceStaNo1().intValue(), // 婧愮珯
+ command.getDestinationStaNo1().intValue(), // 鐩爣绔�
+ command.getTaskNo2().intValue(), // 浠诲姟鍙�
+ command.getTaskMode2().intValue(), // 妯″紡
+ command.getSourceStaNo2().intValue(), // 婧愮珯
+ command.getDestinationStaNo2().intValue(), // 鐩爣绔�
+ command.getCommand().intValue(),
+ now, // 涓嬪彂鏃堕棿
+ null, // 涓嬪彂浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ null //鍝嶅簲
+ );
+ bean.insert(basRgvOpt);
+ } catch (Exception ignore) {}
+
+ if (result != null && result.IsSuccess) {
+ Thread.sleep(200);
+ this.readStatus();
+ log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
+ OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
+ return true;
+ } else {
+ OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+ log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ return false;
+ }
+ }
+
+ /**
+ * 鍒濆鍖栧爢鍨涙満鐘舵��
+ */
+ private void initRgv() {
+ if (null == rgvProtocol) {
+ rgvProtocol = new RgvProtocol();
+ }
+ rgvProtocol.setMode((short) 0);
+ rgvProtocol.setStatus((short) -1);
+ rgvProtocol.setWalkPos((short) 1);
+ }
+
+ @Override
+ public void close() {
+ siemensNet.ConnectClose();
+ }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index f86372d..691b09e 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -61,6 +61,13 @@
row: 2
bay: 1
lev: 1
+ # 鍫嗗灈鏈哄叆搴撶珯2
+ crnInStn[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1022
+ row: 3
+ bay: 1
+ lev: 3
# 鍫嗗灈鏈哄嚭搴撶珯鐐�1
crnOutStn[0]:
devpPlcId: ${wcs-slave.devp[0].id}
@@ -68,6 +75,13 @@
row: 3
bay: 1
lev: 1
+ # 鍫嗗灈鏈哄嚭搴撶珯鐐�2
+ crnOutStn[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1016
+ row: 3
+ bay: 1
+ lev: 3
# 鍫嗗灈鏈�2
crn[1]:
id: 2
@@ -85,6 +99,13 @@
row: 7
bay: 1
lev: 1
+ # 鍫嗗灈鏈哄叆搴撶珯2
+ crnInStn[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1025
+ row: 6
+ bay: 1
+ lev: 3
# 鍫嗗灈鏈哄嚭搴撶珯鐐�1
crnOutStn[0]:
devpPlcId: ${wcs-slave.devp[0].id}
@@ -92,6 +113,13 @@
row: 6
bay: 1
lev: 1
+ # 鍫嗗灈鏈哄嚭搴撶珯鐐�2
+ crnOutStn[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1019
+ row: 6
+ bay: 1
+ lev: 3
# 杈撻�佺嚎1
devp[0]:
id: 1
@@ -111,18 +139,97 @@
barcode: ${wcs-slave.barcode[1].id}
backSta: 1011
led: ${wcs-slave.led[3].id}
+ # 鍏ュ簱鍙�3
+ inSta[2]:
+ staNo: 3007
+ barcode: ${wcs-slave.barcode[2].id}
+ backSta: 3007
+ led: ${wcs-slave.led[4].id}
+ # 鍏ュ簱鍙�4
+ inSta[3]:
+ staNo: 3012
+ barcode: ${wcs-slave.barcode[2].id}
+ backSta: 3012
+ led: ${wcs-slave.led[5].id}
# 绌烘澘鍏ュ簱鍙�1
emptyInSta[0]:
staNo: 102
- # 鍑哄簱鍙�1
- outSta[0]:
- staNo: 101
# 鎷f枡鍏ュ簱鍙�1
pickSta[0]:
- staNo: 102
+ staNo: 1003
barcode: ${wcs-slave.barcode[0].id}
- backSta: 102
+ backSta: 1001
led: ${wcs-slave.led[0].id}
+ # 鎷f枡鍏ュ簱鍙�2
+ pickSta[1]:
+ staNo: 1013
+ barcode: ${wcs-slave.barcode[1].id}
+ backSta: 1011
+ led: ${wcs-slave.led[3].id}
+ # 鎷f枡鍏ュ簱鍙�3
+ pickSta[2]:
+ staNo: 3007
+ barcode: ${wcs-slave.barcode[2].id}
+ backSta: 3007
+ led: ${wcs-slave.led[4].id}
+ # 鎷f枡鍏ュ簱鍙�4
+ pickSta[3]:
+ staNo: 3012
+ barcode: ${wcs-slave.barcode[2].id}
+ backSta: 3012
+ led: ${wcs-slave.led[5].id}
+
+ # RGV1
+ rgv[0]:
+ id: 1
+ ip: 10.10.10.120
+ port: 102
+ rack: 0
+ slot: 0
+ inStn[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ sourceStaNo: 2401
+ inStn[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ sourceStaNo: 2114
+ outStn[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ sourceStaNo: 1014
+ outStn[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ sourceStaNo: 1017
+ # RGV2
+ rgv[1]:
+ id: 2
+ ip: 10.10.10.121
+ port: 102
+ rack: 0
+ slot: 0
+ inStn[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ sourceStaNo: 3001
+ outStn[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ sourceStaNo: 2402
+ # RGV1
+ rgv[2]:
+ id: 3
+ ip: 10.10.10.122
+ port: 102
+ rack: 0
+ slot: 0
+ inStn[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ sourceStaNo: 2102
+ inStn[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ sourceStaNo: 4007
+ inStn[2]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ sourceStaNo: 4016
+ outStn[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ sourceStaNo: 2003
# 鏉$爜鎵弿浠�1
barcode[0]:
@@ -132,6 +239,16 @@
# 鏉$爜鎵弿浠�2
barcode[1]:
id: 2
+ ip: 10.10.10.3
+ port: 51236
+ # 鏉$爜鎵弿浠�3
+ barcode[2]:
+ id: 3
+ ip: 10.10.10.3
+ port: 51236
+ # 鏉$爜鎵弿浠�4
+ barcode[3]:
+ id: 4
ip: 10.10.10.3
port: 51236
@@ -162,4 +279,18 @@
ip: 10.10.10.206
port: 5005
devpPlcId: ${wcs-slave.devp[0].id}
- staArr: 1013
\ No newline at end of file
+ staArr: 1013
+ # LED5
+ led[4]:
+ id: 5
+ ip: 10.10.10.206
+ port: 5005
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staArr: 3007
+ # LED6
+ led[5]:
+ id: 6
+ ip: 10.10.10.206
+ port: 5005
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staArr: 3012
\ No newline at end of file
diff --git a/src/main/resources/mapper/BasRgvMapper.xml b/src/main/resources/mapper/BasRgvMapper.xml
new file mode 100644
index 0000000..df04cd8
--- /dev/null
+++ b/src/main/resources/mapper/BasRgvMapper.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.BasRgvMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasRgv">
+ <result column="rgv_no" property="rgvNo" />
+ <result column="mode" property="mode" />
+ <result column="status" property="status" />
+ <result column="task_no1" property="taskNo1" />
+ <result column="loaded1" property="loaded1" />
+ <result column="rgv_pos" property="rgvPos" />
+ <result column="walk_pos" property="walkPos" />
+ <result column="task_no2" property="taskNo2" />
+ <result column="loaded2" property="loaded2" />
+ <result column="task_finish1" property="taskFinish1" />
+ <result column="task_finish2" property="taskFinish2" />
+ <result column="alarm" property="alarm" />
+ <result column="heart" property="heart" />
+ <result column="temp1" property="temp1" />
+ <result column="temp2" property="temp2" />
+ <result column="temp3" property="temp3" />
+ <result column="temp4" property="temp4" />
+ <result column="temp5" property="temp5" />
+ <result column="create_time" property="createTime" />
+ <result column="create_by" property="createBy" />
+ <result column="update_time" property="updateTime" />
+ <result column="update_by" property="updateBy" />
+
+ </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/BasRgvOptMapper.xml b/src/main/resources/mapper/BasRgvOptMapper.xml
new file mode 100644
index 0000000..bb3f32b
--- /dev/null
+++ b/src/main/resources/mapper/BasRgvOptMapper.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.BasRgvOptMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasRgvOpt">
+ <result column="id" property="id" />
+ <result column="rgv_no" property="rgvNo" />
+ <result column="ack_finish" property="ackFinish" />
+ <result column="task_no1" property="taskNo1" />
+ <result column="task_mode1" property="taskMode1" />
+ <result column="source_sta_no1" property="sourceStaNo1" />
+ <result column="destination_sta_no_1" property="destinationStaNo1" />
+ <result column="task_no2" property="taskNo2" />
+ <result column="task_mode2" property="taskMode2" />
+ <result column="source_sta_no2" property="sourceStaNo2" />
+ <result column="destination_sta_no2" property="destinationStaNo2" />
+ <result column="command" property="command" />
+ <result column="create_time" property="createTime" />
+ <result column="create_by" property="createBy" />
+ <result column="update_time" property="updateTime" />
+ <result column="update_by" property="updateBy" />
+ <result column="response" property="response" />
+
+ </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 14e16a5..58915a4 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -203,4 +203,8 @@
<select id="selectLaneWrkMastOut" resultMap="BaseResultMap">
select * from dbo.asr_wrk_mast where wrk_sts in (11,12,13,14) and io_type>100 order by io_pri desc,io_time,wrk_no asc
</select>
+
+ <select id="selectByWrkNo" resultMap="BaseResultMap">
+ select top 1 * from dbo.asr_wrk_mast where wrk_no = #{wrkNo} order by io_pri desc,io_time,wrk_no asc
+ </select>
</mapper>
--
Gitblit v1.9.1