From 2c9689ad1f2f3d80e068117b81448abd1619835c Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 26 十二月 2023 20:40:24 +0800
Subject: [PATCH] #日志采集

---
 src/main/resources/mapper/DeviceDataLogMapper.xml                    |   16 +++
 src/main/java/com/zy/core/thread/LiftThread.java                     |   17 ++
 src/main/resources/mapper/BasShuttleOptMapper.xml                    |    7 +
 src/main/java/com/zy/asrs/mapper/BasShuttleOptMapper.java            |    2 
 src/main/resources/mapper/BasLiftOptMapper.xml                       |    7 +
 src/main/java/com/zy/asrs/controller/MonitorController.java          |   32 +++++
 src/main/java/com/zy/asrs/mapper/BasLiftOptMapper.java               |    2 
 src/main/java/com/zy/asrs/task/ClearDeviceDataLogScheduler.java      |   24 ++++
 src/main/java/com/zy/asrs/mapper/DeviceDataLogMapper.java            |   16 +++
 src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java |   16 +++
 src/main/java/com/zy/asrs/entity/DeviceDataLog.java                  |   86 +++++++++++++++++
 src/main/java/com/zy/asrs/service/DeviceDataLogService.java          |   10 ++
 src/main/java/com/zy/core/thread/NyShuttleThread.java                |   12 ++
 13 files changed, 238 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MonitorController.java b/src/main/java/com/zy/asrs/controller/MonitorController.java
index 281e3cf..45b88d9 100644
--- a/src/main/java/com/zy/asrs/controller/MonitorController.java
+++ b/src/main/java/com/zy/asrs/controller/MonitorController.java
@@ -27,10 +27,7 @@
 import com.zy.core.thread.NyShuttleThread;
 import lombok.Data;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -367,6 +364,10 @@
                     buffer.append("瓒呴噸");
                 }
 
+                if (liftProtocol.getErrorCode() > 0) {
+                    buffer.append(liftProtocol.getErrCode$());
+                }
+
                 HashMap<String, Object> map = new HashMap<>();
                 map.put("deviceNo", liftProtocol.getLiftNo());//璁惧鍙�-鎻愬崌鏈哄彿
                 map.put("errorMsg", buffer.toString());//寮傚父淇℃伅
@@ -393,6 +394,29 @@
         return R.ok().add(map);
     }
 
+    /**
+     * 鑾峰彇璁惧杩愯寮傚父缁熻
+     */
+    @GetMapping("/deviceRunErrorStatistic/{type}")
+    public R deviceRunErrorStatistic(@PathVariable("type") String type) {
+        int time = 1;//榛樿1澶�
+        if (type.equals("day")) {
+            time = 1;
+        } else if (type.equals("week")) {
+            time = 7;
+        } else if (type.equals("month")) {
+            time = 30;
+        }
+        //鑾峰彇鎻愬崌鏈鸿繍琛屽紓甯告暟鎹�
+        List<Map<String, Object>> liftList = basLiftOptMapper.selectRunErrorStatistic(time);
+        //鑾峰彇灏忚溅杩愯寮傚父鏁版嵁
+        List<Map<String, Object>> shuttleList = basShuttleOptMapper.selectRunErrorStatistic(time);
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("lift", liftList);
+        map.put("shuttle", shuttleList);
+        return R.ok().add(map);
+    }
+
 
 
 
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..d6e0d2c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/DeviceDataLog.java
@@ -0,0 +1,86 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.annotations.TableField;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import 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= "")
+    @TableId(value = "id", type = IdType.AUTO)
+    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/BasLiftOptMapper.java b/src/main/java/com/zy/asrs/mapper/BasLiftOptMapper.java
index 5fca55c..a24b598 100644
--- a/src/main/java/com/zy/asrs/mapper/BasLiftOptMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/BasLiftOptMapper.java
@@ -18,6 +18,8 @@
 
     List<Map<String, Object>> selectRunStatistic();//鑾峰彇鎻愬崌鏈烘瘡澶╄繍琛屾暟鎹�
 
+    List<Map<String, Object>> selectRunErrorStatistic(int time);//鑾峰彇鎻愬崌鏈烘瘡澶╄繍琛屽紓甯告暟鎹�
+
     @Insert("insert into asr_bas_lift_opt_storage select * from asr_bas_lift_opt where id in (select id from asr_bas_lift_opt where DATEDIFF(day, send_time, GETDATE()) > #{day})")
     int saveToStorage(Integer day);
 
diff --git a/src/main/java/com/zy/asrs/mapper/BasShuttleOptMapper.java b/src/main/java/com/zy/asrs/mapper/BasShuttleOptMapper.java
index 48383ce..e8eca60 100644
--- a/src/main/java/com/zy/asrs/mapper/BasShuttleOptMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/BasShuttleOptMapper.java
@@ -14,4 +14,6 @@
 
     List<Map<String, Object>> selectRunStatistic();//鑾峰彇灏忚溅姣忓ぉ杩愯鏁版嵁
 
+    List<Map<String, Object>> selectRunErrorStatistic(int time);//鑾峰彇灏忚溅姣忓ぉ杩愯寮傚父鏁版嵁
+
 }
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..5823a95
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java
@@ -0,0 +1,16 @@
+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/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
index a9f40e5..977730e 100644
--- a/src/main/java/com/zy/core/thread/LiftThread.java
+++ b/src/main/java/com/zy/core/thread/LiftThread.java
@@ -10,9 +10,11 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.BasLift;
 import com.zy.asrs.entity.BasLiftOpt;
+import com.zy.asrs.entity.DeviceDataLog;
 import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.BasLiftOptService;
 import com.zy.asrs.service.BasLiftService;
+import com.zy.asrs.service.DeviceDataLogService;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.utils.RedisUtil;
 import com.zy.core.News;
@@ -30,10 +32,7 @@
 import lombok.extern.slf4j.Slf4j;
 
 import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 
 /**
  * 鎻愬崌鏈虹嚎绋�
@@ -279,6 +278,16 @@
                 liftProtocol.setErrorCode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0));//閿欒鐮�
             }
 
+            //淇濆瓨鏁版嵁璁板綍
+            DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
+            DeviceDataLog deviceDataLog = new DeviceDataLog();
+            deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result1.Content));
+            deviceDataLog.setWcsData(JSON.toJSONString(liftProtocol));
+            deviceDataLog.setType("lift");
+            deviceDataLog.setDeviceNo(liftProtocol.getLiftNo().intValue());
+            deviceDataLog.setCreateTime(new Date());
+            deviceDataLogService.insert(deviceDataLog);
+
         } catch (Exception e) {
             OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
         }
diff --git a/src/main/java/com/zy/core/thread/NyShuttleThread.java b/src/main/java/com/zy/core/thread/NyShuttleThread.java
index 78754ed..592adc1 100644
--- a/src/main/java/com/zy/core/thread/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/NyShuttleThread.java
@@ -241,7 +241,17 @@
                     OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 //                    log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
                 }
-                log.warn(JSON.toJSONString(shuttleProtocol));//杈撳嚭灏忚溅鐘舵��
+//                log.warn(JSON.toJSONString(shuttleProtocol));//杈撳嚭灏忚溅鐘舵��
+
+                //淇濆瓨鏁版嵁璁板綍
+                DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
+                DeviceDataLog deviceDataLog = new DeviceDataLog();
+                deviceDataLog.setOriginData(JSON.toJSONString(jsonObject));
+                deviceDataLog.setWcsData(JSON.toJSONString(shuttleProtocol));
+                deviceDataLog.setType("shuttle");
+                deviceDataLog.setDeviceNo(shuttleProtocol.getShuttleNo().intValue());
+                deviceDataLog.setCreateTime(new Date());
+                deviceDataLogService.insert(deviceDataLog);
             }
         } catch (Exception e) {
             e.printStackTrace();
diff --git a/src/main/resources/mapper/BasLiftOptMapper.xml b/src/main/resources/mapper/BasLiftOptMapper.xml
index 95670b0..763bf2c 100644
--- a/src/main/resources/mapper/BasLiftOptMapper.xml
+++ b/src/main/resources/mapper/BasLiftOptMapper.xml
@@ -31,4 +31,11 @@
         group by lift_no
     </select>
 
+    <select id="selectRunErrorStatistic" resultType="map">
+        select lift_no,count(*) count from asr_bas_lift_err_log
+        where start_time &gt; DATEADD(day, DATEDIFF(day, 0, GETDATE())-#{time}, 0)
+          and start_time &lt; DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
+        GROUP BY lift_no
+    </select>
+
 </mapper>
diff --git a/src/main/resources/mapper/BasShuttleOptMapper.xml b/src/main/resources/mapper/BasShuttleOptMapper.xml
index 0d135fa..b49d0d1 100644
--- a/src/main/resources/mapper/BasShuttleOptMapper.xml
+++ b/src/main/resources/mapper/BasShuttleOptMapper.xml
@@ -29,4 +29,11 @@
         group by shuttle_no
     </select>
 
+    <select id="selectRunErrorStatistic" resultType="map">
+        select shuttle_no,count(*) count from asr_bas_shuttle_err_log
+        where start_time &gt; DATEADD(day, DATEDIFF(day, 0, GETDATE())-#{time}, 0)
+        and start_time &lt; DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
+        GROUP BY shuttle_no
+    </select>
+
 </mapper>
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