From b40eab1e582d72ca2e71afb2f5604671f5193f22 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期三, 13 八月 2025 20:09:00 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/ClearDeviceDataLogScheduler.java      |   24 ++++++
 src/main/java/com/zy/core/thread/RgvThread.java                      |   19 ++++
 src/main/resources/mapper/DeviceDataLogMapper.xml                    |   16 ++++
 src/main/java/com/zy/core/thread/SiemensCrnThread.java               |   19 ++++
 src/main/java/com/zy/asrs/mapper/DeviceDataLogMapper.java            |   16 ++++
 src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java |   17 ++++
 src/main/java/com/zy/asrs/entity/DeviceDataLog.java                  |   83 ++++++++++++++++++++
 src/main/java/com/zy/asrs/service/DeviceDataLogService.java          |   10 ++
 src/main/java/com/zy/core/model/protocol/RgvProtocol.java            |    5 +
 src/main/java/com/zy/core/model/protocol/CrnProtocol.java            |    5 +
 10 files changed, 214 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/DeviceDataLog.java b/src/main/java/com/zy/asrs/entity/DeviceDataLog.java
new file mode 100644
index 0000000..2598c30
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/DeviceDataLog.java
@@ -0,0 +1,83 @@
+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 io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("wcs_device_data_log")
+public class DeviceDataLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value= "")
+    private Long id;
+
+    /**
+     * 璁惧绫诲瀷
+     */
+    @ApiModelProperty(value= "璁惧绫诲瀷")
+    private String type;
+
+    /**
+     * 璁惧鍙�
+     */
+    @ApiModelProperty(value= "璁惧鍙�")
+    @TableField("device_no")
+    private Integer deviceNo;
+
+    /**
+     * 婧愭暟鎹�
+     */
+    @ApiModelProperty(value= "婧愭暟鎹�")
+    @TableField("origin_data")
+    private String originData;
+
+    /**
+     * 婧愭暟鎹В鏋愬悗寰楀埌鐨剋cs鏁版嵁
+     */
+    @ApiModelProperty(value= "婧愭暟鎹В鏋愬悗寰楀埌鐨剋cs鏁版嵁")
+    @TableField("wcs_data")
+    private String wcsData;
+
+    /**
+     * 閲囬泦鏃堕棿
+     */
+    @ApiModelProperty(value= "閲囬泦鏃堕棿")
+    @TableField("create_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    public DeviceDataLog() {}
+
+    public DeviceDataLog(String type,Integer deviceNo,String originData,String wcsData,Date createTime) {
+        this.type = type;
+        this.deviceNo = deviceNo;
+        this.originData = originData;
+        this.wcsData = wcsData;
+        this.createTime = createTime;
+    }
+
+//    DeviceDataLog deviceDataLog = new DeviceDataLog(
+//            null,    // 璁惧绫诲瀷
+//            null,    // 璁惧鍙�
+//            null,    // 婧愭暟鎹�
+//            null,    // 婧愭暟鎹В鏋愬悗寰楀埌鐨剋cs鏁版嵁
+//            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/mapper/DeviceDataLogMapper.java b/src/main/java/com/zy/asrs/mapper/DeviceDataLogMapper.java
new file mode 100644
index 0000000..d4ce894
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/DeviceDataLogMapper.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.DeviceDataLog;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface DeviceDataLogMapper extends BaseMapper<DeviceDataLog> {
+
+    @Delete("delete from wcs_device_data_log where create_time < DATEADD(HOUR, -24, GETDATE())")
+    int clearLog();
+
+}
diff --git a/src/main/java/com/zy/asrs/service/DeviceDataLogService.java b/src/main/java/com/zy/asrs/service/DeviceDataLogService.java
new file mode 100644
index 0000000..d45758f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/DeviceDataLogService.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.DeviceDataLog;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface DeviceDataLogService extends IService<DeviceDataLog> {
+
+    int clearLog();//娓呯悊瓒呰繃24灏忔椂鏃ュ織鏁版嵁
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java
new file mode 100644
index 0000000..f3cb611
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.DeviceDataLogMapper;
+import com.zy.asrs.entity.DeviceDataLog;
+import com.zy.asrs.service.DeviceDataLogService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("deviceDataLogService")
+public class DeviceDataLogServiceImpl extends ServiceImpl<DeviceDataLogMapper, DeviceDataLog> implements DeviceDataLogService {
+
+    @Override
+    public int clearLog() {
+        return this.baseMapper.clearLog();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/task/ClearDeviceDataLogScheduler.java b/src/main/java/com/zy/asrs/task/ClearDeviceDataLogScheduler.java
new file mode 100644
index 0000000..1cc2cac
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/ClearDeviceDataLogScheduler.java
@@ -0,0 +1,24 @@
+package com.zy.asrs.task;
+
+import com.zy.asrs.service.DeviceDataLogService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+@Component
+@Slf4j
+public class ClearDeviceDataLogScheduler {
+
+    @Autowired
+    private DeviceDataLogService deviceDataLogService;
+
+    /**
+     * 姣忓垎閽熸竻鐞�24灏忔椂涔嬪墠鐨勬棩蹇�
+     */
+    @Scheduled(cron = "1 * * * * ? ")
+    public void clear() {
+        deviceDataLogService.clearLog();
+    }
+
+}
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 ab44484..c28c09b 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -193,6 +193,11 @@
     private Integer crnLane = 1;
 
     /**
+     * 鏃ュ織閲囬泦鏃堕棿
+     */
+    private Long deviceDataLog = System.currentTimeMillis();
+
+    /**
      * 涓婁竴娆℃寚浠や笅鍙戞椂闂�
      */
     private Long lastCommandTime = System.currentTimeMillis();
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 3c0ed08..05928f9 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -132,6 +132,11 @@
      */
     public Float xDuration;
 
+    /**
+     * 鏃ュ織閲囬泦鏃堕棿
+     */
+    private Long deviceDataLog = System.currentTimeMillis();
+
     public void setMode(Short mode) {
         this.mode = mode;
         this.modeType = RgvModeType.get(mode);
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 0fc5c79..0e89c7b 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -9,8 +9,10 @@
 import com.core.common.SpringUtils;
 import com.zy.asrs.entity.BasRgv;
 import com.zy.asrs.entity.BasRgvOpt;
+import com.zy.asrs.entity.DeviceDataLog;
 import com.zy.asrs.service.BasRgvOptService;
 import com.zy.asrs.service.BasRgvService;
+import com.zy.asrs.service.DeviceDataLogService;
 import com.zy.common.utils.News;
 import com.zy.core.RgvThread2;
 import com.zy.core.cache.MessageQueue;
@@ -26,6 +28,7 @@
 import lombok.extern.slf4j.Slf4j;
 
 import java.text.MessageFormat;
+import java.util.Base64;
 import java.util.Date;
 
 /**
@@ -183,6 +186,22 @@
                     }
                 }
 
+                if (System.currentTimeMillis() - rgvProtocol.getDeviceDataLog() > 1000 * 5) {
+                    //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
+                    //淇濆瓨鏁版嵁璁板綍
+                    DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
+                    DeviceDataLog deviceDataLog = new DeviceDataLog();
+                    deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result.Content));
+                    deviceDataLog.setWcsData(JSON.toJSONString(rgvProtocol));
+                    deviceDataLog.setType("rgv");
+                    deviceDataLog.setDeviceNo(rgvProtocol.getRgvNo());
+                    deviceDataLog.setCreateTime(new Date());
+                    deviceDataLogService.insert(deviceDataLog);
+
+                    //鏇存柊閲囬泦鏃堕棿
+                    rgvProtocol.setDeviceDataLog(System.currentTimeMillis());
+                }
+
                 try {
                     // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
                     BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 64dd38d..f9ecce5 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -10,8 +10,10 @@
 import com.core.common.SpringUtils;
 import com.zy.asrs.entity.BasCrnOpt;
 import com.zy.asrs.entity.BasCrnp;
+import com.zy.asrs.entity.DeviceDataLog;
 import com.zy.asrs.service.BasCrnOptService;
 import com.zy.asrs.service.BasCrnpService;
+import com.zy.asrs.service.DeviceDataLogService;
 import com.zy.common.utils.News;
 import com.zy.core.CrnThread;
 import com.zy.core.cache.MessageQueue;
@@ -25,6 +27,7 @@
 import lombok.extern.slf4j.Slf4j;
 
 import java.text.MessageFormat;
+import java.util.Base64;
 import java.util.Date;
 
 /**
@@ -205,6 +208,22 @@
                     }
                 }
 
+                if (System.currentTimeMillis() - crnProtocol.getDeviceDataLog() > 1000 * 5) {
+                    //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
+                    //淇濆瓨鏁版嵁璁板綍
+                    DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
+                    DeviceDataLog deviceDataLog = new DeviceDataLog();
+                    deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result.Content));
+                    deviceDataLog.setWcsData(JSON.toJSONString(crnProtocol));
+                    deviceDataLog.setType("crn");
+                    deviceDataLog.setDeviceNo(crnProtocol.getCrnNo());
+                    deviceDataLog.setCreateTime(new Date());
+                    deviceDataLogService.insert(deviceDataLog);
+
+                    //鏇存柊閲囬泦鏃堕棿
+                    crnProtocol.setDeviceDataLog(System.currentTimeMillis());
+                }
+
                 try {
                     // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
                     BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
diff --git a/src/main/resources/mapper/DeviceDataLogMapper.xml b/src/main/resources/mapper/DeviceDataLogMapper.xml
new file mode 100644
index 0000000..7de7f65
--- /dev/null
+++ b/src/main/resources/mapper/DeviceDataLogMapper.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.DeviceDataLogMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.DeviceDataLog">
+        <id column="id" property="id" />
+        <result column="type" property="type" />
+        <result column="device_no" property="deviceNo" />
+        <result column="origin_data" property="originData" />
+        <result column="wcs_data" property="wcsData" />
+        <result column="create_time" property="createTime" />
+
+    </resultMap>
+
+</mapper>

--
Gitblit v1.9.1