From 82374fe4b32d58956810f445b7889f1a370f1ab9 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期一, 27 十月 2025 15:26:13 +0800
Subject: [PATCH] #配置信号
---
 src/main/java/com/zy/asrs/service/impl/WrkMastStaServiceImpl.java     |    5 
 src/main/java/com/zy/asrs/entity/BasCrnErrorLog.java                  |  465 +++++++
 src/main/webapp/views/basRgvErrorLog/basRgvErrorLog.html              |  320 +++++
 src/main/java/basRgvErrorLog.sql                                      |   18 
 src/main/java/com/zy/asrs/service/WrkMastStaService.java              |    1 
 src/main/java/com/zy/core/model/protocol/CrnProtocol.java             |  113 +
 src/main/java/com/zy/core/model/protocol/StaProtocol.java             |   92 +
 src/main/java/basCrnErrorLog.sql                                      |   18 
 src/main/java/com/zy/asrs/entity/BasDevpErrorLog.java                 |  212 +++
 src/main/resources/mapper/BasDevpErrorLogMapper.xml                   |   22 
 src/main/java/com/zy/asrs/controller/BasCrnErrorLogController.java    |  168 ++
 src/main/java/com/zy/asrs/entity/param/AgvTaskAssignmentParam.java    |    3 
 src/main/webapp/static/js/basDevpErrorLog/basDevpErrorLog.js          |   25 
 src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java                |    1 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java               |   69 +
 src/main/webapp/static/js/basRgvErrorLog/basRgvErrorLog.js            |  289 ++++
 src/main/java/com/zy/asrs/service/impl/BasCrnErrorLogServiceImpl.java |   12 
 src/main/java/com/zy/asrs/controller/BasRgvErrorLogController.java    |  168 ++
 src/main/java/com/zy/asrs/service/BasCrnErrorLogService.java          |    8 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java           |   73 
 src/main/java/com/zy/asrs/mapper/BasRgvErrorLogMapper.java            |   12 
 src/main/resources/mapper/BasCrnErrorLogMapper.xml                    |   58 
 src/main/java/com/zy/common/CodeBuilder.java                          |    2 
 src/main/resources/mapper/WrkMastStaMapper.xml                        |    6 
 src/main/java/com/zy/asrs/controller/BasDevpErrorLogController.java   |  106 +
 src/main/webapp/static/js/basCrnErrorLog/basCrnErrorLog.js            |  297 ++++
 src/main/java/com/zy/asrs/entity/BasRgvErrorLog.java                  |  392 ++++++
 src/main/java/com/zy/core/thread/RgvThread.java                       |   71 
 src/main/java/com/zy/core/thread/SiemensCrnThread.java                |   74 +
 src/main/java/com/zy/asrs/service/BasRgvErrorLogService.java          |    8 
 src/main/webapp/views/basDevpErrorLog/basDevpErrorLog.html            |  136 ++
 src/main/java/com/zy/asrs/service/impl/BasRgvErrorLogServiceImpl.java |   12 
 src/main/resources/mapper/BasRgvErrorLogMapper.xml                    |   50 
 src/main/java/com/zy/asrs/mapper/BasCrnErrorLogMapper.java            |   12 
 src/main/java/com/zy/core/model/protocol/RgvProtocol.java             |   90 +
 src/main/webapp/views/basCrnErrorLog/basCrnErrorLog.html              |  368 +++++
 36 files changed, 3,675 insertions(+), 101 deletions(-)
diff --git a/src/main/java/basCrnErrorLog.sql b/src/main/java/basCrnErrorLog.sql
new file mode 100644
index 0000000..a91af9b
--- /dev/null
+++ b/src/main/java/basCrnErrorLog.sql
@@ -0,0 +1,18 @@
+-- save basCrnErrorLog record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basCrnErrorLog/basCrnErrorLog.html', 'basCrnErrorLog绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basCrnErrorLog#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basCrnErrorLog#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basCrnErrorLog#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basCrnErrorLog#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basCrnErrorLog#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basCrnErrorLog/basCrnErrorLog.html', N'basCrnErrorLog绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basCrnErrorLog#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basCrnErrorLog#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basCrnErrorLog#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basCrnErrorLog#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basCrnErrorLog#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/src/main/java/basRgvErrorLog.sql b/src/main/java/basRgvErrorLog.sql
new file mode 100644
index 0000000..63911c4
--- /dev/null
+++ b/src/main/java/basRgvErrorLog.sql
@@ -0,0 +1,18 @@
+-- save basRgvErrorLog record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basRgvErrorLog/basRgvErrorLog.html', 'basRgvErrorLog绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basRgvErrorLog#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basRgvErrorLog#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basRgvErrorLog#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basRgvErrorLog#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basRgvErrorLog#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basRgvErrorLog/basRgvErrorLog.html', N'basRgvErrorLog绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basRgvErrorLog#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basRgvErrorLog#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basRgvErrorLog#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basRgvErrorLog#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basRgvErrorLog#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/src/main/java/com/zy/asrs/controller/BasCrnErrorLogController.java b/src/main/java/com/zy/asrs/controller/BasCrnErrorLogController.java
new file mode 100644
index 0000000..fbc1f6a
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasCrnErrorLogController.java
@@ -0,0 +1,168 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotations.TableField;
+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.BasCrnErrorLog;
+import com.zy.asrs.service.BasCrnErrorLogService;
+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.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.*;
+
+@RestController
+public class BasCrnErrorLogController extends BaseController {
+    protected static final String RANGE_TIME_LINK = " - ";
+
+    @Autowired
+    private BasCrnErrorLogService basCrnErrorLogService;
+
+    @RequestMapping(value = "/basCrnErrorLog/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(basCrnErrorLogService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/basCrnErrorLog/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(required = false)String condition,
+                  @RequestParam Map<String, Object> param){
+        EntityWrapper<BasCrnErrorLog> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(BasCrnErrorLog.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(basCrnErrorLogService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+    /**
+     * 鍏ㄥ瓧娈垫ā绯婃悳绱�
+     * @param cls 妯″瀷绫�
+     * @param set 鎺掗櫎瀛楁闆嗗悎
+     * @param condition 鎼滅储鍐呭
+     */
+    protected <T> void allLike(Class<T> cls, Set<String> set, EntityWrapper<T> wrapper, String condition){
+        if (Cools.isEmpty(condition)) {
+            return;
+        }
+        List<String> columns = new ArrayList<>();
+        for (Field field :Cools.getAllFields(cls)){
+            if (Modifier.isFinal(field.getModifiers())
+                    || Modifier.isStatic(field.getModifiers())
+                    || Modifier.isTransient(field.getModifiers())){
+                continue;
+            }
+            String column = null;
+            if (field.isAnnotationPresent(TableField.class)) {
+                column = field.getAnnotation(TableField.class).value();
+            }
+            if (Cools.isEmpty(column)) {
+                column = field.getName();
+            }
+            if (!set.contains(column)) {
+                columns.add(column);
+            }
+        }
+        if (columns.isEmpty()) {
+            return;
+        }
+        for (int i=0;i<columns.size();i++){
+            if (i==0){
+                wrapper.andNew();
+            } else {
+                wrapper.or();
+            }
+            wrapper.like(columns.get(i), condition);
+        }
+    }
+    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 = "/basCrnErrorLog/add/auth")
+    @ManagerAuth
+    public R add(BasCrnErrorLog basCrnErrorLog) {
+        basCrnErrorLogService.insert(basCrnErrorLog);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/basCrnErrorLog/update/auth")
+	@ManagerAuth
+    public R update(BasCrnErrorLog basCrnErrorLog){
+        if (Cools.isEmpty(basCrnErrorLog) || null==basCrnErrorLog.getId()){
+            return R.error();
+        }
+        basCrnErrorLogService.updateById(basCrnErrorLog);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basCrnErrorLog/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            basCrnErrorLogService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basCrnErrorLog/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<BasCrnErrorLog> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("basCrnErrorLog"));
+        convert(map, wrapper);
+        List<BasCrnErrorLog> list = basCrnErrorLogService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/basCrnErrorLogQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<BasCrnErrorLog> wrapper = new EntityWrapper<>();
+        wrapper.like("crn_no", condition);
+        Page<BasCrnErrorLog> page = basCrnErrorLogService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (BasCrnErrorLog basCrnErrorLog : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", basCrnErrorLog.getId());
+            map.put("value", basCrnErrorLog.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/basCrnErrorLog/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<BasCrnErrorLog> wrapper = new EntityWrapper<BasCrnErrorLog>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != basCrnErrorLogService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(BasCrnErrorLog.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/BasDevpErrorLogController.java b/src/main/java/com/zy/asrs/controller/BasDevpErrorLogController.java
index 8506f54..c35444a 100644
--- a/src/main/java/com/zy/asrs/controller/BasDevpErrorLogController.java
+++ b/src/main/java/com/zy/asrs/controller/BasDevpErrorLogController.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotations.TableField;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
@@ -16,10 +17,13 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
 import java.util.*;
 
 @RestController
 public class BasDevpErrorLogController extends BaseController {
+    protected static final String RANGE_TIME_LINK = " - ";
 
     @Autowired
     private BasDevpErrorLogService basDevpErrorLogService;
@@ -30,7 +34,74 @@
         return R.ok(basDevpErrorLogService.selectById(String.valueOf(id)));
     }
 
+    @RequestMapping(value = "/basDevpErrorLog/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(required = false)String condition,
+                  @RequestParam Map<String, Object> param){
+        EntityWrapper<BasDevpErrorLog> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(BasDevpErrorLog.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(basDevpErrorLogService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+    /**
+     * 鍏ㄥ瓧娈垫ā绯婃悳绱�
+     * @param cls 妯″瀷绫�
+     * @param set 鎺掗櫎瀛楁闆嗗悎
+     * @param condition 鎼滅储鍐呭
+     */
+    protected <T> void allLike(Class<T> cls, Set<String> set, EntityWrapper<T> wrapper, String condition){
+        if (Cools.isEmpty(condition)) {
+            return;
+        }
+        List<String> columns = new ArrayList<>();
+        for (Field field :Cools.getAllFields(cls)){
+            if (Modifier.isFinal(field.getModifiers())
+                    || Modifier.isStatic(field.getModifiers())
+                    || Modifier.isTransient(field.getModifiers())){
+                continue;
+            }
+            String column = null;
+            if (field.isAnnotationPresent(TableField.class)) {
+                column = field.getAnnotation(TableField.class).value();
+            }
+            if (Cools.isEmpty(column)) {
+                column = field.getName();
+            }
+            if (!set.contains(column)) {
+                columns.add(column);
+            }
+        }
+        if (columns.isEmpty()) {
+            return;
+        }
+        for (int i=0;i<columns.size();i++){
+            if (i==0){
+                wrapper.andNew();
+            } else {
+                wrapper.or();
+            }
+            wrapper.like(columns.get(i), condition);
+        }
+    }
 
+    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 = "/basDevpErrorLog/add/auth")
     @ManagerAuth
@@ -39,6 +110,15 @@
         return R.ok();
     }
 
+	@RequestMapping(value = "/basDevpErrorLog/update/auth")
+	@ManagerAuth
+    public R update(BasDevpErrorLog basDevpErrorLog){
+        if (Cools.isEmpty(basDevpErrorLog) || null==basDevpErrorLog.getId()){
+            return R.error();
+        }
+        basDevpErrorLogService.updateById(basDevpErrorLog);
+        return R.ok();
+    }
 
     @RequestMapping(value = "/basDevpErrorLog/delete/auth")
     @ManagerAuth
@@ -49,6 +129,32 @@
         return R.ok();
     }
 
+    @RequestMapping(value = "/basDevpErrorLog/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<BasDevpErrorLog> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("basDevpErrorLog"));
+        convert(map, wrapper);
+        List<BasDevpErrorLog> list = basDevpErrorLogService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/basDevpErrorLogQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<BasDevpErrorLog> wrapper = new EntityWrapper<>();
+        wrapper.like("dev_no", condition);
+        Page<BasDevpErrorLog> page = basDevpErrorLogService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (BasDevpErrorLog basDevpErrorLog : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", basDevpErrorLog.getId());
+            map.put("value", basDevpErrorLog.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
 
     @RequestMapping(value = "/basDevpErrorLog/check/column/auth")
     @ManagerAuth
diff --git a/src/main/java/com/zy/asrs/controller/BasRgvErrorLogController.java b/src/main/java/com/zy/asrs/controller/BasRgvErrorLogController.java
new file mode 100644
index 0000000..a1f42e0
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasRgvErrorLogController.java
@@ -0,0 +1,168 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotations.TableField;
+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.BasRgvErrorLog;
+import com.zy.asrs.service.BasRgvErrorLogService;
+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.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.*;
+
+@RestController
+public class BasRgvErrorLogController extends BaseController {
+    protected static final String RANGE_TIME_LINK = " - ";
+
+    @Autowired
+    private BasRgvErrorLogService basRgvErrorLogService;
+
+    @RequestMapping(value = "/basRgvErrorLog/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(basRgvErrorLogService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/basRgvErrorLog/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(required = false)String condition,
+                  @RequestParam Map<String, Object> param){
+        EntityWrapper<BasRgvErrorLog> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(BasRgvErrorLog.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(basRgvErrorLogService.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);
+            }
+        }
+    }
+    /**
+     * 鍏ㄥ瓧娈垫ā绯婃悳绱�
+     * @param cls 妯″瀷绫�
+     * @param set 鎺掗櫎瀛楁闆嗗悎
+     * @param condition 鎼滅储鍐呭
+     */
+    protected <T> void allLike(Class<T> cls, Set<String> set, EntityWrapper<T> wrapper, String condition){
+        if (Cools.isEmpty(condition)) {
+            return;
+        }
+        List<String> columns = new ArrayList<>();
+        for (Field field :Cools.getAllFields(cls)){
+            if (Modifier.isFinal(field.getModifiers())
+                    || Modifier.isStatic(field.getModifiers())
+                    || Modifier.isTransient(field.getModifiers())){
+                continue;
+            }
+            String column = null;
+            if (field.isAnnotationPresent(TableField.class)) {
+                column = field.getAnnotation(TableField.class).value();
+            }
+            if (Cools.isEmpty(column)) {
+                column = field.getName();
+            }
+            if (!set.contains(column)) {
+                columns.add(column);
+            }
+        }
+        if (columns.isEmpty()) {
+            return;
+        }
+        for (int i=0;i<columns.size();i++){
+            if (i==0){
+                wrapper.andNew();
+            } else {
+                wrapper.or();
+            }
+            wrapper.like(columns.get(i), condition);
+        }
+    }
+    @RequestMapping(value = "/basRgvErrorLog/add/auth")
+    @ManagerAuth
+    public R add(BasRgvErrorLog basRgvErrorLog) {
+        basRgvErrorLogService.insert(basRgvErrorLog);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/basRgvErrorLog/update/auth")
+	@ManagerAuth
+    public R update(BasRgvErrorLog basRgvErrorLog){
+        if (Cools.isEmpty(basRgvErrorLog) || null==basRgvErrorLog.getId()){
+            return R.error();
+        }
+        basRgvErrorLogService.updateById(basRgvErrorLog);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basRgvErrorLog/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            basRgvErrorLogService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/basRgvErrorLog/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<BasRgvErrorLog> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("basRgvErrorLog"));
+        convert(map, wrapper);
+        List<BasRgvErrorLog> list = basRgvErrorLogService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/basRgvErrorLogQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<BasRgvErrorLog> wrapper = new EntityWrapper<>();
+        wrapper.like("rgv_no", condition);
+        Page<BasRgvErrorLog> page = basRgvErrorLogService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (BasRgvErrorLog basRgvErrorLog : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", basRgvErrorLog.getId());
+            map.put("value", basRgvErrorLog.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/basRgvErrorLog/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<BasRgvErrorLog> wrapper = new EntityWrapper<BasRgvErrorLog>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != basRgvErrorLogService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(BasRgvErrorLog.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/BasCrnErrorLog.java b/src/main/java/com/zy/asrs/entity/BasCrnErrorLog.java
new file mode 100644
index 0000000..df8391c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasCrnErrorLog.java
@@ -0,0 +1,465 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("asr_bas_crn_error_log")
+public class BasCrnErrorLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 缂栧彿
+     */
+    @ApiModelProperty(value= "缂栧彿")
+    @TableField("crn_no")
+    private Integer crnNo;
+
+    /**
+     * 琛岃蛋鍙橀鍣ㄦ晠闅�
+     */
+    @ApiModelProperty(value= "琛岃蛋鍙橀鍣ㄦ晠闅�")
+    @TableField("ib_drive_fault")
+    private String ibDriveFault;
+
+    /**
+     * 鎻愬叡鍙橀鍣ㄦ晠闅�
+     */
+    @ApiModelProperty(value= "鎻愬叡鍙橀鍣ㄦ晠闅�")
+    @TableField("ib_supply_fault")
+    private String ibSupplyFault;
+
+    /**
+     * 璐у弶鍙橀鍣ㄦ晠闅�
+     */
+    @ApiModelProperty(value= "璐у弶鍙橀鍣ㄦ晠闅�")
+    @TableField("ib_fork_drive_fault")
+    private String ibForkDriveFault;
+
+    /**
+     * 琛岃蛋鏂矾鍣ㄦ晠闅�
+     */
+    @ApiModelProperty(value= "琛岃蛋鏂矾鍣ㄦ晠闅�")
+    @TableField("ib_drive_circuit_fault")
+    private String ibDriveCircuitFault;
+
+    /**
+     * 鎻愬崌鏂矾鍣ㄦ晠闅�
+     */
+    @ApiModelProperty(value= "鎻愬崌鏂矾鍣ㄦ晠闅�")
+    @TableField("ib_lift_circuit_fault")
+    private String ibLiftCircuitFault;
+
+    /**
+     * 璐у弶鏂矾鍣ㄦ晠闅�
+     */
+    @ApiModelProperty(value= "璐у弶鏂矾鍣ㄦ晠闅�")
+    @TableField("ib_fork_circuit_fault")
+    private String ibForkCircuitFault;
+
+    /**
+     * 鍓嶈繘闄愪綅
+     */
+    @ApiModelProperty(value= "鍓嶈繘闄愪綅")
+    @TableField("ib_forward_limit")
+    private String ibForwardLimit;
+
+    /**
+     * 鍚庨��闄愪綅
+     */
+    @ApiModelProperty(value= "鍚庨��闄愪綅")
+    @TableField("ib_reverse_limit")
+    private String ibReverseLimit;
+
+    /**
+     * 琛岃蛋鍘熺偣
+     */
+    @ApiModelProperty(value= "琛岃蛋鍘熺偣")
+    @TableField("ib_drive_start")
+    private String ibDriveStart;
+
+    /**
+     * 鍓嶈繘寮哄埗浣庨��
+     */
+    @ApiModelProperty(value= "鍓嶈繘寮哄埗浣庨��")
+    @TableField("ib_forward_brake_speed")
+    private String ibForwardBrakeSpeed;
+
+    /**
+     * 鍚庨��寮哄埗浣庨��
+     */
+    @ApiModelProperty(value= "鍚庨��寮哄埗浣庨��")
+    @TableField("ib_reverse_brake_speed")
+    private String ibReverseBrakeSpeed;
+
+    /**
+     * 涓婂崌闄愪綅
+     */
+    @ApiModelProperty(value= "涓婂崌闄愪綅")
+    @TableField("ib_up_limit")
+    private String ibUpLimit;
+
+    /**
+     * 涓嬮檺闄愪綅
+     */
+    @ApiModelProperty(value= "涓嬮檺闄愪綅")
+    @TableField("ib_down_limit")
+    private String ibDownLimit;
+
+    /**
+     * 鎻愬崌鍘熺偣
+     */
+    @ApiModelProperty(value= "鎻愬崌鍘熺偣")
+    @TableField("ib_up_origin")
+    private String ibUpOrigin;
+
+    /**
+     * 涓婂崌寮哄埗浣庨��
+     */
+    @ApiModelProperty(value= "涓婂崌寮哄埗浣庨��")
+    @TableField("ib_up_brake_speed")
+    private String ibUpBrakeSpeed;
+
+    /**
+     * 涓嬮檷寮哄埗浣庨��
+     */
+    @ApiModelProperty(value= "涓嬮檷寮哄埗浣庨��")
+    @TableField("ib_down_brake_speed")
+    private String ibDownBrakeSpeed;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @ApiModelProperty(value= "鍒涘缓鏃堕棿")
+    @TableField("create_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 杞借揣鍙版帰璐�
+     */
+    @ApiModelProperty(value= "杞借揣鍙版帰璐�")
+    @TableField("ib_platform_signal")
+    private String ibPlatformSignal;
+
+    /**
+     * 璐у弶涓綅淇″彿
+     */
+    @ApiModelProperty(value= "璐у弶涓綅淇″彿")
+    @TableField("ib_fork_mid_signal")
+    private String ibForkMidSignal;
+
+    /**
+     * 璐у弶宸︽瀬闄�
+     */
+    @ApiModelProperty(value= "璐у弶宸︽瀬闄�")
+    @TableField("ib_fork_left_limit")
+    private String ibForkLeftLimit;
+
+    @ApiModelProperty(value= "")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 璐у弶鍙虫瀬闄�
+     */
+    @ApiModelProperty(value= "璐у弶鍙虫瀬闄�")
+    @TableField("ib_fork_right_limit")
+    private String ibForkRightLimit;
+
+    /**
+     * 鍓嶈秴闄�
+     */
+    @ApiModelProperty(value= "鍓嶈秴闄�")
+    @TableField("ib_front_over_limit")
+    private String ibFrontOverLimit;
+
+    /**
+     * 鍚庤秴闄�
+     */
+    @ApiModelProperty(value= "鍚庤秴闄�")
+    @TableField("ib_rear_over_limit")
+    private String ibRearOverLimit;
+
+    /**
+     * 宸﹁秴闄�
+     */
+    @ApiModelProperty(value= "宸﹁秴闄�")
+    @TableField("ib_left_over_limit")
+    private String ibLeftOverLimit;
+
+    /**
+     * 鍙宠秴闄�
+     */
+    @ApiModelProperty(value= "鍙宠秴闄�")
+    @TableField("ib_right_over_limit")
+    private String ibRightOverLimit;
+
+    /**
+     * 楂樿秴闄�1
+     */
+    @ApiModelProperty(value= "楂樿秴闄�1")
+    @TableField("ib_high_over_limit_1")
+    private String ibHighOverLimit1;
+
+    /**
+     * 楂樿秴闄�2
+     */
+    @ApiModelProperty(value= "楂樿秴闄�2")
+    @TableField("ib_high_over_limit_2")
+    private String ibHighOverLimit2;
+
+    /**
+     * 楂樿秴闄�3
+     */
+    @ApiModelProperty(value= "楂樿秴闄�3")
+    @TableField("ib_high_over_limit_3")
+    private String ibHighOverLimit3;
+
+    /**
+     * 涓�浼稿乏渚ф帰璐�1
+     */
+    @ApiModelProperty(value= "涓�浼稿乏渚ф帰璐�1")
+    @TableField("ib_one_extend_left_load_1")
+    private String ibOneExtendLeftLoad1;
+
+    /**
+     * 涓�浼稿乏渚ф帰璐�2
+     */
+    @ApiModelProperty(value= "涓�浼稿乏渚ф帰璐�2")
+    @TableField("ib_one_extend_left_load_2")
+    private String ibOneExtendLeftLoad2;
+
+    /**
+     * 涓�浼稿彸渚ф帰璐�1
+     */
+    @ApiModelProperty(value= "涓�浼稿彸渚ф帰璐�1")
+    @TableField("ib_one_extend_right_load_1")
+    private String ibOneExtendRightLoad1;
+
+    /**
+     * 涓�浼稿彸渚ф帰璐�2
+     */
+    @ApiModelProperty(value= "涓�浼稿彸渚ф帰璐�2")
+    @TableField("ib_one_extend_right_load_2")
+    private String ibOneExtendRightLoad2;
+
+    /**
+     * 浜屼几宸︿晶鎺㈣揣1
+     */
+    @ApiModelProperty(value= "浜屼几宸︿晶鎺㈣揣1")
+    @TableField("ib_two_extend_left_load_1")
+    private String ibTwoExtendLeftLoad1;
+
+    /**
+     * 浜屼几宸︿晶鎺㈣揣2
+     */
+    @ApiModelProperty(value= "浜屼几宸︿晶鎺㈣揣2")
+    @TableField("ib_two_extend_left_load_2")
+    private String ibTwoExtendLeftLoad2;
+
+    /**
+     * 浜屼几鍙充晶鎺㈣揣1
+     */
+    @ApiModelProperty(value= "浜屼几鍙充晶鎺㈣揣1")
+    @TableField("ib_two_extend_right_load_1")
+    private String ibTwoExtendRightLoad1;
+
+    /**
+     * 浜屼几鍙充晶鎺㈣揣2
+     */
+    @ApiModelProperty(value= "浜屼几鍙充晶鎺㈣揣2")
+    @TableField("ib_two_extend_right_load_2")
+    private String ibTwoExtendRightLoad2;
+
+    /**
+     * 瓒呴�熶俊鍙�1
+     */
+    @ApiModelProperty(value= "瓒呴�熶俊鍙�1")
+    @TableField("ib_speed_signal_1")
+    private String ibSpeedSignal1;
+
+    /**
+     * 瓒呴�熶俊鍙�2
+     */
+    @ApiModelProperty(value= "瓒呴�熶俊鍙�2")
+    @TableField("ib_speed_signal_2")
+    private String ibSpeedSignal2;
+
+    /**
+     * 瓒呴噸淇″彿1
+     */
+    @ApiModelProperty(value= "瓒呴噸淇″彿1")
+    @TableField("ib_overweight_signal_1")
+    private String ibOverweightSignal1;
+
+    /**
+     * 瓒呴噸淇″彿2
+     */
+    @ApiModelProperty(value= "瓒呴噸淇″彿2")
+    @TableField("ib_overweight_signal_2")
+    private String ibOverweightSignal2;
+
+    /**
+     * 鏉剧怀淇″彿1
+     */
+    @ApiModelProperty(value= "鏉剧怀淇″彿1")
+    @TableField("ib_rope_release_signal_1")
+    private String ibRopeReleaseSignal1;
+
+    /**
+     * 鏉剧怀淇″彿2
+     */
+    @ApiModelProperty(value= "鏉剧怀淇″彿2")
+    @TableField("ib_rope_release_signal_2")
+    private String ibRopeReleaseSignal2;
+
+    /**
+     * 瀹夊叏閽�
+     */
+    @ApiModelProperty(value= "瀹夊叏閽�")
+    @TableField("ib_safety_clamp")
+    private String ibSafetyClamp;
+
+    /**
+     * 寮犵揣鍣�
+     */
+    @ApiModelProperty(value= "寮犵揣鍣�")
+    @TableField("ib_tightener")
+    private String ibTightener;
+
+    /**
+     * 闄愰�熷櫒
+     */
+    @ApiModelProperty(value= "闄愰�熷櫒")
+    @TableField("ib_speed_limiter")
+    private String ibSpeedLimiter;
+
+    /**
+     * 瀹夊叏闂ㄦ墦寮�
+     */
+    @ApiModelProperty(value= "瀹夊叏闂ㄦ墦寮�")
+    @TableField("ib_safety_door_open")
+    private String ibSafetyDoorOpen;
+
+    public BasCrnErrorLog() {}
+
+    public BasCrnErrorLog(Integer crnNo,String ibDriveFault,String ibSupplyFault,String ibForkDriveFault,String ibDriveCircuitFault,String ibLiftCircuitFault,String ibForkCircuitFault,String ibForwardLimit,String ibReverseLimit,String ibDriveStart,String ibForwardBrakeSpeed,String ibReverseBrakeSpeed,String ibUpLimit,String ibDownLimit,String ibUpOrigin,String ibUpBrakeSpeed,String ibDownBrakeSpeed,Date createTime,String ibPlatformSignal,String ibForkMidSignal,String ibForkLeftLimit,String ibForkRightLimit,String ibFrontOverLimit,String ibRearOverLimit,String ibLeftOverLimit,String ibRightOverLimit,String ibHighOverLimit1,String ibHighOverLimit2,String ibHighOverLimit3,String ibOneExtendLeftLoad1,String ibOneExtendLeftLoad2,String ibOneExtendRightLoad1,String ibOneExtendRightLoad2,String ibTwoExtendLeftLoad1,String ibTwoExtendLeftLoad2,String ibTwoExtendRightLoad1,String ibTwoExtendRightLoad2,String ibSpeedSignal1,String ibSpeedSignal2,String ibOverweightSignal1,String ibOverweightSignal2,String ibRopeReleaseSignal1,String ibRopeReleaseSignal2,String ibSafetyClamp,String ibTightener,String ibSpeedLimiter,String ibSafetyDoorOpen) {
+        this.crnNo = crnNo;
+        this.ibDriveFault = ibDriveFault;
+        this.ibSupplyFault = ibSupplyFault;
+        this.ibForkDriveFault = ibForkDriveFault;
+        this.ibDriveCircuitFault = ibDriveCircuitFault;
+        this.ibLiftCircuitFault = ibLiftCircuitFault;
+        this.ibForkCircuitFault = ibForkCircuitFault;
+        this.ibForwardLimit = ibForwardLimit;
+        this.ibReverseLimit = ibReverseLimit;
+        this.ibDriveStart = ibDriveStart;
+        this.ibForwardBrakeSpeed = ibForwardBrakeSpeed;
+        this.ibReverseBrakeSpeed = ibReverseBrakeSpeed;
+        this.ibUpLimit = ibUpLimit;
+        this.ibDownLimit = ibDownLimit;
+        this.ibUpOrigin = ibUpOrigin;
+        this.ibUpBrakeSpeed = ibUpBrakeSpeed;
+        this.ibDownBrakeSpeed = ibDownBrakeSpeed;
+        this.createTime = createTime;
+        this.ibPlatformSignal = ibPlatformSignal;
+        this.ibForkMidSignal = ibForkMidSignal;
+        this.ibForkLeftLimit = ibForkLeftLimit;
+        this.ibForkRightLimit = ibForkRightLimit;
+        this.ibFrontOverLimit = ibFrontOverLimit;
+        this.ibRearOverLimit = ibRearOverLimit;
+        this.ibLeftOverLimit = ibLeftOverLimit;
+        this.ibRightOverLimit = ibRightOverLimit;
+        this.ibHighOverLimit1 = ibHighOverLimit1;
+        this.ibHighOverLimit2 = ibHighOverLimit2;
+        this.ibHighOverLimit3 = ibHighOverLimit3;
+        this.ibOneExtendLeftLoad1 = ibOneExtendLeftLoad1;
+        this.ibOneExtendLeftLoad2 = ibOneExtendLeftLoad2;
+        this.ibOneExtendRightLoad1 = ibOneExtendRightLoad1;
+        this.ibOneExtendRightLoad2 = ibOneExtendRightLoad2;
+        this.ibTwoExtendLeftLoad1 = ibTwoExtendLeftLoad1;
+        this.ibTwoExtendLeftLoad2 = ibTwoExtendLeftLoad2;
+        this.ibTwoExtendRightLoad1 = ibTwoExtendRightLoad1;
+        this.ibTwoExtendRightLoad2 = ibTwoExtendRightLoad2;
+        this.ibSpeedSignal1 = ibSpeedSignal1;
+        this.ibSpeedSignal2 = ibSpeedSignal2;
+        this.ibOverweightSignal1 = ibOverweightSignal1;
+        this.ibOverweightSignal2 = ibOverweightSignal2;
+        this.ibRopeReleaseSignal1 = ibRopeReleaseSignal1;
+        this.ibRopeReleaseSignal2 = ibRopeReleaseSignal2;
+        this.ibSafetyClamp = ibSafetyClamp;
+        this.ibTightener = ibTightener;
+        this.ibSpeedLimiter = ibSpeedLimiter;
+        this.ibSafetyDoorOpen = ibSafetyDoorOpen;
+    }
+
+//    BasCrnErrorLog basCrnErrorLog = new BasCrnErrorLog(
+//            null,    // 缂栧彿
+//            null,    // 琛岃蛋鍙橀鍣ㄦ晠闅�
+//            null,    // 鎻愬叡鍙橀鍣ㄦ晠闅�
+//            null,    // 璐у弶鍙橀鍣ㄦ晠闅�
+//            null,    // 琛岃蛋鏂矾鍣ㄦ晠闅�
+//            null,    // 鎻愬崌鏂矾鍣ㄦ晠闅�
+//            null,    // 璐у弶鏂矾鍣ㄦ晠闅�
+//            null,    // 鍓嶈繘闄愪綅
+//            null,    // 鍚庨��闄愪綅
+//            null,    // 琛岃蛋鍘熺偣
+//            null,    // 鍓嶈繘寮哄埗浣庨��
+//            null,    // 鍚庨��寮哄埗浣庨��
+//            null,    // 涓婂崌闄愪綅
+//            null,    // 涓嬮檺闄愪綅
+//            null,    // 鎻愬崌鍘熺偣
+//            null,    // 涓婂崌寮哄埗浣庨��
+//            null,    // 涓嬮檷寮哄埗浣庨��
+//            null,    // 鍒涘缓鏃堕棿
+//            null,    // 杞借揣鍙版帰璐�
+//            null,    // 璐у弶涓綅淇″彿
+//            null,    // 璐у弶宸︽瀬闄�
+//            null,    // 璐у弶鍙虫瀬闄�
+//            null,    // 鍓嶈秴闄�
+//            null,    // 鍚庤秴闄�
+//            null,    // 宸﹁秴闄�
+//            null,    // 鍙宠秴闄�
+//            null,    // 楂樿秴闄�1
+//            null,    // 楂樿秴闄�2
+//            null,    // 楂樿秴闄�3
+//            null,    // 涓�浼稿乏渚ф帰璐�1
+//            null,    // 涓�浼稿乏渚ф帰璐�2
+//            null,    // 涓�浼稿彸渚ф帰璐�1
+//            null,    // 涓�浼稿彸渚ф帰璐�2
+//            null,    // 浜屼几宸︿晶鎺㈣揣1
+//            null,    // 浜屼几宸︿晶鎺㈣揣2
+//            null,    // 浜屼几鍙充晶鎺㈣揣1
+//            null,    // 浜屼几鍙充晶鎺㈣揣2
+//            null,    // 瓒呴�熶俊鍙�1
+//            null,    // 瓒呴�熶俊鍙�2
+//            null,    // 瓒呴噸淇″彿1
+//            null,    // 瓒呴噸淇″彿2
+//            null,    // 鏉剧怀淇″彿1
+//            null,    // 鏉剧怀淇″彿2
+//            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);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/BasDevpErrorLog.java b/src/main/java/com/zy/asrs/entity/BasDevpErrorLog.java
index f2151af..7bf40e9 100644
--- a/src/main/java/com/zy/asrs/entity/BasDevpErrorLog.java
+++ b/src/main/java/com/zy/asrs/entity/BasDevpErrorLog.java
@@ -1,11 +1,11 @@
 package com.zy.asrs.entity;
 
-import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.enums.IdType;
 import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import org.springframework.format.annotation.DateTimeFormat;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -17,9 +17,7 @@
 public class BasDevpErrorLog implements Serializable {
 
     private static final long serialVersionUID = 1L;
-    @ApiModelProperty(value= "")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+
     /**
      * 杈撻�佺紪鍙�
      */
@@ -152,13 +150,169 @@
     @TableField("out_enable")
     private String outEnable;
 
+    /**
+     * 鏁版嵁閿欒
+     */
     @ApiModelProperty(value= "鏁版嵁閿欒")
     @TableField("data_error")
     private String dataError;
 
+    @ApiModelProperty(value= "")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 鐩寸嚎鍏夌數
+     */
+    @ApiModelProperty(value= "鐩寸嚎鍏夌數")
+    @TableField("sensorG_arrive")
+    private String sensorGArrive;
+
+    /**
+     * 鍑忛�熷厜鐢�
+     */
+    @ApiModelProperty(value= "鍑忛�熷厜鐢�")
+    @TableField("sensorG_dec")
+    private String sensorGDec;
+
+    /**
+     * 鐩寸嚎鍑稿嚭
+     */
+    @ApiModelProperty(value= "鐩寸嚎鍑稿嚭")
+    @TableField("sensorG_arrive2")
+    private String sensorGArrive2;
+
+    /**
+     * 闄愪綅淇濇姢鍏夌數
+     */
+    @ApiModelProperty(value= "闄愪綅淇濇姢鍏夌數")
+    @TableField("sensor_limit")
+    private String sensorLimit;
+
+    /**
+     * 鎬ュ仠
+     */
+    @ApiModelProperty(value= "鎬ュ仠")
+    private String emergency;
+
+    /**
+     * 鍏夌數绂诲紑1
+     */
+    @ApiModelProperty(value= "鍏夌數绂诲紑1")
+    @TableField("sensorG_leave")
+    private String sensorGLeave;
+
+    /**
+     * 鍏夌數绂诲紑2
+     */
+    @ApiModelProperty(value= "鍏夌數绂诲紑2")
+    @TableField("sensorG_leave2")
+    private String sensorGLeave2;
+
+    /**
+     * 椤跺崌涓婂崌
+     */
+    @ApiModelProperty(value= "椤跺崌涓婂崌")
+    @TableField("sensorC_up")
+    private String sensorCUp;
+
+    /**
+     * 椤跺崌涓嬮檷
+     */
+    @ApiModelProperty(value= "椤跺崌涓嬮檷")
+    @TableField("sensorC_down")
+    private String sensorCDown;
+
+    /**
+     * 椤跺崌鐑户
+     */
+    @ApiModelProperty(value= "椤跺崌鐑户")
+    @TableField("lift_motor_fr")
+    private String liftMotorFr;
+
+    /**
+     * 鐩寸嚎鐑户
+     */
+    @ApiModelProperty(value= "鐩寸嚎鐑户")
+    @TableField("line_motor_fr")
+    private String lineMotorFr;
+
+    /**
+     * 绉绘牻鐑户
+     */
+    @ApiModelProperty(value= "绉绘牻鐑户")
+    @TableField("tran_motor_fr")
+    private String tranMotorFr;
+
+    /**
+     * 澶囩敤1
+     */
+    @ApiModelProperty(value= "澶囩敤1")
+    private String rst1;
+
+    /**
+     * 澶囩敤2
+     */
+    @ApiModelProperty(value= "澶囩敤2")
+    private String rst2;
+
+    /**
+     * 澶囩敤3
+     */
+    @ApiModelProperty(value= "澶囩敤3")
+    private String rst3;
+
+    /**
+     * 澶囩敤4
+     */
+    @ApiModelProperty(value= "澶囩敤4")
+    private String rst4;
+
+    /**
+     * 鐩磋鏂瑰悜鍒颁綅
+     */
+    @ApiModelProperty(value= "鐩磋鏂瑰悜鍒颁綅")
+    @TableField("sensor_arrive_d")
+    private String sensorArriveD;
+
+    /**
+     * 鐩磋鏂瑰悜鍑忛��
+     */
+    @ApiModelProperty(value= "鐩磋鏂瑰悜鍑忛��")
+    @TableField("sensor_dec_d")
+    private String sensorDecD;
+
+    /**
+     * 宸︾Щ鏂瑰悜鍒颁綅
+     */
+    @ApiModelProperty(value= "宸︾Щ鏂瑰悜鍒颁綅")
+    @TableField("sensor_arrive_l")
+    private String sensorArriveL;
+
+    /**
+     * 宸︾Щ鏂瑰悜鍑忛��
+     */
+    @ApiModelProperty(value= "宸︾Щ鏂瑰悜鍑忛��")
+    @TableField("sensor_dec_l")
+    private String sensorDecL;
+
+    /**
+     * 鍙崇Щ鏂瑰悜鍒颁綅
+     */
+    @ApiModelProperty(value= "鍙崇Щ鏂瑰悜鍒颁綅")
+    @TableField("sensor_arrive_r")
+    private String sensorArriveR;
+
+    /**
+     * 鍙崇Щ鏂瑰悜鍑忛��
+     */
+    @ApiModelProperty(value= "鍙崇Щ鏂瑰悜鍑忛��")
+    @TableField("sensor_dec_r")
+    private String sensorDecR;
+
     public BasDevpErrorLog() {}
 
-    public BasDevpErrorLog(Integer devNo,String passTimeOut,String objectNoIdError,String idNoObjectError,String lmfrError,String liftError,String dlfrError,String dmfrError,String vfdError,String srvError,String res1,String res2,String res3,String communicationTimeOut,String parameterIncompleteError,String dataNotClear,String setParameterError,Date createTime,String inEnable,String outEnable,String dataError) {
+    public BasDevpErrorLog(Integer devNo,String passTimeOut,String objectNoIdError,String idNoObjectError,String lmfrError,String liftError,String dlfrError,String dmfrError,String vfdError,String srvError,String res1,String res2,String res3,String communicationTimeOut,String parameterIncompleteError,String dataNotClear,String setParameterError,Date createTime,String inEnable,String outEnable,String dataError,String sensorGArrive,String sensorGDec,String sensorGArrive2,String sensorLimit,String emergency,String sensorGLeave,String sensorGLeave2,String sensorCUp,String sensorCDown,String liftMotorFr,String lineMotorFr,String tranMotorFr,String rst1,String rst2,String rst3,String rst4,String sensorArriveD,String sensorDecD,String sensorArriveL,String sensorDecL,String sensorArriveR,String sensorDecR) {
         this.devNo = devNo;
         this.passTimeOut = passTimeOut;
         this.objectNoIdError = objectNoIdError;
@@ -180,6 +334,28 @@
         this.inEnable = inEnable;
         this.outEnable = outEnable;
         this.dataError = dataError;
+        this.sensorGArrive = sensorGArrive;
+        this.sensorGDec = sensorGDec;
+        this.sensorGArrive2 = sensorGArrive2;
+        this.sensorLimit = sensorLimit;
+        this.emergency = emergency;
+        this.sensorGLeave = sensorGLeave;
+        this.sensorGLeave2 = sensorGLeave2;
+        this.sensorCUp = sensorCUp;
+        this.sensorCDown = sensorCDown;
+        this.liftMotorFr = liftMotorFr;
+        this.lineMotorFr = lineMotorFr;
+        this.tranMotorFr = tranMotorFr;
+        this.rst1 = rst1;
+        this.rst2 = rst2;
+        this.rst3 = rst3;
+        this.rst4 = rst4;
+        this.sensorArriveD = sensorArriveD;
+        this.sensorDecD = sensorDecD;
+        this.sensorArriveL = sensorArriveL;
+        this.sensorDecL = sensorDecL;
+        this.sensorArriveR = sensorArriveR;
+        this.sensorDecR = sensorDecR;
     }
 
 //    BasDevpErrorLog basDevpErrorLog = new BasDevpErrorLog(
@@ -203,7 +379,29 @@
 //            null,    // 鍒涘缓鏃堕棿
 //            null,    // 
 //            null,    // 
-//            null    // 
+//            null,    // 鏁版嵁閿欒
+//            null,    // 鐩寸嚎鍏夌數
+//            null,    // 鍑忛�熷厜鐢�
+//            null,    // 鐩寸嚎鍑稿嚭
+//            null,    // 闄愪綅淇濇姢鍏夌數
+//            null,    // 鎬ュ仠
+//            null,    // 鍏夌數绂诲紑1
+//            null,    // 鍏夌數绂诲紑2
+//            null,    // 椤跺崌涓婂崌
+//            null,    // 椤跺崌涓嬮檷
+//            null,    // 椤跺崌鐑户
+//            null,    // 鐩寸嚎鐑户
+//            null,    // 绉绘牻鐑户
+//            null,    // 澶囩敤1
+//            null,    // 澶囩敤2
+//            null,    // 澶囩敤3
+//            null,    // 澶囩敤4
+//            null,    // 鐩磋鏂瑰悜鍒颁綅
+//            null,    // 鐩磋鏂瑰悜鍑忛��
+//            null,    // 宸︾Щ鏂瑰悜鍒颁綅
+//            null,    // 宸︾Щ鏂瑰悜鍑忛��
+//            null,    // 鍙崇Щ鏂瑰悜鍒颁綅
+//            null    // 鍙崇Щ鏂瑰悜鍑忛��
 //    );
 
     public String getCreateTime$(){
diff --git a/src/main/java/com/zy/asrs/entity/BasRgvErrorLog.java b/src/main/java/com/zy/asrs/entity/BasRgvErrorLog.java
new file mode 100644
index 0000000..0c954af
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasRgvErrorLog.java
@@ -0,0 +1,392 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("asr_bas_rgv_error_log")
+public class BasRgvErrorLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 缂栧彿
+     */
+    @ApiModelProperty(value= "缂栧彿")
+    @TableField("rgv_no")
+    private Integer rgvNo;
+
+    /**
+     * 鎬ュ仠瑙﹀彂
+     */
+    @ApiModelProperty(value= "鎬ュ仠瑙﹀彂")
+    @TableField("emergency_stop")
+    private String emergencyStop;
+
+    /**
+     * 1鍙蜂綅鏈夌墿鏃犺祫鏂�
+     */
+    @ApiModelProperty(value= "1鍙蜂綅鏈夌墿鏃犺祫鏂�")
+    @TableField("slot_1_empty_no_data")
+    private String slot1EmptyNoData;
+
+    /**
+     * 2鍙蜂綅鏈夌墿鏃犺祫鏂�
+     */
+    @ApiModelProperty(value= "2鍙蜂綅鏈夌墿鏃犺祫鏂�")
+    @TableField("slot_2_empty_no_data")
+    private String slot2EmptyNoData;
+
+    /**
+     * 鍛戒护閿欒璧伴摼鏉″啿绐�
+     */
+    @ApiModelProperty(value= "鍛戒护閿欒璧伴摼鏉″啿绐�")
+    @TableField("command_error_chain_conflict")
+    private String commandErrorChainConflict;
+
+    /**
+     * 鐩爣浣嶄笅鍙戦敊璇�
+     */
+    @ApiModelProperty(value= "鐩爣浣嶄笅鍙戦敊璇�")
+    @TableField("target_position_issue")
+    private String targetPositionIssue;
+
+    /**
+     * 璧拌鍙橀鍣ㄥ紓甯�
+     */
+    @ApiModelProperty(value= "璧拌鍙橀鍣ㄥ紓甯�")
+    @TableField("travel_inverter_error")
+    private String travelInverterError;
+
+    /**
+     * 1鍙峰厜鐢靛紓甯�
+     */
+    @ApiModelProperty(value= "1鍙峰厜鐢靛紓甯�")
+    @TableField("photoelectric_1_error")
+    private String photoelectric1Error;
+
+    /**
+     * 2鍙峰厜鐢靛紓甯�
+     */
+    @ApiModelProperty(value= "2鍙峰厜鐢靛紓甯�")
+    @TableField("photoelectric_2_error")
+    private String photoelectric2Error;
+
+    /**
+     * 涓庤緭绾挎椂鎺ヨ秴鏃�
+     */
+    @ApiModelProperty(value= "涓庤緭绾挎椂鎺ヨ秴鏃�")
+    @TableField("timeout_connection_with_line")
+    private String timeoutConnectionWithLine;
+
+    /**
+     * 宸︿晶婊氱瓛杩愯瓒呮椂
+     */
+    @ApiModelProperty(value= "宸︿晶婊氱瓛杩愯瓒呮椂")
+    @TableField("left_roller_timeout")
+    private String leftRollerTimeout;
+
+    /**
+     * 鍙充晶婊氱瓛杩愯瓒呮椂
+     */
+    @ApiModelProperty(value= "鍙充晶婊氱瓛杩愯瓒呮椂")
+    @TableField("right_roller_timeout")
+    private String rightRollerTimeout;
+
+    /**
+     * rgv杩愯瓒呮椂
+     */
+    @ApiModelProperty(value= "rgv杩愯瓒呮椂")
+    @TableField("rgv_run_timeout")
+    private String rgvRunTimeout;
+
+    /**
+     * 1鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
+     */
+    @ApiModelProperty(value= "1鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父")
+    @TableField("position_1_chain_inverter_error")
+    private String position1ChainInverterError;
+
+    /**
+     * 2鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
+     */
+    @ApiModelProperty(value= "2鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父")
+    @TableField("position_2_chain_inverter_error")
+    private String position2ChainInverterError;
+
+    /**
+     * 鍓嶅悗鏋侀檺浣�
+     */
+    @ApiModelProperty(value= "鍓嶅悗鏋侀檺浣�")
+    @TableField("front_rear_limit")
+    private String frontRearLimit;
+
+    /**
+     * 鎬ュ仠鎸夐挳
+     */
+    @ApiModelProperty(value= "鎬ュ仠鎸夐挳")
+    @TableField("emergency_button")
+    private String emergencyButton;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @ApiModelProperty(value= "鍒涘缓鏃堕棿")
+    @TableField("create_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 鎬ュ仠鎸夐挳
+     */
+    @ApiModelProperty(value= "鎬ュ仠鎸夐挳")
+    @TableField("forward_button")
+    private String forwardButton;
+
+    /**
+     * 鍚庨��鎸夐挳
+     */
+    @ApiModelProperty(value= "鍚庨��鎸夐挳")
+    @TableField("reverse_button")
+    private String reverseButton;
+
+    /**
+     * 鏈湴/杩滅▼
+     */
+    @ApiModelProperty(value= "鏈湴/杩滅▼")
+    @TableField("local_remote")
+    private String localRemote;
+
+    @ApiModelProperty(value= "")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 澶嶄綅
+     */
+    @ApiModelProperty(value= "澶嶄綅")
+    private String reset;
+
+    /**
+     * 璧拌鎶遍椄寮�鍏抽挳
+     */
+    @ApiModelProperty(value= "璧拌鎶遍椄寮�鍏抽挳")
+    @TableField("travel_brake_switch")
+    private String travelBrakeSwitch;
+
+    /**
+     * 璧拌寮哄埗鍑忛�熷厜鐢�
+     */
+    @ApiModelProperty(value= "璧拌寮哄埗鍑忛�熷厜鐢�")
+    @TableField("travel_speed_limit_photoelectric")
+    private String travelSpeedLimitPhotoelectric;
+
+    /**
+     * 宸﹁秴闄� 1
+     */
+    @ApiModelProperty(value= "宸﹁秴闄� 1")
+    @TableField("left_overlimit_1")
+    private String leftOverlimit1;
+
+    /**
+     * 鍙宠秴闄� 1
+     */
+    @ApiModelProperty(value= "鍙宠秴闄� 1")
+    @TableField("right_overlimit_1")
+    private String rightOverlimit1;
+
+    /**
+     * 宸﹀埌浣� 1
+     */
+    @ApiModelProperty(value= "宸﹀埌浣� 1")
+    @TableField("left_at_position_1")
+    private String leftAtPosition1;
+
+    /**
+     * 鍙冲埌浣� 1
+     */
+    @ApiModelProperty(value= "鍙冲埌浣� 1")
+    @TableField("right_at_position_1")
+    private String rightAtPosition1;
+
+    /**
+     * 閾炬潯鍓嶈繘 1
+     */
+    @ApiModelProperty(value= "閾炬潯鍓嶈繘 1")
+    @TableField("chain_forward_1")
+    private String chainForward1;
+
+    /**
+     * 閾炬潯鍚庨�� 1
+     */
+    @ApiModelProperty(value= "閾炬潯鍚庨�� 1")
+    @TableField("chain_reverse_1")
+    private String chainReverse1;
+
+    /**
+     * 鍙橀鍣ㄦ姤璀�
+     */
+    @ApiModelProperty(value= "鍙橀鍣ㄦ姤璀�")
+    @TableField("inverter_alarm")
+    private String inverterAlarm;
+
+    /**
+     * 宸﹁秴闄� 2
+     */
+    @ApiModelProperty(value= "宸﹁秴闄� 2")
+    @TableField("left_overlimit_2")
+    private String leftOverlimit2;
+
+    /**
+     * 鍙宠秴闄� 2
+     */
+    @ApiModelProperty(value= "鍙宠秴闄� 2")
+    @TableField("right_overlimit_2")
+    private String rightOverlimit2;
+
+    /**
+     * 宸﹀埌浣� 2
+     */
+    @ApiModelProperty(value= "宸﹀埌浣� 2")
+    @TableField("left_at_position_2")
+    private String leftAtPosition2;
+
+    /**
+     * 鍙冲埌浣� 2
+     */
+    @ApiModelProperty(value= "鍙冲埌浣� 2")
+    @TableField("right_at_position_2")
+    private String rightAtPosition2;
+
+    /**
+     * 璐х墿鍑忛��
+     */
+    @ApiModelProperty(value= "璐х墿鍑忛��")
+    @TableField("cargo_speed_reduction")
+    private String cargoSpeedReduction;
+
+    /**
+     * 杈撻�佸彉棰戝櫒鎶ヨ 2
+     */
+    @ApiModelProperty(value= "杈撻�佸彉棰戝櫒鎶ヨ 2")
+    @TableField("conveyor_inverter_alarm_2")
+    private String conveyorInverterAlarm2;
+
+    /**
+     * 宸﹁緭閫� 2
+     */
+    @ApiModelProperty(value= "宸﹁緭閫� 2")
+    @TableField("left_conveyor_2")
+    private String leftConveyor2;
+
+    /**
+     * 鍙宠緭閫� 2
+     */
+    @ApiModelProperty(value= "鍙宠緭閫� 2")
+    @TableField("right_conveyor_2")
+    private String rightConveyor2;
+
+    public BasRgvErrorLog() {}
+
+    public BasRgvErrorLog(Integer rgvNo,String emergencyStop,String slot1EmptyNoData,String slot2EmptyNoData,String commandErrorChainConflict,String targetPositionIssue,String travelInverterError,String photoelectric1Error,String photoelectric2Error,String timeoutConnectionWithLine,String leftRollerTimeout,String rightRollerTimeout,String rgvRunTimeout,String position1ChainInverterError,String position2ChainInverterError,String frontRearLimit,String emergencyButton,Date createTime,String forwardButton,String reverseButton,String localRemote,String reset,String travelBrakeSwitch,String travelSpeedLimitPhotoelectric,String leftOverlimit1,String rightOverlimit1,String leftAtPosition1,String rightAtPosition1,String chainForward1,String chainReverse1,String inverterAlarm,String leftOverlimit2,String rightOverlimit2,String leftAtPosition2,String rightAtPosition2,String cargoSpeedReduction,String conveyorInverterAlarm2,String leftConveyor2,String rightConveyor2) {
+        this.rgvNo = rgvNo;
+        this.emergencyStop = emergencyStop;
+        this.slot1EmptyNoData = slot1EmptyNoData;
+        this.slot2EmptyNoData = slot2EmptyNoData;
+        this.commandErrorChainConflict = commandErrorChainConflict;
+        this.targetPositionIssue = targetPositionIssue;
+        this.travelInverterError = travelInverterError;
+        this.photoelectric1Error = photoelectric1Error;
+        this.photoelectric2Error = photoelectric2Error;
+        this.timeoutConnectionWithLine = timeoutConnectionWithLine;
+        this.leftRollerTimeout = leftRollerTimeout;
+        this.rightRollerTimeout = rightRollerTimeout;
+        this.rgvRunTimeout = rgvRunTimeout;
+        this.position1ChainInverterError = position1ChainInverterError;
+        this.position2ChainInverterError = position2ChainInverterError;
+        this.frontRearLimit = frontRearLimit;
+        this.emergencyButton = emergencyButton;
+        this.createTime = createTime;
+        this.forwardButton = forwardButton;
+        this.reverseButton = reverseButton;
+        this.localRemote = localRemote;
+        this.reset = reset;
+        this.travelBrakeSwitch = travelBrakeSwitch;
+        this.travelSpeedLimitPhotoelectric = travelSpeedLimitPhotoelectric;
+        this.leftOverlimit1 = leftOverlimit1;
+        this.rightOverlimit1 = rightOverlimit1;
+        this.leftAtPosition1 = leftAtPosition1;
+        this.rightAtPosition1 = rightAtPosition1;
+        this.chainForward1 = chainForward1;
+        this.chainReverse1 = chainReverse1;
+        this.inverterAlarm = inverterAlarm;
+        this.leftOverlimit2 = leftOverlimit2;
+        this.rightOverlimit2 = rightOverlimit2;
+        this.leftAtPosition2 = leftAtPosition2;
+        this.rightAtPosition2 = rightAtPosition2;
+        this.cargoSpeedReduction = cargoSpeedReduction;
+        this.conveyorInverterAlarm2 = conveyorInverterAlarm2;
+        this.leftConveyor2 = leftConveyor2;
+        this.rightConveyor2 = rightConveyor2;
+    }
+
+//    BasRgvErrorLog basRgvErrorLog = new BasRgvErrorLog(
+//            null,    // 缂栧彿
+//            null,    // 鎬ュ仠瑙﹀彂
+//            null,    // 1鍙蜂綅鏈夌墿鏃犺祫鏂�
+//            null,    // 2鍙蜂綅鏈夌墿鏃犺祫鏂�
+//            null,    // 鍛戒护閿欒璧伴摼鏉″啿绐�
+//            null,    // 鐩爣浣嶄笅鍙戦敊璇�
+//            null,    // 璧拌鍙橀鍣ㄥ紓甯�
+//            null,    // 1鍙峰厜鐢靛紓甯�
+//            null,    // 2鍙峰厜鐢靛紓甯�
+//            null,    // 涓庤緭绾挎椂鎺ヨ秴鏃�
+//            null,    // 宸︿晶婊氱瓛杩愯瓒呮椂
+//            null,    // 鍙充晶婊氱瓛杩愯瓒呮椂
+//            null,    // rgv杩愯瓒呮椂
+//            null,    // 1鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
+//            null,    // 2鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
+//            null,    // 鍓嶅悗鏋侀檺浣�
+//            null,    // 鎬ュ仠鎸夐挳
+//            null,    // 鍒涘缓鏃堕棿
+//            null,    // 鎬ュ仠鎸夐挳
+//            null,    // 鍚庨��鎸夐挳
+//            null,    // 鏈湴/杩滅▼
+//            null,    // 澶嶄綅
+//            null,    // 璧拌鎶遍椄寮�鍏抽挳
+//            null,    // 璧拌寮哄埗鍑忛�熷厜鐢�
+//            null,    // 宸﹁秴闄� 1
+//            null,    // 鍙宠秴闄� 1
+//            null,    // 宸﹀埌浣� 1
+//            null,    // 鍙冲埌浣� 1
+//            null,    // 閾炬潯鍓嶈繘 1
+//            null,    // 閾炬潯鍚庨�� 1
+//            null,    // 鍙橀鍣ㄦ姤璀�
+//            null,    // 宸﹁秴闄� 2
+//            null,    // 鍙宠秴闄� 2
+//            null,    // 宸﹀埌浣� 2
+//            null,    // 鍙冲埌浣� 2
+//            null,    // 璐х墿鍑忛��
+//            null,    // 杈撻�佸彉棰戝櫒鎶ヨ 2
+//            null,    // 宸﹁緭閫� 2
+//            null    // 鍙宠緭閫� 2
+//    );
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/AgvTaskAssignmentParam.java b/src/main/java/com/zy/asrs/entity/param/AgvTaskAssignmentParam.java
index 29ea9c4..1ce2289 100644
--- a/src/main/java/com/zy/asrs/entity/param/AgvTaskAssignmentParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/AgvTaskAssignmentParam.java
@@ -5,10 +5,7 @@
 import com.core.common.SpringUtils;
 import com.zy.asrs.entity.BasAgvLocNo;
 import com.zy.asrs.entity.BasAgvMast;
-import com.zy.asrs.entity.BasArmMast;
-import com.zy.asrs.entity.result.OrderDetlValueResultUtil;
 import com.zy.asrs.service.BasAgvLocNoService;
-import com.zy.asrs.service.BasDevpErrorLogService;
 import lombok.Data;
 
 import java.util.ArrayList;
diff --git a/src/main/java/com/zy/asrs/mapper/BasCrnErrorLogMapper.java b/src/main/java/com/zy/asrs/mapper/BasCrnErrorLogMapper.java
new file mode 100644
index 0000000..e285d9f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasCrnErrorLogMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasCrnErrorLog;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasCrnErrorLogMapper extends BaseMapper<BasCrnErrorLog> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasRgvErrorLogMapper.java b/src/main/java/com/zy/asrs/mapper/BasRgvErrorLogMapper.java
new file mode 100644
index 0000000..4cd1398
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasRgvErrorLogMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasRgvErrorLog;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasRgvErrorLogMapper extends BaseMapper<BasRgvErrorLog> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
index 553fde9..c552c60 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
@@ -46,5 +46,6 @@
     List<WrkMastSta> selectLockWrkT();
     List<WrkMastSta> selectPakingWrk(@Param("staStart") Integer staStart);
 
+    List<WrkMastSta> selectPakingWrkNum(@Param("rgvNo") Integer rgvNo);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/BasCrnErrorLogService.java b/src/main/java/com/zy/asrs/service/BasCrnErrorLogService.java
new file mode 100644
index 0000000..9841036
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasCrnErrorLogService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasCrnErrorLog;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasCrnErrorLogService extends IService<BasCrnErrorLog> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/BasRgvErrorLogService.java b/src/main/java/com/zy/asrs/service/BasRgvErrorLogService.java
new file mode 100644
index 0000000..4e37e12
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasRgvErrorLogService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasRgvErrorLog;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasRgvErrorLogService extends IService<BasRgvErrorLog> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/WrkMastStaService.java b/src/main/java/com/zy/asrs/service/WrkMastStaService.java
index a5923b7..5673251 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastStaService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastStaService.java
@@ -10,6 +10,7 @@
     List<WrkMastSta> selectLockWrkT();
 
     List<WrkMastSta> selectPakingWrk(Integer staStart);
+    List<WrkMastSta> selectPakingWrkNum(Integer rgvNo);
 
 
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/BasCrnErrorLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasCrnErrorLogServiceImpl.java
new file mode 100644
index 0000000..b17cfd9
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasCrnErrorLogServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasCrnErrorLogMapper;
+import com.zy.asrs.entity.BasCrnErrorLog;
+import com.zy.asrs.service.BasCrnErrorLogService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basCrnErrorLogService")
+public class BasCrnErrorLogServiceImpl extends ServiceImpl<BasCrnErrorLogMapper, BasCrnErrorLog> implements BasCrnErrorLogService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasRgvErrorLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasRgvErrorLogServiceImpl.java
new file mode 100644
index 0000000..751d1ff
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasRgvErrorLogServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasRgvErrorLogMapper;
+import com.zy.asrs.entity.BasRgvErrorLog;
+import com.zy.asrs.service.BasRgvErrorLogService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basRgvErrorLogService")
+public class BasRgvErrorLogServiceImpl extends ServiceImpl<BasRgvErrorLogMapper, BasRgvErrorLog> implements BasRgvErrorLogService {
+
+}
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 f086254..59c4749 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3486,6 +3486,11 @@
                 basRgvService.updateById(basRgv);
                 rgvThread.setPakMk(true);
             }
+            List<WrkMastSta> wrkMastStaPakingNum = wrkMastStaService.selectPakingWrkNum(basRgv.getRgvNo());
+            if(wrkMastStaPakingNum.size() <1){
+                basRgv.setPakAll("1"); //闃叉鏃犲叾浠栦换鍔℃椂锛岃繛缁彇璐ф棤娉曟仮澶�
+                basRgvService.updateById(basRgv);
+            }
 
         }
     }
@@ -3515,6 +3520,7 @@
                 basRgv.setPakAll("1");
                 basRgvService.updateById(basRgv);
             }
+
             // 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
             if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE &&
                     rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk()
@@ -3559,57 +3565,12 @@
                 rgvThread.setPakMk(false);  //灏忚溅鍙屽伐浣嶉攣瀹�
 
             }
-//            if(basRgv.getPakToCrn().equals("0")){
-//                rgvRunWrkToCrn(rgv, rgvProtocol,mark); //鑻ュ皬杞﹀彇鍒颁竴涓帴椹充换鍔★紝绗簩涓伐浣嶅彧鑳藉彇鎺ラ┏浠诲姟
-//            }
+
 //            if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){
 //                rgvPreScheduling();//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
 //            }
 
 
-//            if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO) {
-//                //灏忚溅鎵ц鏀捐揣浠诲姟
-//                rgvOutExecute();
-//
-//            }
-        }
-    }
-    public synchronized void rgvRunWrkMastInTest(){
-        BasRgvMap basRgvMap = basRgvMapMapper.selectById(1);
-        List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
-        basRgvMap.setNowRoute(1021); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(342);//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
-
-//        WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, 1);
-        boolean result = false;
-//        if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻   2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
-//            result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣
-//        }
-//        if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣
-//            rgvThread.setPakRgv(false);
-//            continue;
-//        }
-        wrkMastSta.setWorkSta(1);
-        wrkMastSta.setRgvNo(1);
-        wrkMastSta.setStaStart(1035);
-        Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃�
-        boolean sign = false;
-//        sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction,); //鍛戒护涓嬪彂
-        if (sign){
-            wrkMastSta.setWrkSts(1);
-            try{
-                wrkMastStaMapper.updateById(wrkMastSta);
-                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
-            }catch (Exception e){
-                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-            }
-//            rgvThread.setPakOut(false);//鍑哄簱涓嶅厑璁�
-            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
-            if (!signMap){
-                log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-            }
-        } else {
-            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
         }
     }
     /**
@@ -3710,7 +3671,7 @@
 
                 if(wrkMastSta3 != null ){
                     List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
-                    if(wrkMastStaPaking.size() < 1){//宸叉湁鏍囪涓嶅啀鏍囪
+                    if(wrkMastStaPaking.size() < 1 ){//宸叉湁鏍囪涓嶅啀鏍囪
                         wrkMastSta3.setMk(1);
                         basRgv.setPakAll("0");
                         basRgvService.updateById(basRgv);
@@ -3815,7 +3776,7 @@
             }
             WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1());
             if(basRgv.getPakToCrn().equals("0")){
-                wrkMastSta = wrkMastStaMapper.selectNoInterfereCrn(route, route, Long.valueOf(staProtocol.getWorkNo()));
+                wrkMastSta = wrkMastStaMapper.selectNoInterfereCrn(route, route, Long.valueOf(staProtocol.getWorkNo()));//澶勭悊鎺ラ┏浠诲姟鏃讹紝杩炵画鍙彇鎺ラ┏浠诲姟
             }
             boolean result = false;
             if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻   2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
@@ -4603,8 +4564,9 @@
         }
     }
 
-    public void armTaskAssignmentCallApiLogSave(StaProtocol staProtocol ,String tableName, String response, Boolean bool) {
-        ApiLog apiLog = apiLogService.selectOne(new EntityWrapper<ApiLog>()
+    public void armTaskAssignmentCallApiLogSave(StaProtocol staProtocol, String tableName, String response, Boolean bool) {
+        // 鏌ヨ绗﹀悎鏉′欢鐨勬墍鏈� ApiLog
+        List<ApiLog> apiLogs = apiLogService.selectList(new EntityWrapper<ApiLog>()
                 .eq("namespace", "鏈烘鑷備换鍔$浉鍏�")
                 .eq("request", "绔欑偣鍙�:" + staProtocol.getSiteId())
                 .eq("response", response)
@@ -4614,17 +4576,22 @@
                 .orderBy("create_time", false)
         );
 
-        if (!Cools.isEmpty(apiLog)){
+        // 閬嶅巻缁撴灉闆嗭紝妫�鏌ユ椂闂存埑宸�兼槸鍚﹀皬浜� 5 鍒嗛挓
+        for (ApiLog apiLog : apiLogs) {
             long parseLong = Long.parseLong(apiLog.getTimestamp());
-            if (new Date().getTime()-parseLong<5*1000*60){
+            if (new Date().getTime() - parseLong < 5 * 1000 * 60) {
+                // 濡傛灉鎵惧埌绗﹀悎鏉′欢鐨勮褰曚笖鏃堕棿宸皬浜� 5 鍒嗛挓锛屽垯涓嶄繚瀛樻柊璁板綍锛岀洿鎺ヨ繑鍥�
                 return;
             }
         }
+
+        // 濡傛灉娌℃湁绗﹀悎鏉′欢鐨勮褰曪紝鎴栬�呮墍鏈夎褰曟椂闂村樊澶т簬 5 鍒嗛挓锛屼繚瀛樻柊鐨勬棩蹇�
         apiLogService.save("鏈烘鑷備换鍔$浉鍏�", tableName, "null", staProtocol.getBarcode(),
-                "绔欑偣鍙�:" + staProtocol.getSiteId() ,
+                "绔欑偣鍙�:" + staProtocol.getSiteId(),
                 response, bool);
     }
 
+
     /*
      * agv浠诲姟涓嬪彂:AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣
      * */
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastStaServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastStaServiceImpl.java
index b7ed191..881706a 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastStaServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastStaServiceImpl.java
@@ -22,4 +22,9 @@
     public List<WrkMastSta> selectPakingWrk(Integer staStart){
         return this.baseMapper.selectPakingWrk(staStart);
     }
+
+    @Override
+    public List<WrkMastSta> selectPakingWrkNum(Integer rgvNo){
+        return this.baseMapper.selectPakingWrkNum(rgvNo);
+    }
 }
diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java
index 1ba8237..d3ad969 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="localhost:1433;databasename=jshdasrs";
         generator.username="sa";
         generator.password="sa@123";
-        generator.table="asr_bas_agv_loc_no";
+        generator.table="asr_bas_rgv_error_log";
         generator.packagePath="com.zy.asrs";
         generator.build();
     }
diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
index aaa114d..623e52c 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -1,5 +1,6 @@
 package com.zy.core.model.protocol;
 
+import com.zy.asrs.entity.BasCrnErrorLog;
 import com.zy.asrs.entity.BasCrnp;
 import com.zy.core.enums.CrnForkPosType;
 import com.zy.core.enums.CrnLiftPosType;
@@ -187,6 +188,118 @@
      */
     public Float yDuration;
 
+    //鍫嗗灈鏈洪厤缃俊鍙�--------------------------------------------------------------
+    // 鏁呴殰璇诲彇閿佸畾鏍囪
+    private boolean errorMk = false;
+    //鍐欏叆鏍囪
+    private boolean writeMk = true;
+    private Boolean ibDriveFault = false;       // 琛岃蛋鍙橀鍣ㄦ晠闅�
+    private Boolean ibSupplyFault = false;      // 鎻愪緵鍙橀鍣ㄦ晠闅�
+    private Boolean ibForkDriveFault = false;   // 璐у弶鍙橀鍣ㄦ晠闅�
+    private Boolean ibDriveCircuitFault = false; // 琛岃蛋鏂矾鍣ㄦ晠闅�
+    private Boolean ibLiftCircuitFault = false; // 鎻愬崌鏂矾鍣ㄦ晠闅�
+    private Boolean ibForkCircuitFault = false; // 璐у弶鏂矾鍣ㄦ晠闅�
+    private Boolean ibForwardLimit = false;     // 鍓嶈繘闄愪綅
+    private Boolean ibReverseLimit = false;     // 鍚庨��闄愪綅
+    private Boolean ibDriveStart = false;       // 琛岃蛋鍘熺偣
+    private Boolean ibForwardBrakeSpeed = false; // 鍓嶈繘寮哄埗浣庨��
+    private Boolean ibReverseBrakeSpeed = false; // 鍚庨��寮哄埗浣庨��
+    private Boolean ibUpLimit = false;          // 涓婂崌闄愪綅
+    private Boolean ibDownLimit = false;        // 涓嬮檺闄愪綅
+    private Boolean ibUpOrigin = false;         // 鎻愬崌鍘熺偣
+    private Boolean ibUpBrakeSpeed = false;     // 涓婂崌寮哄埗浣庨��
+    private Boolean ibDownBrakeSpeed = false;   // 涓嬮檷寮哄埗浣庨��
+    private Boolean ibPlatformSignal = false;   // 杞借揣鍙版帰璐�
+    private Boolean ibForkMidSignal = false;    // 璐у弶涓綅淇″彿
+    private Boolean ibForkLeftLimit = false;    // 璐у弶宸︽瀬闄�
+    private Boolean ibForkRightLimit = false;   // 璐у弶鍙虫瀬闄�
+    private Boolean ibFrontOverLimit = false;   // 鍓嶈秴闄�
+    private Boolean ibRearOverLimit = false;    // 鍚庤秴闄�
+    private Boolean ibLeftOverLimit = false;    // 宸﹁秴闄�
+    private Boolean ibRightOverLimit = false;   // 鍙宠秴闄�
+    private Boolean ibHighOverLimit1 = false;   // 楂樿秴闄�1
+    private Boolean ibHighOverLimit2 = false;   // 楂樿秴闄�2
+    private Boolean ibHighOverLimit3 = false;   // 楂樿秴闄�3
+    private Boolean ibOneExtendLeftLoad1 = false; // 涓�浼稿乏渚ф帰璐�1
+    private Boolean ibOneExtendLeftLoad2 = false; // 涓�浼稿乏渚ф帰璐�2
+    private Boolean ibOneExtendRightLoad1 = false; // 涓�浼稿彸渚ф帰璐�1
+    private Boolean ibOneExtendRightLoad2 = false; // 涓�浼稿彸渚ф帰璐�2
+    private Boolean ibTwoExtendLeftLoad1 = false; // 浜屼几宸︿晶鎺㈣揣1
+    private Boolean ibTwoExtendLeftLoad2 = false; // 浜屼几宸︿晶鎺㈣揣2
+    private Boolean ibTwoExtendRightLoad1 = false; // 浜屼几鍙充晶鎺㈣揣1
+    private Boolean ibTwoExtendRightLoad2 = false; // 浜屼几鍙充晶鎺㈣揣2
+    private Boolean ibSpeedSignal1 = false;      // 瓒呴�熶俊鍙�1
+    private Boolean ibSpeedSignal2 = false;      // 瓒呴�熶俊鍙�2
+    private Boolean ibOverweightSignal1 = false; // 瓒呴噸淇″彿1
+    private Boolean ibOverweightSignal2 = false; // 瓒呴噸淇″彿2
+    private Boolean ibRopeReleaseSignal1 = false; // 鏉剧怀淇″彿1
+    private Boolean ibRopeReleaseSignal2 = false; // 鏉剧怀淇″彿2
+    private Boolean ibSafetyClamp = false;       // 瀹夊叏閽�
+    private Boolean ibTightener = false;         // 寮犵揣鍣�
+    private Boolean ibSpeedLimiter = false;      // 闄愰�熷櫒
+    private Boolean ibSafetyDoorOpen = false;    // 瀹夊叏闂ㄦ墦寮�
+    //-------------------------------------------------------------------
+
+    public BasCrnErrorLog toSqlModelError() {
+        BasCrnErrorLog basCrnErrorLog = new BasCrnErrorLog();
+
+        // 閿欒瀛楁杞崲
+        basCrnErrorLog.setCrnNo(crnNo);
+        basCrnErrorLog.setIbDriveFault(ibDriveFault ? "Y" : "N");       // 琛岃蛋鍙橀鍣ㄦ晠闅�
+        basCrnErrorLog.setIbSupplyFault(ibSupplyFault ? "Y" : "N");      // 鎻愪緵鍙橀鍣ㄦ晠闅�
+        basCrnErrorLog.setIbForkDriveFault(ibForkDriveFault ? "Y" : "N");   // 璐у弶鍙橀鍣ㄦ晠闅�
+        basCrnErrorLog.setIbDriveCircuitFault(ibDriveCircuitFault ? "Y" : "N"); // 琛岃蛋鏂矾鍣ㄦ晠闅�
+        basCrnErrorLog.setIbLiftCircuitFault(ibLiftCircuitFault ? "Y" : "N"); // 鎻愬崌鏂矾鍣ㄦ晠闅�
+        basCrnErrorLog.setIbForkCircuitFault(ibForkCircuitFault ? "Y" : "N"); // 璐у弶鏂矾鍣ㄦ晠闅�
+        basCrnErrorLog.setIbForwardLimit(ibForwardLimit ? "Y" : "N");     // 鍓嶈繘闄愪綅
+        basCrnErrorLog.setIbReverseLimit(ibReverseLimit ? "Y" : "N");     // 鍚庨��闄愪綅
+        basCrnErrorLog.setIbDriveStart(ibDriveStart ? "Y" : "N");       // 琛岃蛋鍘熺偣
+        basCrnErrorLog.setIbForwardBrakeSpeed(ibForwardBrakeSpeed ? "Y" : "N"); // 鍓嶈繘寮哄埗浣庨��
+        basCrnErrorLog.setIbReverseBrakeSpeed(ibReverseBrakeSpeed ? "Y" : "N"); // 鍚庨��寮哄埗浣庨��
+        basCrnErrorLog.setIbUpLimit(ibUpLimit ? "Y" : "N");          // 涓婂崌闄愪綅
+        basCrnErrorLog.setIbDownLimit(ibDownLimit ? "Y" : "N");        // 涓嬮檺闄愪綅
+        basCrnErrorLog.setIbUpOrigin(ibUpOrigin ? "Y" : "N");         // 鎻愬崌鍘熺偣
+        basCrnErrorLog.setIbUpBrakeSpeed(ibUpBrakeSpeed ? "Y" : "N");     // 涓婂崌寮哄埗浣庨��
+        basCrnErrorLog.setIbDownBrakeSpeed(ibDownBrakeSpeed ? "Y" : "N");   // 涓嬮檷寮哄埗浣庨��
+        basCrnErrorLog.setIbPlatformSignal(ibPlatformSignal ? "Y" : "N");   // 杞借揣鍙版帰璐�
+        basCrnErrorLog.setIbForkMidSignal(ibForkMidSignal ? "Y" : "N");    // 璐у弶涓綅淇″彿
+        basCrnErrorLog.setIbForkLeftLimit(ibForkLeftLimit ? "Y" : "N");    // 璐у弶宸︽瀬闄�
+        basCrnErrorLog.setIbForkRightLimit(ibForkRightLimit ? "Y" : "N");   // 璐у弶鍙虫瀬闄�
+        basCrnErrorLog.setIbFrontOverLimit(ibFrontOverLimit ? "Y" : "N");   // 鍓嶈秴闄�
+        basCrnErrorLog.setIbRearOverLimit(ibRearOverLimit ? "Y" : "N");    // 鍚庤秴闄�
+        basCrnErrorLog.setIbLeftOverLimit(ibLeftOverLimit ? "Y" : "N");    // 宸﹁秴闄�
+        basCrnErrorLog.setIbRightOverLimit(ibRightOverLimit ? "Y" : "N");   // 鍙宠秴闄�
+        basCrnErrorLog.setIbHighOverLimit1(ibHighOverLimit1 ? "Y" : "N");   // 楂樿秴闄�1
+        basCrnErrorLog.setIbHighOverLimit2(ibHighOverLimit2 ? "Y" : "N");   // 楂樿秴闄�2
+        basCrnErrorLog.setIbHighOverLimit3(ibHighOverLimit3 ? "Y" : "N");   // 楂樿秴闄�3
+        basCrnErrorLog.setIbOneExtendLeftLoad1(ibOneExtendLeftLoad1 ? "Y" : "N"); // 涓�浼稿乏渚ф帰璐�1
+        basCrnErrorLog.setIbOneExtendLeftLoad2(ibOneExtendLeftLoad2 ? "Y" : "N"); // 涓�浼稿乏渚ф帰璐�2
+        basCrnErrorLog.setIbOneExtendRightLoad1(ibOneExtendRightLoad1 ? "Y" : "N"); // 涓�浼稿彸渚ф帰璐�1
+        basCrnErrorLog.setIbOneExtendRightLoad2(ibOneExtendRightLoad2 ? "Y" : "N"); // 涓�浼稿彸渚ф帰璐�2
+        basCrnErrorLog.setIbTwoExtendLeftLoad1(ibTwoExtendLeftLoad1 ? "Y" : "N"); // 浜屼几宸︿晶鎺㈣揣1
+        basCrnErrorLog.setIbTwoExtendLeftLoad2(ibTwoExtendLeftLoad2 ? "Y" : "N"); // 浜屼几宸︿晶鎺㈣揣2
+        basCrnErrorLog.setIbTwoExtendRightLoad1(ibTwoExtendRightLoad1 ? "Y" : "N"); // 浜屼几鍙充晶鎺㈣揣1
+        basCrnErrorLog.setIbTwoExtendRightLoad2(ibTwoExtendRightLoad2 ? "Y" : "N"); // 浜屼几鍙充晶鎺㈣揣2
+        basCrnErrorLog.setIbSpeedSignal1(ibSpeedSignal1 ? "Y" : "N");      // 瓒呴�熶俊鍙�1
+        basCrnErrorLog.setIbSpeedSignal2(ibSpeedSignal2 ? "Y" : "N");      // 瓒呴�熶俊鍙�2
+        basCrnErrorLog.setIbOverweightSignal1(ibOverweightSignal1 ? "Y" : "N"); // 瓒呴噸淇″彿1
+        basCrnErrorLog.setIbOverweightSignal2(ibOverweightSignal2 ? "Y" : "N"); // 瓒呴噸淇″彿2
+        basCrnErrorLog.setIbRopeReleaseSignal1(ibRopeReleaseSignal1 ? "Y" : "N"); // 鏉剧怀淇″彿1
+        basCrnErrorLog.setIbRopeReleaseSignal2(ibRopeReleaseSignal2 ? "Y" : "N"); // 鏉剧怀淇″彿2
+        basCrnErrorLog.setIbSafetyClamp(ibSafetyClamp ? "Y" : "N");       // 瀹夊叏閽�
+        basCrnErrorLog.setIbTightener(ibTightener ? "Y" : "N");         // 寮犵揣鍣�
+        basCrnErrorLog.setIbSpeedLimiter(ibSpeedLimiter ? "Y" : "N");      // 闄愰�熷櫒
+        basCrnErrorLog.setIbSafetyDoorOpen(ibSafetyDoorOpen ? "Y" : "N");    // 瀹夊叏闂ㄦ墦寮�
+
+        return basCrnErrorLog;
+    }
+
+
+
+
+
+
+
     public void setMode(Short mode) {
         this.mode = mode;
         this.modeType = CrnModeType.get(mode);
diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
index c7d06a2..d6d78f9 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -1,6 +1,7 @@
 package com.zy.core.model.protocol;
 
 import com.zy.asrs.entity.BasRgv;
+import com.zy.asrs.entity.BasRgvErrorLog;
 import com.zy.core.enums.RgvModeType;
 import com.zy.core.enums.RgvStatusType;
 import lombok.Data;
@@ -208,7 +209,51 @@
 
 
     ///////////////////////////////////////////////////////////////////////////////////////
+    //閰嶇疆淇″彿-----------------------------------------------------------------------------
+    // 鏁呴殰璇诲彇閿佸畾鏍囪
+    private boolean errorMk = false;
+    //鍐欏叆鏍囪
+    private boolean writeMk = true;
+    private Boolean chainForward1 = false;       // 閾炬潯鍓嶈繘 1
+    private Boolean chainReverse1 = false;       // 閾炬潯鍚庨�� 1
+    private Boolean inverterAlarm = false;       // 鍙橀鍣ㄦ姤璀�
+    private Boolean leftOverlimit2 = false;      // 宸﹁秴闄� 2
+    private Boolean rightOverlimit2 = false;     // 鍙宠秴闄� 2
+    private Boolean leftAtPosition2 = false;     // 宸﹀埌浣� 2
+    private Boolean rightAtPosition2 = false;    // 鍙冲埌浣� 2
+    private Boolean cargoSpeedReduction = false; // 璐х墿鍑忛��
+    private Boolean conveyorInverterAlarm2 = false; // 杈撻�佸彉棰戝櫒鎶ヨ 2
 
+    private Boolean emergencyStop = false;       // 鎬ュ仠瑙﹀彂
+    private Boolean slot1EmptyNoData = false;    // 1鍙蜂綅鏈夌墿鏃犺祫鏂�
+    private Boolean slot2EmptyNoData = false;    // 2鍙蜂綅鏈夌墿鏃犺祫鏂�
+    private Boolean commandErrorChainConflict = false; // 鍛戒护閿欒璧伴摼鏉″啿绐�
+    private Boolean targetPositionIssue = false; // 鐩爣浣嶄笅鍙戦敊璇�
+    private Boolean travelInverterError = false; // 璧拌鍙橀鍣ㄥ紓甯�
+    private Boolean photoelectric1Error = false; // 1鍙峰厜鐢靛紓甯�
+    private Boolean photoelectric2Error = false; // 2鍙峰厜鐢靛紓甯�
+    private Boolean timeoutConnectionWithLine = false; // 涓庤緭绾挎椂鎺ヨ秴鏃�
+    private Boolean leftRollerTimeout = false;    // 宸︿晶婊氱瓛杩愯瓒呮椂
+    private Boolean rightRollerTimeout = false;   // 鍙充晶婊氱瓛杩愯瓒呮椂
+    private Boolean rgvRunTimeout = false;        // rgv杩愯瓒呮椂
+    private Boolean position1ChainInverterError = false; // 1鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
+    private Boolean position2ChainInverterError = false; // 2鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
+    private Boolean frontRearLimit = false;      // 鍓嶅悗鏋侀檺浣�
+    private Boolean emergencyButton = false;     // 鎬ュ仠鎸夐挳
+    private Boolean forwardButton = false;       // 鍓嶈繘鎸夐挳
+    private Boolean reverseButton = false;       // 鍚庨��鎸夐挳
+    private Boolean localRemote = false;         // 鏈湴/杩滅▼
+    private Boolean reset = false;               // 澶嶄綅
+    private Boolean travelBrakeSwitch = false;   // 璧拌鎶遍椄寮�鍏抽挳
+    private Boolean travelSpeedLimitPhotoelectric = false; // 璧拌寮哄埗鍑忛�熷厜鐢�
+    private Boolean leftOverlimit1 = false;      // 宸﹁秴闄� 1
+    private Boolean rightOverlimit1 = false;     // 鍙宠秴闄� 1
+    private Boolean leftAtPosition1 = false;     // 宸﹀埌浣� 1
+    private Boolean rightAtPosition1 = false;    // 鍙冲埌浣� 1
+
+    private Boolean rightConveyor2 = false;      // 鍙宠緭閫� 2
+    private Boolean leftConveyor2 = false;       // 宸﹁緭閫� 2
+    //---------------------------------------------------------------------
     /**
      * 寮傚父鐮�
      */
@@ -244,6 +289,51 @@
      */
     public Float xDuration;
 
+
+    public BasRgvErrorLog toSqlModelError(){
+        BasRgvErrorLog basRgvErrorLog = new BasRgvErrorLog();
+        basRgvErrorLog.setRgvNo((int) RgvNo);// 璁惧鍙凤紙鍋囪鏈夊畾涔� siteId锛�
+        basRgvErrorLog.setChainForward1(chainForward1 ? "Y" : "N");       // 閾炬潯鍓嶈繘 1
+        basRgvErrorLog.setChainReverse1(chainReverse1 ? "Y" : "N");       // 閾炬潯鍚庨�� 1
+        basRgvErrorLog.setInverterAlarm(inverterAlarm ? "Y" : "N");       // 鍙橀鍣ㄦ姤璀�
+        basRgvErrorLog.setLeftOverlimit2(leftOverlimit2 ? "Y" : "N");      // 宸﹁秴闄� 2
+        basRgvErrorLog.setRightOverlimit2(rightOverlimit2 ? "Y" : "N");     // 鍙宠秴闄� 2
+        basRgvErrorLog.setLeftAtPosition2(leftAtPosition2 ? "Y" : "N");     // 宸﹀埌浣� 2
+        basRgvErrorLog.setRightAtPosition2(rightAtPosition2 ? "Y" : "N");    // 鍙冲埌浣� 2
+        basRgvErrorLog.setCargoSpeedReduction(cargoSpeedReduction ? "Y" : "N"); // 璐х墿鍑忛��
+        basRgvErrorLog.setConveyorInverterAlarm2(conveyorInverterAlarm2 ? "Y" : "N"); // 杈撻�佸彉棰戝櫒鎶ヨ 2
+        basRgvErrorLog.setEmergencyStop(emergencyStop ? "Y" : "N");       // 鎬ュ仠瑙﹀彂
+        basRgvErrorLog.setSlot1EmptyNoData(slot1EmptyNoData ? "Y" : "N");    // 1鍙蜂綅鏈夌墿鏃犺祫鏂�
+        basRgvErrorLog.setSlot2EmptyNoData(slot2EmptyNoData ? "Y" : "N");    // 2鍙蜂綅鏈夌墿鏃犺祫鏂�
+        basRgvErrorLog.setCommandErrorChainConflict(commandErrorChainConflict ? "Y" : "N"); // 鍛戒护閿欒璧伴摼鏉″啿绐�
+        basRgvErrorLog.setTargetPositionIssue(targetPositionIssue ? "Y" : "N"); // 鐩爣浣嶄笅鍙戦敊璇�
+        basRgvErrorLog.setTravelInverterError(travelInverterError ? "Y" : "N"); // 璧拌鍙橀鍣ㄥ紓甯�
+        basRgvErrorLog.setPhotoelectric1Error(photoelectric1Error ? "Y" : "N"); // 1鍙峰厜鐢靛紓甯�
+        basRgvErrorLog.setPhotoelectric2Error(photoelectric2Error ? "Y" : "N"); // 2鍙峰厜鐢靛紓甯�
+        basRgvErrorLog.setTimeoutConnectionWithLine(timeoutConnectionWithLine ? "Y" : "N"); // 涓庤緭绾挎椂鎺ヨ秴鏃�
+        basRgvErrorLog.setLeftRollerTimeout(leftRollerTimeout ? "Y" : "N");    // 宸︿晶婊氱瓛杩愯瓒呮椂
+        basRgvErrorLog.setRightRollerTimeout(rightRollerTimeout ? "Y" : "N");   // 鍙充晶婊氱瓛杩愯瓒呮椂
+        basRgvErrorLog.setRgvRunTimeout(rgvRunTimeout ? "Y" : "N");        // rgv杩愯瓒呮椂
+        basRgvErrorLog.setPosition1ChainInverterError(position1ChainInverterError ? "Y" : "N"); // 1鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
+        basRgvErrorLog.setPosition2ChainInverterError(position2ChainInverterError ? "Y" : "N"); // 2鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
+        basRgvErrorLog.setFrontRearLimit(frontRearLimit ? "Y" : "N");      // 鍓嶅悗鏋侀檺浣�
+        basRgvErrorLog.setEmergencyButton(emergencyButton ? "Y" : "N");     // 鎬ュ仠鎸夐挳
+        basRgvErrorLog.setForwardButton(forwardButton ? "Y" : "N");       // 鍓嶈繘鎸夐挳
+        basRgvErrorLog.setReverseButton(reverseButton ? "Y" : "N");       // 鍚庨��鎸夐挳
+        basRgvErrorLog.setLocalRemote(localRemote ? "Y" : "N");         // 鏈湴/杩滅▼
+        basRgvErrorLog.setReset(reset ? "Y" : "N");               // 澶嶄綅
+        basRgvErrorLog.setTravelBrakeSwitch(travelBrakeSwitch ? "Y" : "N");   // 璧拌鎶遍椄寮�鍏抽挳
+        basRgvErrorLog.setTravelSpeedLimitPhotoelectric(travelSpeedLimitPhotoelectric ? "Y" : "N"); // 璧拌寮哄埗鍑忛�熷厜鐢�
+        basRgvErrorLog.setLeftOverlimit1(leftOverlimit1 ? "Y" : "N");      // 宸﹁秴闄� 1
+        basRgvErrorLog.setRightOverlimit1(rightOverlimit1 ? "Y" : "N");     // 鍙宠秴闄� 1
+        basRgvErrorLog.setLeftAtPosition1(leftAtPosition1 ? "Y" : "N");     // 宸﹀埌浣� 1
+        basRgvErrorLog.setRightAtPosition1(rightAtPosition1 ? "Y" : "N");    // 鍙冲埌浣� 1
+        basRgvErrorLog.setRightConveyor2(rightConveyor2 ? "Y" : "N");      // 鍙宠緭閫� 2
+        basRgvErrorLog.setLeftConveyor2(leftConveyor2 ? "Y" : "N");       // 宸﹁緭閫� 2
+
+        return basRgvErrorLog;
+    }
+
     public void setMode(Short mode) {
         this.mode = mode;
         this.modeType = RgvModeType.get(mode);
diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
index 52dd97c..8bcba40 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -4,9 +4,6 @@
 import com.zy.asrs.entity.BasDevpErrorLog;
 import lombok.Data;
 
-import java.util.HashMap;
-import java.util.Map;
-
 /**
  * 杈撻�佺嚎plc鍗曚釜绔欑偣璇︾粏淇℃伅
  * Created by vincent on 2020/8/6
@@ -136,33 +133,82 @@
     private Boolean res4 = false; //棰勭暀4
     private Boolean res5 = false; //棰勭暀5
     private Boolean dataError = false; //鏁版嵁閿欒
+    //閰嶇疆淇″彿
+    private Boolean sensorGArrive = false; //鐩寸嚎鍏夌數
+    private Boolean sensorGDec = false; //鍑忛�熷厜鐢�
+    private Boolean sensorGArrive2 = false; //鐩寸嚎鍑稿嚭
+    private Boolean sensorLimit = false; //闄愪綅淇濇姢鍏夌數
+    private Boolean emergency = false; //鎬ュ仠
+    private Boolean sensorGLeave = false; //鍏夌數绂诲紑1
+    private Boolean sensorGLeave2 = false; //鍏夌數绂诲紑2
+    private Boolean sensorCUp = false; //椤跺崌涓婂崌
+    private Boolean sensorCDown = false; //椤跺崌涓嬮檷
+    private Boolean liftMotorFr = false; //椤跺崌鐑户
+    private Boolean lineMotorFr = false; //鐩寸嚎鐑户
+    private Boolean tranMotorFr = false; //绉绘牻鐑户
+    private Boolean rst1 = false; //澶囩敤1
+    private Boolean rst2 = false; //澶囩敤2
+    private Boolean rst3 = false; //澶囩敤3
+    private Boolean rst4 = false; //澶囩敤4
+    private Boolean sensorArriveD = false; //鐩磋鏂瑰悜鍒颁綅
+    private Boolean sensorDecD = false; //鐩磋鏂瑰悜鍑忛��
+    private Boolean sensorArriveL = false; //宸︾Щ鏂瑰悜鍒颁綅
+    private Boolean sensorDecL = false; //宸︾Щ鏂瑰悜鍑忛��
+    private Boolean sensorArriveR = false; //鍙崇Щ鏂瑰悜鍒颁綅
+    private Boolean sensorDecR = false; //鍙崇Щ鏂瑰悜鍑忛��
+
 
     public BasDevpErrorLog toSqlModelError(){
         BasDevpErrorLog basDevpErrorLog = new BasDevpErrorLog();
-        basDevpErrorLog.setDevNo(siteId);
-        basDevpErrorLog.setPassTimeOut(passTimeOut?"Y":"N");
-        basDevpErrorLog.setObjectNoIdError(objectNoIdError?"Y":"N");
-        basDevpErrorLog.setIdNoObjectError(idNoObjectError?"Y":"N");
-        basDevpErrorLog.setLmfrError(lmfrError?"Y":"N");
-        basDevpErrorLog.setLiftError(liftError?"Y":"N");
-        basDevpErrorLog.setDlfrError(dlfrError?"Y":"N");
-        basDevpErrorLog.setDmfrError(dmfrError?"Y":"N");
-        basDevpErrorLog.setVfdError(vfdError?"Y":"N");
-        basDevpErrorLog.setSrvError(srvError?"Y":"N");
-        basDevpErrorLog.setRes1(res1?"Y":"N");
-        basDevpErrorLog.setRes2(res2?"Y":"N");
-        basDevpErrorLog.setRes3(res3?"Y":"N");
-        basDevpErrorLog.setCommunicationTimeOut(communicationTimeOut?"Y":"N");
-        basDevpErrorLog.setParameterIncompleteError(parameterIncompleteError?"Y":"N");
-        basDevpErrorLog.setDataNotClear(dataNotClear?"Y":"N");
-        basDevpErrorLog.setSetParameterError(setParameterError?"Y":"N");
-        basDevpErrorLog.setInEnable(res4?"Y":"N");
-        basDevpErrorLog.setOutEnable(res5?"Y":"N");
-        basDevpErrorLog.setDataError(dataError?"Y":"N");
+        basDevpErrorLog.setDevNo(siteId); // 璁惧鍙凤紙鍋囪鏈夊畾涔� siteId锛�
+        basDevpErrorLog.setPassTimeOut(passTimeOut ? "Y" : "N");
+        basDevpErrorLog.setObjectNoIdError(objectNoIdError ? "Y" : "N");
+        basDevpErrorLog.setIdNoObjectError(idNoObjectError ? "Y" : "N");
+        basDevpErrorLog.setLmfrError(lmfrError ? "Y" : "N");
+        basDevpErrorLog.setLiftError(liftError ? "Y" : "N");
+        basDevpErrorLog.setDlfrError(dlfrError ? "Y" : "N");
+        basDevpErrorLog.setDmfrError(dmfrError ? "Y" : "N");
+        basDevpErrorLog.setVfdError(vfdError ? "Y" : "N");
+        basDevpErrorLog.setSrvError(srvError ? "Y" : "N");
+        basDevpErrorLog.setRes1(res1 ? "Y" : "N");
+        basDevpErrorLog.setRes2(res2 ? "Y" : "N");
+        basDevpErrorLog.setRes3(res3 ? "Y" : "N");
+        basDevpErrorLog.setCommunicationTimeOut(communicationTimeOut ? "Y" : "N");
+        basDevpErrorLog.setParameterIncompleteError(parameterIncompleteError ? "Y" : "N");
+        basDevpErrorLog.setDataNotClear(dataNotClear ? "Y" : "N");
+        basDevpErrorLog.setSetParameterError(setParameterError ? "Y" : "N");
+        basDevpErrorLog.setInEnable(res4 ? "Y" : "N");
+        basDevpErrorLog.setOutEnable(res5 ? "Y" : "N");
+        basDevpErrorLog.setDataError(dataError ? "Y" : "N");
+        // 閰嶇疆淇″彿
+        basDevpErrorLog.setSensorGArrive(sensorGArrive ? "Y" : "N");
+        basDevpErrorLog.setSensorGDec(sensorGDec ? "Y" : "N");
+        basDevpErrorLog.setSensorGArrive2(sensorGArrive2 ? "Y" : "N");
+        basDevpErrorLog.setSensorLimit(sensorLimit ? "Y" : "N");
+        basDevpErrorLog.setEmergency(emergency ? "Y" : "N");
+        basDevpErrorLog.setSensorGLeave(sensorGLeave ? "Y" : "N");
+        basDevpErrorLog.setSensorGLeave2(sensorGLeave2 ? "Y" : "N");
+        basDevpErrorLog.setSensorCUp(sensorCUp ? "Y" : "N");
+        basDevpErrorLog.setSensorCDown(sensorCDown ? "Y" : "N");
+        basDevpErrorLog.setLiftMotorFr(liftMotorFr ? "Y" : "N");
+        basDevpErrorLog.setLineMotorFr(lineMotorFr ? "Y" : "N");
+        basDevpErrorLog.setTranMotorFr(tranMotorFr ? "Y" : "N");
+        basDevpErrorLog.setRst1(rst1 ? "Y" : "N");
+        basDevpErrorLog.setRst2(rst2 ? "Y" : "N");
+        basDevpErrorLog.setRst3(rst3 ? "Y" : "N");
+        basDevpErrorLog.setRst4(rst4 ? "Y" : "N");
+        basDevpErrorLog.setSensorArriveD(sensorArriveD ? "Y" : "N");
+        basDevpErrorLog.setSensorDecD(sensorDecD ? "Y" : "N");
+        basDevpErrorLog.setSensorArriveL(sensorArriveL ? "Y" : "N");
+        basDevpErrorLog.setSensorDecL(sensorDecL ? "Y" : "N");
+        basDevpErrorLog.setSensorArriveR(sensorArriveR ? "Y" : "N");
+        basDevpErrorLog.setSensorDecR(sensorDecR ? "Y" : "N");
+
         return basDevpErrorLog;
     }
 
 
+
     public Boolean isErr(){
         if (frontErr || backErr || highErr || leftErr || rightErr || weightErr || barcodeErr){
             return true;
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 3d88efe..d8e1bed 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -10,14 +10,8 @@
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.BasDevp;
-import com.zy.asrs.entity.BasRgv;
-import com.zy.asrs.entity.BasRgvMap;
-import com.zy.asrs.entity.BasRgvOpt;
-import com.zy.asrs.service.BasDevpService;
-import com.zy.asrs.service.BasRgvMapService;
-import com.zy.asrs.service.BasRgvOptService;
-import com.zy.asrs.service.BasRgvService;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.service.*;
 import com.zy.common.utils.News;
 import com.zy.core.RgvThread2;
 import com.zy.core.ThreadHandler;
@@ -280,7 +274,7 @@
     private void readStatus(){
         try {
 
-            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 38);
+            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 42);
             if (result.IsSuccess) {
                 if (null == rgvProtocol) {
                     rgvProtocol = new RgvProtocol();
@@ -312,6 +306,53 @@
                 rgvProtocol.setErr10(status3[1]);
                 rgvProtocol.setErr11(status3[2]);
                 rgvProtocol.setErr12(status3[3]);
+                boolean[] statusErr = siemensNet.getByteTransform().TransBool(result.Content, 36, 6);
+                rgvProtocol.setEmergencyStop(statusErr[0]);       // 鎬ュ仠瑙﹀彂
+                rgvProtocol.setSlot1EmptyNoData(statusErr[1]);   // 1鍙蜂綅鏈夌墿鏃犺祫鏂�
+                rgvProtocol.setSlot2EmptyNoData(statusErr[2]);   // 2鍙蜂綅鏈夌墿鏃犺祫鏂�
+                rgvProtocol.setCommandErrorChainConflict(statusErr[3]); // 鍛戒护閿欒璧伴摼鏉″啿绐�
+                rgvProtocol.setTargetPositionIssue(statusErr[4]); // 鐩爣浣嶄笅鍙戦敊璇�
+                rgvProtocol.setTravelInverterError(statusErr[5]); // 璧拌鍙橀鍣ㄥ紓甯�
+                rgvProtocol.setPhotoelectric1Error(statusErr[6]); // 1鍙峰厜鐢靛紓甯�
+                rgvProtocol.setPhotoelectric2Error(statusErr[7]); // 2鍙峰厜鐢靛紓甯�
+                rgvProtocol.setTimeoutConnectionWithLine(statusErr[8]); // 涓庤緭绾挎椂鎺ヨ秴鏃�
+                rgvProtocol.setLeftRollerTimeout(statusErr[9]);    // 宸︿晶婊氱瓛杩愯瓒呮椂
+                rgvProtocol.setRightRollerTimeout(statusErr[10]);   // 鍙充晶婊氱瓛杩愯瓒呮椂
+                rgvProtocol.setRgvRunTimeout(statusErr[11]);        // rgv杩愯瓒呮椂
+                rgvProtocol.setPosition1ChainInverterError(statusErr[12]); // 1鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
+                rgvProtocol.setPosition2ChainInverterError(statusErr[13]); // 2鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
+                rgvProtocol.setFrontRearLimit(statusErr[14]);      // 鍓嶅悗鏋侀檺浣�
+                rgvProtocol.setEmergencyButton(statusErr[15]);     // 鎬ュ仠鎸夐挳
+                rgvProtocol.setForwardButton(statusErr[16]);       // 鍓嶈繘鎸夐挳
+                rgvProtocol.setReverseButton(statusErr[17]);       // 鍚庨��鎸夐挳
+                rgvProtocol.setLocalRemote(statusErr[18]);         // 鏈湴/杩滅▼
+                rgvProtocol.setReset(statusErr[19]);               // 澶嶄綅
+                rgvProtocol.setTravelBrakeSwitch(statusErr[20]);   // 璧拌鎶遍椄寮�鍏抽挳
+                rgvProtocol.setTravelSpeedLimitPhotoelectric(statusErr[21]); // 璧拌寮哄埗鍑忛�熷厜鐢�
+                rgvProtocol.setLeftOverlimit1(statusErr[22]);      // 宸﹁秴闄� 1
+                rgvProtocol.setRightOverlimit1(statusErr[23]);     // 鍙宠秴闄� 1
+                rgvProtocol.setLeftAtPosition1(statusErr[24]);     // 宸﹀埌浣� 1
+                rgvProtocol.setRightAtPosition1(statusErr[25]);    // 鍙冲埌浣� 1
+                rgvProtocol.setChainForward1(statusErr[26]);       // 閾炬潯鍓嶈繘 1
+                rgvProtocol.setChainReverse1(statusErr[27]);       // 閾炬潯鍚庨�� 1
+                rgvProtocol.setInverterAlarm(statusErr[28]);       // 鍙橀鍣ㄦ姤璀�
+                rgvProtocol.setLeftOverlimit2(statusErr[29]);      // 宸﹁秴闄� 2
+                rgvProtocol.setRightOverlimit2(statusErr[30]);     // 鍙宠秴闄� 2
+                rgvProtocol.setLeftAtPosition2(statusErr[31]);     // 宸﹀埌浣� 2
+                rgvProtocol.setRightAtPosition2(statusErr[32]);    // 鍙冲埌浣� 2
+                rgvProtocol.setCargoSpeedReduction(statusErr[33]); // 璐х墿鍑忛��
+                rgvProtocol.setConveyorInverterAlarm2(statusErr[34]); // 杈撻�佸彉棰戝櫒鎶ヨ 2
+                rgvProtocol.setRightConveyor2(statusErr[35]);      // 鍙宠緭閫� 2
+                rgvProtocol.setLeftConveyor2(statusErr[36]);       // 宸﹁緭閫� 2
+                if(rgvProtocol.getStatus() == 99){
+                    rgvProtocol.setErrorMk(true);//鑻ュ瓨鍦ㄥ紓甯歌Е鍙戝啓鍏�
+                }else{
+                    rgvProtocol.setWriteMk(true);//鏃犲紓甯稿悗鎵嶈兘缁х画鍐欏叆
+                    rgvProtocol.setErrorMk(false);
+                }
+
+
+
 //                BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class);
                 OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId()));
                 try {
@@ -320,6 +361,18 @@
                     BasRgv basRgv = new BasRgv();
                     basRgv.setRgvNo(slave.getId());
                     basRgv.setRgvSts((int)rgvProtocol.getMode());
+                    if(rgvProtocol.isWriteMk() && rgvProtocol.isErrorMk()){
+                        try {
+                            // 鏃ュ織璁板綍寮傚父鎯呭喌
+                            BasRgvErrorLog basRgvErrorLogs;
+                            basRgvErrorLogs = rgvProtocol.toSqlModelError();
+                            BasRgvErrorLogService basRgvErrorLogService = SpringUtils.getBean(BasRgvErrorLogService.class);
+                            basRgvErrorLogService.insert(basRgvErrorLogs);
+                            rgvProtocol.setWriteMk(false);
+                        } catch (Exception ignore) {
+                            log.error(ignore.getMessage());
+                        }
+                    }
                     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());
                     }
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 227c904..159512d 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -8,10 +8,14 @@
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
+import com.zy.asrs.entity.BasCrnErrorLog;
 import com.zy.asrs.entity.BasCrnOpt;
 import com.zy.asrs.entity.BasCrnp;
+import com.zy.asrs.entity.BasDevpErrorLog;
+import com.zy.asrs.service.BasCrnErrorLogService;
 import com.zy.asrs.service.BasCrnOptService;
 import com.zy.asrs.service.BasCrnpService;
+import com.zy.asrs.service.BasDevpErrorLogService;
 import com.zy.common.utils.News;
 import com.zy.core.CrnThread;
 import com.zy.core.cache.MessageQueue;
@@ -166,6 +170,7 @@
     private void readStatus(){
         try {
             OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56);
+            OperateResultExOne<byte[]> resultErr = siemensNet.Read("DB64.0", (short) 7);
             if (result.IsSuccess) {
                 if (null == crnProtocol) {
                     crnProtocol = new CrnProtocol();
@@ -194,6 +199,63 @@
                 crnProtocol.setxDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48));
                 crnProtocol.setyDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52));
 
+
+                boolean[] statusSign = siemensNet.getByteTransform().TransBool(resultErr.Content, 0, 7);
+
+                crnProtocol.setIbDriveFault(statusSign[0]);       // 琛岃蛋鍙橀鍣ㄦ晠闅�
+                crnProtocol.setIbSupplyFault(statusSign[1]);      // 鎻愪緵鍙橀鍣ㄦ晠闅�
+                crnProtocol.setIbForkDriveFault(statusSign[2]);   // 璐у弶鍙橀鍣ㄦ晠闅�
+                crnProtocol.setIbDriveCircuitFault(statusSign[3]); // 琛岃蛋鏂矾鍣ㄦ晠闅�
+                crnProtocol.setIbLiftCircuitFault(statusSign[4]); // 鎻愬崌鏂矾鍣ㄦ晠闅�
+                crnProtocol.setIbForkCircuitFault(statusSign[5]); // 璐у弶鏂矾鍣ㄦ晠闅�
+                crnProtocol.setIbForwardLimit(statusSign[6]);     // 鍓嶈繘闄愪綅
+                crnProtocol.setIbReverseLimit(statusSign[7]);     // 鍚庨��闄愪綅
+                crnProtocol.setIbDriveStart(statusSign[8]);       // 琛岃蛋鍘熺偣
+                crnProtocol.setIbForwardBrakeSpeed(statusSign[9]); // 鍓嶈繘寮哄埗浣庨��
+                crnProtocol.setIbReverseBrakeSpeed(statusSign[10]); // 鍚庨��寮哄埗浣庨��
+                crnProtocol.setIbUpLimit(statusSign[11]);          // 涓婂崌闄愪綅
+                crnProtocol.setIbDownLimit(statusSign[12]);        // 涓嬮檺闄愪綅
+                crnProtocol.setIbUpOrigin(statusSign[13]);         // 鎻愬崌鍘熺偣
+                crnProtocol.setIbUpBrakeSpeed(statusSign[14]);     // 涓婂崌寮哄埗浣庨��
+                crnProtocol.setIbDownBrakeSpeed(statusSign[15]);   // 涓嬮檷寮哄埗浣庨��
+                crnProtocol.setIbPlatformSignal(statusSign[16]);   // 杞借揣鍙版帰璐�
+                crnProtocol.setIbForkMidSignal(statusSign[17]);    // 璐у弶涓綅淇″彿
+                crnProtocol.setIbForkLeftLimit(statusSign[18]);    // 璐у弶宸︽瀬闄�
+                crnProtocol.setIbForkRightLimit(statusSign[19]);   // 璐у弶鍙虫瀬闄�
+                crnProtocol.setIbFrontOverLimit(statusSign[20]);   // 鍓嶈秴闄�
+                crnProtocol.setIbRearOverLimit(statusSign[21]);    // 鍚庤秴闄�
+                crnProtocol.setIbLeftOverLimit(statusSign[22]);    // 宸﹁秴闄�
+                crnProtocol.setIbRightOverLimit(statusSign[23]);   // 鍙宠秴闄�
+                crnProtocol.setIbHighOverLimit1(statusSign[24]);   // 楂樿秴闄�1
+                crnProtocol.setIbHighOverLimit2(statusSign[25]);   // 楂樿秴闄�2
+                crnProtocol.setIbHighOverLimit3(statusSign[26]);   // 楂樿秴闄�3
+                crnProtocol.setIbOneExtendLeftLoad1(statusSign[27]); // 涓�浼稿乏渚ф帰璐�1
+                crnProtocol.setIbOneExtendLeftLoad2(statusSign[28]); // 涓�浼稿乏渚ф帰璐�2
+                crnProtocol.setIbOneExtendRightLoad1(statusSign[29]); // 涓�浼稿彸渚ф帰璐�1
+                crnProtocol.setIbOneExtendRightLoad2(statusSign[30]); // 涓�浼稿彸渚ф帰璐�2
+                crnProtocol.setIbTwoExtendLeftLoad1(statusSign[31]); // 浜屼几宸︿晶鎺㈣揣1
+                crnProtocol.setIbTwoExtendLeftLoad2(statusSign[32]); // 浜屼几宸︿晶鎺㈣揣2
+                crnProtocol.setIbTwoExtendRightLoad1(statusSign[33]); // 浜屼几鍙充晶鎺㈣揣1
+                crnProtocol.setIbTwoExtendRightLoad2(statusSign[34]); // 浜屼几鍙充晶鎺㈣揣2
+                crnProtocol.setIbSpeedSignal1(statusSign[35]);      // 瓒呴�熶俊鍙�1
+                crnProtocol.setIbSpeedSignal2(statusSign[36]);      // 瓒呴�熶俊鍙�2
+                crnProtocol.setIbOverweightSignal1(statusSign[37]); // 瓒呴噸淇″彿1
+                crnProtocol.setIbOverweightSignal2(statusSign[38]); // 瓒呴噸淇″彿2
+                crnProtocol.setIbRopeReleaseSignal1(statusSign[39]); // 鏉剧怀淇″彿1
+                crnProtocol.setIbRopeReleaseSignal2(statusSign[40]); // 鏉剧怀淇″彿2
+                crnProtocol.setIbSafetyClamp(statusSign[41]);       // 瀹夊叏閽�
+                crnProtocol.setIbTightener(statusSign[42]);         // 寮犵揣鍣�
+                crnProtocol.setIbSpeedLimiter(statusSign[43]);      // 闄愰�熷櫒
+                crnProtocol.setIbSafetyDoorOpen(statusSign[44]);    // 瀹夊叏闂ㄦ墦寮�
+
+                if(crnProtocol.getStatus() == 99){
+                    crnProtocol.setErrorMk(true);//鑻ュ瓨鍦ㄥ紓甯歌Е鍙戝啓鍏�
+                }else{
+                    crnProtocol.setWriteMk(true);//鏃犲紓甯稿悗鎵嶈兘缁х画鍐欏叆
+                    crnProtocol.setErrorMk(false);
+                }
+
+
                 OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
                 // 澶嶄綅淇″彿
@@ -221,6 +283,18 @@
                     BasCrnp basCrnp = new BasCrnp();
                     basCrnp.setCrnNo(slave.getId());
                     basCrnp.setCrnSts((int)crnProtocol.getMode());
+                    if(crnProtocol.isWriteMk() && crnProtocol.isErrorMk()){
+                        try {
+                            // 鏃ュ織璁板綍寮傚父鎯呭喌
+                            BasCrnErrorLog basCrnErrorLogs;
+                            basCrnErrorLogs = crnProtocol.toSqlModelError();
+                            BasCrnErrorLogService basCrnErrorLogService = SpringUtils.getBean(BasCrnErrorLogService.class);
+                            basCrnErrorLogService.insert(basCrnErrorLogs);
+                            crnProtocol.setWriteMk(false);
+                        } catch (Exception ignore) {
+                            log.error(ignore.getMessage());
+                        }
+                    }
                     if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
                         News.error("SiemensCrn"+" - 3"+" - 鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
                     }
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 83db7d4..affd623 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -120,6 +120,43 @@
         // 鍏朵粬绔欑偣鍚岀悊缁х画鍔�
     }};
 
+    // 绔欑偣淇″彿鍋忕Щ閲忔槧灏勮〃
+    public static final Map<Integer, Integer> siteOffsetMapSign = new HashMap<Integer, Integer>() {{
+        put(1001, 0);put(1002, 4);put(1003, 8);put(1004, 12);put(1005, 16);put(1006, 20);put(1007, 24);
+        put(1008, 28);put(1009, 32);put(1010, 36);put(1011, 40);put(1012, 44);put(1013, 48);put(1014, 52);
+        put(1015, 56);put(1016, 60);put(1017, 64);put(1018, 68);put(1019, 72);put(1020, 76);put(1021, 80);
+        put(1022, 84);put(1023, 88);put(1024, 92);put(1025, 96);put(1026, 100);put(1027, 104);put(1028, 108);
+        put(1029, 112);put(1030, 116);put(1031, 120);put(1032, 124);put(1033, 128);put(1034, 132);put(1035, 136);
+        put(1036, 140);put(1037, 144);put(1038, 148);put(1039, 152);put(1040, 156);put(1041, 160);
+
+        put(1042, 392);put(1043, 396);put(1044, 400);put(1045, 404);put(1046, 408);put(1047, 412);
+        put(1048, 416);put(1049, 420);put(1050, 424);put(1051, 428);put(1052, 432);put(1053, 436);
+
+        put(1054, 288);put(1055, 292);put(1056, 296);put(1057, 300);put(1058, 304);put(1059, 308);put(1060, 312);
+        put(1061, 316);put(1062, 320);put(1063, 324);put(1064, 328);put(1065, 332);put(1066, 336);put(1067, 340);
+        put(1068, 344);put(1069, 348);put(1070, 352);put(1071, 356);put(1072, 360);put(1073, 364);put(1074, 368);
+        put(1075, 372);put(1076, 376);put(1077, 380);put(1078, 384);put(1079, 388);
+
+        put(1080, 164);put(1081, 168);put(1082, 172);put(1083, 176);put(1084, 180);put(1085, 184);put(1086, 188);
+        put(1087, 192);put(1088, 196);put(1089, 200);put(1090, 204);put(1091, 208);put(1092, 212);put(1093, 216);
+        put(1094, 220);put(1095, 224);put(1096, 228);put(1097, 232);put(1098, 236);put(1099, 240);put(1100, 244);
+        put(1101, 248);put(1102, 252);put(1103, 256);put(1104, 260);put(1105, 264);
+        put(1106, 268);put(1107, 272);put(1108, 276);put(1109, 280);put(1110, 284);
+
+        put(2001, 0);put(2002, 4);put(2003, 8);put(2004, 12);put(2005, 16);
+        put(2006, 20);put(2007, 24);put(2008, 28);put(2009, 32);put(2010, 36);
+        put(2011, 40);put(2012, 44);put(2013, 48);put(2014, 52);put(2015, 56);
+        put(2016, 60);put(2017, 64);put(2018, 68);put(2019, 72);put(2020, 76);
+        put(2021, 80);put(2022, 84);put(2023, 88);put(2024, 92);put(2025, 96);
+        put(2026, 100);put(2027, 104);put(2028, 108);put(2029, 112);put(2030, 116);
+        put(2031, 120);put(2032, 124);put(2033, 128);put(2034, 132);put(2035, 136);
+        put(2037, 144);
+
+        put(4001, 240);put(4002, 244);put(4003, 248);put(4004, 252);put(4005, 256);
+        put(4006, 260);
+        // 鍏朵粬绔欑偣鍚岀悊缁х画鍔�
+    }};
+
     public static final Map<Integer, Integer> siteErrOffsetMap = new HashMap<Integer, Integer>() {{
         put(1036, 512);put(1103, 476);put(1047, 452);put(2037, 270);put(4001,294);
 
@@ -459,8 +496,9 @@
                 if (offset == null) {
                     continue; // 濡傛灉娌″畾涔夊亸绉婚噺锛岃烦杩�
                 }
-                Integer offset2 = getOffsetBySiteId(siteId);
+                Integer offset2 = getOffsetBySiteId(siteId);//鐗规畩鍋忕Щ閲忚绠�
                 Integer offset3 = getOffsetBySiteId2(siteId);
+                Integer offsetSign = siteOffsetMapSign.get(siteId);
                 if(siteId == 1040){
                     boolean[] full = siemensS7Net.getByteTransform().TransBool(result.Content, offset, 2);
                     staProtocol.setFull(full[0]);
@@ -493,6 +531,7 @@
                 staProtocol.setAutoing(!status[0]);  // 鑷姩
                 boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result.Content, offset + offset3 - 4, 3);
                 boolean[] statusErr = siemensS7Net.getByteTransform().TransBool(result.Content, offset + offset3 - 8, 3);
+                boolean[] statusSign = siemensS7Net.getByteTransform().TransBool(resultErr.Content, offsetSign, 3);
                 boolean loading = false;
                 if(!status1[0])
                 {
@@ -504,6 +543,7 @@
                 staProtocol.setOutEnable(status1[2]);// 鍙嚭
                 staProtocol.setErr(status1[6]);
 
+                //鎶ヨ
                 staProtocol.setPassTimeOut(statusErr[0]);
                 staProtocol.setObjectNoIdError(statusErr[1]);
                 staProtocol.setIdNoObjectError(statusErr[2]);
@@ -523,6 +563,31 @@
                 staProtocol.setRes4(statusErr[16]);
                 staProtocol.setRes5(statusErr[17]);
                 staProtocol.setDataError(statusErr[18]);
+
+                //淇″彿
+                staProtocol.setSensorGArrive(statusSign[0]);
+                staProtocol.setSensorGDec(statusSign[1]);
+                staProtocol.setSensorGArrive2(statusSign[2]);
+                staProtocol.setSensorLimit(statusSign[3]);
+                staProtocol.setEmergency(statusSign[4]);
+                staProtocol.setSensorGLeave(statusSign[5]);
+                staProtocol.setSensorGLeave2(statusSign[6]);
+                staProtocol.setSensorCUp(statusSign[7]);
+                staProtocol.setSensorCDown(statusSign[8]);
+                staProtocol.setLiftMotorFr(statusSign[9]);
+                staProtocol.setLineMotorFr(statusSign[10]);
+                staProtocol.setTranMotorFr(statusSign[11]);
+                staProtocol.setRst1(statusSign[12]);
+                staProtocol.setRst2(statusSign[13]);
+                staProtocol.setRst3(statusSign[14]);
+                staProtocol.setRst4(statusSign[15]);
+                staProtocol.setSensorArriveD(statusSign[16]);
+                staProtocol.setSensorDecD(statusSign[17]);
+                staProtocol.setSensorArriveL(statusSign[18]);
+                staProtocol.setSensorDecL(statusSign[19]);
+                staProtocol.setSensorArriveR(statusSign[20]);
+                staProtocol.setSensorDecR(statusSign[21]);
+
 
                 if( (staProtocol.getPassTimeOut() ||
                     staProtocol.getObjectNoIdError() ||
@@ -644,7 +709,7 @@
                     if(staProtocol.isWriteMk() && staProtocol.isErrorMk()){
                         try {
                             // 鏃ュ織璁板綍寮傚父鎯呭喌
-                            BasDevpErrorLog basDevpErrorLogs = new BasDevpErrorLog();
+                            BasDevpErrorLog basDevpErrorLogs;
                             basDevpErrorLogs = staProtocol.toSqlModelError();
                             BasDevpErrorLogService basDevpErrorLogService = SpringUtils.getBean(BasDevpErrorLogService.class);
                             basDevpErrorLogService.insert(basDevpErrorLogs);
diff --git a/src/main/resources/mapper/BasCrnErrorLogMapper.xml b/src/main/resources/mapper/BasCrnErrorLogMapper.xml
new file mode 100644
index 0000000..2416c59
--- /dev/null
+++ b/src/main/resources/mapper/BasCrnErrorLogMapper.xml
@@ -0,0 +1,58 @@
+<?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.BasCrnErrorLogMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasCrnErrorLog">
+        <result column="crn_no" property="crnNo" />
+        <result column="ib_drive_fault" property="ibDriveFault" />
+        <result column="ib_supply_fault" property="ibSupplyFault" />
+        <result column="ib_fork_drive_fault" property="ibForkDriveFault" />
+        <result column="ib_drive_circuit_fault" property="ibDriveCircuitFault" />
+        <result column="ib_lift_circuit_fault" property="ibLiftCircuitFault" />
+        <result column="ib_fork_circuit_fault" property="ibForkCircuitFault" />
+        <result column="ib_forward_limit" property="ibForwardLimit" />
+        <result column="ib_reverse_limit" property="ibReverseLimit" />
+        <result column="ib_drive_start" property="ibDriveStart" />
+        <result column="ib_forward_brake_speed" property="ibForwardBrakeSpeed" />
+        <result column="ib_reverse_brake_speed" property="ibReverseBrakeSpeed" />
+        <result column="ib_up_limit" property="ibUpLimit" />
+        <result column="ib_down_limit" property="ibDownLimit" />
+        <result column="ib_up_origin" property="ibUpOrigin" />
+        <result column="ib_up_brake_speed" property="ibUpBrakeSpeed" />
+        <result column="ib_down_brake_speed" property="ibDownBrakeSpeed" />
+        <result column="create_time" property="createTime" />
+        <result column="ib_platform_signal" property="ibPlatformSignal" />
+        <result column="ib_fork_mid_signal" property="ibForkMidSignal" />
+        <result column="ib_fork_left_limit" property="ibForkLeftLimit" />
+        <result column="id" property="id" />
+        <result column="ib_fork_right_limit" property="ibForkRightLimit" />
+        <result column="ib_front_over_limit" property="ibFrontOverLimit" />
+        <result column="ib_rear_over_limit" property="ibRearOverLimit" />
+        <result column="ib_left_over_limit" property="ibLeftOverLimit" />
+        <result column="ib_right_over_limit" property="ibRightOverLimit" />
+        <result column="ib_high_over_limit_1" property="ibHighOverLimit1" />
+        <result column="ib_high_over_limit_2" property="ibHighOverLimit2" />
+        <result column="ib_high_over_limit_3" property="ibHighOverLimit3" />
+        <result column="ib_one_extend_left_load_1" property="ibOneExtendLeftLoad1" />
+        <result column="ib_one_extend_left_load_2" property="ibOneExtendLeftLoad2" />
+        <result column="ib_one_extend_right_load_1" property="ibOneExtendRightLoad1" />
+        <result column="ib_one_extend_right_load_2" property="ibOneExtendRightLoad2" />
+        <result column="ib_two_extend_left_load_1" property="ibTwoExtendLeftLoad1" />
+        <result column="ib_two_extend_left_load_2" property="ibTwoExtendLeftLoad2" />
+        <result column="ib_two_extend_right_load_1" property="ibTwoExtendRightLoad1" />
+        <result column="ib_two_extend_right_load_2" property="ibTwoExtendRightLoad2" />
+        <result column="ib_speed_signal_1" property="ibSpeedSignal1" />
+        <result column="ib_speed_signal_2" property="ibSpeedSignal2" />
+        <result column="ib_overweight_signal_1" property="ibOverweightSignal1" />
+        <result column="ib_overweight_signal_2" property="ibOverweightSignal2" />
+        <result column="ib_rope_release_signal_1" property="ibRopeReleaseSignal1" />
+        <result column="ib_rope_release_signal_2" property="ibRopeReleaseSignal2" />
+        <result column="ib_safety_clamp" property="ibSafetyClamp" />
+        <result column="ib_tightener" property="ibTightener" />
+        <result column="ib_speed_limiter" property="ibSpeedLimiter" />
+        <result column="ib_safety_door_open" property="ibSafetyDoorOpen" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/BasDevpErrorLogMapper.xml b/src/main/resources/mapper/BasDevpErrorLogMapper.xml
index b101f58..6e68ce9 100644
--- a/src/main/resources/mapper/BasDevpErrorLogMapper.xml
+++ b/src/main/resources/mapper/BasDevpErrorLogMapper.xml
@@ -26,6 +26,28 @@
         <result column="out_enable" property="outEnable" />
         <result column="data_error" property="dataError" />
         <result column="id" property="id" />
+        <result column="sensorG_arrive" property="sensorGArrive" />
+        <result column="sensorG_dec" property="sensorGDec" />
+        <result column="sensorG_arrive2" property="sensorGArrive2" />
+        <result column="sensor_limit" property="sensorLimit" />
+        <result column="emergency" property="emergency" />
+        <result column="sensorG_leave" property="sensorGLeave" />
+        <result column="sensorG_leave2" property="sensorGLeave2" />
+        <result column="sensorC_up" property="sensorCUp" />
+        <result column="sensorC_down" property="sensorCDown" />
+        <result column="lift_motor_fr" property="liftMotorFr" />
+        <result column="line_motor_fr" property="lineMotorFr" />
+        <result column="tran_motor_fr" property="tranMotorFr" />
+        <result column="rst1" property="rst1" />
+        <result column="rst2" property="rst2" />
+        <result column="rst3" property="rst3" />
+        <result column="rst4" property="rst4" />
+        <result column="sensor_arrive_d" property="sensorArriveD" />
+        <result column="sensor_dec_d" property="sensorDecD" />
+        <result column="sensor_arrive_l" property="sensorArriveL" />
+        <result column="sensor_dec_l" property="sensorDecL" />
+        <result column="sensor_arrive_r" property="sensorArriveR" />
+        <result column="sensor_dec_r" property="sensorDecR" />
 
     </resultMap>
 
diff --git a/src/main/resources/mapper/BasRgvErrorLogMapper.xml b/src/main/resources/mapper/BasRgvErrorLogMapper.xml
new file mode 100644
index 0000000..1e752c4
--- /dev/null
+++ b/src/main/resources/mapper/BasRgvErrorLogMapper.xml
@@ -0,0 +1,50 @@
+<?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.BasRgvErrorLogMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasRgvErrorLog">
+        <result column="rgv_no" property="rgvNo" />
+        <result column="emergency_stop" property="emergencyStop" />
+        <result column="slot_1_empty_no_data" property="slot1EmptyNoData" />
+        <result column="slot_2_empty_no_data" property="slot2EmptyNoData" />
+        <result column="command_error_chain_conflict" property="commandErrorChainConflict" />
+        <result column="target_position_issue" property="targetPositionIssue" />
+        <result column="travel_inverter_error" property="travelInverterError" />
+        <result column="photoelectric_1_error" property="photoelectric1Error" />
+        <result column="photoelectric_2_error" property="photoelectric2Error" />
+        <result column="timeout_connection_with_line" property="timeoutConnectionWithLine" />
+        <result column="left_roller_timeout" property="leftRollerTimeout" />
+        <result column="right_roller_timeout" property="rightRollerTimeout" />
+        <result column="rgv_run_timeout" property="rgvRunTimeout" />
+        <result column="position_1_chain_inverter_error" property="position1ChainInverterError" />
+        <result column="position_2_chain_inverter_error" property="position2ChainInverterError" />
+        <result column="front_rear_limit" property="frontRearLimit" />
+        <result column="emergency_button" property="emergencyButton" />
+        <result column="create_time" property="createTime" />
+        <result column="forward_button" property="forwardButton" />
+        <result column="reverse_button" property="reverseButton" />
+        <result column="local_remote" property="localRemote" />
+        <result column="id" property="id" />
+        <result column="reset" property="reset" />
+        <result column="travel_brake_switch" property="travelBrakeSwitch" />
+        <result column="travel_speed_limit_photoelectric" property="travelSpeedLimitPhotoelectric" />
+        <result column="left_overlimit_1" property="leftOverlimit1" />
+        <result column="right_overlimit_1" property="rightOverlimit1" />
+        <result column="left_at_position_1" property="leftAtPosition1" />
+        <result column="right_at_position_1" property="rightAtPosition1" />
+        <result column="chain_forward_1" property="chainForward1" />
+        <result column="chain_reverse_1" property="chainReverse1" />
+        <result column="inverter_alarm" property="inverterAlarm" />
+        <result column="left_overlimit_2" property="leftOverlimit2" />
+        <result column="right_overlimit_2" property="rightOverlimit2" />
+        <result column="left_at_position_2" property="leftAtPosition2" />
+        <result column="right_at_position_2" property="rightAtPosition2" />
+        <result column="cargo_speed_reduction" property="cargoSpeedReduction" />
+        <result column="conveyor_inverter_alarm_2" property="conveyorInverterAlarm2" />
+        <result column="left_conveyor_2" property="leftConveyor2" />
+        <result column="right_conveyor_2" property="rightConveyor2" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml
index 5d5fc77..4e90fba 100644
--- a/src/main/resources/mapper/WrkMastStaMapper.xml
+++ b/src/main/resources/mapper/WrkMastStaMapper.xml
@@ -187,6 +187,12 @@
         and sta_start = #{staStart}
     </select>
 
+    <select id="selectPakingWrkNum" resultMap="BaseResultMap">
+        select * from asr_wrk_mast_sta
+        where mk = 1
+        and rgv_no = #{rgvNo}
+    </select>
+
 
 
 </mapper>
diff --git a/src/main/webapp/static/js/basCrnErrorLog/basCrnErrorLog.js b/src/main/webapp/static/js/basCrnErrorLog/basCrnErrorLog.js
new file mode 100644
index 0000000..78df461
--- /dev/null
+++ b/src/main/webapp/static/js/basCrnErrorLog/basCrnErrorLog.js
@@ -0,0 +1,297 @@
+var pageCurr;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#basCrnErrorLog',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/basCrnErrorLog/list/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            {type: 'checkbox'}
+            ,{field: 'crnNo', align: 'center',title: '缂栧彿'}
+            ,{field: 'ibDriveFault', align: 'center',title: '琛岃蛋鍙橀鍣ㄦ晠闅�'}
+            ,{field: 'ibSupplyFault', align: 'center',title: '鎻愬叡鍙橀鍣ㄦ晠闅�'}
+            ,{field: 'ibForkDriveFault', align: 'center',title: '璐у弶鍙橀鍣ㄦ晠闅�'}
+            ,{field: 'ibDriveCircuitFault', align: 'center',title: '琛岃蛋鏂矾鍣ㄦ晠闅�'}
+            ,{field: 'ibLiftCircuitFault', align: 'center',title: '鎻愬崌鏂矾鍣ㄦ晠闅�'}
+            ,{field: 'ibForkCircuitFault', align: 'center',title: '璐у弶鏂矾鍣ㄦ晠闅�'}
+            ,{field: 'ibForwardLimit', align: 'center',title: '鍓嶈繘闄愪綅'}
+            ,{field: 'ibReverseLimit', align: 'center',title: '鍚庨��闄愪綅'}
+            ,{field: 'ibDriveStart', align: 'center',title: '琛岃蛋鍘熺偣'}
+            ,{field: 'ibForwardBrakeSpeed', align: 'center',title: '鍓嶈繘寮哄埗浣庨��'}
+            ,{field: 'ibReverseBrakeSpeed', align: 'center',title: '鍚庨��寮哄埗浣庨��'}
+            ,{field: 'ibUpLimit', align: 'center',title: '涓婂崌闄愪綅'}
+            ,{field: 'ibDownLimit', align: 'center',title: '涓嬮檺闄愪綅'}
+            ,{field: 'ibUpOrigin', align: 'center',title: '鎻愬崌鍘熺偣'}
+            ,{field: 'ibUpBrakeSpeed', align: 'center',title: '涓婂崌寮哄埗浣庨��'}
+            ,{field: 'ibDownBrakeSpeed', align: 'center',title: '涓嬮檷寮哄埗浣庨��'}
+            ,{field: 'createTime$', align: 'center',title: '鍒涘缓鏃堕棿'}
+            ,{field: 'ibPlatformSignal', align: 'center',title: '杞借揣鍙版帰璐�'}
+            ,{field: 'ibForkMidSignal', align: 'center',title: '璐у弶涓綅淇″彿'}
+            ,{field: 'ibForkLeftLimit', align: 'center',title: '璐у弶宸︽瀬闄�'}
+            ,{field: 'id', align: 'center',title: ''}
+            ,{field: 'ibForkRightLimit', align: 'center',title: '璐у弶鍙虫瀬闄�'}
+            ,{field: 'ibFrontOverLimit', align: 'center',title: '鍓嶈秴闄�'}
+            ,{field: 'ibRearOverLimit', align: 'center',title: '鍚庤秴闄�'}
+            ,{field: 'ibLeftOverLimit', align: 'center',title: '宸﹁秴闄�'}
+            ,{field: 'ibRightOverLimit', align: 'center',title: '鍙宠秴闄�'}
+            ,{field: 'ibHighOverLimit1', align: 'center',title: '楂樿秴闄�1'}
+            ,{field: 'ibHighOverLimit2', align: 'center',title: '楂樿秴闄�2'}
+            ,{field: 'ibHighOverLimit3', align: 'center',title: '楂樿秴闄�3'}
+            ,{field: 'ibOneExtendLeftLoad1', align: 'center',title: '涓�浼稿乏渚ф帰璐�1'}
+            ,{field: 'ibOneExtendLeftLoad2', align: 'center',title: '涓�浼稿乏渚ф帰璐�2'}
+            ,{field: 'ibOneExtendRightLoad1', align: 'center',title: '涓�浼稿彸渚ф帰璐�1'}
+            ,{field: 'ibOneExtendRightLoad2', align: 'center',title: '涓�浼稿彸渚ф帰璐�2'}
+            ,{field: 'ibTwoExtendLeftLoad1', align: 'center',title: '浜屼几宸︿晶鎺㈣揣1'}
+            ,{field: 'ibTwoExtendLeftLoad2', align: 'center',title: '浜屼几宸︿晶鎺㈣揣2'}
+            ,{field: 'ibTwoExtendRightLoad1', align: 'center',title: '浜屼几鍙充晶鎺㈣揣1'}
+            ,{field: 'ibTwoExtendRightLoad2', align: 'center',title: '浜屼几鍙充晶鎺㈣揣2'}
+            ,{field: 'ibSpeedSignal1', align: 'center',title: '瓒呴�熶俊鍙�1'}
+            ,{field: 'ibSpeedSignal2', align: 'center',title: '瓒呴�熶俊鍙�2'}
+            ,{field: 'ibOverweightSignal1', align: 'center',title: '瓒呴噸淇″彿1'}
+            ,{field: 'ibOverweightSignal2', align: 'center',title: '瓒呴噸淇″彿2'}
+            ,{field: 'ibRopeReleaseSignal1', align: 'center',title: '鏉剧怀淇″彿1'}
+            ,{field: 'ibRopeReleaseSignal2', align: 'center',title: '鏉剧怀淇″彿2'}
+            ,{field: 'ibSafetyClamp', align: 'center',title: '瀹夊叏閽�'}
+            ,{field: 'ibTightener', align: 'center',title: '寮犵揣鍣�'}
+            ,{field: 'ibSpeedLimiter', align: 'center',title: '闄愰�熷櫒'}
+            ,{field: 'ibSafetyDoorOpen', align: 'center',title: '瀹夊叏闂ㄦ墦寮�'}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            limit();
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(basCrnErrorLog)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {curr: 1}
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(basCrnErrorLog)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        switch(obj.event) {
+            case 'addData':
+                showEditModel();
+                break;
+            case 'deleteData':
+               if (checkStatus.length === 0) {
+                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                   return;
+               }
+               del(checkStatus.map(function (d) {
+                   return d.id;
+               }));
+               break;
+            case 'exportData':
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'basCrnErrorLog': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/basCrnErrorLog/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(basCrnErrorLog)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case 'edit':
+                showEditModel(data);
+                break;
+            case "del":
+                del([data.id]);
+                break;
+        }
+    });
+
+    /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: '600px',
+            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                layDateRender(mData);
+                form.val('detail', mData);
+                form.on('submit(editSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/basCrnErrorLog/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                tableReload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                layui.form.render('select');
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function del(ids) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/basCrnErrorLog/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '.layui-laydate-range'
+                ,type: 'datetime'
+                ,range: true
+            });
+            layDate.render({
+                elem: '#createTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['createTime\\$']:null
+            });
+
+        }, 300);
+    }
+    layDateRender();
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    tableIns.reload({
+        where: searchData,
+        page: {curr: pageCurr}
+     });
+}
diff --git a/src/main/webapp/static/js/basDevpErrorLog/basDevpErrorLog.js b/src/main/webapp/static/js/basDevpErrorLog/basDevpErrorLog.js
index 7c8ab75..edc66b6 100644
--- a/src/main/webapp/static/js/basDevpErrorLog/basDevpErrorLog.js
+++ b/src/main/webapp/static/js/basDevpErrorLog/basDevpErrorLog.js
@@ -42,7 +42,30 @@
             ,{field: 'createTime$', align: 'center',title: '鍒涘缓鏃堕棿'}
             ,{field: 'inEnable', align: 'center',title: ''}
             ,{field: 'outEnable', align: 'center',title: ''}
-            ,{field: 'dataError', align: 'center',title: ''}
+            ,{field: 'dataError', align: 'center',title: '鏁版嵁閿欒'}
+            ,{field: 'id', align: 'center',title: ''}
+            ,{field: 'sensorGArrive', align: 'center',title: '鐩寸嚎鍏夌數'}
+            ,{field: 'sensorGDec', align: 'center',title: '鍑忛�熷厜鐢�'}
+            ,{field: 'sensorGArrive2', align: 'center',title: '鐩寸嚎鍑稿嚭'}
+            ,{field: 'sensorLimit', align: 'center',title: '闄愪綅淇濇姢鍏夌數'}
+            ,{field: 'emergency', align: 'center',title: '鎬ュ仠'}
+            ,{field: 'sensorGLeave', align: 'center',title: '鍏夌數绂诲紑1'}
+            ,{field: 'sensorGLeave2', align: 'center',title: '鍏夌數绂诲紑2'}
+            ,{field: 'sensorCUp', align: 'center',title: '椤跺崌涓婂崌'}
+            ,{field: 'sensorCDown', align: 'center',title: '椤跺崌涓嬮檷'}
+            ,{field: 'liftMotorFr', align: 'center',title: '椤跺崌鐑户'}
+            ,{field: 'lineMotorFr', align: 'center',title: '鐩寸嚎鐑户'}
+            ,{field: 'tranMotorFr', align: 'center',title: '绉绘牻鐑户'}
+            ,{field: 'rst1', align: 'center',title: '澶囩敤1'}
+            ,{field: 'rst2', align: 'center',title: '澶囩敤2'}
+            ,{field: 'rst3', align: 'center',title: '澶囩敤3'}
+            ,{field: 'rst4', align: 'center',title: '澶囩敤4'}
+            ,{field: 'sensorArriveD', align: 'center',title: '鐩磋鏂瑰悜鍒颁綅'}
+            ,{field: 'sensorDecD', align: 'center',title: '鐩磋鏂瑰悜鍑忛��'}
+            ,{field: 'sensorArriveL', align: 'center',title: '宸︾Щ鏂瑰悜鍒颁綅'}
+            ,{field: 'sensorDecL', align: 'center',title: '宸︾Щ鏂瑰悜鍑忛��'}
+            ,{field: 'sensorArriveR', align: 'center',title: '鍙崇Щ鏂瑰悜鍒颁綅'}
+            ,{field: 'sensorDecR', align: 'center',title: '鍙崇Щ鏂瑰悜鍑忛��'}
 
             ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
         ]],
diff --git a/src/main/webapp/static/js/basRgvErrorLog/basRgvErrorLog.js b/src/main/webapp/static/js/basRgvErrorLog/basRgvErrorLog.js
new file mode 100644
index 0000000..28eb251
--- /dev/null
+++ b/src/main/webapp/static/js/basRgvErrorLog/basRgvErrorLog.js
@@ -0,0 +1,289 @@
+var pageCurr;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#basRgvErrorLog',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/basRgvErrorLog/list/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            {type: 'checkbox'}
+            ,{field: 'rgvNo', align: 'center',title: '缂栧彿'}
+            ,{field: 'emergencyStop', align: 'center',title: '鎬ュ仠瑙﹀彂'}
+            ,{field: 'slot1EmptyNoData', align: 'center',title: '1鍙蜂綅鏈夌墿鏃犺祫鏂�'}
+            ,{field: 'slot2EmptyNoData', align: 'center',title: '2鍙蜂綅鏈夌墿鏃犺祫鏂�'}
+            ,{field: 'commandErrorChainConflict', align: 'center',title: '鍛戒护閿欒璧伴摼鏉″啿绐�'}
+            ,{field: 'targetPositionIssue', align: 'center',title: '鐩爣浣嶄笅鍙戦敊璇�'}
+            ,{field: 'travelInverterError', align: 'center',title: '璧拌鍙橀鍣ㄥ紓甯�'}
+            ,{field: 'photoelectric1Error', align: 'center',title: '1鍙峰厜鐢靛紓甯�'}
+            ,{field: 'photoelectric2Error', align: 'center',title: '2鍙峰厜鐢靛紓甯�'}
+            ,{field: 'timeoutConnectionWithLine', align: 'center',title: '涓庤緭绾挎椂鎺ヨ秴鏃�'}
+            ,{field: 'leftRollerTimeout', align: 'center',title: '宸︿晶婊氱瓛杩愯瓒呮椂'}
+            ,{field: 'rightRollerTimeout', align: 'center',title: '鍙充晶婊氱瓛杩愯瓒呮椂'}
+            ,{field: 'rgvRunTimeout', align: 'center',title: 'rgv杩愯瓒呮椂'}
+            ,{field: 'position1ChainInverterError', align: 'center',title: '1鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父'}
+            ,{field: 'position2ChainInverterError', align: 'center',title: '2鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父'}
+            ,{field: 'frontRearLimit', align: 'center',title: '鍓嶅悗鏋侀檺浣�'}
+            ,{field: 'emergencyButton', align: 'center',title: '鎬ュ仠鎸夐挳'}
+            ,{field: 'createTime$', align: 'center',title: '鍒涘缓鏃堕棿'}
+            ,{field: 'forwardButton', align: 'center',title: '鎬ュ仠鎸夐挳'}
+            ,{field: 'reverseButton', align: 'center',title: '鍚庨��鎸夐挳'}
+            ,{field: 'localRemote', align: 'center',title: '鏈湴/杩滅▼'}
+            ,{field: 'id', align: 'center',title: ''}
+            ,{field: 'reset', align: 'center',title: '澶嶄綅'}
+            ,{field: 'travelBrakeSwitch', align: 'center',title: '璧拌鎶遍椄寮�鍏抽挳'}
+            ,{field: 'travelSpeedLimitPhotoelectric', align: 'center',title: '璧拌寮哄埗鍑忛�熷厜鐢�'}
+            ,{field: 'leftOverlimit1', align: 'center',title: '宸﹁秴闄� 1'}
+            ,{field: 'rightOverlimit1', align: 'center',title: '鍙宠秴闄� 1'}
+            ,{field: 'leftAtPosition1', align: 'center',title: '宸﹀埌浣� 1'}
+            ,{field: 'rightAtPosition1', align: 'center',title: '鍙冲埌浣� 1'}
+            ,{field: 'chainForward1', align: 'center',title: '閾炬潯鍓嶈繘 1'}
+            ,{field: 'chainReverse1', align: 'center',title: '閾炬潯鍚庨�� 1'}
+            ,{field: 'inverterAlarm', align: 'center',title: '鍙橀鍣ㄦ姤璀�'}
+            ,{field: 'leftOverlimit2', align: 'center',title: '宸﹁秴闄� 2'}
+            ,{field: 'rightOverlimit2', align: 'center',title: '鍙宠秴闄� 2'}
+            ,{field: 'leftAtPosition2', align: 'center',title: '宸﹀埌浣� 2'}
+            ,{field: 'rightAtPosition2', align: 'center',title: '鍙冲埌浣� 2'}
+            ,{field: 'cargoSpeedReduction', align: 'center',title: '璐х墿鍑忛��'}
+            ,{field: 'conveyorInverterAlarm2', align: 'center',title: '杈撻�佸彉棰戝櫒鎶ヨ 2'}
+            ,{field: 'leftConveyor2', align: 'center',title: '宸﹁緭閫� 2'}
+            ,{field: 'rightConveyor2', align: 'center',title: '鍙宠緭閫� 2'}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            limit();
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(basRgvErrorLog)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {curr: 1}
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(basRgvErrorLog)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        switch(obj.event) {
+            case 'addData':
+                showEditModel();
+                break;
+            case 'deleteData':
+               if (checkStatus.length === 0) {
+                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                   return;
+               }
+               del(checkStatus.map(function (d) {
+                   return d.id;
+               }));
+               break;
+            case 'exportData':
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'basRgvErrorLog': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/basRgvErrorLog/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(basRgvErrorLog)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case 'edit':
+                showEditModel(data);
+                break;
+            case "del":
+                del([data.id]);
+                break;
+        }
+    });
+
+    /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: '600px',
+            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                layDateRender(mData);
+                form.val('detail', mData);
+                form.on('submit(editSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/basRgvErrorLog/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                tableReload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                layui.form.render('select');
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function del(ids) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/basRgvErrorLog/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '.layui-laydate-range'
+                ,type: 'datetime'
+                ,range: true
+            });
+            layDate.render({
+                elem: '#createTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['createTime\\$']:null
+            });
+
+        }, 300);
+    }
+    layDateRender();
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    tableIns.reload({
+        where: searchData,
+        page: {curr: pageCurr}
+     });
+}
diff --git a/src/main/webapp/views/basCrnErrorLog/basCrnErrorLog.html b/src/main/webapp/views/basCrnErrorLog/basCrnErrorLog.html
new file mode 100644
index 0000000..9d07350
--- /dev/null
+++ b/src/main/webapp/views/basCrnErrorLog/basCrnErrorLog.html
@@ -0,0 +1,368 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <div class="layui-form toolbar" id="search-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
+                        </div>
+                    </div>
+                     <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline"> 
+                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                            <i class="layui-icon"></i>鎼滅储
+                        </button>
+                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                            <i class="layui-icon"></i>閲嶇疆
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table class="layui-hide" id="basCrnErrorLog" lay-filter="basCrnErrorLog"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/basCrnErrorLog/basCrnErrorLog.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
+        <input name="id" type="hidden">
+        <div class="layui-row">
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">缂栧彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="crnNo" placeholder="璇疯緭鍏ョ紪鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">琛岃蛋鍙橀鍣ㄦ晠闅�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibDriveFault" placeholder="璇疯緭鍏ヨ璧板彉棰戝櫒鏁呴殰">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎻愬叡鍙橀鍣ㄦ晠闅�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibSupplyFault" placeholder="璇疯緭鍏ユ彁鍏卞彉棰戝櫒鏁呴殰">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璐у弶鍙橀鍣ㄦ晠闅�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibForkDriveFault" placeholder="璇疯緭鍏ヨ揣鍙夊彉棰戝櫒鏁呴殰">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">琛岃蛋鏂矾鍣ㄦ晠闅�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibDriveCircuitFault" placeholder="璇疯緭鍏ヨ璧版柇璺櫒鏁呴殰">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎻愬崌鏂矾鍣ㄦ晠闅�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibLiftCircuitFault" placeholder="璇疯緭鍏ユ彁鍗囨柇璺櫒鏁呴殰">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璐у弶鏂矾鍣ㄦ晠闅�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibForkCircuitFault" placeholder="璇疯緭鍏ヨ揣鍙夋柇璺櫒鏁呴殰">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍓嶈繘闄愪綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibForwardLimit" placeholder="璇疯緭鍏ュ墠杩涢檺浣�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍚庨��闄愪綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibReverseLimit" placeholder="璇疯緭鍏ュ悗閫�闄愪綅">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">琛岃蛋鍘熺偣: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibDriveStart" placeholder="璇疯緭鍏ヨ璧板師鐐�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍓嶈繘寮哄埗浣庨��: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibForwardBrakeSpeed" placeholder="璇疯緭鍏ュ墠杩涘己鍒朵綆閫�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍚庨��寮哄埗浣庨��: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibReverseBrakeSpeed" placeholder="璇疯緭鍏ュ悗閫�寮哄埗浣庨��">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓婂崌闄愪綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibUpLimit" placeholder="璇疯緭鍏ヤ笂鍗囬檺浣�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓嬮檺闄愪綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibDownLimit" placeholder="璇疯緭鍏ヤ笅闄愰檺浣�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎻愬崌鍘熺偣: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibUpOrigin" placeholder="璇疯緭鍏ユ彁鍗囧師鐐�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓婂崌寮哄埗浣庨��: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibUpBrakeSpeed" placeholder="璇疯緭鍏ヤ笂鍗囧己鍒朵綆閫�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓嬮檷寮哄埗浣庨��: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibDownBrakeSpeed" placeholder="璇疯緭鍏ヤ笅闄嶅己鍒朵綆閫�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍒涘缓鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="createTime" id="createTime$" placeholder="璇疯緭鍏ュ垱寤烘椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">杞借揣鍙版帰璐�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibPlatformSignal" placeholder="璇疯緭鍏ヨ浇璐у彴鎺㈣揣">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璐у弶涓綅淇″彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibForkMidSignal" placeholder="璇疯緭鍏ヨ揣鍙変腑浣嶄俊鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璐у弶宸︽瀬闄�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibForkLeftLimit" placeholder="璇疯緭鍏ヨ揣鍙夊乏鏋侀檺">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璐у弶鍙虫瀬闄�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibForkRightLimit" placeholder="璇疯緭鍏ヨ揣鍙夊彸鏋侀檺">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍓嶈秴闄�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibFrontOverLimit" placeholder="璇疯緭鍏ュ墠瓒呴檺">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍚庤秴闄�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibRearOverLimit" placeholder="璇疯緭鍏ュ悗瓒呴檺">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸﹁秴闄�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibLeftOverLimit" placeholder="璇疯緭鍏ュ乏瓒呴檺">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍙宠秴闄�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibRightOverLimit" placeholder="璇疯緭鍏ュ彸瓒呴檺">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">楂樿秴闄�1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibHighOverLimit1" placeholder="璇疯緭鍏ラ珮瓒呴檺1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">楂樿秴闄�2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibHighOverLimit2" placeholder="璇疯緭鍏ラ珮瓒呴檺2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">楂樿秴闄�3: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibHighOverLimit3" placeholder="璇疯緭鍏ラ珮瓒呴檺3">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓�浼稿乏渚ф帰璐�1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibOneExtendLeftLoad1" placeholder="璇疯緭鍏ヤ竴浼稿乏渚ф帰璐�1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓�浼稿乏渚ф帰璐�2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibOneExtendLeftLoad2" placeholder="璇疯緭鍏ヤ竴浼稿乏渚ф帰璐�2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓�浼稿彸渚ф帰璐�1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibOneExtendRightLoad1" placeholder="璇疯緭鍏ヤ竴浼稿彸渚ф帰璐�1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓�浼稿彸渚ф帰璐�2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibOneExtendRightLoad2" placeholder="璇疯緭鍏ヤ竴浼稿彸渚ф帰璐�2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">浜屼几宸︿晶鎺㈣揣1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibTwoExtendLeftLoad1" placeholder="璇疯緭鍏ヤ簩浼稿乏渚ф帰璐�1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">浜屼几宸︿晶鎺㈣揣2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibTwoExtendLeftLoad2" placeholder="璇疯緭鍏ヤ簩浼稿乏渚ф帰璐�2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">浜屼几鍙充晶鎺㈣揣1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibTwoExtendRightLoad1" placeholder="璇疯緭鍏ヤ簩浼稿彸渚ф帰璐�1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">浜屼几鍙充晶鎺㈣揣2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibTwoExtendRightLoad2" placeholder="璇疯緭鍏ヤ簩浼稿彸渚ф帰璐�2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瓒呴�熶俊鍙�1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibSpeedSignal1" placeholder="璇疯緭鍏ヨ秴閫熶俊鍙�1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瓒呴�熶俊鍙�2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibSpeedSignal2" placeholder="璇疯緭鍏ヨ秴閫熶俊鍙�2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瓒呴噸淇″彿1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibOverweightSignal1" placeholder="璇疯緭鍏ヨ秴閲嶄俊鍙�1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瓒呴噸淇″彿2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibOverweightSignal2" placeholder="璇疯緭鍏ヨ秴閲嶄俊鍙�2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鏉剧怀淇″彿1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibRopeReleaseSignal1" placeholder="璇疯緭鍏ユ澗缁充俊鍙�1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鏉剧怀淇″彿2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibRopeReleaseSignal2" placeholder="璇疯緭鍏ユ澗缁充俊鍙�2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瀹夊叏閽�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibSafetyClamp" placeholder="璇疯緭鍏ュ畨鍏ㄩ挸">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">寮犵揣鍣�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibTightener" placeholder="璇疯緭鍏ュ紶绱у櫒">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">闄愰�熷櫒: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibSpeedLimiter" placeholder="璇疯緭鍏ラ檺閫熷櫒">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瀹夊叏闂ㄦ墦寮�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="ibSafetyDoorOpen" placeholder="璇疯緭鍏ュ畨鍏ㄩ棬鎵撳紑">
+                    </div>
+                </div>
+
+             </div>
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+</html>
+
diff --git a/src/main/webapp/views/basDevpErrorLog/basDevpErrorLog.html b/src/main/webapp/views/basDevpErrorLog/basDevpErrorLog.html
index 784338c..24dfd81 100644
--- a/src/main/webapp/views/basDevpErrorLog/basDevpErrorLog.html
+++ b/src/main/webapp/views/basDevpErrorLog/basDevpErrorLog.html
@@ -193,9 +193,141 @@
                     </div>
                 </div>
                 <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
+                    <label class="layui-form-label">鏁版嵁閿欒: </label>
                     <div class="layui-input-block">
-                        <input class="layui-input" name="dataError" placeholder="璇疯緭鍏�">
+                        <input class="layui-input" name="dataError" placeholder="璇疯緭鍏ユ暟鎹敊璇�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐩寸嚎鍏夌數: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorGArrive" placeholder="璇疯緭鍏ョ洿绾垮厜鐢�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍑忛�熷厜鐢�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorGDec" placeholder="璇疯緭鍏ュ噺閫熷厜鐢�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐩寸嚎鍑稿嚭: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorGArrive2" placeholder="璇疯緭鍏ョ洿绾垮嚫鍑�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">闄愪綅淇濇姢鍏夌數: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorLimit" placeholder="璇疯緭鍏ラ檺浣嶄繚鎶ゅ厜鐢�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎬ュ仠: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="emergency" placeholder="璇疯緭鍏ユ�ュ仠">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍏夌數绂诲紑1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorGLeave" placeholder="璇疯緭鍏ュ厜鐢电寮�1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍏夌數绂诲紑2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorGLeave2" placeholder="璇疯緭鍏ュ厜鐢电寮�2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">椤跺崌涓婂崌: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorCUp" placeholder="璇疯緭鍏ラ《鍗囦笂鍗�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">椤跺崌涓嬮檷: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorCDown" placeholder="璇疯緭鍏ラ《鍗囦笅闄�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">椤跺崌鐑户: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="liftMotorFr" placeholder="璇疯緭鍏ラ《鍗囩儹缁�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐩寸嚎鐑户: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="lineMotorFr" placeholder="璇疯緭鍏ョ洿绾跨儹缁�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">绉绘牻鐑户: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="tranMotorFr" placeholder="璇疯緭鍏ョЩ鏍界儹缁�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">澶囩敤1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rst1" placeholder="璇疯緭鍏ュ鐢�1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">澶囩敤2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rst2" placeholder="璇疯緭鍏ュ鐢�2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">澶囩敤3: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rst3" placeholder="璇疯緭鍏ュ鐢�3">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">澶囩敤4: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rst4" placeholder="璇疯緭鍏ュ鐢�4">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐩磋鏂瑰悜鍒颁綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorArriveD" placeholder="璇疯緭鍏ョ洿琛屾柟鍚戝埌浣�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐩磋鏂瑰悜鍑忛��: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorDecD" placeholder="璇疯緭鍏ョ洿琛屾柟鍚戝噺閫�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸︾Щ鏂瑰悜鍒颁綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorArriveL" placeholder="璇疯緭鍏ュ乏绉绘柟鍚戝埌浣�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸︾Щ鏂瑰悜鍑忛��: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorDecL" placeholder="璇疯緭鍏ュ乏绉绘柟鍚戝噺閫�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍙崇Щ鏂瑰悜鍒颁綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorArriveR" placeholder="璇疯緭鍏ュ彸绉绘柟鍚戝埌浣�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍙崇Щ鏂瑰悜鍑忛��: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sensorDecR" placeholder="璇疯緭鍏ュ彸绉绘柟鍚戝噺閫�">
                     </div>
                 </div>
 
diff --git a/src/main/webapp/views/basRgvErrorLog/basRgvErrorLog.html b/src/main/webapp/views/basRgvErrorLog/basRgvErrorLog.html
new file mode 100644
index 0000000..e013559
--- /dev/null
+++ b/src/main/webapp/views/basRgvErrorLog/basRgvErrorLog.html
@@ -0,0 +1,320 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <div class="layui-form toolbar" id="search-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
+                        </div>
+                    </div>
+                     <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline"> 
+                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                            <i class="layui-icon"></i>鎼滅储
+                        </button>
+                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                            <i class="layui-icon"></i>閲嶇疆
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table class="layui-hide" id="basRgvErrorLog" lay-filter="basRgvErrorLog"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/basRgvErrorLog/basRgvErrorLog.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
+        <input name="id" type="hidden">
+        <div class="layui-row">
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">缂栧彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rgvNo" placeholder="璇疯緭鍏ョ紪鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎬ュ仠瑙﹀彂: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="emergencyStop" placeholder="璇疯緭鍏ユ�ュ仠瑙﹀彂">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">1鍙蜂綅鏈夌墿鏃犺祫鏂�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="slot1EmptyNoData" placeholder="璇疯緭鍏�1鍙蜂綅鏈夌墿鏃犺祫鏂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">2鍙蜂綅鏈夌墿鏃犺祫鏂�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="slot2EmptyNoData" placeholder="璇疯緭鍏�2鍙蜂綅鏈夌墿鏃犺祫鏂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍛戒护閿欒璧伴摼鏉″啿绐�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="commandErrorChainConflict" placeholder="璇疯緭鍏ュ懡浠ら敊璇蛋閾炬潯鍐茬獊">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐩爣浣嶄笅鍙戦敊璇�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="targetPositionIssue" placeholder="璇疯緭鍏ョ洰鏍囦綅涓嬪彂閿欒">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璧拌鍙橀鍣ㄥ紓甯�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="travelInverterError" placeholder="璇疯緭鍏ヨ蛋琛屽彉棰戝櫒寮傚父">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">1鍙峰厜鐢靛紓甯�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="photoelectric1Error" placeholder="璇疯緭鍏�1鍙峰厜鐢靛紓甯�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">2鍙峰厜鐢靛紓甯�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="photoelectric2Error" placeholder="璇疯緭鍏�2鍙峰厜鐢靛紓甯�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓庤緭绾挎椂鎺ヨ秴鏃�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="timeoutConnectionWithLine" placeholder="璇疯緭鍏ヤ笌杈撶嚎鏃舵帴瓒呮椂">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸︿晶婊氱瓛杩愯瓒呮椂: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="leftRollerTimeout" placeholder="璇疯緭鍏ュ乏渚ф粴绛掕繍琛岃秴鏃�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍙充晶婊氱瓛杩愯瓒呮椂: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rightRollerTimeout" placeholder="璇疯緭鍏ュ彸渚ф粴绛掕繍琛岃秴鏃�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">rgv杩愯瓒呮椂: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rgvRunTimeout" placeholder="璇疯緭鍏gv杩愯瓒呮椂">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">1鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="position1ChainInverterError" placeholder="璇疯緭鍏�1鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">2鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="position2ChainInverterError" placeholder="璇疯緭鍏�2鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍓嶅悗鏋侀檺浣�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="frontRearLimit" placeholder="璇疯緭鍏ュ墠鍚庢瀬闄愪綅">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎬ュ仠鎸夐挳: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="emergencyButton" placeholder="璇疯緭鍏ユ�ュ仠鎸夐挳">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍒涘缓鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="createTime" id="createTime$" placeholder="璇疯緭鍏ュ垱寤烘椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎬ュ仠鎸夐挳: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="forwardButton" placeholder="璇疯緭鍏ユ�ュ仠鎸夐挳">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍚庨��鎸夐挳: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="reverseButton" placeholder="璇疯緭鍏ュ悗閫�鎸夐挳">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鏈湴/杩滅▼: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="localRemote" placeholder="璇疯緭鍏ユ湰鍦�/杩滅▼">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">澶嶄綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="reset" placeholder="璇疯緭鍏ュ浣�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璧拌鎶遍椄寮�鍏抽挳: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="travelBrakeSwitch" placeholder="璇疯緭鍏ヨ蛋琛屾姳闂稿紑鍏抽挳">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璧拌寮哄埗鍑忛�熷厜鐢�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="travelSpeedLimitPhotoelectric" placeholder="璇疯緭鍏ヨ蛋琛屽己鍒跺噺閫熷厜鐢�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸﹁秴闄� 1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="leftOverlimit1" placeholder="璇疯緭鍏ュ乏瓒呴檺 1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍙宠秴闄� 1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rightOverlimit1" placeholder="璇疯緭鍏ュ彸瓒呴檺 1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸﹀埌浣� 1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="leftAtPosition1" placeholder="璇疯緭鍏ュ乏鍒颁綅 1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍙冲埌浣� 1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rightAtPosition1" placeholder="璇疯緭鍏ュ彸鍒颁綅 1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">閾炬潯鍓嶈繘 1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="chainForward1" placeholder="璇疯緭鍏ラ摼鏉″墠杩� 1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">閾炬潯鍚庨�� 1: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="chainReverse1" placeholder="璇疯緭鍏ラ摼鏉″悗閫� 1">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍙橀鍣ㄦ姤璀�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="inverterAlarm" placeholder="璇疯緭鍏ュ彉棰戝櫒鎶ヨ">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸﹁秴闄� 2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="leftOverlimit2" placeholder="璇疯緭鍏ュ乏瓒呴檺 2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍙宠秴闄� 2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rightOverlimit2" placeholder="璇疯緭鍏ュ彸瓒呴檺 2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸﹀埌浣� 2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="leftAtPosition2" placeholder="璇疯緭鍏ュ乏鍒颁綅 2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍙冲埌浣� 2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rightAtPosition2" placeholder="璇疯緭鍏ュ彸鍒颁綅 2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璐х墿鍑忛��: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="cargoSpeedReduction" placeholder="璇疯緭鍏ヨ揣鐗╁噺閫�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">杈撻�佸彉棰戝櫒鎶ヨ 2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="conveyorInverterAlarm2" placeholder="璇疯緭鍏ヨ緭閫佸彉棰戝櫒鎶ヨ 2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">宸﹁緭閫� 2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="leftConveyor2" placeholder="璇疯緭鍏ュ乏杈撻�� 2">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍙宠緭閫� 2: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="rightConveyor2" placeholder="璇疯緭鍏ュ彸杈撻�� 2">
+                    </div>
+                </div>
+
+             </div>
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+</html>
+
--
Gitblit v1.9.1