From daffc63ee000f6de9dabc356057b3d00a2d71d83 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: 星期四, 12 十月 2023 12:54:57 +0800
Subject: [PATCH] 增加pro配置文件
---
ruoyi-admin/target/classes/banner.txt | 24
ruoyi-system/target/maven-archiver/pom.properties | 3
ruoyi-admin/target/classes/i18n/messages.properties | 38
ruoyi-common/target/maven-archiver/pom.properties | 3
ruoyi-file/target/maven-archiver/pom.properties | 3
exam-system/target/classes/mapper/coalmine/CmStaffTrainMapper.xml | 24
.idea/encodings.xml | 23
ruoyi-generator/target/classes/vm/vue/index.vue.vm | 602 ++++
exam-system/target/classes/mapper/coalmine/EmonExamRecordMapper.xml | 25
ruoyi-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst | 13
ruoyi-system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst | 66
exam-system/target/classes/mapper/noncoalmine/ViolationRegistrationMapper.xml | 44
ruoyi-admin/target/classes/mybatis/mybatis-config.xml | 20
exam-system/target/classes/mapper/coalmine/ExaminerManageOperateTypeBindMapper.xml | 24
ruoyi-admin/src/main/resources/application-pro.yml | 116
ruoyi-admin/target/ruoyi-admin.jar.original | 0
ruoyi-framework/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst | 45
.idea/misc.xml | 12
ruoyi-quartz/target/classes/mapper/quartz/SysJobLogMapper.xml | 93
exam-system/target/classes/mapper/noncoalmine/WorkRegistrationMapper.xml | 43
exam-system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst | 171 +
ruoyi-framework/target/maven-archiver/pom.properties | 3
ruoyi-admin/target/classes/META-INF/spring-devtools.properties | 1
ruoyi-quartz/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst | 18
exam-system/target/classes/mapper/coalmine/CmStaffResumeMapper.xml | 22
ruoyi-admin/target/maven-archiver/pom.properties | 3
ruoyi-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst | 115
ruoyi-system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst | 65
exam-system/target/classes/mapper/noncoalmine/TrainingInstitutionMapper.xml | 27
.idea/jarRepositories.xml | 25
exam-system/target/classes/mapper/coalmine/CmStaffExamMapper.xml | 24
exam-system/target/classes/mapper/noncoalmine/NcStaffMapper.xml | 20
ruoyi-generator/target/classes/vm/java/controller.java.vm | 115
ruoyi-system/target/classes/mapper/system/SysOperateTypeMapper.xml | 65
ruoyi-generator/target/classes/vm/vue/v3/index.vue.vm | 590 ++++
ruoyi-quartz/target/classes/mapper/quartz/SysJobMapper.xml | 111
.idea/.gitignore | 8
exam-system/target/classes/mapper/noncoalmine/NcExamPlanMapper.xml | 17
ruoyi-framework/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst | 49
ruoyi-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst | 13
ruoyi-admin/src/main/resources/application.yml | 2
ruoyi-system/target/classes/mapper/system/SysUserRoleMapper.xml | 44
exam-system/target/maven-archiver/pom.properties | 3
exam-system/target/classes/mapper/noncoalmine/ExamSiteMapper.xml | 26
ruoyi-file/target/classes/mapper/AttachmentInfoMapper.xml | 27
ruoyi-system/target/classes/mapper/system/SysLogininforMapper.xml | 57
ruoyi-admin/target/classes/application-pro.yml | 116
ruoyi-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst | 131 +
ruoyi-system/target/classes/mapper/system/SysMenuMapper.xml | 202 +
ruoyi-generator/target/classes/vm/java/sub-domain.java.vm | 76
.idea/compiler.xml | 20
ruoyi-quartz/target/maven-archiver/pom.properties | 3
exam-system/target/classes/mapper/coalmine/TeacherManageOperateTypeBindMapper.xml | 23
ruoyi-system/target/classes/mapper/system/SysConfigMapper.xml | 117
ruoyi-system/target/classes/mapper/system/SysRoleDeptMapper.xml | 34
exam-system/target/classes/mapper/coalmine/CmStaffMapper.xml | 25
ruoyi-system/target/classes/mapper/system/SysDeptMapper.xml | 159 +
ruoyi-file/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst | 11
exam-system/target/classes/mapper/coalmine/ExaminerManageMapper.xml | 31
ruoyi-generator/target/classes/vm/vue/v3/index-tree.vue.vm | 474 +++
ruoyi-system/target/classes/mapper/system/SysPostMapper.xml | 122
ruoyi-admin/target/classes/application-dev.yml | 116
ruoyi-generator/target/classes/vm/vue/index-tree.vue.vm | 505 ++++
ruoyi-generator/target/classes/mapper/generator/GenTableColumnMapper.xml | 127 +
.idea/vcs.xml | 6
ruoyi-system/target/classes/mapper/system/SysUserMapper.xml | 223 +
ruoyi-generator/target/classes/generator.yml | 10
ruoyi-generator/target/maven-archiver/pom.properties | 3
ruoyi-generator/target/classes/vm/sql/sql.vm | 22
ruoyi-generator/target/classes/mapper/generator/GenTableMapper.xml | 202 +
ruoyi-system/target/classes/mapper/system/SysUserPostMapper.xml | 34
ruoyi-generator/target/classes/vm/java/serviceImpl.java.vm | 169 +
exam-system/target/classes/mapper/coalmine/TeacherManageMapper.xml | 30
ruoyi-system/target/classes/mapper/system/SysDictDataMapper.xml | 124 +
ruoyi-generator/target/classes/vm/js/api.js.vm | 44
ruoyi-generator/target/classes/vm/vue/v3/readme.txt | 1
ruoyi-generator/target/classes/vm/xml/mapper.xml.vm | 135 +
ruoyi-system/target/classes/mapper/system/SysRoleMapper.xml | 152 +
ruoyi-system/target/classes/mapper/system/SysOperLogMapper.xml | 84
ruoyi-generator/target/classes/vm/java/mapper.java.vm | 91
ruoyi-generator/target/classes/vm/java/service.java.vm | 61
ruoyi-generator/target/classes/vm/java/domain.java.vm | 105
exam-system/target/classes/mapper/coalmine/CmStaffQaMapper.xml | 25
exam-system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst | 169 +
ruoyi-system/target/classes/mapper/system/SysRoleMenuMapper.xml | 34
ruoyi-file/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst | 9
ruoyi-admin/target/classes/logback.xml | 93
ruoyi-system/target/classes/mapper/system/SysNoticeMapper.xml | 89
ruoyi-quartz/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst | 17
ruoyi-system/target/classes/mapper/system/SysDictTypeMapper.xml | 105
ruoyi-admin/target/classes/application.yml | 98
ruoyi-admin/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst | 27
ruoyi-admin/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst | 26
exam-system/target/classes/mapper/coalmine/EmonTrainRecordMapper.xml | 23
94 files changed, 7,344 insertions(+), 1 deletions(-)
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..9d5edd0
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="CompilerConfiguration">
+ <annotationProcessing>
+ <profile name="Maven default annotation processors profile" enabled="true">
+ <sourceOutputDir name="target/generated-sources/annotations" />
+ <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+ <outputRelativeToContentRoot value="true" />
+ <module name="ruoyi-framework" />
+ <module name="ruoyi-system" />
+ <module name="exam-system" />
+ <module name="ruoyi-common" />
+ <module name="ruoyi-generator" />
+ <module name="ruoyi-file" />
+ <module name="ruoyi-quartz" />
+ <module name="ruoyi-admin" />
+ </profile>
+ </annotationProcessing>
+ </component>
+</project>
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..152cecb
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="Encoding">
+ <file url="file://$PROJECT_DIR$/exam-system/src/main/java" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/exam-system/src/main/resources" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-admin/src/main/java" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-admin/src/main/resources" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/resources" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-file/src/main/java" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-file/src/main/resources" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-framework/src/main/java" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-framework/src/main/resources" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-generator/src/main/java" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-generator/src/main/resources" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-quartz/src/main/java" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-quartz/src/main/resources" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-system/src/main/java" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/ruoyi-system/src/main/resources" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+ <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..becfc75
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="RemoteRepositoriesConfiguration">
+ <remote-repository>
+ <option name="id" value="public" />
+ <option name="name" value="aliyun nexus" />
+ <option name="url" value="https://maven.aliyun.com/repository/public" />
+ </remote-repository>
+ <remote-repository>
+ <option name="id" value="central" />
+ <option name="name" value="Central Repository" />
+ <option name="url" value="http://maven.aliyun.com/nexus/content/repositories/central/" />
+ </remote-repository>
+ <remote-repository>
+ <option name="id" value="central" />
+ <option name="name" value="Maven Central repository" />
+ <option name="url" value="https://repo1.maven.org/maven2" />
+ </remote-repository>
+ <remote-repository>
+ <option name="id" value="jboss.community" />
+ <option name="name" value="JBoss Community repository" />
+ <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+ </remote-repository>
+ </component>
+</project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..d5cd614
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ExternalStorageConfigurationManager" enabled="true" />
+ <component name="MavenProjectsManager">
+ <option name="originalFiles">
+ <list>
+ <option value="$PROJECT_DIR$/pom.xml" />
+ </list>
+ </option>
+ </component>
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
+</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="" vcs="Git" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/exam-system/target/classes/mapper/coalmine/CmStaffExamMapper.xml b/exam-system/target/classes/mapper/coalmine/CmStaffExamMapper.xml
new file mode 100644
index 0000000..8cfd93e
--- /dev/null
+++ b/exam-system/target/classes/mapper/coalmine/CmStaffExamMapper.xml
@@ -0,0 +1,24 @@
+<?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.gkhy.exam.coalmine.mapper.CmStaffExamMapper">
+
+ <resultMap type="com.gkhy.exam.coalmine.entity.CmStaffExam" id="CmStaffExamMap">
+ <result property="id" column="id"/>
+ <result property="staffId" column="staff_id"/>
+ <result property="startTime" column="start_time"/>
+ <result property="endTime" column="end_time"/>
+ <result property="examCenter" column="exam_center"/>
+ <result property="subject" column="subject"/>
+ <result property="result" column="result"/>
+ <result property="delFlag" column="del_flag"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+ <sql id="selectAllField">
+ select id, staff_id, start_time, end_time, exam_center, subject, result, del_flag, create_by, create_time, update_by, update_time
+ from cm_staff_exam
+ </sql>
+</mapper>
+
diff --git a/exam-system/target/classes/mapper/coalmine/CmStaffMapper.xml b/exam-system/target/classes/mapper/coalmine/CmStaffMapper.xml
new file mode 100644
index 0000000..c5a8bb5
--- /dev/null
+++ b/exam-system/target/classes/mapper/coalmine/CmStaffMapper.xml
@@ -0,0 +1,25 @@
+<?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.gkhy.exam.coalmine.mapper.CmStaffMapper">
+
+ <resultMap type="com.gkhy.exam.coalmine.entity.CmStaff" id="CmStaffManageMap">
+ <result property="id" column="id"/>
+ <result property="name" column="name"/>
+ <result property="sex" column="sex"/>
+ <result property="nationCode" column="nation_code"/>
+ <result property="code" column="code"/>
+ <result property="mobilePhone" column="mobile_phone"/>
+ <result property="eduLevel" column="edu_level"/>
+ <result property="photoAttachment" column="photo_attachment"/>
+ <result property="delFlag" column="del_flag"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+ <sql id="selectAllField">
+ select id, name, sex, nation_code, code, mobile_phone, edu_level, photo_attachment, del_flag, create_by, create_time, update_by, update_time
+ from cm_staff_manage
+ </sql>
+</mapper>
+
diff --git a/exam-system/target/classes/mapper/coalmine/CmStaffQaMapper.xml b/exam-system/target/classes/mapper/coalmine/CmStaffQaMapper.xml
new file mode 100644
index 0000000..a59351a
--- /dev/null
+++ b/exam-system/target/classes/mapper/coalmine/CmStaffQaMapper.xml
@@ -0,0 +1,25 @@
+<?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.gkhy.exam.coalmine.mapper.CmStaffQaMapper">
+
+ <resultMap type="com.gkhy.exam.coalmine.entity.CmStaffQa" id="CmStaffQaMap">
+ <result property="id" column="id"/>
+ <result property="staffId" column="staff_id"/>
+ <result property="name" column="name"/>
+ <result property="operateTypeId" column="operate_type_id"/>
+ <result property="qualificationType" column="qualification_type"/>
+ <result property="jobCategory" column="job_category"/>
+ <result property="operationItems" column="operation_items"/>
+ <result property="expiredTime" column="expired_time"/>
+ <result property="delFlag" column="del_flag"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+ <sql id="selectAllField">
+ select id, staff_id, name, operate_type_id, qualification_type, job_category, operation_items, expired_time, del_flag, create_by, create_time, update_by, update_time
+ from cm_staff_qa
+ </sql>
+</mapper>
+
diff --git a/exam-system/target/classes/mapper/coalmine/CmStaffResumeMapper.xml b/exam-system/target/classes/mapper/coalmine/CmStaffResumeMapper.xml
new file mode 100644
index 0000000..f0f957e
--- /dev/null
+++ b/exam-system/target/classes/mapper/coalmine/CmStaffResumeMapper.xml
@@ -0,0 +1,22 @@
+<?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.gkhy.exam.coalmine.mapper.CmStaffResumeMapper">
+
+ <resultMap type="com.gkhy.exam.coalmine.entity.CmStaffResume" id="CmStaffResumeMap">
+ <result property="id" column="id"/>
+ <result property="staffId" column="staff_id"/>
+ <result property="startTime" column="start_time"/>
+ <result property="endTime" column="end_time"/>
+ <result property="unit" column="unit"/>
+ <result property="delFlag" column="del_flag"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+ <sql id="selectAllField">
+ select id, staff_id, start_time, end_time, unit, del_flag, create_by, create_time, update_by, update_time
+ from cm_staff_resume
+ </sql>
+</mapper>
+
diff --git a/exam-system/target/classes/mapper/coalmine/CmStaffTrainMapper.xml b/exam-system/target/classes/mapper/coalmine/CmStaffTrainMapper.xml
new file mode 100644
index 0000000..49c0f6a
--- /dev/null
+++ b/exam-system/target/classes/mapper/coalmine/CmStaffTrainMapper.xml
@@ -0,0 +1,24 @@
+<?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.gkhy.exam.coalmine.mapper.CmStaffTrainMapper">
+
+ <resultMap type="com.gkhy.exam.coalmine.entity.CmStaffTrain" id="CmStaffTrainMap">
+ <result property="id" column="id"/>
+ <result property="staffId" column="staff_id"/>
+ <result property="startTime" column="start_time"/>
+ <result property="endTime" column="end_time"/>
+ <result property="unit" column="unit"/>
+ <result property="batch" column="batch"/>
+ <result property="subject" column="subject"/>
+ <result property="delFlag" column="del_flag"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+ <sql id="selectAllField">
+ select id, staff_id, start_time, end_time, unit, batch, subject, del_flag, create_by, create_time, update_by, update_time
+ from cm_staff_train
+ </sql>
+</mapper>
+
diff --git a/exam-system/target/classes/mapper/coalmine/EmonExamRecordMapper.xml b/exam-system/target/classes/mapper/coalmine/EmonExamRecordMapper.xml
new file mode 100644
index 0000000..ef1611b
--- /dev/null
+++ b/exam-system/target/classes/mapper/coalmine/EmonExamRecordMapper.xml
@@ -0,0 +1,25 @@
+<?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.gkhy.exam.coalmine.mapper.EmonExamRecordMapper">
+
+ <resultMap type="com.gkhy.exam.coalmine.entity.EmonExamRecord" id="EmonExamRecordMap">
+ <result property="id" column="id"/>
+ <result property="reportTime" column="report_time"/>
+ <result property="districtId" column="district_id"/>
+ <result property="examCenter" column="exam_center"/>
+ <result property="excType" column="exc_type"/>
+ <result property="isCm" column="is_cm"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="delFlag" column="del_flag"/>
+ </resultMap>
+
+ <sql id="selectAllField">
+ select id, report_time, district_id, exam_center, exc_type, is_cm,exc_image, update_by, update_time, create_by, create_time, del_flag
+ from emon_exam_record
+ </sql>
+
+</mapper>
+
diff --git a/exam-system/target/classes/mapper/coalmine/EmonTrainRecordMapper.xml b/exam-system/target/classes/mapper/coalmine/EmonTrainRecordMapper.xml
new file mode 100644
index 0000000..f2b4a5e
--- /dev/null
+++ b/exam-system/target/classes/mapper/coalmine/EmonTrainRecordMapper.xml
@@ -0,0 +1,23 @@
+<?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.gkhy.exam.coalmine.mapper.EmonTrainRecordMapper">
+
+ <resultMap type="com.gkhy.exam.coalmine.entity.EmonTrainRecord" id="EmonTrainRecordMap">
+ <result property="id" column="id"/>
+ <result property="reportTime" column="report_time"/>
+ <result property="districtId" column="district_id"/>
+ <result property="examCenter" column="exam_center"/>
+ <result property="excType" column="exc_type"/>
+ <result property="isCm" column="is_cm"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="delFlag" column="del_flag"/>
+ </resultMap>
+ <sql id="selectAllField">
+ select id, report_time, district_id, exam_center, exc_type, is_cm, update_by, update_time, create_by, create_time, del_flag
+ from emon_train_record
+ </sql>
+</mapper>
+
diff --git a/exam-system/target/classes/mapper/coalmine/ExaminerManageMapper.xml b/exam-system/target/classes/mapper/coalmine/ExaminerManageMapper.xml
new file mode 100644
index 0000000..b488d33
--- /dev/null
+++ b/exam-system/target/classes/mapper/coalmine/ExaminerManageMapper.xml
@@ -0,0 +1,31 @@
+<?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.gkhy.exam.coalmine.mapper.ExaminerManageMapper">
+
+ <resultMap type="com.gkhy.exam.coalmine.entity.ExaminerManage" id="ExaminerManageMap">
+ <result property="id" column="id"/>
+ <result property="name" column="name"/>
+ <result property="sex" column="sex"/>
+ <result property="code" column="code"/>
+ <result property="mobilePhone" column="mobile_phone"/>
+ <result property="jobTitle" column="job_title"/>
+ <result property="eduLevel" column="edu_level"/>
+ <result property="expiredTime" column="expired_time"/>
+ <result property="isCm" column="is_cm"/>
+ <result property="description" column="description"/>
+ <result property="photoAttachment" column="photo_attachment"/>
+ <result property="qaAttachment" column="qa_attachment"/>
+ <result property="status" column="status"/>
+ <result property="delFlag" column="del_flag"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+
+ <sql id="selectAllField">
+ select id, name, sex, code, mobile_phone, job_title, edu_level, expired_time, is_cm, description,photo_attachment, qa_attachment,status, del_flag, create_by, create_time, update_by, update_time
+ from examiner_manage
+ </sql>
+</mapper>
+
diff --git a/exam-system/target/classes/mapper/coalmine/ExaminerManageOperateTypeBindMapper.xml b/exam-system/target/classes/mapper/coalmine/ExaminerManageOperateTypeBindMapper.xml
new file mode 100644
index 0000000..72e8c71
--- /dev/null
+++ b/exam-system/target/classes/mapper/coalmine/ExaminerManageOperateTypeBindMapper.xml
@@ -0,0 +1,24 @@
+<?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.gkhy.exam.coalmine.mapper.ExaminerManageOperateTypeBindMapper">
+
+ <resultMap type="com.gkhy.exam.coalmine.entity.ExaminerManageOperateTypeBind" id="ExaminerManageOperateTypeBindMap">
+ <result property="id" column="id"/>
+ <result property="examinerManageId" column="examiner_manage_id"/>
+ <result property="operateTypeId" column="operate_type_id"/>
+ <result property="qualificationType" column="qualification_type"/>
+ <result property="jobCategory" column="job_category"/>
+ <result property="operationItems" column="operation_items"/>
+ <result property="delFlag" column="del_flag"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+
+ <sql id="selectAllField">
+ select id, examiner_manage_id, operate_type_id, qualification_type, job_category, operation_items, del_flag, create_by, create_time, update_by, update_time
+ from examiner_manage_operate_type_bind
+ </sql>
+</mapper>
+
diff --git a/exam-system/target/classes/mapper/coalmine/TeacherManageMapper.xml b/exam-system/target/classes/mapper/coalmine/TeacherManageMapper.xml
new file mode 100644
index 0000000..c3b3127
--- /dev/null
+++ b/exam-system/target/classes/mapper/coalmine/TeacherManageMapper.xml
@@ -0,0 +1,30 @@
+<?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.gkhy.exam.coalmine.mapper.TeacherManageMapper">
+
+ <resultMap type="com.gkhy.exam.coalmine.entity.TeacherManage" id="TeacherManageMap">
+ <result property="id" column="id"/>
+ <result property="sex" column="sex"/>
+ <result property="code" column="code"/>
+ <result property="mobilePhone" column="mobile_phone"/>
+ <result property="name" column="name"/>
+ <result property="jobTitle" column="job_title"/>
+ <result property="eduLevel" column="edu_level"/>
+ <result property="expiredTime" column="expired_time"/>
+ <result property="isCm" column="is_cm"/>
+ <result property="description" column="description"/>
+ <result property="photoAttachment" column="photo_attachment"/>
+ <result property="qaAttachment" column="qa_attachment"/>
+ <result property="status" column="status"/>
+ <result property="delFlag" column="del_flag"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+ <sql id="selectAllField">
+ select id, sex, code, mobile_phone, name, job_title, edu_level, expired_time, is_cm, description,photo_attachment, qa_attachment, status, del_flag, create_by, create_time, update_by, update_time
+ from teacher_manage
+ </sql>
+</mapper>
+
diff --git a/exam-system/target/classes/mapper/coalmine/TeacherManageOperateTypeBindMapper.xml b/exam-system/target/classes/mapper/coalmine/TeacherManageOperateTypeBindMapper.xml
new file mode 100644
index 0000000..c3b2af6
--- /dev/null
+++ b/exam-system/target/classes/mapper/coalmine/TeacherManageOperateTypeBindMapper.xml
@@ -0,0 +1,23 @@
+<?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.gkhy.exam.coalmine.mapper.TeacherManageOperateTypeBindMapper">
+
+ <resultMap type="com.gkhy.exam.coalmine.entity.TeacherManageOperateTypeBind" id="TeacherManageOperateTypeBindMap">
+ <result property="id" column="id"/>
+ <result property="teacherManageId" column="teacher_manage_id"/>
+ <result property="operateTypeId" column="operate_type_id"/>
+ <result property="qualificationType" column="qualification_type"/>
+ <result property="jobCategory" column="job_category"/>
+ <result property="operationItems" column="operation_items"/>
+ <result property="delFlag" column="del_flag"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+ <sql id="selectAllField">
+ select id, teacher_manage_id, operate_type_id, qualification_type, job_category, operation_items, del_flag, create_by, create_time, update_by, update_time
+ from teacher_manage_operate_type_bind
+ </sql>
+</mapper>
+
diff --git a/exam-system/target/classes/mapper/noncoalmine/ExamSiteMapper.xml b/exam-system/target/classes/mapper/noncoalmine/ExamSiteMapper.xml
new file mode 100644
index 0000000..cdc70d4
--- /dev/null
+++ b/exam-system/target/classes/mapper/noncoalmine/ExamSiteMapper.xml
@@ -0,0 +1,26 @@
+<?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.gkhy.exam.noncoalmine.mapper.ExamSiteMapper">
+ <select id="listByPage" resultType="com.gkhy.exam.noncoalmine.model.vo.ExamSiteVO">
+ SELECT
+ s.*,
+ d.name as districtName
+ FROM
+ exam_site s
+ LEFT JOIN sys_district d ON d.id = s.district_id
+ WHERE
+ s.del_flag = 0
+ <if test="query.siteName != null and query.siteName != ''">
+ and s.site_name like concat('%', #{query.siteName}, '%')
+ </if>
+ <if test="query.districtCode != null and query.districtCode != ''">
+ AND d.`code` LIKE concat(#{query.districtCode}, '%')
+ </if>
+ <if test="query.isCm != null">
+ AND s.is_cm = #{query.isCm}
+ </if>
+ order by s.create_time desc
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/exam-system/target/classes/mapper/noncoalmine/NcExamPlanMapper.xml b/exam-system/target/classes/mapper/noncoalmine/NcExamPlanMapper.xml
new file mode 100644
index 0000000..85f2f17
--- /dev/null
+++ b/exam-system/target/classes/mapper/noncoalmine/NcExamPlanMapper.xml
@@ -0,0 +1,17 @@
+<?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.gkhy.exam.noncoalmine.mapper.NcExamPlanMapper">
+ <select id="selectNcExamPlanList" resultType="com.gkhy.exam.noncoalmine.entity.NcExamPlan">
+ SELECT
+ *
+ FROM
+ nc_exam_plan
+ WHERE
+ del_flag = 0
+ <if test="query.examPlanName != null and query.examPlanName != ''">
+ and exam_plan_name like concat('%', #{query.examPlanName}, '%')
+ </if>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/exam-system/target/classes/mapper/noncoalmine/NcStaffMapper.xml b/exam-system/target/classes/mapper/noncoalmine/NcStaffMapper.xml
new file mode 100644
index 0000000..d1b0468
--- /dev/null
+++ b/exam-system/target/classes/mapper/noncoalmine/NcStaffMapper.xml
@@ -0,0 +1,20 @@
+<?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.gkhy.exam.noncoalmine.mapper.NcStaffMapper">
+ <select id="getList" resultType="com.gkhy.exam.noncoalmine.model.vo.NcStaffVO">
+ SELECT
+ *
+ FROM
+ nc_staff
+ WHERE
+ del_flag = 0
+ <if test="query.name != null and query.name != ''">
+ and name like concat('%', #{query.name}, '%')
+ </if>
+ <if test="query.idCardNum != null and query.idCardNum != ''">
+ and name = #{query.idCardNum}
+ </if>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/exam-system/target/classes/mapper/noncoalmine/TrainingInstitutionMapper.xml b/exam-system/target/classes/mapper/noncoalmine/TrainingInstitutionMapper.xml
new file mode 100644
index 0000000..30d04f5
--- /dev/null
+++ b/exam-system/target/classes/mapper/noncoalmine/TrainingInstitutionMapper.xml
@@ -0,0 +1,27 @@
+<?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.gkhy.exam.noncoalmine.mapper.TrainingInstitutionMapper">
+ <select id="listByPage" resultType="com.gkhy.exam.noncoalmine.model.vo.TrainingInstitutionVO">
+ SELECT
+ t.*,
+ d.name as districtName
+ FROM
+ training_institution t
+ LEFT JOIN sys_district d ON d.id = t.district_id
+ WHERE
+ t.del_flag = 0
+ <if test="query.institutionName != null and query.institutionName != ''">
+ and t.institution_name like concat('%', #{query.institutionName}, '%')
+ </if>
+ <if test="query.districtCode != null and query.districtCode != ''">
+ AND d.`code` LIKE concat(#{query.districtCode}, '%')
+ </if>
+ <if test="query.isCm != null">
+ AND t.is_cm = #{query.isCm}
+ </if>
+ order by t.create_time desc
+
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/exam-system/target/classes/mapper/noncoalmine/ViolationRegistrationMapper.xml b/exam-system/target/classes/mapper/noncoalmine/ViolationRegistrationMapper.xml
new file mode 100644
index 0000000..61d86a2
--- /dev/null
+++ b/exam-system/target/classes/mapper/noncoalmine/ViolationRegistrationMapper.xml
@@ -0,0 +1,44 @@
+<?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.gkhy.exam.noncoalmine.mapper.ViolationRegistrationMapper">
+ <select id="listByPage" resultType="com.gkhy.exam.noncoalmine.entity.ViolationRegistration">
+ select
+ violation_id,
+ name,
+ id_card,
+ elect_num,
+ ic_num,
+ violation_time,
+ dept,
+ operate_type_id,
+ is_cm,
+ violation_path,
+ remark,
+ del_flag,
+ create_by,
+ create_time,
+ update_by,
+ update_time
+ from violation_registration
+ where del_flag = 0
+ <if test="query.dept != null and query.dept != ''">
+ and dept like concat('%', #{query.dept}, '%')
+ </if>
+ <if test="query.name != null and query.name != ''">
+ and name like concat('%', #{query.name}, '%')
+ </if>
+ <if test="query.idCard != null and query.idCard != ''">
+ and id_card like concat('%', #{query.idCard}, '%')
+ </if>
+ <if test="query.operateTypeId != null">
+ and (operate_type_id = #{query.operateTypeId} OR operate_type_id IN ( SELECT t.id FROM sys_operate_type t WHERE find_in_set(#{query.operateTypeId}, ancestors)))
+ </if>
+ <if test="query.isCm != null">
+ and is_cm = #{query.isCm}
+ </if>
+ order by create_time desc
+
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/exam-system/target/classes/mapper/noncoalmine/WorkRegistrationMapper.xml b/exam-system/target/classes/mapper/noncoalmine/WorkRegistrationMapper.xml
new file mode 100644
index 0000000..187b535
--- /dev/null
+++ b/exam-system/target/classes/mapper/noncoalmine/WorkRegistrationMapper.xml
@@ -0,0 +1,43 @@
+<?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.gkhy.exam.noncoalmine.mapper.WorkRegistrationMapper">
+ <select id="listByPage" resultType="com.gkhy.exam.noncoalmine.entity.WorkRegistration">
+ select
+ work_id,
+ name,
+ id_card,
+ elect_num,
+ ic_num,
+ work_time,
+ dept,
+ operate_type_id,
+ is_cm,
+ remark,
+ del_flag,
+ create_by,
+ create_time,
+ update_by,
+ update_time
+ from work_registration
+ where del_flag = 0
+ <if test="query.dept != null and query.dept != ''">
+ and dept like concat('%', #{query.dept}, '%')
+ </if>
+ <if test="query.name != null and query.name != ''">
+ and name like concat('%', #{query.name}, '%')
+ </if>
+ <if test="query.idCard != null and query.idCard != ''">
+ and id_card like concat('%', #{query.idCard}, '%')
+ </if>
+ <if test="query.operateTypeId != null">
+ and (operate_type_id = #{query.operateTypeId} OR operate_type_id IN ( SELECT t.id FROM sys_operate_type t WHERE find_in_set(#{query.operateTypeId}, ancestors)))
+ </if>
+ <if test="query.isCm != null">
+ and is_cm = #{query.isCm}
+ </if>
+ order by create_time desc
+ </select>
+
+</mapper>
\ No newline at end of file
diff --git a/exam-system/target/maven-archiver/pom.properties b/exam-system/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..886aeef
--- /dev/null
+++ b/exam-system/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=exam-system
+groupId=com.ruoyi
+version=3.8.6
diff --git a/exam-system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/exam-system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..afd0bd5
--- /dev/null
+++ b/exam-system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,171 @@
+com\gkhy\exam\coalmine\model\dto\req\CmStaffResumeUpdateReqDTO.class
+com\gkhy\exam\coalmine\model\dto\req\CmStaffUpdateReqDTO.class
+com\gkhy\exam\noncoalmine\mapper\NcCertMapper.class
+com\gkhy\exam\noncoalmine\entity\NcStaffTrain.class
+com\gkhy\exam\coalmine\mapper\CmStaffQaMapper.class
+com\gkhy\exam\noncoalmine\entity\TrainingInstitution.class
+com\gkhy\exam\noncoalmine\mapper\NcStaffTrainMapper.class
+com\gkhy\exam\coalmine\model\dto\req\ExaminerManageAddOperateTypeReqDTO.class
+com\gkhy\exam\noncoalmine\model\query\WorkRegistrationQuery.class
+com\gkhy\exam\coalmine\model\dto\req\TeacherManageAddOperateTypeReqDTO.class
+com\gkhy\exam\coalmine\service\baseService\EmonExamRecordService.class
+com\gkhy\exam\coalmine\service\CmStaffManagerService.class
+com\gkhy\exam\noncoalmine\mapper\NcExamPlanMapper.class
+com\gkhy\exam\noncoalmine\model\addForm\TrainingInstitutionAddForm.class
+com\gkhy\exam\noncoalmine\service\impl\NcCertServiceImpl$1.class
+com\gkhy\exam\noncoalmine\model\query\NcExamPlanQuery.class
+com\gkhy\exam\noncoalmine\mapper\WorkRegistrationMapper.class
+com\gkhy\exam\noncoalmine\model\query\TrainingInstitutionQuery.class
+com\gkhy\exam\noncoalmine\model\vo\ReturnVO.class
+com\gkhy\exam\coalmine\service\baseService\CmStaffService.class
+com\gkhy\exam\noncoalmine\model\addForm\NcStaffAddForm.class
+com\gkhy\exam\noncoalmine\model\vo\TrainingInstitutionVO.class
+com\gkhy\exam\noncoalmine\service\ViolationRegistrationService.class
+com\gkhy\exam\coalmine\service\baseService\impl\ExaminerManageServiceImpl.class
+com\gkhy\exam\coalmine\entity\CmStaffQa.class
+com\gkhy\exam\noncoalmine\mapper\ExamSiteMapper.class
+com\gkhy\exam\noncoalmine\service\NcStaffTrainService.class
+com\gkhy\exam\noncoalmine\controller\NcExamineesController.class
+com\gkhy\exam\coalmine\service\EmonRecordManagerService.class
+com\gkhy\exam\noncoalmine\entity\NcExamPlan.class
+com\gkhy\exam\noncoalmine\model\modForm\WorkRegistrationModForm.class
+com\gkhy\exam\noncoalmine\model\modForm\ExamSiteModForm.class
+com\gkhy\exam\coalmine\entity\ExaminerManageOperateTypeBind.class
+com\gkhy\exam\noncoalmine\service\NcExamPlanService.class
+com\gkhy\exam\coalmine\controller\ExaminerManageController.class
+com\gkhy\exam\coalmine\mapper\CmStaffMapper.class
+com\gkhy\exam\noncoalmine\model\vo\ExamSiteVO.class
+com\gkhy\exam\coalmine\model\dto\req\TeacherManageUpdateStatusReqDTO.class
+com\gkhy\exam\noncoalmine\controller\ViolationRegistrationController.class
+com\gkhy\exam\noncoalmine\service\impl\NcStaffServiceImpl.class
+com\gkhy\exam\noncoalmine\controller\NcStaffResumeController.class
+com\gkhy\exam\coalmine\model\dto\resp\CmStaffPageRespDTO.class
+com\gkhy\exam\coalmine\service\baseService\impl\EmonExamRecordServiceImpl.class
+com\gkhy\exam\coalmine\model\dto\req\CmStaffAddReqDTO.class
+com\gkhy\exam\coalmine\service\EduResourcesManagerService.class
+com\gkhy\exam\coalmine\mapper\CmStaffResumeMapper.class
+com\gkhy\exam\coalmine\service\impl\EmonRecordManagerServiceImpl.class
+com\gkhy\exam\noncoalmine\service\NcStaffResumeService.class
+com\gkhy\exam\coalmine\model\dto\req\ExaminerManageAddReqDTO.class
+com\gkhy\exam\noncoalmine\model\addForm\WorkRegistrationAddForm.class
+com\gkhy\exam\noncoalmine\model\vo\WorkRegistrationVO.class
+com\gkhy\exam\noncoalmine\model\modForm\TrainingInstitutionModForm.class
+com\gkhy\exam\noncoalmine\model\vo\ExamPlanInfo.class
+com\gkhy\exam\noncoalmine\service\impl\ViolationRegistrationServiceImpl.class
+com\gkhy\exam\noncoalmine\service\impl\NcStaffTrainServiceImpl.class
+com\gkhy\exam\coalmine\model\dto\req\TeacherManageAddReqDTO.class
+com\gkhy\exam\coalmine\service\baseService\impl\CmStaffResumeServiceImpl.class
+com\gkhy\exam\coalmine\controller\CmStaffTrainController.class
+com\gkhy\exam\coalmine\model\dto\resp\GetTeacherRespDTO.class
+com\gkhy\exam\coalmine\mapper\EmonExamRecordMapper.class
+com\gkhy\exam\noncoalmine\entity\NcExaminees.class
+com\gkhy\exam\coalmine\model\dto\req\ExaminerManageUpdateOperateTypeReqDTO.class
+com\gkhy\exam\coalmine\model\dto\resp\GetExaminerOperateTypesRespDTO.class
+com\gkhy\exam\noncoalmine\model\addForm\ExamSiteAddForm.class
+com\gkhy\exam\noncoalmine\model\addForm\NcStaffTrainAddForm.class
+com\gkhy\exam\coalmine\entity\CmStaff.class
+com\gkhy\exam\coalmine\service\baseService\impl\ExaminerManageOperateTypeBindServiceImpl.class
+com\gkhy\exam\coalmine\mapper\CmStaffTrainMapper.class
+com\gkhy\exam\noncoalmine\service\WorkRegistrationService.class
+com\gkhy\exam\coalmine\model\dto\req\TrainReceiveReqDTO.class
+com\gkhy\exam\coalmine\model\dto\resp\GetExamDataRespDTO.class
+com\gkhy\exam\coalmine\model\dto\req\CmStaffQaAddReqDTO.class
+com\gkhy\exam\coalmine\model\dto\req\ExaminerManageUpdateReqDTO.class
+com\gkhy\exam\coalmine\service\baseService\CmStaffExamService.class
+com\gkhy\exam\noncoalmine\model\query\ExamSiteQuery.class
+com\gkhy\exam\coalmine\controller\CmStaffController.class
+com\gkhy\exam\noncoalmine\entity\ExamSite.class
+com\gkhy\exam\noncoalmine\model\vo\ReturnCertVO.class
+com\gkhy\exam\coalmine\service\baseService\impl\TeacherManageServiceImpl.class
+com\gkhy\exam\coalmine\model\dto\resp\GetExaminerRespDTO.class
+com\gkhy\exam\coalmine\model\dto\resp\GetTeacherOperateTypesRespDTO.class
+com\gkhy\exam\noncoalmine\controller\TrainingInstitutionController.class
+com\gkhy\exam\coalmine\mapper\TeacherManageOperateTypeBindMapper.class
+com\gkhy\exam\coalmine\model\dto\req\CmStaffExamAddReqDTO.class
+com\gkhy\exam\coalmine\service\baseService\impl\CmStaffTrainServiceImpl.class
+com\gkhy\exam\coalmine\model\dto\req\TeacherManageUpdateOperateTypeReqDTO.class
+com\gkhy\exam\coalmine\entity\ExaminerManage.class
+com\gkhy\exam\coalmine\model\dto\req\CmStaffExamUpdateReqDTO.class
+com\gkhy\exam\coalmine\service\baseService\EmonTrainRecordService.class
+com\gkhy\exam\noncoalmine\mapper\NcStaffResumeMapper.class
+com\gkhy\exam\noncoalmine\mapper\NcExamineesMapper.class
+com\gkhy\exam\noncoalmine\model\query\ViolationRegistrationQuery.class
+com\gkhy\exam\noncoalmine\service\impl\NcExamPlanServiceImpl.class
+com\gkhy\exam\noncoalmine\service\impl\NcStaffResumeServiceImpl.class
+com\gkhy\exam\noncoalmine\model\addForm\NcExamineesAddForm.class
+com\gkhy\exam\noncoalmine\service\NcExamineesService.class
+com\gkhy\exam\noncoalmine\model\vo\NcStaffVO.class
+com\gkhy\exam\coalmine\service\impl\EduResourcesManagerServiceImpl.class
+com\gkhy\exam\coalmine\controller\CmStaffQaController.class
+com\gkhy\exam\noncoalmine\controller\ExamSiteController.class
+com\gkhy\exam\coalmine\entity\TeacherManageOperateTypeBind.class
+com\gkhy\exam\coalmine\service\baseService\impl\CmStaffQaServiceImpl.class
+com\gkhy\exam\noncoalmine\service\impl\ExamSiteServiceImpl.class
+com\gkhy\exam\coalmine\service\baseService\CmStaffTrainService.class
+com\gkhy\exam\coalmine\service\baseService\impl\CmStaffServiceImpl.class
+com\gkhy\exam\coalmine\model\dto\req\CmStaffTrainUpdateReqDTO.class
+com\gkhy\exam\coalmine\service\baseService\ExaminerManageService.class
+com\gkhy\exam\coalmine\service\baseService\TeacherManageService.class
+com\gkhy\exam\noncoalmine\entity\NcCert.class
+com\gkhy\exam\coalmine\service\baseService\impl\CmStaffExamServiceImpl.class
+com\gkhy\exam\coalmine\model\dto\req\TeacherManageUpdateReqDTO.class
+com\gkhy\exam\coalmine\mapper\EmonTrainRecordMapper.class
+com\gkhy\exam\coalmine\entity\EmonTrainRecord.class
+com\gkhy\exam\coalmine\service\baseService\impl\EmonTrainRecordServiceImpl.class
+com\gkhy\exam\coalmine\model\dto\resp\CmStaffByCodeRespDTO.class
+com\gkhy\exam\coalmine\model\dto\req\CmStaffQaUpdateReqDTO.class
+com\gkhy\exam\noncoalmine\entity\WorkRegistration.class
+com\gkhy\exam\noncoalmine\model\query\NcCertQuery.class
+com\gkhy\exam\coalmine\service\baseService\CmStaffQaService.class
+com\gkhy\exam\coalmine\entity\CmStaffTrain.class
+com\gkhy\exam\noncoalmine\controller\NcStaffController.class
+com\gkhy\exam\noncoalmine\entity\NcStaffResume.class
+com\gkhy\exam\coalmine\model\dto\req\ExaminerManageUpdateStatusReqDTO.class
+com\gkhy\exam\coalmine\model\dto\resp\GetTrainDataRespDTO.class
+com\gkhy\exam\coalmine\entity\TeacherManage.class
+com\gkhy\exam\noncoalmine\service\impl\TrainingInstitutionServiceImpl.class
+com\gkhy\exam\coalmine\mapper\CmStaffExamMapper.class
+com\gkhy\exam\noncoalmine\mapper\TrainingInstitutionMapper.class
+com\gkhy\exam\coalmine\service\baseService\CmStaffResumeService.class
+com\gkhy\exam\noncoalmine\model\vo\ViolationRegistrationVO.class
+com\gkhy\exam\noncoalmine\service\impl\NcCertServiceImpl.class
+com\gkhy\exam\coalmine\entity\CmStaffResume.class
+com\gkhy\exam\coalmine\model\dto\req\CmStaffResumeAddReqDTO.class
+com\gkhy\exam\noncoalmine\mapper\ViolationRegistrationMapper.class
+com\gkhy\exam\coalmine\entity\CmStaffExam.class
+com\gkhy\exam\noncoalmine\service\impl\NcExamPlanServiceImpl$1.class
+com\gkhy\exam\coalmine\mapper\ExaminerManageOperateTypeBindMapper.class
+com\gkhy\exam\noncoalmine\entity\NcStaff.class
+com\gkhy\exam\coalmine\entity\EmonExamRecord.class
+com\gkhy\exam\coalmine\service\baseService\TeacherManageOperateTypeBindService.class
+com\gkhy\exam\noncoalmine\controller\NcCertController.class
+com\gkhy\exam\noncoalmine\controller\NcExamPlanController.class
+com\gkhy\exam\noncoalmine\model\modForm\NcStaffModForm.class
+com\gkhy\exam\coalmine\service\impl\CmStaffManagerServiceImpl.class
+com\gkhy\exam\coalmine\utils\AttachmentUtil.class
+com\gkhy\exam\noncoalmine\mapper\NcStaffMapper.class
+com\gkhy\exam\noncoalmine\model\addForm\NcStaffResumeAddForm.class
+com\gkhy\exam\coalmine\controller\CmStaffExamController.class
+com\gkhy\exam\noncoalmine\service\ExamSiteService.class
+com\gkhy\exam\coalmine\model\dto\resp\AttachmentInfoRespDTO.class
+com\gkhy\exam\noncoalmine\service\NcCertService.class
+com\gkhy\exam\noncoalmine\controller\NcStaffTrainController.class
+com\gkhy\exam\noncoalmine\model\modForm\ViolationRegistrationModForm.class
+com\gkhy\exam\coalmine\mapper\ExaminerManageMapper.class
+com\gkhy\exam\coalmine\service\baseService\impl\TeacherManageOperateTypeBindServiceImpl.class
+com\gkhy\exam\coalmine\controller\TeacherManageController.class
+com\gkhy\exam\noncoalmine\service\impl\NcExamineesServiceImpl.class
+com\gkhy\exam\noncoalmine\service\TrainingInstitutionService.class
+com\gkhy\exam\noncoalmine\controller\WorkRegistrationController.class
+com\gkhy\exam\coalmine\controller\CmStaffResumeController.class
+com\gkhy\exam\noncoalmine\service\impl\WorkRegistrationServiceImpl.class
+com\gkhy\exam\noncoalmine\model\vo\ExamPlanExaminee.class
+com\gkhy\exam\coalmine\controller\EmonRecordController.class
+com\gkhy\exam\coalmine\model\dto\req\ExamReceiveReqDTO.class
+com\gkhy\exam\noncoalmine\model\query\NcStaffQuery.class
+com\gkhy\exam\coalmine\service\baseService\ExaminerManageOperateTypeBindService.class
+com\gkhy\exam\noncoalmine\model\addForm\ViolationRegistrationAddForm.class
+com\gkhy\exam\noncoalmine\service\NcStaffService.class
+com\gkhy\exam\coalmine\mapper\TeacherManageMapper.class
+com\gkhy\exam\coalmine\model\dto\req\CmStaffTrainAddReqDTO.class
+com\gkhy\exam\noncoalmine\entity\ViolationRegistration.class
diff --git a/exam-system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/exam-system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..2296405
--- /dev/null
+++ b/exam-system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,169 @@
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\impl\EduResourcesManagerServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\addForm\ViolationRegistrationAddForm.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\query\ViolationRegistrationQuery.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\mapper\TeacherManageMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\utils\AttachmentUtil.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\mapper\NcExamPlanMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\impl\CmStaffQaServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\CmStaffExamUpdateReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\mapper\WorkRegistrationMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\query\TrainingInstitutionQuery.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\impl\NcStaffServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\impl\NcCertServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\impl\ExamSiteServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\resp\GetExaminerRespDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\addForm\ExamSiteAddForm.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\query\NcExamPlanQuery.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\TrainingInstitutionService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\entity\TeacherManage.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\impl\WorkRegistrationServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\entity\CmStaff.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\impl\NcStaffTrainServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\controller\CmStaffQaController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\impl\ExaminerManageServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\ExaminerManageAddReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\TeacherManageUpdateOperateTypeReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\CmStaffManagerService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\impl\NcExamPlanServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\controller\NcExamPlanController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\mapper\ExamSiteMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\mapper\NcStaffMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\CmStaffExamService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\impl\CmStaffResumeServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\resp\AttachmentInfoRespDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\entity\TrainingInstitution.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\mapper\ViolationRegistrationMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\query\WorkRegistrationQuery.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\vo\ExamPlanExaminee.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\addForm\WorkRegistrationAddForm.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\controller\ViolationRegistrationController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\ExamReceiveReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\controller\CmStaffResumeController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\TeacherManageService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\CmStaffQaAddReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\vo\ExamSiteVO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\entity\EmonTrainRecord.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\CmStaffResumeService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\resp\GetTeacherOperateTypesRespDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\controller\NcStaffResumeController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\mapper\NcStaffTrainMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\vo\ViolationRegistrationVO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\impl\NcStaffResumeServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\impl\EmonTrainRecordServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\controller\EmonRecordController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\mapper\CmStaffResumeMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\addForm\NcStaffAddForm.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\controller\CmStaffController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\entity\NcStaffResume.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\entity\ExaminerManageOperateTypeBind.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\CmStaffExamAddReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\impl\TeacherManageOperateTypeBindServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\EduResourcesManagerService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\EmonRecordManagerService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\CmStaffQaService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\query\ExamSiteQuery.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\NcStaffTrainService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\TeacherManageAddOperateTypeReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\impl\TeacherManageServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\query\NcCertQuery.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\NcCertService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\mapper\TrainingInstitutionMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\modForm\WorkRegistrationModForm.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\controller\NcExamineesController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\WorkRegistrationService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\modForm\ExamSiteModForm.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\CmStaffTrainService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\resp\GetExaminerOperateTypesRespDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\ExaminerManageService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\entity\ViolationRegistration.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\controller\NcStaffController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\entity\TeacherManageOperateTypeBind.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\CmStaffResumeAddReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\resp\CmStaffPageRespDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\mapper\EmonExamRecordMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\NcExamPlanService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\CmStaffTrainUpdateReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\CmStaffTrainAddReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\addForm\NcExamineesAddForm.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\entity\ExaminerManage.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\entity\EmonExamRecord.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\entity\NcStaff.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\controller\NcStaffTrainController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\vo\WorkRegistrationVO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\entity\CmStaffExam.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\EmonExamRecordService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\controller\WorkRegistrationController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\modForm\TrainingInstitutionModForm.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\ExamSiteService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\mapper\ExaminerManageMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\mapper\CmStaffTrainMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\entity\CmStaffTrain.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\NcStaffService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\addForm\NcStaffTrainAddForm.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\impl\EmonRecordManagerServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\controller\CmStaffExamController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\CmStaffAddReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\impl\CmStaffServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\mapper\CmStaffMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\CmStaffService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\mapper\EmonTrainRecordMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\TeacherManageAddReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\controller\TeacherManageController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\addForm\TrainingInstitutionAddForm.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\controller\NcCertController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\impl\CmStaffExamServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\mapper\NcCertMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\impl\ViolationRegistrationServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\modForm\NcStaffModForm.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\TeacherManageUpdateStatusReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\impl\CmStaffTrainServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\vo\ReturnCertVO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\TrainReceiveReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\resp\GetTrainDataRespDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\controller\CmStaffTrainController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\entity\ExamSite.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\entity\CmStaffQa.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\TeacherManageOperateTypeBindService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\vo\TrainingInstitutionVO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\impl\NcExamineesServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\impl\EmonExamRecordServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\CmStaffResumeUpdateReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\impl\TrainingInstitutionServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\ExaminerManageUpdateOperateTypeReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\mapper\NcStaffResumeMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\EmonTrainRecordService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\resp\GetTeacherRespDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\mapper\NcExamineesMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\vo\ExamPlanInfo.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\entity\NcStaffTrain.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\impl\CmStaffManagerServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\entity\NcCert.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\controller\ExamSiteController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\mapper\CmStaffExamMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\entity\NcExaminees.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\addForm\NcStaffResumeAddForm.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\entity\WorkRegistration.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\ViolationRegistrationService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\controller\TrainingInstitutionController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\mapper\CmStaffQaMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\CmStaffQaUpdateReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\entity\NcExamPlan.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\TeacherManageUpdateReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\NcStaffResumeService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\CmStaffUpdateReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\ExaminerManageUpdateStatusReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\mapper\TeacherManageOperateTypeBindMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\ExaminerManageAddOperateTypeReqDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\resp\CmStaffByCodeRespDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\entity\CmStaffResume.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\mapper\ExaminerManageOperateTypeBindMapper.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\modForm\ViolationRegistrationModForm.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\service\NcExamineesService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\controller\ExaminerManageController.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\vo\ReturnVO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\impl\ExaminerManageOperateTypeBindServiceImpl.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\resp\GetExamDataRespDTO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\service\baseService\ExaminerManageOperateTypeBindService.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\query\NcStaffQuery.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\noncoalmine\model\vo\NcStaffVO.java
+F:\kzy\codes\java\swspkmas\exam-system\src\main\java\com\gkhy\exam\coalmine\model\dto\req\ExaminerManageUpdateReqDTO.java
diff --git a/ruoyi-admin/src/main/resources/application-pro.yml b/ruoyi-admin/src/main/resources/application-pro.yml
new file mode 100644
index 0000000..f10561c
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/application-pro.yml
@@ -0,0 +1,116 @@
+# 开发环境配置
+server:
+ # 服务器的HTTP端口,默认为8080
+ port: 8085
+ servlet:
+ # 应用的访问路径
+ context-path: /api
+ tomcat:
+ # tomcat的URI编码
+ uri-encoding: UTF-8
+ # 连接数满后的排队数,默认为100
+ accept-count: 1000
+ threads:
+ # tomcat最大线程数,默认为200
+ max: 800
+ # Tomcat启动初始化的线程数,默认值10
+ min-spare: 100
+
+# 数据源配置
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 主库数据源
+ master:
+ url: jdbc:mysql://192.168.30.118:3306/swspkmas?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: e7be93ef5413e5ed
+ # 从库数据源
+ slave:
+ # 从数据源开关/默认关闭
+ enabled: false
+ url:
+ username:
+ password:
+ # 初始连接数
+ initialSize: 5
+ # 最小连接池数量
+ minIdle: 10
+ # 最大连接池数量
+ maxActive: 20
+ # 配置获取连接等待超时的时间
+ maxWait: 60000
+ # 配置连接超时时间
+ connectTimeout: 30000
+ # 配置网络超时时间
+ socketTimeout: 60000
+ # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+ timeBetweenEvictionRunsMillis: 60000
+ # 配置一个连接在池中最小生存的时间,单位是毫秒
+ minEvictableIdleTimeMillis: 300000
+ # 配置一个连接在池中最大生存的时间,单位是毫秒
+ maxEvictableIdleTimeMillis: 900000
+ # 配置检测连接是否有效
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 设置白名单,不填则允许所有访问
+ allow:
+ url-pattern: /druid/*
+ # 控制台管理用户名和密码
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 慢SQL记录
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+
+ # redis 配置
+ redis:
+ # 地址
+ host: 127.0.0.1
+ # 端口,默认为6379
+ port: 6379
+ # 数据库索引
+ database: 5
+ # 密码
+ password: gkhy@202306
+ # 连接超时时间
+ timeout: 10s
+ lettuce:
+ pool:
+ # 连接池中的最小空闲连接
+ min-idle: 0
+ # 连接池中的最大空闲连接
+ max-idle: 8
+ # 连接池的最大数据库连接数
+ max-active: 8
+ # #连接池最大阻塞等待时间(使用负值表示没有限制)
+ max-wait: -1ms
+tripartite:
+ restSever: https://inspurtestcx.saws.org.cn/sjjh
+ appKey: hj92qe
+ appPwd: dxep6j
+
+#windous测试
+file:
+ path:
+ #基础路径
+ dcPath: E:\file\gkhy\test\
+ urlRootPath: /uploadfile/
+ module:
+ #用户模块
+ accountPath: /account/
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 14b57bf..e857812 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -36,7 +36,7 @@
# 国际化资源文件路径
basename: i18n/messages
profiles:
- active: dev
+ active: pro
# 文件上传
servlet:
multipart:
diff --git a/ruoyi-admin/target/classes/META-INF/spring-devtools.properties b/ruoyi-admin/target/classes/META-INF/spring-devtools.properties
new file mode 100644
index 0000000..2b23f85
--- /dev/null
+++ b/ruoyi-admin/target/classes/META-INF/spring-devtools.properties
@@ -0,0 +1 @@
+restart.include.json=/com.alibaba.fastjson.*.jar
\ No newline at end of file
diff --git a/ruoyi-admin/target/classes/application-dev.yml b/ruoyi-admin/target/classes/application-dev.yml
new file mode 100644
index 0000000..bf0df3a
--- /dev/null
+++ b/ruoyi-admin/target/classes/application-dev.yml
@@ -0,0 +1,116 @@
+# 开发环境配置
+server:
+ # 服务器的HTTP端口,默认为8080
+ port: 8085
+ servlet:
+ # 应用的访问路径
+ context-path: /api
+ tomcat:
+ # tomcat的URI编码
+ uri-encoding: UTF-8
+ # 连接数满后的排队数,默认为100
+ accept-count: 1000
+ threads:
+ # tomcat最大线程数,默认为200
+ max: 800
+ # Tomcat启动初始化的线程数,默认值10
+ min-spare: 100
+
+# 数据源配置
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 主库数据源
+ master:
+ url: jdbc:mysql://192.168.0.52:3306/swspkmas?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: gkhymysql
+ # 从库数据源
+ slave:
+ # 从数据源开关/默认关闭
+ enabled: false
+ url:
+ username:
+ password:
+ # 初始连接数
+ initialSize: 5
+ # 最小连接池数量
+ minIdle: 10
+ # 最大连接池数量
+ maxActive: 20
+ # 配置获取连接等待超时的时间
+ maxWait: 60000
+ # 配置连接超时时间
+ connectTimeout: 30000
+ # 配置网络超时时间
+ socketTimeout: 60000
+ # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+ timeBetweenEvictionRunsMillis: 60000
+ # 配置一个连接在池中最小生存的时间,单位是毫秒
+ minEvictableIdleTimeMillis: 300000
+ # 配置一个连接在池中最大生存的时间,单位是毫秒
+ maxEvictableIdleTimeMillis: 900000
+ # 配置检测连接是否有效
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 设置白名单,不填则允许所有访问
+ allow:
+ url-pattern: /druid/*
+ # 控制台管理用户名和密码
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 慢SQL记录
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+
+ # redis 配置
+ redis:
+ # 地址
+ host: 127.0.0.1
+ # 端口,默认为6379
+ port: 6379
+ # 数据库索引
+ database: 5
+ # 密码
+ password: root
+ # 连接超时时间
+ timeout: 10s
+ lettuce:
+ pool:
+ # 连接池中的最小空闲连接
+ min-idle: 0
+ # 连接池中的最大空闲连接
+ max-idle: 8
+ # 连接池的最大数据库连接数
+ max-active: 8
+ # #连接池最大阻塞等待时间(使用负值表示没有限制)
+ max-wait: -1ms
+tripartite:
+ restSever: https://inspurtestcx.saws.org.cn/sjjh
+ appKey: hj92qe
+ appPwd: dxep6j
+
+#windous测试
+file:
+ path:
+ #基础路径
+ dcPath: E:\file\gkhy\test\
+ urlRootPath: /uploadfile/
+ module:
+ #用户模块
+ accountPath: /account/
diff --git a/ruoyi-admin/target/classes/application-pro.yml b/ruoyi-admin/target/classes/application-pro.yml
new file mode 100644
index 0000000..f10561c
--- /dev/null
+++ b/ruoyi-admin/target/classes/application-pro.yml
@@ -0,0 +1,116 @@
+# 开发环境配置
+server:
+ # 服务器的HTTP端口,默认为8080
+ port: 8085
+ servlet:
+ # 应用的访问路径
+ context-path: /api
+ tomcat:
+ # tomcat的URI编码
+ uri-encoding: UTF-8
+ # 连接数满后的排队数,默认为100
+ accept-count: 1000
+ threads:
+ # tomcat最大线程数,默认为200
+ max: 800
+ # Tomcat启动初始化的线程数,默认值10
+ min-spare: 100
+
+# 数据源配置
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 主库数据源
+ master:
+ url: jdbc:mysql://192.168.30.118:3306/swspkmas?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: e7be93ef5413e5ed
+ # 从库数据源
+ slave:
+ # 从数据源开关/默认关闭
+ enabled: false
+ url:
+ username:
+ password:
+ # 初始连接数
+ initialSize: 5
+ # 最小连接池数量
+ minIdle: 10
+ # 最大连接池数量
+ maxActive: 20
+ # 配置获取连接等待超时的时间
+ maxWait: 60000
+ # 配置连接超时时间
+ connectTimeout: 30000
+ # 配置网络超时时间
+ socketTimeout: 60000
+ # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+ timeBetweenEvictionRunsMillis: 60000
+ # 配置一个连接在池中最小生存的时间,单位是毫秒
+ minEvictableIdleTimeMillis: 300000
+ # 配置一个连接在池中最大生存的时间,单位是毫秒
+ maxEvictableIdleTimeMillis: 900000
+ # 配置检测连接是否有效
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 设置白名单,不填则允许所有访问
+ allow:
+ url-pattern: /druid/*
+ # 控制台管理用户名和密码
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 慢SQL记录
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+
+ # redis 配置
+ redis:
+ # 地址
+ host: 127.0.0.1
+ # 端口,默认为6379
+ port: 6379
+ # 数据库索引
+ database: 5
+ # 密码
+ password: gkhy@202306
+ # 连接超时时间
+ timeout: 10s
+ lettuce:
+ pool:
+ # 连接池中的最小空闲连接
+ min-idle: 0
+ # 连接池中的最大空闲连接
+ max-idle: 8
+ # 连接池的最大数据库连接数
+ max-active: 8
+ # #连接池最大阻塞等待时间(使用负值表示没有限制)
+ max-wait: -1ms
+tripartite:
+ restSever: https://inspurtestcx.saws.org.cn/sjjh
+ appKey: hj92qe
+ appPwd: dxep6j
+
+#windous测试
+file:
+ path:
+ #基础路径
+ dcPath: E:\file\gkhy\test\
+ urlRootPath: /uploadfile/
+ module:
+ #用户模块
+ accountPath: /account/
diff --git a/ruoyi-admin/target/classes/application.yml b/ruoyi-admin/target/classes/application.yml
new file mode 100644
index 0000000..e857812
--- /dev/null
+++ b/ruoyi-admin/target/classes/application.yml
@@ -0,0 +1,98 @@
+# 项目相关配置
+ruoyi:
+ # 名称
+ name: RuoYi
+ # 版本
+ version: 3.8.6
+ # 版权年份
+ copyrightYear: 2023
+ # 实例演示开关
+ demoEnabled: true
+ # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
+ profile: D:/ruoyi/uploadPath
+ # 获取ip地址开关
+ addressEnabled: false
+ # 验证码类型 math 数字计算 char 字符验证
+ captchaType: math
+
+# 日志配置
+logging:
+ level:
+ com.ruoyi: debug
+ org.springframework: warn
+
+# 用户配置
+user:
+ password:
+ # 密码最大错误次数
+ maxRetryCount: 5
+ # 密码锁定时间(默认10分钟)
+ lockTime: 10
+
+# Spring配置
+spring:
+ # 资源信息
+ messages:
+ # 国际化资源文件路径
+ basename: i18n/messages
+ profiles:
+ active: pro
+ # 文件上传
+ servlet:
+ multipart:
+ # 单个文件大小
+ max-file-size: 100MB
+ # 设置总上传的文件大小
+ max-request-size: 200MB
+ # 服务模块
+ devtools:
+ restart:
+ # 热部署开关
+ enabled: true
+# token配置
+token:
+ # 令牌自定义标识
+ header: Authorization
+ # 令牌密钥
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 令牌有效期(默认30分钟)
+ expireTime: 30
+
+# MyBatis-plus配置
+mybatis-plus:
+ mapper-locations: classpath*:mapper/**/*Mapper.xml
+ # config-location: classpath:mybatis/mybatis-config.xml
+ #实体扫描,多个package用逗号或者分号分隔
+ typeAliasesPackage: com.ruoyi.**.domain,com.gkhy.**.entity
+ configuration:
+ #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射
+ map-underscore-to-camel-case: true
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ global-config:
+ db-config:
+ logic-delete-value: 2
+ logic-not-delete-value: 0
+ logic-delete-field: del_flag
+
+
+# PageHelper分页插件
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger配置
+swagger:
+ # 是否开启swagger
+ enabled: true
+ # 请求前缀
+ pathMapping: /
+
+# 防止XSS攻击
+xss:
+ # 过滤开关
+ enabled: true
+ # 排除链接(多个用逗号分隔)
+ excludes: /system/notice
+ # 匹配链接
+ urlPatterns: /system/*,/monitor/*,/tool/*,/test/*
diff --git a/ruoyi-admin/target/classes/banner.txt b/ruoyi-admin/target/classes/banner.txt
new file mode 100644
index 0000000..0931cb8
--- /dev/null
+++ b/ruoyi-admin/target/classes/banner.txt
@@ -0,0 +1,24 @@
+Application Version: ${ruoyi.version}
+Spring Boot Version: ${spring-boot.version}
+////////////////////////////////////////////////////////////////////
+// _ooOoo_ //
+// o8888888o //
+// 88" . "88 //
+// (| ^_^ |) //
+// O\ = /O //
+// ____/`---'\____ //
+// .' \\| |// `. //
+// / \\||| : |||// \ //
+// / _||||| -:- |||||- \ //
+// | | \\\ - /// | | //
+// | \_| ''\---/'' | | //
+// \ .-\__ `-` ___/-. / //
+// ___`. .' /--.--\ `. . ___ //
+// ."" '< `.___\_<|>_/___.' >'"". //
+// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
+// \ \ `-. \_ __\ /__ _/ .-` / / //
+// ========`-.____`-.___\_____/___.-`____.-'======== //
+// `=---=' //
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
+// 佛祖保佑 永不宕机 永无BUG //
+////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/ruoyi-admin/target/classes/i18n/messages.properties b/ruoyi-admin/target/classes/i18n/messages.properties
new file mode 100644
index 0000000..93de005
--- /dev/null
+++ b/ruoyi-admin/target/classes/i18n/messages.properties
@@ -0,0 +1,38 @@
+#错误消息
+not.null=* 必须填写
+user.jcaptcha.error=验证码错误
+user.jcaptcha.expire=验证码已失效
+user.not.exists=用户不存在/密码错误
+user.password.not.match=用户不存在/密码错误
+user.password.retry.limit.count=密码输入错误{0}次
+user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定{1}分钟
+user.password.delete=对不起,您的账号已被删除
+user.blocked=用户已封禁,请联系管理员
+role.blocked=角色已封禁,请联系管理员
+login.blocked=很遗憾,访问IP已被列入系统黑名单
+user.logout.success=退出成功
+
+length.not.valid=长度必须在{min}到{max}个字符之间
+
+user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头
+user.password.not.valid=* 5-50个字符
+
+user.email.not.valid=邮箱格式错误
+user.mobile.phone.number.not.valid=手机号格式错误
+user.login.success=登录成功
+user.register.success=注册成功
+user.notfound=请重新登录
+user.forcelogout=管理员强制退出,请重新登录
+user.unknown.error=未知错误,请重新登录
+
+##文件上传消息
+upload.exceed.maxSize=上传的文件大小超出限制的文件大小!<br/>允许的文件最大大小是:{0}MB!
+upload.filename.exceed.length=上传的文件名最长{0}个字符
+
+##权限
+no.permission=您没有数据的权限,请联系管理员添加权限 [{0}]
+no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}]
+no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}]
+no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
+no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
+no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]
diff --git a/ruoyi-admin/target/classes/logback.xml b/ruoyi-admin/target/classes/logback.xml
new file mode 100644
index 0000000..a360583
--- /dev/null
+++ b/ruoyi-admin/target/classes/logback.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+ <!-- 日志存放路径 -->
+ <property name="log.path" value="/home/ruoyi/logs" />
+ <!-- 日志输出格式 -->
+ <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
+
+ <!-- 控制台输出 -->
+ <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>${log.pattern}</pattern>
+ </encoder>
+ </appender>
+
+ <!-- 系统日志输出 -->
+ <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${log.path}/sys-info.log</file>
+ <!-- 循环政策:基于时间创建日志文件 -->
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- 日志文件名格式 -->
+ <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
+ <!-- 日志最大的历史 60天 -->
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${log.pattern}</pattern>
+ </encoder>
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <!-- 过滤的级别 -->
+ <level>INFO</level>
+ <!-- 匹配时的操作:接收(记录) -->
+ <onMatch>ACCEPT</onMatch>
+ <!-- 不匹配时的操作:拒绝(不记录) -->
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ </appender>
+
+ <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${log.path}/sys-error.log</file>
+ <!-- 循环政策:基于时间创建日志文件 -->
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- 日志文件名格式 -->
+ <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
+ <!-- 日志最大的历史 60天 -->
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${log.pattern}</pattern>
+ </encoder>
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <!-- 过滤的级别 -->
+ <level>ERROR</level>
+ <!-- 匹配时的操作:接收(记录) -->
+ <onMatch>ACCEPT</onMatch>
+ <!-- 不匹配时的操作:拒绝(不记录) -->
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ </appender>
+
+ <!-- 用户访问日志输出 -->
+ <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${log.path}/sys-user.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- 按天回滚 daily -->
+ <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
+ <!-- 日志最大的历史 60天 -->
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${log.pattern}</pattern>
+ </encoder>
+ </appender>
+
+ <!-- 系统模块日志级别控制 -->
+ <logger name="com.ruoyi" level="info" />
+ <!-- Spring日志级别控制 -->
+ <logger name="org.springframework" level="warn" />
+
+ <root level="info">
+ <appender-ref ref="console" />
+ </root>
+
+ <!--系统操作日志-->
+ <root level="info">
+ <appender-ref ref="file_info" />
+ <appender-ref ref="file_error" />
+ </root>
+
+ <!--系统用户操作日志-->
+ <logger name="sys-user" level="info">
+ <appender-ref ref="sys-user"/>
+ </logger>
+</configuration>
\ No newline at end of file
diff --git a/ruoyi-admin/target/classes/mybatis/mybatis-config.xml b/ruoyi-admin/target/classes/mybatis/mybatis-config.xml
new file mode 100644
index 0000000..ac47c03
--- /dev/null
+++ b/ruoyi-admin/target/classes/mybatis/mybatis-config.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration
+PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-config.dtd">
+<configuration>
+ <!-- 全局参数 -->
+ <settings>
+ <!-- 使全局的映射器启用或禁用缓存 -->
+ <setting name="cacheEnabled" value="true" />
+ <!-- 允许JDBC 支持自动生成主键 -->
+ <setting name="useGeneratedKeys" value="true" />
+ <!-- 配置默认的执行器.SIMPLE就是普通执行器;REUSE执行器会重用预处理语句(prepared statements);BATCH执行器将重用语句并执行批量更新 -->
+ <setting name="defaultExecutorType" value="SIMPLE" />
+ <!-- 指定 MyBatis 所用日志的具体实现 -->
+ <setting name="logImpl" value="SLF4J" />
+ <!-- 使用驼峰命名法转换字段 -->
+ <!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
+ </settings>
+
+</configuration>
diff --git a/ruoyi-admin/target/maven-archiver/pom.properties b/ruoyi-admin/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..fbbec1c
--- /dev/null
+++ b/ruoyi-admin/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=ruoyi-admin
+groupId=com.ruoyi
+version=3.8.6
diff --git a/ruoyi-admin/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/ruoyi-admin/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..705029c
--- /dev/null
+++ b/ruoyi-admin/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,27 @@
+com\ruoyi\RuoYiServletInitializer.class
+com\ruoyi\web\controller\common\CaptchaController.class
+com\ruoyi\web\controller\system\SysDictDataController.class
+com\ruoyi\web\controller\monitor\SysOperlogController.class
+com\ruoyi\web\controller\system\SysIndexController.class
+com\ruoyi\web\controller\common\CommonController.class
+com\ruoyi\RuoYiApplication.class
+com\ruoyi\web\controller\system\SysRegisterController.class
+com\ruoyi\web\controller\tool\UserEntity.class
+com\ruoyi\web\controller\system\SysMenuController.class
+com\ruoyi\web\controller\system\SysPostController.class
+com\ruoyi\web\controller\monitor\ServerController.class
+com\ruoyi\web\controller\monitor\SysLogininforController.class
+com\ruoyi\web\controller\monitor\SysUserOnlineController.class
+com\ruoyi\web\controller\system\SysLoginController.class
+com\ruoyi\web\controller\monitor\CacheController.class
+com\ruoyi\web\controller\system\SysDistrictController.class
+com\ruoyi\web\controller\system\SysOperateTypeController.class
+com\ruoyi\web\controller\system\SysNoticeController.class
+com\ruoyi\web\controller\system\SysDictTypeController.class
+com\ruoyi\web\controller\system\SysProfileController.class
+com\ruoyi\web\controller\system\SysDeptController.class
+com\ruoyi\web\controller\system\SysConfigController.class
+com\ruoyi\web\controller\system\SysUserController.class
+com\ruoyi\web\controller\system\SysRoleController.class
+com\ruoyi\web\controller\tool\TestController.class
+com\ruoyi\web\core\config\SwaggerConfig.class
diff --git a/ruoyi-admin/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/ruoyi-admin/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..d496031
--- /dev/null
+++ b/ruoyi-admin/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,26 @@
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysMenuController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\monitor\SysOperlogController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysUserController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\common\CaptchaController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysDictDataController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\core\config\SwaggerConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysNoticeController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysPostController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\tool\TestController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysDistrictController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysDeptController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysRoleController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\common\CommonController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysProfileController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\monitor\CacheController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\monitor\SysLogininforController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysConfigController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysDictTypeController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysOperateTypeController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\monitor\SysUserOnlineController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysRegisterController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\RuoYiApplication.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\monitor\ServerController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysIndexController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\SysLoginController.java
+F:\kzy\codes\java\swspkmas\ruoyi-admin\src\main\java\com\ruoyi\RuoYiServletInitializer.java
diff --git a/ruoyi-admin/target/ruoyi-admin.jar.original b/ruoyi-admin/target/ruoyi-admin.jar.original
new file mode 100644
index 0000000..aee39b4
--- /dev/null
+++ b/ruoyi-admin/target/ruoyi-admin.jar.original
Binary files differ
diff --git a/ruoyi-common/target/maven-archiver/pom.properties b/ruoyi-common/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..b353212
--- /dev/null
+++ b/ruoyi-common/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=ruoyi-common
+groupId=com.ruoyi
+version=3.8.6
diff --git a/ruoyi-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/ruoyi-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..e487851
--- /dev/null
+++ b/ruoyi-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,131 @@
+com\ruoyi\common\filter\XssHttpServletRequestWrapper.class
+com\ruoyi\common\utils\ip\IpUtils.class
+com\ruoyi\common\enums\coalmineEnums\EnableStatusEnum.class
+com\ruoyi\common\utils\uuid\IdUtils.class
+com\ruoyi\common\annotation\RepeatSubmit.class
+com\ruoyi\common\constant\GenConstants.class
+com\ruoyi\common\core\domain\TreeEntity.class
+com\ruoyi\common\signature\SkipHttpsUtils.class
+com\ruoyi\common\exception\base\BaseException.class
+com\ruoyi\common\utils\ip\AddressUtils.class
+com\ruoyi\common\constant\HttpStatus.class
+com\ruoyi\common\utils\sign\Base64.class
+com\ruoyi\common\xss\Xss.class
+com\ruoyi\common\exception\user\UserNotExistsException.class
+com\ruoyi\common\core\domain\model\LoginBody.class
+com\ruoyi\common\exception\user\UserPasswordNotMatchException.class
+com\ruoyi\common\annotation\Log.class
+com\ruoyi\common\core\controller\BaseController$1.class
+com\ruoyi\common\utils\file\ImageUtils.class
+com\ruoyi\common\config\RuoYiConfig.class
+com\ruoyi\common\enums\BusinessStatus.class
+com\ruoyi\common\utils\sign\Md5Utils.class
+com\ruoyi\common\utils\http\HttpUtils$TrustAnyHostnameVerifier.class
+com\ruoyi\common\exception\file\FileSizeLimitExceededException.class
+com\ruoyi\common\utils\Arith.class
+com\ruoyi\common\annotation\Excel$ColumnType.class
+com\ruoyi\common\annotation\DataScope.class
+com\ruoyi\common\core\domain\entity\SysDictType.class
+com\ruoyi\common\core\text\StrFormatter.class
+com\ruoyi\common\annotation\Excels.class
+com\ruoyi\common\core\domain\entity\SysDictData.class
+com\ruoyi\common\utils\http\HttpUtils$TrustAnyTrustManager.class
+com\ruoyi\common\enums\UserStatus.class
+com\ruoyi\common\exception\user\CaptchaExpireException.class
+com\ruoyi\common\annotation\Excel$Type.class
+com\ruoyi\common\exception\job\TaskException$Code.class
+com\ruoyi\common\utils\spring\SpringUtils.class
+com\ruoyi\common\utils\file\FileUploadUtils.class
+com\ruoyi\common\filter\RepeatedlyRequestWrapper$1.class
+com\ruoyi\common\utils\bean\BeanUtils.class
+com\ruoyi\common\signature\NcCertQuery1.class
+com\ruoyi\common\utils\sql\SqlUtil.class
+com\ruoyi\common\utils\file\MimeTypeUtils.class
+com\ruoyi\common\enums\BusinessType.class
+com\ruoyi\common\filter\PropertyPreExcludeFilter.class
+com\ruoyi\common\core\domain\model\LoginUser.class
+com\ruoyi\common\exception\file\InvalidExtensionException$InvalidMediaExtensionException.class
+com\ruoyi\common\exception\file\FileUploadException.class
+com\ruoyi\common\utils\poi\ExcelUtil.class
+com\ruoyi\common\exception\user\UserException.class
+com\ruoyi\common\utils\MessageUtils.class
+com\ruoyi\common\enums\DataSourceType.class
+com\ruoyi\common\exception\file\InvalidExtensionException$InvalidVideoExtensionException.class
+com\ruoyi\common\enums\HttpMethod.class
+com\ruoyi\common\utils\PageUtils.class
+com\ruoyi\common\utils\LogUtils.class
+com\ruoyi\common\annotation\DataSource.class
+com\ruoyi\common\core\page\PageDomain.class
+com\ruoyi\common\filter\XssHttpServletRequestWrapper$1.class
+com\ruoyi\common\utils\ExceptionUtil.class
+com\ruoyi\common\utils\http\HttpHelper.class
+com\ruoyi\common\enums\LimitType.class
+com\ruoyi\common\filter\RepeatedlyRequestWrapper.class
+com\ruoyi\common\exception\file\InvalidExtensionException$InvalidImageExtensionException.class
+com\ruoyi\common\core\controller\BaseController.class
+com\ruoyi\common\utils\StringUtils.class
+com\ruoyi\common\utils\poi\ExcelHandlerAdapter.class
+com\ruoyi\common\exception\DemoModeException.class
+com\ruoyi\common\enums\OperatorType.class
+com\ruoyi\common\exception\UtilException.class
+com\ruoyi\common\xss\XssValidator.class
+com\ruoyi\common\utils\DateUtils.class
+com\ruoyi\common\core\domain\entity\SysMenu.class
+com\ruoyi\common\core\page\TableDataInfo.class
+com\ruoyi\common\exception\GlobalException.class
+com\ruoyi\common\exception\ExceptionInfo.class
+com\ruoyi\common\exception\job\TaskException.class
+com\ruoyi\common\constant\UserConstants.class
+com\ruoyi\common\core\text\Convert.class
+com\ruoyi\common\enums\coalmineEnums\DeleteStatusEnum.class
+com\ruoyi\common\core\domain\entity\SysUser.class
+com\ruoyi\common\utils\file\FileUtils.class
+com\ruoyi\common\exception\user\BlackListException.class
+com\ruoyi\common\core\domain\TreeSelect.class
+com\ruoyi\common\filter\RepeatableFilter.class
+com\ruoyi\common\constant\Constants.class
+com\ruoyi\common\core\domain\entity\SysRole.class
+com\ruoyi\common\annotation\Anonymous.class
+com\ruoyi\common\exception\user\CaptchaException.class
+com\ruoyi\common\core\domain\R.class
+com\ruoyi\common\utils\bean\BeanValidators.class
+com\ruoyi\common\core\domain\model\RegisterBody.class
+com\ruoyi\common\exception\file\FileException.class
+com\ruoyi\common\core\domain\BaseEntity.class
+com\ruoyi\common\utils\SecurityUtils.class
+com\ruoyi\common\core\redis\RedisCache.class
+com\ruoyi\common\annotation\Excel.class
+com\ruoyi\common\utils\uuid\UUID$Holder.class
+com\ruoyi\common\signature\Signature11.class
+com\ruoyi\common\annotation\RateLimiter.class
+com\ruoyi\common\core\domain\entity\SysDept.class
+com\ruoyi\common\core\page\TableSupport.class
+com\ruoyi\common\utils\uuid\UUID.class
+com\ruoyi\common\utils\http\HttpUtils.class
+com\ruoyi\common\exception\file\InvalidExtensionException.class
+com\ruoyi\common\signature\TokenUtils.class
+com\ruoyi\common\constant\ScheduleConstants.class
+com\ruoyi\common\exception\ServiceException.class
+com\ruoyi\common\utils\file\FileTypeUtils.class
+com\ruoyi\common\constant\ScheduleConstants$Status.class
+com\ruoyi\common\utils\html\EscapeUtil.class
+com\ruoyi\common\exception\file\InvalidExtensionException$InvalidFlashExtensionException.class
+com\ruoyi\common\utils\http\HttpUtils$1.class
+com\ruoyi\common\utils\ServletUtils.class
+com\ruoyi\common\component\MyMetaObjectHandler.class
+com\ruoyi\common\utils\html\HTMLFilter.class
+com\ruoyi\common\utils\Threads.class
+com\ruoyi\common\utils\uuid\Seq.class
+com\ruoyi\common\signature\SignatureUtils.class
+com\ruoyi\common\filter\XssFilter.class
+com\ruoyi\common\core\domain\AjaxResult.class
+com\ruoyi\common\exception\file\FileNameLengthLimitExceededException.class
+com\ruoyi\common\core\text\CharsetKit.class
+com\ruoyi\common\signature\SkipHttpsUtils$1.class
+com\ruoyi\common\utils\reflect\ReflectUtils.class
+com\ruoyi\common\constant\ResultConstants.class
+com\ruoyi\common\utils\DictUtils.class
+com\ruoyi\common\constant\CacheConstants.class
+com\ruoyi\common\exception\BusinessException.class
+com\ruoyi\common\exception\user\UserPasswordRetryLimitExceedException.class
+com\ruoyi\common\signature\Signature.class
diff --git a/ruoyi-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/ruoyi-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..1fc9483
--- /dev/null
+++ b/ruoyi-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,115 @@
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\model\RegisterBody.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\file\FileUploadUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\filter\XssFilter.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\MessageUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\page\TableDataInfo.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\annotation\Excel.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\job\TaskException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\enums\BusinessType.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\LogUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\annotation\Log.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\SecurityUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\ip\AddressUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\Threads.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\file\ImageUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\annotation\DataScope.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\enums\coalmineEnums\DeleteStatusEnum.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\signature\Signature11.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\entity\SysDictData.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\http\HttpUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\enums\OperatorType.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\file\FileTypeUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\base\BaseException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\ExceptionUtil.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\constant\HttpStatus.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\enums\LimitType.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\user\UserNotExistsException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\uuid\IdUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\text\StrFormatter.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\page\TableSupport.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\sql\SqlUtil.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\bean\BeanUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\ip\IpUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\xss\XssValidator.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\user\CaptchaException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\filter\RepeatableFilter.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\AjaxResult.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\spring\SpringUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\file\FileNameLengthLimitExceededException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\poi\ExcelUtil.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\UtilException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\text\Convert.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\constant\UserConstants.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\entity\SysRole.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\http\HttpHelper.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\file\FileUploadException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\ServiceException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\config\RuoYiConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\file\MimeTypeUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\entity\SysUser.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\enums\HttpMethod.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\controller\BaseController.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\user\UserPasswordNotMatchException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\constant\ScheduleConstants.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\entity\SysDept.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\uuid\Seq.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\text\CharsetKit.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\ExceptionInfo.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\signature\NcCertQuery1.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\bean\BeanValidators.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\annotation\Anonymous.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\filter\RepeatedlyRequestWrapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\signature\SignatureUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\Arith.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\R.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\signature\SkipHttpsUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\TreeEntity.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\enums\DataSourceType.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\TreeSelect.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\html\EscapeUtil.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\annotation\RepeatSubmit.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\model\LoginBody.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\filter\XssHttpServletRequestWrapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\ServletUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\signature\TokenUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\user\CaptchaExpireException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\BaseEntity.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\GlobalException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\file\FileUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\constant\ResultConstants.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\redis\RedisCache.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\page\PageDomain.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\enums\BusinessStatus.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\sign\Base64.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\annotation\RateLimiter.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\signature\Signature.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\poi\ExcelHandlerAdapter.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\reflect\ReflectUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\user\UserPasswordRetryLimitExceedException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\constant\Constants.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\enums\UserStatus.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\StringUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\DictUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\annotation\Excels.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\component\MyMetaObjectHandler.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\model\LoginUser.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\sign\Md5Utils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\annotation\DataSource.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\enums\coalmineEnums\EnableStatusEnum.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\entity\SysMenu.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\constant\GenConstants.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\user\UserException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\xss\Xss.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\filter\PropertyPreExcludeFilter.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\file\InvalidExtensionException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\core\domain\entity\SysDictType.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\BusinessException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\html\HTMLFilter.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\constant\CacheConstants.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\file\FileSizeLimitExceededException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\DateUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\PageUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\file\FileException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\utils\uuid\UUID.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\user\BlackListException.java
+F:\kzy\codes\java\swspkmas\ruoyi-common\src\main\java\com\ruoyi\common\exception\DemoModeException.java
diff --git a/ruoyi-file/target/classes/mapper/AttachmentInfoMapper.xml b/ruoyi-file/target/classes/mapper/AttachmentInfoMapper.xml
new file mode 100644
index 0000000..4e69b19
--- /dev/null
+++ b/ruoyi-file/target/classes/mapper/AttachmentInfoMapper.xml
@@ -0,0 +1,27 @@
+<?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.ruoyi.file.mapper.AttachmentInfoMapper" >
+ <insert id="saveBatch" useGeneratedKeys="true" keyProperty="id" >
+ insert into attachment (file_key,file_path,file_url,file_name,file_suffix,file_desc,file_size,file_type,module,del_flag
+ ,create_by,create_time,update_by,update_time,business_id,remark)values
+ <foreach collection="attachmentList" item="attachment" separator=",">
+ (#{attachment.fileKey},#{attachment.filePath},#{attachment.fileUrl},#{attachment.fileName},#{attachment.fileSuffix},#{attachment.fileDesc},
+ #{attachment.fileSize},#{attachment.fileType},#{attachment.module},#{attachment.delFlag},#{attachment.createBy},
+ #{attachment.createTime},#{attachment.updateBy},#{attachment.updateTime},#{attachment.businessId},#{attachment.remark})
+ </foreach>
+ </insert>
+ <update id="updateBusinessIdBatch">
+ <foreach collection="attachmentList" item="attachment" separator=";">
+ update attachment
+ set
+ business_id = #{attachment.businessId}
+ where id = #{attachment.id}
+ </foreach>
+ </update>
+ <update id="deleteByBusinessId">
+ update attachment
+ set
+ del_flag = 1
+ where business_id = #{businessId}
+ </update>
+</mapper>
diff --git a/ruoyi-file/target/maven-archiver/pom.properties b/ruoyi-file/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..f4711bf
--- /dev/null
+++ b/ruoyi-file/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=ruoyi-file
+groupId=com.ruoyi
+version=3.8.6
diff --git a/ruoyi-file/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/ruoyi-file/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..5ce38de
--- /dev/null
+++ b/ruoyi-file/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,11 @@
+com\ruoyi\file\constants\FileProjectConstants$ReturnType.class
+com\ruoyi\file\constants\FileProjectConstants.class
+com\ruoyi\file\service\AttachmentService.class
+com\ruoyi\file\service\impl\AttachmentInfoServiceImpl.class
+com\ruoyi\file\properties\FilePathProperties.class
+com\ruoyi\file\service\impl\AttachmentServiceImpl.class
+com\ruoyi\file\constants\FileProjectConstants$FileError.class
+com\ruoyi\file\mapper\AttachmentInfoMapper.class
+com\ruoyi\file\controller\AttachmentController.class
+com\ruoyi\file\service\AttachmentInfoService.class
+com\ruoyi\file\entity\AttachmentInfo.class
diff --git a/ruoyi-file/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/ruoyi-file/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..c7116ba
--- /dev/null
+++ b/ruoyi-file/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,9 @@
+F:\kzy\codes\java\swspkmas\ruoyi-file\src\main\java\com\ruoyi\file\controller\AttachmentController.java
+F:\kzy\codes\java\swspkmas\ruoyi-file\src\main\java\com\ruoyi\file\properties\FilePathProperties.java
+F:\kzy\codes\java\swspkmas\ruoyi-file\src\main\java\com\ruoyi\file\service\AttachmentInfoService.java
+F:\kzy\codes\java\swspkmas\ruoyi-file\src\main\java\com\ruoyi\file\service\AttachmentService.java
+F:\kzy\codes\java\swspkmas\ruoyi-file\src\main\java\com\ruoyi\file\constants\FileProjectConstants.java
+F:\kzy\codes\java\swspkmas\ruoyi-file\src\main\java\com\ruoyi\file\mapper\AttachmentInfoMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-file\src\main\java\com\ruoyi\file\entity\AttachmentInfo.java
+F:\kzy\codes\java\swspkmas\ruoyi-file\src\main\java\com\ruoyi\file\service\impl\AttachmentServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-file\src\main\java\com\ruoyi\file\service\impl\AttachmentInfoServiceImpl.java
diff --git a/ruoyi-framework/target/maven-archiver/pom.properties b/ruoyi-framework/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..32649e5
--- /dev/null
+++ b/ruoyi-framework/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=ruoyi-framework
+groupId=com.ruoyi
+version=3.8.6
diff --git a/ruoyi-framework/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/ruoyi-framework/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..9dfef3f
--- /dev/null
+++ b/ruoyi-framework/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,49 @@
+com\ruoyi\framework\config\CaptchaConfig.class
+com\ruoyi\framework\config\ServerConfig.class
+com\ruoyi\framework\web\service\SysLoginService.class
+com\ruoyi\framework\security\handle\AuthenticationEntryPointImpl.class
+com\ruoyi\framework\security\context\AuthenticationContextHolder.class
+com\ruoyi\framework\web\service\PermissionService.class
+com\ruoyi\framework\web\domain\server\Cpu.class
+com\ruoyi\framework\web\domain\server\Mem.class
+com\ruoyi\framework\config\MyBatisConfig.class
+com\ruoyi\framework\config\DruidConfig$1.class
+com\ruoyi\framework\manager\factory\AsyncFactory$1.class
+com\ruoyi\framework\manager\factory\AsyncFactory.class
+com\ruoyi\framework\web\service\SysRegisterService.class
+com\ruoyi\framework\config\FilterConfig.class
+com\ruoyi\framework\manager\ShutdownManager.class
+com\ruoyi\framework\datasource\DynamicDataSource.class
+com\ruoyi\framework\config\properties\PermitAllUrlProperties.class
+com\ruoyi\framework\web\domain\login\LoginVo.class
+com\ruoyi\framework\web\service\SysPermissionService.class
+com\ruoyi\framework\web\exception\GlobalExceptionHandler.class
+com\ruoyi\framework\config\ThreadPoolConfig$1.class
+com\ruoyi\framework\manager\factory\AsyncFactory$2.class
+com\ruoyi\framework\config\SecurityConfig.class
+com\ruoyi\framework\web\service\UserDetailsServiceImpl.class
+com\ruoyi\framework\aspectj\RateLimiterAspect.class
+com\ruoyi\framework\config\KaptchaTextCreator.class
+com\ruoyi\framework\config\ResourcesConfig.class
+com\ruoyi\framework\datasource\DynamicDataSourceContextHolder.class
+com\ruoyi\framework\interceptor\RepeatSubmitInterceptor.class
+com\ruoyi\framework\web\domain\server\Jvm.class
+com\ruoyi\framework\config\properties\DruidProperties.class
+com\ruoyi\framework\aspectj\DataSourceAspect.class
+com\ruoyi\framework\aspectj\LogAspect.class
+com\ruoyi\framework\config\FastJson2JsonRedisSerializer.class
+com\ruoyi\framework\web\domain\server\SysFile.class
+com\ruoyi\framework\manager\AsyncManager.class
+com\ruoyi\framework\web\service\SysPasswordService.class
+com\ruoyi\framework\interceptor\impl\SameUrlDataInterceptor.class
+com\ruoyi\framework\security\context\PermissionContextHolder.class
+com\ruoyi\framework\security\filter\JwtAuthenticationTokenFilter.class
+com\ruoyi\framework\web\service\TokenService.class
+com\ruoyi\framework\config\ThreadPoolConfig.class
+com\ruoyi\framework\config\DruidConfig.class
+com\ruoyi\framework\web\domain\server\Sys.class
+com\ruoyi\framework\config\ApplicationConfig.class
+com\ruoyi\framework\config\RedisConfig.class
+com\ruoyi\framework\web\domain\Server.class
+com\ruoyi\framework\security\handle\LogoutSuccessHandlerImpl.class
+com\ruoyi\framework\aspectj\DataScopeAspect.class
diff --git a/ruoyi-framework/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/ruoyi-framework/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..a852e7c
--- /dev/null
+++ b/ruoyi-framework/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,45 @@
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\ApplicationConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\security\handle\LogoutSuccessHandlerImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\manager\AsyncManager.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\MyBatisConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\ServerConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\properties\PermitAllUrlProperties.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\domain\server\Sys.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\ResourcesConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\domain\login\LoginVo.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\security\context\PermissionContextHolder.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\security\handle\AuthenticationEntryPointImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\domain\server\Cpu.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\service\SysLoginService.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\security\filter\JwtAuthenticationTokenFilter.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\ThreadPoolConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\service\UserDetailsServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\FastJson2JsonRedisSerializer.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\RedisConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\CaptchaConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\manager\factory\AsyncFactory.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\interceptor\impl\SameUrlDataInterceptor.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\security\context\AuthenticationContextHolder.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\aspectj\LogAspect.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\KaptchaTextCreator.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\exception\GlobalExceptionHandler.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\service\SysRegisterService.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\domain\server\Jvm.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\service\SysPermissionService.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\service\PermissionService.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\domain\server\SysFile.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\interceptor\RepeatSubmitInterceptor.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\aspectj\RateLimiterAspect.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\service\TokenService.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\datasource\DynamicDataSourceContextHolder.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\SecurityConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\datasource\DynamicDataSource.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\aspectj\DataSourceAspect.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\domain\server\Mem.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\service\SysPasswordService.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\aspectj\DataScopeAspect.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\web\domain\Server.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\manager\ShutdownManager.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\DruidConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\FilterConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-framework\src\main\java\com\ruoyi\framework\config\properties\DruidProperties.java
diff --git a/ruoyi-generator/target/classes/generator.yml b/ruoyi-generator/target/classes/generator.yml
new file mode 100644
index 0000000..7eae68e
--- /dev/null
+++ b/ruoyi-generator/target/classes/generator.yml
@@ -0,0 +1,10 @@
+# 代码生成
+gen:
+ # 作者
+ author: ruoyi
+ # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
+ packageName: com.ruoyi.system
+ # 自动去除表前缀,默认是false
+ autoRemovePre: false
+ # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
+ tablePrefix: sys_
\ No newline at end of file
diff --git a/ruoyi-generator/target/classes/mapper/generator/GenTableColumnMapper.xml b/ruoyi-generator/target/classes/mapper/generator/GenTableColumnMapper.xml
new file mode 100644
index 0000000..66109de
--- /dev/null
+++ b/ruoyi-generator/target/classes/mapper/generator/GenTableColumnMapper.xml
@@ -0,0 +1,127 @@
+<?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.ruoyi.generator.mapper.GenTableColumnMapper">
+
+ <resultMap type="GenTableColumn" id="GenTableColumnResult">
+ <id property="columnId" column="column_id" />
+ <result property="tableId" column="table_id" />
+ <result property="columnName" column="column_name" />
+ <result property="columnComment" column="column_comment" />
+ <result property="columnType" column="column_type" />
+ <result property="javaType" column="java_type" />
+ <result property="javaField" column="java_field" />
+ <result property="isPk" column="is_pk" />
+ <result property="isIncrement" column="is_increment" />
+ <result property="isRequired" column="is_required" />
+ <result property="isInsert" column="is_insert" />
+ <result property="isEdit" column="is_edit" />
+ <result property="isList" column="is_list" />
+ <result property="isQuery" column="is_query" />
+ <result property="queryType" column="query_type" />
+ <result property="htmlType" column="html_type" />
+ <result property="dictType" column="dict_type" />
+ <result property="sort" column="sort" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectGenTableColumnVo">
+ select column_id, table_id, column_name, column_comment, column_type, java_type, java_field, is_pk, is_increment, is_required, is_insert, is_edit, is_list, is_query, query_type, html_type, dict_type, sort, create_by, create_time, update_by, update_time from gen_table_column
+ </sql>
+
+ <select id="selectGenTableColumnListByTableId" parameterType="Long" resultMap="GenTableColumnResult">
+ <include refid="selectGenTableColumnVo"/>
+ where table_id = #{tableId}
+ order by sort
+ </select>
+
+ <select id="selectDbTableColumnsByName" parameterType="String" resultMap="GenTableColumnResult">
+ select column_name, (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else null end) as is_required, (case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type
+ from information_schema.columns where table_schema = (select database()) and table_name = (#{tableName})
+ order by ordinal_position
+ </select>
+
+ <insert id="insertGenTableColumn" parameterType="GenTableColumn" useGeneratedKeys="true" keyProperty="columnId">
+ insert into gen_table_column (
+ <if test="tableId != null and tableId != ''">table_id,</if>
+ <if test="columnName != null and columnName != ''">column_name,</if>
+ <if test="columnComment != null and columnComment != ''">column_comment,</if>
+ <if test="columnType != null and columnType != ''">column_type,</if>
+ <if test="javaType != null and javaType != ''">java_type,</if>
+ <if test="javaField != null and javaField != ''">java_field,</if>
+ <if test="isPk != null and isPk != ''">is_pk,</if>
+ <if test="isIncrement != null and isIncrement != ''">is_increment,</if>
+ <if test="isRequired != null and isRequired != ''">is_required,</if>
+ <if test="isInsert != null and isInsert != ''">is_insert,</if>
+ <if test="isEdit != null and isEdit != ''">is_edit,</if>
+ <if test="isList != null and isList != ''">is_list,</if>
+ <if test="isQuery != null and isQuery != ''">is_query,</if>
+ <if test="queryType != null and queryType != ''">query_type,</if>
+ <if test="htmlType != null and htmlType != ''">html_type,</if>
+ <if test="dictType != null and dictType != ''">dict_type,</if>
+ <if test="sort != null">sort,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="tableId != null and tableId != ''">#{tableId},</if>
+ <if test="columnName != null and columnName != ''">#{columnName},</if>
+ <if test="columnComment != null and columnComment != ''">#{columnComment},</if>
+ <if test="columnType != null and columnType != ''">#{columnType},</if>
+ <if test="javaType != null and javaType != ''">#{javaType},</if>
+ <if test="javaField != null and javaField != ''">#{javaField},</if>
+ <if test="isPk != null and isPk != ''">#{isPk},</if>
+ <if test="isIncrement != null and isIncrement != ''">#{isIncrement},</if>
+ <if test="isRequired != null and isRequired != ''">#{isRequired},</if>
+ <if test="isInsert != null and isInsert != ''">#{isInsert},</if>
+ <if test="isEdit != null and isEdit != ''">#{isEdit},</if>
+ <if test="isList != null and isList != ''">#{isList},</if>
+ <if test="isQuery != null and isQuery != ''">#{isQuery},</if>
+ <if test="queryType != null and queryType != ''">#{queryType},</if>
+ <if test="htmlType != null and htmlType != ''">#{htmlType},</if>
+ <if test="dictType != null and dictType != ''">#{dictType},</if>
+ <if test="sort != null">#{sort},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="updateGenTableColumn" parameterType="GenTableColumn">
+ update gen_table_column
+ <set>
+ <if test="columnComment != null">column_comment = #{columnComment},</if>
+ <if test="javaType != null">java_type = #{javaType},</if>
+ <if test="javaField != null">java_field = #{javaField},</if>
+ <if test="isInsert != null">is_insert = #{isInsert},</if>
+ <if test="isEdit != null">is_edit = #{isEdit},</if>
+ <if test="isList != null">is_list = #{isList},</if>
+ <if test="isQuery != null">is_query = #{isQuery},</if>
+ <if test="isRequired != null">is_required = #{isRequired},</if>
+ <if test="queryType != null">query_type = #{queryType},</if>
+ <if test="htmlType != null">html_type = #{htmlType},</if>
+ <if test="dictType != null">dict_type = #{dictType},</if>
+ <if test="sort != null">sort = #{sort},</if>
+ <if test="updateBy != null">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where column_id = #{columnId}
+ </update>
+
+ <delete id="deleteGenTableColumnByIds" parameterType="Long">
+ delete from gen_table_column where table_id in
+ <foreach collection="array" item="tableId" open="(" separator="," close=")">
+ #{tableId}
+ </foreach>
+ </delete>
+
+ <delete id="deleteGenTableColumns">
+ delete from gen_table_column where column_id in
+ <foreach collection="list" item="item" open="(" separator="," close=")">
+ #{item.columnId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-generator/target/classes/mapper/generator/GenTableMapper.xml b/ruoyi-generator/target/classes/mapper/generator/GenTableMapper.xml
new file mode 100644
index 0000000..b605e90
--- /dev/null
+++ b/ruoyi-generator/target/classes/mapper/generator/GenTableMapper.xml
@@ -0,0 +1,202 @@
+<?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.ruoyi.generator.mapper.GenTableMapper">
+
+ <resultMap type="GenTable" id="GenTableResult">
+ <id property="tableId" column="table_id" />
+ <result property="tableName" column="table_name" />
+ <result property="tableComment" column="table_comment" />
+ <result property="subTableName" column="sub_table_name" />
+ <result property="subTableFkName" column="sub_table_fk_name" />
+ <result property="className" column="class_name" />
+ <result property="tplCategory" column="tpl_category" />
+ <result property="packageName" column="package_name" />
+ <result property="moduleName" column="module_name" />
+ <result property="businessName" column="business_name" />
+ <result property="functionName" column="function_name" />
+ <result property="functionAuthor" column="function_author" />
+ <result property="genType" column="gen_type" />
+ <result property="genPath" column="gen_path" />
+ <result property="options" column="options" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
+ <collection property="columns" javaType="java.util.List" resultMap="GenTableColumnResult" />
+ </resultMap>
+
+ <resultMap type="GenTableColumn" id="GenTableColumnResult">
+ <id property="columnId" column="column_id" />
+ <result property="tableId" column="table_id" />
+ <result property="columnName" column="column_name" />
+ <result property="columnComment" column="column_comment" />
+ <result property="columnType" column="column_type" />
+ <result property="javaType" column="java_type" />
+ <result property="javaField" column="java_field" />
+ <result property="isPk" column="is_pk" />
+ <result property="isIncrement" column="is_increment" />
+ <result property="isRequired" column="is_required" />
+ <result property="isInsert" column="is_insert" />
+ <result property="isEdit" column="is_edit" />
+ <result property="isList" column="is_list" />
+ <result property="isQuery" column="is_query" />
+ <result property="queryType" column="query_type" />
+ <result property="htmlType" column="html_type" />
+ <result property="dictType" column="dict_type" />
+ <result property="sort" column="sort" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectGenTableVo">
+ select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table
+ </sql>
+
+ <select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult">
+ <include refid="selectGenTableVo"/>
+ <where>
+ <if test="tableName != null and tableName != ''">
+ AND lower(table_name) like lower(concat('%', #{tableName}, '%'))
+ </if>
+ <if test="tableComment != null and tableComment != ''">
+ AND lower(table_comment) like lower(concat('%', #{tableComment}, '%'))
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
+ AND date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
+ AND date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
+ </if>
+ </where>
+ </select>
+
+ <select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult">
+ select table_name, table_comment, create_time, update_time from information_schema.tables
+ where table_schema = (select database())
+ AND table_name NOT LIKE 'qrtz_%' AND table_name NOT LIKE 'gen_%'
+ AND table_name NOT IN (select table_name from gen_table)
+ <if test="tableName != null and tableName != ''">
+ AND lower(table_name) like lower(concat('%', #{tableName}, '%'))
+ </if>
+ <if test="tableComment != null and tableComment != ''">
+ AND lower(table_comment) like lower(concat('%', #{tableComment}, '%'))
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
+ AND date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
+ AND date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
+ </if>
+ order by create_time desc
+ </select>
+
+ <select id="selectDbTableListByNames" resultMap="GenTableResult">
+ select table_name, table_comment, create_time, update_time from information_schema.tables
+ where table_name NOT LIKE 'qrtz_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database())
+ and table_name in
+ <foreach collection="array" item="name" open="(" separator="," close=")">
+ #{name}
+ </foreach>
+ </select>
+
+ <select id="selectTableByName" parameterType="String" resultMap="GenTableResult">
+ select table_name, table_comment, create_time, update_time from information_schema.tables
+ where table_comment <![CDATA[ <> ]]> '' and table_schema = (select database())
+ and table_name = #{tableName}
+ </select>
+
+ <select id="selectGenTableById" parameterType="Long" resultMap="GenTableResult">
+ SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark,
+ c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
+ FROM gen_table t
+ LEFT JOIN gen_table_column c ON t.table_id = c.table_id
+ where t.table_id = #{tableId} order by c.sort
+ </select>
+
+ <select id="selectGenTableByName" parameterType="String" resultMap="GenTableResult">
+ SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark,
+ c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
+ FROM gen_table t
+ LEFT JOIN gen_table_column c ON t.table_id = c.table_id
+ where t.table_name = #{tableName} order by c.sort
+ </select>
+
+ <select id="selectGenTableAll" parameterType="String" resultMap="GenTableResult">
+ SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.options, t.remark,
+ c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
+ FROM gen_table t
+ LEFT JOIN gen_table_column c ON t.table_id = c.table_id
+ order by c.sort
+ </select>
+
+ <insert id="insertGenTable" parameterType="GenTable" useGeneratedKeys="true" keyProperty="tableId">
+ insert into gen_table (
+ <if test="tableName != null">table_name,</if>
+ <if test="tableComment != null and tableComment != ''">table_comment,</if>
+ <if test="className != null and className != ''">class_name,</if>
+ <if test="tplCategory != null and tplCategory != ''">tpl_category,</if>
+ <if test="packageName != null and packageName != ''">package_name,</if>
+ <if test="moduleName != null and moduleName != ''">module_name,</if>
+ <if test="businessName != null and businessName != ''">business_name,</if>
+ <if test="functionName != null and functionName != ''">function_name,</if>
+ <if test="functionAuthor != null and functionAuthor != ''">function_author,</if>
+ <if test="genType != null and genType != ''">gen_type,</if>
+ <if test="genPath != null and genPath != ''">gen_path,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="tableName != null">#{tableName},</if>
+ <if test="tableComment != null and tableComment != ''">#{tableComment},</if>
+ <if test="className != null and className != ''">#{className},</if>
+ <if test="tplCategory != null and tplCategory != ''">#{tplCategory},</if>
+ <if test="packageName != null and packageName != ''">#{packageName},</if>
+ <if test="moduleName != null and moduleName != ''">#{moduleName},</if>
+ <if test="businessName != null and businessName != ''">#{businessName},</if>
+ <if test="functionName != null and functionName != ''">#{functionName},</if>
+ <if test="functionAuthor != null and functionAuthor != ''">#{functionAuthor},</if>
+ <if test="genType != null and genType != ''">#{genType},</if>
+ <if test="genPath != null and genPath != ''">#{genPath},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="updateGenTable" parameterType="GenTable">
+ update gen_table
+ <set>
+ <if test="tableName != null">table_name = #{tableName},</if>
+ <if test="tableComment != null and tableComment != ''">table_comment = #{tableComment},</if>
+ <if test="subTableName != null">sub_table_name = #{subTableName},</if>
+ <if test="subTableFkName != null">sub_table_fk_name = #{subTableFkName},</if>
+ <if test="className != null and className != ''">class_name = #{className},</if>
+ <if test="functionAuthor != null and functionAuthor != ''">function_author = #{functionAuthor},</if>
+ <if test="genType != null and genType != ''">gen_type = #{genType},</if>
+ <if test="genPath != null and genPath != ''">gen_path = #{genPath},</if>
+ <if test="tplCategory != null and tplCategory != ''">tpl_category = #{tplCategory},</if>
+ <if test="packageName != null and packageName != ''">package_name = #{packageName},</if>
+ <if test="moduleName != null and moduleName != ''">module_name = #{moduleName},</if>
+ <if test="businessName != null and businessName != ''">business_name = #{businessName},</if>
+ <if test="functionName != null and functionName != ''">function_name = #{functionName},</if>
+ <if test="options != null and options != ''">options = #{options},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ update_time = sysdate()
+ </set>
+ where table_id = #{tableId}
+ </update>
+
+ <delete id="deleteGenTableByIds" parameterType="Long">
+ delete from gen_table where table_id in
+ <foreach collection="array" item="tableId" open="(" separator="," close=")">
+ #{tableId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-generator/target/classes/vm/java/controller.java.vm b/ruoyi-generator/target/classes/vm/java/controller.java.vm
new file mode 100644
index 0000000..bf88988
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/java/controller.java.vm
@@ -0,0 +1,115 @@
+package ${packageName}.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import ${packageName}.domain.${ClassName};
+import ${packageName}.service.I${ClassName}Service;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+#if($table.crud || $table.sub)
+import com.ruoyi.common.core.page.TableDataInfo;
+#elseif($table.tree)
+#end
+
+/**
+ * ${functionName}Controller
+ *
+ * @author ${author}
+ * @date ${datetime}
+ */
+@RestController
+@RequestMapping("/${moduleName}/${businessName}")
+public class ${ClassName}Controller extends BaseController
+{
+ @Autowired
+ private I${ClassName}Service ${className}Service;
+
+ /**
+ * 查询${functionName}列表
+ */
+ @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
+ @GetMapping("/list")
+#if($table.crud || $table.sub)
+ public TableDataInfo list(${ClassName} ${className})
+ {
+ startPage();
+ List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
+ return getDataTable(list);
+ }
+#elseif($table.tree)
+ public AjaxResult list(${ClassName} ${className})
+ {
+ List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
+ return success(list);
+ }
+#end
+
+ /**
+ * 导出${functionName}列表
+ */
+ @PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')")
+ @Log(title = "${functionName}", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, ${ClassName} ${className})
+ {
+ List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
+ ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class);
+ util.exportExcel(response, list, "${functionName}数据");
+ }
+
+ /**
+ * 获取${functionName}详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')")
+ @GetMapping(value = "/{${pkColumn.javaField}}")
+ public AjaxResult getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField})
+ {
+ return success(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}));
+ }
+
+ /**
+ * 新增${functionName}
+ */
+ @PreAuthorize("@ss.hasPermi('${permissionPrefix}:add')")
+ @Log(title = "${functionName}", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody ${ClassName} ${className})
+ {
+ return toAjax(${className}Service.insert${ClassName}(${className}));
+ }
+
+ /**
+ * 修改${functionName}
+ */
+ @PreAuthorize("@ss.hasPermi('${permissionPrefix}:edit')")
+ @Log(title = "${functionName}", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody ${ClassName} ${className})
+ {
+ return toAjax(${className}Service.update${ClassName}(${className}));
+ }
+
+ /**
+ * 删除${functionName}
+ */
+ @PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')")
+ @Log(title = "${functionName}", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{${pkColumn.javaField}s}")
+ public AjaxResult remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s)
+ {
+ return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s));
+ }
+}
diff --git a/ruoyi-generator/target/classes/vm/java/domain.java.vm b/ruoyi-generator/target/classes/vm/java/domain.java.vm
new file mode 100644
index 0000000..bd51c17
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/java/domain.java.vm
@@ -0,0 +1,105 @@
+package ${packageName}.domain;
+
+#foreach ($import in $importList)
+import ${import};
+#end
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+#if($table.crud || $table.sub)
+import com.ruoyi.common.core.domain.BaseEntity;
+#elseif($table.tree)
+import com.ruoyi.common.core.domain.TreeEntity;
+#end
+
+/**
+ * ${functionName}对象 ${tableName}
+ *
+ * @author ${author}
+ * @date ${datetime}
+ */
+#if($table.crud || $table.sub)
+#set($Entity="BaseEntity")
+#elseif($table.tree)
+#set($Entity="TreeEntity")
+#end
+public class ${ClassName} extends ${Entity}
+{
+ private static final long serialVersionUID = 1L;
+
+#foreach ($column in $columns)
+#if(!$table.isSuperColumn($column.javaField))
+ /** $column.columnComment */
+#if($column.list)
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#if($parentheseIndex != -1)
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+#elseif($column.javaType == 'Date')
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
+#else
+ @Excel(name = "${comment}")
+#end
+#end
+ private $column.javaType $column.javaField;
+
+#end
+#end
+#if($table.sub)
+ /** $table.subTable.functionName信息 */
+ private List<${subClassName}> ${subclassName}List;
+
+#end
+#foreach ($column in $columns)
+#if(!$table.isSuperColumn($column.javaField))
+#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+#set($AttrName=$column.javaField)
+#else
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+#end
+ public void set${AttrName}($column.javaType $column.javaField)
+ {
+ this.$column.javaField = $column.javaField;
+ }
+
+ public $column.javaType get${AttrName}()
+ {
+ return $column.javaField;
+ }
+#end
+#end
+
+#if($table.sub)
+ public List<${subClassName}> get${subClassName}List()
+ {
+ return ${subclassName}List;
+ }
+
+ public void set${subClassName}List(List<${subClassName}> ${subclassName}List)
+ {
+ this.${subclassName}List = ${subclassName}List;
+ }
+
+#end
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+#foreach ($column in $columns)
+#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+#set($AttrName=$column.javaField)
+#else
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+#end
+ .append("${column.javaField}", get${AttrName}())
+#end
+#if($table.sub)
+ .append("${subclassName}List", get${subClassName}List())
+#end
+ .toString();
+ }
+}
diff --git a/ruoyi-generator/target/classes/vm/java/mapper.java.vm b/ruoyi-generator/target/classes/vm/java/mapper.java.vm
new file mode 100644
index 0000000..7e7d7c2
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/java/mapper.java.vm
@@ -0,0 +1,91 @@
+package ${packageName}.mapper;
+
+import java.util.List;
+import ${packageName}.domain.${ClassName};
+#if($table.sub)
+import ${packageName}.domain.${subClassName};
+#end
+
+/**
+ * ${functionName}Mapper接口
+ *
+ * @author ${author}
+ * @date ${datetime}
+ */
+public interface ${ClassName}Mapper
+{
+ /**
+ * 查询${functionName}
+ *
+ * @param ${pkColumn.javaField} ${functionName}主键
+ * @return ${functionName}
+ */
+ public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
+
+ /**
+ * 查询${functionName}列表
+ *
+ * @param ${className} ${functionName}
+ * @return ${functionName}集合
+ */
+ public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
+
+ /**
+ * 新增${functionName}
+ *
+ * @param ${className} ${functionName}
+ * @return 结果
+ */
+ public int insert${ClassName}(${ClassName} ${className});
+
+ /**
+ * 修改${functionName}
+ *
+ * @param ${className} ${functionName}
+ * @return 结果
+ */
+ public int update${ClassName}(${ClassName} ${className});
+
+ /**
+ * 删除${functionName}
+ *
+ * @param ${pkColumn.javaField} ${functionName}主键
+ * @return 结果
+ */
+ public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
+
+ /**
+ * 批量删除${functionName}
+ *
+ * @param ${pkColumn.javaField}s 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
+#if($table.sub)
+
+ /**
+ * 批量删除${subTable.functionName}
+ *
+ * @param ${pkColumn.javaField}s 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
+
+ /**
+ * 批量新增${subTable.functionName}
+ *
+ * @param ${subclassName}List ${subTable.functionName}列表
+ * @return 结果
+ */
+ public int batch${subClassName}(List<${subClassName}> ${subclassName}List);
+
+
+ /**
+ * 通过${functionName}主键删除${subTable.functionName}信息
+ *
+ * @param ${pkColumn.javaField} ${functionName}ID
+ * @return 结果
+ */
+ public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
+#end
+}
diff --git a/ruoyi-generator/target/classes/vm/java/service.java.vm b/ruoyi-generator/target/classes/vm/java/service.java.vm
new file mode 100644
index 0000000..264882b
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/java/service.java.vm
@@ -0,0 +1,61 @@
+package ${packageName}.service;
+
+import java.util.List;
+import ${packageName}.domain.${ClassName};
+
+/**
+ * ${functionName}Service接口
+ *
+ * @author ${author}
+ * @date ${datetime}
+ */
+public interface I${ClassName}Service
+{
+ /**
+ * 查询${functionName}
+ *
+ * @param ${pkColumn.javaField} ${functionName}主键
+ * @return ${functionName}
+ */
+ public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
+
+ /**
+ * 查询${functionName}列表
+ *
+ * @param ${className} ${functionName}
+ * @return ${functionName}集合
+ */
+ public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
+
+ /**
+ * 新增${functionName}
+ *
+ * @param ${className} ${functionName}
+ * @return 结果
+ */
+ public int insert${ClassName}(${ClassName} ${className});
+
+ /**
+ * 修改${functionName}
+ *
+ * @param ${className} ${functionName}
+ * @return 结果
+ */
+ public int update${ClassName}(${ClassName} ${className});
+
+ /**
+ * 批量删除${functionName}
+ *
+ * @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合
+ * @return 结果
+ */
+ public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
+
+ /**
+ * 删除${functionName}信息
+ *
+ * @param ${pkColumn.javaField} ${functionName}主键
+ * @return 结果
+ */
+ public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
+}
diff --git a/ruoyi-generator/target/classes/vm/java/serviceImpl.java.vm b/ruoyi-generator/target/classes/vm/java/serviceImpl.java.vm
new file mode 100644
index 0000000..14746e1
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/java/serviceImpl.java.vm
@@ -0,0 +1,169 @@
+package ${packageName}.service.impl;
+
+import java.util.List;
+#foreach ($column in $columns)
+#if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
+import com.ruoyi.common.utils.DateUtils;
+#break
+#end
+#end
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+#if($table.sub)
+import java.util.ArrayList;
+import com.ruoyi.common.utils.StringUtils;
+import org.springframework.transaction.annotation.Transactional;
+import ${packageName}.domain.${subClassName};
+#end
+import ${packageName}.mapper.${ClassName}Mapper;
+import ${packageName}.domain.${ClassName};
+import ${packageName}.service.I${ClassName}Service;
+
+/**
+ * ${functionName}Service业务层处理
+ *
+ * @author ${author}
+ * @date ${datetime}
+ */
+@Service
+public class ${ClassName}ServiceImpl implements I${ClassName}Service
+{
+ @Autowired
+ private ${ClassName}Mapper ${className}Mapper;
+
+ /**
+ * 查询${functionName}
+ *
+ * @param ${pkColumn.javaField} ${functionName}主键
+ * @return ${functionName}
+ */
+ @Override
+ public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
+ {
+ return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
+ }
+
+ /**
+ * 查询${functionName}列表
+ *
+ * @param ${className} ${functionName}
+ * @return ${functionName}
+ */
+ @Override
+ public List<${ClassName}> select${ClassName}List(${ClassName} ${className})
+ {
+ return ${className}Mapper.select${ClassName}List(${className});
+ }
+
+ /**
+ * 新增${functionName}
+ *
+ * @param ${className} ${functionName}
+ * @return 结果
+ */
+#if($table.sub)
+ @Transactional
+#end
+ @Override
+ public int insert${ClassName}(${ClassName} ${className})
+ {
+#foreach ($column in $columns)
+#if($column.javaField == 'createTime')
+ ${className}.setCreateTime(DateUtils.getNowDate());
+#end
+#end
+#if($table.sub)
+ int rows = ${className}Mapper.insert${ClassName}(${className});
+ insert${subClassName}(${className});
+ return rows;
+#else
+ return ${className}Mapper.insert${ClassName}(${className});
+#end
+ }
+
+ /**
+ * 修改${functionName}
+ *
+ * @param ${className} ${functionName}
+ * @return 结果
+ */
+#if($table.sub)
+ @Transactional
+#end
+ @Override
+ public int update${ClassName}(${ClassName} ${className})
+ {
+#foreach ($column in $columns)
+#if($column.javaField == 'updateTime')
+ ${className}.setUpdateTime(DateUtils.getNowDate());
+#end
+#end
+#if($table.sub)
+ ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
+ insert${subClassName}(${className});
+#end
+ return ${className}Mapper.update${ClassName}(${className});
+ }
+
+ /**
+ * 批量删除${functionName}
+ *
+ * @param ${pkColumn.javaField}s 需要删除的${functionName}主键
+ * @return 结果
+ */
+#if($table.sub)
+ @Transactional
+#end
+ @Override
+ public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s)
+ {
+#if($table.sub)
+ ${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s);
+#end
+ return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s);
+ }
+
+ /**
+ * 删除${functionName}信息
+ *
+ * @param ${pkColumn.javaField} ${functionName}主键
+ * @return 结果
+ */
+#if($table.sub)
+ @Transactional
+#end
+ @Override
+ public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
+ {
+#if($table.sub)
+ ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
+#end
+ return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
+ }
+#if($table.sub)
+
+ /**
+ * 新增${subTable.functionName}信息
+ *
+ * @param ${className} ${functionName}对象
+ */
+ public void insert${subClassName}(${ClassName} ${className})
+ {
+ List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
+ ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
+ if (StringUtils.isNotNull(${subclassName}List))
+ {
+ List<${subClassName}> list = new ArrayList<${subClassName}>();
+ for (${subClassName} ${subclassName} : ${subclassName}List)
+ {
+ ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});
+ list.add(${subclassName});
+ }
+ if (list.size() > 0)
+ {
+ ${className}Mapper.batch${subClassName}(list);
+ }
+ }
+ }
+#end
+}
diff --git a/ruoyi-generator/target/classes/vm/java/sub-domain.java.vm b/ruoyi-generator/target/classes/vm/java/sub-domain.java.vm
new file mode 100644
index 0000000..a3f53eb
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/java/sub-domain.java.vm
@@ -0,0 +1,76 @@
+package ${packageName}.domain;
+
+#foreach ($import in $subImportList)
+import ${import};
+#end
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * ${subTable.functionName}对象 ${subTableName}
+ *
+ * @author ${author}
+ * @date ${datetime}
+ */
+public class ${subClassName} extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+#foreach ($column in $subTable.columns)
+#if(!$table.isSuperColumn($column.javaField))
+ /** $column.columnComment */
+#if($column.list)
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#if($parentheseIndex != -1)
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+#elseif($column.javaType == 'Date')
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
+#else
+ @Excel(name = "${comment}")
+#end
+#end
+ private $column.javaType $column.javaField;
+
+#end
+#end
+#foreach ($column in $subTable.columns)
+#if(!$table.isSuperColumn($column.javaField))
+#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+#set($AttrName=$column.javaField)
+#else
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+#end
+ public void set${AttrName}($column.javaType $column.javaField)
+ {
+ this.$column.javaField = $column.javaField;
+ }
+
+ public $column.javaType get${AttrName}()
+ {
+ return $column.javaField;
+ }
+#end
+#end
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+#foreach ($column in $subTable.columns)
+#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+#set($AttrName=$column.javaField)
+#else
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+#end
+ .append("${column.javaField}", get${AttrName}())
+#end
+ .toString();
+ }
+}
diff --git a/ruoyi-generator/target/classes/vm/js/api.js.vm b/ruoyi-generator/target/classes/vm/js/api.js.vm
new file mode 100644
index 0000000..9295524
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/js/api.js.vm
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询${functionName}列表
+export function list${BusinessName}(query) {
+ return request({
+ url: '/${moduleName}/${businessName}/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 查询${functionName}详细
+export function get${BusinessName}(${pkColumn.javaField}) {
+ return request({
+ url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField},
+ method: 'get'
+ })
+}
+
+// 新增${functionName}
+export function add${BusinessName}(data) {
+ return request({
+ url: '/${moduleName}/${businessName}',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改${functionName}
+export function update${BusinessName}(data) {
+ return request({
+ url: '/${moduleName}/${businessName}',
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除${functionName}
+export function del${BusinessName}(${pkColumn.javaField}) {
+ return request({
+ url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField},
+ method: 'delete'
+ })
+}
diff --git a/ruoyi-generator/target/classes/vm/sql/sql.vm b/ruoyi-generator/target/classes/vm/sql/sql.vm
new file mode 100644
index 0000000..0575583
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/sql/sql.vm
@@ -0,0 +1,22 @@
+-- 菜单 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', sysdate(), '', null, '${functionName}菜单');
+
+-- 按钮父菜单ID
+SELECT @parentId := LAST_INSERT_ID();
+
+-- 按钮 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('${functionName}查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('${functionName}新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('${functionName}修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('${functionName}删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('${functionName}导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', sysdate(), '', null, '');
\ No newline at end of file
diff --git a/ruoyi-generator/target/classes/vm/vue/index-tree.vue.vm b/ruoyi-generator/target/classes/vm/vue/index-tree.vue.vm
new file mode 100644
index 0000000..4819c2a
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/vue/index-tree.vue.vm
@@ -0,0 +1,505 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+#foreach($column in $columns)
+#if($column.query)
+#set($dictType=$column.dictType)
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#if($column.htmlType == "input")
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-input
+ v-model="queryParams.${column.javaField}"
+ placeholder="请输入${comment}"
+ clearable
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType)
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable>
+ <el-option
+ v-for="dict in dict.type.${dictType}"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType)
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable>
+ <el-option label="请选择字典生成" value="" />
+ </el-select>
+ </el-form-item>
+#elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN")
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-date-picker clearable
+ v-model="queryParams.${column.javaField}"
+ type="date"
+ value-format="yyyy-MM-dd"
+ placeholder="选择${comment}">
+ </el-date-picker>
+ </el-form-item>
+#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+ <el-form-item label="${comment}">
+ <el-date-picker
+ v-model="daterange${AttrName}"
+ style="width: 240px"
+ value-format="yyyy-MM-dd"
+ type="daterange"
+ range-separator="-"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ ></el-date-picker>
+ </el-form-item>
+#end
+#end
+#end
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ size="mini"
+ @click="handleAdd"
+ v-hasPermi="['${moduleName}:${businessName}:add']"
+ >新增</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="info"
+ plain
+ icon="el-icon-sort"
+ size="mini"
+ @click="toggleExpandAll"
+ >展开/折叠</el-button>
+ </el-col>
+ <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+ </el-row>
+
+ <el-table
+ v-if="refreshTable"
+ v-loading="loading"
+ :data="${businessName}List"
+ row-key="${treeCode}"
+ :default-expand-all="isExpandAll"
+ :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
+ >
+#foreach($column in $columns)
+#set($javaField=$column.javaField)
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#if($column.pk)
+#elseif($column.list && $column.htmlType == "datetime")
+ <el-table-column label="${comment}" align="center" prop="${javaField}" width="180">
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span>
+ </template>
+ </el-table-column>
+#elseif($column.list && $column.htmlType == "imageUpload")
+ <el-table-column label="${comment}" align="center" prop="${javaField}" width="100">
+ <template slot-scope="scope">
+ <image-preview :src="scope.row.${javaField}" :width="50" :height="50"/>
+ </template>
+ </el-table-column>
+#elseif($column.list && "" != $column.dictType)
+ <el-table-column label="${comment}" align="center" prop="${javaField}">
+ <template slot-scope="scope">
+#if($column.htmlType == "checkbox")
+ <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/>
+#else
+ <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField}"/>
+#end
+ </template>
+ </el-table-column>
+#elseif($column.list && "" != $javaField)
+#if(${foreach.index} == 1)
+ <el-table-column label="${comment}" prop="${javaField}" />
+#else
+ <el-table-column label="${comment}" align="center" prop="${javaField}" />
+#end
+#end
+#end
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-edit"
+ @click="handleUpdate(scope.row)"
+ v-hasPermi="['${moduleName}:${businessName}:edit']"
+ >修改</el-button>
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-plus"
+ @click="handleAdd(scope.row)"
+ v-hasPermi="['${moduleName}:${businessName}:add']"
+ >新增</el-button>
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-delete"
+ @click="handleDelete(scope.row)"
+ v-hasPermi="['${moduleName}:${businessName}:remove']"
+ >删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <!-- 添加或修改${functionName}对话框 -->
+ <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+ <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+#foreach($column in $columns)
+#set($field=$column.javaField)
+#if($column.insert && !$column.pk)
+#if(($column.usableColumn) || (!$column.superColumn))
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#set($dictType=$column.dictType)
+#if("" != $treeParentCode && $column.javaField == $treeParentCode)
+ <el-form-item label="${comment}" prop="${treeParentCode}">
+ <treeselect v-model="form.${treeParentCode}" :options="${businessName}Options" :normalizer="normalizer" placeholder="请选择${comment}" />
+ </el-form-item>
+#elseif($column.htmlType == "input")
+ <el-form-item label="${comment}" prop="${field}">
+ <el-input v-model="form.${field}" placeholder="请输入${comment}" />
+ </el-form-item>
+#elseif($column.htmlType == "imageUpload")
+ <el-form-item label="${comment}" prop="${field}">
+ <image-upload v-model="form.${field}"/>
+ </el-form-item>
+#elseif($column.htmlType == "fileUpload")
+ <el-form-item label="${comment}" prop="${field}">
+ <file-upload v-model="form.${field}"/>
+ </el-form-item>
+#elseif($column.htmlType == "editor")
+ <el-form-item label="${comment}">
+ <editor v-model="form.${field}" :min-height="192"/>
+ </el-form-item>
+#elseif($column.htmlType == "select" && "" != $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-select v-model="form.${field}" placeholder="请选择${comment}">
+ <el-option
+ v-for="dict in dict.type.${dictType}"
+ :key="dict.value"
+ :label="dict.label"
+#if($column.javaType == "Integer" || $column.javaType == "Long")
+ :value="parseInt(dict.value)"
+#else
+ :value="dict.value"
+#end
+ ></el-option>
+ </el-select>
+ </el-form-item>
+#elseif($column.htmlType == "select" && $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-select v-model="form.${field}" placeholder="请选择${comment}">
+ <el-option label="请选择字典生成" value="" />
+ </el-select>
+ </el-form-item>
+#elseif($column.htmlType == "checkbox" && "" != $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-checkbox-group v-model="form.${field}">
+ <el-checkbox
+ v-for="dict in dict.type.${dictType}"
+ :key="dict.value"
+ :label="dict.value">
+ {{dict.label}}
+ </el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+#elseif($column.htmlType == "checkbox" && $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-checkbox-group v-model="form.${field}">
+ <el-checkbox>请选择字典生成</el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+#elseif($column.htmlType == "radio" && "" != $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-radio-group v-model="form.${field}">
+ <el-radio
+ v-for="dict in dict.type.${dictType}"
+ :key="dict.value"
+#if($column.javaType == "Integer" || $column.javaType == "Long")
+ :label="parseInt(dict.value)"
+#else
+ :label="dict.value"
+#end
+ >{{dict.label}}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+#elseif($column.htmlType == "radio" && $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-radio-group v-model="form.${field}">
+ <el-radio label="1">请选择字典生成</el-radio>
+ </el-radio-group>
+ </el-form-item>
+#elseif($column.htmlType == "datetime")
+ <el-form-item label="${comment}" prop="${field}">
+ <el-date-picker clearable
+ v-model="form.${field}"
+ type="date"
+ value-format="yyyy-MM-dd"
+ placeholder="选择${comment}">
+ </el-date-picker>
+ </el-form-item>
+#elseif($column.htmlType == "textarea")
+ <el-form-item label="${comment}" prop="${field}">
+ <el-input v-model="form.${field}" type="textarea" placeholder="请输入内容" />
+ </el-form-item>
+#end
+#end
+#end
+#end
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="submitForm">确 定</el-button>
+ <el-button @click="cancel">取 消</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+ name: "${BusinessName}",
+#if(${dicts} != '')
+ dicts: [${dicts}],
+#end
+ components: {
+ Treeselect
+ },
+ data() {
+ return {
+ // 遮罩层
+ loading: true,
+ // 显示搜索条件
+ showSearch: true,
+ // ${functionName}表格数据
+ ${businessName}List: [],
+ // ${functionName}树选项
+ ${businessName}Options: [],
+ // 弹出层标题
+ title: "",
+ // 是否显示弹出层
+ open: false,
+ // 是否展开,默认全部展开
+ isExpandAll: true,
+ // 重新渲染表格状态
+ refreshTable: true,
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+ // $comment时间范围
+ daterange${AttrName}: [],
+#end
+#end
+ // 查询参数
+ queryParams: {
+#foreach ($column in $columns)
+#if($column.query)
+ $column.javaField: null#if($foreach.count != $columns.size()),#end
+#end
+#end
+ },
+ // 表单参数
+ form: {},
+ // 表单校验
+ rules: {
+#foreach ($column in $columns)
+#if($column.required)
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+ $column.javaField: [
+ { required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select" || $column.htmlType == "radio")"change"#else"blur"#end }
+ ]#if($foreach.count != $columns.size()),#end
+#end
+#end
+ }
+ };
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ /** 查询${functionName}列表 */
+ getList() {
+ this.loading = true;
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+ this.queryParams.params = {};
+#break
+#end
+#end
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+ if (null != this.daterange${AttrName} && '' != this.daterange${AttrName}) {
+ this.queryParams.params["begin${AttrName}"] = this.daterange${AttrName}[0];
+ this.queryParams.params["end${AttrName}"] = this.daterange${AttrName}[1];
+ }
+#end
+#end
+ list${BusinessName}(this.queryParams).then(response => {
+ this.${businessName}List = this.handleTree(response.data, "${treeCode}", "${treeParentCode}");
+ this.loading = false;
+ });
+ },
+ /** 转换${functionName}数据结构 */
+ normalizer(node) {
+ if (node.children && !node.children.length) {
+ delete node.children;
+ }
+ return {
+ id: node.${treeCode},
+ label: node.${treeName},
+ children: node.children
+ };
+ },
+ /** 查询${functionName}下拉树结构 */
+ getTreeselect() {
+ list${BusinessName}().then(response => {
+ this.${businessName}Options = [];
+ const data = { ${treeCode}: 0, ${treeName}: '顶级节点', children: [] };
+ data.children = this.handleTree(response.data, "${treeCode}", "${treeParentCode}");
+ this.${businessName}Options.push(data);
+ });
+ },
+ // 取消按钮
+ cancel() {
+ this.open = false;
+ this.reset();
+ },
+ // 表单重置
+ reset() {
+ this.form = {
+#foreach ($column in $columns)
+#if($column.htmlType == "checkbox")
+ $column.javaField: []#if($foreach.count != $columns.size()),#end
+#else
+ $column.javaField: null#if($foreach.count != $columns.size()),#end
+#end
+#end
+ };
+ this.resetForm("form");
+ },
+ /** 搜索按钮操作 */
+ handleQuery() {
+ this.getList();
+ },
+ /** 重置按钮操作 */
+ resetQuery() {
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+ this.daterange${AttrName} = [];
+#end
+#end
+ this.resetForm("queryForm");
+ this.handleQuery();
+ },
+ /** 新增按钮操作 */
+ handleAdd(row) {
+ this.reset();
+ this.getTreeselect();
+ if (row != null && row.${treeCode}) {
+ this.form.${treeParentCode} = row.${treeCode};
+ } else {
+ this.form.${treeParentCode} = 0;
+ }
+ this.open = true;
+ this.title = "添加${functionName}";
+ },
+ /** 展开/折叠操作 */
+ toggleExpandAll() {
+ this.refreshTable = false;
+ this.isExpandAll = !this.isExpandAll;
+ this.$nextTick(() => {
+ this.refreshTable = true;
+ });
+ },
+ /** 修改按钮操作 */
+ handleUpdate(row) {
+ this.reset();
+ this.getTreeselect();
+ if (row != null) {
+ this.form.${treeParentCode} = row.${treeParentCode};
+ }
+ get${BusinessName}(row.${pkColumn.javaField}).then(response => {
+ this.form = response.data;
+#foreach ($column in $columns)
+#if($column.htmlType == "checkbox")
+ this.form.$column.javaField = this.form.${column.javaField}.split(",");
+#end
+#end
+ this.open = true;
+ this.title = "修改${functionName}";
+ });
+ },
+ /** 提交按钮 */
+ submitForm() {
+ this.#[[$]]#refs["form"].validate(valid => {
+ if (valid) {
+#foreach ($column in $columns)
+#if($column.htmlType == "checkbox")
+ this.form.$column.javaField = this.form.${column.javaField}.join(",");
+#end
+#end
+ if (this.form.${pkColumn.javaField} != null) {
+ update${BusinessName}(this.form).then(response => {
+ this.#[[$modal]]#.msgSuccess("修改成功");
+ this.open = false;
+ this.getList();
+ });
+ } else {
+ add${BusinessName}(this.form).then(response => {
+ this.#[[$modal]]#.msgSuccess("新增成功");
+ this.open = false;
+ this.getList();
+ });
+ }
+ }
+ });
+ },
+ /** 删除按钮操作 */
+ handleDelete(row) {
+ this.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + row.${pkColumn.javaField} + '"的数据项?').then(function() {
+ return del${BusinessName}(row.${pkColumn.javaField});
+ }).then(() => {
+ this.getList();
+ this.#[[$modal]]#.msgSuccess("删除成功");
+ }).catch(() => {});
+ }
+ }
+};
+</script>
diff --git a/ruoyi-generator/target/classes/vm/vue/index.vue.vm b/ruoyi-generator/target/classes/vm/vue/index.vue.vm
new file mode 100644
index 0000000..6296014
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/vue/index.vue.vm
@@ -0,0 +1,602 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+#foreach($column in $columns)
+#if($column.query)
+#set($dictType=$column.dictType)
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#if($column.htmlType == "input")
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-input
+ v-model="queryParams.${column.javaField}"
+ placeholder="请输入${comment}"
+ clearable
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType)
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable>
+ <el-option
+ v-for="dict in dict.type.${dictType}"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType)
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable>
+ <el-option label="请选择字典生成" value="" />
+ </el-select>
+ </el-form-item>
+#elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN")
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-date-picker clearable
+ v-model="queryParams.${column.javaField}"
+ type="date"
+ value-format="yyyy-MM-dd"
+ placeholder="请选择${comment}">
+ </el-date-picker>
+ </el-form-item>
+#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+ <el-form-item label="${comment}">
+ <el-date-picker
+ v-model="daterange${AttrName}"
+ style="width: 240px"
+ value-format="yyyy-MM-dd"
+ type="daterange"
+ range-separator="-"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ ></el-date-picker>
+ </el-form-item>
+#end
+#end
+#end
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ size="mini"
+ @click="handleAdd"
+ v-hasPermi="['${moduleName}:${businessName}:add']"
+ >新增</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="success"
+ plain
+ icon="el-icon-edit"
+ size="mini"
+ :disabled="single"
+ @click="handleUpdate"
+ v-hasPermi="['${moduleName}:${businessName}:edit']"
+ >修改</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-delete"
+ size="mini"
+ :disabled="multiple"
+ @click="handleDelete"
+ v-hasPermi="['${moduleName}:${businessName}:remove']"
+ >删除</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-download"
+ size="mini"
+ @click="handleExport"
+ v-hasPermi="['${moduleName}:${businessName}:export']"
+ >导出</el-button>
+ </el-col>
+ <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+ </el-row>
+
+ <el-table v-loading="loading" :data="${businessName}List" @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55" align="center" />
+#foreach($column in $columns)
+#set($javaField=$column.javaField)
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#if($column.pk)
+ <el-table-column label="${comment}" align="center" prop="${javaField}" />
+#elseif($column.list && $column.htmlType == "datetime")
+ <el-table-column label="${comment}" align="center" prop="${javaField}" width="180">
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span>
+ </template>
+ </el-table-column>
+#elseif($column.list && $column.htmlType == "imageUpload")
+ <el-table-column label="${comment}" align="center" prop="${javaField}" width="100">
+ <template slot-scope="scope">
+ <image-preview :src="scope.row.${javaField}" :width="50" :height="50"/>
+ </template>
+ </el-table-column>
+#elseif($column.list && "" != $column.dictType)
+ <el-table-column label="${comment}" align="center" prop="${javaField}">
+ <template slot-scope="scope">
+#if($column.htmlType == "checkbox")
+ <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/>
+#else
+ <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField}"/>
+#end
+ </template>
+ </el-table-column>
+#elseif($column.list && "" != $javaField)
+ <el-table-column label="${comment}" align="center" prop="${javaField}" />
+#end
+#end
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-edit"
+ @click="handleUpdate(scope.row)"
+ v-hasPermi="['${moduleName}:${businessName}:edit']"
+ >修改</el-button>
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-delete"
+ @click="handleDelete(scope.row)"
+ v-hasPermi="['${moduleName}:${businessName}:remove']"
+ >删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total>0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+
+ <!-- 添加或修改${functionName}对话框 -->
+ <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+ <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+#foreach($column in $columns)
+#set($field=$column.javaField)
+#if($column.insert && !$column.pk)
+#if(($column.usableColumn) || (!$column.superColumn))
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#set($dictType=$column.dictType)
+#if($column.htmlType == "input")
+ <el-form-item label="${comment}" prop="${field}">
+ <el-input v-model="form.${field}" placeholder="请输入${comment}" />
+ </el-form-item>
+#elseif($column.htmlType == "imageUpload")
+ <el-form-item label="${comment}" prop="${field}">
+ <image-upload v-model="form.${field}"/>
+ </el-form-item>
+#elseif($column.htmlType == "fileUpload")
+ <el-form-item label="${comment}" prop="${field}">
+ <file-upload v-model="form.${field}"/>
+ </el-form-item>
+#elseif($column.htmlType == "editor")
+ <el-form-item label="${comment}">
+ <editor v-model="form.${field}" :min-height="192"/>
+ </el-form-item>
+#elseif($column.htmlType == "select" && "" != $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-select v-model="form.${field}" placeholder="请选择${comment}">
+ <el-option
+ v-for="dict in dict.type.${dictType}"
+ :key="dict.value"
+ :label="dict.label"
+#if($column.javaType == "Integer" || $column.javaType == "Long")
+ :value="parseInt(dict.value)"
+#else
+ :value="dict.value"
+#end
+ ></el-option>
+ </el-select>
+ </el-form-item>
+#elseif($column.htmlType == "select" && $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-select v-model="form.${field}" placeholder="请选择${comment}">
+ <el-option label="请选择字典生成" value="" />
+ </el-select>
+ </el-form-item>
+#elseif($column.htmlType == "checkbox" && "" != $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-checkbox-group v-model="form.${field}">
+ <el-checkbox
+ v-for="dict in dict.type.${dictType}"
+ :key="dict.value"
+ :label="dict.value">
+ {{dict.label}}
+ </el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+#elseif($column.htmlType == "checkbox" && $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-checkbox-group v-model="form.${field}">
+ <el-checkbox>请选择字典生成</el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+#elseif($column.htmlType == "radio" && "" != $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-radio-group v-model="form.${field}">
+ <el-radio
+ v-for="dict in dict.type.${dictType}"
+ :key="dict.value"
+#if($column.javaType == "Integer" || $column.javaType == "Long")
+ :label="parseInt(dict.value)"
+#else
+ :label="dict.value"
+#end
+ >{{dict.label}}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+#elseif($column.htmlType == "radio" && $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-radio-group v-model="form.${field}">
+ <el-radio label="1">请选择字典生成</el-radio>
+ </el-radio-group>
+ </el-form-item>
+#elseif($column.htmlType == "datetime")
+ <el-form-item label="${comment}" prop="${field}">
+ <el-date-picker clearable
+ v-model="form.${field}"
+ type="date"
+ value-format="yyyy-MM-dd"
+ placeholder="请选择${comment}">
+ </el-date-picker>
+ </el-form-item>
+#elseif($column.htmlType == "textarea")
+ <el-form-item label="${comment}" prop="${field}">
+ <el-input v-model="form.${field}" type="textarea" placeholder="请输入内容" />
+ </el-form-item>
+#end
+#end
+#end
+#end
+#if($table.sub)
+ <el-divider content-position="center">${subTable.functionName}信息</el-divider>
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd${subClassName}">添加</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDelete${subClassName}">删除</el-button>
+ </el-col>
+ </el-row>
+ <el-table :data="${subclassName}List" :row-class-name="row${subClassName}Index" @selection-change="handle${subClassName}SelectionChange" ref="${subclassName}">
+ <el-table-column type="selection" width="50" align="center" />
+ <el-table-column label="序号" align="center" prop="index" width="50"/>
+#foreach($column in $subTable.columns)
+#set($javaField=$column.javaField)
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#if($column.pk || $javaField == ${subTableFkclassName})
+#elseif($column.list && $column.htmlType == "input")
+ <el-table-column label="$comment" prop="${javaField}" width="150">
+ <template slot-scope="scope">
+ <el-input v-model="scope.row.$javaField" placeholder="请输入$comment" />
+ </template>
+ </el-table-column>
+#elseif($column.list && $column.htmlType == "datetime")
+ <el-table-column label="$comment" prop="${javaField}" width="240">
+ <template slot-scope="scope">
+ <el-date-picker clearable v-model="scope.row.$javaField" type="date" value-format="yyyy-MM-dd" placeholder="请选择$comment" />
+ </template>
+ </el-table-column>
+#elseif($column.list && ($column.htmlType == "select" || $column.htmlType == "radio") && "" != $column.dictType)
+ <el-table-column label="$comment" prop="${javaField}" width="150">
+ <template slot-scope="scope">
+ <el-select v-model="scope.row.$javaField" placeholder="请选择$comment">
+ <el-option
+ v-for="dict in dict.type.$column.dictType"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </template>
+ </el-table-column>
+#elseif($column.list && ($column.htmlType == "select" || $column.htmlType == "radio") && "" == $column.dictType)
+ <el-table-column label="$comment" prop="${javaField}" width="150">
+ <template slot-scope="scope">
+ <el-select v-model="scope.row.$javaField" placeholder="请选择$comment">
+ <el-option label="请选择字典生成" value="" />
+ </el-select>
+ </template>
+ </el-table-column>
+#end
+#end
+ </el-table>
+#end
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="submitForm">确 定</el-button>
+ <el-button @click="cancel">取 消</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}";
+
+export default {
+ name: "${BusinessName}",
+#if(${dicts} != '')
+ dicts: [${dicts}],
+#end
+ data() {
+ return {
+ // 遮罩层
+ loading: true,
+ // 选中数组
+ ids: [],
+#if($table.sub)
+ // 子表选中数据
+ checked${subClassName}: [],
+#end
+ // 非单个禁用
+ single: true,
+ // 非多个禁用
+ multiple: true,
+ // 显示搜索条件
+ showSearch: true,
+ // 总条数
+ total: 0,
+ // ${functionName}表格数据
+ ${businessName}List: [],
+#if($table.sub)
+ // ${subTable.functionName}表格数据
+ ${subclassName}List: [],
+#end
+ // 弹出层标题
+ title: "",
+ // 是否显示弹出层
+ open: false,
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+ // $comment时间范围
+ daterange${AttrName}: [],
+#end
+#end
+ // 查询参数
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+#foreach ($column in $columns)
+#if($column.query)
+ $column.javaField: null#if($foreach.count != $columns.size()),#end
+#end
+#end
+ },
+ // 表单参数
+ form: {},
+ // 表单校验
+ rules: {
+#foreach ($column in $columns)
+#if($column.required)
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+ $column.javaField: [
+ { required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select" || $column.htmlType == "radio")"change"#else"blur"#end }
+ ]#if($foreach.count != $columns.size()),#end
+#end
+#end
+ }
+ };
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ /** 查询${functionName}列表 */
+ getList() {
+ this.loading = true;
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+ this.queryParams.params = {};
+#break
+#end
+#end
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+ if (null != this.daterange${AttrName} && '' != this.daterange${AttrName}) {
+ this.queryParams.params["begin${AttrName}"] = this.daterange${AttrName}[0];
+ this.queryParams.params["end${AttrName}"] = this.daterange${AttrName}[1];
+ }
+#end
+#end
+ list${BusinessName}(this.queryParams).then(response => {
+ this.${businessName}List = response.rows;
+ this.total = response.total;
+ this.loading = false;
+ });
+ },
+ // 取消按钮
+ cancel() {
+ this.open = false;
+ this.reset();
+ },
+ // 表单重置
+ reset() {
+ this.form = {
+#foreach ($column in $columns)
+#if($column.htmlType == "checkbox")
+ $column.javaField: []#if($foreach.count != $columns.size()),#end
+#else
+ $column.javaField: null#if($foreach.count != $columns.size()),#end
+#end
+#end
+ };
+#if($table.sub)
+ this.${subclassName}List = [];
+#end
+ this.resetForm("form");
+ },
+ /** 搜索按钮操作 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.getList();
+ },
+ /** 重置按钮操作 */
+ resetQuery() {
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+ this.daterange${AttrName} = [];
+#end
+#end
+ this.resetForm("queryForm");
+ this.handleQuery();
+ },
+ // 多选框选中数据
+ handleSelectionChange(selection) {
+ this.ids = selection.map(item => item.${pkColumn.javaField})
+ this.single = selection.length!==1
+ this.multiple = !selection.length
+ },
+ /** 新增按钮操作 */
+ handleAdd() {
+ this.reset();
+ this.open = true;
+ this.title = "添加${functionName}";
+ },
+ /** 修改按钮操作 */
+ handleUpdate(row) {
+ this.reset();
+ const ${pkColumn.javaField} = row.${pkColumn.javaField} || this.ids
+ get${BusinessName}(${pkColumn.javaField}).then(response => {
+ this.form = response.data;
+#foreach ($column in $columns)
+#if($column.htmlType == "checkbox")
+ this.form.$column.javaField = this.form.${column.javaField}.split(",");
+#end
+#end
+#if($table.sub)
+ this.${subclassName}List = response.data.${subclassName}List;
+#end
+ this.open = true;
+ this.title = "修改${functionName}";
+ });
+ },
+ /** 提交按钮 */
+ submitForm() {
+ this.#[[$]]#refs["form"].validate(valid => {
+ if (valid) {
+#foreach ($column in $columns)
+#if($column.htmlType == "checkbox")
+ this.form.$column.javaField = this.form.${column.javaField}.join(",");
+#end
+#end
+#if($table.sub)
+ this.form.${subclassName}List = this.${subclassName}List;
+#end
+ if (this.form.${pkColumn.javaField} != null) {
+ update${BusinessName}(this.form).then(response => {
+ this.#[[$modal]]#.msgSuccess("修改成功");
+ this.open = false;
+ this.getList();
+ });
+ } else {
+ add${BusinessName}(this.form).then(response => {
+ this.#[[$modal]]#.msgSuccess("新增成功");
+ this.open = false;
+ this.getList();
+ });
+ }
+ }
+ });
+ },
+ /** 删除按钮操作 */
+ handleDelete(row) {
+ const ${pkColumn.javaField}s = row.${pkColumn.javaField} || this.ids;
+ this.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + ${pkColumn.javaField}s + '"的数据项?').then(function() {
+ return del${BusinessName}(${pkColumn.javaField}s);
+ }).then(() => {
+ this.getList();
+ this.#[[$modal]]#.msgSuccess("删除成功");
+ }).catch(() => {});
+ },
+#if($table.sub)
+ /** ${subTable.functionName}序号 */
+ row${subClassName}Index({ row, rowIndex }) {
+ row.index = rowIndex + 1;
+ },
+ /** ${subTable.functionName}添加按钮操作 */
+ handleAdd${subClassName}() {
+ let obj = {};
+#foreach($column in $subTable.columns)
+#if($column.pk || $column.javaField == ${subTableFkclassName})
+#elseif($column.list && "" != $javaField)
+ obj.$column.javaField = "";
+#end
+#end
+ this.${subclassName}List.push(obj);
+ },
+ /** ${subTable.functionName}删除按钮操作 */
+ handleDelete${subClassName}() {
+ if (this.checked${subClassName}.length == 0) {
+ this.#[[$modal]]#.msgError("请先选择要删除的${subTable.functionName}数据");
+ } else {
+ const ${subclassName}List = this.${subclassName}List;
+ const checked${subClassName} = this.checked${subClassName};
+ this.${subclassName}List = ${subclassName}List.filter(function(item) {
+ return checked${subClassName}.indexOf(item.index) == -1
+ });
+ }
+ },
+ /** 复选框选中数据 */
+ handle${subClassName}SelectionChange(selection) {
+ this.checked${subClassName} = selection.map(item => item.index)
+ },
+#end
+ /** 导出按钮操作 */
+ handleExport() {
+ this.download('${moduleName}/${businessName}/export', {
+ ...this.queryParams
+ }, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`)
+ }
+ }
+};
+</script>
diff --git a/ruoyi-generator/target/classes/vm/vue/v3/index-tree.vue.vm b/ruoyi-generator/target/classes/vm/vue/v3/index-tree.vue.vm
new file mode 100644
index 0000000..c54d62b
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/vue/v3/index-tree.vue.vm
@@ -0,0 +1,474 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+#foreach($column in $columns)
+#if($column.query)
+#set($dictType=$column.dictType)
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#if($column.htmlType == "input")
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-input
+ v-model="queryParams.${column.javaField}"
+ placeholder="请输入${comment}"
+ clearable
+ @keyup.enter="handleQuery"
+ />
+ </el-form-item>
+#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType)
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable>
+ <el-option
+ v-for="dict in ${dictType}"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType)
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable>
+ <el-option label="请选择字典生成" value="" />
+ </el-select>
+ </el-form-item>
+#elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN")
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-date-picker clearable
+ v-model="queryParams.${column.javaField}"
+ type="date"
+ value-format="YYYY-MM-DD"
+ placeholder="选择${comment}">
+ </el-date-picker>
+ </el-form-item>
+#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+ <el-form-item label="${comment}" style="width: 308px">
+ <el-date-picker
+ v-model="daterange${AttrName}"
+ value-format="YYYY-MM-DD"
+ type="daterange"
+ range-separator="-"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ ></el-date-picker>
+ </el-form-item>
+#end
+#end
+#end
+ <el-form-item>
+ <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+ <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="Plus"
+ @click="handleAdd"
+ v-hasPermi="['${moduleName}:${businessName}:add']"
+ >新增</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="info"
+ plain
+ icon="Sort"
+ @click="toggleExpandAll"
+ >展开/折叠</el-button>
+ </el-col>
+ <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+ </el-row>
+
+ <el-table
+ v-if="refreshTable"
+ v-loading="loading"
+ :data="${businessName}List"
+ row-key="${treeCode}"
+ :default-expand-all="isExpandAll"
+ :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
+ >
+#foreach($column in $columns)
+#set($javaField=$column.javaField)
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#if($column.pk)
+#elseif($column.list && $column.htmlType == "datetime")
+ <el-table-column label="${comment}" align="center" prop="${javaField}" width="180">
+ <template #default="scope">
+ <span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span>
+ </template>
+ </el-table-column>
+#elseif($column.list && $column.htmlType == "imageUpload")
+ <el-table-column label="${comment}" align="center" prop="${javaField}" width="100">
+ <template #default="scope">
+ <image-preview :src="scope.row.${javaField}" :width="50" :height="50"/>
+ </template>
+ </el-table-column>
+#elseif($column.list && "" != $column.dictType)
+ <el-table-column label="${comment}" align="center" prop="${javaField}">
+ <template #default="scope">
+#if($column.htmlType == "checkbox")
+ <dict-tag :options="${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/>
+#else
+ <dict-tag :options="${column.dictType}" :value="scope.row.${javaField}"/>
+#end
+ </template>
+ </el-table-column>
+#elseif($column.list && "" != $javaField)
+#if(${foreach.index} == 1)
+ <el-table-column label="${comment}" prop="${javaField}" />
+#else
+ <el-table-column label="${comment}" align="center" prop="${javaField}" />
+#end
+#end
+#end
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+ <template #default="scope">
+ <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['${moduleName}:${businessName}:edit']">修改</el-button>
+ <el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['${moduleName}:${businessName}:add']">新增</el-button>
+ <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['${moduleName}:${businessName}:remove']">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <!-- 添加或修改${functionName}对话框 -->
+ <el-dialog :title="title" v-model="open" width="500px" append-to-body>
+ <el-form ref="${businessName}Ref" :model="form" :rules="rules" label-width="80px">
+#foreach($column in $columns)
+#set($field=$column.javaField)
+#if($column.insert && !$column.pk)
+#if(($column.usableColumn) || (!$column.superColumn))
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#set($dictType=$column.dictType)
+#if("" != $treeParentCode && $column.javaField == $treeParentCode)
+ <el-form-item label="${comment}" prop="${treeParentCode}">
+ <el-tree-select
+ v-model="form.${treeParentCode}"
+ :data="${businessName}Options"
+ :props="{ value: '${treeCode}', label: '${treeName}', children: 'children' }"
+ value-key="${treeCode}"
+ placeholder="请选择${comment}"
+ check-strictly
+ />
+ </el-form-item>
+#elseif($column.htmlType == "input")
+ <el-form-item label="${comment}" prop="${field}">
+ <el-input v-model="form.${field}" placeholder="请输入${comment}" />
+ </el-form-item>
+#elseif($column.htmlType == "imageUpload")
+ <el-form-item label="${comment}" prop="${field}">
+ <image-upload v-model="form.${field}"/>
+ </el-form-item>
+#elseif($column.htmlType == "fileUpload")
+ <el-form-item label="${comment}" prop="${field}">
+ <file-upload v-model="form.${field}"/>
+ </el-form-item>
+#elseif($column.htmlType == "editor")
+ <el-form-item label="${comment}">
+ <editor v-model="form.${field}" :min-height="192"/>
+ </el-form-item>
+#elseif($column.htmlType == "select" && "" != $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-select v-model="form.${field}" placeholder="请选择${comment}">
+ <el-option
+ v-for="dict in ${dictType}"
+ :key="dict.value"
+ :label="dict.label"
+#if($column.javaType == "Integer" || $column.javaType == "Long")
+ :value="parseInt(dict.value)"
+#else
+ :value="dict.value"
+#end
+ ></el-option>
+ </el-select>
+ </el-form-item>
+#elseif($column.htmlType == "select" && $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-select v-model="form.${field}" placeholder="请选择${comment}">
+ <el-option label="请选择字典生成" value="" />
+ </el-select>
+ </el-form-item>
+#elseif($column.htmlType == "checkbox" && "" != $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-checkbox-group v-model="form.${field}">
+ <el-checkbox
+ v-for="dict in ${dictType}"
+ :key="dict.value"
+ :label="dict.value">
+ {{dict.label}}
+ </el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+#elseif($column.htmlType == "checkbox" && $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-checkbox-group v-model="form.${field}">
+ <el-checkbox>请选择字典生成</el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+#elseif($column.htmlType == "radio" && "" != $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-radio-group v-model="form.${field}">
+ <el-radio
+ v-for="dict in ${dictType}"
+ :key="dict.value"
+#if($column.javaType == "Integer" || $column.javaType == "Long")
+ :label="parseInt(dict.value)"
+#else
+ :label="dict.value"
+#end
+ >{{dict.label}}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+#elseif($column.htmlType == "radio" && $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-radio-group v-model="form.${field}">
+ <el-radio label="1">请选择字典生成</el-radio>
+ </el-radio-group>
+ </el-form-item>
+#elseif($column.htmlType == "datetime")
+ <el-form-item label="${comment}" prop="${field}">
+ <el-date-picker clearable
+ v-model="form.${field}"
+ type="date"
+ value-format="YYYY-MM-DD"
+ placeholder="选择${comment}">
+ </el-date-picker>
+ </el-form-item>
+#elseif($column.htmlType == "textarea")
+ <el-form-item label="${comment}" prop="${field}">
+ <el-input v-model="form.${field}" type="textarea" placeholder="请输入内容" />
+ </el-form-item>
+#end
+#end
+#end
+#end
+ </el-form>
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button type="primary" @click="submitForm">确 定</el-button>
+ <el-button @click="cancel">取 消</el-button>
+ </div>
+ </template>
+ </el-dialog>
+ </div>
+</template>
+
+<script setup name="${BusinessName}">
+import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}";
+
+const { proxy } = getCurrentInstance();
+#if(${dicts} != '')
+#set($dictsNoSymbol=$dicts.replace("'", ""))
+const { ${dictsNoSymbol} } = proxy.useDict(${dicts});
+#end
+
+const ${businessName}List = ref([]);
+const ${businessName}Options = ref([]);
+const open = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const title = ref("");
+const isExpandAll = ref(true);
+const refreshTable = ref(true);
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+const daterange${AttrName} = ref([]);
+#end
+#end
+
+const data = reactive({
+ form: {},
+ queryParams: {
+ #foreach ($column in $columns)
+#if($column.query)
+ $column.javaField: null#if($foreach.count != $columns.size()),#end
+#end
+#end
+ },
+ rules: {
+ #foreach ($column in $columns)
+#if($column.required)
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+ $column.javaField: [
+ { required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select" || $column.htmlType == "radio")"change"#else"blur"#end }
+ ]#if($foreach.count != $columns.size()),#end
+#end
+#end
+ }
+});
+
+const { queryParams, form, rules } = toRefs(data);
+
+/** 查询${functionName}列表 */
+function getList() {
+ loading.value = true;
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+ queryParams.value.params = {};
+#break
+#end
+#end
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+ if (null != daterange${AttrName} && '' != daterange${AttrName}) {
+ queryParams.value.params["begin${AttrName}"] = daterange${AttrName}.value[0];
+ queryParams.value.params["end${AttrName}"] = daterange${AttrName}.value[1];
+ }
+#end
+#end
+ list${BusinessName}(queryParams.value).then(response => {
+ ${businessName}List.value = proxy.handleTree(response.data, "${treeCode}", "${treeParentCode}");
+ loading.value = false;
+ });
+}
+
+/** 查询${functionName}下拉树结构 */
+function getTreeselect() {
+ list${BusinessName}().then(response => {
+ ${businessName}Options.value = [];
+ const data = { ${treeCode}: 0, ${treeName}: '顶级节点', children: [] };
+ data.children = proxy.handleTree(response.data, "${treeCode}", "${treeParentCode}");
+ ${businessName}Options.value.push(data);
+ });
+}
+
+// 取消按钮
+function cancel() {
+ open.value = false;
+ reset();
+}
+
+// 表单重置
+function reset() {
+ form.value = {
+#foreach ($column in $columns)
+#if($column.htmlType == "checkbox")
+ $column.javaField: []#if($foreach.count != $columns.size()),#end
+#else
+ $column.javaField: null#if($foreach.count != $columns.size()),#end
+#end
+#end
+ };
+ proxy.resetForm("${businessName}Ref");
+}
+
+/** 搜索按钮操作 */
+function handleQuery() {
+ getList();
+}
+
+/** 重置按钮操作 */
+function resetQuery() {
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+ daterange${AttrName}.value = [];
+#end
+#end
+ proxy.resetForm("queryRef");
+ handleQuery();
+}
+
+/** 新增按钮操作 */
+function handleAdd(row) {
+ reset();
+ getTreeselect();
+ if (row != null && row.${treeCode}) {
+ form.value.${treeParentCode} = row.${treeCode};
+ } else {
+ form.value.${treeParentCode} = 0;
+ }
+ open.value = true;
+ title.value = "添加${functionName}";
+}
+
+/** 展开/折叠操作 */
+function toggleExpandAll() {
+ refreshTable.value = false;
+ isExpandAll.value = !isExpandAll.value;
+ nextTick(() => {
+ refreshTable.value = true;
+ });
+}
+
+/** 修改按钮操作 */
+async function handleUpdate(row) {
+ reset();
+ await getTreeselect();
+ if (row != null) {
+ form.value.${treeParentCode} = row.${treeParentCode};
+ }
+ get${BusinessName}(row.${pkColumn.javaField}).then(response => {
+ form.value = response.data;
+#foreach ($column in $columns)
+#if($column.htmlType == "checkbox")
+ form.value.$column.javaField = form.value.${column.javaField}.split(",");
+#end
+#end
+ open.value = true;
+ title.value = "修改${functionName}";
+ });
+}
+
+/** 提交按钮 */
+function submitForm() {
+ proxy.#[[$]]#refs["${businessName}Ref"].validate(valid => {
+ if (valid) {
+#foreach ($column in $columns)
+#if($column.htmlType == "checkbox")
+ form.value.$column.javaField = form.value.${column.javaField}.join(",");
+#end
+#end
+ if (form.value.${pkColumn.javaField} != null) {
+ update${BusinessName}(form.value).then(response => {
+ proxy.#[[$modal]]#.msgSuccess("修改成功");
+ open.value = false;
+ getList();
+ });
+ } else {
+ add${BusinessName}(form.value).then(response => {
+ proxy.#[[$modal]]#.msgSuccess("新增成功");
+ open.value = false;
+ getList();
+ });
+ }
+ }
+ });
+}
+
+/** 删除按钮操作 */
+function handleDelete(row) {
+ proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + row.${pkColumn.javaField} + '"的数据项?').then(function() {
+ return del${BusinessName}(row.${pkColumn.javaField});
+ }).then(() => {
+ getList();
+ proxy.#[[$modal]]#.msgSuccess("删除成功");
+ }).catch(() => {});
+}
+
+getList();
+</script>
diff --git a/ruoyi-generator/target/classes/vm/vue/v3/index.vue.vm b/ruoyi-generator/target/classes/vm/vue/v3/index.vue.vm
new file mode 100644
index 0000000..8b25665
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/vue/v3/index.vue.vm
@@ -0,0 +1,590 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+#foreach($column in $columns)
+#if($column.query)
+#set($dictType=$column.dictType)
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#if($column.htmlType == "input")
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-input
+ v-model="queryParams.${column.javaField}"
+ placeholder="请输入${comment}"
+ clearable
+ @keyup.enter="handleQuery"
+ />
+ </el-form-item>
+#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType)
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable>
+ <el-option
+ v-for="dict in ${dictType}"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType)
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable>
+ <el-option label="请选择字典生成" value="" />
+ </el-select>
+ </el-form-item>
+#elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN")
+ <el-form-item label="${comment}" prop="${column.javaField}">
+ <el-date-picker clearable
+ v-model="queryParams.${column.javaField}"
+ type="date"
+ value-format="YYYY-MM-DD"
+ placeholder="请选择${comment}">
+ </el-date-picker>
+ </el-form-item>
+#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+ <el-form-item label="${comment}" style="width: 308px">
+ <el-date-picker
+ v-model="daterange${AttrName}"
+ value-format="YYYY-MM-DD"
+ type="daterange"
+ range-separator="-"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ ></el-date-picker>
+ </el-form-item>
+#end
+#end
+#end
+ <el-form-item>
+ <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+ <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="Plus"
+ @click="handleAdd"
+ v-hasPermi="['${moduleName}:${businessName}:add']"
+ >新增</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="success"
+ plain
+ icon="Edit"
+ :disabled="single"
+ @click="handleUpdate"
+ v-hasPermi="['${moduleName}:${businessName}:edit']"
+ >修改</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="danger"
+ plain
+ icon="Delete"
+ :disabled="multiple"
+ @click="handleDelete"
+ v-hasPermi="['${moduleName}:${businessName}:remove']"
+ >删除</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="warning"
+ plain
+ icon="Download"
+ @click="handleExport"
+ v-hasPermi="['${moduleName}:${businessName}:export']"
+ >导出</el-button>
+ </el-col>
+ <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+ </el-row>
+
+ <el-table v-loading="loading" :data="${businessName}List" @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55" align="center" />
+#foreach($column in $columns)
+#set($javaField=$column.javaField)
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#if($column.pk)
+ <el-table-column label="${comment}" align="center" prop="${javaField}" />
+#elseif($column.list && $column.htmlType == "datetime")
+ <el-table-column label="${comment}" align="center" prop="${javaField}" width="180">
+ <template #default="scope">
+ <span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span>
+ </template>
+ </el-table-column>
+#elseif($column.list && $column.htmlType == "imageUpload")
+ <el-table-column label="${comment}" align="center" prop="${javaField}" width="100">
+ <template #default="scope">
+ <image-preview :src="scope.row.${javaField}" :width="50" :height="50"/>
+ </template>
+ </el-table-column>
+#elseif($column.list && "" != $column.dictType)
+ <el-table-column label="${comment}" align="center" prop="${javaField}">
+ <template #default="scope">
+#if($column.htmlType == "checkbox")
+ <dict-tag :options="${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/>
+#else
+ <dict-tag :options="${column.dictType}" :value="scope.row.${javaField}"/>
+#end
+ </template>
+ </el-table-column>
+#elseif($column.list && "" != $javaField)
+ <el-table-column label="${comment}" align="center" prop="${javaField}" />
+#end
+#end
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+ <template #default="scope">
+ <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['${moduleName}:${businessName}:edit']">修改</el-button>
+ <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['${moduleName}:${businessName}:remove']">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total>0"
+ :total="total"
+ v-model:page="queryParams.pageNum"
+ v-model:limit="queryParams.pageSize"
+ @pagination="getList"
+ />
+
+ <!-- 添加或修改${functionName}对话框 -->
+ <el-dialog :title="title" v-model="open" width="500px" append-to-body>
+ <el-form ref="${businessName}Ref" :model="form" :rules="rules" label-width="80px">
+#foreach($column in $columns)
+#set($field=$column.javaField)
+#if($column.insert && !$column.pk)
+#if(($column.usableColumn) || (!$column.superColumn))
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#set($dictType=$column.dictType)
+#if($column.htmlType == "input")
+ <el-form-item label="${comment}" prop="${field}">
+ <el-input v-model="form.${field}" placeholder="请输入${comment}" />
+ </el-form-item>
+#elseif($column.htmlType == "imageUpload")
+ <el-form-item label="${comment}" prop="${field}">
+ <image-upload v-model="form.${field}"/>
+ </el-form-item>
+#elseif($column.htmlType == "fileUpload")
+ <el-form-item label="${comment}" prop="${field}">
+ <file-upload v-model="form.${field}"/>
+ </el-form-item>
+#elseif($column.htmlType == "editor")
+ <el-form-item label="${comment}">
+ <editor v-model="form.${field}" :min-height="192"/>
+ </el-form-item>
+#elseif($column.htmlType == "select" && "" != $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-select v-model="form.${field}" placeholder="请选择${comment}">
+ <el-option
+ v-for="dict in ${dictType}"
+ :key="dict.value"
+ :label="dict.label"
+#if($column.javaType == "Integer" || $column.javaType == "Long")
+ :value="parseInt(dict.value)"
+#else
+ :value="dict.value"
+#end
+ ></el-option>
+ </el-select>
+ </el-form-item>
+#elseif($column.htmlType == "select" && $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-select v-model="form.${field}" placeholder="请选择${comment}">
+ <el-option label="请选择字典生成" value="" />
+ </el-select>
+ </el-form-item>
+#elseif($column.htmlType == "checkbox" && "" != $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-checkbox-group v-model="form.${field}">
+ <el-checkbox
+ v-for="dict in ${dictType}"
+ :key="dict.value"
+ :label="dict.value">
+ {{dict.label}}
+ </el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+#elseif($column.htmlType == "checkbox" && $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-checkbox-group v-model="form.${field}">
+ <el-checkbox>请选择字典生成</el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+#elseif($column.htmlType == "radio" && "" != $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-radio-group v-model="form.${field}">
+ <el-radio
+ v-for="dict in ${dictType}"
+ :key="dict.value"
+#if($column.javaType == "Integer" || $column.javaType == "Long")
+ :label="parseInt(dict.value)"
+#else
+ :label="dict.value"
+#end
+ >{{dict.label}}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+#elseif($column.htmlType == "radio" && $dictType)
+ <el-form-item label="${comment}" prop="${field}">
+ <el-radio-group v-model="form.${field}">
+ <el-radio label="1">请选择字典生成</el-radio>
+ </el-radio-group>
+ </el-form-item>
+#elseif($column.htmlType == "datetime")
+ <el-form-item label="${comment}" prop="${field}">
+ <el-date-picker clearable
+ v-model="form.${field}"
+ type="date"
+ value-format="YYYY-MM-DD"
+ placeholder="请选择${comment}">
+ </el-date-picker>
+ </el-form-item>
+#elseif($column.htmlType == "textarea")
+ <el-form-item label="${comment}" prop="${field}">
+ <el-input v-model="form.${field}" type="textarea" placeholder="请输入内容" />
+ </el-form-item>
+#end
+#end
+#end
+#end
+#if($table.sub)
+ <el-divider content-position="center">${subTable.functionName}信息</el-divider>
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button type="primary" icon="Plus" @click="handleAdd${subClassName}">添加</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button type="danger" icon="Delete" @click="handleDelete${subClassName}">删除</el-button>
+ </el-col>
+ </el-row>
+ <el-table :data="${subclassName}List" :row-class-name="row${subClassName}Index" @selection-change="handle${subClassName}SelectionChange" ref="${subclassName}">
+ <el-table-column type="selection" width="50" align="center" />
+ <el-table-column label="序号" align="center" prop="index" width="50"/>
+#foreach($column in $subTable.columns)
+#set($javaField=$column.javaField)
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#if($column.pk || $javaField == ${subTableFkclassName})
+#elseif($column.list && $column.htmlType == "input")
+ <el-table-column label="$comment" prop="${javaField}" width="150">
+ <template #default="scope">
+ <el-input v-model="scope.row.$javaField" placeholder="请输入$comment" />
+ </template>
+ </el-table-column>
+#elseif($column.list && $column.htmlType == "datetime")
+ <el-table-column label="$comment" prop="${javaField}" width="240">
+ <template #default="scope">
+ <el-date-picker clearable
+ v-model="scope.row.$javaField"
+ type="date"
+ value-format="YYYY-MM-DD"
+ placeholder="请选择$comment">
+ </el-date-picker>
+ </template>
+ </el-table-column>
+#elseif($column.list && ($column.htmlType == "select" || $column.htmlType == "radio") && "" != $column.dictType)
+ <el-table-column label="$comment" prop="${javaField}" width="150">
+ <template #default="scope">
+ <el-select v-model="scope.row.$javaField" placeholder="请选择$comment">
+ <el-option
+ v-for="dict in $column.dictType"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </template>
+ </el-table-column>
+#elseif($column.list && ($column.htmlType == "select" || $column.htmlType == "radio") && "" == $column.dictType)
+ <el-table-column label="$comment" prop="${javaField}" width="150">
+ <template #default="scope">
+ <el-select v-model="scope.row.$javaField" placeholder="请选择$comment">
+ <el-option label="请选择字典生成" value="" />
+ </el-select>
+ </template>
+ </el-table-column>
+#end
+#end
+ </el-table>
+#end
+ </el-form>
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button type="primary" @click="submitForm">确 定</el-button>
+ <el-button @click="cancel">取 消</el-button>
+ </div>
+ </template>
+ </el-dialog>
+ </div>
+</template>
+
+<script setup name="${BusinessName}">
+import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}";
+
+const { proxy } = getCurrentInstance();
+#if(${dicts} != '')
+#set($dictsNoSymbol=$dicts.replace("'", ""))
+const { ${dictsNoSymbol} } = proxy.useDict(${dicts});
+#end
+
+const ${businessName}List = ref([]);
+#if($table.sub)
+const ${subclassName}List = ref([]);
+#end
+const open = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref([]);
+#if($table.sub)
+const checked${subClassName} = ref([]);
+#end
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const title = ref("");
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+const daterange${AttrName} = ref([]);
+#end
+#end
+
+const data = reactive({
+ form: {},
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ #foreach ($column in $columns)
+#if($column.query)
+ $column.javaField: null#if($foreach.count != $columns.size()),#end
+#end
+#end
+ },
+ rules: {
+ #foreach ($column in $columns)
+#if($column.required)
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+ $column.javaField: [
+ { required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select" || $column.htmlType == "radio")"change"#else"blur"#end }
+ ]#if($foreach.count != $columns.size()),#end
+#end
+#end
+ }
+});
+
+const { queryParams, form, rules } = toRefs(data);
+
+/** 查询${functionName}列表 */
+function getList() {
+ loading.value = true;
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+ queryParams.value.params = {};
+#break
+#end
+#end
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+ if (null != daterange${AttrName} && '' != daterange${AttrName}) {
+ queryParams.value.params["begin${AttrName}"] = daterange${AttrName}.value[0];
+ queryParams.value.params["end${AttrName}"] = daterange${AttrName}.value[1];
+ }
+#end
+#end
+ list${BusinessName}(queryParams.value).then(response => {
+ ${businessName}List.value = response.rows;
+ total.value = response.total;
+ loading.value = false;
+ });
+}
+
+// 取消按钮
+function cancel() {
+ open.value = false;
+ reset();
+}
+
+// 表单重置
+function reset() {
+ form.value = {
+#foreach ($column in $columns)
+#if($column.htmlType == "checkbox")
+ $column.javaField: []#if($foreach.count != $columns.size()),#end
+#else
+ $column.javaField: null#if($foreach.count != $columns.size()),#end
+#end
+#end
+ };
+#if($table.sub)
+ ${subclassName}List.value = [];
+#end
+ proxy.resetForm("${businessName}Ref");
+}
+
+/** 搜索按钮操作 */
+function handleQuery() {
+ queryParams.value.pageNum = 1;
+ getList();
+}
+
+/** 重置按钮操作 */
+function resetQuery() {
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+ daterange${AttrName}.value = [];
+#end
+#end
+ proxy.resetForm("queryRef");
+ handleQuery();
+}
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+ ids.value = selection.map(item => item.${pkColumn.javaField});
+ single.value = selection.length != 1;
+ multiple.value = !selection.length;
+}
+
+/** 新增按钮操作 */
+function handleAdd() {
+ reset();
+ open.value = true;
+ title.value = "添加${functionName}";
+}
+
+/** 修改按钮操作 */
+function handleUpdate(row) {
+ reset();
+ const _${pkColumn.javaField} = row.${pkColumn.javaField} || ids.value
+ get${BusinessName}(_${pkColumn.javaField}).then(response => {
+ form.value = response.data;
+#foreach ($column in $columns)
+#if($column.htmlType == "checkbox")
+ form.value.$column.javaField = form.value.${column.javaField}.split(",");
+#end
+#end
+#if($table.sub)
+ ${subclassName}List.value = response.data.${subclassName}List;
+#end
+ open.value = true;
+ title.value = "修改${functionName}";
+ });
+}
+
+/** 提交按钮 */
+function submitForm() {
+ proxy.#[[$]]#refs["${businessName}Ref"].validate(valid => {
+ if (valid) {
+#foreach ($column in $columns)
+#if($column.htmlType == "checkbox")
+ form.value.$column.javaField = form.value.${column.javaField}.join(",");
+#end
+#end
+#if($table.sub)
+ form.value.${subclassName}List = ${subclassName}List.value;
+#end
+ if (form.value.${pkColumn.javaField} != null) {
+ update${BusinessName}(form.value).then(response => {
+ proxy.#[[$modal]]#.msgSuccess("修改成功");
+ open.value = false;
+ getList();
+ });
+ } else {
+ add${BusinessName}(form.value).then(response => {
+ proxy.#[[$modal]]#.msgSuccess("新增成功");
+ open.value = false;
+ getList();
+ });
+ }
+ }
+ });
+}
+
+/** 删除按钮操作 */
+function handleDelete(row) {
+ const _${pkColumn.javaField}s = row.${pkColumn.javaField} || ids.value;
+ proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + _${pkColumn.javaField}s + '"的数据项?').then(function() {
+ return del${BusinessName}(_${pkColumn.javaField}s);
+ }).then(() => {
+ getList();
+ proxy.#[[$modal]]#.msgSuccess("删除成功");
+ }).catch(() => {});
+}
+
+#if($table.sub)
+/** ${subTable.functionName}序号 */
+function row${subClassName}Index({ row, rowIndex }) {
+ row.index = rowIndex + 1;
+}
+
+/** ${subTable.functionName}添加按钮操作 */
+function handleAdd${subClassName}() {
+ let obj = {};
+#foreach($column in $subTable.columns)
+#if($column.pk || $column.javaField == ${subTableFkclassName})
+#elseif($column.list && "" != $javaField)
+ obj.$column.javaField = "";
+#end
+#end
+ ${subclassName}List.value.push(obj);
+}
+
+/** ${subTable.functionName}删除按钮操作 */
+function handleDelete${subClassName}() {
+ if (checked${subClassName}.value.length == 0) {
+ proxy.#[[$modal]]#.msgError("请先选择要删除的${subTable.functionName}数据");
+ } else {
+ const ${subclassName}s = ${subclassName}List.value;
+ const checked${subClassName}s = checked${subClassName}.value;
+ ${subclassName}List.value = ${subclassName}s.filter(function(item) {
+ return checked${subClassName}s.indexOf(item.index) == -1
+ });
+ }
+}
+
+/** 复选框选中数据 */
+function handle${subClassName}SelectionChange(selection) {
+ checked${subClassName}.value = selection.map(item => item.index)
+}
+
+#end
+/** 导出按钮操作 */
+function handleExport() {
+ proxy.download('${moduleName}/${businessName}/export', {
+ ...queryParams.value
+ }, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`)
+}
+
+getList();
+</script>
diff --git a/ruoyi-generator/target/classes/vm/vue/v3/readme.txt b/ruoyi-generator/target/classes/vm/vue/v3/readme.txt
new file mode 100644
index 0000000..99239bb
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/vue/v3/readme.txt
@@ -0,0 +1 @@
+���ʹ�õ���RuoYi-Vue3ǰ�ˣ���ô��Ҫ����һ�´�Ŀ¼��ģ��index.vue.vm��index-tree.vue.vm�ļ����ϼ�vueĿ¼��
\ No newline at end of file
diff --git a/ruoyi-generator/target/classes/vm/xml/mapper.xml.vm b/ruoyi-generator/target/classes/vm/xml/mapper.xml.vm
new file mode 100644
index 0000000..0ceb3d8
--- /dev/null
+++ b/ruoyi-generator/target/classes/vm/xml/mapper.xml.vm
@@ -0,0 +1,135 @@
+<?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="${packageName}.mapper.${ClassName}Mapper">
+
+ <resultMap type="${ClassName}" id="${ClassName}Result">
+#foreach ($column in $columns)
+ <result property="${column.javaField}" column="${column.columnName}" />
+#end
+ </resultMap>
+#if($table.sub)
+
+ <resultMap id="${ClassName}${subClassName}Result" type="${ClassName}" extends="${ClassName}Result">
+ <collection property="${subclassName}List" notNullColumn="sub_${subTable.pkColumn.columnName}" javaType="java.util.List" resultMap="${subClassName}Result" />
+ </resultMap>
+
+ <resultMap type="${subClassName}" id="${subClassName}Result">
+#foreach ($column in $subTable.columns)
+ <result property="${column.javaField}" column="sub_${column.columnName}" />
+#end
+ </resultMap>
+#end
+
+ <sql id="select${ClassName}Vo">
+ select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName}
+ </sql>
+
+ <select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result">
+ <include refid="select${ClassName}Vo"/>
+ <where>
+#foreach($column in $columns)
+#set($queryType=$column.queryType)
+#set($javaField=$column.javaField)
+#set($javaType=$column.javaType)
+#set($columnName=$column.columnName)
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+#if($column.query)
+#if($column.queryType == "EQ")
+ <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName = #{$javaField}</if>
+#elseif($queryType == "NE")
+ <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName != #{$javaField}</if>
+#elseif($queryType == "GT")
+ <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName > #{$javaField}</if>
+#elseif($queryType == "GTE")
+ <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName >= #{$javaField}</if>
+#elseif($queryType == "LT")
+ <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName < #{$javaField}</if>
+#elseif($queryType == "LTE")
+ <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName <= #{$javaField}</if>
+#elseif($queryType == "LIKE")
+ <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName like concat('%', #{$javaField}, '%')</if>
+#elseif($queryType == "BETWEEN")
+ <if test="params.begin$AttrName != null and params.begin$AttrName != '' and params.end$AttrName != null and params.end$AttrName != ''"> and $columnName between #{params.begin$AttrName} and #{params.end$AttrName}</if>
+#end
+#end
+#end
+ </where>
+ </select>
+
+ <select id="select${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end">
+#if($table.crud || $table.tree)
+ <include refid="select${ClassName}Vo"/>
+ where ${pkColumn.columnName} = #{${pkColumn.javaField}}
+#elseif($table.sub)
+ select#foreach($column in $columns) a.$column.columnName#if($foreach.count != $columns.size()),#end#end,
+ #foreach($column in $subTable.columns) b.$column.columnName as sub_$column.columnName#if($foreach.count != $subTable.columns.size()),#end#end
+
+ from ${tableName} a
+ left join ${subTableName} b on b.${subTableFkName} = a.${pkColumn.columnName}
+ where a.${pkColumn.columnName} = #{${pkColumn.javaField}}
+#end
+ </select>
+
+ <insert id="insert${ClassName}" parameterType="${ClassName}"#if($pkColumn.increment) useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end>
+ insert into ${tableName}
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+#foreach($column in $columns)
+#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
+ <if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName,</if>
+#end
+#end
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+#foreach($column in $columns)
+#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
+ <if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">#{$column.javaField},</if>
+#end
+#end
+ </trim>
+ </insert>
+
+ <update id="update${ClassName}" parameterType="${ClassName}">
+ update ${tableName}
+ <trim prefix="SET" suffixOverrides=",">
+#foreach($column in $columns)
+#if($column.columnName != $pkColumn.columnName)
+ <if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName = #{$column.javaField},</if>
+#end
+#end
+ </trim>
+ where ${pkColumn.columnName} = #{${pkColumn.javaField}}
+ </update>
+
+ <delete id="delete${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}">
+ delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}}
+ </delete>
+
+ <delete id="delete${ClassName}By${pkColumn.capJavaField}s" parameterType="String">
+ delete from ${tableName} where ${pkColumn.columnName} in
+ <foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")">
+ #{${pkColumn.javaField}}
+ </foreach>
+ </delete>
+#if($table.sub)
+
+ <delete id="delete${subClassName}By${subTableFkClassName}s" parameterType="String">
+ delete from ${subTableName} where ${subTableFkName} in
+ <foreach item="${subTableFkclassName}" collection="array" open="(" separator="," close=")">
+ #{${subTableFkclassName}}
+ </foreach>
+ </delete>
+
+ <delete id="delete${subClassName}By${subTableFkClassName}" parameterType="${pkColumn.javaType}">
+ delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}}
+ </delete>
+
+ <insert id="batch${subClassName}">
+ insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($foreach.count != $subTable.columns.size()),#end#end) values
+ <foreach item="item" index="index" collection="list" separator=",">
+ (#foreach($column in $subTable.columns) #{item.$column.javaField}#if($foreach.count != $subTable.columns.size()),#end#end)
+ </foreach>
+ </insert>
+#end
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-generator/target/maven-archiver/pom.properties b/ruoyi-generator/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..dd1354e
--- /dev/null
+++ b/ruoyi-generator/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=ruoyi-generator
+groupId=com.ruoyi
+version=3.8.6
diff --git a/ruoyi-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/ruoyi-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..9db6ad6
--- /dev/null
+++ b/ruoyi-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,13 @@
+com\ruoyi\generator\service\IGenTableColumnService.class
+com\ruoyi\generator\controller\GenController.class
+com\ruoyi\generator\domain\GenTable.class
+com\ruoyi\generator\service\GenTableServiceImpl.class
+com\ruoyi\generator\util\VelocityUtils.class
+com\ruoyi\generator\mapper\GenTableMapper.class
+com\ruoyi\generator\mapper\GenTableColumnMapper.class
+com\ruoyi\generator\service\GenTableColumnServiceImpl.class
+com\ruoyi\generator\util\GenUtils.class
+com\ruoyi\generator\util\VelocityInitializer.class
+com\ruoyi\generator\domain\GenTableColumn.class
+com\ruoyi\generator\service\IGenTableService.class
+com\ruoyi\generator\config\GenConfig.class
diff --git a/ruoyi-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/ruoyi-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..76f0c4a
--- /dev/null
+++ b/ruoyi-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,13 @@
+F:\kzy\codes\java\swspkmas\ruoyi-generator\src\main\java\com\ruoyi\generator\service\IGenTableColumnService.java
+F:\kzy\codes\java\swspkmas\ruoyi-generator\src\main\java\com\ruoyi\generator\util\GenUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-generator\src\main\java\com\ruoyi\generator\util\VelocityUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-generator\src\main\java\com\ruoyi\generator\controller\GenController.java
+F:\kzy\codes\java\swspkmas\ruoyi-generator\src\main\java\com\ruoyi\generator\config\GenConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-generator\src\main\java\com\ruoyi\generator\mapper\GenTableColumnMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-generator\src\main\java\com\ruoyi\generator\domain\GenTableColumn.java
+F:\kzy\codes\java\swspkmas\ruoyi-generator\src\main\java\com\ruoyi\generator\util\VelocityInitializer.java
+F:\kzy\codes\java\swspkmas\ruoyi-generator\src\main\java\com\ruoyi\generator\domain\GenTable.java
+F:\kzy\codes\java\swspkmas\ruoyi-generator\src\main\java\com\ruoyi\generator\service\GenTableColumnServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-generator\src\main\java\com\ruoyi\generator\service\GenTableServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-generator\src\main\java\com\ruoyi\generator\mapper\GenTableMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-generator\src\main\java\com\ruoyi\generator\service\IGenTableService.java
diff --git a/ruoyi-quartz/target/classes/mapper/quartz/SysJobLogMapper.xml b/ruoyi-quartz/target/classes/mapper/quartz/SysJobLogMapper.xml
new file mode 100644
index 0000000..e608e42
--- /dev/null
+++ b/ruoyi-quartz/target/classes/mapper/quartz/SysJobLogMapper.xml
@@ -0,0 +1,93 @@
+<?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.ruoyi.quartz.mapper.SysJobLogMapper">
+
+ <resultMap type="SysJobLog" id="SysJobLogResult">
+ <id property="jobLogId" column="job_log_id" />
+ <result property="jobName" column="job_name" />
+ <result property="jobGroup" column="job_group" />
+ <result property="invokeTarget" column="invoke_target" />
+ <result property="jobMessage" column="job_message" />
+ <result property="status" column="status" />
+ <result property="exceptionInfo" column="exception_info" />
+ <result property="createTime" column="create_time" />
+ </resultMap>
+
+ <sql id="selectJobLogVo">
+ select job_log_id, job_name, job_group, invoke_target, job_message, status, exception_info, create_time
+ from sys_job_log
+ </sql>
+
+ <select id="selectJobLogList" parameterType="SysJobLog" resultMap="SysJobLogResult">
+ <include refid="selectJobLogVo"/>
+ <where>
+ <if test="jobName != null and jobName != ''">
+ AND job_name like concat('%', #{jobName}, '%')
+ </if>
+ <if test="jobGroup != null and jobGroup != ''">
+ AND job_group = #{jobGroup}
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ <if test="invokeTarget != null and invokeTarget != ''">
+ AND invoke_target like concat('%', #{invokeTarget}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
+ and date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
+ and date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
+ </if>
+ </where>
+ </select>
+
+ <select id="selectJobLogAll" resultMap="SysJobLogResult">
+ <include refid="selectJobLogVo"/>
+ </select>
+
+ <select id="selectJobLogById" parameterType="Long" resultMap="SysJobLogResult">
+ <include refid="selectJobLogVo"/>
+ where job_log_id = #{jobLogId}
+ </select>
+
+ <delete id="deleteJobLogById" parameterType="Long">
+ delete from sys_job_log where job_log_id = #{jobLogId}
+ </delete>
+
+ <delete id="deleteJobLogByIds" parameterType="Long">
+ delete from sys_job_log where job_log_id in
+ <foreach collection="array" item="jobLogId" open="(" separator="," close=")">
+ #{jobLogId}
+ </foreach>
+ </delete>
+
+ <update id="cleanJobLog">
+ truncate table sys_job_log
+ </update>
+
+ <insert id="insertJobLog" parameterType="SysJobLog">
+ insert into sys_job_log(
+ <if test="jobLogId != null and jobLogId != 0">job_log_id,</if>
+ <if test="jobName != null and jobName != ''">job_name,</if>
+ <if test="jobGroup != null and jobGroup != ''">job_group,</if>
+ <if test="invokeTarget != null and invokeTarget != ''">invoke_target,</if>
+ <if test="jobMessage != null and jobMessage != ''">job_message,</if>
+ <if test="status != null and status != ''">status,</if>
+ <if test="exceptionInfo != null and exceptionInfo != ''">exception_info,</if>
+ create_time
+ )values(
+ <if test="jobLogId != null and jobLogId != 0">#{jobLogId},</if>
+ <if test="jobName != null and jobName != ''">#{jobName},</if>
+ <if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if>
+ <if test="invokeTarget != null and invokeTarget != ''">#{invokeTarget},</if>
+ <if test="jobMessage != null and jobMessage != ''">#{jobMessage},</if>
+ <if test="status != null and status != ''">#{status},</if>
+ <if test="exceptionInfo != null and exceptionInfo != ''">#{exceptionInfo},</if>
+ sysdate()
+ )
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-quartz/target/classes/mapper/quartz/SysJobMapper.xml b/ruoyi-quartz/target/classes/mapper/quartz/SysJobMapper.xml
new file mode 100644
index 0000000..5605c44
--- /dev/null
+++ b/ruoyi-quartz/target/classes/mapper/quartz/SysJobMapper.xml
@@ -0,0 +1,111 @@
+<?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.ruoyi.quartz.mapper.SysJobMapper">
+
+ <resultMap type="SysJob" id="SysJobResult">
+ <id property="jobId" column="job_id" />
+ <result property="jobName" column="job_name" />
+ <result property="jobGroup" column="job_group" />
+ <result property="invokeTarget" column="invoke_target" />
+ <result property="cronExpression" column="cron_expression" />
+ <result property="misfirePolicy" column="misfire_policy" />
+ <result property="concurrent" column="concurrent" />
+ <result property="status" column="status" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
+ </resultMap>
+
+ <sql id="selectJobVo">
+ select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark
+ from sys_job
+ </sql>
+
+ <select id="selectJobList" parameterType="SysJob" resultMap="SysJobResult">
+ <include refid="selectJobVo"/>
+ <where>
+ <if test="jobName != null and jobName != ''">
+ AND job_name like concat('%', #{jobName}, '%')
+ </if>
+ <if test="jobGroup != null and jobGroup != ''">
+ AND job_group = #{jobGroup}
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ <if test="invokeTarget != null and invokeTarget != ''">
+ AND invoke_target like concat('%', #{invokeTarget}, '%')
+ </if>
+ </where>
+ </select>
+
+ <select id="selectJobAll" resultMap="SysJobResult">
+ <include refid="selectJobVo"/>
+ </select>
+
+ <select id="selectJobById" parameterType="Long" resultMap="SysJobResult">
+ <include refid="selectJobVo"/>
+ where job_id = #{jobId}
+ </select>
+
+ <delete id="deleteJobById" parameterType="Long">
+ delete from sys_job where job_id = #{jobId}
+ </delete>
+
+ <delete id="deleteJobByIds" parameterType="Long">
+ delete from sys_job where job_id in
+ <foreach collection="array" item="jobId" open="(" separator="," close=")">
+ #{jobId}
+ </foreach>
+ </delete>
+
+ <update id="updateJob" parameterType="SysJob">
+ update sys_job
+ <set>
+ <if test="jobName != null and jobName != ''">job_name = #{jobName},</if>
+ <if test="jobGroup != null and jobGroup != ''">job_group = #{jobGroup},</if>
+ <if test="invokeTarget != null and invokeTarget != ''">invoke_target = #{invokeTarget},</if>
+ <if test="cronExpression != null and cronExpression != ''">cron_expression = #{cronExpression},</if>
+ <if test="misfirePolicy != null and misfirePolicy != ''">misfire_policy = #{misfirePolicy},</if>
+ <if test="concurrent != null and concurrent != ''">concurrent = #{concurrent},</if>
+ <if test="status !=null">status = #{status},</if>
+ <if test="remark != null and remark != ''">remark = #{remark},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where job_id = #{jobId}
+ </update>
+
+ <insert id="insertJob" parameterType="SysJob" useGeneratedKeys="true" keyProperty="jobId">
+ insert into sys_job(
+ <if test="jobId != null and jobId != 0">job_id,</if>
+ <if test="jobName != null and jobName != ''">job_name,</if>
+ <if test="jobGroup != null and jobGroup != ''">job_group,</if>
+ <if test="invokeTarget != null and invokeTarget != ''">invoke_target,</if>
+ <if test="cronExpression != null and cronExpression != ''">cron_expression,</if>
+ <if test="misfirePolicy != null and misfirePolicy != ''">misfire_policy,</if>
+ <if test="concurrent != null and concurrent != ''">concurrent,</if>
+ <if test="status != null and status != ''">status,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="jobId != null and jobId != 0">#{jobId},</if>
+ <if test="jobName != null and jobName != ''">#{jobName},</if>
+ <if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if>
+ <if test="invokeTarget != null and invokeTarget != ''">#{invokeTarget},</if>
+ <if test="cronExpression != null and cronExpression != ''">#{cronExpression},</if>
+ <if test="misfirePolicy != null and misfirePolicy != ''">#{misfirePolicy},</if>
+ <if test="concurrent != null and concurrent != ''">#{concurrent},</if>
+ <if test="status != null and status != ''">#{status},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-quartz/target/maven-archiver/pom.properties b/ruoyi-quartz/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..0651c96
--- /dev/null
+++ b/ruoyi-quartz/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=ruoyi-quartz
+groupId=com.ruoyi
+version=3.8.6
diff --git a/ruoyi-quartz/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/ruoyi-quartz/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..9fb6b30
--- /dev/null
+++ b/ruoyi-quartz/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,17 @@
+com\ruoyi\quartz\util\QuartzDisallowConcurrentExecution.class
+com\ruoyi\quartz\util\CronUtils.class
+com\ruoyi\quartz\service\impl\SysJobLogServiceImpl.class
+com\ruoyi\quartz\controller\SysJobController.class
+com\ruoyi\quartz\util\ScheduleUtils.class
+com\ruoyi\quartz\service\ISysJobLogService.class
+com\ruoyi\quartz\mapper\SysJobMapper.class
+com\ruoyi\quartz\mapper\SysJobLogMapper.class
+com\ruoyi\quartz\domain\SysJob.class
+com\ruoyi\quartz\domain\SysJobLog.class
+com\ruoyi\quartz\controller\SysJobLogController.class
+com\ruoyi\quartz\task\RyTask.class
+com\ruoyi\quartz\util\AbstractQuartzJob.class
+com\ruoyi\quartz\util\JobInvokeUtil.class
+com\ruoyi\quartz\service\impl\SysJobServiceImpl.class
+com\ruoyi\quartz\service\ISysJobService.class
+com\ruoyi\quartz\util\QuartzJobExecution.class
diff --git a/ruoyi-quartz/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/ruoyi-quartz/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..4079c14
--- /dev/null
+++ b/ruoyi-quartz/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,18 @@
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\util\JobInvokeUtil.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\task\RyTask.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\util\QuartzJobExecution.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\domain\SysJob.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\mapper\SysJobLogMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\service\impl\SysJobLogServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\util\CronUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\util\QuartzDisallowConcurrentExecution.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\service\ISysJobLogService.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\util\ScheduleUtils.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\config\ScheduleConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\service\ISysJobService.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\domain\SysJobLog.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\util\AbstractQuartzJob.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\service\impl\SysJobServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\controller\SysJobController.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\controller\SysJobLogController.java
+F:\kzy\codes\java\swspkmas\ruoyi-quartz\src\main\java\com\ruoyi\quartz\mapper\SysJobMapper.java
diff --git a/ruoyi-system/target/classes/mapper/system/SysConfigMapper.xml b/ruoyi-system/target/classes/mapper/system/SysConfigMapper.xml
new file mode 100644
index 0000000..ca39f47
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysConfigMapper.xml
@@ -0,0 +1,117 @@
+<?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.ruoyi.system.mapper.SysConfigMapper">
+
+ <resultMap type="SysConfig" id="SysConfigResult">
+ <id property="configId" column="config_id" />
+ <result property="configName" column="config_name" />
+ <result property="configKey" column="config_key" />
+ <result property="configValue" column="config_value" />
+ <result property="configType" column="config_type" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectConfigVo">
+ select config_id, config_name, config_key, config_value, config_type, create_by, create_time, update_by, update_time, remark
+ from sys_config
+ </sql>
+
+ <!-- 查询条件 -->
+ <sql id="sqlwhereSearch">
+ <where>
+ <if test="configId !=null">
+ and config_id = #{configId}
+ </if>
+ <if test="configKey !=null and configKey != ''">
+ and config_key = #{configKey}
+ </if>
+ </where>
+ </sql>
+
+ <select id="selectConfig" parameterType="SysConfig" resultMap="SysConfigResult">
+ <include refid="selectConfigVo"/>
+ <include refid="sqlwhereSearch"/>
+ </select>
+
+ <select id="selectConfigList" parameterType="SysConfig" resultMap="SysConfigResult">
+ <include refid="selectConfigVo"/>
+ <where>
+ <if test="configName != null and configName != ''">
+ AND config_name like concat('%', #{configName}, '%')
+ </if>
+ <if test="configType != null and configType != ''">
+ AND config_type = #{configType}
+ </if>
+ <if test="configKey != null and configKey != ''">
+ AND config_key like concat('%', #{configKey}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
+ and date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
+ and date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
+ </if>
+ </where>
+ </select>
+
+ <select id="selectConfigById" parameterType="Long" resultMap="SysConfigResult">
+ <include refid="selectConfigVo"/>
+ where config_id = #{configId}
+ </select>
+
+ <select id="checkConfigKeyUnique" parameterType="String" resultMap="SysConfigResult">
+ <include refid="selectConfigVo"/>
+ where config_key = #{configKey} limit 1
+ </select>
+
+ <insert id="insertConfig" parameterType="SysConfig">
+ insert into sys_config (
+ <if test="configName != null and configName != '' ">config_name,</if>
+ <if test="configKey != null and configKey != '' ">config_key,</if>
+ <if test="configValue != null and configValue != '' ">config_value,</if>
+ <if test="configType != null and configType != '' ">config_type,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ create_time
+ )values(
+ <if test="configName != null and configName != ''">#{configName},</if>
+ <if test="configKey != null and configKey != ''">#{configKey},</if>
+ <if test="configValue != null and configValue != ''">#{configValue},</if>
+ <if test="configType != null and configType != ''">#{configType},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="updateConfig" parameterType="SysConfig">
+ update sys_config
+ <set>
+ <if test="configName != null and configName != ''">config_name = #{configName},</if>
+ <if test="configKey != null and configKey != ''">config_key = #{configKey},</if>
+ <if test="configValue != null and configValue != ''">config_value = #{configValue},</if>
+ <if test="configType != null and configType != ''">config_type = #{configType},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ update_time = sysdate()
+ </set>
+ where config_id = #{configId}
+ </update>
+
+ <delete id="deleteConfigById" parameterType="Long">
+ delete from sys_config where config_id = #{configId}
+ </delete>
+
+ <delete id="deleteConfigByIds" parameterType="Long">
+ delete from sys_config where config_id in
+ <foreach item="configId" collection="array" open="(" separator="," close=")">
+ #{configId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysDeptMapper.xml b/ruoyi-system/target/classes/mapper/system/SysDeptMapper.xml
new file mode 100644
index 0000000..cf439f6
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysDeptMapper.xml
@@ -0,0 +1,159 @@
+<?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.ruoyi.system.mapper.SysDeptMapper">
+
+ <resultMap type="SysDept" id="SysDeptResult">
+ <id property="deptId" column="dept_id" />
+ <result property="parentId" column="parent_id" />
+ <result property="ancestors" column="ancestors" />
+ <result property="deptName" column="dept_name" />
+ <result property="orderNum" column="order_num" />
+ <result property="leader" column="leader" />
+ <result property="phone" column="phone" />
+ <result property="email" column="email" />
+ <result property="status" column="status" />
+ <result property="delFlag" column="del_flag" />
+ <result property="parentName" column="parent_name" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectDeptVo">
+ select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time
+ from sys_dept d
+ </sql>
+
+ <select id="selectDeptList" parameterType="SysDept" resultMap="SysDeptResult">
+ <include refid="selectDeptVo"/>
+ where d.del_flag = '0'
+ <if test="deptId != null and deptId != 0">
+ AND dept_id = #{deptId}
+ </if>
+ <if test="parentId != null and parentId != 0">
+ AND parent_id = #{parentId}
+ </if>
+ <if test="deptName != null and deptName != ''">
+ AND dept_name like concat('%', #{deptName}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ <!-- 数据范围过滤 -->
+ ${params.dataScope}
+ order by d.parent_id, d.order_num
+ </select>
+
+ <select id="selectDeptListByRoleId" resultType="Long">
+ select d.dept_id
+ from sys_dept d
+ left join sys_role_dept rd on d.dept_id = rd.dept_id
+ where rd.role_id = #{roleId}
+ <if test="deptCheckStrictly">
+ and d.dept_id not in (select d.parent_id from sys_dept d inner join sys_role_dept rd on d.dept_id = rd.dept_id and rd.role_id = #{roleId})
+ </if>
+ order by d.parent_id, d.order_num
+ </select>
+
+ <select id="selectDeptById" parameterType="Long" resultMap="SysDeptResult">
+ select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status,
+ (select dept_name from sys_dept where dept_id = d.parent_id) parent_name
+ from sys_dept d
+ where d.dept_id = #{deptId}
+ </select>
+
+ <select id="checkDeptExistUser" parameterType="Long" resultType="int">
+ select count(1) from sys_user where dept_id = #{deptId} and del_flag = '0'
+ </select>
+
+ <select id="hasChildByDeptId" parameterType="Long" resultType="int">
+ select count(1) from sys_dept
+ where del_flag = '0' and parent_id = #{deptId} limit 1
+ </select>
+
+ <select id="selectChildrenDeptById" parameterType="Long" resultMap="SysDeptResult">
+ select * from sys_dept where find_in_set(#{deptId}, ancestors)
+ </select>
+
+ <select id="selectNormalChildrenDeptById" parameterType="Long" resultType="int">
+ select count(*) from sys_dept where status = 0 and del_flag = '0' and find_in_set(#{deptId}, ancestors)
+ </select>
+
+ <select id="checkDeptNameUnique" resultMap="SysDeptResult">
+ <include refid="selectDeptVo"/>
+ where dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1
+ </select>
+
+ <insert id="insertDept" parameterType="SysDept">
+ insert into sys_dept(
+ <if test="deptId != null and deptId != 0">dept_id,</if>
+ <if test="parentId != null and parentId != 0">parent_id,</if>
+ <if test="deptName != null and deptName != ''">dept_name,</if>
+ <if test="ancestors != null and ancestors != ''">ancestors,</if>
+ <if test="orderNum != null">order_num,</if>
+ <if test="leader != null and leader != ''">leader,</if>
+ <if test="phone != null and phone != ''">phone,</if>
+ <if test="email != null and email != ''">email,</if>
+ <if test="status != null">status,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="deptId != null and deptId != 0">#{deptId},</if>
+ <if test="parentId != null and parentId != 0">#{parentId},</if>
+ <if test="deptName != null and deptName != ''">#{deptName},</if>
+ <if test="ancestors != null and ancestors != ''">#{ancestors},</if>
+ <if test="orderNum != null">#{orderNum},</if>
+ <if test="leader != null and leader != ''">#{leader},</if>
+ <if test="phone != null and phone != ''">#{phone},</if>
+ <if test="email != null and email != ''">#{email},</if>
+ <if test="status != null">#{status},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="updateDept" parameterType="SysDept">
+ update sys_dept
+ <set>
+ <if test="parentId != null and parentId != 0">parent_id = #{parentId},</if>
+ <if test="deptName != null and deptName != ''">dept_name = #{deptName},</if>
+ <if test="ancestors != null and ancestors != ''">ancestors = #{ancestors},</if>
+ <if test="orderNum != null">order_num = #{orderNum},</if>
+ <if test="leader != null">leader = #{leader},</if>
+ <if test="phone != null">phone = #{phone},</if>
+ <if test="email != null">email = #{email},</if>
+ <if test="status != null and status != ''">status = #{status},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where dept_id = #{deptId}
+ </update>
+
+ <update id="updateDeptChildren" parameterType="java.util.List">
+ update sys_dept set ancestors =
+ <foreach collection="depts" item="item" index="index"
+ separator=" " open="case dept_id" close="end">
+ when #{item.deptId} then #{item.ancestors}
+ </foreach>
+ where dept_id in
+ <foreach collection="depts" item="item" index="index"
+ separator="," open="(" close=")">
+ #{item.deptId}
+ </foreach>
+ </update>
+
+ <update id="updateDeptStatusNormal" parameterType="Long">
+ update sys_dept set status = '0' where dept_id in
+ <foreach collection="array" item="deptId" open="(" separator="," close=")">
+ #{deptId}
+ </foreach>
+ </update>
+
+ <delete id="deleteDeptById" parameterType="Long">
+ update sys_dept set del_flag = '2' where dept_id = #{deptId}
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysDictDataMapper.xml b/ruoyi-system/target/classes/mapper/system/SysDictDataMapper.xml
new file mode 100644
index 0000000..8da9030
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysDictDataMapper.xml
@@ -0,0 +1,124 @@
+<?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.ruoyi.system.mapper.SysDictDataMapper">
+
+ <resultMap type="SysDictData" id="SysDictDataResult">
+ <id property="dictCode" column="dict_code" />
+ <result property="dictSort" column="dict_sort" />
+ <result property="dictLabel" column="dict_label" />
+ <result property="dictValue" column="dict_value" />
+ <result property="dictType" column="dict_type" />
+ <result property="cssClass" column="css_class" />
+ <result property="listClass" column="list_class" />
+ <result property="isDefault" column="is_default" />
+ <result property="status" column="status" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectDictDataVo">
+ select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark
+ from sys_dict_data
+ </sql>
+
+ <select id="selectDictDataList" parameterType="SysDictData" resultMap="SysDictDataResult">
+ <include refid="selectDictDataVo"/>
+ <where>
+ <if test="dictType != null and dictType != ''">
+ AND dict_type = #{dictType}
+ </if>
+ <if test="dictLabel != null and dictLabel != ''">
+ AND dict_label like concat('%', #{dictLabel}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ </where>
+ order by dict_sort asc
+ </select>
+
+ <select id="selectDictDataByType" parameterType="SysDictData" resultMap="SysDictDataResult">
+ <include refid="selectDictDataVo"/>
+ where status = '0' and dict_type = #{dictType} order by dict_sort asc
+ </select>
+
+ <select id="selectDictLabel" resultType="String">
+ select dict_label from sys_dict_data
+ where dict_type = #{dictType} and dict_value = #{dictValue}
+ </select>
+
+ <select id="selectDictDataById" parameterType="Long" resultMap="SysDictDataResult">
+ <include refid="selectDictDataVo"/>
+ where dict_code = #{dictCode}
+ </select>
+
+ <select id="countDictDataByType" resultType="Integer">
+ select count(1) from sys_dict_data where dict_type=#{dictType}
+ </select>
+
+ <delete id="deleteDictDataById" parameterType="Long">
+ delete from sys_dict_data where dict_code = #{dictCode}
+ </delete>
+
+ <delete id="deleteDictDataByIds" parameterType="Long">
+ delete from sys_dict_data where dict_code in
+ <foreach collection="array" item="dictCode" open="(" separator="," close=")">
+ #{dictCode}
+ </foreach>
+ </delete>
+
+ <update id="updateDictData" parameterType="SysDictData">
+ update sys_dict_data
+ <set>
+ <if test="dictSort != null">dict_sort = #{dictSort},</if>
+ <if test="dictLabel != null and dictLabel != ''">dict_label = #{dictLabel},</if>
+ <if test="dictValue != null and dictValue != ''">dict_value = #{dictValue},</if>
+ <if test="dictType != null and dictType != ''">dict_type = #{dictType},</if>
+ <if test="cssClass != null">css_class = #{cssClass},</if>
+ <if test="listClass != null">list_class = #{listClass},</if>
+ <if test="isDefault != null and isDefault != ''">is_default = #{isDefault},</if>
+ <if test="status != null">status = #{status},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where dict_code = #{dictCode}
+ </update>
+
+ <update id="updateDictDataType" parameterType="String">
+ update sys_dict_data set dict_type = #{newDictType} where dict_type = #{oldDictType}
+ </update>
+
+ <insert id="insertDictData" parameterType="SysDictData">
+ insert into sys_dict_data(
+ <if test="dictSort != null">dict_sort,</if>
+ <if test="dictLabel != null and dictLabel != ''">dict_label,</if>
+ <if test="dictValue != null and dictValue != ''">dict_value,</if>
+ <if test="dictType != null and dictType != ''">dict_type,</if>
+ <if test="cssClass != null and cssClass != ''">css_class,</if>
+ <if test="listClass != null and listClass != ''">list_class,</if>
+ <if test="isDefault != null and isDefault != ''">is_default,</if>
+ <if test="status != null">status,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="dictSort != null">#{dictSort},</if>
+ <if test="dictLabel != null and dictLabel != ''">#{dictLabel},</if>
+ <if test="dictValue != null and dictValue != ''">#{dictValue},</if>
+ <if test="dictType != null and dictType != ''">#{dictType},</if>
+ <if test="cssClass != null and cssClass != ''">#{cssClass},</if>
+ <if test="listClass != null and listClass != ''">#{listClass},</if>
+ <if test="isDefault != null and isDefault != ''">#{isDefault},</if>
+ <if test="status != null">#{status},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysDictTypeMapper.xml b/ruoyi-system/target/classes/mapper/system/SysDictTypeMapper.xml
new file mode 100644
index 0000000..55b4075
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysDictTypeMapper.xml
@@ -0,0 +1,105 @@
+<?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.ruoyi.system.mapper.SysDictTypeMapper">
+
+ <resultMap type="SysDictType" id="SysDictTypeResult">
+ <id property="dictId" column="dict_id" />
+ <result property="dictName" column="dict_name" />
+ <result property="dictType" column="dict_type" />
+ <result property="status" column="status" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectDictTypeVo">
+ select dict_id, dict_name, dict_type, status, create_by, create_time, remark
+ from sys_dict_type
+ </sql>
+
+ <select id="selectDictTypeList" parameterType="SysDictType" resultMap="SysDictTypeResult">
+ <include refid="selectDictTypeVo"/>
+ <where>
+ <if test="dictName != null and dictName != ''">
+ AND dict_name like concat('%', #{dictName}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ <if test="dictType != null and dictType != ''">
+ AND dict_type like concat('%', #{dictType}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
+ and date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
+ and date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
+ </if>
+ </where>
+ </select>
+
+ <select id="selectDictTypeAll" resultMap="SysDictTypeResult">
+ <include refid="selectDictTypeVo"/>
+ </select>
+
+ <select id="selectDictTypeById" parameterType="Long" resultMap="SysDictTypeResult">
+ <include refid="selectDictTypeVo"/>
+ where dict_id = #{dictId}
+ </select>
+
+ <select id="selectDictTypeByType" parameterType="String" resultMap="SysDictTypeResult">
+ <include refid="selectDictTypeVo"/>
+ where dict_type = #{dictType}
+ </select>
+
+ <select id="checkDictTypeUnique" parameterType="String" resultMap="SysDictTypeResult">
+ <include refid="selectDictTypeVo"/>
+ where dict_type = #{dictType} limit 1
+ </select>
+
+ <delete id="deleteDictTypeById" parameterType="Long">
+ delete from sys_dict_type where dict_id = #{dictId}
+ </delete>
+
+ <delete id="deleteDictTypeByIds" parameterType="Long">
+ delete from sys_dict_type where dict_id in
+ <foreach collection="array" item="dictId" open="(" separator="," close=")">
+ #{dictId}
+ </foreach>
+ </delete>
+
+ <update id="updateDictType" parameterType="SysDictType">
+ update sys_dict_type
+ <set>
+ <if test="dictName != null and dictName != ''">dict_name = #{dictName},</if>
+ <if test="dictType != null and dictType != ''">dict_type = #{dictType},</if>
+ <if test="status != null">status = #{status},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where dict_id = #{dictId}
+ </update>
+
+ <insert id="insertDictType" parameterType="SysDictType">
+ insert into sys_dict_type(
+ <if test="dictName != null and dictName != ''">dict_name,</if>
+ <if test="dictType != null and dictType != ''">dict_type,</if>
+ <if test="status != null">status,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="dictName != null and dictName != ''">#{dictName},</if>
+ <if test="dictType != null and dictType != ''">#{dictType},</if>
+ <if test="status != null">#{status},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysLogininforMapper.xml b/ruoyi-system/target/classes/mapper/system/SysLogininforMapper.xml
new file mode 100644
index 0000000..822d665
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysLogininforMapper.xml
@@ -0,0 +1,57 @@
+<?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.ruoyi.system.mapper.SysLogininforMapper">
+
+ <resultMap type="SysLogininfor" id="SysLogininforResult">
+ <id property="infoId" column="info_id" />
+ <result property="userName" column="user_name" />
+ <result property="status" column="status" />
+ <result property="ipaddr" column="ipaddr" />
+ <result property="loginLocation" column="login_location" />
+ <result property="browser" column="browser" />
+ <result property="os" column="os" />
+ <result property="msg" column="msg" />
+ <result property="loginTime" column="login_time" />
+ </resultMap>
+
+ <insert id="insertLogininfor" parameterType="SysLogininfor">
+ insert into sys_logininfor (user_name, status, ipaddr, login_location, browser, os, msg, login_time)
+ values (#{userName}, #{status}, #{ipaddr}, #{loginLocation}, #{browser}, #{os}, #{msg}, sysdate())
+ </insert>
+
+ <select id="selectLogininforList" parameterType="SysLogininfor" resultMap="SysLogininforResult">
+ select info_id, user_name, ipaddr, login_location, browser, os, status, msg, login_time from sys_logininfor
+ <where>
+ <if test="ipaddr != null and ipaddr != ''">
+ AND ipaddr like concat('%', #{ipaddr}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ <if test="userName != null and userName != ''">
+ AND user_name like concat('%', #{userName}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
+ AND login_time >= #{params.beginTime}
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
+ AND login_time <= #{params.endTime}
+ </if>
+ </where>
+ order by info_id desc
+ </select>
+
+ <delete id="deleteLogininforByIds" parameterType="Long">
+ delete from sys_logininfor where info_id in
+ <foreach collection="array" item="infoId" open="(" separator="," close=")">
+ #{infoId}
+ </foreach>
+ </delete>
+
+ <update id="cleanLogininfor">
+ truncate table sys_logininfor
+ </update>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysMenuMapper.xml b/ruoyi-system/target/classes/mapper/system/SysMenuMapper.xml
new file mode 100644
index 0000000..6762007
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysMenuMapper.xml
@@ -0,0 +1,202 @@
+<?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.ruoyi.system.mapper.SysMenuMapper">
+
+ <resultMap type="SysMenu" id="SysMenuResult">
+ <id property="menuId" column="menu_id" />
+ <result property="menuName" column="menu_name" />
+ <result property="parentName" column="parent_name" />
+ <result property="parentId" column="parent_id" />
+ <result property="orderNum" column="order_num" />
+ <result property="path" column="path" />
+ <result property="component" column="component" />
+ <result property="query" column="query" />
+ <result property="isFrame" column="is_frame" />
+ <result property="isCache" column="is_cache" />
+ <result property="menuType" column="menu_type" />
+ <result property="visible" column="visible" />
+ <result property="status" column="status" />
+ <result property="perms" column="perms" />
+ <result property="icon" column="icon" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateTime" column="update_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="remark" column="remark" />
+ </resultMap>
+
+ <sql id="selectMenuVo">
+ select menu_id, menu_name, parent_id, order_num, path, component, `query`, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time
+ from sys_menu
+ </sql>
+
+ <select id="selectMenuList" parameterType="SysMenu" resultMap="SysMenuResult">
+ <include refid="selectMenuVo"/>
+ <where>
+ <if test="menuName != null and menuName != ''">
+ AND menu_name like concat('%', #{menuName}, '%')
+ </if>
+ <if test="visible != null and visible != ''">
+ AND visible = #{visible}
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ </where>
+ order by parent_id, order_num
+ </select>
+
+ <select id="selectMenuTreeAll" resultMap="SysMenuResult">
+ select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
+ from sys_menu m where m.menu_type in ('M', 'C') and m.status = 0
+ order by m.parent_id, m.order_num
+ </select>
+
+ <select id="selectMenuListByUserId" parameterType="SysMenu" resultMap="SysMenuResult">
+ select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
+ from sys_menu m
+ left join sys_role_menu rm on m.menu_id = rm.menu_id
+ left join sys_user_role ur on rm.role_id = ur.role_id
+ left join sys_role ro on ur.role_id = ro.role_id
+ where ur.user_id = #{params.userId}
+ <if test="menuName != null and menuName != ''">
+ AND m.menu_name like concat('%', #{menuName}, '%')
+ </if>
+ <if test="visible != null and visible != ''">
+ AND m.visible = #{visible}
+ </if>
+ <if test="status != null and status != ''">
+ AND m.status = #{status}
+ </if>
+ order by m.parent_id, m.order_num
+ </select>
+
+ <select id="selectMenuTreeByUserId" parameterType="Long" resultMap="SysMenuResult">
+ select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
+ from sys_menu m
+ left join sys_role_menu rm on m.menu_id = rm.menu_id
+ left join sys_user_role ur on rm.role_id = ur.role_id
+ left join sys_role ro on ur.role_id = ro.role_id
+ left join sys_user u on ur.user_id = u.user_id
+ where u.user_id = #{userId} and m.menu_type in ('M', 'C') and m.status = 0 AND ro.status = 0
+ order by m.parent_id, m.order_num
+ </select>
+
+ <select id="selectMenuListByRoleId" resultType="Long">
+ select m.menu_id
+ from sys_menu m
+ left join sys_role_menu rm on m.menu_id = rm.menu_id
+ where rm.role_id = #{roleId}
+ <if test="menuCheckStrictly">
+ and m.menu_id not in (select m.parent_id from sys_menu m inner join sys_role_menu rm on m.menu_id = rm.menu_id and rm.role_id = #{roleId})
+ </if>
+ order by m.parent_id, m.order_num
+ </select>
+
+ <select id="selectMenuPerms" resultType="String">
+ select distinct m.perms
+ from sys_menu m
+ left join sys_role_menu rm on m.menu_id = rm.menu_id
+ left join sys_user_role ur on rm.role_id = ur.role_id
+ </select>
+
+ <select id="selectMenuPermsByUserId" parameterType="Long" resultType="String">
+ select distinct m.perms
+ from sys_menu m
+ left join sys_role_menu rm on m.menu_id = rm.menu_id
+ left join sys_user_role ur on rm.role_id = ur.role_id
+ left join sys_role r on r.role_id = ur.role_id
+ where m.status = '0' and r.status = '0' and ur.user_id = #{userId}
+ </select>
+
+ <select id="selectMenuPermsByRoleId" parameterType="Long" resultType="String">
+ select distinct m.perms
+ from sys_menu m
+ left join sys_role_menu rm on m.menu_id = rm.menu_id
+ where m.status = '0' and rm.role_id = #{roleId}
+ </select>
+
+ <select id="selectMenuById" parameterType="Long" resultMap="SysMenuResult">
+ <include refid="selectMenuVo"/>
+ where menu_id = #{menuId}
+ </select>
+
+ <select id="hasChildByMenuId" resultType="Integer">
+ select count(1) from sys_menu where parent_id = #{menuId}
+ </select>
+
+ <select id="checkMenuNameUnique" parameterType="SysMenu" resultMap="SysMenuResult">
+ <include refid="selectMenuVo"/>
+ where menu_name=#{menuName} and parent_id = #{parentId} limit 1
+ </select>
+
+ <update id="updateMenu" parameterType="SysMenu">
+ update sys_menu
+ <set>
+ <if test="menuName != null and menuName != ''">menu_name = #{menuName},</if>
+ <if test="parentId != null">parent_id = #{parentId},</if>
+ <if test="orderNum != null">order_num = #{orderNum},</if>
+ <if test="path != null and path != ''">path = #{path},</if>
+ <if test="component != null">component = #{component},</if>
+ <if test="query != null">`query` = #{query},</if>
+ <if test="isFrame != null and isFrame != ''">is_frame = #{isFrame},</if>
+ <if test="isCache != null and isCache != ''">is_cache = #{isCache},</if>
+ <if test="menuType != null and menuType != ''">menu_type = #{menuType},</if>
+ <if test="visible != null">visible = #{visible},</if>
+ <if test="status != null">status = #{status},</if>
+ <if test="perms !=null">perms = #{perms},</if>
+ <if test="icon !=null and icon != ''">icon = #{icon},</if>
+ <if test="remark != null and remark != ''">remark = #{remark},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where menu_id = #{menuId}
+ </update>
+
+ <insert id="insertMenu" parameterType="SysMenu">
+ insert into sys_menu(
+ <if test="menuId != null and menuId != 0">menu_id,</if>
+ <if test="parentId != null and parentId != 0">parent_id,</if>
+ <if test="menuName != null and menuName != ''">menu_name,</if>
+ <if test="orderNum != null">order_num,</if>
+ <if test="path != null and path != ''">path,</if>
+ <if test="component != null and component != ''">component,</if>
+ <if test="query != null and query != ''">`query`,</if>
+ <if test="isFrame != null and isFrame != ''">is_frame,</if>
+ <if test="isCache != null and isCache != ''">is_cache,</if>
+ <if test="menuType != null and menuType != ''">menu_type,</if>
+ <if test="visible != null">visible,</if>
+ <if test="status != null">status,</if>
+ <if test="perms !=null and perms != ''">perms,</if>
+ <if test="icon != null and icon != ''">icon,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="menuId != null and menuId != 0">#{menuId},</if>
+ <if test="parentId != null and parentId != 0">#{parentId},</if>
+ <if test="menuName != null and menuName != ''">#{menuName},</if>
+ <if test="orderNum != null">#{orderNum},</if>
+ <if test="path != null and path != ''">#{path},</if>
+ <if test="component != null and component != ''">#{component},</if>
+ <if test="query != null and query != ''">#{query},</if>
+ <if test="isFrame != null and isFrame != ''">#{isFrame},</if>
+ <if test="isCache != null and isCache != ''">#{isCache},</if>
+ <if test="menuType != null and menuType != ''">#{menuType},</if>
+ <if test="visible != null">#{visible},</if>
+ <if test="status != null">#{status},</if>
+ <if test="perms !=null and perms != ''">#{perms},</if>
+ <if test="icon != null and icon != ''">#{icon},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <delete id="deleteMenuById" parameterType="Long">
+ delete from sys_menu where menu_id = #{menuId}
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysNoticeMapper.xml b/ruoyi-system/target/classes/mapper/system/SysNoticeMapper.xml
new file mode 100644
index 0000000..65d3079
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysNoticeMapper.xml
@@ -0,0 +1,89 @@
+<?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.ruoyi.system.mapper.SysNoticeMapper">
+
+ <resultMap type="SysNotice" id="SysNoticeResult">
+ <result property="noticeId" column="notice_id" />
+ <result property="noticeTitle" column="notice_title" />
+ <result property="noticeType" column="notice_type" />
+ <result property="noticeContent" column="notice_content" />
+ <result property="status" column="status" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
+ </resultMap>
+
+ <sql id="selectNoticeVo">
+ select notice_id, notice_title, notice_type, cast(notice_content as char) as notice_content, status, create_by, create_time, update_by, update_time, remark
+ from sys_notice
+ </sql>
+
+ <select id="selectNoticeById" parameterType="Long" resultMap="SysNoticeResult">
+ <include refid="selectNoticeVo"/>
+ where notice_id = #{noticeId}
+ </select>
+
+ <select id="selectNoticeList" parameterType="SysNotice" resultMap="SysNoticeResult">
+ <include refid="selectNoticeVo"/>
+ <where>
+ <if test="noticeTitle != null and noticeTitle != ''">
+ AND notice_title like concat('%', #{noticeTitle}, '%')
+ </if>
+ <if test="noticeType != null and noticeType != ''">
+ AND notice_type = #{noticeType}
+ </if>
+ <if test="createBy != null and createBy != ''">
+ AND create_by like concat('%', #{createBy}, '%')
+ </if>
+ </where>
+ </select>
+
+ <insert id="insertNotice" parameterType="SysNotice">
+ insert into sys_notice (
+ <if test="noticeTitle != null and noticeTitle != '' ">notice_title, </if>
+ <if test="noticeType != null and noticeType != '' ">notice_type, </if>
+ <if test="noticeContent != null and noticeContent != '' ">notice_content, </if>
+ <if test="status != null and status != '' ">status, </if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="noticeTitle != null and noticeTitle != ''">#{noticeTitle}, </if>
+ <if test="noticeType != null and noticeType != ''">#{noticeType}, </if>
+ <if test="noticeContent != null and noticeContent != ''">#{noticeContent}, </if>
+ <if test="status != null and status != ''">#{status}, </if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="updateNotice" parameterType="SysNotice">
+ update sys_notice
+ <set>
+ <if test="noticeTitle != null and noticeTitle != ''">notice_title = #{noticeTitle}, </if>
+ <if test="noticeType != null and noticeType != ''">notice_type = #{noticeType}, </if>
+ <if test="noticeContent != null">notice_content = #{noticeContent}, </if>
+ <if test="status != null and status != ''">status = #{status}, </if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where notice_id = #{noticeId}
+ </update>
+
+ <delete id="deleteNoticeById" parameterType="Long">
+ delete from sys_notice where notice_id = #{noticeId}
+ </delete>
+
+ <delete id="deleteNoticeByIds" parameterType="Long">
+ delete from sys_notice where notice_id in
+ <foreach item="noticeId" collection="array" open="(" separator="," close=")">
+ #{noticeId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysOperLogMapper.xml b/ruoyi-system/target/classes/mapper/system/SysOperLogMapper.xml
new file mode 100644
index 0000000..96bc621
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysOperLogMapper.xml
@@ -0,0 +1,84 @@
+<?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.ruoyi.system.mapper.SysOperLogMapper">
+
+ <resultMap type="SysOperLog" id="SysOperLogResult">
+ <id property="operId" column="oper_id" />
+ <result property="title" column="title" />
+ <result property="businessType" column="business_type" />
+ <result property="method" column="method" />
+ <result property="requestMethod" column="request_method" />
+ <result property="operatorType" column="operator_type" />
+ <result property="operName" column="oper_name" />
+ <result property="deptName" column="dept_name" />
+ <result property="operUrl" column="oper_url" />
+ <result property="operIp" column="oper_ip" />
+ <result property="operLocation" column="oper_location" />
+ <result property="operParam" column="oper_param" />
+ <result property="jsonResult" column="json_result" />
+ <result property="status" column="status" />
+ <result property="errorMsg" column="error_msg" />
+ <result property="operTime" column="oper_time" />
+ <result property="costTime" column="cost_time" />
+ </resultMap>
+
+ <sql id="selectOperLogVo">
+ select oper_id, title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, oper_time, cost_time
+ from sys_oper_log
+ </sql>
+
+ <insert id="insertOperlog" parameterType="SysOperLog">
+ insert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, cost_time, oper_time)
+ values (#{title}, #{businessType}, #{method}, #{requestMethod}, #{operatorType}, #{operName}, #{deptName}, #{operUrl}, #{operIp}, #{operLocation}, #{operParam}, #{jsonResult}, #{status}, #{errorMsg}, #{costTime}, sysdate())
+ </insert>
+
+ <select id="selectOperLogList" parameterType="SysOperLog" resultMap="SysOperLogResult">
+ <include refid="selectOperLogVo"/>
+ <where>
+ <if test="title != null and title != ''">
+ AND title like concat('%', #{title}, '%')
+ </if>
+ <if test="businessType != null">
+ AND business_type = #{businessType}
+ </if>
+ <if test="businessTypes != null and businessTypes.length > 0">
+ AND business_type in
+ <foreach collection="businessTypes" item="businessType" open="(" separator="," close=")">
+ #{businessType}
+ </foreach>
+ </if>
+ <if test="status != null">
+ AND status = #{status}
+ </if>
+ <if test="operName != null and operName != ''">
+ AND oper_name like concat('%', #{operName}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
+ AND oper_time >= #{params.beginTime}
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
+ AND oper_time <= #{params.endTime}
+ </if>
+ </where>
+ order by oper_id desc
+ </select>
+
+ <delete id="deleteOperLogByIds" parameterType="Long">
+ delete from sys_oper_log where oper_id in
+ <foreach collection="array" item="operId" open="(" separator="," close=")">
+ #{operId}
+ </foreach>
+ </delete>
+
+ <select id="selectOperLogById" parameterType="Long" resultMap="SysOperLogResult">
+ <include refid="selectOperLogVo"/>
+ where oper_id = #{operId}
+ </select>
+
+ <update id="cleanOperLog">
+ truncate table sys_oper_log
+ </update>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysOperateTypeMapper.xml b/ruoyi-system/target/classes/mapper/system/SysOperateTypeMapper.xml
new file mode 100644
index 0000000..379d507
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysOperateTypeMapper.xml
@@ -0,0 +1,65 @@
+<?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.ruoyi.system.mapper.SysOperateTypeMapper">
+
+ <resultMap type="com.ruoyi.system.domain.SysOperateType" id="SysOperateTypeResult">
+ <id property="id" column="id" />
+ <result property="parentId" column="parent_id" />
+ <result property="ancestors" column="ancestors" />
+ <result property="code" column="code" />
+ <result property="name" column="name" />
+ <result property="type" column="type" />
+ <result property="delFlag" column="del_flag" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectOperateTypeCommon">
+ select id, parent_id, ancestors, code, name, type, del_flag, create_by, create_time,update_by,update_time
+ from sys_operate_type
+ </sql>
+ <update id="updateOperateTypeChildren">
+ update sys_dept set ancestors =
+ <foreach collection="sysOperateTypes" item="item" index="index"
+ separator=" " open="case id" close="end">
+ when #{item.id} then #{item.ancestors}
+ </foreach>
+ where id in
+ <foreach collection="sysOperateTypes" item="item" index="index"
+ separator="," open="(" close=")">
+ #{item.id}
+ </foreach>
+ </update>
+ <delete id="deleteOperateTypeById">
+ update sys_operate_type set del_flag = '2' where id = #{id}
+ </delete>
+
+ <select id="selectOperateTypeById" resultType="com.ruoyi.system.domain.SysOperateType">
+ <include refid="selectOperateTypeCommon"/>
+ where del_flag = '0'
+ <if test="id != null">
+ AND id = #{id}
+ </if>
+ </select>
+
+ <select id="selectChildrenOperateTypeById" resultType="com.ruoyi.system.domain.SysOperateType">
+ select * from sys_operate_type where find_in_set(#{id}, ancestors)
+ </select>
+ <select id="hasChildByOperateTypeId" resultType="java.lang.Integer">
+ select count(1) from sys_operate_type
+ where del_flag = '0' and parent_id = #{id} limit 1
+ </select>
+
+ <select id="selectOperateTypeByIds" resultType="com.ruoyi.system.domain.SysOperateType">
+ <include refid="selectOperateTypeCommon"/>
+ where del_flag = '0' and id in
+ <foreach collection="list" item="id" index="index"
+ separator="," open="(" close=")">
+ #{id}
+ </foreach>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysPostMapper.xml b/ruoyi-system/target/classes/mapper/system/SysPostMapper.xml
new file mode 100644
index 0000000..227c459
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysPostMapper.xml
@@ -0,0 +1,122 @@
+<?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.ruoyi.system.mapper.SysPostMapper">
+
+ <resultMap type="SysPost" id="SysPostResult">
+ <id property="postId" column="post_id" />
+ <result property="postCode" column="post_code" />
+ <result property="postName" column="post_name" />
+ <result property="postSort" column="post_sort" />
+ <result property="status" column="status" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
+ </resultMap>
+
+ <sql id="selectPostVo">
+ select post_id, post_code, post_name, post_sort, status, create_by, create_time, remark
+ from sys_post
+ </sql>
+
+ <select id="selectPostList" parameterType="SysPost" resultMap="SysPostResult">
+ <include refid="selectPostVo"/>
+ <where>
+ <if test="postCode != null and postCode != ''">
+ AND post_code like concat('%', #{postCode}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ <if test="postName != null and postName != ''">
+ AND post_name like concat('%', #{postName}, '%')
+ </if>
+ </where>
+ </select>
+
+ <select id="selectPostAll" resultMap="SysPostResult">
+ <include refid="selectPostVo"/>
+ </select>
+
+ <select id="selectPostById" parameterType="Long" resultMap="SysPostResult">
+ <include refid="selectPostVo"/>
+ where post_id = #{postId}
+ </select>
+
+ <select id="selectPostListByUserId" parameterType="Long" resultType="Long">
+ select p.post_id
+ from sys_post p
+ left join sys_user_post up on up.post_id = p.post_id
+ left join sys_user u on u.user_id = up.user_id
+ where u.user_id = #{userId}
+ </select>
+
+ <select id="selectPostsByUserName" parameterType="String" resultMap="SysPostResult">
+ select p.post_id, p.post_name, p.post_code
+ from sys_post p
+ left join sys_user_post up on up.post_id = p.post_id
+ left join sys_user u on u.user_id = up.user_id
+ where u.user_name = #{userName}
+ </select>
+
+ <select id="checkPostNameUnique" parameterType="String" resultMap="SysPostResult">
+ <include refid="selectPostVo"/>
+ where post_name=#{postName} limit 1
+ </select>
+
+ <select id="checkPostCodeUnique" parameterType="String" resultMap="SysPostResult">
+ <include refid="selectPostVo"/>
+ where post_code=#{postCode} limit 1
+ </select>
+
+ <update id="updatePost" parameterType="SysPost">
+ update sys_post
+ <set>
+ <if test="postCode != null and postCode != ''">post_code = #{postCode},</if>
+ <if test="postName != null and postName != ''">post_name = #{postName},</if>
+ <if test="postSort != null">post_sort = #{postSort},</if>
+ <if test="status != null and status != ''">status = #{status},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where post_id = #{postId}
+ </update>
+
+ <insert id="insertPost" parameterType="SysPost" useGeneratedKeys="true" keyProperty="postId">
+ insert into sys_post(
+ <if test="postId != null and postId != 0">post_id,</if>
+ <if test="postCode != null and postCode != ''">post_code,</if>
+ <if test="postName != null and postName != ''">post_name,</if>
+ <if test="postSort != null">post_sort,</if>
+ <if test="status != null and status != ''">status,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="postId != null and postId != 0">#{postId},</if>
+ <if test="postCode != null and postCode != ''">#{postCode},</if>
+ <if test="postName != null and postName != ''">#{postName},</if>
+ <if test="postSort != null">#{postSort},</if>
+ <if test="status != null and status != ''">#{status},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <delete id="deletePostById" parameterType="Long">
+ delete from sys_post where post_id = #{postId}
+ </delete>
+
+ <delete id="deletePostByIds" parameterType="Long">
+ delete from sys_post where post_id in
+ <foreach collection="array" item="postId" open="(" separator="," close=")">
+ #{postId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysRoleDeptMapper.xml b/ruoyi-system/target/classes/mapper/system/SysRoleDeptMapper.xml
new file mode 100644
index 0000000..7c4139b
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysRoleDeptMapper.xml
@@ -0,0 +1,34 @@
+<?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.ruoyi.system.mapper.SysRoleDeptMapper">
+
+ <resultMap type="SysRoleDept" id="SysRoleDeptResult">
+ <result property="roleId" column="role_id" />
+ <result property="deptId" column="dept_id" />
+ </resultMap>
+
+ <delete id="deleteRoleDeptByRoleId" parameterType="Long">
+ delete from sys_role_dept where role_id=#{roleId}
+ </delete>
+
+ <select id="selectCountRoleDeptByDeptId" resultType="Integer">
+ select count(1) from sys_role_dept where dept_id=#{deptId}
+ </select>
+
+ <delete id="deleteRoleDept" parameterType="Long">
+ delete from sys_role_dept where role_id in
+ <foreach collection="array" item="roleId" open="(" separator="," close=")">
+ #{roleId}
+ </foreach>
+ </delete>
+
+ <insert id="batchRoleDept">
+ insert into sys_role_dept(role_id, dept_id) values
+ <foreach item="item" index="index" collection="list" separator=",">
+ (#{item.roleId},#{item.deptId})
+ </foreach>
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysRoleMapper.xml b/ruoyi-system/target/classes/mapper/system/SysRoleMapper.xml
new file mode 100644
index 0000000..52306c2
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysRoleMapper.xml
@@ -0,0 +1,152 @@
+<?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.ruoyi.system.mapper.SysRoleMapper">
+
+ <resultMap type="SysRole" id="SysRoleResult">
+ <id property="roleId" column="role_id" />
+ <result property="roleName" column="role_name" />
+ <result property="roleKey" column="role_key" />
+ <result property="roleSort" column="role_sort" />
+ <result property="dataScope" column="data_scope" />
+ <result property="menuCheckStrictly" column="menu_check_strictly" />
+ <result property="deptCheckStrictly" column="dept_check_strictly" />
+ <result property="status" column="status" />
+ <result property="delFlag" column="del_flag" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
+ </resultMap>
+
+ <sql id="selectRoleVo">
+ select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly,
+ r.status, r.del_flag, r.create_time, r.remark
+ from sys_role r
+ left join sys_user_role ur on ur.role_id = r.role_id
+ left join sys_user u on u.user_id = ur.user_id
+ left join sys_dept d on u.dept_id = d.dept_id
+ </sql>
+
+ <select id="selectRoleList" parameterType="SysRole" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ where r.del_flag = '0'
+ <if test="roleId != null and roleId != 0">
+ AND r.role_id = #{roleId}
+ </if>
+ <if test="roleName != null and roleName != ''">
+ AND r.role_name like concat('%', #{roleName}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND r.status = #{status}
+ </if>
+ <if test="roleKey != null and roleKey != ''">
+ AND r.role_key like concat('%', #{roleKey}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
+ and date_format(r.create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
+ and date_format(r.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
+ </if>
+ <!-- 数据范围过滤 -->
+ ${params.dataScope}
+ order by r.role_sort
+ </select>
+
+ <select id="selectRolePermissionByUserId" parameterType="Long" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ WHERE r.del_flag = '0' and ur.user_id = #{userId}
+ </select>
+
+ <select id="selectRoleAll" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ </select>
+
+ <select id="selectRoleListByUserId" parameterType="Long" resultType="Long">
+ select r.role_id
+ from sys_role r
+ left join sys_user_role ur on ur.role_id = r.role_id
+ left join sys_user u on u.user_id = ur.user_id
+ where u.user_id = #{userId}
+ </select>
+
+ <select id="selectRoleById" parameterType="Long" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ where r.role_id = #{roleId}
+ </select>
+
+ <select id="selectRolesByUserName" parameterType="String" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ WHERE r.del_flag = '0' and u.user_name = #{userName}
+ </select>
+
+ <select id="checkRoleNameUnique" parameterType="String" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ where r.role_name=#{roleName} and r.del_flag = '0' limit 1
+ </select>
+
+ <select id="checkRoleKeyUnique" parameterType="String" resultMap="SysRoleResult">
+ <include refid="selectRoleVo"/>
+ where r.role_key=#{roleKey} and r.del_flag = '0' limit 1
+ </select>
+
+ <insert id="insertRole" parameterType="SysRole" useGeneratedKeys="true" keyProperty="roleId">
+ insert into sys_role(
+ <if test="roleId != null and roleId != 0">role_id,</if>
+ <if test="roleName != null and roleName != ''">role_name,</if>
+ <if test="roleKey != null and roleKey != ''">role_key,</if>
+ <if test="roleSort != null">role_sort,</if>
+ <if test="dataScope != null and dataScope != ''">data_scope,</if>
+ <if test="menuCheckStrictly != null">menu_check_strictly,</if>
+ <if test="deptCheckStrictly != null">dept_check_strictly,</if>
+ <if test="status != null and status != ''">status,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ create_time
+ )values(
+ <if test="roleId != null and roleId != 0">#{roleId},</if>
+ <if test="roleName != null and roleName != ''">#{roleName},</if>
+ <if test="roleKey != null and roleKey != ''">#{roleKey},</if>
+ <if test="roleSort != null">#{roleSort},</if>
+ <if test="dataScope != null and dataScope != ''">#{dataScope},</if>
+ <if test="menuCheckStrictly != null">#{menuCheckStrictly},</if>
+ <if test="deptCheckStrictly != null">#{deptCheckStrictly},</if>
+ <if test="status != null and status != ''">#{status},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="updateRole" parameterType="SysRole">
+ update sys_role
+ <set>
+ <if test="roleName != null and roleName != ''">role_name = #{roleName},</if>
+ <if test="roleKey != null and roleKey != ''">role_key = #{roleKey},</if>
+ <if test="roleSort != null">role_sort = #{roleSort},</if>
+ <if test="dataScope != null and dataScope != ''">data_scope = #{dataScope},</if>
+ <if test="menuCheckStrictly != null">menu_check_strictly = #{menuCheckStrictly},</if>
+ <if test="deptCheckStrictly != null">dept_check_strictly = #{deptCheckStrictly},</if>
+ <if test="status != null and status != ''">status = #{status},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ update_time = sysdate()
+ </set>
+ where role_id = #{roleId}
+ </update>
+
+ <delete id="deleteRoleById" parameterType="Long">
+ update sys_role set del_flag = '2' where role_id = #{roleId}
+ </delete>
+
+ <delete id="deleteRoleByIds" parameterType="Long">
+ update sys_role set del_flag = '2' where role_id in
+ <foreach collection="array" item="roleId" open="(" separator="," close=")">
+ #{roleId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysRoleMenuMapper.xml b/ruoyi-system/target/classes/mapper/system/SysRoleMenuMapper.xml
new file mode 100644
index 0000000..cb60a85
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysRoleMenuMapper.xml
@@ -0,0 +1,34 @@
+<?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.ruoyi.system.mapper.SysRoleMenuMapper">
+
+ <resultMap type="SysRoleMenu" id="SysRoleMenuResult">
+ <result property="roleId" column="role_id" />
+ <result property="menuId" column="menu_id" />
+ </resultMap>
+
+ <select id="checkMenuExistRole" resultType="Integer">
+ select count(1) from sys_role_menu where menu_id = #{menuId}
+ </select>
+
+ <delete id="deleteRoleMenuByRoleId" parameterType="Long">
+ delete from sys_role_menu where role_id=#{roleId}
+ </delete>
+
+ <delete id="deleteRoleMenu" parameterType="Long">
+ delete from sys_role_menu where role_id in
+ <foreach collection="array" item="roleId" open="(" separator="," close=")">
+ #{roleId}
+ </foreach>
+ </delete>
+
+ <insert id="batchRoleMenu">
+ insert into sys_role_menu(role_id, menu_id) values
+ <foreach item="item" index="index" collection="list" separator=",">
+ (#{item.roleId},#{item.menuId})
+ </foreach>
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysUserMapper.xml b/ruoyi-system/target/classes/mapper/system/SysUserMapper.xml
new file mode 100644
index 0000000..b580763
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysUserMapper.xml
@@ -0,0 +1,223 @@
+<?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.ruoyi.system.mapper.SysUserMapper">
+
+ <resultMap type="SysUser" id="SysUserResult">
+ <id property="userId" column="user_id" />
+ <result property="deptId" column="dept_id" />
+ <result property="districtId" column="district_id" />
+ <result property="unit" column="unit" />
+ <result property="userName" column="user_name" />
+ <result property="nickName" column="nick_name" />
+ <result property="email" column="email" />
+ <result property="phonenumber" column="phonenumber" />
+ <result property="sex" column="sex" />
+ <result property="avatar" column="avatar" />
+ <result property="password" column="password" />
+ <result property="status" column="status" />
+ <result property="delFlag" column="del_flag" />
+ <result property="loginIp" column="login_ip" />
+ <result property="loginDate" column="login_date" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
+ <association property="dept" javaType="SysDept" resultMap="deptResult" />
+ <collection property="roles" javaType="java.util.List" resultMap="RoleResult" />
+ </resultMap>
+
+ <resultMap id="deptResult" type="SysDept">
+ <id property="deptId" column="dept_id" />
+ <result property="parentId" column="parent_id" />
+ <result property="deptName" column="dept_name" />
+ <result property="ancestors" column="ancestors" />
+ <result property="orderNum" column="order_num" />
+ <result property="leader" column="leader" />
+ <result property="status" column="dept_status" />
+ </resultMap>
+
+ <resultMap id="RoleResult" type="SysRole">
+ <id property="roleId" column="role_id" />
+ <result property="roleName" column="role_name" />
+ <result property="roleKey" column="role_key" />
+ <result property="roleSort" column="role_sort" />
+ <result property="dataScope" column="data_scope" />
+ <result property="status" column="role_status" />
+ </resultMap>
+
+ <sql id="selectUserVo">
+ select u.user_id, u.dept_id, u.district_id,u.unit,u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
+ d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
+ r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
+ from sys_user u
+ left join sys_dept d on u.dept_id = d.dept_id
+ left join sys_user_role ur on u.user_id = ur.user_id
+ left join sys_role r on r.role_id = ur.role_id
+ </sql>
+
+ <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
+ select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
+ left join sys_dept d on u.dept_id = d.dept_id
+ where u.del_flag = '0'
+ <if test="userId != null and userId != 0">
+ AND u.user_id = #{userId}
+ </if>
+ <if test="userName != null and userName != ''">
+ AND u.user_name like concat('%', #{userName}, '%')
+ </if>
+ <if test="status != null and status != ''">
+ AND u.status = #{status}
+ </if>
+ <if test="phonenumber != null and phonenumber != ''">
+ AND u.phonenumber like concat('%', #{phonenumber}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
+ AND date_format(u.create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
+ AND date_format(u.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
+ </if>
+ <if test="deptId != null and deptId != 0">
+ AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))
+ </if>
+ <!-- 数据范围过滤 -->
+ ${params.dataScope}
+ </select>
+
+ <select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
+ select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
+ from sys_user u
+ left join sys_dept d on u.dept_id = d.dept_id
+ left join sys_user_role ur on u.user_id = ur.user_id
+ left join sys_role r on r.role_id = ur.role_id
+ where u.del_flag = '0' and r.role_id = #{roleId}
+ <if test="userName != null and userName != ''">
+ AND u.user_name like concat('%', #{userName}, '%')
+ </if>
+ <if test="phonenumber != null and phonenumber != ''">
+ AND u.phonenumber like concat('%', #{phonenumber}, '%')
+ </if>
+ <!-- 数据范围过滤 -->
+ ${params.dataScope}
+ </select>
+
+ <select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
+ select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
+ from sys_user u
+ left join sys_dept d on u.dept_id = d.dept_id
+ left join sys_user_role ur on u.user_id = ur.user_id
+ left join sys_role r on r.role_id = ur.role_id
+ where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)
+ and u.user_id not in (select u.user_id from sys_user u inner join sys_user_role ur on u.user_id = ur.user_id and ur.role_id = #{roleId})
+ <if test="userName != null and userName != ''">
+ AND u.user_name like concat('%', #{userName}, '%')
+ </if>
+ <if test="phonenumber != null and phonenumber != ''">
+ AND u.phonenumber like concat('%', #{phonenumber}, '%')
+ </if>
+ <!-- 数据范围过滤 -->
+ ${params.dataScope}
+ </select>
+
+ <select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
+ <include refid="selectUserVo"/>
+ where u.user_name = #{userName} and u.del_flag = '0'
+ </select>
+
+ <select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
+ <include refid="selectUserVo"/>
+ where u.user_id = #{userId}
+ </select>
+
+ <select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
+ select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1
+ </select>
+
+ <select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">
+ select user_id, phonenumber from sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1
+ </select>
+
+ <select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
+ select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
+ </select>
+
+ <insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
+ insert into sys_user(
+ <if test="userId != null and userId != 0">user_id,</if>
+ <if test="deptId != null and deptId != 0">dept_id,</if>
+ <if test="userName != null and userName != ''">user_name,</if>
+ <if test="nickName != null and nickName != ''">nick_name,</if>
+ <if test="email != null and email != ''">email,</if>
+ <if test="avatar != null and avatar != ''">avatar,</if>
+ <if test="phonenumber != null and phonenumber != ''">phonenumber,</if>
+ <if test="sex != null and sex != ''">sex,</if>
+ <if test="password != null and password != ''">password,</if>
+ <if test="status != null and status != ''">status,</if>
+ <if test="createBy != null and createBy != ''">create_by,</if>
+ <if test="remark != null and remark != ''">remark,</if>
+ create_time
+ )values(
+ <if test="userId != null and userId != ''">#{userId},</if>
+ <if test="deptId != null and deptId != ''">#{deptId},</if>
+ <if test="userName != null and userName != ''">#{userName},</if>
+ <if test="nickName != null and nickName != ''">#{nickName},</if>
+ <if test="email != null and email != ''">#{email},</if>
+ <if test="avatar != null and avatar != ''">#{avatar},</if>
+ <if test="phonenumber != null and phonenumber != ''">#{phonenumber},</if>
+ <if test="sex != null and sex != ''">#{sex},</if>
+ <if test="password != null and password != ''">#{password},</if>
+ <if test="status != null and status != ''">#{status},</if>
+ <if test="createBy != null and createBy != ''">#{createBy},</if>
+ <if test="remark != null and remark != ''">#{remark},</if>
+ sysdate()
+ )
+ </insert>
+
+ <update id="updateUser" parameterType="SysUser">
+ update sys_user
+ <set>
+ <if test="deptId != null and deptId != 0">dept_id = #{deptId},</if>
+ <if test="userName != null and userName != ''">user_name = #{userName},</if>
+ <if test="nickName != null and nickName != ''">nick_name = #{nickName},</if>
+ <if test="email != null ">email = #{email},</if>
+ <if test="phonenumber != null ">phonenumber = #{phonenumber},</if>
+ <if test="sex != null and sex != ''">sex = #{sex},</if>
+ <if test="avatar != null and avatar != ''">avatar = #{avatar},</if>
+ <if test="password != null and password != ''">password = #{password},</if>
+ <if test="status != null and status != ''">status = #{status},</if>
+ <if test="loginIp != null and loginIp != ''">login_ip = #{loginIp},</if>
+ <if test="loginDate != null">login_date = #{loginDate},</if>
+ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ update_time = sysdate()
+ </set>
+ where user_id = #{userId}
+ </update>
+
+ <update id="updateUserStatus" parameterType="SysUser">
+ update sys_user set status = #{status} where user_id = #{userId}
+ </update>
+
+ <update id="updateUserAvatar" parameterType="SysUser">
+ update sys_user set avatar = #{avatar} where user_name = #{userName}
+ </update>
+
+ <update id="resetUserPwd" parameterType="SysUser">
+ update sys_user set password = #{password} where user_name = #{userName}
+ </update>
+
+ <delete id="deleteUserById" parameterType="Long">
+ update sys_user set del_flag = '2' where user_id = #{userId}
+ </delete>
+
+ <delete id="deleteUserByIds" parameterType="Long">
+ update sys_user set del_flag = '2' where user_id in
+ <foreach collection="array" item="userId" open="(" separator="," close=")">
+ #{userId}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysUserPostMapper.xml b/ruoyi-system/target/classes/mapper/system/SysUserPostMapper.xml
new file mode 100644
index 0000000..2b90bc4
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysUserPostMapper.xml
@@ -0,0 +1,34 @@
+<?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.ruoyi.system.mapper.SysUserPostMapper">
+
+ <resultMap type="SysUserPost" id="SysUserPostResult">
+ <result property="userId" column="user_id" />
+ <result property="postId" column="post_id" />
+ </resultMap>
+
+ <delete id="deleteUserPostByUserId" parameterType="Long">
+ delete from sys_user_post where user_id=#{userId}
+ </delete>
+
+ <select id="countUserPostById" resultType="Integer">
+ select count(1) from sys_user_post where post_id=#{postId}
+ </select>
+
+ <delete id="deleteUserPost" parameterType="Long">
+ delete from sys_user_post where user_id in
+ <foreach collection="array" item="userId" open="(" separator="," close=")">
+ #{userId}
+ </foreach>
+ </delete>
+
+ <insert id="batchUserPost">
+ insert into sys_user_post(user_id, post_id) values
+ <foreach item="item" index="index" collection="list" separator=",">
+ (#{item.userId},#{item.postId})
+ </foreach>
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/classes/mapper/system/SysUserRoleMapper.xml b/ruoyi-system/target/classes/mapper/system/SysUserRoleMapper.xml
new file mode 100644
index 0000000..dd72689
--- /dev/null
+++ b/ruoyi-system/target/classes/mapper/system/SysUserRoleMapper.xml
@@ -0,0 +1,44 @@
+<?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.ruoyi.system.mapper.SysUserRoleMapper">
+
+ <resultMap type="SysUserRole" id="SysUserRoleResult">
+ <result property="userId" column="user_id" />
+ <result property="roleId" column="role_id" />
+ </resultMap>
+
+ <delete id="deleteUserRoleByUserId" parameterType="Long">
+ delete from sys_user_role where user_id=#{userId}
+ </delete>
+
+ <select id="countUserRoleByRoleId" resultType="Integer">
+ select count(1) from sys_user_role where role_id=#{roleId}
+ </select>
+
+ <delete id="deleteUserRole" parameterType="Long">
+ delete from sys_user_role where user_id in
+ <foreach collection="array" item="userId" open="(" separator="," close=")">
+ #{userId}
+ </foreach>
+ </delete>
+
+ <insert id="batchUserRole">
+ insert into sys_user_role(user_id, role_id) values
+ <foreach item="item" index="index" collection="list" separator=",">
+ (#{item.userId},#{item.roleId})
+ </foreach>
+ </insert>
+
+ <delete id="deleteUserRoleInfo" parameterType="SysUserRole">
+ delete from sys_user_role where user_id=#{userId} and role_id=#{roleId}
+ </delete>
+
+ <delete id="deleteUserRoleInfos">
+ delete from sys_user_role where role_id=#{roleId} and user_id in
+ <foreach collection="userIds" item="userId" open="(" separator="," close=")">
+ #{userId}
+ </foreach>
+ </delete>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/target/maven-archiver/pom.properties b/ruoyi-system/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..f9ede82
--- /dev/null
+++ b/ruoyi-system/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=ruoyi-system
+groupId=com.ruoyi
+version=3.8.6
diff --git a/ruoyi-system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/ruoyi-system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..f1e1db0
--- /dev/null
+++ b/ruoyi-system/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,66 @@
+com\ruoyi\system\service\SysOperateTypeService.class
+com\ruoyi\system\mapper\SysOperLogMapper.class
+com\ruoyi\system\domain\SysUserRole.class
+com\ruoyi\system\mapper\SysRoleMapper.class
+com\ruoyi\system\domain\req\OperateTypeAddReqDTO.class
+com\ruoyi\system\service\ISysDeptService.class
+com\ruoyi\system\domain\bo\SysOperateTypeWholeNameBO.class
+com\ruoyi\system\service\ISysDictTypeService.class
+com\ruoyi\system\domain\SysOperLog.class
+com\ruoyi\system\domain\SysRoleDept.class
+com\ruoyi\system\mapper\SysDistrictMapper.class
+com\ruoyi\system\mapper\SysConfigMapper.class
+com\ruoyi\system\service\impl\SysOperateTypeServiceImpl$1.class
+com\ruoyi\system\domain\SysUserPost.class
+com\ruoyi\system\service\impl\SysDictDataServiceImpl.class
+com\ruoyi\system\domain\SysDistrict.class
+com\ruoyi\system\domain\SysRoleMenu.class
+com\ruoyi\system\service\ISysConfigService.class
+com\ruoyi\system\service\ISysUserService.class
+com\ruoyi\system\domain\vo\MetaVo.class
+com\ruoyi\system\mapper\SysNoticeMapper.class
+com\ruoyi\system\domain\SysConfig.class
+com\ruoyi\system\service\ISysUserOnlineService.class
+com\ruoyi\system\service\ISysPostService.class
+com\ruoyi\system\domain\SysCache.class
+com\ruoyi\system\mapper\SysPostMapper.class
+com\ruoyi\system\service\impl\SysMenuServiceImpl.class
+com\ruoyi\system\service\ISysMenuService.class
+com\ruoyi\system\domain\SysPost.class
+com\ruoyi\system\service\impl\SysUserServiceImpl.class
+com\ruoyi\system\mapper\SysDictTypeMapper.class
+com\ruoyi\system\service\ISysLogininforService.class
+com\ruoyi\system\domain\SysLogininfor.class
+com\ruoyi\system\service\impl\SysConfigServiceImpl.class
+com\ruoyi\system\service\impl\SysLogininforServiceImpl.class
+com\ruoyi\system\mapper\SysDeptMapper.class
+com\ruoyi\system\domain\resp\DistrictTreeRespDTO.class
+com\ruoyi\system\mapper\SysUserPostMapper.class
+com\ruoyi\system\domain\SysUserOnline.class
+com\ruoyi\system\mapper\SysOperateTypeMapper.class
+com\ruoyi\system\mapper\SysUserRoleMapper.class
+com\ruoyi\system\service\impl\SysRoleServiceImpl.class
+com\ruoyi\system\service\impl\SysDictTypeServiceImpl.class
+com\ruoyi\system\domain\vo\RouterVo.class
+com\ruoyi\system\service\ISysNoticeService.class
+com\ruoyi\system\mapper\SysUserMapper.class
+com\ruoyi\system\mapper\SysLogininforMapper.class
+com\ruoyi\system\service\impl\SysOperLogServiceImpl.class
+com\ruoyi\system\service\SysDistrictService.class
+com\ruoyi\system\service\ISysDictDataService.class
+com\ruoyi\system\domain\req\OperateTypeEditReqDTO.class
+com\ruoyi\system\mapper\SysMenuMapper.class
+com\ruoyi\system\service\ISysRoleService.class
+com\ruoyi\system\service\impl\SysNoticeServiceImpl.class
+com\ruoyi\system\mapper\SysDictDataMapper.class
+com\ruoyi\system\service\ISysOperLogService.class
+com\ruoyi\system\service\impl\SysUserOnlineServiceImpl.class
+com\ruoyi\system\service\impl\SysDistrictServiceImpl.class
+com\ruoyi\system\domain\req\OperateTypeListReqDTO.class
+com\ruoyi\system\domain\SysOperateType.class
+com\ruoyi\system\service\impl\SysDeptServiceImpl.class
+com\ruoyi\system\service\impl\SysOperateTypeServiceImpl.class
+com\ruoyi\system\service\impl\SysPostServiceImpl.class
+com\ruoyi\system\mapper\SysRoleMenuMapper.class
+com\ruoyi\system\domain\SysNotice.class
+com\ruoyi\system\mapper\SysRoleDeptMapper.class
diff --git a/ruoyi-system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/ruoyi-system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..5db8ab9
--- /dev/null
+++ b/ruoyi-system/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,65 @@
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysDistrict.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysDistrictMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysDistrictServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysMenuServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysLogininforServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysMenuMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysRoleServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysPost.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysNoticeMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysCache.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysUserOnline.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysPostMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysOperateType.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysLogininfor.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysLogininforMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysPostServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\ISysDeptService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysDeptServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysUserRole.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\req\OperateTypeEditReqDTO.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysUserOnlineServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysUserRoleMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysRoleDeptMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysUserPost.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\ISysMenuService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysDictDataMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\vo\MetaVo.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysUserPostMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysRoleDept.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\ISysUserOnlineService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\ISysPostService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysDeptMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysNoticeServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\req\OperateTypeAddReqDTO.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\vo\RouterVo.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysRoleMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysRoleMenuMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysUserMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\ISysLogininforService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysOperateTypeServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysOperateTypeMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\ISysRoleService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\SysOperateTypeService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysUserServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysOperLogServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\ISysDictDataService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysDictDataServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\req\OperateTypeListReqDTO.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\resp\DistrictTreeRespDTO.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\ISysOperLogService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\ISysUserService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysOperLogMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\ISysConfigService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\SysDistrictService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysDictTypeServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysConfig.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysConfigMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\mapper\SysDictTypeMapper.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysRoleMenu.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysOperLog.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\SysConfigServiceImpl.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\ISysDictTypeService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\bo\SysOperateTypeWholeNameBO.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\service\ISysNoticeService.java
+F:\kzy\codes\java\swspkmas\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysNotice.java
--
Gitblit v1.9.2