From 9d5f39fb3be0d9aed1fd975dad19d2c7fdecdde7 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期四, 21 三月 2024 09:15:57 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/entity/BasRgv.java | 209 ++++++
src/main/java/com/zy/core/enums/RgvModeType.java | 43 +
src/main/resources/mapper/BasRgvErrMapper.xml | 16
src/main/java/com/zy/asrs/service/BasRgvErrService.java | 8
src/main/java/com/zy/asrs/service/BasRgvService.java | 8
src/main/java/com/zy/core/thread/SiemensRgvThread.java | 489 ++++++++++++++++
src/main/java/com/zy/asrs/mapper/BasRgvErrMapper.java | 12
src/main/java/com/zy/core/model/RgvSlave.java | 57 +
src/main/java/com/zy/core/enums/SlaveType.java | 1
src/main/java/com/zy/core/cache/OutputQueue.java | 4
src/main/java/com/zy/core/model/command/RgvCommand.java | 129 ++++
src/main/java/com/zy/asrs/entity/BasRgvErr.java | 127 ++++
src/main/java/com/zy/asrs/controller/BasRgvErrController.java | 123 ++++
src/main/java/com/zy/core/enums/RgvStatusType.java | 46 +
src/main/java/com/zy/asrs/service/impl/BasRgvErrServiceImpl.java | 12
src/main/java/com/zy/asrs/mapper/BasRgvMapper.java | 12
src/main/java/com/zy/core/cache/MessageQueue.java | 14
src/main/java/com/zy/asrs/controller/BasRgvController.java | 123 ++++
src/main/java/com/zy/asrs/service/impl/BasRgvServiceImpl.java | 12
src/main/java/com/zy/common/CodeBuilder.java | 2
src/main/java/com/zy/core/ServerBootstrap.java | 4
src/main/java/com/zy/core/properties/SlaveProperties.java | 2
src/main/resources/mapper/BasRgvMapper.xml | 24
src/main/java/com/zy/core/RgvThread.java | 4
src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 231 +++++++
src/main/java/com/zy/core/enums/RgvTaskModeType.java | 47 +
26 files changed, 1,757 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/BasRgvController.java b/src/main/java/com/zy/asrs/controller/BasRgvController.java
new file mode 100644
index 0000000..0725a43
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasRgvController.java
@@ -0,0 +1,123 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.DateUtils;
+import com.zy.asrs.entity.BasRgv;
+import com.zy.asrs.service.BasRgvService;
+import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class BasRgvController extends BaseController {
+
+ @Autowired
+ private BasRgvService basRgvService;
+
+ @RequestMapping(value = "/basRgv/{id}/auth")
+ @ManagerAuth
+ public R get(@PathVariable("id") String id) {
+ return R.ok(basRgvService.selectById(String.valueOf(id)));
+ }
+
+ @RequestMapping(value = "/basRgv/list/auth")
+ @ManagerAuth
+ public R list(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam Map<String, Object> param){
+ EntityWrapper<BasRgv> wrapper = new EntityWrapper<>();
+ excludeTrash(param);
+ convert(param, wrapper);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+ return R.ok(basRgvService.selectPage(new Page<>(curr, limit), wrapper));
+ }
+
+ private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+ for (Map.Entry<String, Object> entry : map.entrySet()){
+ String val = String.valueOf(entry.getValue());
+ if (val.contains(RANGE_TIME_LINK)){
+ String[] dates = val.split(RANGE_TIME_LINK);
+ wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+ wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+ } else {
+ wrapper.like(entry.getKey(), val);
+ }
+ }
+ }
+
+ @RequestMapping(value = "/basRgv/add/auth")
+ @ManagerAuth
+ public R add(BasRgv basRgv) {
+ basRgvService.insert(basRgv);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/basRgv/update/auth")
+ @ManagerAuth
+ public R update(BasRgv basRgv){
+ if (Cools.isEmpty(basRgv) || null==basRgv.getRgvNo()){
+ return R.error();
+ }
+ basRgvService.updateById(basRgv);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/basRgv/delete/auth")
+ @ManagerAuth
+ public R delete(@RequestParam(value="ids[]") Long[] ids){
+ for (Long id : ids){
+ basRgvService.deleteById(id);
+ }
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/basRgv/export/auth")
+ @ManagerAuth
+ public R export(@RequestBody JSONObject param){
+ EntityWrapper<BasRgv> wrapper = new EntityWrapper<>();
+ List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+ Map<String, Object> map = excludeTrash(param.getJSONObject("basRgv"));
+ convert(map, wrapper);
+ List<BasRgv> list = basRgvService.selectList(wrapper);
+ return R.ok(exportSupport(list, fields));
+ }
+
+ @RequestMapping(value = "/basRgvQuery/auth")
+ @ManagerAuth
+ public R query(String condition) {
+ EntityWrapper<BasRgv> wrapper = new EntityWrapper<>();
+ wrapper.like("rgv_no", condition);
+ Page<BasRgv> page = basRgvService.selectPage(new Page<>(0, 10), wrapper);
+ List<Map<String, Object>> result = new ArrayList<>();
+ for (BasRgv basRgv : page.getRecords()){
+ Map<String, Object> map = new HashMap<>();
+ map.put("id", basRgv.getRgvNo());
+ map.put("value", basRgv.getRgvNo());
+ result.add(map);
+ }
+ return R.ok(result);
+ }
+
+ @RequestMapping(value = "/basRgv/check/column/auth")
+ @ManagerAuth
+ public R query(@RequestBody JSONObject param) {
+ Wrapper<BasRgv> wrapper = new EntityWrapper<BasRgv>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+ if (null != basRgvService.selectOne(wrapper)){
+ return R.parse(BaseRes.REPEAT).add(getComment(BasRgv.class, String.valueOf(param.get("key"))));
+ }
+ return R.ok();
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/BasRgvErrController.java b/src/main/java/com/zy/asrs/controller/BasRgvErrController.java
new file mode 100644
index 0000000..287d351
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasRgvErrController.java
@@ -0,0 +1,123 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.DateUtils;
+import com.zy.asrs.entity.BasRgvErr;
+import com.zy.asrs.service.BasRgvErrService;
+import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class BasRgvErrController extends BaseController {
+
+ @Autowired
+ private BasRgvErrService basRgvErrService;
+
+ @RequestMapping(value = "/basRgvErr/{id}/auth")
+ @ManagerAuth
+ public R get(@PathVariable("id") String id) {
+ return R.ok(basRgvErrService.selectById(String.valueOf(id)));
+ }
+
+ @RequestMapping(value = "/basRgvErr/list/auth")
+ @ManagerAuth
+ public R list(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam Map<String, Object> param){
+ EntityWrapper<BasRgvErr> wrapper = new EntityWrapper<>();
+ excludeTrash(param);
+ convert(param, wrapper);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+ return R.ok(basRgvErrService.selectPage(new Page<>(curr, limit), wrapper));
+ }
+
+ private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+ for (Map.Entry<String, Object> entry : map.entrySet()){
+ String val = String.valueOf(entry.getValue());
+ if (val.contains(RANGE_TIME_LINK)){
+ String[] dates = val.split(RANGE_TIME_LINK);
+ wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+ wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+ } else {
+ wrapper.like(entry.getKey(), val);
+ }
+ }
+ }
+
+ @RequestMapping(value = "/basRgvErr/add/auth")
+ @ManagerAuth
+ public R add(BasRgvErr basRgvErr) {
+ basRgvErrService.insert(basRgvErr);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/basRgvErr/update/auth")
+ @ManagerAuth
+ public R update(BasRgvErr basRgvErr){
+ if (Cools.isEmpty(basRgvErr) || null==basRgvErr.getErrorCode()){
+ return R.error();
+ }
+ basRgvErrService.updateById(basRgvErr);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/basRgvErr/delete/auth")
+ @ManagerAuth
+ public R delete(@RequestParam(value="ids[]") Long[] ids){
+ for (Long id : ids){
+ basRgvErrService.deleteById(id);
+ }
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/basRgvErr/export/auth")
+ @ManagerAuth
+ public R export(@RequestBody JSONObject param){
+ EntityWrapper<BasRgvErr> wrapper = new EntityWrapper<>();
+ List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+ Map<String, Object> map = excludeTrash(param.getJSONObject("basRgvErr"));
+ convert(map, wrapper);
+ List<BasRgvErr> list = basRgvErrService.selectList(wrapper);
+ return R.ok(exportSupport(list, fields));
+ }
+
+ @RequestMapping(value = "/basRgvErrQuery/auth")
+ @ManagerAuth
+ public R query(String condition) {
+ EntityWrapper<BasRgvErr> wrapper = new EntityWrapper<>();
+ wrapper.like("id", condition);
+ Page<BasRgvErr> page = basRgvErrService.selectPage(new Page<>(0, 10), wrapper);
+ List<Map<String, Object>> result = new ArrayList<>();
+ for (BasRgvErr basRgvErr : page.getRecords()){
+ Map<String, Object> map = new HashMap<>();
+ map.put("id", basRgvErr.getErrorCode());
+ map.put("value", basRgvErr.getErrorCode());
+ result.add(map);
+ }
+ return R.ok(result);
+ }
+
+ @RequestMapping(value = "/basRgvErr/check/column/auth")
+ @ManagerAuth
+ public R query(@RequestBody JSONObject param) {
+ Wrapper<BasRgvErr> wrapper = new EntityWrapper<BasRgvErr>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+ if (null != basRgvErrService.selectOne(wrapper)){
+ return R.parse(BaseRes.REPEAT).add(getComment(BasRgvErr.class, String.valueOf(param.get("key"))));
+ }
+ return R.ok();
+ }
+
+}
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..b6c5525
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasRgv.java
@@ -0,0 +1,209 @@
+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 com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+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= "鍙叆")
+ @TableField("in_enable")
+ private Integer inEnable;
+
+ /**
+ * 鍙嚭
+ */
+ @ApiModelProperty(value= "鍙嚭")
+ @TableField("out_enable")
+ private Integer outEnable;
+
+ /**
+ * 浣滀笟鎬�
+ */
+ @ApiModelProperty(value= "浣滀笟鎬�")
+ @TableField("rgv_sts")
+ private Integer rgvSts;
+
+ /**
+ * 浠诲姟鍙�
+ */
+ @ApiModelProperty(value= "浠诲姟鍙�")
+ @TableField("wrk_no1")
+ private Integer wrkNo1;
+
+ /**
+ * 鍫嗗灈鏈哄彿
+ */
+ @ApiModelProperty(value= "鍫嗗灈鏈哄彿")
+ @TableField("wrk_no2")
+ private Integer wrkNo2;
+
+ /**
+ * 閿欒鐮�
+ */
+ @ApiModelProperty(value= "閿欒鐮�")
+ @TableField("rgv_err")
+ private Long rgvErr;
+
+ /**
+ * 鏍囪
+ */
+ @ApiModelProperty(value= "鏍囪")
+ @TableField("pak_mk")
+ private String pakMk;
+
+ /**
+ * 鐘舵�� 1: 姝e父 0: 绂佺敤
+ */
+ @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 绂佺敤 ")
+ private Integer status;
+
+ /**
+ * 娣诲姞浜哄憳
+ */
+ @ApiModelProperty(value= "娣诲姞浜哄憳")
+ @TableField("create_by")
+ private Long createBy;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @TableField("create_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 淇敼浜哄憳
+ */
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ @TableField("update_by")
+ private Long updateBy;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @TableField("update_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ public BasRgv() {}
+
+ public BasRgv(Integer rgvNo,Integer inEnable,Integer outEnable,Integer rgvSts,Integer wrkNo1,Integer wrkNo2,Long rgvErr,String pakMk,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+ this.rgvNo = rgvNo;
+ this.inEnable = inEnable;
+ this.outEnable = outEnable;
+ this.rgvSts = rgvSts;
+ this.wrkNo1 = wrkNo1;
+ this.wrkNo2 = wrkNo2;
+ this.rgvErr = rgvErr;
+ this.pakMk = pakMk;
+ this.status = status;
+ this.createBy = createBy;
+ this.createTime = createTime;
+ this.updateBy = updateBy;
+ this.updateTime = updateTime;
+ this.memo = memo;
+ }
+
+// BasRgv basRgv = new BasRgv(
+// null, // RGV缂栧彿[闈炵┖]
+// null, // 鍙叆
+// null, // 鍙嚭
+// null, // 浣滀笟鎬�
+// null, // 浠诲姟鍙�
+// null, // 鍫嗗灈鏈哄彿
+// null, // 閿欒鐮�
+// null, // 鏍囪
+// null, // 鐘舵��
+// null, // 娣诲姞浜哄憳
+// null, // 娣诲姞鏃堕棿
+// null, // 淇敼浜哄憳
+// null, // 淇敼鏃堕棿
+// null // 澶囨敞
+// );
+
+ public String getStatus$(){
+ if (null == this.status){ return null; }
+ switch (this.status){
+ case 1:
+ return "姝e父";
+ case 0:
+ return "绂佺敤";
+ default:
+ return String.valueOf(this.status);
+ }
+ }
+
+ public String getCreateBy$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.selectById(this.createBy);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getId());
+ }
+ return null;
+ }
+
+ public String getCreateTime$(){
+ if (Cools.isEmpty(this.createTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+ }
+
+ public String getUpdateBy$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.selectById(this.updateBy);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getId());
+ }
+ return null;
+ }
+
+ 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/BasRgvErr.java b/src/main/java/com/zy/asrs/entity/BasRgvErr.java
new file mode 100644
index 0000000..d9558ea
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasRgvErr.java
@@ -0,0 +1,127 @@
+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 com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+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_err")
+public class BasRgvErr implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 寮傚父鐮�
+ */
+ @ApiModelProperty(value= "寮傚父鐮�")
+ @TableId(value = "error_code", type = IdType.INPUT)
+ @TableField("error_code")
+ private Long errorCode;
+
+ /**
+ * 寮傚父
+ */
+ @ApiModelProperty(value= "寮傚父")
+ @TableField("err_name")
+ private String errName;
+
+ /**
+ * 淇敼浜哄憳
+ */
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ @TableField("modi_user")
+ private Long modiUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @TableField("modi_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date modiTime;
+
+ /**
+ * 娣诲姞浜哄憳
+ */
+ @ApiModelProperty(value= "娣诲姞浜哄憳")
+ @TableField("appe_user")
+ private Long appeUser;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @TableField("appe_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date appeTime;
+
+ public BasRgvErr() {}
+
+ public BasRgvErr(Long errorCode,String errName,Long modiUser,Date modiTime,Long appeUser,Date appeTime) {
+ this.errorCode = errorCode;
+ this.errName = errName;
+ this.modiUser = modiUser;
+ this.modiTime = modiTime;
+ this.appeUser = appeUser;
+ this.appeTime = appeTime;
+ }
+
+// BasRgvErr basRgvErr = new BasRgvErr(
+// null, // 寮傚父鐮乕闈炵┖]
+// null, // 寮傚父
+// null, // 淇敼浜哄憳
+// null, // 淇敼鏃堕棿
+// null, // 娣诲姞浜哄憳
+// null // 娣诲姞鏃堕棿
+// );
+
+ public String getModiUser$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.selectById(this.modiUser);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getNickname());
+ }
+ return null;
+ }
+
+ public String getModiTime$(){
+ if (Cools.isEmpty(this.modiTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+ }
+
+ public String getAppeUser$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.selectById(this.appeUser);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getNickname());
+ }
+ return null;
+ }
+
+ public String getAppeTime$(){
+ if (Cools.isEmpty(this.appeTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+ }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasRgvErrMapper.java b/src/main/java/com/zy/asrs/mapper/BasRgvErrMapper.java
new file mode 100644
index 0000000..4b3a44e
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasRgvErrMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasRgvErr;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasRgvErrMapper extends BaseMapper<BasRgvErr> {
+
+}
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/service/BasRgvErrService.java b/src/main/java/com/zy/asrs/service/BasRgvErrService.java
new file mode 100644
index 0000000..754bb63
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasRgvErrService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasRgvErr;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasRgvErrService extends IService<BasRgvErr> {
+
+}
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/BasRgvErrServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasRgvErrServiceImpl.java
new file mode 100644
index 0000000..dcf62fd
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasRgvErrServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasRgvErrMapper;
+import com.zy.asrs.entity.BasRgvErr;
+import com.zy.asrs.service.BasRgvErrService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basRgvErrService")
+public class BasRgvErrServiceImpl extends ServiceImpl<BasRgvErrMapper, BasRgvErr> implements BasRgvErrService {
+
+}
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/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java
index 79e22e1..e776910 100644
--- a/src/main/java/com/zy/common/CodeBuilder.java
+++ b/src/main/java/com/zy/common/CodeBuilder.java
@@ -20,7 +20,7 @@
generator.url="127.0.0.1:1433;databasename=ghtzasrs";
generator.username="sa";
generator.password="sa@123";
- generator.table="sys_saas_log";
+ generator.table="asr_bas_rgv_err";
generator.packagePath="com.zy.asrs";
generator.js = false;
generator.html = false;
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..503000f
--- /dev/null
+++ b/src/main/java/com/zy/core/RgvThread.java
@@ -0,0 +1,4 @@
+package com.zy.core;
+
+public interface RgvThread extends ThreadHandler{
+}
diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java
index a97d9a0..415ce12 100644
--- a/src/main/java/com/zy/core/ServerBootstrap.java
+++ b/src/main/java/com/zy/core/ServerBootstrap.java
@@ -59,6 +59,10 @@
for (Slave barcode : slaveProperties.getBarcode()) {
MessageQueue.init(SlaveType.Barcode, barcode);
}
+ // 鍒濆鍖朢gv灏忚溅mq
+ for (Slave rgv : slaveProperties.getRgv()) {
+ MessageQueue.init(SlaveType.Rgv, rgv);
+ }
// // 鍒濆鍖朙ed鐏痬q
// for (Slave led : slaveProperties.getLed()) {
// MessageQueue.init(SlaveType.Led, led);
diff --git a/src/main/java/com/zy/core/cache/MessageQueue.java b/src/main/java/com/zy/core/cache/MessageQueue.java
index b98b430..cdabb4b 100644
--- a/src/main/java/com/zy/core/cache/MessageQueue.java
+++ b/src/main/java/com/zy/core/cache/MessageQueue.java
@@ -29,6 +29,7 @@
// 鍙拌溅mq浜ゆ崲鏈�
private static final Map<Integer, ConcurrentLinkedQueue<Task>> CAR_EXCHANGE = new ConcurrentHashMap<>();
+ private static final Map<Integer, LinkedBlockingQueue<Task>> RGV_EXCHANGE = new ConcurrentHashMap<>();
/**
* mq 浜ゆ崲鏈哄垵濮嬪寲
*/
@@ -36,6 +37,9 @@
switch (type) {
case Crn:
CRN_EXCHANGE.put(slave.getId(), new LinkedBlockingQueue<>(1));
+ break;
+ case Rgv:
+ RGV_EXCHANGE.put(slave.getId(), new LinkedBlockingQueue<>(1));
break;
case Devp:
DEVP_EXCHANGE.put(slave.getId(), new ConcurrentLinkedQueue<>());
@@ -65,6 +69,8 @@
switch (type) {
case Crn:
return CRN_EXCHANGE.get(id).offer(task);
+ case Rgv:
+ return RGV_EXCHANGE.get(id).offer(task);
case Devp:
return DEVP_EXCHANGE.get(id).offer(task);
case Barcode:
@@ -88,6 +94,8 @@
switch (type) {
case Crn:
return CRN_EXCHANGE.get(id).poll();
+ case Rgv:
+ return RGV_EXCHANGE.get(id).poll();
case Devp:
return DEVP_EXCHANGE.get(id).poll();
case Barcode:
@@ -110,6 +118,8 @@
switch (type) {
case Crn:
return CRN_EXCHANGE.get(id).peek();
+ case Rgv:
+ return RGV_EXCHANGE.get(id).peek();
case Devp:
return DEVP_EXCHANGE.get(id).peek();
case Barcode:
@@ -128,9 +138,11 @@
public static void clear(SlaveType type, Integer id){
switch (type) {
case Crn:
-
CRN_EXCHANGE.get(id).clear();
break;
+ case Rgv:
+ RGV_EXCHANGE.get(id).clear();
+ break;
case Devp:
DEVP_EXCHANGE.get(id).clear();
break;
diff --git a/src/main/java/com/zy/core/cache/OutputQueue.java b/src/main/java/com/zy/core/cache/OutputQueue.java
index 6563854..a5c050d 100644
--- a/src/main/java/com/zy/core/cache/OutputQueue.java
+++ b/src/main/java/com/zy/core/cache/OutputQueue.java
@@ -17,4 +17,8 @@
public static ArrayBlockingQueue<JSONObject> BARCODE = new ArrayBlockingQueue<>(32);
// 纾呯Г杈撳嚭鏃ュ織
public static ArrayBlockingQueue<JSONObject> SCALE = new ArrayBlockingQueue<>(32);
+
+ // 鍫嗗灈鏈鸿緭鍑烘棩蹇�
+ public static ArrayBlockingQueue<String> RGV = new ArrayBlockingQueue<>(32);
+
}
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..3a344bb
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/RgvModeType.java
@@ -0,0 +1,43 @@
+package com.zy.core.enums;
+
+public enum RgvModeType {
+
+ NONE(-1, "绂荤嚎"),
+ STOP(0, "鍏虫満"),
+ HAND(1, "鎵嬪姩"),
+ HALF_AUTO(2, "鍗婅嚜鍔�"),
+ AUTO(3, "鑷姩"),
+ AUTO2(100, "鍏跺畠"),
+ ;
+
+ public Integer id;
+ public String desc;
+ RgvModeType(Integer 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.intValue())) {
+ return type;
+ }
+ }
+ return null;
+ }
+
+ public static RgvModeType get(RgvModeType type) {
+ if (null == type) {
+ return null;
+ }
+ for (RgvModeType rgvModeType : RgvModeType.values()) {
+ if (rgvModeType == type) {
+ return rgvModeType;
+ }
+ }
+ 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..2b1abff
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/RgvStatusType.java
@@ -0,0 +1,46 @@
+package com.zy.core.enums;
+
+public enum RgvStatusType {
+
+ NONE(-1, "绂荤嚎"),
+ IDLE(0, "绌洪棽"),
+ WORKING(1, "浣滀笟涓�"),
+ SOS(2, "鎶ヨ"),
+ WORKING1(3, "浣滀笟涓�"),
+ FETCHING(11, "鍙栬揣涓�"),
+ PUTTING(12, "鏀捐揣涓�"),
+ WAITING(90, "浠诲姟瀹屾垚绛夊緟WCS纭"),
+ FETCHWAITING(91, "鍙栬揣浠诲姟瀹屾垚绛夊緟WCS纭"),
+ ;
+
+ public Integer id;
+ public String desc;
+ RgvStatusType(Integer 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.intValue())) {
+ return type;
+ }
+ }
+ return NONE;
+ }
+
+ public static RgvStatusType get(RgvStatusType type) {
+ if (null == type) {
+ return null;
+ }
+ for (RgvStatusType rgvStatusType : RgvStatusType.values()) {
+ if (rgvStatusType == type) {
+ return rgvStatusType;
+ }
+ }
+ 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..cd241f4
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/RgvTaskModeType.java
@@ -0,0 +1,47 @@
+package com.zy.core.enums;
+
+public enum RgvTaskModeType {
+
+ NONE(0), // 鏃�
+ FETCH(1), // 鍙栬揣
+ PUT(2), // 鏀捐揣
+ FETCH_PUT(3), // 鍙栨斁璐�
+ X_MOVE(4), // 绔欎綅绉昏浆
+// Y_MOVE(5), // 绔欎綅绉昏浆
+// XY_MOVE(6), // 绔欎綅绉昏浆
+ GO_ORIGIN(7), // 鍥炲師鐐�
+// BACK_ORIGIN(8), // 鍥炲弽鍘熺偣
+// CLEAR(9), // 娓呴敊
+ ;
+
+ public Integer id;
+ RgvTaskModeType(Integer id) {
+ this.id = id;
+ }
+
+
+ public static RgvTaskModeType get(Short id) {
+ if (null == id) {
+ return null;
+ }
+ for (RgvTaskModeType type : RgvTaskModeType.values()) {
+ if (type.id.equals(id.intValue())) {
+ return type;
+ }
+ }
+ return null;
+ }
+
+ public static RgvTaskModeType get(RgvTaskModeType type) {
+ if (null == type) {
+ return null;
+ }
+ for (RgvTaskModeType rgvTaskModeType : RgvTaskModeType.values()) {
+ if (rgvTaskModeType == type) {
+ return rgvTaskModeType;
+ }
+ }
+ 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..7f64d13 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..04db042
--- /dev/null
+++ b/src/main/java/com/zy/core/model/RgvSlave.java
@@ -0,0 +1,57 @@
+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 Integer offset;
+
+ private Boolean demo;
+
+ // RGV鍏ュ簱婧愮珯鐐�
+ private List<RgvStn> rgvInSStn = new ArrayList<>();
+
+ // RGV鍑哄簱婧愮珯鐐�
+ private List<RgvStn> rgvOutSStn = new ArrayList<>();
+
+ // RGV鍙犵洏
+ private List<RgvStn> rgvEmptyInSStn = new ArrayList<>();
+
+ // RGV绌烘澘鍏ュ簱
+ private List<RgvStn> rgvEmptyOutSStn = new ArrayList<>();
+
+ // RGV鍑哄簱鐩爣绔欑偣
+ private List<RgvStn> rgvDestStn = new ArrayList<>();
+
+ @Data
+ public static class RgvStn {
+
+ // 杈撻�佺嚎plc缂栧彿
+ private Integer devpPlcId;
+
+ // RGV绔欑偣缂栧彿
+ private Integer staNo;
+
+// // 鎺�
+// private Integer row;
+//
+// // 鍒�
+// private Integer bay;
+//
+// // 灞�
+// private Integer lev;
+
+ }
+
+}
\ No newline at end of file
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..5be8072
--- /dev/null
+++ b/src/main/java/com/zy/core/model/command/RgvCommand.java
@@ -0,0 +1,129 @@
+package com.zy.core.model.command;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.zy.core.enums.RgvTaskModeType;
+import lombok.Data;
+
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * 鍫嗗灈鏈哄懡浠ゆ姤鏂�
+ * Created by vincent on 2020/8/11
+ */
+@Data
+public class RgvCommand {
+
+ // Rgv缂栧彿
+ private Integer rgvNo = 0;
+
+ // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ private Short ackFinish1 = 0;
+
+ // 宸ヤ綅1浠诲姟鍙�
+ private Short taskNo1 = 0;
+
+ /**
+ * 浠诲姟妯″紡锛�
+ * 0 = 鏃�
+ * 1 = 鍙栬揣
+ * 2 = 鏀捐揣
+ * 3 = 鍙栨斁璐�
+ */
+ private Short taskMode1 = 0;
+
+ @JSONField(serialize = false)
+ private RgvTaskModeType taskModeType1;
+
+ /*
+ 宸ヤ綅1婧愮珯
+ */
+ private Short sourceStaNo1 = 0;
+
+ /*
+ 宸ヤ綅1鐩爣绔�
+ */
+ private Short destinationStaNo1 = 0;
+
+ ////////////////////// 宸ヤ綅2瀹氫箟 //////////////////////////////////////////////////
+ // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ private Short ackFinish2 = 0;
+
+ // 宸ヤ綅2浠诲姟鍙�
+ private Short taskNo2 = 0;
+
+ /**
+ * 浠诲姟妯″紡锛�
+ * 0 = 鏃�
+ * 1 = 鍙栬揣
+ * 2 = 鏀捐揣
+ * 3 = 鍙栨斁璐�
+ */
+ private Short taskMode2 = 0;
+
+ @JSONField(serialize = false)
+ private RgvTaskModeType taskModeType2;
+
+ /*
+ 宸ヤ綅1婧愮珯
+ */
+ private Short sourceStaNo2 = 0;
+
+ /*
+ 宸ヤ綅1鐩爣绔�
+ */
+ private Short destinationStaNo2 = 0;
+ ///////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * 浠诲姟妯″紡锛�
+ * 0 = 鏈‘璁�
+ * 1 = 宸ヤ綅1浠诲姟纭
+ * 2 = 宸ヤ綅2浠诲姟纭
+ * 3 = 宸ヤ綅1銆�2浠诲姟鍚屾椂纭
+ */
+ private Short command = 0;
+
+ public void setTaskMode1(Short taskMode1){
+ this.taskMode1 = taskMode1;
+ this.taskModeType1 = RgvTaskModeType.get(taskModeType1);
+ }
+
+ public void setTaskMode1(RgvTaskModeType type1) {
+ this.taskModeType1 = type1;
+ this.taskMode1 = RgvTaskModeType.get(type1).id.shortValue();
+ }
+
+ public void setTaskMode2(Short taskMode2){
+ this.taskMode2 = taskMode2;
+ this.taskModeType2 = RgvTaskModeType.get(taskModeType2);
+ }
+
+ public void setTaskMode2(RgvTaskModeType type2) {
+ this.taskModeType2 = type2;
+ this.taskMode2 = RgvTaskModeType.get(type2).id.shortValue();
+ }
+
+ public static void main(String[] args) {
+ Date date = new Date();
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(date);
+
+ System.out.println(cal.get(Calendar.YEAR));
+ //榛樿浠�0-11
+ System.out.println(cal.get(Calendar.MONTH)+1);
+ System.out.println(cal.get(Calendar.DATE));
+ int hour = cal.get(Calendar.HOUR_OF_DAY);
+ System.out.println("鏃�");
+ System.out.println(hour);
+ int minute = cal.get(Calendar.MINUTE);
+ System.out.println("鍒�");
+ System.out.println(minute);
+ int second = cal.get(Calendar.SECOND);
+ System.out.println("绉�");
+ System.out.println(second);
+ int mm = cal.get(Calendar.DAY_OF_WEEK) - 1; // 鏄熸湡锛�0(鏃�)锝�6(鍏�)
+ System.out.println("绀兼嫓");
+ System.out.println(mm);
+ }
+}
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..1dffde9
--- /dev/null
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -0,0 +1,231 @@
+package com.zy.core.model.protocol;
+
+import com.zy.asrs.entity.BasRgv;
+import com.zy.core.enums.RgvModeType;
+import com.zy.core.enums.RgvStatusType;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by vincent on 2020/8/7
+ */
+@Data
+public class RgvProtocol implements Cloneable{
+
+ private Integer RgvNo;
+
+ /**
+ * 1 = 鎵嬪姩妯″紡
+ * 2 = 鑷姩妯″紡
+ * 3 = 鐢佃剳妯″紡
+ */
+ public Short mode;
+
+ public RgvModeType modeType;
+
+ /**
+ * RGV褰撳墠鐘舵��
+ * 0锛氱┖闂诧紝鏃犱换鍔�
+ * 1锛氫綔涓氫腑
+ * 2锛氭姤璀�
+ */
+ public Short status;
+
+ /**
+ * 鐘舵�佹灇涓�
+ */
+ public RgvStatusType statusType;
+
+ /**
+ * 宸ヤ綅1浠诲姟鍙�
+ */
+ public Short taskNo1 = 0;
+
+ /**
+ * RGV宸ヤ綅1褰撳墠鐘舵��
+ * 0锛氱┖闂诧紝鏃犱换鍔�
+ * 11锛氬彇璐т腑
+ * 12锛氭斁璐т腑
+ * 10锛氫换鍔″畬鎴愮瓑寰匴CS纭
+ */
+ public Short status1;
+
+ /**
+ * 鐘舵�佹灇涓�
+ */
+ public RgvStatusType statusType1;
+
+ /**
+ * 宸ヤ綅1鏈夌墿
+ */
+ public Short loaded1;
+
+ /**
+ * RGV褰撳墠浣嶇疆
+ */
+ public Short RgvPos;
+
+ /**
+ * 璧拌鍦ㄥ畾浣�
+ * 0 = 鍦ㄥ畾浣�
+ * 1 = 涓嶅湪瀹氫綅
+ */
+ public Short walkPos;
+
+ ////////////////////// 宸ヤ綅2瀹氫箟 //////////////////////////////////////////////////
+// /**
+// * 宸ヤ綅2浠诲姟鍙�
+// */
+// public Short taskNo2 = 0;
+//
+// /**
+// * RGV宸ヤ綅2褰撳墠鐘舵��
+// * 0锛氱┖闂诧紝鏃犱换鍔�
+// * 11锛氬彇璐т腑
+// * 12锛氭斁璐т腑
+// * 10锛氫换鍔″畬鎴愮瓑寰匴CS纭
+// */
+// public Short status2;
+//
+// /**
+// * 鐘舵�佹灇涓�
+// */
+// public RgvStatusType statusType2;
+//
+// /**
+// * 宸ヤ綅2鏈夌墿
+// */
+// public Short loaded2;
+ ///////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * 寮傚父鐮�
+ */
+ public Short alarm;
+
+ /**
+ * 蹇冭烦鎸囦护 1-2姣忕鍒囨崲涓�娆�
+ */
+ public Short heart;
+
+ private Short temp1;
+
+ private Short temp2;
+
+ private Short temp3;
+
+ private Short temp4;
+
+ private Short temp5;
+
+ /**
+ * X琛岃蛋琛岄�熷害m/min
+ */
+ private Float xSpeed;
+
+ /**
+ * 鍫嗗灈鏈虹疮璁¤蛋琛岃窛绂籯m
+ */
+ public Float xDistance;
+
+ /**
+ * 鍫嗗灈鏈虹疮璁¤蛋琛屾椂闀縣
+ */
+ public Float xDuration;
+
+ public void setMode(Short mode) {
+ this.mode = mode;
+ this.modeType = RgvModeType.get(mode);
+ }
+
+ public void setMode(RgvModeType type) {
+ this.modeType = type;
+ this.mode = RgvModeType.get(type).id.shortValue();
+ }
+
+ public void setStatus(Short status){
+ this.status = status;
+ this.statusType = RgvStatusType.get(status);
+ }
+
+ public void setStatus(RgvStatusType type){
+ this.statusType = type;
+ this.status = RgvStatusType.get(type).id.shortValue();
+ }
+
+ public void setStatus1(Short status1){
+ this.status1 = status1;
+ this.statusType1 = RgvStatusType.get(status1);
+ }
+
+ public void setStatus1(RgvStatusType type1){
+ this.statusType1 = type1;
+ this.status1 = RgvStatusType.get(type1).id.shortValue();
+ }
+
+// public void setStatus2(Short status2){
+// this.status2 = status2;
+// this.statusType2 = RgvStatusType.get(status2);
+// }
+//
+// public void setStatus2(RgvStatusType type2){
+// this.statusType2 = type2;
+// this.status2 = RgvStatusType.get(type2).id.shortValue();
+// }
+
+ /**
+ * 鏈�杩戜竴娆″叆鍑哄簱绫诲瀷
+ * I:鍏ュ簱
+ * O:鍑哄簱
+ */
+ private String lastIo = "I";
+
+
+ public BasRgv toSqlModel(BasRgv basRgv){
+ if (alarm!=null) {
+ basRgv.setRgvErr(alarm.longValue());
+ }
+ basRgv.setWrkNo1(taskNo1.intValue());
+// basRgv.setWrkNo2(taskNo2.intValue());
+ return basRgv;
+ }
+
+ public void setxSpeed(Short xSpeed) {
+ this.xSpeed = Float.valueOf(xSpeed);
+ }
+
+ public void setxDistance(Short xDistance) {
+ this.xDistance = Float.valueOf(xDistance);
+ }
+
+ public void setxDuration(Short xDuration) {
+ this.xDuration = Float.valueOf(xDuration);
+ }
+
+ public Integer getRgvPosI(){
+ //闇�瑕佹牴鎹幇鍦烘敼閫� 鏍规嵁璇诲埌鐨勫�艰幏鍙栧搴旂珯鐐逛綅缃�
+ Map<Short,Integer> map = new HashMap<>();
+ map.put((short) 1,100);map.put((short) 2,101);
+ map.put((short) 3,106);map.put((short) 4,107);
+ map.put((short) 5,112);map.put((short) 6,113);
+ map.put((short) 7,119);map.put((short) 8,124);
+ map.put((short) 9,149);map.put((short) 10,153);
+ map.put((short) 11,157);map.put((short) 12,161);
+ if (RgvPos==null) return 0;
+
+ return map.get(RgvPos);
+ }
+
+ @Override
+ public RgvProtocol clone() {
+ try {
+ return (RgvProtocol) super.clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+}
diff --git a/src/main/java/com/zy/core/properties/SlaveProperties.java b/src/main/java/com/zy/core/properties/SlaveProperties.java
index b2e19a4..866ea67 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,5 @@
private List<Slave> car = new ArrayList<>();
+ private List<RgvSlave> rgv = new ArrayList<>();
}
diff --git a/src/main/java/com/zy/core/thread/SiemensRgvThread.java b/src/main/java/com/zy/core/thread/SiemensRgvThread.java
new file mode 100644
index 0000000..f77c5a8
--- /dev/null
+++ b/src/main/java/com/zy/core/thread/SiemensRgvThread.java
@@ -0,0 +1,489 @@
+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.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;
+
+@Data
+@Slf4j
+public class SiemensRgvThread implements Runnable, RgvThread {
+
+ private SiemensS7Net siemensNet;
+ private RgvSlave slave;
+ private RgvProtocol rgvProtocol;
+ /**
+ * 宸ヤ綅1澶嶄綅淇″彿
+ */
+ private boolean resetFlag1 = false;
+ /**
+ * 宸ヤ綅2澶嶄綅淇″彿
+ */
+ private boolean resetFlag2 = false;
+
+ //閿佸畾鏍囪
+ private boolean PakMk = true;
+
+ public SiemensRgvThread(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;
+// // 宸ヤ綅1銆�2鍐欏叆鏁版嵁
+// case 2:
+// write((RgvCommand) task.getData());
+// break;
+ //宸ヤ綅1鍐欏叆鏁版嵁
+ case 4:
+ write1((RgvCommand) task.getData());
+ break;
+// //宸ヤ綅2鍐欏叆鏁版嵁
+// case 5:
+// write2((RgvCommand) task.getData());
+// break;
+ // 澶嶄綅
+ case 3:
+ RgvCommand command = (RgvCommand) task.getData();
+ if (null == command) {
+ command = new RgvCommand();
+ }
+ command.setRgvNo(slave.getId()); // RGV缂栧彿
+ command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+ command.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡
+ command.setSourceStaNo1((short)0); // 婧愮珯
+ command.setDestinationStaNo1((short)0); // 鐩爣绔�
+ command.setCommand((short)0);
+ write1(command);
+ break;
+ // 鍥炲師鐐� 閬胯
+ case 9:
+ RgvCommand commandAvoidanceXY = (RgvCommand) task.getData();
+ if (null == commandAvoidanceXY) {
+ commandAvoidanceXY = new RgvCommand();
+ }
+ commandAvoidanceXY.setRgvNo(slave.getId()); // RGV缂栧彿
+ commandAvoidanceXY.setTaskNo1((short) 9999); // 宸ヤ綔鍙�
+ commandAvoidanceXY.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣�
+ commandAvoidanceXY.setTaskMode1(RgvTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡
+ commandAvoidanceXY.setSourceStaNo1((short)0); // 婧愮珯
+ commandAvoidanceXY.setDestinationStaNo1((short)0); // 鐩爣绔�
+// commandAvoidanceXY.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+// commandAvoidanceXY.setAckFinish2((short) 1); // 浠诲姟瀹屾垚纭浣�
+// commandAvoidanceXY.setTaskMode2(RgvTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡
+// commandAvoidanceXY.setSourceStaNo2((short)0); // 婧愮珯
+// commandAvoidanceXY.setDestinationStaNo2((short)0); // 鐩爣绔�
+ commandAvoidanceXY.setCommand((short)0);
+ write(commandAvoidanceXY);
+ break;
+ default:
+ break;
+ }
+ Thread.sleep(500);
+ } catch (Exception e) {
+// e.printStackTrace();
+ }
+
+ }
+ }
+
+ /**
+ * 鍒濆鍖朢GV鐘舵��
+ */
+ private void initRgv() {
+ if (null == rgvProtocol) {
+ rgvProtocol = new RgvProtocol();
+ }
+ rgvProtocol.setMode((short) -1);
+ rgvProtocol.setStatus((short)-1);
+ rgvProtocol.setTaskNo1((short)0);
+ rgvProtocol.setStatus1((short)-1);
+ rgvProtocol.setLoaded1((short)0);
+ rgvProtocol.setWalkPos((short)0);
+ rgvProtocol.setRgvPos((short)0);
+// rgvProtocol.setTaskNo2((short)0);
+// rgvProtocol.setStatus2((short)-1);
+// rgvProtocol.setLoaded2((short)0);
+ rgvProtocol.setAlarm((short)0);
+ rgvProtocol.setxSpeed((short) 0);
+ rgvProtocol.setxDistance((short) 0);
+ rgvProtocol.setxDuration((short) 0);
+ }
+
+ @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.RGV.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.RGV.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();
+ }
+// siemensNet.ConnectClose();
+ return result;
+ }
+
+ /**
+ * 璇诲彇鐘舵��
+ */
+ private void readStatus(){
+ try {
+ OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 30);
+ if (result.IsSuccess) {
+ if (null == rgvProtocol || rgvProtocol.getRgvNo() == null) {
+ rgvProtocol = new RgvProtocol();
+ rgvProtocol.setRgvNo(slave.getId());
+ }
+ rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
+ rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 2));
+ rgvProtocol.setTaskNo1(siemensNet.getByteTransform().TransInt16(result.Content, 4));
+ rgvProtocol.setStatus1(siemensNet.getByteTransform().TransInt16(result.Content, 6));
+ rgvProtocol.setLoaded1(siemensNet.getByteTransform().TransInt16(result.Content, 8));
+ rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));
+ rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
+ rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 14));
+// rgvProtocol.setStatus2(siemensNet.getByteTransform().TransInt16(result.Content, 16));
+ rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 18));
+// rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20));
+ rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 22));
+// rgvProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 24));
+ rgvProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 26));
+// rgvProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 28));
+// rgvProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 30));
+// rgvProtocol.setTemp5(siemensNet.getByteTransform().TransInt16(result.Content, 32));
+// rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28));
+// rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
+// rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
+
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId()));
+
+ // 宸ヤ綅1澶嶄綅淇″彿
+ if (rgvProtocol.getStatusType1().equals(RgvStatusType.WAITING)
+ || rgvProtocol.getStatusType1().equals(RgvStatusType.FETCHWAITING)) {
+ if (resetFlag1) {
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setAckFinish1((short)1);
+ if (write(rgvCommand)) {
+ resetFlag1 = false;
+ }
+ }
+ }
+
+ // 宸ヤ綅2澶嶄綅淇″彿
+// if (rgvProtocol.getStatusType2().equals(RgvStatusType.WAITING)
+// || rgvProtocol.getStatusType2().equals(RgvStatusType.FETCHWAITING)) {
+// if (resetFlag2) {
+// RgvCommand rgvCommand = new RgvCommand();
+// rgvCommand.setAckFinish2((short)1);
+// if (write(rgvCommand)) {
+// resetFlag2 = false;
+// }
+// }
+// }
+
+ try {
+ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+ BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
+ BasRgv basRgv = new BasRgv();
+ basRgv.setRgvNo(slave.getId());
+ basRgv.setRgvSts((int)rgvProtocol.getMode());
+ if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))){
+ log.error("RGV plc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ }
+ } catch (Exception ignore){
+ System.out.println(ignore);
+ }
+
+ } else {
+ initRgv();
+ OutputQueue.RGV.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.RGV.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();
+ }
+ }
+
+ /**
+ * 宸ヤ綅1銆�2鍚屾椂鍐欏叆鏁版嵁
+ */
+ private boolean write(RgvCommand command) throws InterruptedException {
+ if (null == command) {
+ log.error("RGV鍐欏叆鍛戒护涓虹┖");
+ return false;
+ }
+// convertRow(command);
+ command.setRgvNo(slave.getId());
+ short[] array = new short[11];
+ array[0] = command.getAckFinish1();
+ array[1] = command.getTaskNo1();
+ array[2] = command.getTaskMode1();
+ array[3] = command.getSourceStaNo1();
+ array[4] = command.getDestinationStaNo1();
+// array[0] = command.getAckFinish1();
+// array[1] = command.getTaskNo1();
+// array[2] = command.getTaskMode1();
+// array[3] = command.getSourceStaNo1();
+// array[4] = command.getDestinationStaNo1();
+// array[5] = command.getAckFinish2();
+// array[6] = command.getTaskNo2();
+// array[7] = command.getTaskMode2();
+// array[8] = command.getSourceStaNo2();
+// array[9] = command.getDestinationStaNo2();
+// array[10] = command.getCommand();
+ OperateResult result = siemensNet.Write("DB100.0", array);
+
+// if (command.getAckFinish1() == 0 && command.getAckFinish2() == 0) {
+// short commandFinish = 3; //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆
+// Thread.sleep(100L);
+// result = siemensNet.Write("DB100.20", commandFinish);
+// }
+
+
+
+ if (result != null && result.IsSuccess) {
+ Thread.sleep(200);
+ this.readStatus();
+ log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
+ return true;
+ } else {
+ OutputQueue.RGV.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());
+ return false;
+ }
+ }
+
+ /**
+ * 宸ヤ綅1鍐欏叆鏁版嵁
+ */
+ private boolean write1(RgvCommand command) throws InterruptedException {
+ if (null == command) {
+ log.error("RGV鍐欏叆鍛戒护涓虹┖");
+ return false;
+ }
+
+// siemensNet.Write("DB100.20", command.getCommand());
+
+ command.setRgvNo(slave.getId());
+ short[] array = new short[5];
+ array[0] = command.getAckFinish1();
+ array[1] = command.getTaskNo1();
+ array[2] = command.getTaskMode1();
+ array[3] = command.getSourceStaNo1();
+ array[4] = command.getDestinationStaNo1();
+ siemensNet.Write("DB100.10", command.getCommand());
+
+ OperateResult result = siemensNet.Write("DB100.0", array);
+
+ if (!result.IsSuccess){
+ log.error("鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}],{}",slave.getId(),JSON.toJSON(command));
+ MessageQueue.offer(SlaveType.Rgv,slave.getId(),new Task(4,command));
+ Thread.sleep(100);
+ readStatus();
+ return false;
+ }
+
+ //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
+ Thread.sleep(400);
+ try {
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 12);
+ if (resultRead.IsSuccess){
+ RgvCommand one = new RgvCommand();
+// one.setAckFinish1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 0));
+ one.setTaskNo1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
+ one.setTaskMode1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
+ one.setSourceStaNo1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
+ one.setDestinationStaNo1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
+ if (
+ !command.getTaskNo1().equals(one.getTaskNo1()) ||
+ !command.getTaskMode1().equals(one.getTaskMode1()) ||
+ !command.getSourceStaNo1().equals(one.getSourceStaNo1()) ||
+ !command.getDestinationStaNo1().equals(one.getDestinationStaNo1())
+ ){
+ try{
+ log.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+ }catch (Exception e){
+ try{
+ log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead));
+ }catch (Exception e1){
+ log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+ }
+ }
+ log.error("Rgv鍛戒护鍥炶澶辫触鍚庯紝閲嶆柊娣诲姞浠诲姟鍒伴槦鍒� ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+ MessageQueue.offer(SlaveType.Rgv, slave.getId(), new Task(4, command));
+ Thread.sleep(100);
+ readStatus();
+ return false;
+ }else {
+ log.info("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+ }
+ }
+ }catch (Exception e){
+ log.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�");
+ }
+
+ if (command.getAckFinish1() == 0) {
+ if (result.IsSuccess) {
+ Thread.sleep(300);
+ //浠诲姟涓嬪彂娆℃暟
+ int writeCount2 = 0;
+
+ do {
+ writeCount2++;
+ short commandFinish = (short) 1;
+ result = siemensNet.Write("DB100.10", commandFinish);
+ if(result.IsSuccess){
+ //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.10", (short) 2);
+ if (resultRead.IsSuccess) {
+ commandFinish=siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
+ if (commandFinish != 1){
+ log.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+ }else{
+ //浠诲姟鍛戒护鍐欏叆鎴愬姛
+ log.info("RGV浠诲姟纭浣�"+commandFinish+"鍥炶鎴愬姛锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+ break;
+ }
+ }else {
+ log.error("RGV浠诲姟纭浣�"+commandFinish+"鍥炶澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+ }
+ } else {
+ log.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+ }
+ }while (writeCount2<5);
+ }
+ }
+
+// if (command.getAckFinish1() == 0) {
+// short commandFinish = 1; //宸ヤ綅1浠诲姟鍐欏叆
+// Thread.sleep(200);
+// result = siemensNet.Write("DB100.10", commandFinish);
+// }
+
+
+
+ if (result != null && result.IsSuccess) {
+ Thread.sleep(200);
+ this.readStatus();
+ log.info("RGV 宸ヤ綅1鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 宸ヤ綅1鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
+ return true;
+ } else {
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc宸ヤ綅1鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+ log.error("鍐欏叆RGV plc宸ヤ綅1鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ return false;
+ }
+ }
+
+ /**
+ * 宸ヤ綅2鍐欏叆鏁版嵁
+ */
+ private boolean write2(RgvCommand command) throws InterruptedException {
+ if (null == command) {
+ log.error("RGV鍐欏叆鍛戒护涓虹┖");
+ return false;
+ }
+
+ command.setRgvNo(slave.getId());
+ short[] array = new short[6];
+ array[0] = command.getAckFinish2();
+ array[1] = command.getTaskNo2();
+ array[2] = command.getTaskMode2();
+ array[3] = command.getSourceStaNo2();
+ array[4] = command.getDestinationStaNo2();
+ array[5] = command.getCommand();
+
+ OperateResult result = siemensNet.Write("DB100.10", array);
+
+ if (command.getAckFinish2() == 0) {
+ short commandFinish = 2; //宸ヤ綅2浠诲姟鍐欏叆
+ Thread.sleep(100L);
+ result = siemensNet.Write("DB100.20", commandFinish);
+ }
+
+
+
+ if (result != null && result.IsSuccess) {
+ Thread.sleep(200);
+ this.readStatus();
+ log.info("RGV 宸ヤ綅2鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 宸ヤ綅2鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
+ return true;
+ } else {
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc宸ヤ綅2鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+ log.error("鍐欏叆RGV plc宸ヤ綅2鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ return false;
+ }
+ }
+
+ @Override
+ public void close() {
+ siemensNet.ConnectClose();
+ }
+
+ /******************************************************************************************/
+ /**************************************** 娴嬭瘯涓撶敤 *****************************************/
+ /*****************************************************************************************/
+ public static void main(String[] args) throws InterruptedException {
+ RgvSlave slave = new RgvSlave();
+ slave.setId(1);
+ slave.setIp("192.168.6.9");
+ slave.setRack(0);
+ slave.setSlot(0);
+ SiemensRgvThread rgvThread = new SiemensRgvThread(slave);
+ rgvThread.connect();
+ rgvThread.readStatus();
+ System.out.println(JSON.toJSONString(rgvThread.rgvProtocol));
+ Thread.sleep(3000L);
+
+ }
+}
diff --git a/src/main/resources/mapper/BasRgvErrMapper.xml b/src/main/resources/mapper/BasRgvErrMapper.xml
new file mode 100644
index 0000000..c3eb284
--- /dev/null
+++ b/src/main/resources/mapper/BasRgvErrMapper.xml
@@ -0,0 +1,16 @@
+<?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.BasRgvErrMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasRgvErr">
+ <result column="error_code" property="errorCode" />
+ <result column="err_name" property="errName" />
+ <result column="modi_user" property="modiUser" />
+ <result column="modi_time" property="modiTime" />
+ <result column="appe_user" property="appeUser" />
+ <result column="appe_time" property="appeTime" />
+
+ </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/BasRgvMapper.xml b/src/main/resources/mapper/BasRgvMapper.xml
new file mode 100644
index 0000000..a826fab
--- /dev/null
+++ b/src/main/resources/mapper/BasRgvMapper.xml
@@ -0,0 +1,24 @@
+<?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="in_enable" property="inEnable" />
+ <result column="out_enable" property="outEnable" />
+ <result column="rgv_sts" property="rgvSts" />
+ <result column="wrk_no1" property="wrkNo1" />
+ <result column="wrk_no2" property="wrkNo2" />
+ <result column="rgv_err" property="rgvErr" />
+ <result column="pak_mk" property="pakMk" />
+ <result column="status" property="status" />
+ <result column="create_by" property="createBy" />
+ <result column="create_time" property="createTime" />
+ <result column="update_by" property="updateBy" />
+ <result column="update_time" property="updateTime" />
+ <result column="memo" property="memo" />
+
+ </resultMap>
+
+</mapper>
--
Gitblit v1.9.1