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 > DATEADD(day, DATEDIFF(day, 0, GETDATE())-#{time}, 0) + and start_time < 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 > DATEADD(day, DATEDIFF(day, 0, GETDATE())-#{time}, 0) + and start_time < 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