diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..dbbf18a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,43 @@
+*.java.hsp
+*.sonarj
+*.sw*
+.DS_Store
+.settings
+.springBeans
+bin
+build.sh
+integration-repo
+ivy-cache
+jxl.log
+jmx.log
+derby.log
+spring-test/test-output/
+.gradle
+argfile*
+activemq-data/
+
+classes/
+/build
+buildSrc/build
+/spring-*/build
+/src/asciidoc/build
+target/
+
+# Projects not in this branch
+integration-tests/
+spring-core/kotlin-coroutines/
+
+# Eclipse artifacts, including WTP generated manifests
+.classpath
+.project
+spring-*/src/main/java/META-INF/MANIFEST.MF
+
+# IDEA artifacts and output dirs
+*.iml
+*.ipr
+*.iws
+.idea
+out
+test-output
+atlassian-ide-plugin.xml
+.gradletasknamecache
diff --git a/README.en.md b/README.en.md
new file mode 100644
index 0000000..9e3ae76
--- /dev/null
+++ b/README.en.md
@@ -0,0 +1,36 @@
+# nladmin
+
+#### Description
+{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
+
+#### Software Architecture
+Software architecture description
+
+#### Installation
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Instructions
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Contribution
+
+1. Fork the repository
+2. Create Feat_xxx branch
+3. Commit your code
+4. Create Pull Request
+
+
+#### Gitee Feature
+
+1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
+2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
+3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
+4. The most valuable open source project [GVP](https://gitee.com/gvp)
+5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
+6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/README.md b/README.md
index 8b58040..54cc8de 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,2 @@
# jt_agv
-集团agv点对点项目
\ No newline at end of file
diff --git a/nladmin-system/pom.xml b/nladmin-system/pom.xml
new file mode 100644
index 0000000..4ff25e8
--- /dev/null
+++ b/nladmin-system/pom.xml
@@ -0,0 +1,258 @@
+
+
+
+ jt_agv
+ org.nl
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ nladmin-system
+ 核心模块
+
+
+ 0.11.1
+
+ 5.5.0
+ 7.6.1
+
+
+
+
+ edu.brown.cs.burlap
+ java_rosbridge
+ 2.0.1
+
+
+
+ edu.wpi.rail
+ jrosbridge
+ 0.2.0
+
+
+
+ org.reflections
+ reflections
+ 0.9.10
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-elasticsearch
+
+
+ org.elasticsearch
+ jna
+
+
+
+
+ com.squareup.okhttp3
+ okhttp
+ 4.8.1
+
+
+
+
+ org.apache.lucene
+ lucene-core
+ 8.4.0
+
+
+ org.apache.lucene
+ lucene-analyzers-common
+ 8.4.0
+
+
+ org.apache.lucene
+ lucene-analyzers-smartcn
+ 8.4.0
+
+
+
+
+ com.alibaba
+ easyexcel
+ 2.2.6
+
+
+
+
+ org.apache.commons
+ commons-csv
+ 1.8
+
+
+ commons-io
+ commons-io
+ 2.8.0
+
+
+
+
+ org.nl
+ nladmin-generator
+ 2.6
+
+
+ org.nl
+ nladmin-common
+
+
+
+
+
+
+
+
+
+ org.nl
+ nladmin-tools
+ 2.6
+
+
+ bcprov-jdk15on
+ org.bouncycastle
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+
+
+ io.jsonwebtoken
+ jjwt-api
+ ${jjwt.version}
+
+
+ io.jsonwebtoken
+ jjwt-impl
+ ${jjwt.version}
+
+
+ io.jsonwebtoken
+ jjwt-jackson
+ ${jjwt.version}
+
+
+
+
+ org.quartz-scheduler
+ quartz
+
+
+
+
+ ch.ethz.ganymed
+ ganymed-ssh2
+ build210
+
+
+ com.jcraft
+ jsch
+ 0.1.55
+
+
+
+
+ com.github.oshi
+ oshi-core
+ 5.0.1
+
+
+
+ org.nl
+ nladmin-wql
+ 2.6
+
+
+ commons-lang
+ commons-lang
+
+
+
+
+ com.google.guava
+ guava
+ 20.0
+ compile
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ org.nl.AppRun
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ true
+
+
+
+
+
+
+
+ ${basedir}/src/main/java
+
+ **/*.*
+
+
+
+ ${basedir}/src/main/resources
+
+ **/*.*
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/nladmin-system/src/main/java/org/nl/AppRun.java b/nladmin-system/src/main/java/org/nl/AppRun.java
new file mode 100644
index 0000000..6db3e94
--- /dev/null
+++ b/nladmin-system/src/main/java/org/nl/AppRun.java
@@ -0,0 +1,61 @@
+package org.nl;
+
+import io.swagger.annotations.Api;
+import org.nl.annotation.rest.AnonymousGetMapping;
+import org.nl.utils.SpringContextHolder;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 开启审计功能 -> @EnableJpaAuditing
+ * https://www.cnblogs.com/niceyoo/p/10908647.html
+ *
+ * @author ldjun
+ * @date 2021/2/22 9:20:19
+ */
+@EnableAsync
+@RestController
+@Api(hidden = true)
+@SpringBootApplication(exclude = {
+ org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
+})
+@ServletComponentScan
+@EnableTransactionManagement
+@EnableJpaAuditing(auditorAwareRef = "auditorAware")
+public class AppRun {
+
+ public static void main(String[] args) {
+ SpringApplication.run(AppRun.class, args);
+ }
+
+ @Bean
+ public SpringContextHolder springContextHolder() {
+ return new SpringContextHolder();
+ }
+
+ @Bean
+ public ServletWebServerFactory webServerFactory() {
+ TomcatServletWebServerFactory fa = new TomcatServletWebServerFactory();
+ fa.addConnectorCustomizers(connector -> connector.setProperty("relaxedQueryChars", "[]{}"));
+ return fa;
+ }
+
+ /**
+ * 访问首页提示
+ *
+ * @return /
+ */
+ @AnonymousGetMapping("/")
+ public String index() {
+ return "Backend service started successfully";
+ }
+}
+
diff --git a/nladmin-system/src/main/java/org/nl/agv/TaskSendBackStatusEnum.java b/nladmin-system/src/main/java/org/nl/agv/TaskSendBackStatusEnum.java
new file mode 100644
index 0000000..058f35c
--- /dev/null
+++ b/nladmin-system/src/main/java/org/nl/agv/TaskSendBackStatusEnum.java
@@ -0,0 +1,47 @@
+package org.nl.agv;
+
+/**
+ * 0 "发送成功"
+ * -1 "无法找到起点"
+ * -2 "无法规划路径"
+ * -3 "无法导出任务"
+ * -4 "无法搜索PathID"
+ * -100 "未知异常"
+ * -200 "手动状态,显示屏无法控制"
+ * -201 "固定流程使能,无法采用显示屏控制"
+ * -202 "上位机调度使能,无法采用显示屏控制"
+ * -203 "任务正在执行,无法下达新任务"
+ * -204 "任务包非空,无法下达新任务"
+ */
+enum TaskTypeEnum {
+ C0(0, "0", "发送成功"),
+ C1(-1, "-1", "无法找到起点"),
+ C2(-2, "-2", "无法规划路径"),
+ C3(-3, "-3", "无法导出任务"),
+ C4(-4, "-4", "无法搜索PathID"),
+ C100(-100, "-100", "未知异常"),
+ C200(-200, "-200", "手动状态,显示屏无法控制"),
+ C201(-201, "-201", "固定流程使能,无法采用显示屏控制"),
+ C202(-202, "-202", "上位机调度使能,无法采用显示屏控制"),
+ C203(-203, "-203", "任务正在执行,无法下达新任务"),
+ C204(-204, "-204", "任务包非空,无法下达新任务");
+
+ private int index;
+ private String code;
+ private String name;
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ TaskTypeEnum(int index, String code, String name) {
+ this.index = index;
+ this.code = code;
+ this.name = name;
+ }
+
+}
diff --git a/nladmin-system/src/main/java/org/nl/agv/enu/TaskSendBackStatusEnum.java b/nladmin-system/src/main/java/org/nl/agv/enu/TaskSendBackStatusEnum.java
new file mode 100644
index 0000000..948a0ec
--- /dev/null
+++ b/nladmin-system/src/main/java/org/nl/agv/enu/TaskSendBackStatusEnum.java
@@ -0,0 +1,59 @@
+package org.nl.agv.enu;
+
+/**
+ * 0 "发送成功"
+ * -1 "无法找到起点"
+ * -2 "无法规划路径"
+ * -3 "无法导出任务"
+ * -4 "无法搜索PathID"
+ * -100 "未知异常"
+ * -200 "手动状态,显示屏无法控制"
+ * -201 "固定流程使能,无法采用显示屏控制"
+ * -202 "上位机调度使能,无法采用显示屏控制"
+ * -203 "任务正在执行,无法下达新任务"
+ * -204 "任务包非空,无法下达新任务"
+ */
+
+/**
+ * 任务下发时候反馈的状态码
+ */
+public enum TaskSendBackStatusEnum {
+ C0(0, "0", "发送成功"),
+ C1(-1, "-1", "无法找到起点"),
+ C2(-2, "-2", "无法规划路径"),
+ C3(-3, "-3", "无法导出任务"),
+ C4(-4, "-4", "无法搜索PathID"),
+ C100(-100, "-100", "未知异常"),
+ C200(-200, "-200", "手动状态,显示屏无法控制"),
+ C201(-201, "-201", "固定流程使能,无法采用显示屏控制"),
+ C202(-202, "-202", "上位机调度使能,无法采用显示屏控制"),
+ C203(-203, "-203", "任务正在执行,无法下达新任务"),
+ C204(-204, "-204", "任务包非空,无法下达新任务");
+
+ private int index;
+ private String code;
+ private String name;
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ TaskSendBackStatusEnum(int index, String code, String name) {
+ this.index = index;
+ this.code = code;
+ this.name = name;
+ }
+
+ public static String getName(String code) {
+ for (TaskSendBackStatusEnum ietm : TaskSendBackStatusEnum.values()) {
+ if (ietm.getCode().equals(code)) {
+ return ietm.getName();
+ }
+ }
+ return "未知错误";
+ }
+}
\ No newline at end of file
diff --git a/nladmin-system/src/main/java/org/nl/agv/rest/DeveloperController.java b/nladmin-system/src/main/java/org/nl/agv/rest/DeveloperController.java
new file mode 100644
index 0000000..70cf516
--- /dev/null
+++ b/nladmin-system/src/main/java/org/nl/agv/rest/DeveloperController.java
@@ -0,0 +1,92 @@
+package org.nl.agv.rest;
+
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.nl.agv.service.DevelopService;
+import org.nl.annotation.Log;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * @author ldjun
+ * @date 2021-07-26
+ **/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "AGV开发者选项")
+@RequestMapping("/api/developer")
+@Slf4j
+public class DeveloperController {
+
+ private final DevelopService developService;
+
+ @PostMapping("/getIP")
+ @Log("开发者选项查询Ifconfig参数")
+ @ApiOperation("开发者选项查询Ifconfig参数")
+ //@PreAuthorize("@el.check('sect:list')")
+ public ResponseEntity