From 35dca726bf82b7d9a77fee5157d9143bd9dde3ea Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期二, 14 一月 2025 14:57:06 +0800
Subject: [PATCH] 添加AGV告警处理及回调接口

---
 src/main/java/com/zy/asrs/entity/AgvWarn.java                     |   50 +++++
 src/main/java/com/zy/asrs/entity/AgvWarnLog.java                  |   42 ++++
 src/main/java/com/zy/asrs/service/impl/AgvWarnLogServiceImpl.java |   21 ++
 src/main/java/com/zy/asrs/task/AgvWarnScheduler.java              |  124 +++++++++++++
 src/main/java/com/zy/asrs/service/AgvWarnLogService.java          |   10 +
 src/main/resources/mapper/AgvWarnMapper.xml                       |    7 
 src/main/java/com/zy/asrs/task/handler/AgvWarnHandler.java        |   37 ++++
 src/main/resources/mapper/AgvWarnLogMapper.xml                    |    7 
 src/main/java/com/zy/asrs/mapper/AgvWarnMapper.java               |   16 +
 src/main/java/com/zy/asrs/mapper/AgvWarnLogMapper.java            |   15 +
 src/main/java/com/zy/asrs/controller/AgvWarnController.java       |  123 +++++++++++++
 src/main/java/com/zy/asrs/entity/param/AgvWarnCallBackParam.java  |   22 ++
 src/main/java/com/zy/asrs/entity/param/AgvWarnBody.java           |   19 ++
 src/main/java/com/zy/asrs/service/impl/AgvWarnServiceImpl.java    |   21 ++
 src/main/java/com/zy/asrs/service/AgvWarnService.java             |    9 +
 15 files changed, 523 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvWarnController.java b/src/main/java/com/zy/asrs/controller/AgvWarnController.java
new file mode 100644
index 0000000..676e4d4
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/AgvWarnController.java
@@ -0,0 +1,123 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.annotations.AppAuth;
+import com.core.common.Cools;
+import com.zy.asrs.entity.AgvWarn;
+import com.zy.asrs.entity.AgvWrkMast;
+import com.zy.asrs.entity.param.AgvWarnBody;
+import com.zy.asrs.entity.param.AgvWarnCallBackParam;
+import com.zy.asrs.service.AgvWarnService;
+import com.zy.asrs.service.AgvWrkMastService;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.common.web.BaseController;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
+
+/**
+ * 涓婃姤浜嬩欢绫诲瀷锛坋ventType锛夛細
+ * 飦� task锛氫笂鎶ヤ换鍔$姸鎬併��
+ * 飦� task_allocated: 涓婃姤浠诲姟鍒嗛厤缁欐満鍣ㄤ汉銆�
+ * 飦� tote_load锛氫笂鎶ュ彇绠辩姸鎬併��
+ * 飦� tote_unload锛氫笂鎶ユ斁绠辩姸鎬併��
+ * 飦� robot_reach锛氭満鍣ㄤ汉鍒拌揪宸ヤ綔绔欍��
+ * 飦� weight锛氱О閲嶄簨浠跺洖璋冦��
+ * 飦� rfid锛歊FID璇嗗埆浜嬩欢鍥炶皟銆�
+ *
+ * 浠诲姟鐘舵�侊紙status锛夛細
+ * 飦� success锛氭垚鍔熴��
+ * 飦� fail锛氬け璐ャ��
+ * 飦� cancel锛氬彇娑堛��
+ * 飦� suspend锛氭寕璧枫��
+ */
+@Slf4j
+@RestController
+public class AgvWarnController extends BaseController {
+
+
+    @Autowired
+    private ApiLogService apiLogService;
+
+    @Autowired
+    private AgvWarnService agvWarnService;
+
+
+    @Autowired
+    private AgvWrkMastService agvWrkMastService;
+
+
+    @PostMapping("/service/rest/agvCallbackService/warnCallback")
+    @AppAuth(memo = "AGV鍛婅鍥炶皟")
+    public Object taskEventStaus(@RequestBody AgvWarnCallBackParam param, HttpServletRequest request) {
+        log.info("AGV鍛婅鍥炶皟:{}", JSON.toJSONString(param));
+        List<AgvWarnBody> data = param.getData();
+        AgvWarn agvWarn = null;
+        List<AgvWarn> agvWarns = new ArrayList<>();
+        List<AgvWarn> updates = new ArrayList<>();
+        for (AgvWarnBody body : data) {
+            List<AgvWarn> agvWarnList = agvWarnService.selectList(new EntityWrapper<AgvWarn>().eq("robot_code", body.getRobotCode()).eq("begin_time", body.getBeginTime()));
+            if (Cools.isEmpty(agvWarnList)) {
+                agvWarn = new AgvWarn();
+                agvWarn.setBeginTime(body.getBeginTime());
+                agvWarn.setAppeTime(new Date());
+                agvWarn.setTimes(0);
+                agvWarn.setRobotCode(body.getRobotCode());
+                agvWarn.setWarnContent(body.getWarnContent());
+                if (body.getTaskCode() != null) {
+                    AgvWrkMast agvWrkMast = agvWrkMastService.selectById(body.getTaskCode());
+                    if (agvWrkMast != null) {
+                        agvWarn.setLocNo(agvWrkMast.getLocNo());
+                        agvWarn.setSourceLocNo(agvWrkMast.getSourceLocNo());
+                    }
+                }
+                agvWarns.add(agvWarn);
+            } else {
+                agvWarn = agvWarnList.get(0);
+                agvWarn.setWarnContent(agvWarn.getWarnContent().contains(body.getWarnContent()) ? body.getWarnContent() : agvWarn.getWarnContent() + "銆�" + body.getWarnContent());
+                agvWarn.setModiTime(new Date());
+                if (body.getTaskCode() != null) {
+                    AgvWrkMast agvWrkMast = agvWrkMastService.selectById(body.getTaskCode());
+                    if (agvWrkMast != null) {
+                        agvWarn.setLocNo(agvWrkMast.getLocNo());
+                        agvWarn.setSourceLocNo(agvWrkMast.getSourceLocNo());
+                    }
+                }
+                updates.add(agvWarn);
+            }
+        }
+        if (!Cools.isEmpty(agvWarns)) {
+            agvWarnService.insertBatch(agvWarns);
+        }
+        if (!Cools.isEmpty(updates)) {
+            agvWarnService.updateBatchById(updates);
+        }
+        Map<String, Object> result = new HashMap<>();
+        logPost(param, JSONObject.toJSONString(result), true);
+        result.put("code", 0);
+        result.put("message", "鎴愬姛");
+        result.put("reqCode", param.getReqCode());
+        return result;
+    }
+
+    private void logPost(AgvWarnCallBackParam param, String response, boolean success) {
+        apiLogService.save(
+                "ESS浠诲姟鍥炶皟",
+                "/phyzwms/agv/task/event/status",
+                null,
+                null,
+                JSONObject.toJSONString(param),
+                response,
+                success
+        );
+    }
+}
+
+
diff --git a/src/main/java/com/zy/asrs/entity/AgvWarn.java b/src/main/java/com/zy/asrs/entity/AgvWarn.java
new file mode 100644
index 0000000..44b4738
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/AgvWarn.java
@@ -0,0 +1,50 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("agv_warn")
+public class AgvWarn implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableField("id")
+    @TableId
+    private Long id;
+
+    /**
+     * 涓婃姤娆℃暟
+     */
+    @TableField("times")
+    private Integer times;
+
+    @TableField("robot_code")
+    private String robotCode;
+
+    @TableField("begin_time")
+    private String beginTime;
+
+    @TableField("warn_content")
+    private String warnContent;
+
+    @TableField("task_code")
+    private String taskCode;
+
+    @TableField("loc_no")
+    private String locNo;
+
+    @TableField("source_locNo")
+    private String sourceLocNo;
+
+    @TableField("appe_time")
+    private Date appeTime;
+
+    @TableField("modi_time")
+    private Date modiTime;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/AgvWarnLog.java b/src/main/java/com/zy/asrs/entity/AgvWarnLog.java
new file mode 100644
index 0000000..1b015f5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/AgvWarnLog.java
@@ -0,0 +1,42 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("agv_warn_log")
+public class AgvWarnLog implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableField("id")
+    private Long id;
+
+    @TableField("robot_code")
+    private String robotCode;
+
+    @TableField("begin_time")
+    private String beginTime;
+
+    @TableField("warnContent")
+    private String warn_content;
+
+    @TableField("task_code")
+    private String taskCode;
+
+    @TableField("loc_no")
+    private String locNo;
+
+    @TableField("source_locNo")
+    private String sourceLocNo;
+
+    @TableField("appe_time")
+    private Date appeTime;
+
+    @TableField("modi_time")
+    private Date modiTime;
+    
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/AgvWarnBody.java b/src/main/java/com/zy/asrs/entity/param/AgvWarnBody.java
new file mode 100644
index 0000000..3625548
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/AgvWarnBody.java
@@ -0,0 +1,19 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class AgvWarnBody implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String robotCode;
+
+    private String beginTime;
+
+    private String warnContent;
+
+    private String taskCode;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/AgvWarnCallBackParam.java b/src/main/java/com/zy/asrs/entity/param/AgvWarnCallBackParam.java
new file mode 100644
index 0000000..b680451
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/AgvWarnCallBackParam.java
@@ -0,0 +1,22 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class AgvWarnCallBackParam implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String reqCode;
+
+    private String reqTime;
+
+    private String clientCode;
+
+    private String tokenCode;
+
+    private List<AgvWarnBody> data;
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/AgvWarnLogMapper.java b/src/main/java/com/zy/asrs/mapper/AgvWarnLogMapper.java
new file mode 100644
index 0000000..27747bc
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/AgvWarnLogMapper.java
@@ -0,0 +1,15 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.AgvWarnLog;
+import com.zy.asrs.entity.AgvWrkDetlLog;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface AgvWarnLogMapper extends BaseMapper<AgvWarnLog>  {
+
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/AgvWarnMapper.java b/src/main/java/com/zy/asrs/mapper/AgvWarnMapper.java
new file mode 100644
index 0000000..2bcb70a
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/AgvWarnMapper.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.AgvWarn;
+import com.zy.asrs.entity.AgvWrkDetlLog;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface AgvWarnMapper extends BaseMapper<AgvWarn> {
+
+
+
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvWarnLogService.java b/src/main/java/com/zy/asrs/service/AgvWarnLogService.java
new file mode 100644
index 0000000..40583e7
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/AgvWarnLogService.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.AgvWarnLog;
+import com.zy.asrs.entity.ManLocDetl;
+
+public interface AgvWarnLogService extends IService<AgvWarnLog> {
+
+
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvWarnService.java b/src/main/java/com/zy/asrs/service/AgvWarnService.java
new file mode 100644
index 0000000..e651a3d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/AgvWarnService.java
@@ -0,0 +1,9 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.AgvWarn;
+
+public interface AgvWarnService extends IService<AgvWarn> {
+
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWarnLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWarnLogServiceImpl.java
new file mode 100644
index 0000000..6b5cec6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWarnLogServiceImpl.java
@@ -0,0 +1,21 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.AgvWarnLog;
+import com.zy.asrs.mapper.AgvWarnLogMapper;
+import com.zy.asrs.service.AgvWarnLogService;
+import com.zy.asrs.service.AgvWarnService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Created by vincent on 2020/6/11
+ */
+@Slf4j
+@Service
+@Transactional
+public class AgvWarnLogServiceImpl extends ServiceImpl<AgvWarnLogMapper, AgvWarnLog> implements AgvWarnLogService {
+
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWarnServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWarnServiceImpl.java
new file mode 100644
index 0000000..c259245
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWarnServiceImpl.java
@@ -0,0 +1,21 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.AgvWarn;
+import com.zy.asrs.mapper.AgvWarnMapper;
+import com.zy.asrs.service.AgvWarnLogService;
+import com.zy.asrs.service.AgvWarnService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Created by vincent on 2020/6/11
+ */
+@Slf4j
+@Service
+@Transactional
+public class AgvWarnServiceImpl extends ServiceImpl<AgvWarnMapper, AgvWarn> implements AgvWarnService {
+
+
+}
diff --git a/src/main/java/com/zy/asrs/task/AgvWarnScheduler.java b/src/main/java/com/zy/asrs/task/AgvWarnScheduler.java
new file mode 100644
index 0000000..e55d588
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/AgvWarnScheduler.java
@@ -0,0 +1,124 @@
+package com.zy.asrs.task;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.AgvWarn;
+import com.zy.asrs.service.AgvWarnService;
+import com.zy.asrs.task.handler.AgvWarnHandler;
+import com.zy.common.utils.HttpHandler;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * Created by vincent on 2020/7/7
+ */
+@Component
+public class AgvWarnScheduler {
+
+    private static final Logger log = LoggerFactory.getLogger(AgvWarnScheduler.class);
+
+    @Autowired
+    private AgvWarnHandler agvWarnHandler;
+
+    @Autowired
+    private AgvWarnService agvWarnService;
+
+    @Autowired
+    private ConfigService configService;
+
+    /**
+     * 瓒呰繃
+     */
+    @Scheduled(fixedDelay = 30000)
+    private void del() {
+        String format = DateUtil.format(DateUtil.offsetMinute(new Date(), -3), "yyyy-MM-dd HH:mm:ss");
+        List<AgvWarn> agvWarnList = agvWarnService.selectList(new EntityWrapper<AgvWarn>().ge("modi_time", format));
+        for (AgvWarn agvWarn : agvWarnList) {
+            agvWarnHandler.start(agvWarn);
+        }
+    }
+
+    @Scheduled(fixedDelay = 10000)
+    private void report() {
+        List<Config> config = configService.selectList(new EntityWrapper<Config>().eq("code", "AGV_WARN_REPORT_URL"));
+        List<AgvWarn> agvWarnList = agvWarnService.selectList(new EntityWrapper<AgvWarn>());
+        StringBuffer buffer;
+        for (AgvWarn agvWarn : agvWarnList) {
+            Integer warnTime = getWarnTime(agvWarn.getTimes());
+            DateTime begin = DateUtil.parse(agvWarn.getBeginTime(), "yyyy-MM-dd HH:mm:ss");
+            if (DateUtil.offsetMinute(begin, warnTime).after(new Date())) {
+                buffer = new StringBuffer();
+                buffer.append(agvWarn.getRobotCode() + "鍙稟GV灏忚溅鎶ヨ:");
+                buffer.append(agvWarn.getWarnContent());
+                HashMap<String, Object> param = new HashMap<>();
+                HashMap<String, Object> data = new HashMap<>();
+                data.put("content", buffer.toString());
+                param.put("msgtype", "text");
+                param.put("text", data);
+                String response = null;
+                try {
+                    response = new HttpHandler.Builder()
+                            .setUri(config.get(0).getValue())
+                            .setJson(JSON.toJSONString(param))
+                            .setHttps(true)
+                            .build()
+                            .doPost();
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                }
+                JSONObject jsonObject = JSON.parseObject(response);
+                if (jsonObject.get("errmsg").equals("ok")) {
+                    return;//鍙戦�佹垚鍔�
+                }
+            }
+        }
+    }
+
+    /**
+     * 鑻ユ湭閰嶇疆鏁版嵁锛屽垯5鍒嗛挓涓�娆�
+     * @param times
+     * @return
+     */
+    private Integer getWarnTime(Integer times) {
+        try {
+            List<Config> config = configService.selectList(new EntityWrapper<Config>().eq("code", "AGV_WARN_RATE1"));
+            if (!Cools.isEmpty(config)) {
+                String value = config.get(0).getValue();
+                if (Cools.isEmpty(value)) {
+                    return 5;
+                } else {
+                    String[] split = value.split(",");
+                    if (split.length < times + 1) {
+                        Config config2 = configService.selectOne(new EntityWrapper<Config>().eq("code", "AGV_WARN_RATE2"));
+                        int t = 0;
+                        for (String s : split) {
+                            t = t + Integer.parseInt(s);
+                        }
+                        return t + Integer.parseInt(config2.getValue());
+                    } else {
+                        return Integer.parseInt(split[times]);
+                    }
+                }
+            }
+            return 5;
+        } catch (Exception e) {
+            return 5;
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWarnHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWarnHandler.java
new file mode 100644
index 0000000..f2e2669
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWarnHandler.java
@@ -0,0 +1,37 @@
+package com.zy.asrs.task.handler;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.zy.asrs.entity.AgvWarn;
+import com.zy.asrs.entity.AgvWarnLog;
+import com.zy.asrs.mapper.AgvWarnLogMapper;
+import com.zy.asrs.mapper.AgvWarnMapper;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Created by vincent on 2020/7/7
+ */
+@Service
+public class AgvWarnHandler extends AbstractHandler<String> {
+
+    @Autowired
+    private AgvWarnMapper agvWarnMapper;
+
+    @Autowired
+    private AgvWarnLogMapper agvWarnLogMapper;
+
+
+    @Transactional
+    public ReturnT<String> start(AgvWarn agvWarn) {
+        AgvWarnLog agvWarnLog = new AgvWarnLog();
+        BeanUtil.copyProperties(agvWarn, agvWarnLog);
+        agvWarnLog.setId(null);
+        agvWarnMapper.deleteById(agvWarn.getId());
+        agvWarnLogMapper.insert(agvWarnLog);
+        return SUCCESS;
+    }
+
+}
diff --git a/src/main/resources/mapper/AgvWarnLogMapper.xml b/src/main/resources/mapper/AgvWarnLogMapper.xml
new file mode 100644
index 0000000..ada11f2
--- /dev/null
+++ b/src/main/resources/mapper/AgvWarnLogMapper.xml
@@ -0,0 +1,7 @@
+<?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.AgvWarnLogMapper">
+
+
+
+</mapper>
diff --git a/src/main/resources/mapper/AgvWarnMapper.xml b/src/main/resources/mapper/AgvWarnMapper.xml
new file mode 100644
index 0000000..a8bb119
--- /dev/null
+++ b/src/main/resources/mapper/AgvWarnMapper.xml
@@ -0,0 +1,7 @@
+<?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.AgvWarnMapper">
+
+
+
+</mapper>

--
Gitblit v1.9.1