From 3e2159e45e12b2b8af058b68eafeaf082cf3fe85 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期四, 15 九月 2022 09:30:31 +0800
Subject: [PATCH] 2022.9.15 1. 根据微信小程序前端需求,添加各对应后台逻辑

---
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/CstQuestionVo.java                     |  539 ++++
 src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/FileSaveType.kt                   |   20 
 src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/LedgerCheckStatus.kt              |    2 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/CommitmentVo.kt                        |   10 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/LedgerServiceImpl.kt         |   64 
 src/main/kotlin/cn/flightfeather/supervision/common/pdf/GeneratePdfUtil.kt                        |  100 
 src/main/resources/mapper/MgtItemMapper.xml                                                       |   54 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/CommitmentService.kt              |    2 
 src/main/resources/templates/commitment-construction.ftl                                          |    8 
 src/main/kotlin/cn/flightfeather/supervision/domain/entity/MgtFile.java                           |  988 +++++++
 src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/EnElementSubType.kt               |   79 
 src/main/resources/application-pro.yml                                                            |    4 
 src/main/kotlin/cn/flightfeather/supervision/domain/entity/Commitment.java                        |   28 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/LawServiceImpl.kt            |    3 
 src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/EnElementType.kt                  |   45 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EnforceCaseVo.java                     |  840 ++++++
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/OnLineQuestionServiceImpl.kt |  542 ++++
 src/main/kotlin/cn/flightfeather/supervision/websocket/Processor.kt                               |    4 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultItemVo.kt                 |   29 
 src/main/kotlin/cn/flightfeather/supervision/common/score/ScoreItem.kt                            |    4 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/UserinfoServiceImpl.kt       |   53 
 src/main/resources/application-dev.yml                                                            |    2 
 src/main/resources/templates/commitment-vehicle.ftl                                               |   24 
 src/main/kotlin/cn/flightfeather/supervision/domain/mapper/CstQuestionMapper.kt                   |    8 
 src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/ConsultFileType.kt                |   37 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/LoginRequestVo.kt                      |   10 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/MgtFileVo.java                         |  946 +++++++
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultFileVo.kt                 |   21 
 src/main/resources/mapper/SettingAnswerMapper.xml                                                 |   33 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/web/CommitmentController.kt               |   19 
 src/main/kotlin/cn/flightfeather/supervision/timingtask/PushFume.kt                               |    3 
 src/main/kotlin/cn/flightfeather/supervision/common/score/AutoScore.kt                            |    4 
 src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/IndustryType.kt                   |   25 
 src/main/kotlin/cn/flightfeather/supervision/domain/entity/SettingAnswer.java                     |  350 ++
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserinfoService.kt                |    2 
 src/main/resources/font/msyhbd.ttf                                                                |    0 
 src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/EnforceCaseType.kt                |   41 
 src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/ConsultResultType.kt              |   11 
 src/main/resources/templates/commitment-restaurant.ftl                                            |   99 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/BaseResponse.kt                        |    5 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt     |   76 
 src/main/resources/font/msyh.ttf                                                                  |    0 
 src/test/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImplTest.kt |    9 
 src/test/kotlin/cn/flightfeather/supervision/timingtask/PushFumeTest.kt                           |    6 
 pom.xml                                                                                           |   29 
 src/main/kotlin/cn/flightfeather/supervision/domain/entity/EnforceCase.java                       |  878 ++++++
 src/main/resources/generator/generatorConfig.xml                                                  |   15 
 src/main/resources/mapper/MgtFileMapper.xml                                                       |   74 
 src/main/resources/mapper/CommitmentMapper.xml                                                    |    3 
 src/main/kotlin/cn/flightfeather/supervision/domain/mapper/EnforceCaseMapper.kt                   |    8 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultVo.kt                     |   32 
 src/main/kotlin/cn/flightfeather/supervision/common/net/WXHttpService.kt                          |   23 
 src/main/kotlin/cn/flightfeather/supervision/domain/mapper/SettingAnswerMapper.kt                 |    8 
 src/main/kotlin/cn/flightfeather/supervision/domain/mapper/MgtItemMapper.kt                       |    8 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/OnLineQuestionService.kt          |   29 
 src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/ManageLevelType.kt                |   26 
 src/main/kotlin/cn/flightfeather/supervision/domain/mapper/MgtFileMapper.kt                       |    8 
 src/main/resources/mapper/EnforceCaseMapper.xml                                                   |   69 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/GradeDetailVo.kt                       |    2 
 src/main/resources/mapper/CstQuestionMapper.xml                                                   |   42 
 src/main/kotlin/cn/flightfeather/supervision/infrastructure/utils/DateUtil.kt                     |    2 
 src/main/kotlin/cn/flightfeather/supervision/domain/entity/MgtItem.java                           |  566 ++++
 src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserinfoController.kt                 |    6 
 /dev/null                                                                                         |    0 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultCaseVo.kt                 |   26 
 src/main/kotlin/cn/flightfeather/supervision/timingtask/FetchVOC.kt                               |    6 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/DeviceServiceImpl.kt         |   14 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/LawsRegulationsCondition.kt            |    2 
 src/main/kotlin/cn/flightfeather/supervision/domain/entity/CstQuestion.java                       |  556 ++++
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/EvaluationServiceImpl.kt     |   38 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultQAVo.kt                   |   13 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/web/ConsultationController.kt             |   91 
 src/main/resources/application.yml                                                                |   14 
 src/main/resources/font/simsun.ttc                                                                |    0 
 74 files changed, 7,517 insertions(+), 220 deletions(-)

diff --git a/pom.xml b/pom.xml
index 0ea86a3..1f4a5c5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,8 @@
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
         <version>2.3.3.RELEASE</version>
-        <relativePath/> <!-- lookup parent from repository -->
+        <relativePath/>
+        <!-- lookup parent from repository -->
     </parent>
 
     <properties>
@@ -312,17 +313,23 @@
 
         <!-- pdf:start -->
         <!-- https://mvnrepository.com/artifact/com.itextpdf/itext7-core -->
-        <dependency>
-            <groupId>com.itextpdf</groupId>
-            <artifactId>itext7-core</artifactId>
-            <version>${itext.version}</version>
-            <type>pom</type>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>com.itextpdf</groupId>-->
+<!--            <artifactId>itext7-core</artifactId>-->
+<!--            <version>${itext.version}</version>-->
+<!--            <type>pom</type>-->
+<!--        </dependency>-->
         <!-- https://mvnrepository.com/artifact/com.itextpdf/html2pdf -->
         <dependency>
             <groupId>com.itextpdf</groupId>
             <artifactId>html2pdf</artifactId>
             <version>4.0.2</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
+        <dependency>
+            <groupId>org.apache.pdfbox</groupId>
+            <artifactId>pdfbox</artifactId>
+            <version>2.0.26</version>
         </dependency>
         <!-- https://mvnrepository.com/artifact/com.itextpdf/font-asian -->
         <dependency>
@@ -450,12 +457,8 @@
 
         <resources>
             <resource>
-                <filtering>true</filtering>
                 <directory>src/main/resources</directory>
-<!--                <includes>-->
-<!--                    <include>*.xml</include>-->
-<!--                    <include>*.yml</include>-->
-<!--                </includes>-->
+                <filtering>true</filtering>
             </resource>
         </resources>
     </build>
@@ -485,7 +488,7 @@
         <repository>
             <id>alimaven</id>
             <name>aliyun maven</name>
-            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <url>https://maven.aliyun.com/repository/public</url>
         </repository>
         <repository>
             <id>spring-snapshots</id>
diff --git a/src/main/kotlin/cn/flightfeather/supervision/common/net/WXHttpService.kt b/src/main/kotlin/cn/flightfeather/supervision/common/net/WXHttpService.kt
new file mode 100644
index 0000000..bb20893
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/common/net/WXHttpService.kt
@@ -0,0 +1,23 @@
+package cn.flightfeather.supervision.common.net
+
+/**
+ * @author riku
+ * Date: 2020/10/15
+ * 寰俊鏈嶅姟鎺ュ彛
+ */
+object WXHttpService {
+
+    private const val APP_ID=""
+    private const val SECRET = ""
+    private val httpMethod = HttpMethod("api.weixin.qq.com", 443, true)
+
+    /**
+     * 寰俊鐧诲綍鍑瘉鏍¢獙
+     */
+    fun code2Session(code: String): HttpMethod.MyResponse =
+        httpMethod.get(
+            "/sns/jscode2session", listOf(
+                Pair("appid", APP_ID), Pair("secret", SECRET), Pair("js_code", code), Pair("grant_type", "authorization_code")
+            )
+        )
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/common/pdf/GeneratePdfUtil.kt b/src/main/kotlin/cn/flightfeather/supervision/common/pdf/GeneratePdfUtil.kt
index 490b7b3..c0ddec2 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/common/pdf/GeneratePdfUtil.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/common/pdf/GeneratePdfUtil.kt
@@ -2,57 +2,78 @@
 
 import com.itextpdf.html2pdf.ConverterProperties
 import com.itextpdf.html2pdf.HtmlConverter
+import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider
+import com.itextpdf.io.font.PdfEncodings
+import com.itextpdf.kernel.font.PdfFontFactory
 import com.itextpdf.layout.font.FontProvider
 import freemarker.template.Configuration
+import org.apache.pdfbox.pdmodel.PDDocument
+import org.apache.pdfbox.rendering.PDFRenderer
 import java.io.*
+import javax.imageio.ImageIO
 import javax.servlet.http.HttpServletResponse
 
+
 /**
- * @Description: 鐢熸垚PDF鍚堝悓宸ュ叿绫�
+ * @Description: 鐢熸垚PDF宸ュ叿绫�
  */
 object GeneratePdfUtil {
-    private const val TEMPORARY_CONTRACT_HTML = "src/main/resources/templates/temporary.html"
+    private val TEMPORARY_CONTRACT_HTML = (Thread.currentThread().contextClassLoader?.getResource("/")?.path ?: "src/main/resources/") + "templates/temporary.html"
 
-    private const val SIMSUN_FILE = "src/main/resources/font/simsunb.ttf"
+    private val SIMSUN_FILE = (Thread.currentThread().contextClassLoader?.getResource("/")?.path ?: "src/main/resources/") + "font/"
+
+    private var cfg: Configuration? = null
+
     @Throws(Exception::class)
-    fun generateContract(param: DynamicParam): String {
+    fun generateContract(param: DynamicParam): List<String> {
         // 鐢熸垚html鍚堝悓
         generateHTML(param.templatePath, param.templateName, param.param)
         // 鏍规嵁html鍚堝悓鐢熸垚pdf鍚堝悓
         generatePDF(param.outPath + param.outName)
+        // 鏍规嵁pdf鐢熸垚鍥剧墖
+        val picPaths = generatePic(param.outPath + param.outName)
         // 鍒犻櫎涓存椂html鏍煎紡鍚堝悓
         removeFile(TEMPORARY_CONTRACT_HTML)
-        return param.outPath + param.outName
+        return picPaths
     }
 
     /**
-     * @Description 鐢熸垚html鏍煎紡鍚堝悓
+     * @Description 鐢熸垚html鏍煎紡
      */
     @Throws(Exception::class)
     private fun generateHTML(templatePath: String, templateName: String, paramMap: Map<String, Any>) {
-        val cfg = Configuration()
-        cfg.defaultEncoding = "UTF-8"
-        /**
-         * 1.setClassForTemplateLoading(this.getClass(), "/HttpWeb");
-         * 鍩轰簬绫昏矾寰勶紝HttpWeb鍖呬笅鐨刦ramemaker.ftl鏂囦欢
-         * 2.setDirectoryForTemplateLoading(new File("/template"));
-         * 鍩轰簬鏂囦欢绯荤粺,template鐩綍涓嬬殑鏂囦欢
-         * 3.setServletContextForTemplateLoading(request.getSession().getServletContext(), "/template");
-         * 鍩轰簬Servlet Context锛屾寚鐨勬槸鍩轰簬WebRoot涓嬬殑template涓嬬殑framemaker.ftl鏂囦欢
-         */
-        cfg.setDirectoryForTemplateLoading(File(templatePath))
+        if (cfg == null) {
+            cfg = Configuration(Configuration.VERSION_2_3_31)
+            cfg?.defaultEncoding = "UTF-8"
+            /**
+             * 1.setClassForTemplateLoading(this.getClass(), "/HttpWeb");
+             * 鍩轰簬绫昏矾寰勶紝HttpWeb鍖呬笅鐨刦ramemaker.ftl鏂囦欢
+             * 2.setDirectoryForTemplateLoading(new File("/template"));
+             * 鍩轰簬鏂囦欢绯荤粺,template鐩綍涓嬬殑鏂囦欢
+             * 3.setServletContextForTemplateLoading(request.getSession().getServletContext(), "/template");
+             * 鍩轰簬Servlet Context锛屾寚鐨勬槸鍩轰簬WebRoot涓嬬殑template涓嬬殑framemaker.ftl鏂囦欢
+             */
+            val file = File(templatePath)
+            if (!file.exists()) {
+                file.mkdirs()
+            }
+            cfg?.setDirectoryForTemplateLoading(file)
+        }
 
         // templateName.ftl涓鸿瑁呰浇鐨勬ā鏉�
-        val template = cfg.getTemplate(templateName)
+        val template = cfg?.getTemplate(templateName)
         val outHtmFile = File(TEMPORARY_CONTRACT_HTML)
-        val out: Writer = BufferedWriter(OutputStreamWriter(FileOutputStream(outHtmFile)))
+        val out: Writer = BufferedWriter(OutputStreamWriter(FileOutputStream(outHtmFile), "utf-8"))
         // 灏嗗弬鏁拌緭鍑哄埌妯$増锛屽苟鎿嶄綔鍒癏TML涓�
-        template.process(paramMap, out)
+//        val env = template?.createProcessingEnvironment(paramMap, out)
+//        env?.outputEncoding = "utf-8"
+//        env?.process()
+        template?.process(paramMap, out)
         out.close()
     }
 
     /**
-     * @Description 鏍规嵁html鐢熸垚pdf鏍煎紡鍚堝悓
+     * @Description 鏍规嵁html鐢熸垚pdf
      */
     @Throws(Exception::class)
     private fun generatePDF(pdfUrl: String) {
@@ -73,15 +94,46 @@
 //        renderer.createPDF(os)
 //        os.close()
         val p = ConverterProperties()
+        println("------------------------------>>>>>>>${SIMSUN_FILE}")
+//        p.charset = "UTF-8"
         p.fontProvider = FontProvider().apply {
-//            this.addFont(SIMSUN_FILE)
-            this.addSystemFonts()
-//            this.addDirectory("src/main/resources/font/")
+//            addStandardPdfFonts()
+//            addDirectory(SIMSUN_FILE)
+            addSystemFonts()
         }
         HtmlConverter.convertToPdf(htmFile, pdfFile, p)
     }
 
     /**
+     * @Description 鏍规嵁pdf鐢熸垚鍥剧墖
+     */
+    @Throws(Exception::class)
+    private fun generatePic(pdfUrl: String): List<String> {
+        val picPaths = mutableListOf<String>()
+
+        val pdfFile = File(pdfUrl)
+        if (!pdfFile.exists()) {
+            throw FileNotFoundException("$pdfUrl 鏂囦欢涓嶅瓨鍦�")
+        }
+        val doc = PDDocument.load(pdfFile)
+        val renderer = PDFRenderer(doc)
+        val pageCount = doc.numberOfPages
+        for (i in 0 until pageCount) {
+            val outputPath = pdfUrl.replace(".pdf", "(${i}).jpg");
+            val outputFile = File(outputPath)
+            picPaths.add(outputPath)
+            // dpi锛屽浘鐗囧儚绱犵偣锛宒pi瓒婇珮鍥剧墖浣撶Н瓒婂ぇ锛�216寰堟竻鏅帮紝105浣撶Н绋冲畾
+            val image = renderer.renderImageWithDPI(i, 216f)
+            // 鏍煎紡涓篔PG
+            ImageIO.write(image, "jpg", outputFile)
+        }
+
+        doc.close()
+
+        return picPaths
+    }
+
+    /**
      * @Description 绉婚櫎鏂囦欢
      */
     private fun removeFile(fileUrl: String) {
diff --git a/src/main/kotlin/cn/flightfeather/supervision/common/score/AutoScore.kt b/src/main/kotlin/cn/flightfeather/supervision/common/score/AutoScore.kt
index 0cd255f..93e80a8 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/common/score/AutoScore.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/common/score/AutoScore.kt
@@ -94,7 +94,7 @@
     }
 
     fun go(_year: Int? = null, _month: Int? = null) {
-        val fileName = "${SCENE_TYPE.des}鑷姩璇勫垎-${DateUtil().DateToString(Date(), "yyyy-MM-ddhhmmss")}.xls"
+        val fileName = "${SCENE_TYPE.des}鑷姩璇勫垎-${DateUtil.DateToString(Date(), "yyyy-MM-ddhhmmss")}.xls"
         val filePath = "E:\\宸ヤ綔\\寮�鍙慭\椋炵窘鐜app\\鑷姩璇勫垎\\${SCENE_TYPE.des}\\$fileName"
         val out = FileOutputStream(File(filePath))
 
@@ -147,7 +147,7 @@
         val now = LocalDate.now()
         val year = _year ?: now.year
         val month = _month ?: now.monthValue
-        val sMonth = DateUtil().getStartMonthByPeriod(month, 3) ?: 1
+        val sMonth = DateUtil.getStartMonthByPeriod(month, 3) ?: 1
         val eMonth = sMonth + 2
         val period = "${year}/$sMonth-$eMonth"
 
diff --git a/src/main/kotlin/cn/flightfeather/supervision/common/score/ScoreItem.kt b/src/main/kotlin/cn/flightfeather/supervision/common/score/ScoreItem.kt
index 3d8a0f0..d3804c1 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/common/score/ScoreItem.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/common/score/ScoreItem.kt
@@ -23,11 +23,9 @@
 
     var eMonth by Delegates.notNull<Int>()
 
-    val dateUtil = DateUtil()
-
     fun execute(info: Info): Pair<Int, Int> {
         this.info = info
-        sMonth = dateUtil.getStartMonthByPeriod(info.month, 3) ?: 1
+        sMonth = DateUtil.getStartMonthByPeriod(info.month, 3) ?: 1
         eMonth = sMonth + 2
         return calScore()
     }
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/entity/Commitment.java b/src/main/kotlin/cn/flightfeather/supervision/domain/entity/Commitment.java
index 4c8ec30..8cc003f 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/domain/entity/Commitment.java
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/entity/Commitment.java
@@ -2,8 +2,10 @@
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 
+import javax.persistence.Column;
+import javax.persistence.Id;
+import javax.persistence.Table;
 import java.util.Date;
-import javax.persistence.*;
 
 @JsonInclude(JsonInclude.Include.NON_NULL)
 @Table(name = "ea_t_commitment")
@@ -23,6 +25,12 @@
      */
     @Column(name = "CM_Url")
     private String cmUrl;
+
+    /**
+     * 鎵胯涔df璺緞
+     */
+    @Column(name = "CM_Pdf_Url")
+    private String cmPdfUrl;
 
     /**
      * 鍒涘缓鏃堕棿
@@ -63,6 +71,24 @@
     }
 
     /**
+     * 鑾峰彇鎵胯涔df璺緞
+     *
+     * @return CM_PDF_Url - 鎵胯涔df璺緞
+     */
+    public String getCmPdfUrl() {
+        return cmPdfUrl;
+    }
+
+    /**
+     * 璁剧疆鎵胯涔df璺緞
+     *
+     * @param cmPdfUrl 鎵胯涔df璺緞
+     */
+    public void setCmPdfUrl(String cmPdfUrl) {
+        this.cmPdfUrl = cmPdfUrl;
+    }
+
+    /**
      * 鑾峰彇鎵胯涔﹁矾寰�
      *
      * @return CM_Url - 鎵胯涔﹁矾寰�
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/entity/CstQuestion.java b/src/main/kotlin/cn/flightfeather/supervision/domain/entity/CstQuestion.java
new file mode 100644
index 0000000..c807531
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/entity/CstQuestion.java
@@ -0,0 +1,556 @@
+package cn.flightfeather.supervision.domain.entity;
+
+import java.util.Date;
+import javax.persistence.*;
+
+@Table(name = "epk_t_cstquestion")
+public class CstQuestion {
+    /**
+     * 闂鍞竴鏍囪瘑
+     */
+    @Id
+    @Column(name = "CQ_GUID")
+    private String cqGuid;
+
+    /**
+     * 闂
+     */
+    @Column(name = "CQ_Content")
+    private String cqContent;
+
+    /**
+     * 闂绫诲埆
+     */
+    @Column(name = "CQ_Kind")
+    private Byte cqKind;
+
+    /**
+     * 闂灏忕被
+     */
+    @Column(name = "CQ_Subkind")
+    private Byte cqSubkind;
+
+    /**
+     * 闂鍏抽敭瀛�
+     */
+    @Column(name = "CQ_Keywords")
+    private String cqKeywords;
+
+    /**
+     * 鏄惁娑夊強琛屾斂澶勭綒
+     */
+    @Column(name = "CQ_Is_Punish")
+    private boolean cqIsPunish;
+
+    /**
+     * 鏄惁娑夊強鍒戜簨璐d换
+     */
+    @Column(name = "CQ_Is_Illegal")
+    private boolean cqIsIllegal;
+
+    /**
+     * 鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     */
+    @Column(name = "CQ_Is_Supervise")
+    private boolean cqIsSupervise;
+
+    /**
+     * 鏄惁娑夊強鐜繚绠$悊鐑偣
+     */
+    @Column(name = "CQ_Is_Shotspot")
+    private boolean cqIsShotspot;
+
+    /**
+     * 闂閫傜敤鍦烘櫙
+     */
+    @Column(name = "CQ_Scenes")
+    private String cqScenes;
+
+    /**
+     * 鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     */
+    @Column(name = "CQ_Is_Associated")
+    private boolean cqIsAssociated;
+
+    /**
+     * 鏉$洰鍞竴鏍囪瘑.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥溿�佲�濆垎鍓�
+     */
+    @Column(name = "MI_GUIDS")
+    private String miGuids;
+
+    /**
+     * 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    @Column(name = "MF_Name")
+    private String mfName;
+
+    /**
+     * 鍘熷鏂囧彿
+     */
+    @Column(name = "MF_Reference_Number")
+    private String mfReferenceNumber;
+
+    /**
+     * 鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     */
+    @Column(name = "MI_Chapter_Name")
+    private String miChapterName;
+
+    /**
+     * 鏄惁娑夊強涓撳睘瀹氬埗绛旀
+     */
+    @Column(name = "CQ_Is_Setting")
+    private boolean cqIsSetting;
+
+    /**
+     * 鏄惁娑夊強鏅鸿兘鏉冮噸鍥炵瓟
+     */
+    @Column(name = "CQ_Is_Intelligent")
+    private boolean cqIsIntelligent;
+
+    /**
+     * 鎬昏闂暟
+     */
+    @Column(name = "CQ_TotalNum")
+    private Integer cqTotalnum;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @Column(name = "CQ_Create_Time")
+    private Date cqCreateTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @Column(name = "CQ_Update_Time")
+    private Date cqUpdateTime;
+
+    @Column(name = "CQ_Extension1")
+    private String cqExtension1;
+
+    @Column(name = "CQ_Extension2")
+    private String cqExtension2;
+
+    @Column(name = "CQ_Extension3")
+    private String cqExtension3;
+
+    @Column(name = "CQ_Remark")
+    private String cqRemark;
+
+    /**
+     * 鑾峰彇闂鍞竴鏍囪瘑
+     *
+     * @return CQ_GUID - 闂鍞竴鏍囪瘑
+     */
+    public String getCqGuid() {
+        return cqGuid;
+    }
+
+    /**
+     * 璁剧疆闂鍞竴鏍囪瘑
+     *
+     * @param cqGuid 闂鍞竴鏍囪瘑
+     */
+    public void setCqGuid(String cqGuid) {
+        this.cqGuid = cqGuid == null ? null : cqGuid.trim();
+    }
+
+    /**
+     * 鑾峰彇闂
+     *
+     * @return CQ_Content - 闂
+     */
+    public String getCqContent() {
+        return cqContent;
+    }
+
+    /**
+     * 璁剧疆闂
+     *
+     * @param cqContent 闂
+     */
+    public void setCqContent(String cqContent) {
+        this.cqContent = cqContent == null ? null : cqContent.trim();
+    }
+
+    /**
+     * 鑾峰彇闂绫诲埆
+     *
+     * @return CQ_Kind - 闂绫诲埆
+     */
+    public Byte getCqKind() {
+        return cqKind;
+    }
+
+    /**
+     * 璁剧疆闂绫诲埆
+     *
+     * @param cqKind 闂绫诲埆
+     */
+    public void setCqKind(Byte cqKind) {
+        this.cqKind = cqKind;
+    }
+
+    /**
+     * 鑾峰彇闂灏忕被
+     *
+     * @return CQ_Subkind - 闂灏忕被
+     */
+    public Byte getCqSubkind() {
+        return cqSubkind;
+    }
+
+    /**
+     * 璁剧疆闂灏忕被
+     *
+     * @param cqSubkind 闂灏忕被
+     */
+    public void setCqSubkind(Byte cqSubkind) {
+        this.cqSubkind = cqSubkind;
+    }
+
+    /**
+     * 鑾峰彇闂鍏抽敭瀛�
+     *
+     * @return CQ_Keywords - 闂鍏抽敭瀛�
+     */
+    public String getCqKeywords() {
+        return cqKeywords;
+    }
+
+    /**
+     * 璁剧疆闂鍏抽敭瀛�
+     *
+     * @param cqKeywords 闂鍏抽敭瀛�
+     */
+    public void setCqKeywords(String cqKeywords) {
+        this.cqKeywords = cqKeywords == null ? null : cqKeywords.trim();
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強琛屾斂澶勭綒
+     *
+     * @return CQ_Is_Punish - 鏄惁娑夊強琛屾斂澶勭綒
+     */
+    public boolean getCqIsPunish() {
+        return cqIsPunish;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強琛屾斂澶勭綒
+     *
+     * @param cqIsPunish 鏄惁娑夊強琛屾斂澶勭綒
+     */
+    public void setCqIsPunish(boolean cqIsPunish) {
+        this.cqIsPunish = cqIsPunish;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鍒戜簨璐d换
+     *
+     * @return CQ_Is_Illegal - 鏄惁娑夊強鍒戜簨璐d换
+     */
+    public boolean getCqIsIllegal() {
+        return cqIsIllegal;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鍒戜簨璐d换
+     *
+     * @param cqIsIllegal 鏄惁娑夊強鍒戜簨璐d换
+     */
+    public void setCqIsIllegal(boolean cqIsIllegal) {
+        this.cqIsIllegal = cqIsIllegal;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     *
+     * @return CQ_Is_Supervise - 鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     */
+    public boolean getCqIsSupervise() {
+        return cqIsSupervise;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     *
+     * @param cqIsSupervise 鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     */
+    public void setCqIsSupervise(boolean cqIsSupervise) {
+        this.cqIsSupervise = cqIsSupervise;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鐜繚绠$悊鐑偣
+     *
+     * @return CQ_Is_Shotspot - 鏄惁娑夊強鐜繚绠$悊鐑偣
+     */
+    public boolean getCqIsShotspot() {
+        return cqIsShotspot;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鐜繚绠$悊鐑偣
+     *
+     * @param cqIsShotspot 鏄惁娑夊強鐜繚绠$悊鐑偣
+     */
+    public void setCqIsShotspot(boolean cqIsShotspot) {
+        this.cqIsShotspot = cqIsShotspot;
+    }
+
+    /**
+     * 鑾峰彇闂閫傜敤鍦烘櫙
+     *
+     * @return CQ_Scenes - 闂閫傜敤鍦烘櫙
+     */
+    public String getCqScenes() {
+        return cqScenes;
+    }
+
+    /**
+     * 璁剧疆闂閫傜敤鍦烘櫙
+     *
+     * @param cqScenes 闂閫傜敤鍦烘櫙
+     */
+    public void setCqScenes(String cqScenes) {
+        this.cqScenes = cqScenes == null ? null : cqScenes.trim();
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     *
+     * @return CQ_Is_Associated - 鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     */
+    public boolean getCqIsAssociated() {
+        return cqIsAssociated;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     *
+     * @param cqIsAssociated 鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     */
+    public void setCqIsAssociated(boolean cqIsAssociated) {
+        this.cqIsAssociated = cqIsAssociated;
+    }
+
+    /**
+     * 鑾峰彇鏉$洰鍞竴鏍囪瘑.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥溿�佲�濆垎鍓�
+     *
+     * @return MI_GUIDS - 鏉$洰鍞竴鏍囪瘑.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥溿�佲�濆垎鍓�
+     */
+    public String getMiGuids() {
+        return miGuids;
+    }
+
+    /**
+     * 璁剧疆鏉$洰鍞竴鏍囪瘑.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥溿�佲�濆垎鍓�
+     *
+     * @param miGuids 鏉$洰鍞竴鏍囪瘑.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥溿�佲�濆垎鍓�
+     */
+    public void setMiGuids(String miGuids) {
+        this.miGuids = miGuids == null ? null : miGuids.trim();
+    }
+
+    /**
+     * 鑾峰彇绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     *
+     * @return MF_Name - 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    public String getMfName() {
+        return mfName;
+    }
+
+    /**
+     * 璁剧疆绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     *
+     * @param mfName 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    public void setMfName(String mfName) {
+        this.mfName = mfName == null ? null : mfName.trim();
+    }
+
+    /**
+     * 鑾峰彇鍘熷鏂囧彿
+     *
+     * @return MF_Reference_Number - 鍘熷鏂囧彿
+     */
+    public String getMfReferenceNumber() {
+        return mfReferenceNumber;
+    }
+
+    /**
+     * 璁剧疆鍘熷鏂囧彿
+     *
+     * @param mfReferenceNumber 鍘熷鏂囧彿
+     */
+    public void setMfReferenceNumber(String mfReferenceNumber) {
+        this.mfReferenceNumber = mfReferenceNumber == null ? null : mfReferenceNumber.trim();
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     *
+     * @return MI_Chapter_Name - 鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     */
+    public String getMiChapterName() {
+        return miChapterName;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     *
+     * @param miChapterName 鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     */
+    public void setMiChapterName(String miChapterName) {
+        this.miChapterName = miChapterName == null ? null : miChapterName.trim();
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強涓撳睘瀹氬埗绛旀
+     *
+     * @return CQ_Is_Setting - 鏄惁娑夊強涓撳睘瀹氬埗绛旀
+     */
+    public boolean getCqIsSetting() {
+        return cqIsSetting;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強涓撳睘瀹氬埗绛旀
+     *
+     * @param cqIsSetting 鏄惁娑夊強涓撳睘瀹氬埗绛旀
+     */
+    public void setCqIsSetting(boolean cqIsSetting) {
+        this.cqIsSetting = cqIsSetting;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鏅鸿兘鏉冮噸鍥炵瓟
+     *
+     * @return CQ_Is_Intelligent - 鏄惁娑夊強鏅鸿兘鏉冮噸鍥炵瓟
+     */
+    public boolean getCqIsIntelligent() {
+        return cqIsIntelligent;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鏅鸿兘鏉冮噸鍥炵瓟
+     *
+     * @param cqIsIntelligent 鏄惁娑夊強鏅鸿兘鏉冮噸鍥炵瓟
+     */
+    public void setCqIsIntelligent(boolean cqIsIntelligent) {
+        this.cqIsIntelligent = cqIsIntelligent;
+    }
+
+    /**
+     * 鑾峰彇鎬昏闂暟
+     *
+     * @return CQ_TotalNum - 鎬昏闂暟
+     */
+    public Integer getCqTotalnum() {
+        return cqTotalnum;
+    }
+
+    /**
+     * 璁剧疆鎬昏闂暟
+     *
+     * @param cqTotalnum 鎬昏闂暟
+     */
+    public void setCqTotalnum(Integer cqTotalnum) {
+        this.cqTotalnum = cqTotalnum;
+    }
+
+    /**
+     * 鑾峰彇鍒涘缓鏃堕棿
+     *
+     * @return CQ_Create_Time - 鍒涘缓鏃堕棿
+     */
+    public Date getCqCreateTime() {
+        return cqCreateTime;
+    }
+
+    /**
+     * 璁剧疆鍒涘缓鏃堕棿
+     *
+     * @param cqCreateTime 鍒涘缓鏃堕棿
+     */
+    public void setCqCreateTime(Date cqCreateTime) {
+        this.cqCreateTime = cqCreateTime;
+    }
+
+    /**
+     * 鑾峰彇鏇存柊鏃堕棿
+     *
+     * @return CQ_Update_Time - 鏇存柊鏃堕棿
+     */
+    public Date getCqUpdateTime() {
+        return cqUpdateTime;
+    }
+
+    /**
+     * 璁剧疆鏇存柊鏃堕棿
+     *
+     * @param cqUpdateTime 鏇存柊鏃堕棿
+     */
+    public void setCqUpdateTime(Date cqUpdateTime) {
+        this.cqUpdateTime = cqUpdateTime;
+    }
+
+    /**
+     * @return CQ_Extension1
+     */
+    public String getCqExtension1() {
+        return cqExtension1;
+    }
+
+    /**
+     * @param cqExtension1
+     */
+    public void setCqExtension1(String cqExtension1) {
+        this.cqExtension1 = cqExtension1 == null ? null : cqExtension1.trim();
+    }
+
+    /**
+     * @return CQ_Extension2
+     */
+    public String getCqExtension2() {
+        return cqExtension2;
+    }
+
+    /**
+     * @param cqExtension2
+     */
+    public void setCqExtension2(String cqExtension2) {
+        this.cqExtension2 = cqExtension2 == null ? null : cqExtension2.trim();
+    }
+
+    /**
+     * @return CQ_Extension3
+     */
+    public String getCqExtension3() {
+        return cqExtension3;
+    }
+
+    /**
+     * @param cqExtension3
+     */
+    public void setCqExtension3(String cqExtension3) {
+        this.cqExtension3 = cqExtension3 == null ? null : cqExtension3.trim();
+    }
+
+    /**
+     * @return CQ_Remark
+     */
+    public String getCqRemark() {
+        return cqRemark;
+    }
+
+    /**
+     * @param cqRemark
+     */
+    public void setCqRemark(String cqRemark) {
+        this.cqRemark = cqRemark == null ? null : cqRemark.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/entity/EnforceCase.java b/src/main/kotlin/cn/flightfeather/supervision/domain/entity/EnforceCase.java
new file mode 100644
index 0000000..92e97e9
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/entity/EnforceCase.java
@@ -0,0 +1,878 @@
+package cn.flightfeather.supervision.domain.entity;
+
+import java.util.Date;
+import javax.persistence.*;
+
+@Table(name = "epk_t_enforcecase")
+public class EnforceCase {
+    /**
+     * 妗堜緥鍞竴鏍囪瘑
+     */
+    @Id
+    @Column(name = "EC_GUID")
+    private String ecGuid;
+
+    /**
+     * 妗堜緥鏍囬鎴栧悕绉�
+     */
+    @Column(name = "EC_Title")
+    private String ecTitle;
+
+    /**
+     * 妗堜緥绫诲瀷.1:杞诲井鐜杩濇硶妗堜緥锛�2:绉诲嚭姝i潰娓呭崟妗堜緥绛夛紝璇﹁瀵瑰簲浠g爜琛�
+     */
+    @Column(name = "EC_Type")
+    private Byte ecType;
+
+    /**
+     * 鏄惁灞炰簬绉诲嚭姝i潰娓呭崟妗堜緥
+     */
+    @Column(name = "EC_Is_Mv_Front_list")
+    private Boolean ecIsMvFrontList;
+
+    /**
+     * 妗堜緥鍏宠仈鐜繚瑕佸ぇ绫�.1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     */
+    @Column(name = "EC_Ep_Item_Type")
+    private Byte ecEpItemType;
+
+    /**
+     * 妗堜緥鍏宠仈鐜繚瑕佸皬绫�
+     */
+    @Column(name = "EC_Ep_Item_Subtype")
+    private Byte ecEpItemSubtype;
+
+    /**
+     * 妗堜緥鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    @Column(name = "EC_Keywords")
+    private String ecKeywords;
+
+    /**
+     * 妗堜緥鍙戠敓鏃ユ湡
+     */
+    @Column(name = "EC_Occur_Date")
+    private Date ecOccurDate;
+
+    /**
+     * 缃氭鏁伴.鍗曚綅锛氫竾鍏冿紝鍙兘娑夊強灏忔暟
+     */
+    @Column(name = "EC_Forfeit")
+    private Double ecForfeit;
+
+    /**
+     * 妗堜緥鎵�灞炵渷浠界紪鐮�
+     */
+    @Column(name = "EC_Province_Code")
+    private String ecProvinceCode;
+
+    /**
+     * 妗堜緥鎵�灞炵渷浠藉悕绉�
+     */
+    @Column(name = "EC_Province_Name")
+    private String ecProvinceName;
+
+    /**
+     * 妗堜緥鎵�灞炲湴甯傜紪鐮�
+     */
+    @Column(name = "EC_City_Code")
+    private String ecCityCode;
+
+    /**
+     * 妗堜緥鎵�灞炲湴甯傚悕绉�
+     */
+    @Column(name = "EC_City_Name")
+    private String ecCityName;
+
+    /**
+     * 鏄惁灞炰簬杞诲井鐜杩濇硶
+     */
+    @Column(name = "EC_Is_Minor")
+    private Boolean ecIsMinor;
+
+    /**
+     * 鏄惁娑夊強琛屾斂澶勭綒
+     */
+    @Column(name = "EC_Is_Punish")
+    private Boolean ecIsPunish;
+
+    /**
+     * 鏄惁娑夊強琛屾斂鎷樼暀
+     */
+    @Column(name = "EC_Is_Detained")
+    private Boolean ecIsDetained;
+
+    /**
+     * 鏄惁娑夊強鍒戜簨璐d换
+     */
+    @Column(name = "EC_Is_Illegal")
+    private Boolean ecIsIllegal;
+
+    /**
+     * 鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     */
+    @Column(name = "EC_Is_Supervise")
+    private Boolean ecIsSupervise;
+
+    /**
+     * 鏄惁娑夊強鐜繚绠$悊鐑偣
+     */
+    @Column(name = "EC_Is_Shotspot")
+    private Boolean ecIsShotspot;
+
+    /**
+     * 妗堜緥閫傜敤鍦烘櫙.鑻ユ秹鍙婂绫诲満鏅紝鍦烘櫙涔嬮棿鈥�;鈥濆垎鍓�
+     */
+    @Column(name = "EC_Scenes")
+    private String ecScenes;
+
+    /**
+     * 鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     */
+    @Column(name = "EC_Is_Associated")
+    private Boolean ecIsAssociated;
+
+    /**
+     * 鏉$洰鍞竴鏍囪瘑闆嗗悎.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥�;鈥濆垎鍓�
+     */
+    @Column(name = "MI_GUIDS")
+    private String miGuids;
+
+    /**
+     * 鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     */
+    @Column(name = "EC_Item_Names")
+    private String ecItemNames;
+
+    /**
+     * 鍏宠仈鏂囦欢id.涓嶅悓鏂囦欢鍚嶉棿鐢ㄢ��;鈥濆垎鍓�
+     */
+    @Column(name = "EC_File_Ids")
+    private String ecFileIds;
+
+    /**
+     * 鍏宠仈鏂囦欢鍚嶇О
+     */
+    @Column(name = "EC_File_Names")
+    private String ecFileNames;
+
+    /**
+     * 鍏宠仈鏂囦欢鏂囧彿
+     */
+    @Column(name = "EC_File_RNs")
+    private String ecFileRns;
+
+    /**
+     * 妗堜緥鐩稿叧澶氬獟浣撶礌鏉愯矾寰�,澶氫釜璺緞鐢ㄢ��;鈥濆垎闅�
+     */
+    @Column(name = "EC_Appendix_URL")
+    private String ecAppendixUrl;
+
+    /**
+     * 鎬昏闂鏁�
+     */
+    @Column(name = "EC_Total_Num")
+    private Integer ecTotalNum;
+
+    @Column(name = "EC_Create_Time")
+    private Date ecCreateTime;
+
+    @Column(name = "EC_Update_Time")
+    private Date ecUpdateTime;
+
+    @Column(name = "EC_Extension1")
+    private String ecExtension1;
+
+    @Column(name = "EC_Extension2")
+    private String ecExtension2;
+
+    @Column(name = "EC_Extension3")
+    private String ecExtension3;
+
+    @Column(name = "EC_Remark")
+    private String ecRemark;
+
+    /**
+     * 妗堜緥鎰忎箟
+     */
+    @Column(name = "EC_Meaning")
+    private String ecMeaning;
+
+    /**
+     * 妗堜緥绠�浠�
+     */
+    @Column(name = "EC_Summary")
+    private String ecSummary;
+
+    /**
+     * 鏌ュ鎯呭喌
+     */
+    @Column(name = "EC_Examined")
+    private String ecExamined;
+
+    /**
+     * 妗堜欢鍚ず
+     */
+    @Column(name = "EC_Enlightenment")
+    private String ecEnlightenment;
+
+    /**
+     * 鑾峰彇妗堜緥鍞竴鏍囪瘑
+     *
+     * @return EC_GUID - 妗堜緥鍞竴鏍囪瘑
+     */
+    public String getEcGuid() {
+        return ecGuid;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鍞竴鏍囪瘑
+     *
+     * @param ecGuid 妗堜緥鍞竴鏍囪瘑
+     */
+    public void setEcGuid(String ecGuid) {
+        this.ecGuid = ecGuid == null ? null : ecGuid.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鏍囬鎴栧悕绉�
+     *
+     * @return EC_Title - 妗堜緥鏍囬鎴栧悕绉�
+     */
+    public String getEcTitle() {
+        return ecTitle;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鏍囬鎴栧悕绉�
+     *
+     * @param ecTitle 妗堜緥鏍囬鎴栧悕绉�
+     */
+    public void setEcTitle(String ecTitle) {
+        this.ecTitle = ecTitle == null ? null : ecTitle.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥绫诲瀷.1:杞诲井鐜杩濇硶妗堜緥锛�2:绉诲嚭姝i潰娓呭崟妗堜緥绛夛紝璇﹁瀵瑰簲浠g爜琛�
+     *
+     * @return EC_Type - 妗堜緥绫诲瀷.1:杞诲井鐜杩濇硶妗堜緥锛�2:绉诲嚭姝i潰娓呭崟妗堜緥绛夛紝璇﹁瀵瑰簲浠g爜琛�
+     */
+    public Byte getEcType() {
+        return ecType;
+    }
+
+    /**
+     * 璁剧疆妗堜緥绫诲瀷.1:杞诲井鐜杩濇硶妗堜緥锛�2:绉诲嚭姝i潰娓呭崟妗堜緥绛夛紝璇﹁瀵瑰簲浠g爜琛�
+     *
+     * @param ecType 妗堜緥绫诲瀷.1:杞诲井鐜杩濇硶妗堜緥锛�2:绉诲嚭姝i潰娓呭崟妗堜緥绛夛紝璇﹁瀵瑰簲浠g爜琛�
+     */
+    public void setEcType(Byte ecType) {
+        this.ecType = ecType;
+    }
+
+    /**
+     * 鑾峰彇鏄惁灞炰簬绉诲嚭姝i潰娓呭崟妗堜緥
+     *
+     * @return EC_Is_Mv_Front_list - 鏄惁灞炰簬绉诲嚭姝i潰娓呭崟妗堜緥
+     */
+    public Boolean getEcIsMvFrontList() {
+        return ecIsMvFrontList;
+    }
+
+    /**
+     * 璁剧疆鏄惁灞炰簬绉诲嚭姝i潰娓呭崟妗堜緥
+     *
+     * @param ecIsMvFrontList 鏄惁灞炰簬绉诲嚭姝i潰娓呭崟妗堜緥
+     */
+    public void setEcIsMvFrontList(Boolean ecIsMvFrontList) {
+        this.ecIsMvFrontList = ecIsMvFrontList;
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鍏宠仈鐜繚瑕佸ぇ绫�.1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     *
+     * @return EC_Ep_Item_Type - 妗堜緥鍏宠仈鐜繚瑕佸ぇ绫�.1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     */
+    public Byte getEcEpItemType() {
+        return ecEpItemType;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鍏宠仈鐜繚瑕佸ぇ绫�.1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     *
+     * @param ecEpItemType 妗堜緥鍏宠仈鐜繚瑕佸ぇ绫�.1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     */
+    public void setEcEpItemType(Byte ecEpItemType) {
+        this.ecEpItemType = ecEpItemType;
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鍏宠仈鐜繚瑕佸皬绫�
+     *
+     * @return EC_Ep_Item_Subtype - 妗堜緥鍏宠仈鐜繚瑕佸皬绫�
+     */
+    public Byte getEcEpItemSubtype() {
+        return ecEpItemSubtype;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鍏宠仈鐜繚瑕佸皬绫�
+     *
+     * @param ecEpItemSubtype 妗堜緥鍏宠仈鐜繚瑕佸皬绫�
+     */
+    public void setEcEpItemSubtype(Byte ecEpItemSubtype) {
+        this.ecEpItemSubtype = ecEpItemSubtype;
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @return EC_Keywords - 妗堜緥鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public String getEcKeywords() {
+        return ecKeywords;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @param ecKeywords 妗堜緥鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public void setEcKeywords(String ecKeywords) {
+        this.ecKeywords = ecKeywords == null ? null : ecKeywords.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鍙戠敓鏃ユ湡
+     *
+     * @return EC_Occur_Date - 妗堜緥鍙戠敓鏃ユ湡
+     */
+    public Date getEcOccurDate() {
+        return ecOccurDate;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鍙戠敓鏃ユ湡
+     *
+     * @param ecOccurDate 妗堜緥鍙戠敓鏃ユ湡
+     */
+    public void setEcOccurDate(Date ecOccurDate) {
+        this.ecOccurDate = ecOccurDate;
+    }
+
+    /**
+     * 鑾峰彇缃氭鏁伴.鍗曚綅锛氫竾鍏冿紝鍙兘娑夊強灏忔暟
+     *
+     * @return EC_Forfeit - 缃氭鏁伴.鍗曚綅锛氫竾鍏冿紝鍙兘娑夊強灏忔暟
+     */
+    public Double getEcForfeit() {
+        return ecForfeit;
+    }
+
+    /**
+     * 璁剧疆缃氭鏁伴.鍗曚綅锛氫竾鍏冿紝鍙兘娑夊強灏忔暟
+     *
+     * @param ecForfeit 缃氭鏁伴.鍗曚綅锛氫竾鍏冿紝鍙兘娑夊強灏忔暟
+     */
+    public void setEcForfeit(Double ecForfeit) {
+        this.ecForfeit = ecForfeit;
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鎵�灞炵渷浠界紪鐮�
+     *
+     * @return EC_Province_Code - 妗堜緥鎵�灞炵渷浠界紪鐮�
+     */
+    public String getEcProvinceCode() {
+        return ecProvinceCode;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鎵�灞炵渷浠界紪鐮�
+     *
+     * @param ecProvinceCode 妗堜緥鎵�灞炵渷浠界紪鐮�
+     */
+    public void setEcProvinceCode(String ecProvinceCode) {
+        this.ecProvinceCode = ecProvinceCode == null ? null : ecProvinceCode.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鎵�灞炵渷浠藉悕绉�
+     *
+     * @return EC_Province_Name - 妗堜緥鎵�灞炵渷浠藉悕绉�
+     */
+    public String getEcProvinceName() {
+        return ecProvinceName;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鎵�灞炵渷浠藉悕绉�
+     *
+     * @param ecProvinceName 妗堜緥鎵�灞炵渷浠藉悕绉�
+     */
+    public void setEcProvinceName(String ecProvinceName) {
+        this.ecProvinceName = ecProvinceName == null ? null : ecProvinceName.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鎵�灞炲湴甯傜紪鐮�
+     *
+     * @return EC_City_Code - 妗堜緥鎵�灞炲湴甯傜紪鐮�
+     */
+    public String getEcCityCode() {
+        return ecCityCode;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鎵�灞炲湴甯傜紪鐮�
+     *
+     * @param ecCityCode 妗堜緥鎵�灞炲湴甯傜紪鐮�
+     */
+    public void setEcCityCode(String ecCityCode) {
+        this.ecCityCode = ecCityCode == null ? null : ecCityCode.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鎵�灞炲湴甯傚悕绉�
+     *
+     * @return EC_City_Name - 妗堜緥鎵�灞炲湴甯傚悕绉�
+     */
+    public String getEcCityName() {
+        return ecCityName;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鎵�灞炲湴甯傚悕绉�
+     *
+     * @param ecCityName 妗堜緥鎵�灞炲湴甯傚悕绉�
+     */
+    public void setEcCityName(String ecCityName) {
+        this.ecCityName = ecCityName == null ? null : ecCityName.trim();
+    }
+
+    /**
+     * 鑾峰彇鏄惁灞炰簬杞诲井鐜杩濇硶
+     *
+     * @return EC_Is_Minor - 鏄惁灞炰簬杞诲井鐜杩濇硶
+     */
+    public Boolean getEcIsMinor() {
+        return ecIsMinor;
+    }
+
+    /**
+     * 璁剧疆鏄惁灞炰簬杞诲井鐜杩濇硶
+     *
+     * @param ecIsMinor 鏄惁灞炰簬杞诲井鐜杩濇硶
+     */
+    public void setEcIsMinor(Boolean ecIsMinor) {
+        this.ecIsMinor = ecIsMinor;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強琛屾斂澶勭綒
+     *
+     * @return EC_Is_Punish - 鏄惁娑夊強琛屾斂澶勭綒
+     */
+    public Boolean getEcIsPunish() {
+        return ecIsPunish;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強琛屾斂澶勭綒
+     *
+     * @param ecIsPunish 鏄惁娑夊強琛屾斂澶勭綒
+     */
+    public void setEcIsPunish(Boolean ecIsPunish) {
+        this.ecIsPunish = ecIsPunish;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強琛屾斂鎷樼暀
+     *
+     * @return EC_Is_Detained - 鏄惁娑夊強琛屾斂鎷樼暀
+     */
+    public Boolean getEcIsDetained() {
+        return ecIsDetained;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強琛屾斂鎷樼暀
+     *
+     * @param ecIsDetained 鏄惁娑夊強琛屾斂鎷樼暀
+     */
+    public void setEcIsDetained(Boolean ecIsDetained) {
+        this.ecIsDetained = ecIsDetained;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鍒戜簨璐d换
+     *
+     * @return EC_Is_Illegal - 鏄惁娑夊強鍒戜簨璐d换
+     */
+    public Boolean getEcIsIllegal() {
+        return ecIsIllegal;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鍒戜簨璐d换
+     *
+     * @param ecIsIllegal 鏄惁娑夊強鍒戜簨璐d换
+     */
+    public void setEcIsIllegal(Boolean ecIsIllegal) {
+        this.ecIsIllegal = ecIsIllegal;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     *
+     * @return EC_Is_Supervise - 鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     */
+    public Boolean getEcIsSupervise() {
+        return ecIsSupervise;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     *
+     * @param ecIsSupervise 鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     */
+    public void setEcIsSupervise(Boolean ecIsSupervise) {
+        this.ecIsSupervise = ecIsSupervise;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鐜繚绠$悊鐑偣
+     *
+     * @return EC_Is_Shotspot - 鏄惁娑夊強鐜繚绠$悊鐑偣
+     */
+    public Boolean getEcIsShotspot() {
+        return ecIsShotspot;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鐜繚绠$悊鐑偣
+     *
+     * @param ecIsShotspot 鏄惁娑夊強鐜繚绠$悊鐑偣
+     */
+    public void setEcIsShotspot(Boolean ecIsShotspot) {
+        this.ecIsShotspot = ecIsShotspot;
+    }
+
+    /**
+     * 鑾峰彇妗堜緥閫傜敤鍦烘櫙.鑻ユ秹鍙婂绫诲満鏅紝鍦烘櫙涔嬮棿鈥�;鈥濆垎鍓�
+     *
+     * @return EC_Scenes - 妗堜緥閫傜敤鍦烘櫙.鑻ユ秹鍙婂绫诲満鏅紝鍦烘櫙涔嬮棿鈥�;鈥濆垎鍓�
+     */
+    public String getEcScenes() {
+        return ecScenes;
+    }
+
+    /**
+     * 璁剧疆妗堜緥閫傜敤鍦烘櫙.鑻ユ秹鍙婂绫诲満鏅紝鍦烘櫙涔嬮棿鈥�;鈥濆垎鍓�
+     *
+     * @param ecScenes 妗堜緥閫傜敤鍦烘櫙.鑻ユ秹鍙婂绫诲満鏅紝鍦烘櫙涔嬮棿鈥�;鈥濆垎鍓�
+     */
+    public void setEcScenes(String ecScenes) {
+        this.ecScenes = ecScenes == null ? null : ecScenes.trim();
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     *
+     * @return EC_Is_Associated - 鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     */
+    public Boolean getEcIsAssociated() {
+        return ecIsAssociated;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     *
+     * @param ecIsAssociated 鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     */
+    public void setEcIsAssociated(Boolean ecIsAssociated) {
+        this.ecIsAssociated = ecIsAssociated;
+    }
+
+    /**
+     * 鑾峰彇鏉$洰鍞竴鏍囪瘑闆嗗悎.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥�;鈥濆垎鍓�
+     *
+     * @return MI_GUIDS - 鏉$洰鍞竴鏍囪瘑闆嗗悎.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥�;鈥濆垎鍓�
+     */
+    public String getMiGuids() {
+        return miGuids;
+    }
+
+    /**
+     * 璁剧疆鏉$洰鍞竴鏍囪瘑闆嗗悎.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥�;鈥濆垎鍓�
+     *
+     * @param miGuids 鏉$洰鍞竴鏍囪瘑闆嗗悎.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥�;鈥濆垎鍓�
+     */
+    public void setMiGuids(String miGuids) {
+        this.miGuids = miGuids == null ? null : miGuids.trim();
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     *
+     * @return EC_Item_Names - 鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     */
+    public String getEcItemNames() {
+        return ecItemNames;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     *
+     * @param ecItemNames 鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     */
+    public void setEcItemNames(String ecItemNames) {
+        this.ecItemNames = ecItemNames == null ? null : ecItemNames.trim();
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈鏂囦欢id.涓嶅悓鏂囦欢鍚嶉棿鐢ㄢ��;鈥濆垎鍓�
+     *
+     * @return EC_File_Ids - 鍏宠仈鏂囦欢id.涓嶅悓鏂囦欢鍚嶉棿鐢ㄢ��;鈥濆垎鍓�
+     */
+    public String getEcFileIds() {
+        return ecFileIds;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈鏂囦欢id.涓嶅悓鏂囦欢鍚嶉棿鐢ㄢ��;鈥濆垎鍓�
+     *
+     * @param ecFileIds 鍏宠仈鏂囦欢id.涓嶅悓鏂囦欢鍚嶉棿鐢ㄢ��;鈥濆垎鍓�
+     */
+    public void setEcFileIds(String ecFileIds) {
+        this.ecFileIds = ecFileIds == null ? null : ecFileIds.trim();
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈鏂囦欢鍚嶇О
+     *
+     * @return EC_File_Names - 鍏宠仈鏂囦欢鍚嶇О
+     */
+    public String getEcFileNames() {
+        return ecFileNames;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈鏂囦欢鍚嶇О
+     *
+     * @param ecFileNames 鍏宠仈鏂囦欢鍚嶇О
+     */
+    public void setEcFileNames(String ecFileNames) {
+        this.ecFileNames = ecFileNames == null ? null : ecFileNames.trim();
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈鏂囦欢鏂囧彿
+     *
+     * @return EC_File_RNs - 鍏宠仈鏂囦欢鏂囧彿
+     */
+    public String getEcFileRns() {
+        return ecFileRns;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈鏂囦欢鏂囧彿
+     *
+     * @param ecFileRns 鍏宠仈鏂囦欢鏂囧彿
+     */
+    public void setEcFileRns(String ecFileRns) {
+        this.ecFileRns = ecFileRns == null ? null : ecFileRns.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鐩稿叧澶氬獟浣撶礌鏉愯矾寰�,澶氫釜璺緞鐢ㄢ��;鈥濆垎闅�
+     *
+     * @return EC_Appendix_URL - 妗堜緥鐩稿叧澶氬獟浣撶礌鏉愯矾寰�,澶氫釜璺緞鐢ㄢ��;鈥濆垎闅�
+     */
+    public String getEcAppendixUrl() {
+        return ecAppendixUrl;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鐩稿叧澶氬獟浣撶礌鏉愯矾寰�,澶氫釜璺緞鐢ㄢ��;鈥濆垎闅�
+     *
+     * @param ecAppendixUrl 妗堜緥鐩稿叧澶氬獟浣撶礌鏉愯矾寰�,澶氫釜璺緞鐢ㄢ��;鈥濆垎闅�
+     */
+    public void setEcAppendixUrl(String ecAppendixUrl) {
+        this.ecAppendixUrl = ecAppendixUrl == null ? null : ecAppendixUrl.trim();
+    }
+
+    /**
+     * 鑾峰彇鎬昏闂鏁�
+     *
+     * @return EC_Total_Num - 鎬昏闂鏁�
+     */
+    public Integer getEcTotalNum() {
+        return ecTotalNum;
+    }
+
+    /**
+     * 璁剧疆鎬昏闂鏁�
+     *
+     * @param ecTotalNum 鎬昏闂鏁�
+     */
+    public void setEcTotalNum(Integer ecTotalNum) {
+        this.ecTotalNum = ecTotalNum;
+    }
+
+    /**
+     * @return EC_Create_Time
+     */
+    public Date getEcCreateTime() {
+        return ecCreateTime;
+    }
+
+    /**
+     * @param ecCreateTime
+     */
+    public void setEcCreateTime(Date ecCreateTime) {
+        this.ecCreateTime = ecCreateTime;
+    }
+
+    /**
+     * @return EC_Update_Time
+     */
+    public Date getEcUpdateTime() {
+        return ecUpdateTime;
+    }
+
+    /**
+     * @param ecUpdateTime
+     */
+    public void setEcUpdateTime(Date ecUpdateTime) {
+        this.ecUpdateTime = ecUpdateTime;
+    }
+
+    /**
+     * @return EC_Extension1
+     */
+    public String getEcExtension1() {
+        return ecExtension1;
+    }
+
+    /**
+     * @param ecExtension1
+     */
+    public void setEcExtension1(String ecExtension1) {
+        this.ecExtension1 = ecExtension1 == null ? null : ecExtension1.trim();
+    }
+
+    /**
+     * @return EC_Extension2
+     */
+    public String getEcExtension2() {
+        return ecExtension2;
+    }
+
+    /**
+     * @param ecExtension2
+     */
+    public void setEcExtension2(String ecExtension2) {
+        this.ecExtension2 = ecExtension2 == null ? null : ecExtension2.trim();
+    }
+
+    /**
+     * @return EC_Extension3
+     */
+    public String getEcExtension3() {
+        return ecExtension3;
+    }
+
+    /**
+     * @param ecExtension3
+     */
+    public void setEcExtension3(String ecExtension3) {
+        this.ecExtension3 = ecExtension3 == null ? null : ecExtension3.trim();
+    }
+
+    /**
+     * @return EC_Remark
+     */
+    public String getEcRemark() {
+        return ecRemark;
+    }
+
+    /**
+     * @param ecRemark
+     */
+    public void setEcRemark(String ecRemark) {
+        this.ecRemark = ecRemark == null ? null : ecRemark.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鎰忎箟
+     *
+     * @return EC_Meaning - 妗堜緥鎰忎箟
+     */
+    public String getEcMeaning() {
+        return ecMeaning;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鎰忎箟
+     *
+     * @param ecMeaning 妗堜緥鎰忎箟
+     */
+    public void setEcMeaning(String ecMeaning) {
+        this.ecMeaning = ecMeaning == null ? null : ecMeaning.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥绠�浠�
+     *
+     * @return EC_Summary - 妗堜緥绠�浠�
+     */
+    public String getEcSummary() {
+        return ecSummary;
+    }
+
+    /**
+     * 璁剧疆妗堜緥绠�浠�
+     *
+     * @param ecSummary 妗堜緥绠�浠�
+     */
+    public void setEcSummary(String ecSummary) {
+        this.ecSummary = ecSummary == null ? null : ecSummary.trim();
+    }
+
+    /**
+     * 鑾峰彇鏌ュ鎯呭喌
+     *
+     * @return EC_Examined - 鏌ュ鎯呭喌
+     */
+    public String getEcExamined() {
+        return ecExamined;
+    }
+
+    /**
+     * 璁剧疆鏌ュ鎯呭喌
+     *
+     * @param ecExamined 鏌ュ鎯呭喌
+     */
+    public void setEcExamined(String ecExamined) {
+        this.ecExamined = ecExamined == null ? null : ecExamined.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜欢鍚ず
+     *
+     * @return EC_Enlightenment - 妗堜欢鍚ず
+     */
+    public String getEcEnlightenment() {
+        return ecEnlightenment;
+    }
+
+    /**
+     * 璁剧疆妗堜欢鍚ず
+     *
+     * @param ecEnlightenment 妗堜欢鍚ず
+     */
+    public void setEcEnlightenment(String ecEnlightenment) {
+        this.ecEnlightenment = ecEnlightenment == null ? null : ecEnlightenment.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/entity/MgtFile.java b/src/main/kotlin/cn/flightfeather/supervision/domain/entity/MgtFile.java
new file mode 100644
index 0000000..787fa5d
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/entity/MgtFile.java
@@ -0,0 +1,988 @@
+package cn.flightfeather.supervision.domain.entity;
+
+import java.util.Date;
+import javax.persistence.*;
+
+@Table(name = "epk_t_mgtfile")
+public class MgtFile {
+    /**
+     * 绠$悊瑕佹眰鏂囦欢ID
+     */
+    @Id
+    @Column(name = "MF_GUID")
+    private String mfGuid;
+
+    /**
+     * 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    @Column(name = "MF_Name")
+    private String mfName;
+
+    /**
+     * 绠$悊瑕佹眰鏂囦欢绠�绉�
+     */
+    @Column(name = "MF_Short_Name")
+    private String mfShortName;
+
+    /**
+     * 鍘熷鏂囧彿
+     */
+    @Column(name = "MF_Reference_Number")
+    private String mfReferenceNumber;
+
+    /**
+     * 鏂囦欢缂栫爜: 18浣嶈嚜瀹氫箟鍞竴鏍囪瘑锛氬尯鍩熻鏀跨紪鐮侊紙6浣嶏級+鏂囦欢绫诲埆缂栧彿锛�2浣嶏級+瑕佺礌澶х被缂栧彿锛�2浣嶏級+瀹炴柦鎴栫敓鏁堟棩鏈燂紙8浣嶏級锛岀敤浜庡急鍏宠仈鍜屽叧閿睘鎬х洿鎺ヨВ鏋�
+     */
+    @Column(name = "MF_File_Code")
+    private String mfFileCode;
+
+    /**
+     * 鏂囦欢鐩稿叧涓昏涓�: 1锛氱敓鎬佺幆澧冿紱2锛氫綇鎴垮缓璁撅紱3锛氫氦閫氾紱4锛氱豢鍖栧競瀹癸紱5锛氬煄绠℃墽娉曪紱99锛氬叾浠栵紱
+     */
+    @Column(name = "MF_File_Industry")
+    private Byte mfFileIndustry;
+
+    /**
+     * 鏂囦欢鐩稿叧绠$悊灞傜骇: 1锛氬浗瀹讹紱2锛氶儴濮旓紱3锛氱渷/鐩磋緰甯傦紱4锛氬湴甯傦紱5锛氬尯鍘匡紱6锛氳闀囷紱7锛氬洯鍖猴紱9锛氬叾浠�
+     */
+    @Column(name = "MF_Mgt_Level")
+    private Byte mfMgtLevel;
+
+    /**
+     * 鐪佷唤缂栫爜
+     */
+    @Column(name = "MF_Province_Code")
+    private String mfProvinceCode;
+
+    /**
+     * 鐪佷唤鍚嶇О
+     */
+    @Column(name = "MF_Province_Name")
+    private String mfProvinceName;
+
+    /**
+     * 鍦板競缂栫爜
+     */
+    @Column(name = "MF_City_Code")
+    private String mfCityCode;
+
+    /**
+     * 鍦板競鍚嶇О
+     */
+    @Column(name = "MF_City_Name")
+    private String mfCityName;
+
+    /**
+     * 鍖哄幙缂栧彿
+     */
+    @Column(name = "MF_District_Code")
+    private String mfDistrictCode;
+
+    /**
+     * 鍖哄幙鍚嶇О
+     */
+    @Column(name = "MF_District_Name")
+    private String mfDistrictName;
+
+    /**
+     * 琛楅晣缂栫爜
+     */
+    @Column(name = "MF_Town_Code")
+    private String mfTownCode;
+
+    /**
+     * 琛楅晣鍚嶇О
+     */
+    @Column(name = "MF_Town_Name")
+    private String mfTownName;
+
+    /**
+     * 鎵�鍦ㄥ洯鍖�
+     */
+    @Column(name = "MF_Ind_District")
+    private String mfIndDistrict;
+
+    /**
+     * 鏈夋晥琛屾斂鍖哄煙瑕嗙洊: 渚嬪涓婃捣鍏ㄥ競銆佷粎闄愰潤瀹夊尯绛夛紝鍙粠鏂囦欢鎽樿涓�傜敤鑼冨洿鎻愬彇锛屾垨鏂囦欢绾у埆鍜屽搴旇鏀垮尯鍒掓彁鍙�
+     */
+    @Column(name = "MF_Area_Coverage")
+    private String mfAreaCoverage;
+
+    /**
+     * 鏂囦欢绫诲埆: 1锛氬浗瀹舵硶寰嬶紱2锛氬浗瀹舵硶瑙勶紱3锛氬湴鏂规潯渚嬶紱4锛氱鐞嗚瀹氾紱5锛氬疄鏂藉姙娉曪紱6锛氳鏀块�氱煡锛�7锛氭妧鏈爣鍑嗭紱8锛氭湇鍔℃爣鍑嗭紱9锛氭妧鏈鑼冿紱10锛氬彂灞曡鍒掞紱11锛氬簲鎬ラ妗堬紱12锛氭墽娉曡В閲婏紱13锛氱鐞嗚В璇伙紱99锛氬叾浠栵紱
+     */
+    @Column(name = "MF_File_Type")
+    private Byte mfFileType;
+
+    /**
+     * 鍏宠仈鐜繚瑕佺礌澶х被: 1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     */
+    @Column(name = "MF_Ep_Item_Type")
+    private Byte mfEpItemType;
+
+    /**
+     * 鍏宠仈鐜繚瑕佺礌灏忕被: 澶ф皵瀵瑰簲灏忕被锛�1锛歅M锛�2锛歂OX锛�3锛歄3锛�4锛歏OCs锛�5锛氬伐涓氬簾姘旓紱6锛氭満鍔ㄨ溅灏炬皵锛�7锛氭壃灏橈紱8锛氶楗补鐑燂紱9锛氭伓鑷紱99锛氬叾浠栵紱鍏朵粬鍙傝鏁版嵁婧愪唬鐮佽〃
+     */
+    @Column(name = "MF_Ep_Item_Subtype")
+    private Byte mfEpItemSubtype;
+
+    /**
+     * 鍙戝竷鍗曚綅鎴栫粍缁�
+     */
+    @Column(name = "MF_Release_Org")
+    private String mfReleaseOrg;
+
+    /**
+     * 鍙戝竷鏃ユ湡
+     */
+    @Column(name = "MF_Release_Date")
+    private Date mfReleaseDate;
+
+    /**
+     * 鐢熸晥寮�濮嬫椂闂�
+     */
+    @Column(name = "MF_Effective_Date")
+    private Date mfEffectiveDate;
+
+    /**
+     * 鐢熸晥鎴鏃堕棿
+     */
+    @Column(name = "MF_Closing_Date")
+    private Date mfClosingDate;
+
+    /**
+     * 鏈夋晥鏈�
+     */
+    @Column(name = "MF_Effective_Time")
+    private String mfEffectiveTime;
+
+    /**
+     * 鏂囦欢渚濇嵁
+     */
+    @Column(name = "MF_File_Basis")
+    private String mfFileBasis;
+
+    /**
+     * 鏂囦欢鎽樿
+     */
+    @Column(name = "MF_Summary")
+    private String mfSummary;
+
+    /**
+     * 闄勪欢鎴栭檮灞炲濯掍綋鏉愭枡璺緞: 鍙兘瀛樺湪澶氫釜璺緞锛屸�滐紱鈥濆垎鍓�
+     */
+    @Column(name = "MF_Sub_File_Url")
+    private String mfSubFileUrl;
+
+    /**
+     * 鍘熷鏂囦欢瀛樺偍鏍煎紡: 1锛歸ord;2:pdf;3:Excel锛�4锛歱pt;99:鍏朵粬锛�
+     */
+    @Column(name = "MF_Save_Type")
+    private Byte mfSaveType;
+
+    /**
+     * 鍘熷鏂囦欢璺緞: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     */
+    @Column(name = "MF_File_Url")
+    private String mfFileUrl;
+
+    /**
+     * 姘村嵃鍔犲瘑鏂囦欢璺緞: 鍔犲叕鍙告按鍗板苟鍔犲瘑锛屼笉鍙紪杈戯紝鐢ㄤ簬鎺堟潈鐢ㄦ埛娴忚鎴栦笅杞�
+     */
+    @Column(name = "MF_File_Encryption_Url")
+    private String mfFileEncryptionUrl;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @Column(name = "MF_Create_Time")
+    private Date mfCreateTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @Column(name = "MF_Update_Time")
+    private Date mfUpdateTime;
+
+    @Column(name = "MF_Extension1")
+    private String mfExtension1;
+
+    @Column(name = "MF_Extension2")
+    private String mfExtension2;
+
+    @Column(name = "MF_Extension3")
+    private String mfExtension3;
+
+    @Column(name = "MF_Remark")
+    private String mfRemark;
+
+    /**
+     * 鏂囦欢淇鎴栨洿鏂版儏鍐�: 鍙兘瀛樺湪澶氭淇锛岀敤鈥滐紱鈥濆垎鍓�
+     */
+    @Column(name = "MF_File_Revise")
+    private String mfFileRevise;
+
+    /**
+     * 鏂囦欢鎽樿鍏抽敭瀛�: 涓�绾у叧閿瓧锛屽父鐢ㄥ叧閿瓧锛岃嫢娑夊強澶氫釜鍏抽敭瀛楋紝鍏抽敭瀛椾箣闂粹�溿�佲�濆垎鍓�
+     */
+    @Column(name = "MF_Keyword_Lv1")
+    private String mfKeywordLv1;
+
+    /**
+     * 瀵硅薄鍙婅涓哄叧閿瓧: 浜岀骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    @Column(name = "MF_Keyword_Lv2")
+    private String mfKeywordLv2;
+
+    /**
+     * 璁炬柦鎴栫墿鍝佸叧閿瓧锛� 涓夌骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    @Column(name = "MF_Keyword_Lv3")
+    private String mfKeywordLv3;
+
+    /**
+     * 鏈烘瀯鎴栧崟浣嶅叧閿瓧锛� 鍥涚骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    @Column(name = "MF_Keyword_Lv4")
+    private String mfKeywordLv4;
+
+    /**
+     * 鑾峰彇绠$悊瑕佹眰鏂囦欢ID
+     *
+     * @return MF_GUID - 绠$悊瑕佹眰鏂囦欢ID
+     */
+    public String getMfGuid() {
+        return mfGuid;
+    }
+
+    /**
+     * 璁剧疆绠$悊瑕佹眰鏂囦欢ID
+     *
+     * @param mfGuid 绠$悊瑕佹眰鏂囦欢ID
+     */
+    public void setMfGuid(String mfGuid) {
+        this.mfGuid = mfGuid == null ? null : mfGuid.trim();
+    }
+
+    /**
+     * 鑾峰彇绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     *
+     * @return MF_Name - 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    public String getMfName() {
+        return mfName;
+    }
+
+    /**
+     * 璁剧疆绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     *
+     * @param mfName 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    public void setMfName(String mfName) {
+        this.mfName = mfName == null ? null : mfName.trim();
+    }
+
+    /**
+     * 鑾峰彇绠$悊瑕佹眰鏂囦欢绠�绉�
+     *
+     * @return MF_Short_Name - 绠$悊瑕佹眰鏂囦欢绠�绉�
+     */
+    public String getMfShortName() {
+        return mfShortName;
+    }
+
+    /**
+     * 璁剧疆绠$悊瑕佹眰鏂囦欢绠�绉�
+     *
+     * @param mfShortName 绠$悊瑕佹眰鏂囦欢绠�绉�
+     */
+    public void setMfShortName(String mfShortName) {
+        this.mfShortName = mfShortName == null ? null : mfShortName.trim();
+    }
+
+    /**
+     * 鑾峰彇鍘熷鏂囧彿
+     *
+     * @return MF_Reference_Number - 鍘熷鏂囧彿
+     */
+    public String getMfReferenceNumber() {
+        return mfReferenceNumber;
+    }
+
+    /**
+     * 璁剧疆鍘熷鏂囧彿
+     *
+     * @param mfReferenceNumber 鍘熷鏂囧彿
+     */
+    public void setMfReferenceNumber(String mfReferenceNumber) {
+        this.mfReferenceNumber = mfReferenceNumber == null ? null : mfReferenceNumber.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢缂栫爜: 18浣嶈嚜瀹氫箟鍞竴鏍囪瘑锛氬尯鍩熻鏀跨紪鐮侊紙6浣嶏級+鏂囦欢绫诲埆缂栧彿锛�2浣嶏級+瑕佺礌澶х被缂栧彿锛�2浣嶏級+瀹炴柦鎴栫敓鏁堟棩鏈燂紙8浣嶏級锛岀敤浜庡急鍏宠仈鍜屽叧閿睘鎬х洿鎺ヨВ鏋�
+     *
+     * @return MF_File_Code - 鏂囦欢缂栫爜: 18浣嶈嚜瀹氫箟鍞竴鏍囪瘑锛氬尯鍩熻鏀跨紪鐮侊紙6浣嶏級+鏂囦欢绫诲埆缂栧彿锛�2浣嶏級+瑕佺礌澶х被缂栧彿锛�2浣嶏級+瀹炴柦鎴栫敓鏁堟棩鏈燂紙8浣嶏級锛岀敤浜庡急鍏宠仈鍜屽叧閿睘鎬х洿鎺ヨВ鏋�
+     */
+    public String getMfFileCode() {
+        return mfFileCode;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢缂栫爜: 18浣嶈嚜瀹氫箟鍞竴鏍囪瘑锛氬尯鍩熻鏀跨紪鐮侊紙6浣嶏級+鏂囦欢绫诲埆缂栧彿锛�2浣嶏級+瑕佺礌澶х被缂栧彿锛�2浣嶏級+瀹炴柦鎴栫敓鏁堟棩鏈燂紙8浣嶏級锛岀敤浜庡急鍏宠仈鍜屽叧閿睘鎬х洿鎺ヨВ鏋�
+     *
+     * @param mfFileCode 鏂囦欢缂栫爜: 18浣嶈嚜瀹氫箟鍞竴鏍囪瘑锛氬尯鍩熻鏀跨紪鐮侊紙6浣嶏級+鏂囦欢绫诲埆缂栧彿锛�2浣嶏級+瑕佺礌澶х被缂栧彿锛�2浣嶏級+瀹炴柦鎴栫敓鏁堟棩鏈燂紙8浣嶏級锛岀敤浜庡急鍏宠仈鍜屽叧閿睘鎬х洿鎺ヨВ鏋�
+     */
+    public void setMfFileCode(String mfFileCode) {
+        this.mfFileCode = mfFileCode == null ? null : mfFileCode.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢鐩稿叧涓昏涓�: 1锛氱敓鎬佺幆澧冿紱2锛氫綇鎴垮缓璁撅紱3锛氫氦閫氾紱4锛氱豢鍖栧競瀹癸紱5锛氬煄绠℃墽娉曪紱99锛氬叾浠栵紱
+     *
+     * @return MF_File_Industry - 鏂囦欢鐩稿叧涓昏涓�: 1锛氱敓鎬佺幆澧冿紱2锛氫綇鎴垮缓璁撅紱3锛氫氦閫氾紱4锛氱豢鍖栧競瀹癸紱5锛氬煄绠℃墽娉曪紱99锛氬叾浠栵紱
+     */
+    public Byte getMfFileIndustry() {
+        return mfFileIndustry;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢鐩稿叧涓昏涓�: 1锛氱敓鎬佺幆澧冿紱2锛氫綇鎴垮缓璁撅紱3锛氫氦閫氾紱4锛氱豢鍖栧競瀹癸紱5锛氬煄绠℃墽娉曪紱99锛氬叾浠栵紱
+     *
+     * @param mfFileIndustry 鏂囦欢鐩稿叧涓昏涓�: 1锛氱敓鎬佺幆澧冿紱2锛氫綇鎴垮缓璁撅紱3锛氫氦閫氾紱4锛氱豢鍖栧競瀹癸紱5锛氬煄绠℃墽娉曪紱99锛氬叾浠栵紱
+     */
+    public void setMfFileIndustry(Byte mfFileIndustry) {
+        this.mfFileIndustry = mfFileIndustry;
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢鐩稿叧绠$悊灞傜骇: 1锛氬浗瀹讹紱2锛氶儴濮旓紱3锛氱渷/鐩磋緰甯傦紱4锛氬湴甯傦紱5锛氬尯鍘匡紱6锛氳闀囷紱7锛氬洯鍖猴紱9锛氬叾浠�
+     *
+     * @return MF_Mgt_Level - 鏂囦欢鐩稿叧绠$悊灞傜骇: 1锛氬浗瀹讹紱2锛氶儴濮旓紱3锛氱渷/鐩磋緰甯傦紱4锛氬湴甯傦紱5锛氬尯鍘匡紱6锛氳闀囷紱7锛氬洯鍖猴紱9锛氬叾浠�
+     */
+    public Byte getMfMgtLevel() {
+        return mfMgtLevel;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢鐩稿叧绠$悊灞傜骇: 1锛氬浗瀹讹紱2锛氶儴濮旓紱3锛氱渷/鐩磋緰甯傦紱4锛氬湴甯傦紱5锛氬尯鍘匡紱6锛氳闀囷紱7锛氬洯鍖猴紱9锛氬叾浠�
+     *
+     * @param mfMgtLevel 鏂囦欢鐩稿叧绠$悊灞傜骇: 1锛氬浗瀹讹紱2锛氶儴濮旓紱3锛氱渷/鐩磋緰甯傦紱4锛氬湴甯傦紱5锛氬尯鍘匡紱6锛氳闀囷紱7锛氬洯鍖猴紱9锛氬叾浠�
+     */
+    public void setMfMgtLevel(Byte mfMgtLevel) {
+        this.mfMgtLevel = mfMgtLevel;
+    }
+
+    /**
+     * 鑾峰彇鐪佷唤缂栫爜
+     *
+     * @return MF_Province_Code - 鐪佷唤缂栫爜
+     */
+    public String getMfProvinceCode() {
+        return mfProvinceCode;
+    }
+
+    /**
+     * 璁剧疆鐪佷唤缂栫爜
+     *
+     * @param mfProvinceCode 鐪佷唤缂栫爜
+     */
+    public void setMfProvinceCode(String mfProvinceCode) {
+        this.mfProvinceCode = mfProvinceCode == null ? null : mfProvinceCode.trim();
+    }
+
+    /**
+     * 鑾峰彇鐪佷唤鍚嶇О
+     *
+     * @return MF_Province_Name - 鐪佷唤鍚嶇О
+     */
+    public String getMfProvinceName() {
+        return mfProvinceName;
+    }
+
+    /**
+     * 璁剧疆鐪佷唤鍚嶇О
+     *
+     * @param mfProvinceName 鐪佷唤鍚嶇О
+     */
+    public void setMfProvinceName(String mfProvinceName) {
+        this.mfProvinceName = mfProvinceName == null ? null : mfProvinceName.trim();
+    }
+
+    /**
+     * 鑾峰彇鍦板競缂栫爜
+     *
+     * @return MF_City_Code - 鍦板競缂栫爜
+     */
+    public String getMfCityCode() {
+        return mfCityCode;
+    }
+
+    /**
+     * 璁剧疆鍦板競缂栫爜
+     *
+     * @param mfCityCode 鍦板競缂栫爜
+     */
+    public void setMfCityCode(String mfCityCode) {
+        this.mfCityCode = mfCityCode == null ? null : mfCityCode.trim();
+    }
+
+    /**
+     * 鑾峰彇鍦板競鍚嶇О
+     *
+     * @return MF_City_Name - 鍦板競鍚嶇О
+     */
+    public String getMfCityName() {
+        return mfCityName;
+    }
+
+    /**
+     * 璁剧疆鍦板競鍚嶇О
+     *
+     * @param mfCityName 鍦板競鍚嶇О
+     */
+    public void setMfCityName(String mfCityName) {
+        this.mfCityName = mfCityName == null ? null : mfCityName.trim();
+    }
+
+    /**
+     * 鑾峰彇鍖哄幙缂栧彿
+     *
+     * @return MF_District_Code - 鍖哄幙缂栧彿
+     */
+    public String getMfDistrictCode() {
+        return mfDistrictCode;
+    }
+
+    /**
+     * 璁剧疆鍖哄幙缂栧彿
+     *
+     * @param mfDistrictCode 鍖哄幙缂栧彿
+     */
+    public void setMfDistrictCode(String mfDistrictCode) {
+        this.mfDistrictCode = mfDistrictCode == null ? null : mfDistrictCode.trim();
+    }
+
+    /**
+     * 鑾峰彇鍖哄幙鍚嶇О
+     *
+     * @return MF_District_Name - 鍖哄幙鍚嶇О
+     */
+    public String getMfDistrictName() {
+        return mfDistrictName;
+    }
+
+    /**
+     * 璁剧疆鍖哄幙鍚嶇О
+     *
+     * @param mfDistrictName 鍖哄幙鍚嶇О
+     */
+    public void setMfDistrictName(String mfDistrictName) {
+        this.mfDistrictName = mfDistrictName == null ? null : mfDistrictName.trim();
+    }
+
+    /**
+     * 鑾峰彇琛楅晣缂栫爜
+     *
+     * @return MF_Town_Code - 琛楅晣缂栫爜
+     */
+    public String getMfTownCode() {
+        return mfTownCode;
+    }
+
+    /**
+     * 璁剧疆琛楅晣缂栫爜
+     *
+     * @param mfTownCode 琛楅晣缂栫爜
+     */
+    public void setMfTownCode(String mfTownCode) {
+        this.mfTownCode = mfTownCode == null ? null : mfTownCode.trim();
+    }
+
+    /**
+     * 鑾峰彇琛楅晣鍚嶇О
+     *
+     * @return MF_Town_Name - 琛楅晣鍚嶇О
+     */
+    public String getMfTownName() {
+        return mfTownName;
+    }
+
+    /**
+     * 璁剧疆琛楅晣鍚嶇О
+     *
+     * @param mfTownName 琛楅晣鍚嶇О
+     */
+    public void setMfTownName(String mfTownName) {
+        this.mfTownName = mfTownName == null ? null : mfTownName.trim();
+    }
+
+    /**
+     * 鑾峰彇鎵�鍦ㄥ洯鍖�
+     *
+     * @return MF_Ind_District - 鎵�鍦ㄥ洯鍖�
+     */
+    public String getMfIndDistrict() {
+        return mfIndDistrict;
+    }
+
+    /**
+     * 璁剧疆鎵�鍦ㄥ洯鍖�
+     *
+     * @param mfIndDistrict 鎵�鍦ㄥ洯鍖�
+     */
+    public void setMfIndDistrict(String mfIndDistrict) {
+        this.mfIndDistrict = mfIndDistrict == null ? null : mfIndDistrict.trim();
+    }
+
+    /**
+     * 鑾峰彇鏈夋晥琛屾斂鍖哄煙瑕嗙洊: 渚嬪涓婃捣鍏ㄥ競銆佷粎闄愰潤瀹夊尯绛夛紝鍙粠鏂囦欢鎽樿涓�傜敤鑼冨洿鎻愬彇锛屾垨鏂囦欢绾у埆鍜屽搴旇鏀垮尯鍒掓彁鍙�
+     *
+     * @return MF_Area_Coverage - 鏈夋晥琛屾斂鍖哄煙瑕嗙洊: 渚嬪涓婃捣鍏ㄥ競銆佷粎闄愰潤瀹夊尯绛夛紝鍙粠鏂囦欢鎽樿涓�傜敤鑼冨洿鎻愬彇锛屾垨鏂囦欢绾у埆鍜屽搴旇鏀垮尯鍒掓彁鍙�
+     */
+    public String getMfAreaCoverage() {
+        return mfAreaCoverage;
+    }
+
+    /**
+     * 璁剧疆鏈夋晥琛屾斂鍖哄煙瑕嗙洊: 渚嬪涓婃捣鍏ㄥ競銆佷粎闄愰潤瀹夊尯绛夛紝鍙粠鏂囦欢鎽樿涓�傜敤鑼冨洿鎻愬彇锛屾垨鏂囦欢绾у埆鍜屽搴旇鏀垮尯鍒掓彁鍙�
+     *
+     * @param mfAreaCoverage 鏈夋晥琛屾斂鍖哄煙瑕嗙洊: 渚嬪涓婃捣鍏ㄥ競銆佷粎闄愰潤瀹夊尯绛夛紝鍙粠鏂囦欢鎽樿涓�傜敤鑼冨洿鎻愬彇锛屾垨鏂囦欢绾у埆鍜屽搴旇鏀垮尯鍒掓彁鍙�
+     */
+    public void setMfAreaCoverage(String mfAreaCoverage) {
+        this.mfAreaCoverage = mfAreaCoverage == null ? null : mfAreaCoverage.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢绫诲埆: 1锛氬浗瀹舵硶寰嬶紱2锛氬浗瀹舵硶瑙勶紱3锛氬湴鏂规潯渚嬶紱4锛氱鐞嗚瀹氾紱5锛氬疄鏂藉姙娉曪紱6锛氳鏀块�氱煡锛�7锛氭妧鏈爣鍑嗭紱8锛氭湇鍔℃爣鍑嗭紱9锛氭妧鏈鑼冿紱10锛氬彂灞曡鍒掞紱11锛氬簲鎬ラ妗堬紱12锛氭墽娉曡В閲婏紱13锛氱鐞嗚В璇伙紱99锛氬叾浠栵紱
+     *
+     * @return MF_File_Type - 鏂囦欢绫诲埆: 1锛氬浗瀹舵硶寰嬶紱2锛氬浗瀹舵硶瑙勶紱3锛氬湴鏂规潯渚嬶紱4锛氱鐞嗚瀹氾紱5锛氬疄鏂藉姙娉曪紱6锛氳鏀块�氱煡锛�7锛氭妧鏈爣鍑嗭紱8锛氭湇鍔℃爣鍑嗭紱9锛氭妧鏈鑼冿紱10锛氬彂灞曡鍒掞紱11锛氬簲鎬ラ妗堬紱12锛氭墽娉曡В閲婏紱13锛氱鐞嗚В璇伙紱99锛氬叾浠栵紱
+     */
+    public Byte getMfFileType() {
+        return mfFileType;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢绫诲埆: 1锛氬浗瀹舵硶寰嬶紱2锛氬浗瀹舵硶瑙勶紱3锛氬湴鏂规潯渚嬶紱4锛氱鐞嗚瀹氾紱5锛氬疄鏂藉姙娉曪紱6锛氳鏀块�氱煡锛�7锛氭妧鏈爣鍑嗭紱8锛氭湇鍔℃爣鍑嗭紱9锛氭妧鏈鑼冿紱10锛氬彂灞曡鍒掞紱11锛氬簲鎬ラ妗堬紱12锛氭墽娉曡В閲婏紱13锛氱鐞嗚В璇伙紱99锛氬叾浠栵紱
+     *
+     * @param mfFileType 鏂囦欢绫诲埆: 1锛氬浗瀹舵硶寰嬶紱2锛氬浗瀹舵硶瑙勶紱3锛氬湴鏂规潯渚嬶紱4锛氱鐞嗚瀹氾紱5锛氬疄鏂藉姙娉曪紱6锛氳鏀块�氱煡锛�7锛氭妧鏈爣鍑嗭紱8锛氭湇鍔℃爣鍑嗭紱9锛氭妧鏈鑼冿紱10锛氬彂灞曡鍒掞紱11锛氬簲鎬ラ妗堬紱12锛氭墽娉曡В閲婏紱13锛氱鐞嗚В璇伙紱99锛氬叾浠栵紱
+     */
+    public void setMfFileType(Byte mfFileType) {
+        this.mfFileType = mfFileType;
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈鐜繚瑕佺礌澶х被: 1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     *
+     * @return MF_Ep_Item_Type - 鍏宠仈鐜繚瑕佺礌澶х被: 1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     */
+    public Byte getMfEpItemType() {
+        return mfEpItemType;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈鐜繚瑕佺礌澶х被: 1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     *
+     * @param mfEpItemType 鍏宠仈鐜繚瑕佺礌澶х被: 1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     */
+    public void setMfEpItemType(Byte mfEpItemType) {
+        this.mfEpItemType = mfEpItemType;
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈鐜繚瑕佺礌灏忕被: 澶ф皵瀵瑰簲灏忕被锛�1锛歅M锛�2锛歂OX锛�3锛歄3锛�4锛歏OCs锛�5锛氬伐涓氬簾姘旓紱6锛氭満鍔ㄨ溅灏炬皵锛�7锛氭壃灏橈紱8锛氶楗补鐑燂紱9锛氭伓鑷紱99锛氬叾浠栵紱鍏朵粬鍙傝鏁版嵁婧愪唬鐮佽〃
+     *
+     * @return MF_Ep_Item_Subtype - 鍏宠仈鐜繚瑕佺礌灏忕被: 澶ф皵瀵瑰簲灏忕被锛�1锛歅M锛�2锛歂OX锛�3锛歄3锛�4锛歏OCs锛�5锛氬伐涓氬簾姘旓紱6锛氭満鍔ㄨ溅灏炬皵锛�7锛氭壃灏橈紱8锛氶楗补鐑燂紱9锛氭伓鑷紱99锛氬叾浠栵紱鍏朵粬鍙傝鏁版嵁婧愪唬鐮佽〃
+     */
+    public Byte getMfEpItemSubtype() {
+        return mfEpItemSubtype;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈鐜繚瑕佺礌灏忕被: 澶ф皵瀵瑰簲灏忕被锛�1锛歅M锛�2锛歂OX锛�3锛歄3锛�4锛歏OCs锛�5锛氬伐涓氬簾姘旓紱6锛氭満鍔ㄨ溅灏炬皵锛�7锛氭壃灏橈紱8锛氶楗补鐑燂紱9锛氭伓鑷紱99锛氬叾浠栵紱鍏朵粬鍙傝鏁版嵁婧愪唬鐮佽〃
+     *
+     * @param mfEpItemSubtype 鍏宠仈鐜繚瑕佺礌灏忕被: 澶ф皵瀵瑰簲灏忕被锛�1锛歅M锛�2锛歂OX锛�3锛歄3锛�4锛歏OCs锛�5锛氬伐涓氬簾姘旓紱6锛氭満鍔ㄨ溅灏炬皵锛�7锛氭壃灏橈紱8锛氶楗补鐑燂紱9锛氭伓鑷紱99锛氬叾浠栵紱鍏朵粬鍙傝鏁版嵁婧愪唬鐮佽〃
+     */
+    public void setMfEpItemSubtype(Byte mfEpItemSubtype) {
+        this.mfEpItemSubtype = mfEpItemSubtype;
+    }
+
+    /**
+     * 鑾峰彇鍙戝竷鍗曚綅鎴栫粍缁�
+     *
+     * @return MF_Release_Org - 鍙戝竷鍗曚綅鎴栫粍缁�
+     */
+    public String getMfReleaseOrg() {
+        return mfReleaseOrg;
+    }
+
+    /**
+     * 璁剧疆鍙戝竷鍗曚綅鎴栫粍缁�
+     *
+     * @param mfReleaseOrg 鍙戝竷鍗曚綅鎴栫粍缁�
+     */
+    public void setMfReleaseOrg(String mfReleaseOrg) {
+        this.mfReleaseOrg = mfReleaseOrg == null ? null : mfReleaseOrg.trim();
+    }
+
+    /**
+     * 鑾峰彇鍙戝竷鏃ユ湡
+     *
+     * @return MF_Release_Date - 鍙戝竷鏃ユ湡
+     */
+    public Date getMfReleaseDate() {
+        return mfReleaseDate;
+    }
+
+    /**
+     * 璁剧疆鍙戝竷鏃ユ湡
+     *
+     * @param mfReleaseDate 鍙戝竷鏃ユ湡
+     */
+    public void setMfReleaseDate(Date mfReleaseDate) {
+        this.mfReleaseDate = mfReleaseDate;
+    }
+
+    /**
+     * 鑾峰彇鐢熸晥寮�濮嬫椂闂�
+     *
+     * @return MF_Effective_Date - 鐢熸晥寮�濮嬫椂闂�
+     */
+    public Date getMfEffectiveDate() {
+        return mfEffectiveDate;
+    }
+
+    /**
+     * 璁剧疆鐢熸晥寮�濮嬫椂闂�
+     *
+     * @param mfEffectiveDate 鐢熸晥寮�濮嬫椂闂�
+     */
+    public void setMfEffectiveDate(Date mfEffectiveDate) {
+        this.mfEffectiveDate = mfEffectiveDate;
+    }
+
+    /**
+     * 鑾峰彇鐢熸晥鎴鏃堕棿
+     *
+     * @return MF_Closing_Date - 鐢熸晥鎴鏃堕棿
+     */
+    public Date getMfClosingDate() {
+        return mfClosingDate;
+    }
+
+    /**
+     * 璁剧疆鐢熸晥鎴鏃堕棿
+     *
+     * @param mfClosingDate 鐢熸晥鎴鏃堕棿
+     */
+    public void setMfClosingDate(Date mfClosingDate) {
+        this.mfClosingDate = mfClosingDate;
+    }
+
+    /**
+     * 鑾峰彇鏈夋晥鏈�
+     *
+     * @return MF_Effective_Time - 鏈夋晥鏈�
+     */
+    public String getMfEffectiveTime() {
+        return mfEffectiveTime;
+    }
+
+    /**
+     * 璁剧疆鏈夋晥鏈�
+     *
+     * @param mfEffectiveTime 鏈夋晥鏈�
+     */
+    public void setMfEffectiveTime(String mfEffectiveTime) {
+        this.mfEffectiveTime = mfEffectiveTime == null ? null : mfEffectiveTime.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢渚濇嵁
+     *
+     * @return MF_File_Basis - 鏂囦欢渚濇嵁
+     */
+    public String getMfFileBasis() {
+        return mfFileBasis;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢渚濇嵁
+     *
+     * @param mfFileBasis 鏂囦欢渚濇嵁
+     */
+    public void setMfFileBasis(String mfFileBasis) {
+        this.mfFileBasis = mfFileBasis == null ? null : mfFileBasis.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢鎽樿
+     *
+     * @return MF_Summary - 鏂囦欢鎽樿
+     */
+    public String getMfSummary() {
+        return mfSummary;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢鎽樿
+     *
+     * @param mfSummary 鏂囦欢鎽樿
+     */
+    public void setMfSummary(String mfSummary) {
+        this.mfSummary = mfSummary == null ? null : mfSummary.trim();
+    }
+
+    /**
+     * 鑾峰彇闄勪欢鎴栭檮灞炲濯掍綋鏉愭枡璺緞: 鍙兘瀛樺湪澶氫釜璺緞锛屸�滐紱鈥濆垎鍓�
+     *
+     * @return MF_Sub_File_Url - 闄勪欢鎴栭檮灞炲濯掍綋鏉愭枡璺緞: 鍙兘瀛樺湪澶氫釜璺緞锛屸�滐紱鈥濆垎鍓�
+     */
+    public String getMfSubFileUrl() {
+        return mfSubFileUrl;
+    }
+
+    /**
+     * 璁剧疆闄勪欢鎴栭檮灞炲濯掍綋鏉愭枡璺緞: 鍙兘瀛樺湪澶氫釜璺緞锛屸�滐紱鈥濆垎鍓�
+     *
+     * @param mfSubFileUrl 闄勪欢鎴栭檮灞炲濯掍綋鏉愭枡璺緞: 鍙兘瀛樺湪澶氫釜璺緞锛屸�滐紱鈥濆垎鍓�
+     */
+    public void setMfSubFileUrl(String mfSubFileUrl) {
+        this.mfSubFileUrl = mfSubFileUrl == null ? null : mfSubFileUrl.trim();
+    }
+
+    /**
+     * 鑾峰彇鍘熷鏂囦欢瀛樺偍鏍煎紡: 1锛歸ord;2:pdf;3:Excel锛�4锛歱pt;99:鍏朵粬锛�
+     *
+     * @return MF_Save_Type - 鍘熷鏂囦欢瀛樺偍鏍煎紡: 1锛歸ord;2:pdf;3:Excel锛�4锛歱pt;99:鍏朵粬锛�
+     */
+    public Byte getMfSaveType() {
+        return mfSaveType;
+    }
+
+    /**
+     * 璁剧疆鍘熷鏂囦欢瀛樺偍鏍煎紡: 1锛歸ord;2:pdf;3:Excel锛�4锛歱pt;99:鍏朵粬锛�
+     *
+     * @param mfSaveType 鍘熷鏂囦欢瀛樺偍鏍煎紡: 1锛歸ord;2:pdf;3:Excel锛�4锛歱pt;99:鍏朵粬锛�
+     */
+    public void setMfSaveType(Byte mfSaveType) {
+        this.mfSaveType = mfSaveType;
+    }
+
+    /**
+     * 鑾峰彇鍘熷鏂囦欢璺緞: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     *
+     * @return MF_File_Url - 鍘熷鏂囦欢璺緞: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     */
+    public String getMfFileUrl() {
+        return mfFileUrl;
+    }
+
+    /**
+     * 璁剧疆鍘熷鏂囦欢璺緞: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     *
+     * @param mfFileUrl 鍘熷鏂囦欢璺緞: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     */
+    public void setMfFileUrl(String mfFileUrl) {
+        this.mfFileUrl = mfFileUrl == null ? null : mfFileUrl.trim();
+    }
+
+    /**
+     * 鑾峰彇姘村嵃鍔犲瘑鏂囦欢璺緞: 鍔犲叕鍙告按鍗板苟鍔犲瘑锛屼笉鍙紪杈戯紝鐢ㄤ簬鎺堟潈鐢ㄦ埛娴忚鎴栦笅杞�
+     *
+     * @return MF_File_Encryption_Url - 姘村嵃鍔犲瘑鏂囦欢璺緞: 鍔犲叕鍙告按鍗板苟鍔犲瘑锛屼笉鍙紪杈戯紝鐢ㄤ簬鎺堟潈鐢ㄦ埛娴忚鎴栦笅杞�
+     */
+    public String getMfFileEncryptionUrl() {
+        return mfFileEncryptionUrl;
+    }
+
+    /**
+     * 璁剧疆姘村嵃鍔犲瘑鏂囦欢璺緞: 鍔犲叕鍙告按鍗板苟鍔犲瘑锛屼笉鍙紪杈戯紝鐢ㄤ簬鎺堟潈鐢ㄦ埛娴忚鎴栦笅杞�
+     *
+     * @param mfFileEncryptionUrl 姘村嵃鍔犲瘑鏂囦欢璺緞: 鍔犲叕鍙告按鍗板苟鍔犲瘑锛屼笉鍙紪杈戯紝鐢ㄤ簬鎺堟潈鐢ㄦ埛娴忚鎴栦笅杞�
+     */
+    public void setMfFileEncryptionUrl(String mfFileEncryptionUrl) {
+        this.mfFileEncryptionUrl = mfFileEncryptionUrl == null ? null : mfFileEncryptionUrl.trim();
+    }
+
+    /**
+     * 鑾峰彇鍒涘缓鏃堕棿
+     *
+     * @return MF_Create_Time - 鍒涘缓鏃堕棿
+     */
+    public Date getMfCreateTime() {
+        return mfCreateTime;
+    }
+
+    /**
+     * 璁剧疆鍒涘缓鏃堕棿
+     *
+     * @param mfCreateTime 鍒涘缓鏃堕棿
+     */
+    public void setMfCreateTime(Date mfCreateTime) {
+        this.mfCreateTime = mfCreateTime;
+    }
+
+    /**
+     * 鑾峰彇鏇存柊鏃堕棿
+     *
+     * @return MF_Update_Time - 鏇存柊鏃堕棿
+     */
+    public Date getMfUpdateTime() {
+        return mfUpdateTime;
+    }
+
+    /**
+     * 璁剧疆鏇存柊鏃堕棿
+     *
+     * @param mfUpdateTime 鏇存柊鏃堕棿
+     */
+    public void setMfUpdateTime(Date mfUpdateTime) {
+        this.mfUpdateTime = mfUpdateTime;
+    }
+
+    /**
+     * @return MF_Extension1
+     */
+    public String getMfExtension1() {
+        return mfExtension1;
+    }
+
+    /**
+     * @param mfExtension1
+     */
+    public void setMfExtension1(String mfExtension1) {
+        this.mfExtension1 = mfExtension1 == null ? null : mfExtension1.trim();
+    }
+
+    /**
+     * @return MF_Extension2
+     */
+    public String getMfExtension2() {
+        return mfExtension2;
+    }
+
+    /**
+     * @param mfExtension2
+     */
+    public void setMfExtension2(String mfExtension2) {
+        this.mfExtension2 = mfExtension2 == null ? null : mfExtension2.trim();
+    }
+
+    /**
+     * @return MF_Extension3
+     */
+    public String getMfExtension3() {
+        return mfExtension3;
+    }
+
+    /**
+     * @param mfExtension3
+     */
+    public void setMfExtension3(String mfExtension3) {
+        this.mfExtension3 = mfExtension3 == null ? null : mfExtension3.trim();
+    }
+
+    /**
+     * @return MF_Remark
+     */
+    public String getMfRemark() {
+        return mfRemark;
+    }
+
+    /**
+     * @param mfRemark
+     */
+    public void setMfRemark(String mfRemark) {
+        this.mfRemark = mfRemark == null ? null : mfRemark.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢淇鎴栨洿鏂版儏鍐�: 鍙兘瀛樺湪澶氭淇锛岀敤鈥滐紱鈥濆垎鍓�
+     *
+     * @return MF_File_Revise - 鏂囦欢淇鎴栨洿鏂版儏鍐�: 鍙兘瀛樺湪澶氭淇锛岀敤鈥滐紱鈥濆垎鍓�
+     */
+    public String getMfFileRevise() {
+        return mfFileRevise;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢淇鎴栨洿鏂版儏鍐�: 鍙兘瀛樺湪澶氭淇锛岀敤鈥滐紱鈥濆垎鍓�
+     *
+     * @param mfFileRevise 鏂囦欢淇鎴栨洿鏂版儏鍐�: 鍙兘瀛樺湪澶氭淇锛岀敤鈥滐紱鈥濆垎鍓�
+     */
+    public void setMfFileRevise(String mfFileRevise) {
+        this.mfFileRevise = mfFileRevise == null ? null : mfFileRevise.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢鎽樿鍏抽敭瀛�: 涓�绾у叧閿瓧锛屽父鐢ㄥ叧閿瓧锛岃嫢娑夊強澶氫釜鍏抽敭瀛楋紝鍏抽敭瀛椾箣闂粹�溿�佲�濆垎鍓�
+     *
+     * @return MF_Keyword_Lv1 - 鏂囦欢鎽樿鍏抽敭瀛�: 涓�绾у叧閿瓧锛屽父鐢ㄥ叧閿瓧锛岃嫢娑夊強澶氫釜鍏抽敭瀛楋紝鍏抽敭瀛椾箣闂粹�溿�佲�濆垎鍓�
+     */
+    public String getMfKeywordLv1() {
+        return mfKeywordLv1;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢鎽樿鍏抽敭瀛�: 涓�绾у叧閿瓧锛屽父鐢ㄥ叧閿瓧锛岃嫢娑夊強澶氫釜鍏抽敭瀛楋紝鍏抽敭瀛椾箣闂粹�溿�佲�濆垎鍓�
+     *
+     * @param mfKeywordLv1 鏂囦欢鎽樿鍏抽敭瀛�: 涓�绾у叧閿瓧锛屽父鐢ㄥ叧閿瓧锛岃嫢娑夊強澶氫釜鍏抽敭瀛楋紝鍏抽敭瀛椾箣闂粹�溿�佲�濆垎鍓�
+     */
+    public void setMfKeywordLv1(String mfKeywordLv1) {
+        this.mfKeywordLv1 = mfKeywordLv1 == null ? null : mfKeywordLv1.trim();
+    }
+
+    /**
+     * 鑾峰彇瀵硅薄鍙婅涓哄叧閿瓧: 浜岀骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @return MF_Keyword_Lv2 - 瀵硅薄鍙婅涓哄叧閿瓧: 浜岀骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public String getMfKeywordLv2() {
+        return mfKeywordLv2;
+    }
+
+    /**
+     * 璁剧疆瀵硅薄鍙婅涓哄叧閿瓧: 浜岀骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @param mfKeywordLv2 瀵硅薄鍙婅涓哄叧閿瓧: 浜岀骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public void setMfKeywordLv2(String mfKeywordLv2) {
+        this.mfKeywordLv2 = mfKeywordLv2 == null ? null : mfKeywordLv2.trim();
+    }
+
+    /**
+     * 鑾峰彇璁炬柦鎴栫墿鍝佸叧閿瓧锛� 涓夌骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @return MF_Keyword_Lv3 - 璁炬柦鎴栫墿鍝佸叧閿瓧锛� 涓夌骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public String getMfKeywordLv3() {
+        return mfKeywordLv3;
+    }
+
+    /**
+     * 璁剧疆璁炬柦鎴栫墿鍝佸叧閿瓧锛� 涓夌骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @param mfKeywordLv3 璁炬柦鎴栫墿鍝佸叧閿瓧锛� 涓夌骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public void setMfKeywordLv3(String mfKeywordLv3) {
+        this.mfKeywordLv3 = mfKeywordLv3 == null ? null : mfKeywordLv3.trim();
+    }
+
+    /**
+     * 鑾峰彇鏈烘瀯鎴栧崟浣嶅叧閿瓧锛� 鍥涚骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @return MF_Keyword_Lv4 - 鏈烘瀯鎴栧崟浣嶅叧閿瓧锛� 鍥涚骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public String getMfKeywordLv4() {
+        return mfKeywordLv4;
+    }
+
+    /**
+     * 璁剧疆鏈烘瀯鎴栧崟浣嶅叧閿瓧锛� 鍥涚骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @param mfKeywordLv4 鏈烘瀯鎴栧崟浣嶅叧閿瓧锛� 鍥涚骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public void setMfKeywordLv4(String mfKeywordLv4) {
+        this.mfKeywordLv4 = mfKeywordLv4 == null ? null : mfKeywordLv4.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/entity/MgtItem.java b/src/main/kotlin/cn/flightfeather/supervision/domain/entity/MgtItem.java
new file mode 100644
index 0000000..0ce6254
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/entity/MgtItem.java
@@ -0,0 +1,566 @@
+package cn.flightfeather.supervision.domain.entity;
+
+import java.util.Date;
+import javax.persistence.*;
+
+@Table(name = "epk_t_mgtitem")
+public class MgtItem {
+    /**
+     * 鏉$洰鍞竴鏍囪瘑: 鏈�浣庝竴绾ф潯鐩紝鏈�澶氭秹鍙婁簩绾ф潯鐩�
+     */
+    @Id
+    @Column(name = "MI_GUID")
+    private String miGuid;
+
+    /**
+     * 鏉$洰缂栫爜: 鍞竴鏍囪瘑锛氭枃浠剁紪鐮�+3浣嶆潯鐩簭鍙凤紝鍏�21浣嶃�傛渶浣庝竴绾ф潯鐩紝鏈�澶氭秹鍙婁簩绾ф潯鐩�
+     */
+    @Column(name = "MI_Item_Code")
+    private String miItemCode;
+
+    /**
+     * 鏄惁鏈変簩绾ф潯鐩�: 0锛氬惁锛�1锛氭槸銆傝嫢涓哄惁锛屽垯鏉$洰鏂囨湰鍐呭鍗充负鏉$洰鍐呭
+     */
+    @Column(name = "MI_Has_Item_Lv2")
+    private Boolean miHasItemLv2;
+
+    /**
+     * 浜岀骇鏉$洰搴忓彿: 鍙负绌猴紝鑻ユ棤浜岀骇鏉$洰鏃�
+     */
+    @Column(name = "MI_Item_Lv2_Id")
+    private Integer miItemLv2Id;
+
+    /**
+     * 鏄惁鏈夋潯鐩�:0锛氬惁锛�1锛氭槸銆傝嫢涓哄惁锛屽垯鏉$洰鏂囨湰鍐呭鍗崇珷鑺傚唴瀹�
+     */
+    @Column(name = "MI_Has_Item")
+    private Boolean miHasItem;
+
+    /**
+     * 鏉$洰鍚嶇О: 鍙负绌猴紝鑻ユ棤鏉$洰鏃�
+     */
+    @Column(name = "MI_Item_Name")
+    private String miItemName;
+
+    /**
+     * 鏉$洰搴忓彿: 鍙负绌猴紝鑻ユ棤鏉$洰鏃�
+     */
+    @Column(name = "MI_Item_Id")
+    private Integer miItemId;
+
+    /**
+     * 绔犺妭鍚嶇О
+     */
+    @Column(name = "MI_Chapter_Name")
+    private String miChapterName;
+
+    /**
+     * 绔犺妭搴忓彿
+     */
+    @Column(name = "MI_Chapter_Id")
+    private Integer miChapterId;
+
+    /**
+     * 绔犺妭鍏抽敭瀛�: 鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    @Column(name = "MI_Chapter_Keyword")
+    private String miChapterKeyword;
+
+    /**
+     * 绠$悊瑕佹眰鏂囦欢ID
+     */
+    @Column(name = "MF_GUID")
+    private String mfGuid;
+
+    /**
+     * 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    @Column(name = "MF_Name")
+    private String mfName;
+
+    /**
+     * 绠$悊瑕佹眰鏂囦欢绠�绉�
+     */
+    @Column(name = "MF_Short_Name")
+    private String mfShortName;
+
+    /**
+     * 鍘熷鏂囧彿
+     */
+    @Column(name = "MF_Reference_Number")
+    private String mfReferenceNumber;
+
+    /**
+     * 鏂囦欢缂栫爜: 涓嶈兘涓虹┖锛岀敤浜庡急鍏宠仈
+     */
+    @Column(name = "MF_File_Code")
+    private String mfFileCode;
+
+    /**
+     * 鏉$洰闄勪欢銆侀檮鍥剧瓑澶氬獟浣撶礌鏉愯矾寰�: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     */
+    @Column(name = "MI_Item_Url")
+    private String miItemUrl;
+
+    /**
+     * 鏉$洰鍏抽敭瀛�: 鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥�;鈥濆垎鍓�
+     */
+    @Column(name = "MI_Keyword")
+    private String miKeyword;
+
+    /**
+     * 鍐呴儴鍏宠仈鏉$洰: 鍐呴儴鍏宠仈鏉$洰鐨勬潯鐩紪鐮侀泦鍚堬紝澶氫釜鏉$洰缂栫爜闂粹��;鈥濆垎鍓�
+     */
+    @Column(name = "MI_Related_Items")
+    private String miRelatedItems;
+
+    @Column(name = "MI_Create_Time")
+    private Date miCreateTime;
+
+    @Column(name = "MI_Update_Time")
+    private Date miUpdateTime;
+
+    @Column(name = "MI_Extension1")
+    private String miExtension1;
+
+    @Column(name = "MI_Extension2")
+    private String miExtension2;
+
+    @Column(name = "MI_Extension3")
+    private String miExtension3;
+
+    @Column(name = "MI_Remark")
+    private String miRemark;
+
+    /**
+     * 鏉$洰鏂囨湰鍐呭: 绔犺妭銆佹潯鐩垨浜岀骇鏉$洰
+     */
+    @Column(name = "MI_Item_Content")
+    private String miItemContent;
+
+    /**
+     * 鑾峰彇鏉$洰鍞竴鏍囪瘑: 鏈�浣庝竴绾ф潯鐩紝鏈�澶氭秹鍙婁簩绾ф潯鐩�
+     *
+     * @return MI_GUID - 鏉$洰鍞竴鏍囪瘑: 鏈�浣庝竴绾ф潯鐩紝鏈�澶氭秹鍙婁簩绾ф潯鐩�
+     */
+    public String getMiGuid() {
+        return miGuid;
+    }
+
+    /**
+     * 璁剧疆鏉$洰鍞竴鏍囪瘑: 鏈�浣庝竴绾ф潯鐩紝鏈�澶氭秹鍙婁簩绾ф潯鐩�
+     *
+     * @param miGuid 鏉$洰鍞竴鏍囪瘑: 鏈�浣庝竴绾ф潯鐩紝鏈�澶氭秹鍙婁簩绾ф潯鐩�
+     */
+    public void setMiGuid(String miGuid) {
+        this.miGuid = miGuid == null ? null : miGuid.trim();
+    }
+
+    /**
+     * 鑾峰彇鏉$洰缂栫爜: 鍞竴鏍囪瘑锛氭枃浠剁紪鐮�+3浣嶆潯鐩簭鍙凤紝鍏�21浣嶃�傛渶浣庝竴绾ф潯鐩紝鏈�澶氭秹鍙婁簩绾ф潯鐩�
+     *
+     * @return MI_Item_Code - 鏉$洰缂栫爜: 鍞竴鏍囪瘑锛氭枃浠剁紪鐮�+3浣嶆潯鐩簭鍙凤紝鍏�21浣嶃�傛渶浣庝竴绾ф潯鐩紝鏈�澶氭秹鍙婁簩绾ф潯鐩�
+     */
+    public String getMiItemCode() {
+        return miItemCode;
+    }
+
+    /**
+     * 璁剧疆鏉$洰缂栫爜: 鍞竴鏍囪瘑锛氭枃浠剁紪鐮�+3浣嶆潯鐩簭鍙凤紝鍏�21浣嶃�傛渶浣庝竴绾ф潯鐩紝鏈�澶氭秹鍙婁簩绾ф潯鐩�
+     *
+     * @param miItemCode 鏉$洰缂栫爜: 鍞竴鏍囪瘑锛氭枃浠剁紪鐮�+3浣嶆潯鐩簭鍙凤紝鍏�21浣嶃�傛渶浣庝竴绾ф潯鐩紝鏈�澶氭秹鍙婁簩绾ф潯鐩�
+     */
+    public void setMiItemCode(String miItemCode) {
+        this.miItemCode = miItemCode == null ? null : miItemCode.trim();
+    }
+
+    /**
+     * 鑾峰彇鏄惁鏈変簩绾ф潯鐩�: 0锛氬惁锛�1锛氭槸銆傝嫢涓哄惁锛屽垯鏉$洰鏂囨湰鍐呭鍗充负鏉$洰鍐呭
+     *
+     * @return MI_Has_Item_Lv2 - 鏄惁鏈変簩绾ф潯鐩�: 0锛氬惁锛�1锛氭槸銆傝嫢涓哄惁锛屽垯鏉$洰鏂囨湰鍐呭鍗充负鏉$洰鍐呭
+     */
+    public Boolean getMiHasItemLv2() {
+        return miHasItemLv2;
+    }
+
+    /**
+     * 璁剧疆鏄惁鏈変簩绾ф潯鐩�: 0锛氬惁锛�1锛氭槸銆傝嫢涓哄惁锛屽垯鏉$洰鏂囨湰鍐呭鍗充负鏉$洰鍐呭
+     *
+     * @param miHasItemLv2 鏄惁鏈変簩绾ф潯鐩�: 0锛氬惁锛�1锛氭槸銆傝嫢涓哄惁锛屽垯鏉$洰鏂囨湰鍐呭鍗充负鏉$洰鍐呭
+     */
+    public void setMiHasItemLv2(Boolean miHasItemLv2) {
+        this.miHasItemLv2 = miHasItemLv2;
+    }
+
+    /**
+     * 鑾峰彇浜岀骇鏉$洰搴忓彿: 鍙负绌猴紝鑻ユ棤浜岀骇鏉$洰鏃�
+     *
+     * @return MI_Item_Lv2_Id - 浜岀骇鏉$洰搴忓彿: 鍙负绌猴紝鑻ユ棤浜岀骇鏉$洰鏃�
+     */
+    public Integer getMiItemLv2Id() {
+        return miItemLv2Id;
+    }
+
+    /**
+     * 璁剧疆浜岀骇鏉$洰搴忓彿: 鍙负绌猴紝鑻ユ棤浜岀骇鏉$洰鏃�
+     *
+     * @param miItemLv2Id 浜岀骇鏉$洰搴忓彿: 鍙负绌猴紝鑻ユ棤浜岀骇鏉$洰鏃�
+     */
+    public void setMiItemLv2Id(Integer miItemLv2Id) {
+        this.miItemLv2Id = miItemLv2Id;
+    }
+
+    /**
+     * 鑾峰彇鏄惁鏈夋潯鐩�:0锛氬惁锛�1锛氭槸銆傝嫢涓哄惁锛屽垯鏉$洰鏂囨湰鍐呭鍗崇珷鑺傚唴瀹�
+     *
+     * @return MI_Has_Item - 鏄惁鏈夋潯鐩�:0锛氬惁锛�1锛氭槸銆傝嫢涓哄惁锛屽垯鏉$洰鏂囨湰鍐呭鍗崇珷鑺傚唴瀹�
+     */
+    public Boolean getMiHasItem() {
+        return miHasItem;
+    }
+
+    /**
+     * 璁剧疆鏄惁鏈夋潯鐩�:0锛氬惁锛�1锛氭槸銆傝嫢涓哄惁锛屽垯鏉$洰鏂囨湰鍐呭鍗崇珷鑺傚唴瀹�
+     *
+     * @param miHasItem 鏄惁鏈夋潯鐩�:0锛氬惁锛�1锛氭槸銆傝嫢涓哄惁锛屽垯鏉$洰鏂囨湰鍐呭鍗崇珷鑺傚唴瀹�
+     */
+    public void setMiHasItem(Boolean miHasItem) {
+        this.miHasItem = miHasItem;
+    }
+
+    /**
+     * 鑾峰彇鏉$洰鍚嶇О: 鍙负绌猴紝鑻ユ棤鏉$洰鏃�
+     *
+     * @return MI_Item_Name - 鏉$洰鍚嶇О: 鍙负绌猴紝鑻ユ棤鏉$洰鏃�
+     */
+    public String getMiItemName() {
+        return miItemName;
+    }
+
+    /**
+     * 璁剧疆鏉$洰鍚嶇О: 鍙负绌猴紝鑻ユ棤鏉$洰鏃�
+     *
+     * @param miItemName 鏉$洰鍚嶇О: 鍙负绌猴紝鑻ユ棤鏉$洰鏃�
+     */
+    public void setMiItemName(String miItemName) {
+        this.miItemName = miItemName == null ? null : miItemName.trim();
+    }
+
+    /**
+     * 鑾峰彇鏉$洰搴忓彿: 鍙负绌猴紝鑻ユ棤鏉$洰鏃�
+     *
+     * @return MI_Item_Id - 鏉$洰搴忓彿: 鍙负绌猴紝鑻ユ棤鏉$洰鏃�
+     */
+    public Integer getMiItemId() {
+        return miItemId;
+    }
+
+    /**
+     * 璁剧疆鏉$洰搴忓彿: 鍙负绌猴紝鑻ユ棤鏉$洰鏃�
+     *
+     * @param miItemId 鏉$洰搴忓彿: 鍙负绌猴紝鑻ユ棤鏉$洰鏃�
+     */
+    public void setMiItemId(Integer miItemId) {
+        this.miItemId = miItemId;
+    }
+
+    /**
+     * 鑾峰彇绔犺妭鍚嶇О
+     *
+     * @return MI_Chapter_Name - 绔犺妭鍚嶇О
+     */
+    public String getMiChapterName() {
+        return miChapterName;
+    }
+
+    /**
+     * 璁剧疆绔犺妭鍚嶇О
+     *
+     * @param miChapterName 绔犺妭鍚嶇О
+     */
+    public void setMiChapterName(String miChapterName) {
+        this.miChapterName = miChapterName == null ? null : miChapterName.trim();
+    }
+
+    /**
+     * 鑾峰彇绔犺妭搴忓彿
+     *
+     * @return MI_Chapter_Id - 绔犺妭搴忓彿
+     */
+    public Integer getMiChapterId() {
+        return miChapterId;
+    }
+
+    /**
+     * 璁剧疆绔犺妭搴忓彿
+     *
+     * @param miChapterId 绔犺妭搴忓彿
+     */
+    public void setMiChapterId(Integer miChapterId) {
+        this.miChapterId = miChapterId;
+    }
+
+    /**
+     * 鑾峰彇绔犺妭鍏抽敭瀛�: 鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @return MI_Chapter_Keyword - 绔犺妭鍏抽敭瀛�: 鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public String getMiChapterKeyword() {
+        return miChapterKeyword;
+    }
+
+    /**
+     * 璁剧疆绔犺妭鍏抽敭瀛�: 鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @param miChapterKeyword 绔犺妭鍏抽敭瀛�: 鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public void setMiChapterKeyword(String miChapterKeyword) {
+        this.miChapterKeyword = miChapterKeyword == null ? null : miChapterKeyword.trim();
+    }
+
+    /**
+     * 鑾峰彇绠$悊瑕佹眰鏂囦欢ID
+     *
+     * @return MF_GUID - 绠$悊瑕佹眰鏂囦欢ID
+     */
+    public String getMfGuid() {
+        return mfGuid;
+    }
+
+    /**
+     * 璁剧疆绠$悊瑕佹眰鏂囦欢ID
+     *
+     * @param mfGuid 绠$悊瑕佹眰鏂囦欢ID
+     */
+    public void setMfGuid(String mfGuid) {
+        this.mfGuid = mfGuid == null ? null : mfGuid.trim();
+    }
+
+    /**
+     * 鑾峰彇绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     *
+     * @return MF_Name - 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    public String getMfName() {
+        return mfName;
+    }
+
+    /**
+     * 璁剧疆绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     *
+     * @param mfName 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    public void setMfName(String mfName) {
+        this.mfName = mfName == null ? null : mfName.trim();
+    }
+
+    /**
+     * 鑾峰彇绠$悊瑕佹眰鏂囦欢绠�绉�
+     *
+     * @return MF_Short_Name - 绠$悊瑕佹眰鏂囦欢绠�绉�
+     */
+    public String getMfShortName() {
+        return mfShortName;
+    }
+
+    /**
+     * 璁剧疆绠$悊瑕佹眰鏂囦欢绠�绉�
+     *
+     * @param mfShortName 绠$悊瑕佹眰鏂囦欢绠�绉�
+     */
+    public void setMfShortName(String mfShortName) {
+        this.mfShortName = mfShortName == null ? null : mfShortName.trim();
+    }
+
+    /**
+     * 鑾峰彇鍘熷鏂囧彿
+     *
+     * @return MF_Reference_Number - 鍘熷鏂囧彿
+     */
+    public String getMfReferenceNumber() {
+        return mfReferenceNumber;
+    }
+
+    /**
+     * 璁剧疆鍘熷鏂囧彿
+     *
+     * @param mfReferenceNumber 鍘熷鏂囧彿
+     */
+    public void setMfReferenceNumber(String mfReferenceNumber) {
+        this.mfReferenceNumber = mfReferenceNumber == null ? null : mfReferenceNumber.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢缂栫爜: 涓嶈兘涓虹┖锛岀敤浜庡急鍏宠仈
+     *
+     * @return MF_File_Code - 鏂囦欢缂栫爜: 涓嶈兘涓虹┖锛岀敤浜庡急鍏宠仈
+     */
+    public String getMfFileCode() {
+        return mfFileCode;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢缂栫爜: 涓嶈兘涓虹┖锛岀敤浜庡急鍏宠仈
+     *
+     * @param mfFileCode 鏂囦欢缂栫爜: 涓嶈兘涓虹┖锛岀敤浜庡急鍏宠仈
+     */
+    public void setMfFileCode(String mfFileCode) {
+        this.mfFileCode = mfFileCode == null ? null : mfFileCode.trim();
+    }
+
+    /**
+     * 鑾峰彇鏉$洰闄勪欢銆侀檮鍥剧瓑澶氬獟浣撶礌鏉愯矾寰�: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     *
+     * @return MI_Item_Url - 鏉$洰闄勪欢銆侀檮鍥剧瓑澶氬獟浣撶礌鏉愯矾寰�: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     */
+    public String getMiItemUrl() {
+        return miItemUrl;
+    }
+
+    /**
+     * 璁剧疆鏉$洰闄勪欢銆侀檮鍥剧瓑澶氬獟浣撶礌鏉愯矾寰�: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     *
+     * @param miItemUrl 鏉$洰闄勪欢銆侀檮鍥剧瓑澶氬獟浣撶礌鏉愯矾寰�: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     */
+    public void setMiItemUrl(String miItemUrl) {
+        this.miItemUrl = miItemUrl == null ? null : miItemUrl.trim();
+    }
+
+    /**
+     * 鑾峰彇鏉$洰鍏抽敭瀛�: 鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥�;鈥濆垎鍓�
+     *
+     * @return MI_Keyword - 鏉$洰鍏抽敭瀛�: 鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥�;鈥濆垎鍓�
+     */
+    public String getMiKeyword() {
+        return miKeyword;
+    }
+
+    /**
+     * 璁剧疆鏉$洰鍏抽敭瀛�: 鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥�;鈥濆垎鍓�
+     *
+     * @param miKeyword 鏉$洰鍏抽敭瀛�: 鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥�;鈥濆垎鍓�
+     */
+    public void setMiKeyword(String miKeyword) {
+        this.miKeyword = miKeyword == null ? null : miKeyword.trim();
+    }
+
+    /**
+     * 鑾峰彇鍐呴儴鍏宠仈鏉$洰: 鍐呴儴鍏宠仈鏉$洰鐨勬潯鐩紪鐮侀泦鍚堬紝澶氫釜鏉$洰缂栫爜闂粹��;鈥濆垎鍓�
+     *
+     * @return MI_Related_Items - 鍐呴儴鍏宠仈鏉$洰: 鍐呴儴鍏宠仈鏉$洰鐨勬潯鐩紪鐮侀泦鍚堬紝澶氫釜鏉$洰缂栫爜闂粹��;鈥濆垎鍓�
+     */
+    public String getMiRelatedItems() {
+        return miRelatedItems;
+    }
+
+    /**
+     * 璁剧疆鍐呴儴鍏宠仈鏉$洰: 鍐呴儴鍏宠仈鏉$洰鐨勬潯鐩紪鐮侀泦鍚堬紝澶氫釜鏉$洰缂栫爜闂粹��;鈥濆垎鍓�
+     *
+     * @param miRelatedItems 鍐呴儴鍏宠仈鏉$洰: 鍐呴儴鍏宠仈鏉$洰鐨勬潯鐩紪鐮侀泦鍚堬紝澶氫釜鏉$洰缂栫爜闂粹��;鈥濆垎鍓�
+     */
+    public void setMiRelatedItems(String miRelatedItems) {
+        this.miRelatedItems = miRelatedItems == null ? null : miRelatedItems.trim();
+    }
+
+    /**
+     * @return MI_Create_Time
+     */
+    public Date getMiCreateTime() {
+        return miCreateTime;
+    }
+
+    /**
+     * @param miCreateTime
+     */
+    public void setMiCreateTime(Date miCreateTime) {
+        this.miCreateTime = miCreateTime;
+    }
+
+    /**
+     * @return MI_Update_Time
+     */
+    public Date getMiUpdateTime() {
+        return miUpdateTime;
+    }
+
+    /**
+     * @param miUpdateTime
+     */
+    public void setMiUpdateTime(Date miUpdateTime) {
+        this.miUpdateTime = miUpdateTime;
+    }
+
+    /**
+     * @return MI_Extension1
+     */
+    public String getMiExtension1() {
+        return miExtension1;
+    }
+
+    /**
+     * @param miExtension1
+     */
+    public void setMiExtension1(String miExtension1) {
+        this.miExtension1 = miExtension1 == null ? null : miExtension1.trim();
+    }
+
+    /**
+     * @return MI_Extension2
+     */
+    public String getMiExtension2() {
+        return miExtension2;
+    }
+
+    /**
+     * @param miExtension2
+     */
+    public void setMiExtension2(String miExtension2) {
+        this.miExtension2 = miExtension2 == null ? null : miExtension2.trim();
+    }
+
+    /**
+     * @return MI_Extension3
+     */
+    public String getMiExtension3() {
+        return miExtension3;
+    }
+
+    /**
+     * @param miExtension3
+     */
+    public void setMiExtension3(String miExtension3) {
+        this.miExtension3 = miExtension3 == null ? null : miExtension3.trim();
+    }
+
+    /**
+     * @return MI_Remark
+     */
+    public String getMiRemark() {
+        return miRemark;
+    }
+
+    /**
+     * @param miRemark
+     */
+    public void setMiRemark(String miRemark) {
+        this.miRemark = miRemark == null ? null : miRemark.trim();
+    }
+
+    /**
+     * 鑾峰彇鏉$洰鏂囨湰鍐呭: 绔犺妭銆佹潯鐩垨浜岀骇鏉$洰
+     *
+     * @return MI_Item_Content - 鏉$洰鏂囨湰鍐呭: 绔犺妭銆佹潯鐩垨浜岀骇鏉$洰
+     */
+    public String getMiItemContent() {
+        return miItemContent;
+    }
+
+    /**
+     * 璁剧疆鏉$洰鏂囨湰鍐呭: 绔犺妭銆佹潯鐩垨浜岀骇鏉$洰
+     *
+     * @param miItemContent 鏉$洰鏂囨湰鍐呭: 绔犺妭銆佹潯鐩垨浜岀骇鏉$洰
+     */
+    public void setMiItemContent(String miItemContent) {
+        this.miItemContent = miItemContent == null ? null : miItemContent.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/entity/SettingAnswer.java b/src/main/kotlin/cn/flightfeather/supervision/domain/entity/SettingAnswer.java
new file mode 100644
index 0000000..b6168e9
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/entity/SettingAnswer.java
@@ -0,0 +1,350 @@
+package cn.flightfeather.supervision.domain.entity;
+
+import java.util.Date;
+import javax.persistence.*;
+
+@Table(name = "epk_t_settinganswer")
+public class SettingAnswer {
+    /**
+     * 绛旀鍞竴鏍囪瘑
+     */
+    @Id
+    @Column(name = "SA_GUID")
+    private String saGuid;
+
+    /**
+     * 闂鎽樿
+     */
+    @Column(name = "SA_Summary")
+    private String saSummary;
+
+    /**
+     * 闂鍞竴鏍囪瘑
+     */
+    @Column(name = "CQ_GUID")
+    private String cqGuid;
+
+    /**
+     * 绛旀绫诲埆.1锛氫笓灞炲畾鍒剁瓟妗�:锛�2锛氭櫤鑳芥潈閲嶅洖绛旓紝9锛氬叾瀹�
+     */
+    @Column(name = "SA_Kind")
+    private Byte saKind;
+
+    /**
+     * 绛旀鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    @Column(name = "SA_Keywords")
+    private String saKeywords;
+
+    /**
+     * 绛旀浼樺厛绾у埆.鍚屼竴闂鍙兘鏈夊涓瓟妗堬紝鏁板�艰秺澶т紭鍏堢骇鍒秺楂�
+     */
+    @Column(name = "SA_Access_Level")
+    private Byte saAccessLevel;
+
+    /**
+     * 绛旀鍖归厤鏉冮噸.0-1鐨勫皬鏁帮紝鍊艰秺澶э紝涓庨棶棰樿秺鍖归厤
+     */
+    @Column(name = "SA_Weight")
+    private Double saWeight;
+
+    /**
+     * 绛旀鍐呭
+     */
+    @Column(name = "SA_Content")
+    private String saContent;
+
+    /**
+     * 绛旀鐩稿叧澶氬獟浣撶礌鏉愯矾寰�.鍙瓨瀹屾暣鐩稿璺緞
+     */
+    @Column(name = "SA_Answer_Url")
+    private String saAnswerUrl;
+
+    /**
+     * 鎬昏闂暟.瀹㈡埛绔闂鏁�
+     */
+    @Column(name = "SA_Total_Num")
+    private Integer saTotalNum;
+
+    @Column(name = "SA_Create_Time")
+    private Date saCreateTime;
+
+    @Column(name = "SA_Update_Time")
+    private Date saUpdateTime;
+
+    @Column(name = "SA_Extension1")
+    private String saExtension1;
+
+    @Column(name = "SA_Extension2")
+    private String saExtension2;
+
+    @Column(name = "SA_Extension3")
+    private String saExtension3;
+
+    @Column(name = "SA_Remark")
+    private String saRemark;
+
+    /**
+     * 鑾峰彇绛旀鍞竴鏍囪瘑
+     *
+     * @return SA_GUID - 绛旀鍞竴鏍囪瘑
+     */
+    public String getSaGuid() {
+        return saGuid;
+    }
+
+    /**
+     * 璁剧疆绛旀鍞竴鏍囪瘑
+     *
+     * @param saGuid 绛旀鍞竴鏍囪瘑
+     */
+    public void setSaGuid(String saGuid) {
+        this.saGuid = saGuid == null ? null : saGuid.trim();
+    }
+
+    /**
+     * 鑾峰彇闂鎽樿
+     *
+     * @return SA_Summary - 闂鎽樿
+     */
+    public String getSaSummary() {
+        return saSummary;
+    }
+
+    /**
+     * 璁剧疆闂鎽樿
+     *
+     * @param saSummary 闂鎽樿
+     */
+    public void setSaSummary(String saSummary) {
+        this.saSummary = saSummary == null ? null : saSummary.trim();
+    }
+
+    /**
+     * 鑾峰彇闂鍞竴鏍囪瘑
+     *
+     * @return CQ_GUID - 闂鍞竴鏍囪瘑
+     */
+    public String getCqGuid() {
+        return cqGuid;
+    }
+
+    /**
+     * 璁剧疆闂鍞竴鏍囪瘑
+     *
+     * @param cqGuid 闂鍞竴鏍囪瘑
+     */
+    public void setCqGuid(String cqGuid) {
+        this.cqGuid = cqGuid == null ? null : cqGuid.trim();
+    }
+
+    /**
+     * 鑾峰彇绛旀绫诲埆.1锛氫笓灞炲畾鍒剁瓟妗�:锛�2锛氭櫤鑳芥潈閲嶅洖绛旓紝9锛氬叾瀹�
+     *
+     * @return SA_Kind - 绛旀绫诲埆.1锛氫笓灞炲畾鍒剁瓟妗�:锛�2锛氭櫤鑳芥潈閲嶅洖绛旓紝9锛氬叾瀹�
+     */
+    public Byte getSaKind() {
+        return saKind;
+    }
+
+    /**
+     * 璁剧疆绛旀绫诲埆.1锛氫笓灞炲畾鍒剁瓟妗�:锛�2锛氭櫤鑳芥潈閲嶅洖绛旓紝9锛氬叾瀹�
+     *
+     * @param saKind 绛旀绫诲埆.1锛氫笓灞炲畾鍒剁瓟妗�:锛�2锛氭櫤鑳芥潈閲嶅洖绛旓紝9锛氬叾瀹�
+     */
+    public void setSaKind(Byte saKind) {
+        this.saKind = saKind;
+    }
+
+    /**
+     * 鑾峰彇绛旀鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @return SA_Keywords - 绛旀鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public String getSaKeywords() {
+        return saKeywords;
+    }
+
+    /**
+     * 璁剧疆绛旀鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @param saKeywords 绛旀鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public void setSaKeywords(String saKeywords) {
+        this.saKeywords = saKeywords == null ? null : saKeywords.trim();
+    }
+
+    /**
+     * 鑾峰彇绛旀浼樺厛绾у埆.鍚屼竴闂鍙兘鏈夊涓瓟妗堬紝鏁板�艰秺澶т紭鍏堢骇鍒秺楂�
+     *
+     * @return SA_Access_Level - 绛旀浼樺厛绾у埆.鍚屼竴闂鍙兘鏈夊涓瓟妗堬紝鏁板�艰秺澶т紭鍏堢骇鍒秺楂�
+     */
+    public Byte getSaAccessLevel() {
+        return saAccessLevel;
+    }
+
+    /**
+     * 璁剧疆绛旀浼樺厛绾у埆.鍚屼竴闂鍙兘鏈夊涓瓟妗堬紝鏁板�艰秺澶т紭鍏堢骇鍒秺楂�
+     *
+     * @param saAccessLevel 绛旀浼樺厛绾у埆.鍚屼竴闂鍙兘鏈夊涓瓟妗堬紝鏁板�艰秺澶т紭鍏堢骇鍒秺楂�
+     */
+    public void setSaAccessLevel(Byte saAccessLevel) {
+        this.saAccessLevel = saAccessLevel;
+    }
+
+    /**
+     * 鑾峰彇绛旀鍖归厤鏉冮噸.0-1鐨勫皬鏁帮紝鍊艰秺澶э紝涓庨棶棰樿秺鍖归厤
+     *
+     * @return SA_Weight - 绛旀鍖归厤鏉冮噸.0-1鐨勫皬鏁帮紝鍊艰秺澶э紝涓庨棶棰樿秺鍖归厤
+     */
+    public Double getSaWeight() {
+        return saWeight;
+    }
+
+    /**
+     * 璁剧疆绛旀鍖归厤鏉冮噸.0-1鐨勫皬鏁帮紝鍊艰秺澶э紝涓庨棶棰樿秺鍖归厤
+     *
+     * @param saWeight 绛旀鍖归厤鏉冮噸.0-1鐨勫皬鏁帮紝鍊艰秺澶э紝涓庨棶棰樿秺鍖归厤
+     */
+    public void setSaWeight(Double saWeight) {
+        this.saWeight = saWeight;
+    }
+
+    /**
+     * 鑾峰彇绛旀鍐呭
+     *
+     * @return SA_Content - 绛旀鍐呭
+     */
+    public String getSaContent() {
+        return saContent;
+    }
+
+    /**
+     * 璁剧疆绛旀鍐呭
+     *
+     * @param saContent 绛旀鍐呭
+     */
+    public void setSaContent(String saContent) {
+        this.saContent = saContent == null ? null : saContent.trim();
+    }
+
+    /**
+     * 鑾峰彇绛旀鐩稿叧澶氬獟浣撶礌鏉愯矾寰�.鍙瓨瀹屾暣鐩稿璺緞
+     *
+     * @return SA_Answer_Url - 绛旀鐩稿叧澶氬獟浣撶礌鏉愯矾寰�.鍙瓨瀹屾暣鐩稿璺緞
+     */
+    public String getSaAnswerUrl() {
+        return saAnswerUrl;
+    }
+
+    /**
+     * 璁剧疆绛旀鐩稿叧澶氬獟浣撶礌鏉愯矾寰�.鍙瓨瀹屾暣鐩稿璺緞
+     *
+     * @param saAnswerUrl 绛旀鐩稿叧澶氬獟浣撶礌鏉愯矾寰�.鍙瓨瀹屾暣鐩稿璺緞
+     */
+    public void setSaAnswerUrl(String saAnswerUrl) {
+        this.saAnswerUrl = saAnswerUrl == null ? null : saAnswerUrl.trim();
+    }
+
+    /**
+     * 鑾峰彇鎬昏闂暟.瀹㈡埛绔闂鏁�
+     *
+     * @return SA_Total_Num - 鎬昏闂暟.瀹㈡埛绔闂鏁�
+     */
+    public Integer getSaTotalNum() {
+        return saTotalNum;
+    }
+
+    /**
+     * 璁剧疆鎬昏闂暟.瀹㈡埛绔闂鏁�
+     *
+     * @param saTotalNum 鎬昏闂暟.瀹㈡埛绔闂鏁�
+     */
+    public void setSaTotalNum(Integer saTotalNum) {
+        this.saTotalNum = saTotalNum;
+    }
+
+    /**
+     * @return SA_Create_Time
+     */
+    public Date getSaCreateTime() {
+        return saCreateTime;
+    }
+
+    /**
+     * @param saCreateTime
+     */
+    public void setSaCreateTime(Date saCreateTime) {
+        this.saCreateTime = saCreateTime;
+    }
+
+    /**
+     * @return SA_Update_Time
+     */
+    public Date getSaUpdateTime() {
+        return saUpdateTime;
+    }
+
+    /**
+     * @param saUpdateTime
+     */
+    public void setSaUpdateTime(Date saUpdateTime) {
+        this.saUpdateTime = saUpdateTime;
+    }
+
+    /**
+     * @return SA_Extension1
+     */
+    public String getSaExtension1() {
+        return saExtension1;
+    }
+
+    /**
+     * @param saExtension1
+     */
+    public void setSaExtension1(String saExtension1) {
+        this.saExtension1 = saExtension1 == null ? null : saExtension1.trim();
+    }
+
+    /**
+     * @return SA_Extension2
+     */
+    public String getSaExtension2() {
+        return saExtension2;
+    }
+
+    /**
+     * @param saExtension2
+     */
+    public void setSaExtension2(String saExtension2) {
+        this.saExtension2 = saExtension2 == null ? null : saExtension2.trim();
+    }
+
+    /**
+     * @return SA_Extension3
+     */
+    public String getSaExtension3() {
+        return saExtension3;
+    }
+
+    /**
+     * @param saExtension3
+     */
+    public void setSaExtension3(String saExtension3) {
+        this.saExtension3 = saExtension3 == null ? null : saExtension3.trim();
+    }
+
+    /**
+     * @return SA_Remark
+     */
+    public String getSaRemark() {
+        return saRemark;
+    }
+
+    /**
+     * @param saRemark
+     */
+    public void setSaRemark(String saRemark) {
+        this.saRemark = saRemark == null ? null : saRemark.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/ConsultFileType.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/ConsultFileType.kt
new file mode 100644
index 0000000..b2711ce
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/ConsultFileType.kt
@@ -0,0 +1,37 @@
+package cn.flightfeather.supervision.domain.enumeration
+
+enum class ConsultFileType(val value: Byte, val des: String) {
+    TYPE1(1, "鍥藉娉曞緥"),
+    TYPE2(2, "鍥藉娉曡"),
+    TYPE3(3, "鍦版柟鏉′緥"),
+    TYPE4(4, "绠$悊瑙勫畾"),
+    TYPE5(5, "瀹炴柦鍔炴硶"),
+    TYPE6(6, "琛屾斂閫氱煡"),
+    TYPE7(7, "鎶�鏈爣鍑�"),
+    TYPE8(8, "鏈嶅姟鏍囧噯"),
+    TYPE9(9, "鎶�鏈鑼�"),
+    TYPE10(10, "鍙戝睍瑙勫垝"),
+    TYPE11(11, "搴旀�ラ妗�"),
+    TYPE12(12, "鎵ф硶瑙i噴"),
+    TYPE13(13, "绠$悊瑙h"),
+    TYPE99(99, "鍏朵粬");
+
+    companion object {
+        fun getNameByValue(value: Byte?): String = when (value?.toInt()) {
+            1 -> TYPE1.des
+            2 -> TYPE2.des
+            3 -> TYPE3.des
+            4 -> TYPE4.des
+            5 -> TYPE5.des
+            6 -> TYPE6.des
+            7 -> TYPE7.des
+            8 -> TYPE8.des
+            9 -> TYPE9.des
+            10 -> TYPE10.des
+            11 -> TYPE11.des
+            12 -> TYPE12.des
+            13 -> TYPE13.des
+            else -> TYPE99.des
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/ConsultResultType.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/ConsultResultType.kt
new file mode 100644
index 0000000..f16663a
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/ConsultResultType.kt
@@ -0,0 +1,11 @@
+package cn.flightfeather.supervision.domain.enumeration
+
+/**
+ * 鏅鸿兘鍜ㄨ鏌ヨ缁撴灉绫诲瀷
+ */
+enum class ConsultResultType(val value: Byte, val des: String) {
+    TYPE1(1, "鐩稿叧鏂囦欢"),
+    TYPE2(2, "鐩稿叧鏉$洰"),
+    TYPE3(3, "鎵ф硶妗堜緥"),
+    TYPE4(4, "鐜繚闂"),
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/EnElementSubType.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/EnElementSubType.kt
new file mode 100644
index 0000000..f47c63a
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/EnElementSubType.kt
@@ -0,0 +1,79 @@
+package cn.flightfeather.supervision.domain.enumeration
+
+/**
+ * 鐜繚瑕佺礌澶х被
+ */
+enum class EnElementSubType(val value: Byte, val des: String) {
+    TYPE1(1, "PM"),
+    TYPE2(2, "NOX"),
+    TYPE3(3, "O3"),
+    TYPE4(4, "VOCs"),
+    TYPE5(5, "宸ヤ笟搴熸皵"),
+    TYPE6(6, "鏈哄姩杞﹀熬姘�"),
+    TYPE7(7, "鎵皹"),
+    TYPE8(8, "椁愰ギ娌圭儫"),
+    TYPE9(9, "鎭惰嚟"),
+    TYPE99(99, "鍏朵粬");
+
+    companion object {
+        val subTypes = listOf(
+            listOf("PM", "NOX", "O3", "VOCs", "宸ヤ笟搴熸皵", "鏈哄姩杞﹀熬姘�", "鎵皹", "椁愰ギ娌圭儫", "鎭惰嚟", "鍏朵粬"),
+            listOf("鍦拌〃姘�", "鍦颁笅姘�", "楗敤姘�", "宸ヤ笟搴熸按", "鐢熸椿姹℃按", "鍟嗕笟姹℃按", "鍏朵粬"),
+            listOf("鐭虫补鍙婂叾浜у搧", "閲嶉噾灞炲拰閰哥⒈", "鍐滆嵂", "鏈夋満鐗╄川鍜岃惀鍏荤洂绫�", "鏀惧皠鎬ф牳绱�", "鍥轰綋搴熺墿", "搴熺儹", "鍏朵粬"),
+            listOf("鍐滅敯鑰曞湴", "宸ヤ笟浼佷笟鐢ㄥ湴", "鐭虫补寮�閲囩敤鍦�", "鐭垮北寮�閲囩敤鍦�", "鍏朵粬"),
+            listOf("宸ヤ笟鐢熶骇鍣0", "浜ら�氳繍杈撳櫔澹�", "寤虹瓚鏂藉伐鍣0", "绀句細鐢熸椿鍣0", "鍏朵粬"),
+            listOf("鐧戒寒姹℃煋", "浜哄伐鐧芥樇姹℃煋", "褰╁厜姹℃煋", "鍏朵粬"),
+            listOf("鐢电杈愬皠", "鏀惧皠鎬ц緪灏�", "鍏朵粬"),
+            listOf("鏀惧皠鎬х墿璐�", "鏍歌緪灏�", "鍏朵粬"),
+            listOf("宸ヤ笟鍥轰綋搴熺墿", "鍗遍櫓搴熺墿", "鐢熸椿鍨冨溇", "鍏朵粬"),
+            listOf("鏄撶垎鐐稿搧", "鍘嬬缉鐨勬皵浣撳拰娑蹭綋", "鏄撶噧娑蹭綋", "鏄撶噧鍥轰綋", "姘у寲鍓�", "鏈夋瘨鐗╁搧", "鏀惧皠鎬х墿璐�", "鑵愯殌鍝�", "鍏朵粬"),
+            listOf("鍙拌处", "鍏朵粬"),
+            listOf("鐜繚鎵ф硶", "鍩庣鎵ф硶", "鍏畨鎵ф硶", "鍏朵粬"),
+            listOf("鐫e療"),
+            listOf("鐩戞祴"),
+            listOf("鏈嶅姟"),
+            listOf("鍏朵粬"),
+        )
+        fun getNameByValue(value: Byte?): String = when (value?.toInt()) {
+            1 -> TYPE1.des
+            2 -> TYPE2.des
+            3 -> TYPE3.des
+            4 -> TYPE4.des
+            5 -> TYPE5.des
+            6 -> TYPE6.des
+            7 -> TYPE7.des
+            8 -> TYPE8.des
+            9 -> TYPE9.des
+            99 -> TYPE99.des
+            else -> TYPE99.des
+        }
+
+        fun getSubType(enElementType: Byte, value: Byte?): String {
+            val index = when (enElementType) {
+                EnElementType.TYPE1 .value-> 0
+                EnElementType.TYPE2 .value-> 1
+                EnElementType.TYPE3 .value-> 2
+                EnElementType.TYPE4 .value-> 3
+                EnElementType.TYPE5 .value-> 4
+                EnElementType.TYPE6 .value-> 5
+                EnElementType.TYPE7 .value-> 6
+                EnElementType.TYPE8 .value-> 7
+                EnElementType.TYPE9 .value-> 8
+                EnElementType.TYPE10.value -> 9
+                EnElementType.TYPE21.value -> 10
+                EnElementType.TYPE31.value -> 11
+                EnElementType.TYPE41.value -> 12
+                EnElementType.TYPE51.value -> 13
+                EnElementType.TYPE61.value -> 14
+                EnElementType.TYPE99.value -> 15
+                else -> 15
+            }
+            value ?: return "鍏朵粬"
+            return if (value.toInt() == 99) {
+                subTypes[index].last()
+            } else {
+                subTypes[index][value.toInt()]
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/EnElementType.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/EnElementType.kt
new file mode 100644
index 0000000..d092f52
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/EnElementType.kt
@@ -0,0 +1,45 @@
+package cn.flightfeather.supervision.domain.enumeration
+
+/**
+ * 鐜繚瑕佺礌澶х被
+ */
+enum class EnElementType(val value: Byte, val des: String) {
+    TYPE1(1, "澶ф皵"),
+    TYPE2(2, "姘�"),
+    TYPE3(3, "娴锋磱"),
+    TYPE4(4, "鍦熷¥"),
+    TYPE5(5, "鍣0"),
+    TYPE6(6, "鍏�"),
+    TYPE7(7, "杈愬皠"),
+    TYPE8(8, "鏍�"),
+    TYPE9(9, "鍥轰綋搴熺墿"),
+    TYPE10(10, "鍖栧鍝�"),
+    TYPE21(21, "鍙拌处"),
+    TYPE31(31, "鎵ф硶"),
+    TYPE41(41, "鐫e療"),
+    TYPE51(51, "鐩戞祴"),
+    TYPE61(61, "鏈嶅姟"),
+    TYPE99(99, "鍏朵粬");
+
+    companion object {
+        fun getNameByValue(value: Byte?): String = when (value?.toInt()) {
+            1 -> TYPE1.des
+            2 -> TYPE2.des
+            3 -> TYPE3.des
+            4 -> TYPE4.des
+            5 -> TYPE5.des
+            6 -> TYPE6.des
+            7 -> TYPE7.des
+            8 -> TYPE8.des
+            9 -> TYPE9.des
+            10 -> TYPE10.des
+            21 -> TYPE21.des
+            31 -> TYPE31.des
+            41 -> TYPE41.des
+            51 -> TYPE51.des
+            61 -> TYPE61.des
+            99 -> TYPE99.des
+            else -> TYPE99.des
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/EnforceCaseType.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/EnforceCaseType.kt
new file mode 100644
index 0000000..e7f5ba8
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/EnforceCaseType.kt
@@ -0,0 +1,41 @@
+package cn.flightfeather.supervision.domain.enumeration
+
+/**
+ * 杩濇硶妗堜緥绫诲埆
+ */
+enum class EnforceCaseType(val value: Byte, val des: String) {
+    TYPE1(1, "鏁d贡姹′紒涓氳繚娉曟渚�"),
+    TYPE2(2, "閫冮伩鐩戠杩濇硶妗堜緥"),
+    TYPE3(3, "鏈寜瑙勫畾浣跨敤姹℃煋闃叉不璁炬柦杩濇硶妗堜緥"),
+    TYPE4(4, "鐩戞祴鏁版嵁寮勮櫄浣滃亣杩濇硶妗堜緥"),
+    TYPE5(5, "瓒呮爣鎺掓斁杩濇硶妗堜緥"),
+    TYPE6(6, "澶ф皵姹℃煋鐗╄繚娉曟帓鏀炬渚�"),
+    TYPE7(7, "搴熸按杩濇硶鎺掓斁妗堜緥"),
+    TYPE8(8, "鍥哄簾杩濇硶妗堜緥"),
+    TYPE9(9, "鍗卞簾鍗卞簾妗堜緥"),
+    TYPE10(10, "闈炴硶鎺掓斁鏈夋瘨鐗╄川杩濇硶妗堜緥"),
+    TYPE11(11, "鐜褰卞搷璇勪环杩濇硶妗堜緥"),
+    TYPE12(12, "鎺掓薄璁稿彲杩濇硶妗堜緥"),
+    TYPE13(13, "搴旀�ラ妗堣繚娉曟渚�"),
+    TYPE99(99, "鍏朵粬");
+
+    companion object {
+        fun getNameByValue(value: Byte?): String = when (value?.toInt()) {
+            1 -> TYPE1.des
+            2 -> TYPE2.des
+            3 -> TYPE3.des
+            4 -> TYPE4.des
+            5 -> TYPE5.des
+            6 -> TYPE6.des
+            7 -> TYPE7.des
+            8 -> TYPE8.des
+            9 -> TYPE9.des
+            10 -> TYPE10.des
+            11 -> TYPE11.des
+            12 -> TYPE12.des
+            13 -> TYPE13.des
+            99 -> TYPE99.des
+            else -> TYPE99.des
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/FileSaveType.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/FileSaveType.kt
new file mode 100644
index 0000000..0443ef5
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/FileSaveType.kt
@@ -0,0 +1,20 @@
+package cn.flightfeather.supervision.domain.enumeration
+
+enum class FileSaveType(val value: Byte, val des: String) {
+    TYPE1(1, "word"),
+    TYPE2(2, "pdf"),
+    TYPE3(3, "Excel"),
+    TYPE4(4, "ppt"),
+    TYPE99(99, "鍏朵粬");
+
+    companion object {
+        fun getNameByValue(value: Byte?): String = when (value?.toInt()) {
+            1 -> TYPE1.des
+            2 -> TYPE2.des
+            3 -> TYPE3.des
+            4 -> TYPE4.des
+            99 -> TYPE99.des
+            else -> TYPE99.des
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/IndustryType.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/IndustryType.kt
new file mode 100644
index 0000000..737bc64
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/IndustryType.kt
@@ -0,0 +1,25 @@
+package cn.flightfeather.supervision.domain.enumeration
+
+/**
+ * 鐜繚鐩稿叧琛屼笟
+ */
+enum class IndustryType(val value: Byte, val des: String) {
+    TYPE1(1, "鐢熸�佺幆澧�"),
+    TYPE2(2, "浣忔埧寤鸿"),
+    TYPE3(3, "浜ら��"),
+    TYPE4(4, "缁垮寲甯傚"),
+    TYPE5(5, "鍩庣鎵ф硶"),
+    TYPE99(99, "鍏朵粬");
+
+    companion object {
+        fun getNameByValue(value: Byte?): String = when (value?.toInt()) {
+            1 -> TYPE1.des
+            2 -> TYPE2.des
+            3 -> TYPE3.des
+            4 -> TYPE4.des
+            5 -> TYPE5.des
+            99 -> TYPE99.des
+            else -> TYPE99.des
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/LedgerCheckStatus.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/LedgerCheckStatus.kt
index 8933170..fadcdc3 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/LedgerCheckStatus.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/LedgerCheckStatus.kt
@@ -3,7 +3,7 @@
 /**
  * @author riku
  * Date: 2020/11/5
- * 鍙扮珯瀹℃牳鐘舵��
+ * 鍙拌处瀹℃牳鐘舵��
  */
 enum class LedgerCheckStatus constructor(val value: Int, val des: String){
     UnCheck(0,"鏈鏍�"),
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/ManageLevelType.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/ManageLevelType.kt
new file mode 100644
index 0000000..e68c2d6
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/enumeration/ManageLevelType.kt
@@ -0,0 +1,26 @@
+package cn.flightfeather.supervision.domain.enumeration
+
+enum class ManageLevelType(val value: Byte, val des: String) {
+    TYPE1(1, "鍥藉"),
+    TYPE2(2, "閮ㄥ"),
+    TYPE3(3, "鐪�/鐩磋緰甯�"),
+    TYPE4(4, "鍦板競"),
+    TYPE5(5, "鍖哄幙"),
+    TYPE6(6, "琛楅晣"),
+    TYPE7(7, "鍥尯"),
+    TYPE9(9, "鍏朵粬");
+
+    companion object {
+        fun getNameByValue(value: Byte?): String = when (value?.toInt()) {
+            1 -> TYPE1.des
+            2 -> TYPE2.des
+            3 -> TYPE3.des
+            4 -> TYPE4.des
+            5 -> TYPE5.des
+            6 -> TYPE6.des
+            7 -> TYPE7.des
+            9 -> TYPE9.des
+            else -> TYPE9.des
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/CstQuestionMapper.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/CstQuestionMapper.kt
new file mode 100644
index 0000000..4e0f2f0
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/CstQuestionMapper.kt
@@ -0,0 +1,8 @@
+package cn.flightfeather.supervision.domain.mapper
+
+import cn.flightfeather.supervision.domain.entity.CstQuestion
+import cn.flightfeather.supervision.domain.util.MyMapper
+import org.apache.ibatis.annotations.Mapper
+
+@Mapper
+interface CstQuestionMapper : MyMapper<CstQuestion>
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/EnforceCaseMapper.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/EnforceCaseMapper.kt
new file mode 100644
index 0000000..85a7a0b
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/EnforceCaseMapper.kt
@@ -0,0 +1,8 @@
+package cn.flightfeather.supervision.domain.mapper
+
+import cn.flightfeather.supervision.domain.entity.EnforceCase
+import cn.flightfeather.supervision.domain.util.MyMapper
+import org.apache.ibatis.annotations.Mapper
+
+@Mapper
+interface EnforceCaseMapper : MyMapper<EnforceCase>
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/MgtFileMapper.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/MgtFileMapper.kt
new file mode 100644
index 0000000..33dfc0b
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/MgtFileMapper.kt
@@ -0,0 +1,8 @@
+package cn.flightfeather.supervision.domain.mapper
+
+import cn.flightfeather.supervision.domain.entity.MgtFile
+import cn.flightfeather.supervision.domain.util.MyMapper
+import org.apache.ibatis.annotations.Mapper
+
+@Mapper
+interface MgtFileMapper : MyMapper<MgtFile>
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/MgtItemMapper.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/MgtItemMapper.kt
new file mode 100644
index 0000000..f2d78e4
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/MgtItemMapper.kt
@@ -0,0 +1,8 @@
+package cn.flightfeather.supervision.domain.mapper
+
+import cn.flightfeather.supervision.domain.entity.MgtItem
+import cn.flightfeather.supervision.domain.util.MyMapper
+import org.apache.ibatis.annotations.Mapper
+
+@Mapper
+interface MgtItemMapper : MyMapper<MgtItem>
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/SettingAnswerMapper.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/SettingAnswerMapper.kt
new file mode 100644
index 0000000..4ce2ce8
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/mapper/SettingAnswerMapper.kt
@@ -0,0 +1,8 @@
+package cn.flightfeather.supervision.domain.mapper
+
+import cn.flightfeather.supervision.domain.entity.SettingAnswer
+import cn.flightfeather.supervision.domain.util.MyMapper
+import org.apache.ibatis.annotations.Mapper
+
+@Mapper
+interface SettingAnswerMapper : MyMapper<SettingAnswer>
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/infrastructure/utils/DateUtil.kt b/src/main/kotlin/cn/flightfeather/supervision/infrastructure/utils/DateUtil.kt
index c11715b..bf4b724 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/infrastructure/utils/DateUtil.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/infrastructure/utils/DateUtil.kt
@@ -5,7 +5,7 @@
 import java.text.SimpleDateFormat
 import java.util.*
 
-class DateUtil {
+object DateUtil {
     private val threadLocal = ThreadLocal<SimpleDateFormat>()
 
     private val `object` = Any()
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/CommitmentService.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/CommitmentService.kt
index 96d534e..ad58d5b 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/CommitmentService.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/CommitmentService.kt
@@ -12,5 +12,5 @@
 
     fun uploadLetterOfCommitment(userId: String, commitmentVoList: String, files: Array<MultipartFile>): Boolean
 
-    fun createLetterOfCommitment(userId: String, info: CommitmentVo, sign: MultipartFile, seal: MultipartFile?): BaseResponse<String>
+    fun createLetterOfCommitment(userId: String, info: String, sign: MultipartFile?, seal: MultipartFile?): BaseResponse<List<String>>
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt
index d854dbc..d79dee2 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt
@@ -17,6 +17,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper
 import com.fasterxml.jackson.module.kotlin.readValue
 import com.github.pagehelper.PageHelper
+import com.google.gson.Gson
 import net.coobird.thumbnailator.tasks.io.InputStreamImageSource
 import org.springframework.beans.factory.annotation.Value
 import org.springframework.stereotype.Service
@@ -24,6 +25,8 @@
 import tk.mybatis.mapper.entity.Example
 import java.awt.Image
 import java.io.File
+import java.time.LocalDate
+import java.time.format.DateTimeFormatter
 import java.util.*
 import javax.imageio.ImageReader
 import javax.imageio.stream.ImageInputStream
@@ -60,7 +63,7 @@
         var success = 0
         commitmentVos.forEach {
             var picPath = ""
-            val time = DateUtil().DateToString(Date(), DateUtil.DateStyle.YYYY_MM)
+            val time = DateUtil.DateToString(Date(), DateUtil.DateStyle.YYYY_MM)
             files.forEach { file ->
                 val fileName = file.originalFilename
                 //TODO 姝ゅ鐨勬枃浠惰矾寰勯渶瑕佷慨鏀逛负鍔ㄦ�侀厤缃�
@@ -94,13 +97,15 @@
         return commitmentVos.size == success
     }
 
-    override fun createLetterOfCommitment(userId: String, info: CommitmentVo, sign: MultipartFile, seal: MultipartFile?): BaseResponse<String> {
-        val signUrl = FileUtil.compressImage2(sign.bytes, 400)
+    override fun createLetterOfCommitment(userId: String, info: String, sign: MultipartFile?, seal: MultipartFile?): BaseResponse<List<String>> {
+        sign ?: return BaseResponse(false, "绛惧悕鍥剧墖鏈笂浼犳垚鍔�")
+        val infoVo = Gson().fromJson(info, CommitmentVo::class.java)
+
+        val signUrl = infoVo.sign.ifBlank { FileUtil.compressImage2(sign.bytes, 400) }
         val sealUrl = if (seal != null) FileUtil.compressImage2(seal.bytes, 400) else ""
 
-        val templatePath = (Thread.currentThread().contextClassLoader?.getResource("/")?.path ?: "src/main") + "/resources/templates/"
-
-        val time = DateUtil().DateToString(Date(), DateUtil.DateStyle.YYYY_MM)
+        val templatePath = (Thread.currentThread().contextClassLoader?.getResource("/")?.path ?: "src/main/resources") + "/templates/"
+        val time = DateUtil.DateToString(Date(), DateUtil.DateStyle.YYYY_MM)
         val path = "commitments/$time/$userId/"
         val contractPath = imgPath + path
 
@@ -128,35 +133,58 @@
                 contractName = "commitment-vehicle-${now.time}.pdf"
             }
         }
+//        val picName = contractName.replace("pdf", "jpg")
+
+        //琛ュ叏淇℃伅
+        infoVo.apply {
+            if (city.isBlank()) city = "涓婃捣甯�"
+            if (district.isBlank()) district = userInfo.extension1 ?: ""
+            if (year.isBlank()) {
+                val t = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")).split("-")
+                year = t[0]
+                month = t[1]
+                day = t[2]
+            }
+        }
         params.apply {
-            put("City", info.city)
-            put("District", info.district)
-            put("Department", info.department)
-            put("SocialCode", info.socialCode)
-            put("Number", info.number)
-            put("JuridicalPerson", info.juridicalPerson)
-            put("IdNo", info.idNo)
-            put("Type1", if (info.type1) "鉁�" else "鈻�")
-            put("Type2", if (info.type2) "鉁�" else "鈻�")
-            put("Type3", if (info.type3) "鉁�" else "鈻�")
-            put("Type4", if (info.type4) "鉁�" else "鈻�")
+            put("City", infoVo.city)
+            put("District", infoVo.district)
+            put("Department", infoVo.department)
+            put("SocialCode", infoVo.socialCode)
+            put("Number", infoVo.number)
+            put("JuridicalPerson", infoVo.juridicalPerson)
+            put("IdNo", infoVo.idNo)
+            put("Type1", if (infoVo.type1) "鈭�" else "鈻�")
+            put("Type2", if (infoVo.type2) "鈭�" else "鈻�")
+            put("Type3", if (infoVo.type3) "鈭�" else "鈻�")
+            put("Type4", if (infoVo.type4) "鈭�" else "鈻�")
             put("Sign", signUrl)
             put("Seal", sealUrl)
-            put("Year", info.year)
-            put("Month", info.month)
-            put("Day", info.day)
+            put("Year", infoVo.year)
+            put("Month", infoVo.month)
+            put("Day", infoVo.day)
         }
         val param = DynamicParam(templatePath, templateName, contractPath, contractName, params)
-        GeneratePdfUtil.generateContract(param)
-        //灏嗙敓浜х殑鎵胯涔﹁褰曟彃鍏ユ暟鎹簱
+        val picPaths = GeneratePdfUtil.generateContract(param)
+        var picPath = ""
+        for (i in picPaths.indices) {
+            val picName = contractName.replace(".pdf", "(${i}).jpg");
+            if (picPath.isNotBlank()) {
+                picPath += ";"
+            }
+            picPath += (path + picName)
+        }
+
+        //灏嗙敓鎴愮殑鎵胯涔﹁褰曟彃鍏ユ暟鎹簱
         val commitment = Commitment().apply {
             cmGuid = UUIDGenerator.generate16ShortUUID()
             uiGuid = userId
-            cmUrl = path + contractName
+            cmUrl = picPath
+            cmPdfUrl = path + contractName
             cmCreateTime = Date()
         }
         val r = commitmentMapper.insert(commitment)
 
-        return BaseResponse(r == 1, data = path)
+        return BaseResponse(r == 1, data = listOf(commitment.cmUrl, commitment.cmPdfUrl))
     }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/DeviceServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/DeviceServiceImpl.kt
index 2750824..67a4645 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/DeviceServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/DeviceServiceImpl.kt
@@ -47,7 +47,7 @@
                     createCriteria().andEqualTo("mvStatCode", mn)
                     orderBy("mvDataTime").desc()
                 }).map {
-                    DataVo(DateUtil().DateToString(it.mvDataTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM), if (it.mvFumeConcentration<0) it.mvFumeConcentration2 else it.mvFumeConcentration)
+                    DataVo(DateUtil.DateToString(it.mvDataTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM), if (it.mvFumeConcentration<0) it.mvFumeConcentration2 else it.mvFumeConcentration)
                 }.run {
                     asReversed()
                 }.also {
@@ -98,7 +98,7 @@
                                 }
 
                                 result.add(DataVo(
-                                        DateUtil().DateToString(startTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM),
+                                        DateUtil.DateToString(startTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM),
                                         DecimalFormat("#.00").format(hourValue).toDouble()
                                 ))
                             }
@@ -110,7 +110,7 @@
                                 orderBy("vocDataTime").desc()
                             }).map {v ->
                                 DataVo(
-                                        DateUtil().DateToString(v?.vocDataTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM),
+                                        DateUtil.DateToString(v?.vocDataTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM),
                                         DecimalFormat("#.00").format(v?.vocValue).toDouble()
                                 )
                             }.run {
@@ -220,8 +220,8 @@
     override fun getHistoryValue(userId: String, startTime: String, endTime: String, period: Byte): List<DataVo> {
         val result = mutableListOf<DataVo>()
         val baseInfo = baseInfoMapper.selectByPrimaryKey(userId)
-        val sT = DateUtil().StringToDate(startTime)
-        val eT = DateUtil().StringToDate(endTime)
+        val sT = DateUtil.StringToDate(startTime)
+        val eT = DateUtil.StringToDate(endTime)
         if (baseInfo != null) {
             val mn = baseInfo.biExtension2
             if (!mn.isNullOrBlank()) {
@@ -230,7 +230,7 @@
                             .andBetween("mvDataTime", sT, eT)
                     orderBy("mvDataTime")
                 }).map {
-                    DataVo(DateUtil().DateToString(it.mvDataTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM), if (it.mvFumeConcentration < 0) it.mvFumeConcentration2 else it.mvFumeConcentration)
+                    DataVo(DateUtil.DateToString(it.mvDataTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM), if (it.mvFumeConcentration < 0) it.mvFumeConcentration2 else it.mvFumeConcentration)
                 }.also {
                     result.addAll(it)
                 }
@@ -253,7 +253,7 @@
         val p = PageHelper.startPage<FumeMinuteValue>(page, perPage)
         fumeMinuteValueMapper.getRealTimeData().forEach {
             resultList.add(DataVo(
-                    DateUtil().DateToString(it.mvDataTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM),
+                    DateUtil.DateToString(it.mvDataTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM),
                     if (it.mvFumeConcentration < 0) it.mvFumeConcentration2 else it.mvFumeConcentration,
                     it.mvStatCode
             ))
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/EvaluationServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/EvaluationServiceImpl.kt
index f7007b5..ebd565a 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/EvaluationServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/EvaluationServiceImpl.kt
@@ -51,8 +51,8 @@
     override fun getTotalPoints(userId: String, evaluatorType: Int, startTime: String, endTime: String, sceneTypeId: Int?, erGuid: String?, eId: String?): List<Evaluation> {
         val example = Example(Evaluation::class.java)
         val criteria = example.createCriteria()
-        val startDate = DateUtil().StringToDate(startTime)
-        val endDate = DateUtil().StringToDate(endTime)
+        val startDate = DateUtil.StringToDate(startTime)
+        val endDate = DateUtil.StringToDate(endTime)
         criteria.andEqualTo("iguid", userId)
                 .andBetween("createdate", startDate, endDate)
         example.and(example.createCriteria().apply {
@@ -206,8 +206,8 @@
                 else -> null
             }
 
-        result.publishTime = DateUtil().DateToString(overallEvaluation.oePublishTime, "YYYY骞碝M鏈�")
-        result.updateTime = DateUtil().DateToString(overallEvaluation.oeUpdateTime, "YYYY骞碝M鏈�")
+        result.publishTime = DateUtil.DateToString(overallEvaluation.oePublishTime, "YYYY骞碝M鏈�")
+        result.updateTime = DateUtil.DateToString(overallEvaluation.oeUpdateTime, "YYYY骞碝M鏈�")
         result.creditLevel = creditLevel
         result.creditLevelDes = creditLevelDes
         result.codeLevel = codeLevel
@@ -435,6 +435,7 @@
         }
 
         //鍒嗙被鍒殑寰楀垎(姣忎釜璇勫垎琛ㄧ殑璇勫垎澶ч」鐨勫緱鍒�)鍜屽け鍒嗘潯鐩�
+        val ruleMap = result.loseScore
         rule1List.forEach {
             val evaluation = evaluationMapper.selectByExample(Example(Evaluation::class.java).apply {
                 createCriteria().andEqualTo("iguid", userId)
@@ -446,10 +447,11 @@
                 })
                 val itemEvaluations = itemevaluationService.getItemEvaluationList(e.guid!!)
 
-                itemEvaluations.forEach {item ->
+                itemEvaluations.sortedBy { it.ertype }.forEach {item ->
                     when (item.ertype) {
                         //鍒嗙被鍒殑寰楀垎
                         2 -> {
+                            ruleMap[item.name] = mutableMapOf()
                             for (s in subRules) {
                                 if (s.guid == item.esrguid) {
                                     val score = if ((item.value?.toInt() ?: 0) <= 0) {
@@ -462,12 +464,25 @@
                                 }
                             }
                         }
+                        3 -> {
+                            if ((item.value?.toInt() ?: 0) != 0 && item.extension1 == "true") {
+                                for (s in subRules) {
+                                    if (s.guid == item.esrguid) {
+                                        if (!ruleMap.containsKey(s.fathername)) {
+                                            ruleMap[s.fathername] = mutableMapOf()
+                                        }
+                                        ruleMap[s.fathername]?.put(item.name, mutableListOf())
+                                        break
+                                    }
+                                }
+                            }
+                        }
                         //澶卞垎鏉$洰
                         4 -> {
                             if ((item.value?.toInt() ?: 0) != 0 && item.extension1 == "true") {
                                 for (s in subRules) {
                                     if (s.guid == item.esrguid) {
-                                        result.loseScore.add(
+                                        val d =
                                             Triple(
                                                 item.name ?: "",
                                                 if ((item.value?.toInt() ?: 0) < 0) {
@@ -477,7 +492,16 @@
                                                 },
                                                 s.remark ?: ""
                                             )
-                                        )
+                                        val rule3Name = s.fathername
+                                        for (s1 in subRules) {
+                                            if (s1.itemname == rule3Name) {
+                                                val rule2Name = s1.fathername
+                                                ruleMap[rule2Name]?.get(rule3Name)?.add(d)
+                                                break
+                                            }
+                                        }
+
+                                        break
                                     }
                                 }
                             }
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/LawServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/LawServiceImpl.kt
index 3b29091..6040849 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/LawServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/LawServiceImpl.kt
@@ -67,6 +67,9 @@
                     }
                     andEqualTo("lrIsopen", isOpen)
                     andEqualTo("lrIsuse", isUsing)
+                    fileType?.let {
+                        andEqualTo("lrResourcefiletype", it)
+                    }
                 }
             }
             condition.sceneTypeId?.let {
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/LedgerServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/LedgerServiceImpl.kt
index 175b756..f05ae65 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/LedgerServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/LedgerServiceImpl.kt
@@ -106,8 +106,8 @@
             return result
         }
 
-        val startDate = DateUtil().StringToDate(startTime)
-        val endDate = DateUtil().StringToDate(endTime)
+        val startDate = DateUtil.StringToDate(startTime)
+        val endDate = DateUtil.StringToDate(endTime)
         val cal = Calendar.getInstance().apply { time = startDate }
         val year = cal.get(Calendar.YEAR)
         val month = cal.get(Calendar.MONTH) + 1
@@ -215,41 +215,22 @@
         val ledgerVos = mapper.readValue<List<LedgerVo>>(ledgerVoList, object :TypeReference<List<LedgerVo>>(){})
 
         ledgerVos.forEach {
+            it.id = it.id ?: UUIDGenerator.generate16ShortUUID()
+            it.fileType = it.fileType ?: 1
+
             val userInfo = userinfoMapper.selectByPrimaryKey(userId)
+            userInfo.extension2?.toInt()?.let {s-> it.sceneType = s }
+
             val today = Calendar.getInstance().apply { time = Date() }
                     .get(Calendar.DAY_OF_MONTH)
-            val cal = Calendar.getInstance().apply { time = it.updateDate }
+            val cal = Calendar.getInstance().apply { time = it.updateDate ?: Date() }
             val updateYear = cal.get(Calendar.YEAR)
             val updateMonth = cal.get(Calendar.MONTH) + 1
             val updateDay = cal.get(Calendar.DAY_OF_MONTH)
-            //鐢熸垚鍙拌处鏇存柊璁板綍
-            val ledgerRecord = LedgerRecord().apply {
-                lrGuid = it.id
-                lsSubtypeid = it.ledgerSubTypeId
-                lsSubtypename = it.ledgerName
-                lrYear = updateYear
-                lrMonth = updateMonth.toByte()
-                lrDay = updateDay.toByte()
-                lrEasubmitkind = it.fileType?.toByte() ?: 1
-                lrSubmitid = userId
-                lrSubmitname = userInfo?.acountname ?: ""
-                lrIssubmitontime = today <= 10
-                lrSubmitdate = Date()
-                lrUpdatetype = it.updateType
-                lrExtension1 = it.sceneType.toString()
-            }
-
-            //妫�鏌ユ暟鎹簱鏄惁宸叉湁璁板綍锛岄�夋嫨鎻掑叆鎴栨洿鏂�
-            val tmp = ledgerRecordMapper.selectByPrimaryKey(ledgerRecord.lrGuid)
-            if (tmp == null || tmp.lrGuid == null) {
-                ledgerRecordMapper.insert(ledgerRecord)
-            } else {
-                ledgerRecordMapper.updateByPrimaryKey(ledgerRecord)
-            }
 
             //瀵规瘡寮犲浘鐗囩敓鎴愮浉搴旂殑璺緞骞朵繚瀛�
             var picPath = ""
-            val time = DateUtil().DateToString(Date(), DateUtil.DateStyle.YYYY_MM)
+            val time = DateUtil.DateToString(Date(), DateUtil.DateStyle.YYYY_MM)
             files.forEach {file->
                 val fileName = file.originalFilename
                 //TODO 姝ゅ鐨勬枃浠惰矾寰勯渶瑕佷慨鏀逛负鍔ㄦ�侀厤缃�
@@ -292,6 +273,31 @@
 
             //鎻掑叆鏂扮殑澶氬獟浣撴枃浠惰褰曟暟鎹�
             ledgerMediaFileMapper.insert(ledgerMedia)
+
+            //鐢熸垚鍙拌处鏇存柊璁板綍
+            val ledgerRecord = LedgerRecord().apply {
+                lrGuid = it.id
+                lsSubtypeid = it.ledgerSubTypeId
+                lsSubtypename = it.ledgerName
+                lrYear = updateYear
+                lrMonth = updateMonth.toByte()
+                lrDay = updateDay.toByte()
+                lrEasubmitkind = it.fileType?.toByte() ?: 1
+                lrSubmitid = userId
+                lrSubmitname = userInfo?.acountname ?: ""
+                lrIssubmitontime = today <= 10
+                lrSubmitdate = Date()
+                lrUpdatetype = it.updateType
+                lrExtension1 = it.sceneType.toString()
+            }
+
+            //妫�鏌ユ暟鎹簱鏄惁宸叉湁璁板綍锛岄�夋嫨鎻掑叆鎴栨洿鏂�
+            val tmp = ledgerRecordMapper.selectByPrimaryKey(ledgerRecord.lrGuid)
+            if (tmp == null || tmp.lrGuid == null) {
+                ledgerRecordMapper.insert(ledgerRecord)
+            } else {
+                ledgerRecordMapper.updateByPrimaryKey(ledgerRecord)
+            }
 
             return true
         }
@@ -343,7 +349,7 @@
                 createCriteria().andEqualTo("lScenetype", sceneType)
             }
         })
-        val c = Calendar.getInstance().apply { this.time = DateUtil().StringToDate(time) }
+        val c = Calendar.getInstance().apply { this.time = DateUtil.StringToDate(time) }
         val year = c.get(Calendar.YEAR)
         val month = c.get(Calendar.MONTH) + 1
         val map = mutableMapOf<Int, MutableList<Int>>()
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/OnLineQuestionServiceImpl.java b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/OnLineQuestionServiceImpl.java
deleted file mode 100644
index 9dcb987..0000000
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/OnLineQuestionServiceImpl.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package cn.flightfeather.supervision.lightshare.service.Impl;
-
-import cn.flightfeather.supervision.domain.entity.OnLineQuestion;
-import cn.flightfeather.supervision.domain.mapper.OnLineQuestionMapper;
-import cn.flightfeather.supervision.lightshare.service.OnLineQuestionService;
-import cn.flightfeather.supervision.lightshare.vo.QCondition;
-import com.github.pagehelper.PageHelper;
-import org.jetbrains.annotations.NotNull;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import java.util.Arrays;
-import java.util.List;
-
-/**
-*@Description: 鏈堥棶棰樺疄鐜扮被
-*@author :LiuYuJun
-*@Date:2019/7/10
-*@Time:13:52
-*/
-@Service
-@Component
-public class OnLineQuestionServiceImpl implements OnLineQuestionService {
-    @Resource
-    private OnLineQuestionMapper onLineQuestionMapper;
-
-    @Override
-    public int addQuestions(@NotNull String userId, @NotNull List<? extends OnLineQuestion> questions) {
-        int r = 0;
-        for (OnLineQuestion q:questions) {
-            r += onLineQuestionMapper.insert(q);
-        }
-        return r;
-    }
-
-    @NotNull
-    @Override
-    public List<OnLineQuestion> getQuestions(@NotNull String userId, boolean inUse, int page, int perPage, @NotNull HttpServletResponse httpServletResponse) {
-
-        // 1.璁$畻鍑鸿捣濮嬩綅缃�
-        int startPosition = (page-1)*perPage;
-        //2.鍒嗛〉鐨勬柟娉曟煡璇㈡暟鎹�
-        PageHelper.startPage(startPosition,perPage);
-        List<OnLineQuestion> allMeetings;
-        //3.鍒嗛〉鏄剧ず鏁版嵁
-        if (inUse){
-            allMeetings = onLineQuestionMapper.findAll();
-        }else {
-            allMeetings = onLineQuestionMapper.findAllfalse();
-        }
-        int counts = onLineQuestionMapper.count();
-        int totalPage = (int)Math.ceil(counts/perPage*1.0);
-        httpServletResponse.setIntHeader("totalPage",totalPage);
-        httpServletResponse.setIntHeader("currentPage",page);
-        return allMeetings;
-    }
-
-    @NotNull
-    @Override
-    public String getQDescription(@NotNull String userId, @NotNull String questionId) {
-        return onLineQuestionMapper.getQDescription(questionId);
-    }
-
-    @NotNull
-    @Override
-    public List<String> getQResource(@NotNull String userId, @NotNull String questionId, int page, int perPage, @NotNull HttpServletResponse httpServletResponse){
-        // 1.璁$畻鍑鸿捣濮嬩綅缃�
-        int startPosition = (page-1)*perPage;
-        String getQDescription = onLineQuestionMapper.getQResource(questionId);
-        List<String> lis = Arrays.asList(getQDescription.split("銆�"));
-        List<String> result ;
-        if (startPosition+perPage<lis.size()){
-            result = lis.subList(startPosition,startPosition+perPage);
-        }else {
-            result = lis.subList(startPosition,lis.size());
-        }
-        int counts = lis.size();
-        int totalPage = (int)Math.ceil(counts/perPage*1.0);
-        httpServletResponse.setIntHeader("totalPage",totalPage);
-        httpServletResponse.setIntHeader("currentPage",page);
-        return result;
-    }
-
-    @NotNull
-    @Override
-    public List<OnLineQuestion> getQByConditions(@NotNull String userId, boolean inUse, @NotNull QCondition qCondition, int page, int perPage, @NotNull HttpServletResponse httpServletResponse) {
-        String keywords = qCondition.getKeywords();
-        Byte factorType = qCondition.getFactorType();
-        Byte resourceKind = qCondition.getResourceKind();
-        Byte showLevel = qCondition.getShowLevel();
-        Byte worKind = qCondition.getWorKind();
-        // 1.璁$畻鍑鸿捣濮嬩綅缃�
-        int startPosition = (page-1)*perPage;
-        //2.鍒嗛〉鐨勬柟娉曟煡璇㈡暟鎹�
-        PageHelper.startPage(startPosition,perPage);
-        //3.鍒嗛〉鏄剧ず鏁版嵁  //妯$硦鏌ヨ
-        List<OnLineQuestion> result = onLineQuestionMapper.getQByConditions(keywords,factorType,resourceKind,showLevel,worKind);
-
-        int counts = onLineQuestionMapper.getQByConditionsCounts(keywords,factorType,resourceKind,showLevel,worKind);
-        int totalPage = (int)Math.ceil(counts/perPage*1.0);
-        httpServletResponse.setIntHeader("totalPage",totalPage);
-        httpServletResponse.setIntHeader("currentPage",page);
-        return result;
-    }
-}
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/OnLineQuestionServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/OnLineQuestionServiceImpl.kt
new file mode 100644
index 0000000..d9fba46
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/OnLineQuestionServiceImpl.kt
@@ -0,0 +1,542 @@
+package cn.flightfeather.supervision.lightshare.service.Impl
+
+import cn.flightfeather.supervision.domain.entity.*
+import cn.flightfeather.supervision.domain.enumeration.*
+import cn.flightfeather.supervision.domain.mapper.*
+import cn.flightfeather.supervision.infrastructure.utils.DateUtil
+import cn.flightfeather.supervision.lightshare.service.OnLineQuestionService
+import cn.flightfeather.supervision.lightshare.vo.*
+import com.github.pagehelper.PageHelper
+import org.springframework.beans.BeanUtils
+import org.springframework.stereotype.Component
+import org.springframework.stereotype.Service
+import tk.mybatis.mapper.entity.Example
+import java.util.*
+import javax.annotation.Resource
+import javax.servlet.http.HttpServletResponse
+
+/**
+ * @Description: 鏈堥棶棰樺疄鐜扮被
+ */
+@Service
+@Component
+class OnLineQuestionServiceImpl(
+    private val mgtFileMapper: MgtFileMapper,
+    private val mgtItemMapper: MgtItemMapper,
+    private val userinfoMapper: UserinfoMapper,
+    private val cstQuestionMapper: CstQuestionMapper,
+    private val settingAnswerMapper: SettingAnswerMapper,
+    private val enforceCaseMapper: EnforceCaseMapper
+) : OnLineQuestionService {
+    @Resource
+    private val onLineQuestionMapper: OnLineQuestionMapper? = null
+    override fun addQuestions(userId: String, questions: List<OnLineQuestion>): Int {
+        var r = 0
+        for (q in questions) {
+            r += onLineQuestionMapper!!.insert(q)
+        }
+        return r
+    }
+
+    override fun getQuestions(userId: String, inUse: Boolean, page: Int, perPage: Int, httpServletResponse: HttpServletResponse): List<OnLineQuestion> {
+
+        // 1.璁$畻鍑鸿捣濮嬩綅缃�
+        val startPosition = (page - 1) * perPage
+        //2.鍒嗛〉鐨勬柟娉曟煡璇㈡暟鎹�
+        PageHelper.startPage<Any>(startPosition, perPage)
+        val allMeetings: List<OnLineQuestion>
+        //3.鍒嗛〉鏄剧ず鏁版嵁
+        allMeetings = if (inUse) {
+            onLineQuestionMapper!!.findAll()
+        } else {
+            onLineQuestionMapper!!.findAllfalse()
+        }
+        val counts = onLineQuestionMapper.count()
+        val totalPage = Math.ceil(counts / perPage * 1.0).toInt()
+        httpServletResponse.setIntHeader("totalPage", totalPage)
+        httpServletResponse.setIntHeader("currentPage", page)
+        return allMeetings
+    }
+
+    override fun getQDescription(userId: String, questionId: String): String {
+        return onLineQuestionMapper!!.getQDescription(questionId)
+    }
+
+    override fun getQResource(userId: String, questionId: String, page: Int, perPage: Int, httpServletResponse: HttpServletResponse): List<String> {
+        // 1.璁$畻鍑鸿捣濮嬩綅缃�
+        val startPosition = (page - 1) * perPage
+        val getQDescription = onLineQuestionMapper!!.getQResource(questionId)
+        val lis = Arrays.asList(*getQDescription.split("銆�").toTypedArray())
+        val result: List<String>
+        result = if (startPosition + perPage < lis.size) {
+            lis.subList(startPosition, startPosition + perPage)
+        } else {
+            lis.subList(startPosition, lis.size)
+        }
+        val counts = lis.size
+        val totalPage = Math.ceil(counts / perPage * 1.0).toInt()
+        httpServletResponse.setIntHeader("totalPage", totalPage)
+        httpServletResponse.setIntHeader("currentPage", page)
+        return result
+    }
+
+    override fun getQByConditions(userId: String, inUse: Boolean, qCondition: QCondition, page: Int, perPage: Int, httpServletResponse: HttpServletResponse): List<OnLineQuestion> {
+        val keywords = qCondition.keywords
+        val factorType = qCondition.factorType
+        val resourceKind = qCondition.resourceKind
+        val showLevel = qCondition.showLevel
+        val worKind = qCondition.worKind
+        // 1.璁$畻鍑鸿捣濮嬩綅缃�
+        val startPosition = (page - 1) * perPage
+        //2.鍒嗛〉鐨勬柟娉曟煡璇㈡暟鎹�
+        PageHelper.startPage<Any>(startPosition, perPage)
+        //3.鍒嗛〉鏄剧ず鏁版嵁  //妯$硦鏌ヨ
+        val result = onLineQuestionMapper!!.getQByConditions(keywords, factorType, resourceKind, showLevel, worKind)
+        val counts = onLineQuestionMapper.getQByConditionsCounts(keywords, factorType, resourceKind, showLevel, worKind)
+        val totalPage = Math.ceil(counts / perPage * 1.0).toInt()
+        httpServletResponse.setIntHeader("totalPage", totalPage)
+        httpServletResponse.setIntHeader("currentPage", page)
+        return result
+    }
+
+    override fun searchLaw(userId: String, keyword: String, type: Byte?, page: Int, perPage: Int): BaseResponse<List<ConsultResultVo>> {
+        val userInfo = userinfoMapper.selectByPrimaryKey(userId) ?: return BaseResponse(false)
+        val response = BaseResponse<List<ConsultResultVo>>(false, head = DataHead(page, perPage))
+        val result = mutableListOf<ConsultResultVo>()
+
+        //褰撴悳绱笉闄愬埗绫诲瀷鏃讹紝榛樿姣忕绫诲瀷鍙幏鍙栧墠5椤癸紱褰撻檺鍒剁被鍨嬫椂锛屽垯鏍规嵁鍓嶇璇锋眰鍒嗛〉鏁拌繑鍥�
+        val _perPage = if (type == null) 5 else perPage
+        val _page = page
+
+        //娉曞緥娉曡鏂囦欢
+        if (type == null || type == ConsultResultType.TYPE1.value) {
+            val p = PageHelper.startPage<MgtFile>(_page, _perPage)
+            val example = Example(MgtFile::class.java).apply {
+                if (keyword.isNotBlank()) {
+                    createCriteria().orLike("mfName", "%${keyword}%")
+                        .orLike("mfShortName", "%${keyword}%")
+                        .orLike("mfSummary", "%${keyword}%")
+                        .orLike("mfKeywordLv1", "%${keyword}%")
+                        .orLike("mfKeywordLv2", "%${keyword}%")
+                        .orLike("mfKeywordLv3", "%${keyword}%")
+                        .orLike("mfKeywordLv4", "%${keyword}%")
+                } else {
+                    // TODO: 2022/9/8 娌℃湁鍏抽敭瀛楁椂锛屾寜鐓х儹闂ㄨ幏鍙栨満鍒惰幏鍙�
+                    createCriteria().orLike("mfExtension1", "%${userInfo.extension2}%")
+                        .orEqualTo("mfExtension1", "")
+                        .orIsNull("mfExtension1")
+                }
+            }
+            mgtFileMapper.selectByExample(example).forEach {
+                result.add(ConsultResultFileVo().apply {
+                    id = it.mfGuid
+                    name = it.mfName
+                    des = it.mfSummary
+                    typeId = ConsultResultType.TYPE1.value
+                    typeName = ConsultResultType.TYPE1.des
+
+                    fileIndustry = IndustryType.getNameByValue(it.mfFileIndustry)
+                    itemType = EnElementType.getNameByValue(it.mfEpItemType)
+                    itemSubType = EnElementSubType.getNameByValue(it.mfEpItemSubtype)
+                    fileUrl = it.mfFileUrl
+                    val keyList = it.mfKeywordLv1.split("銆�")
+                    for (i in keyList.indices) {
+                        if (i < 5) {
+                            keywords.add(keyList[i])
+                        } else {
+                            break
+                        }
+                    }
+                    time = it.mfUpdateTime
+                    fileType = ConsultFileType.getNameByValue(it.mfFileType)
+                    referenceNumber = it.mfReferenceNumber
+                    effectiveDate = DateUtil.DateToString(it.mfEffectiveDate, DateUtil.DateStyle.YYYY_MM_DD)
+                    closingDate = DateUtil.DateToString(it.mfClosingDate, DateUtil.DateStyle.YYYY_MM_DD)
+                    effective = Date().time > (it.mfClosingDate?.time ?: 0)
+                })
+            }
+            response.success = true
+            response.head?.run {
+                this.page = p.pageNum
+                this.totalPage = p.pages
+            }
+        }
+        //娉曞緥娉曡鏉$洰
+        if (type == null || type == ConsultResultType.TYPE2.value) {
+            val map = mutableMapOf<String, MgtFile>()
+            val p = PageHelper.startPage<MgtItem>(_page, _perPage)
+            val example = Example(MgtItem::class.java).apply {
+                if (keyword.isNotBlank()) {
+                    createCriteria().orLike("miChapterKeyword", "%${keyword}%")
+                        .orLike("miKeyword", "%${keyword}%")
+                } else {
+                    // TODO: 2022/9/8 娌℃湁鍏抽敭瀛楁椂锛屾寜鐓х儹闂ㄨ幏鍙栨満鍒惰幏鍙栨潯鐩�
+                }
+            }
+            mgtItemMapper.selectByExample(example).forEach {
+                if (!map.containsKey(it.mfGuid)) {
+                    map[it.mfGuid] = mgtFileMapper.selectByPrimaryKey(it.mfGuid)
+                }
+                result.add(ConsultResultItemVo().apply {
+                    id = it.miGuid
+                    name = it.miItemName
+                    des = it.miItemContent
+                    typeId = ConsultResultType.TYPE2.value
+                    typeName = ConsultResultType.TYPE2.des
+
+//                    fileIndustry = IndustryType.getNameByValue(it.mfFileIndustry)
+//                    itemType = EnElementType.getNameByValue(it.mfEpItemType)
+//                    fileUrl = it.mfFileUrl
+                    val keyList = it.miKeyword.split("銆�")
+                    for (i in keyList.indices) {
+                        if (i < 5) {
+                            keywords.add(keyList[i])
+                        } else {
+                            break
+                        }
+                    }
+                    time = it.miUpdateTime
+
+                    chapterName = it.miChapterName
+                    fileId = it.mfGuid
+                    fileName = it.mfName
+                    referenceNumber = it.mfReferenceNumber
+                    effectiveDate = DateUtil.DateToString(map[it.mfGuid]?.mfEffectiveDate, DateUtil.DateStyle.YYYY_MM_DD)
+                    closingDate = DateUtil.DateToString(map[it.mfGuid]?.mfClosingDate, DateUtil.DateStyle.YYYY_MM_DD)
+                    effective = Date().time > (map[it.mfGuid]?.mfClosingDate?.time ?: 0)
+                    relatedItems = it.miRelatedItems?.split(";")?.size ?: 0
+                })
+            }
+            response.success = true
+            response.head?.run {
+                this.page = p.pageNum
+                this.totalPage = p.pages
+            }
+        }
+        //鐜繚闂
+        if (type == null || type == ConsultResultType.TYPE4.value) {
+            val p = PageHelper.startPage<CstQuestion>(_page, _perPage)
+            val example = Example(CstQuestion::class.java).apply {
+                if (keyword.isNotBlank()) {
+                    createCriteria().orLike("cqScenes", "%${userInfo.extension2}%")
+                        .orEqualTo("cqScenes", "")
+                        .orIsNull("cqScenes")
+                    and(
+                        createCriteria().orLike("cqContent", "%${keyword}%")
+                            .orLike("cqKeywords", "%${keyword}%")
+                    )
+                } else {
+                    // TODO: 2022/9/8 娌℃湁鍏抽敭瀛楁椂锛屾寜鐓х儹闂ㄨ幏鍙栨満鍒惰幏鍙�
+                    createCriteria().orLike("cqScenes", "%${userInfo.extension2}%")
+                    orderBy("cqTotalnum")
+                }
+            }
+            cstQuestionMapper.selectByExample(example).forEach {
+                val answers = settingAnswerMapper.selectByExample(Example(SettingAnswer::class.java).apply {
+                    createCriteria().andEqualTo("cqGuid", it.cqGuid)
+                })
+
+                result.add(ConsultResultQAVo().apply {
+                    id = it.cqGuid
+                    name = it.cqContent
+                    if (answers.isNotEmpty()) {
+                        des = answers[0].saContent
+                    }
+                    typeId = ConsultResultType.TYPE4.value
+                    typeName = ConsultResultType.TYPE4.des
+
+//                    fileIndustry = IndustryType.getNameByValue(it.mfFileIndustry)
+                    itemType = EnElementType.getNameByValue(it.cqKind)
+                    itemSubType = EnElementSubType.getNameByValue(it.cqSubkind)
+//                    fileUrl = it.mfFileUrl
+//                    val keyList = it.mfKeywordLv1.split("銆�")
+//                    for (i in keyList.indices) {
+//                        if (i < 5) {
+//                            keywords.add(keyList[i])
+//                        } else {
+//                            break
+//                        }
+//                    }
+                    time = it.cqCreateTime
+                })
+            }
+            response.success = true
+            response.head?.run {
+                this.page = p.pageNum
+                this.totalPage = p.pages
+            }
+        }
+        //鎵ф硶妗堜緥
+        if (type == null || type == ConsultResultType.TYPE3.value) {
+            val p = PageHelper.startPage<EnforceCase>(_page, _perPage)
+            val example = Example(EnforceCase::class.java).apply {
+                if (keyword.isNotBlank()) {
+                    createCriteria().orLike("ecScenes", "%${userInfo.extension2}%")
+                        .orEqualTo("ecScenes", "")
+                        .orIsNull("ecScenes")
+                    and(
+                        createCriteria().orLike("ecTitle", "%${keyword}%")
+                            .orLike("ecKeywords", "%${keyword}%")
+                    )
+                } else {
+                    // TODO: 2022/9/8 娌℃湁鍏抽敭瀛楁椂锛屾寜鐓х儹闂ㄨ幏鍙栨満鍒惰幏鍙�
+                    createCriteria().orLike("ecScenes", "%${userInfo.extension2}%")
+                        .orEqualTo("ecScenes", "")
+                        .orIsNull("ecScenes")
+                    orderBy("ecOccurDate").desc()
+                }
+            }
+            enforceCaseMapper.selectByExample(example).forEach {
+                result.add(ConsultResultCaseVo().apply {
+                    id = it.ecGuid
+                    name = it.ecTitle
+                    des = it.ecSummary
+                    typeId = ConsultResultType.TYPE3.value
+                    typeName = ConsultResultType.TYPE3.des
+
+//                    fileIndustry = IndustryType.getNameByValue(it.mfFileIndustry)
+                    itemType = EnElementType.getNameByValue(it.ecEpItemType)
+                    itemSubType = EnElementSubType.getNameByValue(it.ecEpItemSubtype)
+                    imgUrl = it.ecAppendixUrl?.split(";")?.get(0)
+                    time = it.ecCreateTime
+
+                    provinceName = it.ecProvinceName
+                    cityName = it.ecCityName
+                    occurDate = DateUtil.DateToString(it.ecOccurDate, DateUtil.DateStyle.YYYY_MM_DD)
+                    punish = it.ecIsPunish
+                    detained = it.ecIsDetained
+                    illegal = it.ecIsIllegal
+                    shotSpot = it.ecIsShotspot
+                    supervise = it.ecIsSupervise
+                    minor = it.ecIsMinor
+                })
+            }
+            response.success = true
+            response.head?.run {
+                this.page = p.pageNum
+                this.totalPage = p.pages
+            }
+        }
+
+
+        return response.apply { data = result }
+    }
+
+    override fun getTopicLaw(userId: String): List<MgtFileVo> {
+        val userInfo = userinfoMapper.selectByPrimaryKey(userId) ?: return emptyList()
+        val perPage = 5
+        val p = PageHelper.startPage<MgtFile>(1, perPage)
+        val result = mutableListOf<MgtFileVo>()
+        mgtFileMapper.selectByExample(Example(MgtFile::class.java).apply {
+            createCriteria().orLike("mfExtension1", "%${userInfo.extension2}%")
+                .orEqualTo("mfExtension1", "")
+                .orIsNull("mfExtension1")
+        }).forEach {
+            val vo = MgtFileVo()
+            BeanUtils.copyProperties(it, vo)
+            vo.apply {
+                mfFileIndustry = IndustryType.getNameByValue(it.mfFileIndustry)
+                mfMgtLevel = ManageLevelType.getNameByValue(it.mfMgtLevel)
+                mfFileType = ConsultFileType.getNameByValue(it.mfFileType)
+                mfEpItemType = EnElementType.getNameByValue(it.mfEpItemType)
+                mfEpItemSubtype = EnElementSubType.getNameByValue(it.mfEpItemSubtype)
+                mfSaveType = FileSaveType.getNameByValue(it.mfSaveType)
+            }
+            result.add(vo)
+        }
+        return result
+    }
+
+    override fun getMgtFile(userId: String, fileId: String): MgtFileVo {
+        val result = MgtFileVo()
+        mgtFileMapper.selectByPrimaryKey(fileId)?.let {
+            BeanUtils.copyProperties(it, result)
+            result.apply {
+                mfFileIndustry = IndustryType.getNameByValue(it.mfFileIndustry)
+                mfMgtLevel = ManageLevelType.getNameByValue(it.mfMgtLevel)
+                mfFileType = ConsultFileType.getNameByValue(it.mfFileType)
+                mfEpItemType = EnElementType.getNameByValue(it.mfEpItemType)
+                mfEpItemSubtype = EnElementSubType.getNameByValue(it.mfEpItemSubtype)
+                mfSaveType = FileSaveType.getNameByValue(it.mfSaveType)
+            }
+        }
+
+        return result
+    }
+
+    override fun getTopicMgtItems(userId: String): List<MgtItem> {
+        val perPage = 5
+        val p = PageHelper.startPage<MgtFile>(1, perPage)
+        return mgtItemMapper.selectAll()
+    }
+
+    override fun getMgtItem(userId: String, itemId: String): MgtItem {
+        return mgtItemMapper.selectByPrimaryKey(itemId) ?: MgtItem()
+    }
+
+    override fun getTopicQA(userId: String): List<CstQuestionVo> {
+        val userInfo = userinfoMapper.selectByPrimaryKey(userId) ?: return emptyList()
+        val perPage = 5
+        val p = PageHelper.startPage<CstQuestion>(1, perPage)
+        val result = mutableListOf<CstQuestionVo>()
+        cstQuestionMapper.selectByExample(Example(CstQuestion::class.java).apply {
+            createCriteria().orLike("cqScenes", "%${userInfo.extension2}%")
+            orderBy("cqTotalnum")
+        }).forEach {
+            val answers = settingAnswerMapper.selectByExample(Example(SettingAnswer::class.java).apply {
+                createCriteria().andEqualTo("cqGuid", it.cqGuid)
+            })
+            val vo = CstQuestionVo()
+            BeanUtils.copyProperties(it, vo)
+            vo.apply {
+                cqKind = EnElementType.getNameByValue(it.cqKind)
+                cqSubkind = EnElementSubType.getNameByValue(it.cqSubkind)
+            }
+
+            if (answers.isNotEmpty()) {
+                vo.answer = answers[0].saContent
+            }
+            result.add(vo)
+        }
+        return result
+    }
+
+    override fun getQuestionsByType(userId: String, kind: Byte?, subKind: Byte?, page: Int, perPage: Int): BaseResponse<List<ConsultResultVo>> {
+        val userInfo = userinfoMapper.selectByPrimaryKey(userId) ?: return BaseResponse(false, "鐢ㄦ埛涓嶅瓨鍦�")
+        val result = mutableListOf<ConsultResultVo>()
+        val p = PageHelper.startPage<CstQuestion>(page, perPage)
+        val example = Example(CstQuestion::class.java).apply {
+            createCriteria().apply {
+                kind?.let { andEqualTo("cqKind", kind) }
+                subKind?.let { andEqualTo("cqSubkind", subKind) }
+            }
+                .andLike("cqScenes", "%${userInfo.extension2}%")
+            orderBy("cqTotalnum")
+        }
+        cstQuestionMapper.selectByExample(example).forEach {
+            val answers = settingAnswerMapper.selectByExample(Example(SettingAnswer::class.java).apply {
+                createCriteria().andEqualTo("cqGuid", it.cqGuid)
+            })
+
+            result.add(ConsultResultQAVo().apply {
+                id = it.cqGuid
+                name = it.cqContent
+                if (answers.isNotEmpty()) {
+                    des = answers[0].saContent
+                }
+                typeId = ConsultResultType.TYPE4.value
+                typeName = ConsultResultType.TYPE4.des
+                itemType = EnElementType.getNameByValue(it.cqKind)
+                itemSubType = EnElementSubType.getNameByValue(it.cqSubkind)
+                time = it.cqCreateTime
+            })
+
+//            val vo = CstQuestionVo()
+//            BeanUtils.copyProperties(it, vo)
+//            vo.apply {
+//                cqKind = EnElementType.getNameByValue(it.cqKind)
+//                cqSubkind = EnElementSubType.getNameByValue(it.cqSubkind)
+//            }
+//
+//            if (answers.isNotEmpty()) {
+//                vo.answer = answers[0].saContent
+//            }
+//            result.add(vo)
+        }
+        val totalCount = cstQuestionMapper.selectCountByExample(example)
+        return BaseResponse(true, head = DataHead(p.pageNum, p.pages, totalCount), data = result)
+    }
+
+    override fun getQuestion(userId: String, qId: String): CstQuestionVo {
+        val result = CstQuestionVo()
+        cstQuestionMapper.selectByPrimaryKey(qId)?.let {
+            BeanUtils.copyProperties(it, result)
+            result.apply {
+                cqKind = EnElementType.getNameByValue(it.cqKind)
+                cqSubkind = EnElementSubType.getNameByValue(it.cqSubkind)
+            }
+        }
+
+        return result
+    }
+
+    override fun getAnswers(userId: String, qId: String): List<SettingAnswer> {
+        return settingAnswerMapper.selectByExample(Example(SettingAnswer::class.java).apply {
+            createCriteria().andEqualTo("cqGuid", qId)
+        })
+    }
+
+    override fun getTopicCase(userId: String): List<EnforceCaseVo> {
+        val userInfo = userinfoMapper.selectByPrimaryKey(userId) ?: return emptyList()
+        val perPage = 5
+        val p = PageHelper.startPage<MgtFile>(1, perPage)
+        val result = mutableListOf<EnforceCaseVo>()
+        enforceCaseMapper.selectByExample(Example(EnforceCase::class.java).apply {
+            createCriteria().orLike("ecScenes", "%${userInfo.extension2}%")
+                .orEqualTo("ecScenes", "")
+                .orIsNull("ecScenes")
+            orderBy("ecOccurDate").desc()
+        }).forEach {
+            val vo = EnforceCaseVo()
+            BeanUtils.copyProperties(it, vo)
+            vo.apply {
+                ecEpItemType = EnElementType.getNameByValue(it.ecEpItemType)
+                ecEpItemSubtype = EnElementSubType.getNameByValue(it.ecEpItemSubtype)
+                ecType = EnforceCaseType.getNameByValue(it.ecType)
+            }
+            result.add(vo)
+        }
+        return result
+    }
+
+    override fun getCase(userId: String, caseId: String): EnforceCaseVo {
+        val result = EnforceCaseVo()
+        enforceCaseMapper.selectByPrimaryKey(caseId)?.let {
+            BeanUtils.copyProperties(it, result)
+            result.apply {
+                ecEpItemType = EnElementType.getNameByValue(it.ecEpItemType)
+                ecEpItemSubtype = EnElementSubType.getNameByValue(it.ecEpItemSubtype)
+                ecType = EnforceCaseType.getNameByValue(it.ecType)
+            }
+        }
+
+        return result
+    }
+
+    override fun getEnElementTypes(userId: String): List<Pair<String, Byte>> {
+        return listOf(
+            Pair(EnElementType.TYPE1.des, EnElementType.TYPE1.value),
+            Pair(EnElementType.TYPE2.des, EnElementType.TYPE2.value),
+            Pair(EnElementType.TYPE3.des, EnElementType.TYPE3.value),
+            Pair(EnElementType.TYPE4.des, EnElementType.TYPE4.value),
+            Pair(EnElementType.TYPE5.des, EnElementType.TYPE5.value),
+            Pair(EnElementType.TYPE6.des, EnElementType.TYPE6.value),
+            Pair(EnElementType.TYPE7.des, EnElementType.TYPE7.value),
+            Pair(EnElementType.TYPE8.des, EnElementType.TYPE8.value),
+            Pair(EnElementType.TYPE9.des, EnElementType.TYPE9.value),
+            Pair(EnElementType.TYPE10.des, EnElementType.TYPE10.value),
+            Pair(EnElementType.TYPE21.des, EnElementType.TYPE21.value),
+            Pair(EnElementType.TYPE31.des, EnElementType.TYPE31.value),
+            Pair(EnElementType.TYPE41.des, EnElementType.TYPE41.value),
+            Pair(EnElementType.TYPE51.des, EnElementType.TYPE51.value),
+            Pair(EnElementType.TYPE61.des, EnElementType.TYPE61.value),
+            Pair(EnElementType.TYPE99.des, EnElementType.TYPE99.value),
+        )
+    }
+
+    override fun getEnElementSubTypes(userId: String): List<List<Pair<String, Byte>>> {
+        val result = mutableListOf<List<Pair<String, Byte>>>()
+        EnElementSubType.subTypes.forEach { sList ->
+            val list = mutableListOf<Pair<String, Byte>>()
+            for (i in sList.indices) {
+                if (i == sList.lastIndex) {
+                    list.add(Pair(sList[i], 99.toByte()))
+                } else {
+                    list.add(Pair(sList[i], (i + 1).toByte()))
+                }
+            }
+            result.add(list)
+        }
+        return result
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/UserinfoServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/UserinfoServiceImpl.kt
index 7fd7c72..47d73ed 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/UserinfoServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/UserinfoServiceImpl.kt
@@ -1,5 +1,7 @@
 package cn.flightfeather.supervision.lightshare.service.Impl
 
+import cn.flightfeather.supervision.domain.entity.BaseInfo
+import cn.flightfeather.supervision.domain.entity.Company
 import cn.flightfeather.supervision.domain.entity.Userinfo
 import cn.flightfeather.supervision.domain.enumeration.SceneType
 import cn.flightfeather.supervision.domain.mapper.*
@@ -12,6 +14,8 @@
 import org.springframework.stereotype.Service
 import org.springframework.web.multipart.MultipartFile
 import tk.mybatis.mapper.entity.Example
+import java.math.BigDecimal
+import java.util.*
 import javax.servlet.http.HttpServletResponse
 
 @Service
@@ -97,6 +101,55 @@
         }
     }
 
+    override fun register2(loginRequestVo: LoginRequestVo): AccessToken {
+        val result = userinfoMapper.selectByExample(Example(Userinfo::class.java).apply {
+            createCriteria().andEqualTo("realname", loginRequestVo.userName)
+        })
+        if (result.isNotEmpty()) {
+            return AccessToken().apply { success = false }
+        } else {
+            val userInfo = Userinfo().apply {
+                guid = UUIDGenerator.generate16ShortUUID()
+                acountname = loginRequestVo.userName
+                realname = loginRequestVo.userName
+                password = loginRequestVo.password
+                usertypeid = 3
+                usertype = "浼佷笟"
+                isenable = true
+                extension2 = loginRequestVo.sceneType
+            }
+            val company = Company().apply {
+                ciGuid = UUIDGenerator.generate16ShortUUID()
+                ciName = loginRequestVo.department
+                ciAddress = loginRequestVo.address
+                ciLongitude = BigDecimal.ZERO
+                ciLatitude = BigDecimal.ZERO
+                ciOrgCode = loginRequestVo.orgCode
+                ciBuildDate = Date()
+                ciTelephone = loginRequestVo.telephone
+            }
+            val baseInfo = BaseInfo().apply {
+                biGuid = userInfo.guid
+                biName = userInfo.realname
+                ciGuid = company.ciGuid
+                ciName = company.ciName
+                biTelephone = loginRequestVo.telephone
+                biAddress
+                biCreateTime = Date()
+                biUpdateTime = Date()
+                biExtension1 = userInfo.acountname
+            }
+            save(userInfo)
+            baseInfoMapper.insert(baseInfo)
+            companyMapper.insert(company)
+
+            return AccessToken().apply {
+                userId = userInfo.guid
+                success = true
+            }
+        }
+    }
+
     override fun getAddressBook(userId: String): List<FriendVo> {
         val resultList = mutableListOf<FriendVo>()
         val userInfo = findOne(userId)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/OnLineQuestionService.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/OnLineQuestionService.kt
index 10647ee..a17f555 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/OnLineQuestionService.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/OnLineQuestionService.kt
@@ -1,7 +1,7 @@
 package cn.flightfeather.supervision.lightshare.service
 
-import cn.flightfeather.supervision.domain.entity.OnLineQuestion
-import cn.flightfeather.supervision.lightshare.vo.QCondition
+import cn.flightfeather.supervision.domain.entity.*
+import cn.flightfeather.supervision.lightshare.vo.*
 import javax.servlet.http.HttpServletResponse
 
 interface OnLineQuestionService {
@@ -16,4 +16,29 @@
 
     fun getQByConditions(userId: String, inUse: Boolean, qCondition: QCondition, page: Int, perPage: Int,response: HttpServletResponse): List<OnLineQuestion>
 
+    fun searchLaw(userId: String, keyword: String, type: Byte?, page: Int, perPage: Int): BaseResponse<List<ConsultResultVo>>
+
+    fun getTopicLaw(userId: String):List<MgtFileVo>
+
+    fun getMgtFile(userId: String, fileId: String): MgtFileVo
+
+    fun getTopicMgtItems(userId: String):List<MgtItem>
+
+    fun getMgtItem(userId: String, itemId: String): MgtItem
+
+    fun getTopicQA(userId: String):List<CstQuestionVo>
+
+    fun getQuestionsByType(userId: String, kind:Byte?, subKind:Byte?, page: Int, perPage: Int): BaseResponse<List<ConsultResultVo>>
+
+    fun getQuestion(userId: String, qId: String): CstQuestionVo
+
+    fun getAnswers(userId: String, qId: String): List<SettingAnswer>
+
+    fun getTopicCase(userId: String):List<EnforceCaseVo>
+
+    fun getCase(userId: String, caseId:String):EnforceCaseVo
+
+    fun getEnElementTypes(userId: String): List<Pair<String, Byte>>
+
+    fun getEnElementSubTypes(userId: String): List<List<Pair<String, Byte>>>
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserinfoService.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserinfoService.kt
index 2b2cb74..0aee3a4 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserinfoService.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/UserinfoService.kt
@@ -22,6 +22,8 @@
 
     fun register(loginRequestVo: LoginRequestVo): AccessToken
 
+    fun register2(loginRequestVo: LoginRequestVo): AccessToken
+
     fun getAddressBook(userId:String):List<FriendVo>
 
     fun upLoadAccountPic(userId: String, files: Array<MultipartFile>): String
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/BaseResponse.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/BaseResponse.kt
index 45b1d2a..b2e496a 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/BaseResponse.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/BaseResponse.kt
@@ -17,7 +17,7 @@
         @ApiModelProperty("璇锋眰杩斿洖澶翠俊鎭�")
         val head: DataHead? = null,
         @ApiModelProperty("璇锋眰杩斿洖鏁版嵁")
-        val data: T? = null
+        var data: T? = null
 ) {
         init {
                 if (message.isBlank()) {
@@ -32,5 +32,6 @@
 
 data class DataHead(
         var page: Int = 1,
-        var totalPage: Int = 1
+        var totalPage: Int = 1,
+        var totalCount: Int = 0
 )
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/CommitmentVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/CommitmentVo.kt
index 6b7fce1..1096bc3 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/CommitmentVo.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/CommitmentVo.kt
@@ -4,8 +4,8 @@
  * 鎵胯涔︾缃蹭俊鎭�
  */
 data class CommitmentVo(
-    val city: String = "",
-    val district: String = "",
+    var city: String = "",
+    var district: String = "",
     val department: String = "",
     val socialCode: String = "",
     //鏂囧彿锛堟瘡涓被鍨嬬殑鍦烘櫙鍚嶇О涓嶅悓锛屽伐鍦帮細宸ュ湴鎶ュ缓鍙凤紱椁愰ギ锛氱幆璇勫鎵规枃鍙风瓑锛�
@@ -18,7 +18,7 @@
     val type4: Boolean = true,
     val sign: String = "",
     val seal: String = "",
-    val year: String = "",
-    val month: String = "",
-    val day: String = ""
+    var year: String = "",
+    var month: String = "",
+    var day: String = ""
 )
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultCaseVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultCaseVo.kt
new file mode 100644
index 0000000..d9bc138
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultCaseVo.kt
@@ -0,0 +1,26 @@
+package cn.flightfeather.supervision.lightshare.vo
+
+import cn.flightfeather.supervision.domain.entity.OnLineAnswer
+import java.util.*
+
+/**
+ * 鏅鸿兘鍜ㄨ鎼滅储缁撴灉
+ * 鎵ф硶妗堜緥
+ */
+class ConsultResultCaseVo : ConsultResultVo() {
+    var provinceName: String? = null
+    var cityName: String? = null
+    var occurDate: String? = null
+    //鏄惁璁捐琛屾斂澶勭綒
+    var punish: Boolean = false
+    //鏄惁璁捐琛屾斂鎷樼暀
+    var detained: Boolean = false
+    //鏄惁璁捐鍒戜簨璐d换
+    var illegal: Boolean = false
+    //鏄惁璁捐鐜繚鐑偣
+    var shotSpot: Boolean = false
+    //鏄惁璁捐鐫e療瑕佺偣
+    var supervise: Boolean = false
+    //鏄惁璁捐琛屾斂澶勭綒杞诲井杩濇硶
+    var minor: Boolean = false
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultFileVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultFileVo.kt
new file mode 100644
index 0000000..0983549
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultFileVo.kt
@@ -0,0 +1,21 @@
+package cn.flightfeather.supervision.lightshare.vo
+
+import java.util.*
+
+/**
+ * 鏅鸿兘鍜ㄨ鎼滅储缁撴灉
+ * 娉曡鏂囦欢
+ */
+class ConsultResultFileVo : ConsultResultVo() {
+
+    //鏂囦欢绫诲埆
+    var fileType: String? = null
+    //鏉$洰鎵�灞炴枃鍙�
+    var referenceNumber: String? = null
+    //鎵�灞炴枃浠剁敓鏁堟椂闂�
+    var effectiveDate: String? = null
+    //鎵�灞炴枃浠剁敓鏁堟埅姝㈡椂闂�
+    var closingDate: String? = null
+    //鎵�灞炴枃浠舵槸鍚︾敓鏁�
+    var effective: Boolean = true
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultItemVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultItemVo.kt
new file mode 100644
index 0000000..37975dd
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultItemVo.kt
@@ -0,0 +1,29 @@
+package cn.flightfeather.supervision.lightshare.vo
+
+import java.util.*
+
+/**
+ * 鏅鸿兘鍜ㄨ鎼滅储缁撴灉
+ * 鏂囦欢鏉$洰
+ */
+class ConsultResultItemVo : ConsultResultVo() {
+
+    //鏉$洰鎵�灞炵殑鏂囦欢id
+    var fileId: String? = null
+    //鏉$洰鎵�灞炵殑鏂囦欢鍚嶇О
+    var fileName: String? = null
+    //鏉$洰鎵�灞炴枃鍙�
+    var referenceNumber: String? = null
+    //鏉$洰鎵�灞炵珷鑺傚悕绉�
+    var chapterName: String? = null
+    //鎵�灞炴枃浠剁敓鏁堟椂闂�
+    var effectiveDate: String? = null
+    //鎵�灞炴枃浠剁敓鏁堟埅姝㈡椂闂�
+    var closingDate: String? = null
+    //鎵�灞炴枃浠舵槸鍚︾敓鏁�
+    var effective: Boolean = true
+    //鍐呴儴鍏宠仈鏉$洰
+    var relatedItems: Int = 0
+    //鍐呴儴鍏宠仈妗堜緥
+    var relatedCases: Int = 0
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultQAVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultQAVo.kt
new file mode 100644
index 0000000..c0dfc82
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultQAVo.kt
@@ -0,0 +1,13 @@
+package cn.flightfeather.supervision.lightshare.vo
+
+import cn.flightfeather.supervision.domain.entity.OnLineAnswer
+import java.util.*
+
+/**
+ * 鏅鸿兘鍜ㄨ鎼滅储缁撴灉
+ * 闂绛旂枒
+ */
+class ConsultResultQAVo : ConsultResultVo() {
+
+//    val answer: String? = null
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultVo.kt
new file mode 100644
index 0000000..c1aff8c
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ConsultResultVo.kt
@@ -0,0 +1,32 @@
+package cn.flightfeather.supervision.lightshare.vo
+
+import cn.flightfeather.supervision.domain.enumeration.ConsultResultType
+import java.util.*
+
+/**
+ * 鏅鸿兘鍜ㄨ鎼滅储缁撴灉
+ */
+open class ConsultResultVo {
+    var id: String? = null
+    var name: String? = null
+    var des: String? = null
+    var imgUrl:String? = null
+    /**
+     * 鎼滅储缁撴灉鐨勫垎绫�
+     * @see [ConsultResultType]
+     */
+    var typeId: Byte? = null
+    var typeName: String? = null
+
+    //鐩稿叧琛屼笟
+    var fileIndustry: String? = null
+    //鐩稿叧鐜繚瑕佺礌澶х被
+    var itemType: String? = null
+    //鐩稿叧鐜繚瑕佺礌灏忕被
+    var itemSubType: String? = null
+    //鏂囦欢璺緞
+    var fileUrl: String? = null
+    // 鍏抽敭璇�
+    var keywords: MutableList<String> = mutableListOf()
+    var time: Date? = null
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/CstQuestionVo.java b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/CstQuestionVo.java
new file mode 100644
index 0000000..c6927b4
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/CstQuestionVo.java
@@ -0,0 +1,539 @@
+package cn.flightfeather.supervision.lightshare.vo;
+
+import java.util.Date;
+
+public class CstQuestionVo {
+    /**
+     * 闂鍞竴鏍囪瘑
+     */
+    private String cqGuid;
+
+    /**
+     * 闂
+     */
+    private String cqContent;
+
+    /**
+     * 闂绫诲埆
+     */
+    private String cqKind;
+
+    /**
+     * 闂灏忕被
+     */
+    private String cqSubkind;
+
+    /**
+     * 闂鍏抽敭瀛�
+     */
+    private String cqKeywords;
+
+    /**
+     * 鏄惁娑夊強琛屾斂澶勭綒
+     */
+    private boolean cqIsPunish;
+
+    /**
+     * 鏄惁娑夊強鍒戜簨璐d换
+     */
+    private boolean cqIsIllegal;
+
+    /**
+     * 鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     */
+    private boolean cqIsSupervise;
+
+    /**
+     * 鏄惁娑夊強鐜繚绠$悊鐑偣
+     */
+    private boolean cqIsShotspot;
+
+    /**
+     * 闂閫傜敤鍦烘櫙
+     */
+    private String cqScenes;
+
+    /**
+     * 鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     */
+    private boolean cqIsAssociated;
+
+    /**
+     * 鏉$洰鍞竴鏍囪瘑.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥溿�佲�濆垎鍓�
+     */
+    private String miGuids;
+
+    /**
+     * 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    private String mfName;
+
+    /**
+     * 鍘熷鏂囧彿
+     */
+    private String mfReferenceNumber;
+
+    /**
+     * 鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     */
+    private String miChapterName;
+
+    /**
+     * 鏄惁娑夊強涓撳睘瀹氬埗绛旀
+     */
+    private boolean cqIsSetting;
+
+    /**
+     * 鏄惁娑夊強鏅鸿兘鏉冮噸鍥炵瓟
+     */
+    private boolean cqIsIntelligent;
+
+    /**
+     * 鎬昏闂暟
+     */
+    private Integer cqTotalnum;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date cqCreateTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    private Date cqUpdateTime;
+
+    private String cqExtension1;
+
+    private String cqExtension2;
+
+    private String cqExtension3;
+
+    private String cqRemark;
+
+    private String answer;
+
+    /**
+     * 鑾峰彇闂鍞竴鏍囪瘑
+     *
+     * @return CQ_GUID - 闂鍞竴鏍囪瘑
+     */
+    public String getCqGuid() {
+        return cqGuid;
+    }
+
+    /**
+     * 璁剧疆闂鍞竴鏍囪瘑
+     *
+     * @param cqGuid 闂鍞竴鏍囪瘑
+     */
+    public void setCqGuid(String cqGuid) {
+        this.cqGuid = cqGuid == null ? null : cqGuid.trim();
+    }
+
+    /**
+     * 鑾峰彇闂
+     *
+     * @return CQ_Content - 闂
+     */
+    public String getCqContent() {
+        return cqContent;
+    }
+
+    /**
+     * 璁剧疆闂
+     *
+     * @param cqContent 闂
+     */
+    public void setCqContent(String cqContent) {
+        this.cqContent = cqContent == null ? null : cqContent.trim();
+    }
+
+    /**
+     * 鑾峰彇闂绫诲埆
+     *
+     * @return CQ_Kind - 闂绫诲埆
+     */
+    public String getCqKind() {
+        return cqKind;
+    }
+
+    /**
+     * 璁剧疆闂绫诲埆
+     *
+     * @param cqKind 闂绫诲埆
+     */
+    public void setCqKind(String cqKind) {
+        this.cqKind = cqKind;
+    }
+
+    /**
+     * 鑾峰彇闂灏忕被
+     *
+     * @return CQ_Subkind - 闂灏忕被
+     */
+    public String getCqSubkind() {
+        return cqSubkind;
+    }
+
+    /**
+     * 璁剧疆闂灏忕被
+     *
+     * @param cqSubkind 闂灏忕被
+     */
+    public void setCqSubkind(String cqSubkind) {
+        this.cqSubkind = cqSubkind;
+    }
+
+    /**
+     * 鑾峰彇闂鍏抽敭瀛�
+     *
+     * @return CQ_Keywords - 闂鍏抽敭瀛�
+     */
+    public String getCqKeywords() {
+        return cqKeywords;
+    }
+
+    /**
+     * 璁剧疆闂鍏抽敭瀛�
+     *
+     * @param cqKeywords 闂鍏抽敭瀛�
+     */
+    public void setCqKeywords(String cqKeywords) {
+        this.cqKeywords = cqKeywords == null ? null : cqKeywords.trim();
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強琛屾斂澶勭綒
+     *
+     * @return CQ_Is_Punish - 鏄惁娑夊強琛屾斂澶勭綒
+     */
+    public boolean getCqIsPunish() {
+        return cqIsPunish;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強琛屾斂澶勭綒
+     *
+     * @param cqIsPunish 鏄惁娑夊強琛屾斂澶勭綒
+     */
+    public void setCqIsPunish(boolean cqIsPunish) {
+        this.cqIsPunish = cqIsPunish;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鍒戜簨璐d换
+     *
+     * @return CQ_Is_Illegal - 鏄惁娑夊強鍒戜簨璐d换
+     */
+    public boolean getCqIsIllegal() {
+        return cqIsIllegal;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鍒戜簨璐d换
+     *
+     * @param cqIsIllegal 鏄惁娑夊強鍒戜簨璐d换
+     */
+    public void setCqIsIllegal(boolean cqIsIllegal) {
+        this.cqIsIllegal = cqIsIllegal;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     *
+     * @return CQ_Is_Supervise - 鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     */
+    public boolean getCqIsSupervise() {
+        return cqIsSupervise;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     *
+     * @param cqIsSupervise 鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     */
+    public void setCqIsSupervise(boolean cqIsSupervise) {
+        this.cqIsSupervise = cqIsSupervise;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鐜繚绠$悊鐑偣
+     *
+     * @return CQ_Is_Shotspot - 鏄惁娑夊強鐜繚绠$悊鐑偣
+     */
+    public boolean getCqIsShotspot() {
+        return cqIsShotspot;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鐜繚绠$悊鐑偣
+     *
+     * @param cqIsShotspot 鏄惁娑夊強鐜繚绠$悊鐑偣
+     */
+    public void setCqIsShotspot(boolean cqIsShotspot) {
+        this.cqIsShotspot = cqIsShotspot;
+    }
+
+    /**
+     * 鑾峰彇闂閫傜敤鍦烘櫙
+     *
+     * @return CQ_Scenes - 闂閫傜敤鍦烘櫙
+     */
+    public String getCqScenes() {
+        return cqScenes;
+    }
+
+    /**
+     * 璁剧疆闂閫傜敤鍦烘櫙
+     *
+     * @param cqScenes 闂閫傜敤鍦烘櫙
+     */
+    public void setCqScenes(String cqScenes) {
+        this.cqScenes = cqScenes == null ? null : cqScenes.trim();
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     *
+     * @return CQ_Is_Associated - 鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     */
+    public boolean getCqIsAssociated() {
+        return cqIsAssociated;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     *
+     * @param cqIsAssociated 鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     */
+    public void setCqIsAssociated(boolean cqIsAssociated) {
+        this.cqIsAssociated = cqIsAssociated;
+    }
+
+    /**
+     * 鑾峰彇鏉$洰鍞竴鏍囪瘑.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥溿�佲�濆垎鍓�
+     *
+     * @return MI_GUIDS - 鏉$洰鍞竴鏍囪瘑.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥溿�佲�濆垎鍓�
+     */
+    public String getMiGuids() {
+        return miGuids;
+    }
+
+    /**
+     * 璁剧疆鏉$洰鍞竴鏍囪瘑.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥溿�佲�濆垎鍓�
+     *
+     * @param miGuids 鏉$洰鍞竴鏍囪瘑.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥溿�佲�濆垎鍓�
+     */
+    public void setMiGuids(String miGuids) {
+        this.miGuids = miGuids == null ? null : miGuids.trim();
+    }
+
+    /**
+     * 鑾峰彇绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     *
+     * @return MF_Name - 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    public String getMfName() {
+        return mfName;
+    }
+
+    /**
+     * 璁剧疆绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     *
+     * @param mfName 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    public void setMfName(String mfName) {
+        this.mfName = mfName == null ? null : mfName.trim();
+    }
+
+    /**
+     * 鑾峰彇鍘熷鏂囧彿
+     *
+     * @return MF_Reference_Number - 鍘熷鏂囧彿
+     */
+    public String getMfReferenceNumber() {
+        return mfReferenceNumber;
+    }
+
+    /**
+     * 璁剧疆鍘熷鏂囧彿
+     *
+     * @param mfReferenceNumber 鍘熷鏂囧彿
+     */
+    public void setMfReferenceNumber(String mfReferenceNumber) {
+        this.mfReferenceNumber = mfReferenceNumber == null ? null : mfReferenceNumber.trim();
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     *
+     * @return MI_Chapter_Name - 鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     */
+    public String getMiChapterName() {
+        return miChapterName;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     *
+     * @param miChapterName 鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     */
+    public void setMiChapterName(String miChapterName) {
+        this.miChapterName = miChapterName == null ? null : miChapterName.trim();
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強涓撳睘瀹氬埗绛旀
+     *
+     * @return CQ_Is_Setting - 鏄惁娑夊強涓撳睘瀹氬埗绛旀
+     */
+    public boolean getCqIsSetting() {
+        return cqIsSetting;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強涓撳睘瀹氬埗绛旀
+     *
+     * @param cqIsSetting 鏄惁娑夊強涓撳睘瀹氬埗绛旀
+     */
+    public void setCqIsSetting(boolean cqIsSetting) {
+        this.cqIsSetting = cqIsSetting;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鏅鸿兘鏉冮噸鍥炵瓟
+     *
+     * @return CQ_Is_Intelligent - 鏄惁娑夊強鏅鸿兘鏉冮噸鍥炵瓟
+     */
+    public boolean getCqIsIntelligent() {
+        return cqIsIntelligent;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鏅鸿兘鏉冮噸鍥炵瓟
+     *
+     * @param cqIsIntelligent 鏄惁娑夊強鏅鸿兘鏉冮噸鍥炵瓟
+     */
+    public void setCqIsIntelligent(boolean cqIsIntelligent) {
+        this.cqIsIntelligent = cqIsIntelligent;
+    }
+
+    /**
+     * 鑾峰彇鎬昏闂暟
+     *
+     * @return CQ_TotalNum - 鎬昏闂暟
+     */
+    public Integer getCqTotalnum() {
+        return cqTotalnum;
+    }
+
+    /**
+     * 璁剧疆鎬昏闂暟
+     *
+     * @param cqTotalnum 鎬昏闂暟
+     */
+    public void setCqTotalnum(Integer cqTotalnum) {
+        this.cqTotalnum = cqTotalnum;
+    }
+
+    /**
+     * 鑾峰彇鍒涘缓鏃堕棿
+     *
+     * @return CQ_Create_Time - 鍒涘缓鏃堕棿
+     */
+    public Date getCqCreateTime() {
+        return cqCreateTime;
+    }
+
+    /**
+     * 璁剧疆鍒涘缓鏃堕棿
+     *
+     * @param cqCreateTime 鍒涘缓鏃堕棿
+     */
+    public void setCqCreateTime(Date cqCreateTime) {
+        this.cqCreateTime = cqCreateTime;
+    }
+
+    /**
+     * 鑾峰彇鏇存柊鏃堕棿
+     *
+     * @return CQ_Update_Time - 鏇存柊鏃堕棿
+     */
+    public Date getCqUpdateTime() {
+        return cqUpdateTime;
+    }
+
+    /**
+     * 璁剧疆鏇存柊鏃堕棿
+     *
+     * @param cqUpdateTime 鏇存柊鏃堕棿
+     */
+    public void setCqUpdateTime(Date cqUpdateTime) {
+        this.cqUpdateTime = cqUpdateTime;
+    }
+
+    /**
+     * @return CQ_Extension1
+     */
+    public String getCqExtension1() {
+        return cqExtension1;
+    }
+
+    /**
+     * @param cqExtension1
+     */
+    public void setCqExtension1(String cqExtension1) {
+        this.cqExtension1 = cqExtension1 == null ? null : cqExtension1.trim();
+    }
+
+    /**
+     * @return CQ_Extension2
+     */
+    public String getCqExtension2() {
+        return cqExtension2;
+    }
+
+    /**
+     * @param cqExtension2
+     */
+    public void setCqExtension2(String cqExtension2) {
+        this.cqExtension2 = cqExtension2 == null ? null : cqExtension2.trim();
+    }
+
+    /**
+     * @return CQ_Extension3
+     */
+    public String getCqExtension3() {
+        return cqExtension3;
+    }
+
+    /**
+     * @param cqExtension3
+     */
+    public void setCqExtension3(String cqExtension3) {
+        this.cqExtension3 = cqExtension3 == null ? null : cqExtension3.trim();
+    }
+
+    /**
+     * @return CQ_Remark
+     */
+    public String getCqRemark() {
+        return cqRemark;
+    }
+
+    /**
+     * @param cqRemark
+     */
+    public void setCqRemark(String cqRemark) {
+        this.cqRemark = cqRemark == null ? null : cqRemark.trim();
+    }
+
+    public String getAnswer() {
+        return answer;
+    }
+
+    public void setAnswer(String answer) {
+        this.answer = answer;
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EnforceCaseVo.java b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EnforceCaseVo.java
new file mode 100644
index 0000000..467156a
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EnforceCaseVo.java
@@ -0,0 +1,840 @@
+package cn.flightfeather.supervision.lightshare.vo;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.util.Date;
+
+public class EnforceCaseVo {
+    /**
+     * 妗堜緥鍞竴鏍囪瘑
+     */
+    private String ecGuid;
+
+    /**
+     * 妗堜緥鏍囬鎴栧悕绉�
+     */
+    private String ecTitle;
+
+    /**
+     * 妗堜緥绫诲瀷.1:杞诲井鐜杩濇硶妗堜緥锛�2:绉诲嚭姝i潰娓呭崟妗堜緥绛夛紝璇﹁瀵瑰簲浠g爜琛�
+     */
+    private String ecType;
+
+    /**
+     * 鏄惁灞炰簬绉诲嚭姝i潰娓呭崟妗堜緥
+     */
+    private Boolean ecIsMvFrontList;
+
+    /**
+     * 妗堜緥鍏宠仈鐜繚瑕佸ぇ绫�.1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     */
+    private String ecEpItemType;
+
+    /**
+     * 妗堜緥鍏宠仈鐜繚瑕佸皬绫�
+     */
+    private String ecEpItemSubtype;
+
+    /**
+     * 妗堜緥鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    private String ecKeywords;
+
+    /**
+     * 妗堜緥鍙戠敓鏃ユ湡
+     */
+    private Date ecOccurDate;
+
+    /**
+     * 缃氭鏁伴.鍗曚綅锛氫竾鍏冿紝鍙兘娑夊強灏忔暟
+     */
+    private Double ecForfeit;
+
+    /**
+     * 妗堜緥鎵�灞炵渷浠界紪鐮�
+     */
+    private String ecProvinceCode;
+
+    /**
+     * 妗堜緥鎵�灞炵渷浠藉悕绉�
+     */
+    private String ecProvinceName;
+
+    /**
+     * 妗堜緥鎵�灞炲湴甯傜紪鐮�
+     */
+    private String ecCityCode;
+
+    /**
+     * 妗堜緥鎵�灞炲湴甯傚悕绉�
+     */
+    private String ecCityName;
+
+    /**
+     * 鏄惁灞炰簬杞诲井鐜杩濇硶
+     */
+    private Boolean ecIsMinor;
+
+    /**
+     * 鏄惁娑夊強琛屾斂澶勭綒
+     */
+    private Boolean ecIsPunish;
+
+    /**
+     * 鏄惁娑夊強琛屾斂鎷樼暀
+     */
+    private Boolean ecIsDetained;
+
+    /**
+     * 鏄惁娑夊強鍒戜簨璐d换
+     */
+    private Boolean ecIsIllegal;
+
+    /**
+     * 鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     */
+    private Boolean ecIsSupervise;
+
+    /**
+     * 鏄惁娑夊強鐜繚绠$悊鐑偣
+     */
+    private Boolean ecIsShotspot;
+
+    /**
+     * 妗堜緥閫傜敤鍦烘櫙.鑻ユ秹鍙婂绫诲満鏅紝鍦烘櫙涔嬮棿鈥�;鈥濆垎鍓�
+     */
+    private String ecScenes;
+
+    /**
+     * 鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     */
+    private Boolean ecIsAssociated;
+
+    /**
+     * 鏉$洰鍞竴鏍囪瘑闆嗗悎.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥�;鈥濆垎鍓�
+     */
+    private String miGuids;
+
+    /**
+     * 鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     */
+    private String ecItemNames;
+
+    /**
+     * 鍏宠仈鏂囦欢id.涓嶅悓鏂囦欢鍚嶉棿鐢ㄢ��;鈥濆垎鍓�
+     */
+    private String ecFileIds;
+
+    /**
+     * 鍏宠仈鏂囦欢鍚嶇О
+     */
+    private String ecFileNames;
+
+    /**
+     * 鍏宠仈鏂囦欢鏂囧彿
+     */
+    private String ecFileRns;
+
+    /**
+     * 妗堜緥鐩稿叧澶氬獟浣撶礌鏉愯矾寰�,澶氫釜璺緞鐢ㄢ��;鈥濆垎闅�
+     */
+    private String ecAppendixUrl;
+
+    /**
+     * 鎬昏闂鏁�
+     */
+    private Integer ecTotalNum;
+
+    private Date ecCreateTime;
+
+    private Date ecUpdateTime;
+
+    private String ecExtension1;
+
+    private String ecExtension2;
+
+    private String ecExtension3;
+
+    private String ecRemark;
+
+    /**
+     * 妗堜緥鎰忎箟
+     */
+    private String ecMeaning;
+
+    /**
+     * 妗堜緥绠�浠�
+     */
+    private String ecSummary;
+
+    /**
+     * 鏌ュ鎯呭喌
+     */
+    private String ecExamined;
+
+    /**
+     * 妗堜欢鍚ず
+     */
+    private String ecEnlightenment;
+
+    /**
+     * 鑾峰彇妗堜緥鍞竴鏍囪瘑
+     *
+     * @return EC_GUID - 妗堜緥鍞竴鏍囪瘑
+     */
+    public String getEcGuid() {
+        return ecGuid;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鍞竴鏍囪瘑
+     *
+     * @param ecGuid 妗堜緥鍞竴鏍囪瘑
+     */
+    public void setEcGuid(String ecGuid) {
+        this.ecGuid = ecGuid == null ? null : ecGuid.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鏍囬鎴栧悕绉�
+     *
+     * @return EC_Title - 妗堜緥鏍囬鎴栧悕绉�
+     */
+    public String getEcTitle() {
+        return ecTitle;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鏍囬鎴栧悕绉�
+     *
+     * @param ecTitle 妗堜緥鏍囬鎴栧悕绉�
+     */
+    public void setEcTitle(String ecTitle) {
+        this.ecTitle = ecTitle == null ? null : ecTitle.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥绫诲瀷.1:杞诲井鐜杩濇硶妗堜緥锛�2:绉诲嚭姝i潰娓呭崟妗堜緥绛夛紝璇﹁瀵瑰簲浠g爜琛�
+     *
+     * @return EC_Type - 妗堜緥绫诲瀷.1:杞诲井鐜杩濇硶妗堜緥锛�2:绉诲嚭姝i潰娓呭崟妗堜緥绛夛紝璇﹁瀵瑰簲浠g爜琛�
+     */
+    public String getEcType() {
+        return ecType;
+    }
+
+    /**
+     * 璁剧疆妗堜緥绫诲瀷.1:杞诲井鐜杩濇硶妗堜緥锛�2:绉诲嚭姝i潰娓呭崟妗堜緥绛夛紝璇﹁瀵瑰簲浠g爜琛�
+     *
+     * @param ecType 妗堜緥绫诲瀷.1:杞诲井鐜杩濇硶妗堜緥锛�2:绉诲嚭姝i潰娓呭崟妗堜緥绛夛紝璇﹁瀵瑰簲浠g爜琛�
+     */
+    public void setEcType(String ecType) {
+        this.ecType = ecType;
+    }
+
+    /**
+     * 鑾峰彇鏄惁灞炰簬绉诲嚭姝i潰娓呭崟妗堜緥
+     *
+     * @return EC_Is_Mv_Front_list - 鏄惁灞炰簬绉诲嚭姝i潰娓呭崟妗堜緥
+     */
+    public Boolean getEcIsMvFrontList() {
+        return ecIsMvFrontList;
+    }
+
+    /**
+     * 璁剧疆鏄惁灞炰簬绉诲嚭姝i潰娓呭崟妗堜緥
+     *
+     * @param ecIsMvFrontList 鏄惁灞炰簬绉诲嚭姝i潰娓呭崟妗堜緥
+     */
+    public void setEcIsMvFrontList(Boolean ecIsMvFrontList) {
+        this.ecIsMvFrontList = ecIsMvFrontList;
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鍏宠仈鐜繚瑕佸ぇ绫�.1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     *
+     * @return EC_Ep_Item_Type - 妗堜緥鍏宠仈鐜繚瑕佸ぇ绫�.1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     */
+    public String getEcEpItemType() {
+        return ecEpItemType;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鍏宠仈鐜繚瑕佸ぇ绫�.1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     *
+     * @param ecEpItemType 妗堜緥鍏宠仈鐜繚瑕佸ぇ绫�.1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     */
+    public void setEcEpItemType(String ecEpItemType) {
+        this.ecEpItemType = ecEpItemType;
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鍏宠仈鐜繚瑕佸皬绫�
+     *
+     * @return EC_Ep_Item_Subtype - 妗堜緥鍏宠仈鐜繚瑕佸皬绫�
+     */
+    public String getEcEpItemSubtype() {
+        return ecEpItemSubtype;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鍏宠仈鐜繚瑕佸皬绫�
+     *
+     * @param ecEpItemSubtype 妗堜緥鍏宠仈鐜繚瑕佸皬绫�
+     */
+    public void setEcEpItemSubtype(String ecEpItemSubtype) {
+        this.ecEpItemSubtype = ecEpItemSubtype;
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @return EC_Keywords - 妗堜緥鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public String getEcKeywords() {
+        return ecKeywords;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @param ecKeywords 妗堜緥鍏抽敭瀛�.鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public void setEcKeywords(String ecKeywords) {
+        this.ecKeywords = ecKeywords == null ? null : ecKeywords.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鍙戠敓鏃ユ湡
+     *
+     * @return EC_Occur_Date - 妗堜緥鍙戠敓鏃ユ湡
+     */
+    public Date getEcOccurDate() {
+        return ecOccurDate;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鍙戠敓鏃ユ湡
+     *
+     * @param ecOccurDate 妗堜緥鍙戠敓鏃ユ湡
+     */
+    public void setEcOccurDate(Date ecOccurDate) {
+        this.ecOccurDate = ecOccurDate;
+    }
+
+    /**
+     * 鑾峰彇缃氭鏁伴.鍗曚綅锛氫竾鍏冿紝鍙兘娑夊強灏忔暟
+     *
+     * @return EC_Forfeit - 缃氭鏁伴.鍗曚綅锛氫竾鍏冿紝鍙兘娑夊強灏忔暟
+     */
+    public Double getEcForfeit() {
+        return ecForfeit;
+    }
+
+    /**
+     * 璁剧疆缃氭鏁伴.鍗曚綅锛氫竾鍏冿紝鍙兘娑夊強灏忔暟
+     *
+     * @param ecForfeit 缃氭鏁伴.鍗曚綅锛氫竾鍏冿紝鍙兘娑夊強灏忔暟
+     */
+    public void setEcForfeit(Double ecForfeit) {
+        this.ecForfeit = ecForfeit;
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鎵�灞炵渷浠界紪鐮�
+     *
+     * @return EC_Province_Code - 妗堜緥鎵�灞炵渷浠界紪鐮�
+     */
+    public String getEcProvinceCode() {
+        return ecProvinceCode;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鎵�灞炵渷浠界紪鐮�
+     *
+     * @param ecProvinceCode 妗堜緥鎵�灞炵渷浠界紪鐮�
+     */
+    public void setEcProvinceCode(String ecProvinceCode) {
+        this.ecProvinceCode = ecProvinceCode == null ? null : ecProvinceCode.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鎵�灞炵渷浠藉悕绉�
+     *
+     * @return EC_Province_Name - 妗堜緥鎵�灞炵渷浠藉悕绉�
+     */
+    public String getEcProvinceName() {
+        return ecProvinceName;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鎵�灞炵渷浠藉悕绉�
+     *
+     * @param ecProvinceName 妗堜緥鎵�灞炵渷浠藉悕绉�
+     */
+    public void setEcProvinceName(String ecProvinceName) {
+        this.ecProvinceName = ecProvinceName == null ? null : ecProvinceName.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鎵�灞炲湴甯傜紪鐮�
+     *
+     * @return EC_City_Code - 妗堜緥鎵�灞炲湴甯傜紪鐮�
+     */
+    public String getEcCityCode() {
+        return ecCityCode;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鎵�灞炲湴甯傜紪鐮�
+     *
+     * @param ecCityCode 妗堜緥鎵�灞炲湴甯傜紪鐮�
+     */
+    public void setEcCityCode(String ecCityCode) {
+        this.ecCityCode = ecCityCode == null ? null : ecCityCode.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鎵�灞炲湴甯傚悕绉�
+     *
+     * @return EC_City_Name - 妗堜緥鎵�灞炲湴甯傚悕绉�
+     */
+    public String getEcCityName() {
+        return ecCityName;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鎵�灞炲湴甯傚悕绉�
+     *
+     * @param ecCityName 妗堜緥鎵�灞炲湴甯傚悕绉�
+     */
+    public void setEcCityName(String ecCityName) {
+        this.ecCityName = ecCityName == null ? null : ecCityName.trim();
+    }
+
+    /**
+     * 鑾峰彇鏄惁灞炰簬杞诲井鐜杩濇硶
+     *
+     * @return EC_Is_Minor - 鏄惁灞炰簬杞诲井鐜杩濇硶
+     */
+    public Boolean getEcIsMinor() {
+        return ecIsMinor;
+    }
+
+    /**
+     * 璁剧疆鏄惁灞炰簬杞诲井鐜杩濇硶
+     *
+     * @param ecIsMinor 鏄惁灞炰簬杞诲井鐜杩濇硶
+     */
+    public void setEcIsMinor(Boolean ecIsMinor) {
+        this.ecIsMinor = ecIsMinor;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強琛屾斂澶勭綒
+     *
+     * @return EC_Is_Punish - 鏄惁娑夊強琛屾斂澶勭綒
+     */
+    public Boolean getEcIsPunish() {
+        return ecIsPunish;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強琛屾斂澶勭綒
+     *
+     * @param ecIsPunish 鏄惁娑夊強琛屾斂澶勭綒
+     */
+    public void setEcIsPunish(Boolean ecIsPunish) {
+        this.ecIsPunish = ecIsPunish;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強琛屾斂鎷樼暀
+     *
+     * @return EC_Is_Detained - 鏄惁娑夊強琛屾斂鎷樼暀
+     */
+    public Boolean getEcIsDetained() {
+        return ecIsDetained;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強琛屾斂鎷樼暀
+     *
+     * @param ecIsDetained 鏄惁娑夊強琛屾斂鎷樼暀
+     */
+    public void setEcIsDetained(Boolean ecIsDetained) {
+        this.ecIsDetained = ecIsDetained;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鍒戜簨璐d换
+     *
+     * @return EC_Is_Illegal - 鏄惁娑夊強鍒戜簨璐d换
+     */
+    public Boolean getEcIsIllegal() {
+        return ecIsIllegal;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鍒戜簨璐d换
+     *
+     * @param ecIsIllegal 鏄惁娑夊強鍒戜簨璐d换
+     */
+    public void setEcIsIllegal(Boolean ecIsIllegal) {
+        this.ecIsIllegal = ecIsIllegal;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     *
+     * @return EC_Is_Supervise - 鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     */
+    public Boolean getEcIsSupervise() {
+        return ecIsSupervise;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     *
+     * @param ecIsSupervise 鏄惁娑夊強鐜繚鐫e療瑕佺偣
+     */
+    public void setEcIsSupervise(Boolean ecIsSupervise) {
+        this.ecIsSupervise = ecIsSupervise;
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鐜繚绠$悊鐑偣
+     *
+     * @return EC_Is_Shotspot - 鏄惁娑夊強鐜繚绠$悊鐑偣
+     */
+    public Boolean getEcIsShotspot() {
+        return ecIsShotspot;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鐜繚绠$悊鐑偣
+     *
+     * @param ecIsShotspot 鏄惁娑夊強鐜繚绠$悊鐑偣
+     */
+    public void setEcIsShotspot(Boolean ecIsShotspot) {
+        this.ecIsShotspot = ecIsShotspot;
+    }
+
+    /**
+     * 鑾峰彇妗堜緥閫傜敤鍦烘櫙.鑻ユ秹鍙婂绫诲満鏅紝鍦烘櫙涔嬮棿鈥�;鈥濆垎鍓�
+     *
+     * @return EC_Scenes - 妗堜緥閫傜敤鍦烘櫙.鑻ユ秹鍙婂绫诲満鏅紝鍦烘櫙涔嬮棿鈥�;鈥濆垎鍓�
+     */
+    public String getEcScenes() {
+        return ecScenes;
+    }
+
+    /**
+     * 璁剧疆妗堜緥閫傜敤鍦烘櫙.鑻ユ秹鍙婂绫诲満鏅紝鍦烘櫙涔嬮棿鈥�;鈥濆垎鍓�
+     *
+     * @param ecScenes 妗堜緥閫傜敤鍦烘櫙.鑻ユ秹鍙婂绫诲満鏅紝鍦烘櫙涔嬮棿鈥�;鈥濆垎鍓�
+     */
+    public void setEcScenes(String ecScenes) {
+        this.ecScenes = ecScenes == null ? null : ecScenes.trim();
+    }
+
+    /**
+     * 鑾峰彇鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     *
+     * @return EC_Is_Associated - 鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     */
+    public Boolean getEcIsAssociated() {
+        return ecIsAssociated;
+    }
+
+    /**
+     * 璁剧疆鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     *
+     * @param ecIsAssociated 鏄惁娑夊強鏂囦欢鏉$洰鍏宠仈
+     */
+    public void setEcIsAssociated(Boolean ecIsAssociated) {
+        this.ecIsAssociated = ecIsAssociated;
+    }
+
+    /**
+     * 鑾峰彇鏉$洰鍞竴鏍囪瘑闆嗗悎.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥�;鈥濆垎鍓�
+     *
+     * @return MI_GUIDS - 鏉$洰鍞竴鏍囪瘑闆嗗悎.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥�;鈥濆垎鍓�
+     */
+    public String getMiGuids() {
+        return miGuids;
+    }
+
+    /**
+     * 璁剧疆鏉$洰鍞竴鏍囪瘑闆嗗悎.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥�;鈥濆垎鍓�
+     *
+     * @param miGuids 鏉$洰鍞竴鏍囪瘑闆嗗悎.鍙负绌猴紝褰撴秹鍙婂涓枃浠舵潯鐩叧鑱旀椂鈥�;鈥濆垎鍓�
+     */
+    public void setMiGuids(String miGuids) {
+        this.miGuids = miGuids == null ? null : miGuids.trim();
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     *
+     * @return EC_Item_Names - 鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     */
+    public String getEcItemNames() {
+        return ecItemNames;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     *
+     * @param ecItemNames 鍏宠仈绔犺妭鏉$洰鏍囬闆嗗悎
+     */
+    public void setEcItemNames(String ecItemNames) {
+        this.ecItemNames = ecItemNames == null ? null : ecItemNames.trim();
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈鏂囦欢id.涓嶅悓鏂囦欢鍚嶉棿鐢ㄢ��;鈥濆垎鍓�
+     *
+     * @return EC_File_Ids - 鍏宠仈鏂囦欢id.涓嶅悓鏂囦欢鍚嶉棿鐢ㄢ��;鈥濆垎鍓�
+     */
+    public String getEcFileIds() {
+        return ecFileIds;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈鏂囦欢id.涓嶅悓鏂囦欢鍚嶉棿鐢ㄢ��;鈥濆垎鍓�
+     *
+     * @param ecFileIds 鍏宠仈鏂囦欢id.涓嶅悓鏂囦欢鍚嶉棿鐢ㄢ��;鈥濆垎鍓�
+     */
+    public void setEcFileIds(String ecFileIds) {
+        this.ecFileIds = ecFileIds == null ? null : ecFileIds.trim();
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈鏂囦欢鍚嶇О
+     *
+     * @return EC_File_Names - 鍏宠仈鏂囦欢鍚嶇О
+     */
+    public String getEcFileNames() {
+        return ecFileNames;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈鏂囦欢鍚嶇О
+     *
+     * @param ecFileNames 鍏宠仈鏂囦欢鍚嶇О
+     */
+    public void setEcFileNames(String ecFileNames) {
+        this.ecFileNames = ecFileNames == null ? null : ecFileNames.trim();
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈鏂囦欢鏂囧彿
+     *
+     * @return EC_File_RNs - 鍏宠仈鏂囦欢鏂囧彿
+     */
+    public String getEcFileRns() {
+        return ecFileRns;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈鏂囦欢鏂囧彿
+     *
+     * @param ecFileRns 鍏宠仈鏂囦欢鏂囧彿
+     */
+    public void setEcFileRns(String ecFileRns) {
+        this.ecFileRns = ecFileRns == null ? null : ecFileRns.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鐩稿叧澶氬獟浣撶礌鏉愯矾寰�,澶氫釜璺緞鐢ㄢ��;鈥濆垎闅�
+     *
+     * @return EC_Appendix_URL - 妗堜緥鐩稿叧澶氬獟浣撶礌鏉愯矾寰�,澶氫釜璺緞鐢ㄢ��;鈥濆垎闅�
+     */
+    public String getEcAppendixUrl() {
+        return ecAppendixUrl;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鐩稿叧澶氬獟浣撶礌鏉愯矾寰�,澶氫釜璺緞鐢ㄢ��;鈥濆垎闅�
+     *
+     * @param ecAppendixUrl 妗堜緥鐩稿叧澶氬獟浣撶礌鏉愯矾寰�,澶氫釜璺緞鐢ㄢ��;鈥濆垎闅�
+     */
+    public void setEcAppendixUrl(String ecAppendixUrl) {
+        this.ecAppendixUrl = ecAppendixUrl == null ? null : ecAppendixUrl.trim();
+    }
+
+    /**
+     * 鑾峰彇鎬昏闂鏁�
+     *
+     * @return EC_Total_Num - 鎬昏闂鏁�
+     */
+    public Integer getEcTotalNum() {
+        return ecTotalNum;
+    }
+
+    /**
+     * 璁剧疆鎬昏闂鏁�
+     *
+     * @param ecTotalNum 鎬昏闂鏁�
+     */
+    public void setEcTotalNum(Integer ecTotalNum) {
+        this.ecTotalNum = ecTotalNum;
+    }
+
+    /**
+     * @return EC_Create_Time
+     */
+    public Date getEcCreateTime() {
+        return ecCreateTime;
+    }
+
+    /**
+     * @param ecCreateTime
+     */
+    public void setEcCreateTime(Date ecCreateTime) {
+        this.ecCreateTime = ecCreateTime;
+    }
+
+    /**
+     * @return EC_Update_Time
+     */
+    public Date getEcUpdateTime() {
+        return ecUpdateTime;
+    }
+
+    /**
+     * @param ecUpdateTime
+     */
+    public void setEcUpdateTime(Date ecUpdateTime) {
+        this.ecUpdateTime = ecUpdateTime;
+    }
+
+    /**
+     * @return EC_Extension1
+     */
+    public String getEcExtension1() {
+        return ecExtension1;
+    }
+
+    /**
+     * @param ecExtension1
+     */
+    public void setEcExtension1(String ecExtension1) {
+        this.ecExtension1 = ecExtension1 == null ? null : ecExtension1.trim();
+    }
+
+    /**
+     * @return EC_Extension2
+     */
+    public String getEcExtension2() {
+        return ecExtension2;
+    }
+
+    /**
+     * @param ecExtension2
+     */
+    public void setEcExtension2(String ecExtension2) {
+        this.ecExtension2 = ecExtension2 == null ? null : ecExtension2.trim();
+    }
+
+    /**
+     * @return EC_Extension3
+     */
+    public String getEcExtension3() {
+        return ecExtension3;
+    }
+
+    /**
+     * @param ecExtension3
+     */
+    public void setEcExtension3(String ecExtension3) {
+        this.ecExtension3 = ecExtension3 == null ? null : ecExtension3.trim();
+    }
+
+    /**
+     * @return EC_Remark
+     */
+    public String getEcRemark() {
+        return ecRemark;
+    }
+
+    /**
+     * @param ecRemark
+     */
+    public void setEcRemark(String ecRemark) {
+        this.ecRemark = ecRemark == null ? null : ecRemark.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥鎰忎箟
+     *
+     * @return EC_Meaning - 妗堜緥鎰忎箟
+     */
+    public String getEcMeaning() {
+        return ecMeaning;
+    }
+
+    /**
+     * 璁剧疆妗堜緥鎰忎箟
+     *
+     * @param ecMeaning 妗堜緥鎰忎箟
+     */
+    public void setEcMeaning(String ecMeaning) {
+        this.ecMeaning = ecMeaning == null ? null : ecMeaning.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜緥绠�浠�
+     *
+     * @return EC_Summary - 妗堜緥绠�浠�
+     */
+    public String getEcSummary() {
+        return ecSummary;
+    }
+
+    /**
+     * 璁剧疆妗堜緥绠�浠�
+     *
+     * @param ecSummary 妗堜緥绠�浠�
+     */
+    public void setEcSummary(String ecSummary) {
+        this.ecSummary = ecSummary == null ? null : ecSummary.trim();
+    }
+
+    /**
+     * 鑾峰彇鏌ュ鎯呭喌
+     *
+     * @return EC_Examined - 鏌ュ鎯呭喌
+     */
+    public String getEcExamined() {
+        return ecExamined;
+    }
+
+    /**
+     * 璁剧疆鏌ュ鎯呭喌
+     *
+     * @param ecExamined 鏌ュ鎯呭喌
+     */
+    public void setEcExamined(String ecExamined) {
+        this.ecExamined = ecExamined == null ? null : ecExamined.trim();
+    }
+
+    /**
+     * 鑾峰彇妗堜欢鍚ず
+     *
+     * @return EC_Enlightenment - 妗堜欢鍚ず
+     */
+    public String getEcEnlightenment() {
+        return ecEnlightenment;
+    }
+
+    /**
+     * 璁剧疆妗堜欢鍚ず
+     *
+     * @param ecEnlightenment 妗堜欢鍚ず
+     */
+    public void setEcEnlightenment(String ecEnlightenment) {
+        this.ecEnlightenment = ecEnlightenment == null ? null : ecEnlightenment.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/GradeDetailVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/GradeDetailVo.kt
index b9aa529..ce2f18c 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/GradeDetailVo.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/GradeDetailVo.kt
@@ -24,5 +24,5 @@
     var classScore: MutableList<Triple<String, String, String>> = mutableListOf()
 
     //澶卞垎椤圭洰
-    var loseScore: MutableList<Triple<String, String, String>> = mutableListOf()
+    var loseScore: MutableMap<String?, MutableMap<String?, MutableList<Triple<String, String, String>>>> = mutableMapOf()
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/LawsRegulationsCondition.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/LawsRegulationsCondition.kt
index 4b157c5..98dd610 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/LawsRegulationsCondition.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/LawsRegulationsCondition.kt
@@ -58,4 +58,6 @@
 
 
     val sceneTypeId: Int? = null
+
+    val fileType: Int? = null
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/LoginRequestVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/LoginRequestVo.kt
index 0fae824..650e83c 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/LoginRequestVo.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/LoginRequestVo.kt
@@ -6,7 +6,17 @@
  * 鐧诲綍鍙婃敞鍐岃姹傛暟鎹璞�
  */
 class LoginRequestVo {
+    var sceneType: String? = null
+
     var userName: String? = null
 
     var password: String? = null
+
+    var department: String? = null
+
+    var address: String? = null
+
+    var telephone: String? = null
+
+    var orgCode: String? = null
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/MgtFileVo.java b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/MgtFileVo.java
new file mode 100644
index 0000000..040e8e6
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/MgtFileVo.java
@@ -0,0 +1,946 @@
+package cn.flightfeather.supervision.lightshare.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import java.util.Date;
+
+//@JsonInclude(JsonInclude.Include.NON_NULL)
+public class MgtFileVo {
+    /**
+     * 绠$悊瑕佹眰鏂囦欢ID
+     */
+    private String mfGuid;
+
+    /**
+     * 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    private String mfName;
+
+    /**
+     * 绠$悊瑕佹眰鏂囦欢绠�绉�
+     */
+    private String mfShortName;
+
+    /**
+     * 鍘熷鏂囧彿
+     */
+    private String mfReferenceNumber;
+
+    /**
+     * 鏂囦欢缂栫爜: 18浣嶈嚜瀹氫箟鍞竴鏍囪瘑锛氬尯鍩熻鏀跨紪鐮侊紙6浣嶏級+鏂囦欢绫诲埆缂栧彿锛�2浣嶏級+瑕佺礌澶х被缂栧彿锛�2浣嶏級+瀹炴柦鎴栫敓鏁堟棩鏈燂紙8浣嶏級锛岀敤浜庡急鍏宠仈鍜屽叧閿睘鎬х洿鎺ヨВ鏋�
+     */
+    private String mfFileCode;
+
+    /**
+     * 鏂囦欢鐩稿叧涓昏涓�: 1锛氱敓鎬佺幆澧冿紱2锛氫綇鎴垮缓璁撅紱3锛氫氦閫氾紱4锛氱豢鍖栧競瀹癸紱5锛氬煄绠℃墽娉曪紱99锛氬叾浠栵紱
+     */
+    private String mfFileIndustry;
+
+    /**
+     * 鏂囦欢鐩稿叧绠$悊灞傜骇: 1锛氬浗瀹讹紱2锛氶儴濮旓紱3锛氱渷/鐩磋緰甯傦紱4锛氬湴甯傦紱5锛氬尯鍘匡紱6锛氳闀囷紱7锛氬洯鍖猴紱9锛氬叾浠�
+     */
+    private String mfMgtLevel;
+
+    /**
+     * 鐪佷唤缂栫爜
+     */
+    private String mfProvinceCode;
+
+    /**
+     * 鐪佷唤鍚嶇О
+     */
+    private String mfProvinceName;
+
+    /**
+     * 鍦板競缂栫爜
+     */
+    private String mfCityCode;
+
+    /**
+     * 鍦板競鍚嶇О
+     */
+    private String mfCityName;
+
+    /**
+     * 鍖哄幙缂栧彿
+     */
+    private String mfDistrictCode;
+
+    /**
+     * 鍖哄幙鍚嶇О
+     */
+    private String mfDistrictName;
+
+    /**
+     * 琛楅晣缂栫爜
+     */
+    private String mfTownCode;
+
+    /**
+     * 琛楅晣鍚嶇О
+     */
+    private String mfTownName;
+
+    /**
+     * 鎵�鍦ㄥ洯鍖�
+     */
+    private String mfIndDistrict;
+
+    /**
+     * 鏈夋晥琛屾斂鍖哄煙瑕嗙洊: 渚嬪涓婃捣鍏ㄥ競銆佷粎闄愰潤瀹夊尯绛夛紝鍙粠鏂囦欢鎽樿涓�傜敤鑼冨洿鎻愬彇锛屾垨鏂囦欢绾у埆鍜屽搴旇鏀垮尯鍒掓彁鍙�
+     */
+    private String mfAreaCoverage;
+
+    /**
+     * 鏂囦欢绫诲埆: 1锛氬浗瀹舵硶寰嬶紱2锛氬浗瀹舵硶瑙勶紱3锛氬湴鏂规潯渚嬶紱4锛氱鐞嗚瀹氾紱5锛氬疄鏂藉姙娉曪紱6锛氳鏀块�氱煡锛�7锛氭妧鏈爣鍑嗭紱8锛氭湇鍔℃爣鍑嗭紱9锛氭妧鏈鑼冿紱10锛氬彂灞曡鍒掞紱11锛氬簲鎬ラ妗堬紱12锛氭墽娉曡В閲婏紱13锛氱鐞嗚В璇伙紱99锛氬叾浠栵紱
+     */
+    private String mfFileType;
+
+    /**
+     * 鍏宠仈鐜繚瑕佺礌澶х被: 1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     */
+    private String mfEpItemType;
+
+    /**
+     * 鍏宠仈鐜繚瑕佺礌灏忕被: 澶ф皵瀵瑰簲灏忕被锛�1锛歅M锛�2锛歂OX锛�3锛歄3锛�4锛歏OCs锛�5锛氬伐涓氬簾姘旓紱6锛氭満鍔ㄨ溅灏炬皵锛�7锛氭壃灏橈紱8锛氶楗补鐑燂紱9锛氭伓鑷紱99锛氬叾浠栵紱鍏朵粬鍙傝鏁版嵁婧愪唬鐮佽〃
+     */
+    private String mfEpItemSubtype;
+
+    /**
+     * 鍙戝竷鍗曚綅鎴栫粍缁�
+     */
+    private String mfReleaseOrg;
+
+    /**
+     * 鍙戝竷鏃ユ湡
+     */
+    private Date mfReleaseDate;
+
+    /**
+     * 鐢熸晥寮�濮嬫椂闂�
+     */
+    private Date mfEffectiveDate;
+
+    /**
+     * 鐢熸晥鎴鏃堕棿
+     */
+    private Date mfClosingDate;
+
+    /**
+     * 鏈夋晥鏈�
+     */
+    private String mfEffectiveTime;
+
+    /**
+     * 鏂囦欢渚濇嵁
+     */
+    private String mfFileBasis;
+
+    /**
+     * 鏂囦欢鎽樿
+     */
+    private String mfSummary;
+
+    /**
+     * 闄勪欢鎴栭檮灞炲濯掍綋鏉愭枡璺緞: 鍙兘瀛樺湪澶氫釜璺緞锛屸�滐紱鈥濆垎鍓�
+     */
+    private String mfSubFileUrl;
+
+    /**
+     * 鍘熷鏂囦欢瀛樺偍鏍煎紡: 1锛歸ord;2:pdf;3:Excel锛�4锛歱pt;99:鍏朵粬锛�
+     */
+    private String mfSaveType;
+
+    /**
+     * 鍘熷鏂囦欢璺緞: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     */
+    private String mfFileUrl;
+
+    /**
+     * 姘村嵃鍔犲瘑鏂囦欢璺緞: 鍔犲叕鍙告按鍗板苟鍔犲瘑锛屼笉鍙紪杈戯紝鐢ㄤ簬鎺堟潈鐢ㄦ埛娴忚鎴栦笅杞�
+     */
+    private String mfFileEncryptionUrl;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date mfCreateTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    private Date mfUpdateTime;
+
+    private String mfExtension1;
+
+    private String mfExtension2;
+
+    private String mfExtension3;
+
+    private String mfRemark;
+
+    /**
+     * 鏂囦欢淇鎴栨洿鏂版儏鍐�: 鍙兘瀛樺湪澶氭淇锛岀敤鈥滐紱鈥濆垎鍓�
+     */
+    private String mfFileRevise;
+
+    /**
+     * 鏂囦欢鎽樿鍏抽敭瀛�: 涓�绾у叧閿瓧锛屽父鐢ㄥ叧閿瓧锛岃嫢娑夊強澶氫釜鍏抽敭瀛楋紝鍏抽敭瀛椾箣闂粹�溿�佲�濆垎鍓�
+     */
+    private String mfKeywordLv1;
+
+    /**
+     * 瀵硅薄鍙婅涓哄叧閿瓧: 浜岀骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    private String mfKeywordLv2;
+
+    /**
+     * 璁炬柦鎴栫墿鍝佸叧閿瓧锛� 涓夌骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    private String mfKeywordLv3;
+
+    /**
+     * 鏈烘瀯鎴栧崟浣嶅叧閿瓧锛� 鍥涚骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    private String mfKeywordLv4;
+
+    /**
+     * 鑾峰彇绠$悊瑕佹眰鏂囦欢ID
+     *
+     * @return MF_GUID - 绠$悊瑕佹眰鏂囦欢ID
+     */
+    public String getMfGuid() {
+        return mfGuid;
+    }
+
+    /**
+     * 璁剧疆绠$悊瑕佹眰鏂囦欢ID
+     *
+     * @param mfGuid 绠$悊瑕佹眰鏂囦欢ID
+     */
+    public void setMfGuid(String mfGuid) {
+        this.mfGuid = mfGuid == null ? null : mfGuid.trim();
+    }
+
+    /**
+     * 鑾峰彇绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     *
+     * @return MF_Name - 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    public String getMfName() {
+        return mfName;
+    }
+
+    /**
+     * 璁剧疆绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     *
+     * @param mfName 绠$悊瑕佹眰鏂囦欢鍏ㄧО
+     */
+    public void setMfName(String mfName) {
+        this.mfName = mfName == null ? null : mfName.trim();
+    }
+
+    /**
+     * 鑾峰彇绠$悊瑕佹眰鏂囦欢绠�绉�
+     *
+     * @return MF_Short_Name - 绠$悊瑕佹眰鏂囦欢绠�绉�
+     */
+    public String getMfShortName() {
+        return mfShortName;
+    }
+
+    /**
+     * 璁剧疆绠$悊瑕佹眰鏂囦欢绠�绉�
+     *
+     * @param mfShortName 绠$悊瑕佹眰鏂囦欢绠�绉�
+     */
+    public void setMfShortName(String mfShortName) {
+        this.mfShortName = mfShortName == null ? null : mfShortName.trim();
+    }
+
+    /**
+     * 鑾峰彇鍘熷鏂囧彿
+     *
+     * @return MF_Reference_Number - 鍘熷鏂囧彿
+     */
+    public String getMfReferenceNumber() {
+        return mfReferenceNumber;
+    }
+
+    /**
+     * 璁剧疆鍘熷鏂囧彿
+     *
+     * @param mfReferenceNumber 鍘熷鏂囧彿
+     */
+    public void setMfReferenceNumber(String mfReferenceNumber) {
+        this.mfReferenceNumber = mfReferenceNumber == null ? null : mfReferenceNumber.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢缂栫爜: 18浣嶈嚜瀹氫箟鍞竴鏍囪瘑锛氬尯鍩熻鏀跨紪鐮侊紙6浣嶏級+鏂囦欢绫诲埆缂栧彿锛�2浣嶏級+瑕佺礌澶х被缂栧彿锛�2浣嶏級+瀹炴柦鎴栫敓鏁堟棩鏈燂紙8浣嶏級锛岀敤浜庡急鍏宠仈鍜屽叧閿睘鎬х洿鎺ヨВ鏋�
+     *
+     * @return MF_File_Code - 鏂囦欢缂栫爜: 18浣嶈嚜瀹氫箟鍞竴鏍囪瘑锛氬尯鍩熻鏀跨紪鐮侊紙6浣嶏級+鏂囦欢绫诲埆缂栧彿锛�2浣嶏級+瑕佺礌澶х被缂栧彿锛�2浣嶏級+瀹炴柦鎴栫敓鏁堟棩鏈燂紙8浣嶏級锛岀敤浜庡急鍏宠仈鍜屽叧閿睘鎬х洿鎺ヨВ鏋�
+     */
+    public String getMfFileCode() {
+        return mfFileCode;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢缂栫爜: 18浣嶈嚜瀹氫箟鍞竴鏍囪瘑锛氬尯鍩熻鏀跨紪鐮侊紙6浣嶏級+鏂囦欢绫诲埆缂栧彿锛�2浣嶏級+瑕佺礌澶х被缂栧彿锛�2浣嶏級+瀹炴柦鎴栫敓鏁堟棩鏈燂紙8浣嶏級锛岀敤浜庡急鍏宠仈鍜屽叧閿睘鎬х洿鎺ヨВ鏋�
+     *
+     * @param mfFileCode 鏂囦欢缂栫爜: 18浣嶈嚜瀹氫箟鍞竴鏍囪瘑锛氬尯鍩熻鏀跨紪鐮侊紙6浣嶏級+鏂囦欢绫诲埆缂栧彿锛�2浣嶏級+瑕佺礌澶х被缂栧彿锛�2浣嶏級+瀹炴柦鎴栫敓鏁堟棩鏈燂紙8浣嶏級锛岀敤浜庡急鍏宠仈鍜屽叧閿睘鎬х洿鎺ヨВ鏋�
+     */
+    public void setMfFileCode(String mfFileCode) {
+        this.mfFileCode = mfFileCode == null ? null : mfFileCode.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢鐩稿叧涓昏涓�: 1锛氱敓鎬佺幆澧冿紱2锛氫綇鎴垮缓璁撅紱3锛氫氦閫氾紱4锛氱豢鍖栧競瀹癸紱5锛氬煄绠℃墽娉曪紱99锛氬叾浠栵紱
+     *
+     * @return MF_File_Industry - 鏂囦欢鐩稿叧涓昏涓�: 1锛氱敓鎬佺幆澧冿紱2锛氫綇鎴垮缓璁撅紱3锛氫氦閫氾紱4锛氱豢鍖栧競瀹癸紱5锛氬煄绠℃墽娉曪紱99锛氬叾浠栵紱
+     */
+    public String  getMfFileIndustry() {
+        return mfFileIndustry;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢鐩稿叧涓昏涓�: 1锛氱敓鎬佺幆澧冿紱2锛氫綇鎴垮缓璁撅紱3锛氫氦閫氾紱4锛氱豢鍖栧競瀹癸紱5锛氬煄绠℃墽娉曪紱99锛氬叾浠栵紱
+     *
+     * @param mfFileIndustry 鏂囦欢鐩稿叧涓昏涓�: 1锛氱敓鎬佺幆澧冿紱2锛氫綇鎴垮缓璁撅紱3锛氫氦閫氾紱4锛氱豢鍖栧競瀹癸紱5锛氬煄绠℃墽娉曪紱99锛氬叾浠栵紱
+     */
+    public void setMfFileIndustry(String mfFileIndustry) {
+        this.mfFileIndustry = mfFileIndustry;
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢鐩稿叧绠$悊灞傜骇: 1锛氬浗瀹讹紱2锛氶儴濮旓紱3锛氱渷/鐩磋緰甯傦紱4锛氬湴甯傦紱5锛氬尯鍘匡紱6锛氳闀囷紱7锛氬洯鍖猴紱9锛氬叾浠�
+     *
+     * @return MF_Mgt_Level - 鏂囦欢鐩稿叧绠$悊灞傜骇: 1锛氬浗瀹讹紱2锛氶儴濮旓紱3锛氱渷/鐩磋緰甯傦紱4锛氬湴甯傦紱5锛氬尯鍘匡紱6锛氳闀囷紱7锛氬洯鍖猴紱9锛氬叾浠�
+     */
+    public String getMfMgtLevel() {
+        return mfMgtLevel;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢鐩稿叧绠$悊灞傜骇: 1锛氬浗瀹讹紱2锛氶儴濮旓紱3锛氱渷/鐩磋緰甯傦紱4锛氬湴甯傦紱5锛氬尯鍘匡紱6锛氳闀囷紱7锛氬洯鍖猴紱9锛氬叾浠�
+     *
+     * @param mfMgtLevel 鏂囦欢鐩稿叧绠$悊灞傜骇: 1锛氬浗瀹讹紱2锛氶儴濮旓紱3锛氱渷/鐩磋緰甯傦紱4锛氬湴甯傦紱5锛氬尯鍘匡紱6锛氳闀囷紱7锛氬洯鍖猴紱9锛氬叾浠�
+     */
+    public void setMfMgtLevel(String mfMgtLevel) {
+        this.mfMgtLevel = mfMgtLevel;
+    }
+
+    /**
+     * 鑾峰彇鐪佷唤缂栫爜
+     *
+     * @return MF_Province_Code - 鐪佷唤缂栫爜
+     */
+    public String getMfProvinceCode() {
+        return mfProvinceCode;
+    }
+
+    /**
+     * 璁剧疆鐪佷唤缂栫爜
+     *
+     * @param mfProvinceCode 鐪佷唤缂栫爜
+     */
+    public void setMfProvinceCode(String mfProvinceCode) {
+        this.mfProvinceCode = mfProvinceCode == null ? null : mfProvinceCode.trim();
+    }
+
+    /**
+     * 鑾峰彇鐪佷唤鍚嶇О
+     *
+     * @return MF_Province_Name - 鐪佷唤鍚嶇О
+     */
+    public String getMfProvinceName() {
+        return mfProvinceName;
+    }
+
+    /**
+     * 璁剧疆鐪佷唤鍚嶇О
+     *
+     * @param mfProvinceName 鐪佷唤鍚嶇О
+     */
+    public void setMfProvinceName(String mfProvinceName) {
+        this.mfProvinceName = mfProvinceName == null ? null : mfProvinceName.trim();
+    }
+
+    /**
+     * 鑾峰彇鍦板競缂栫爜
+     *
+     * @return MF_City_Code - 鍦板競缂栫爜
+     */
+    public String getMfCityCode() {
+        return mfCityCode;
+    }
+
+    /**
+     * 璁剧疆鍦板競缂栫爜
+     *
+     * @param mfCityCode 鍦板競缂栫爜
+     */
+    public void setMfCityCode(String mfCityCode) {
+        this.mfCityCode = mfCityCode == null ? null : mfCityCode.trim();
+    }
+
+    /**
+     * 鑾峰彇鍦板競鍚嶇О
+     *
+     * @return MF_City_Name - 鍦板競鍚嶇О
+     */
+    public String getMfCityName() {
+        return mfCityName;
+    }
+
+    /**
+     * 璁剧疆鍦板競鍚嶇О
+     *
+     * @param mfCityName 鍦板競鍚嶇О
+     */
+    public void setMfCityName(String mfCityName) {
+        this.mfCityName = mfCityName == null ? null : mfCityName.trim();
+    }
+
+    /**
+     * 鑾峰彇鍖哄幙缂栧彿
+     *
+     * @return MF_District_Code - 鍖哄幙缂栧彿
+     */
+    public String getMfDistrictCode() {
+        return mfDistrictCode;
+    }
+
+    /**
+     * 璁剧疆鍖哄幙缂栧彿
+     *
+     * @param mfDistrictCode 鍖哄幙缂栧彿
+     */
+    public void setMfDistrictCode(String mfDistrictCode) {
+        this.mfDistrictCode = mfDistrictCode == null ? null : mfDistrictCode.trim();
+    }
+
+    /**
+     * 鑾峰彇鍖哄幙鍚嶇О
+     *
+     * @return MF_District_Name - 鍖哄幙鍚嶇О
+     */
+    public String getMfDistrictName() {
+        return mfDistrictName;
+    }
+
+    /**
+     * 璁剧疆鍖哄幙鍚嶇О
+     *
+     * @param mfDistrictName 鍖哄幙鍚嶇О
+     */
+    public void setMfDistrictName(String mfDistrictName) {
+        this.mfDistrictName = mfDistrictName == null ? null : mfDistrictName.trim();
+    }
+
+    /**
+     * 鑾峰彇琛楅晣缂栫爜
+     *
+     * @return MF_Town_Code - 琛楅晣缂栫爜
+     */
+    public String getMfTownCode() {
+        return mfTownCode;
+    }
+
+    /**
+     * 璁剧疆琛楅晣缂栫爜
+     *
+     * @param mfTownCode 琛楅晣缂栫爜
+     */
+    public void setMfTownCode(String mfTownCode) {
+        this.mfTownCode = mfTownCode == null ? null : mfTownCode.trim();
+    }
+
+    /**
+     * 鑾峰彇琛楅晣鍚嶇О
+     *
+     * @return MF_Town_Name - 琛楅晣鍚嶇О
+     */
+    public String getMfTownName() {
+        return mfTownName;
+    }
+
+    /**
+     * 璁剧疆琛楅晣鍚嶇О
+     *
+     * @param mfTownName 琛楅晣鍚嶇О
+     */
+    public void setMfTownName(String mfTownName) {
+        this.mfTownName = mfTownName == null ? null : mfTownName.trim();
+    }
+
+    /**
+     * 鑾峰彇鎵�鍦ㄥ洯鍖�
+     *
+     * @return MF_Ind_District - 鎵�鍦ㄥ洯鍖�
+     */
+    public String getMfIndDistrict() {
+        return mfIndDistrict;
+    }
+
+    /**
+     * 璁剧疆鎵�鍦ㄥ洯鍖�
+     *
+     * @param mfIndDistrict 鎵�鍦ㄥ洯鍖�
+     */
+    public void setMfIndDistrict(String mfIndDistrict) {
+        this.mfIndDistrict = mfIndDistrict == null ? null : mfIndDistrict.trim();
+    }
+
+    /**
+     * 鑾峰彇鏈夋晥琛屾斂鍖哄煙瑕嗙洊: 渚嬪涓婃捣鍏ㄥ競銆佷粎闄愰潤瀹夊尯绛夛紝鍙粠鏂囦欢鎽樿涓�傜敤鑼冨洿鎻愬彇锛屾垨鏂囦欢绾у埆鍜屽搴旇鏀垮尯鍒掓彁鍙�
+     *
+     * @return MF_Area_Coverage - 鏈夋晥琛屾斂鍖哄煙瑕嗙洊: 渚嬪涓婃捣鍏ㄥ競銆佷粎闄愰潤瀹夊尯绛夛紝鍙粠鏂囦欢鎽樿涓�傜敤鑼冨洿鎻愬彇锛屾垨鏂囦欢绾у埆鍜屽搴旇鏀垮尯鍒掓彁鍙�
+     */
+    public String getMfAreaCoverage() {
+        return mfAreaCoverage;
+    }
+
+    /**
+     * 璁剧疆鏈夋晥琛屾斂鍖哄煙瑕嗙洊: 渚嬪涓婃捣鍏ㄥ競銆佷粎闄愰潤瀹夊尯绛夛紝鍙粠鏂囦欢鎽樿涓�傜敤鑼冨洿鎻愬彇锛屾垨鏂囦欢绾у埆鍜屽搴旇鏀垮尯鍒掓彁鍙�
+     *
+     * @param mfAreaCoverage 鏈夋晥琛屾斂鍖哄煙瑕嗙洊: 渚嬪涓婃捣鍏ㄥ競銆佷粎闄愰潤瀹夊尯绛夛紝鍙粠鏂囦欢鎽樿涓�傜敤鑼冨洿鎻愬彇锛屾垨鏂囦欢绾у埆鍜屽搴旇鏀垮尯鍒掓彁鍙�
+     */
+    public void setMfAreaCoverage(String mfAreaCoverage) {
+        this.mfAreaCoverage = mfAreaCoverage == null ? null : mfAreaCoverage.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢绫诲埆: 1锛氬浗瀹舵硶寰嬶紱2锛氬浗瀹舵硶瑙勶紱3锛氬湴鏂规潯渚嬶紱4锛氱鐞嗚瀹氾紱5锛氬疄鏂藉姙娉曪紱6锛氳鏀块�氱煡锛�7锛氭妧鏈爣鍑嗭紱8锛氭湇鍔℃爣鍑嗭紱9锛氭妧鏈鑼冿紱10锛氬彂灞曡鍒掞紱11锛氬簲鎬ラ妗堬紱12锛氭墽娉曡В閲婏紱13锛氱鐞嗚В璇伙紱99锛氬叾浠栵紱
+     *
+     * @return MF_File_Type - 鏂囦欢绫诲埆: 1锛氬浗瀹舵硶寰嬶紱2锛氬浗瀹舵硶瑙勶紱3锛氬湴鏂规潯渚嬶紱4锛氱鐞嗚瀹氾紱5锛氬疄鏂藉姙娉曪紱6锛氳鏀块�氱煡锛�7锛氭妧鏈爣鍑嗭紱8锛氭湇鍔℃爣鍑嗭紱9锛氭妧鏈鑼冿紱10锛氬彂灞曡鍒掞紱11锛氬簲鎬ラ妗堬紱12锛氭墽娉曡В閲婏紱13锛氱鐞嗚В璇伙紱99锛氬叾浠栵紱
+     */
+    public String getMfFileType() {
+        return mfFileType;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢绫诲埆: 1锛氬浗瀹舵硶寰嬶紱2锛氬浗瀹舵硶瑙勶紱3锛氬湴鏂规潯渚嬶紱4锛氱鐞嗚瀹氾紱5锛氬疄鏂藉姙娉曪紱6锛氳鏀块�氱煡锛�7锛氭妧鏈爣鍑嗭紱8锛氭湇鍔℃爣鍑嗭紱9锛氭妧鏈鑼冿紱10锛氬彂灞曡鍒掞紱11锛氬簲鎬ラ妗堬紱12锛氭墽娉曡В閲婏紱13锛氱鐞嗚В璇伙紱99锛氬叾浠栵紱
+     *
+     * @param mfFileType 鏂囦欢绫诲埆: 1锛氬浗瀹舵硶寰嬶紱2锛氬浗瀹舵硶瑙勶紱3锛氬湴鏂规潯渚嬶紱4锛氱鐞嗚瀹氾紱5锛氬疄鏂藉姙娉曪紱6锛氳鏀块�氱煡锛�7锛氭妧鏈爣鍑嗭紱8锛氭湇鍔℃爣鍑嗭紱9锛氭妧鏈鑼冿紱10锛氬彂灞曡鍒掞紱11锛氬簲鎬ラ妗堬紱12锛氭墽娉曡В閲婏紱13锛氱鐞嗚В璇伙紱99锛氬叾浠栵紱
+     */
+    public void setMfFileType(String mfFileType) {
+        this.mfFileType = mfFileType;
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈鐜繚瑕佺礌澶х被: 1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     *
+     * @return MF_Ep_Item_Type - 鍏宠仈鐜繚瑕佺礌澶х被: 1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     */
+    public String getMfEpItemType() {
+        return mfEpItemType;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈鐜繚瑕佺礌澶х被: 1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     *
+     * @param mfEpItemType 鍏宠仈鐜繚瑕佺礌澶х被: 1锛氬ぇ姘旓紱2锛氭按锛�3锛氭捣娲嬶紱4锛氬湡澹わ紱5锛氬櫔澹帮紱6锛氬厜锛�7锛氳緪灏勶紱8锛氭牳锛�9锛氬浐浣撳簾鐗╋紱10锛氬寲瀛﹀搧锛�21锛氬彴璐︼紱31锛氭墽娉曪紱41锛氱潱瀵燂紱51锛氱洃娴嬶紱61锛氭湇鍔★紱99锛氬叾浠栵紱
+     */
+    public void setMfEpItemType(String mfEpItemType) {
+        this.mfEpItemType = mfEpItemType;
+    }
+
+    /**
+     * 鑾峰彇鍏宠仈鐜繚瑕佺礌灏忕被: 澶ф皵瀵瑰簲灏忕被锛�1锛歅M锛�2锛歂OX锛�3锛歄3锛�4锛歏OCs锛�5锛氬伐涓氬簾姘旓紱6锛氭満鍔ㄨ溅灏炬皵锛�7锛氭壃灏橈紱8锛氶楗补鐑燂紱9锛氭伓鑷紱99锛氬叾浠栵紱鍏朵粬鍙傝鏁版嵁婧愪唬鐮佽〃
+     *
+     * @return MF_Ep_Item_Subtype - 鍏宠仈鐜繚瑕佺礌灏忕被: 澶ф皵瀵瑰簲灏忕被锛�1锛歅M锛�2锛歂OX锛�3锛歄3锛�4锛歏OCs锛�5锛氬伐涓氬簾姘旓紱6锛氭満鍔ㄨ溅灏炬皵锛�7锛氭壃灏橈紱8锛氶楗补鐑燂紱9锛氭伓鑷紱99锛氬叾浠栵紱鍏朵粬鍙傝鏁版嵁婧愪唬鐮佽〃
+     */
+    public String getMfEpItemSubtype() {
+        return mfEpItemSubtype;
+    }
+
+    /**
+     * 璁剧疆鍏宠仈鐜繚瑕佺礌灏忕被: 澶ф皵瀵瑰簲灏忕被锛�1锛歅M锛�2锛歂OX锛�3锛歄3锛�4锛歏OCs锛�5锛氬伐涓氬簾姘旓紱6锛氭満鍔ㄨ溅灏炬皵锛�7锛氭壃灏橈紱8锛氶楗补鐑燂紱9锛氭伓鑷紱99锛氬叾浠栵紱鍏朵粬鍙傝鏁版嵁婧愪唬鐮佽〃
+     *
+     * @param mfEpItemSubtype 鍏宠仈鐜繚瑕佺礌灏忕被: 澶ф皵瀵瑰簲灏忕被锛�1锛歅M锛�2锛歂OX锛�3锛歄3锛�4锛歏OCs锛�5锛氬伐涓氬簾姘旓紱6锛氭満鍔ㄨ溅灏炬皵锛�7锛氭壃灏橈紱8锛氶楗补鐑燂紱9锛氭伓鑷紱99锛氬叾浠栵紱鍏朵粬鍙傝鏁版嵁婧愪唬鐮佽〃
+     */
+    public void setMfEpItemSubtype(String mfEpItemSubtype) {
+        this.mfEpItemSubtype = mfEpItemSubtype;
+    }
+
+    /**
+     * 鑾峰彇鍙戝竷鍗曚綅鎴栫粍缁�
+     *
+     * @return MF_Release_Org - 鍙戝竷鍗曚綅鎴栫粍缁�
+     */
+    public String getMfReleaseOrg() {
+        return mfReleaseOrg;
+    }
+
+    /**
+     * 璁剧疆鍙戝竷鍗曚綅鎴栫粍缁�
+     *
+     * @param mfReleaseOrg 鍙戝竷鍗曚綅鎴栫粍缁�
+     */
+    public void setMfReleaseOrg(String mfReleaseOrg) {
+        this.mfReleaseOrg = mfReleaseOrg == null ? null : mfReleaseOrg.trim();
+    }
+
+    /**
+     * 鑾峰彇鍙戝竷鏃ユ湡
+     *
+     * @return MF_Release_Date - 鍙戝竷鏃ユ湡
+     */
+    public Date getMfReleaseDate() {
+        return mfReleaseDate;
+    }
+
+    /**
+     * 璁剧疆鍙戝竷鏃ユ湡
+     *
+     * @param mfReleaseDate 鍙戝竷鏃ユ湡
+     */
+    public void setMfReleaseDate(Date mfReleaseDate) {
+        this.mfReleaseDate = mfReleaseDate;
+    }
+
+    /**
+     * 鑾峰彇鐢熸晥寮�濮嬫椂闂�
+     *
+     * @return MF_Effective_Date - 鐢熸晥寮�濮嬫椂闂�
+     */
+    public Date getMfEffectiveDate() {
+        return mfEffectiveDate;
+    }
+
+    /**
+     * 璁剧疆鐢熸晥寮�濮嬫椂闂�
+     *
+     * @param mfEffectiveDate 鐢熸晥寮�濮嬫椂闂�
+     */
+    public void setMfEffectiveDate(Date mfEffectiveDate) {
+        this.mfEffectiveDate = mfEffectiveDate;
+    }
+
+    /**
+     * 鑾峰彇鐢熸晥鎴鏃堕棿
+     *
+     * @return MF_Closing_Date - 鐢熸晥鎴鏃堕棿
+     */
+    public Date getMfClosingDate() {
+        return mfClosingDate;
+    }
+
+    /**
+     * 璁剧疆鐢熸晥鎴鏃堕棿
+     *
+     * @param mfClosingDate 鐢熸晥鎴鏃堕棿
+     */
+    public void setMfClosingDate(Date mfClosingDate) {
+        this.mfClosingDate = mfClosingDate;
+    }
+
+    /**
+     * 鑾峰彇鏈夋晥鏈�
+     *
+     * @return MF_Effective_Time - 鏈夋晥鏈�
+     */
+    public String getMfEffectiveTime() {
+        return mfEffectiveTime;
+    }
+
+    /**
+     * 璁剧疆鏈夋晥鏈�
+     *
+     * @param mfEffectiveTime 鏈夋晥鏈�
+     */
+    public void setMfEffectiveTime(String mfEffectiveTime) {
+        this.mfEffectiveTime = mfEffectiveTime == null ? null : mfEffectiveTime.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢渚濇嵁
+     *
+     * @return MF_File_Basis - 鏂囦欢渚濇嵁
+     */
+    public String getMfFileBasis() {
+        return mfFileBasis;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢渚濇嵁
+     *
+     * @param mfFileBasis 鏂囦欢渚濇嵁
+     */
+    public void setMfFileBasis(String mfFileBasis) {
+        this.mfFileBasis = mfFileBasis == null ? null : mfFileBasis.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢鎽樿
+     *
+     * @return MF_Summary - 鏂囦欢鎽樿
+     */
+    public String getMfSummary() {
+        return mfSummary;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢鎽樿
+     *
+     * @param mfSummary 鏂囦欢鎽樿
+     */
+    public void setMfSummary(String mfSummary) {
+        this.mfSummary = mfSummary == null ? null : mfSummary.trim();
+    }
+
+    /**
+     * 鑾峰彇闄勪欢鎴栭檮灞炲濯掍綋鏉愭枡璺緞: 鍙兘瀛樺湪澶氫釜璺緞锛屸�滐紱鈥濆垎鍓�
+     *
+     * @return MF_Sub_File_Url - 闄勪欢鎴栭檮灞炲濯掍綋鏉愭枡璺緞: 鍙兘瀛樺湪澶氫釜璺緞锛屸�滐紱鈥濆垎鍓�
+     */
+    public String getMfSubFileUrl() {
+        return mfSubFileUrl;
+    }
+
+    /**
+     * 璁剧疆闄勪欢鎴栭檮灞炲濯掍綋鏉愭枡璺緞: 鍙兘瀛樺湪澶氫釜璺緞锛屸�滐紱鈥濆垎鍓�
+     *
+     * @param mfSubFileUrl 闄勪欢鎴栭檮灞炲濯掍綋鏉愭枡璺緞: 鍙兘瀛樺湪澶氫釜璺緞锛屸�滐紱鈥濆垎鍓�
+     */
+    public void setMfSubFileUrl(String mfSubFileUrl) {
+        this.mfSubFileUrl = mfSubFileUrl == null ? null : mfSubFileUrl.trim();
+    }
+
+    /**
+     * 鑾峰彇鍘熷鏂囦欢瀛樺偍鏍煎紡: 1锛歸ord;2:pdf;3:Excel锛�4锛歱pt;99:鍏朵粬锛�
+     *
+     * @return MF_Save_Type - 鍘熷鏂囦欢瀛樺偍鏍煎紡: 1锛歸ord;2:pdf;3:Excel锛�4锛歱pt;99:鍏朵粬锛�
+     */
+    public String getMfSaveType() {
+        return mfSaveType;
+    }
+
+    /**
+     * 璁剧疆鍘熷鏂囦欢瀛樺偍鏍煎紡: 1锛歸ord;2:pdf;3:Excel锛�4锛歱pt;99:鍏朵粬锛�
+     *
+     * @param mfSaveType 鍘熷鏂囦欢瀛樺偍鏍煎紡: 1锛歸ord;2:pdf;3:Excel锛�4锛歱pt;99:鍏朵粬锛�
+     */
+    public void setMfSaveType(String mfSaveType) {
+        this.mfSaveType = mfSaveType;
+    }
+
+    /**
+     * 鑾峰彇鍘熷鏂囦欢璺緞: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     *
+     * @return MF_File_Url - 鍘熷鏂囦欢璺緞: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     */
+    public String getMfFileUrl() {
+        return mfFileUrl;
+    }
+
+    /**
+     * 璁剧疆鍘熷鏂囦欢璺緞: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     *
+     * @param mfFileUrl 鍘熷鏂囦欢璺緞: 鍙瓨瀹屾暣鐩稿璺緞;瓒呴摼鎺ュ簲鏄畬鏁寸殑锛�
+     */
+    public void setMfFileUrl(String mfFileUrl) {
+        this.mfFileUrl = mfFileUrl == null ? null : mfFileUrl.trim();
+    }
+
+    /**
+     * 鑾峰彇姘村嵃鍔犲瘑鏂囦欢璺緞: 鍔犲叕鍙告按鍗板苟鍔犲瘑锛屼笉鍙紪杈戯紝鐢ㄤ簬鎺堟潈鐢ㄦ埛娴忚鎴栦笅杞�
+     *
+     * @return MF_File_Encryption_Url - 姘村嵃鍔犲瘑鏂囦欢璺緞: 鍔犲叕鍙告按鍗板苟鍔犲瘑锛屼笉鍙紪杈戯紝鐢ㄤ簬鎺堟潈鐢ㄦ埛娴忚鎴栦笅杞�
+     */
+    public String getMfFileEncryptionUrl() {
+        return mfFileEncryptionUrl;
+    }
+
+    /**
+     * 璁剧疆姘村嵃鍔犲瘑鏂囦欢璺緞: 鍔犲叕鍙告按鍗板苟鍔犲瘑锛屼笉鍙紪杈戯紝鐢ㄤ簬鎺堟潈鐢ㄦ埛娴忚鎴栦笅杞�
+     *
+     * @param mfFileEncryptionUrl 姘村嵃鍔犲瘑鏂囦欢璺緞: 鍔犲叕鍙告按鍗板苟鍔犲瘑锛屼笉鍙紪杈戯紝鐢ㄤ簬鎺堟潈鐢ㄦ埛娴忚鎴栦笅杞�
+     */
+    public void setMfFileEncryptionUrl(String mfFileEncryptionUrl) {
+        this.mfFileEncryptionUrl = mfFileEncryptionUrl == null ? null : mfFileEncryptionUrl.trim();
+    }
+
+    /**
+     * 鑾峰彇鍒涘缓鏃堕棿
+     *
+     * @return MF_Create_Time - 鍒涘缓鏃堕棿
+     */
+    public Date getMfCreateTime() {
+        return mfCreateTime;
+    }
+
+    /**
+     * 璁剧疆鍒涘缓鏃堕棿
+     *
+     * @param mfCreateTime 鍒涘缓鏃堕棿
+     */
+    public void setMfCreateTime(Date mfCreateTime) {
+        this.mfCreateTime = mfCreateTime;
+    }
+
+    /**
+     * 鑾峰彇鏇存柊鏃堕棿
+     *
+     * @return MF_Update_Time - 鏇存柊鏃堕棿
+     */
+    public Date getMfUpdateTime() {
+        return mfUpdateTime;
+    }
+
+    /**
+     * 璁剧疆鏇存柊鏃堕棿
+     *
+     * @param mfUpdateTime 鏇存柊鏃堕棿
+     */
+    public void setMfUpdateTime(Date mfUpdateTime) {
+        this.mfUpdateTime = mfUpdateTime;
+    }
+
+    /**
+     * @return MF_Extension1
+     */
+    public String getMfExtension1() {
+        return mfExtension1;
+    }
+
+    /**
+     * @param mfExtension1
+     */
+    public void setMfExtension1(String mfExtension1) {
+        this.mfExtension1 = mfExtension1 == null ? null : mfExtension1.trim();
+    }
+
+    /**
+     * @return MF_Extension2
+     */
+    public String getMfExtension2() {
+        return mfExtension2;
+    }
+
+    /**
+     * @param mfExtension2
+     */
+    public void setMfExtension2(String mfExtension2) {
+        this.mfExtension2 = mfExtension2 == null ? null : mfExtension2.trim();
+    }
+
+    /**
+     * @return MF_Extension3
+     */
+    public String getMfExtension3() {
+        return mfExtension3;
+    }
+
+    /**
+     * @param mfExtension3
+     */
+    public void setMfExtension3(String mfExtension3) {
+        this.mfExtension3 = mfExtension3 == null ? null : mfExtension3.trim();
+    }
+
+    /**
+     * @return MF_Remark
+     */
+    public String getMfRemark() {
+        return mfRemark;
+    }
+
+    /**
+     * @param mfRemark
+     */
+    public void setMfRemark(String mfRemark) {
+        this.mfRemark = mfRemark == null ? null : mfRemark.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢淇鎴栨洿鏂版儏鍐�: 鍙兘瀛樺湪澶氭淇锛岀敤鈥滐紱鈥濆垎鍓�
+     *
+     * @return MF_File_Revise - 鏂囦欢淇鎴栨洿鏂版儏鍐�: 鍙兘瀛樺湪澶氭淇锛岀敤鈥滐紱鈥濆垎鍓�
+     */
+    public String getMfFileRevise() {
+        return mfFileRevise;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢淇鎴栨洿鏂版儏鍐�: 鍙兘瀛樺湪澶氭淇锛岀敤鈥滐紱鈥濆垎鍓�
+     *
+     * @param mfFileRevise 鏂囦欢淇鎴栨洿鏂版儏鍐�: 鍙兘瀛樺湪澶氭淇锛岀敤鈥滐紱鈥濆垎鍓�
+     */
+    public void setMfFileRevise(String mfFileRevise) {
+        this.mfFileRevise = mfFileRevise == null ? null : mfFileRevise.trim();
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢鎽樿鍏抽敭瀛�: 涓�绾у叧閿瓧锛屽父鐢ㄥ叧閿瓧锛岃嫢娑夊強澶氫釜鍏抽敭瀛楋紝鍏抽敭瀛椾箣闂粹�溿�佲�濆垎鍓�
+     *
+     * @return MF_Keyword_Lv1 - 鏂囦欢鎽樿鍏抽敭瀛�: 涓�绾у叧閿瓧锛屽父鐢ㄥ叧閿瓧锛岃嫢娑夊強澶氫釜鍏抽敭瀛楋紝鍏抽敭瀛椾箣闂粹�溿�佲�濆垎鍓�
+     */
+    public String getMfKeywordLv1() {
+        return mfKeywordLv1;
+    }
+
+    /**
+     * 璁剧疆鏂囦欢鎽樿鍏抽敭瀛�: 涓�绾у叧閿瓧锛屽父鐢ㄥ叧閿瓧锛岃嫢娑夊強澶氫釜鍏抽敭瀛楋紝鍏抽敭瀛椾箣闂粹�溿�佲�濆垎鍓�
+     *
+     * @param mfKeywordLv1 鏂囦欢鎽樿鍏抽敭瀛�: 涓�绾у叧閿瓧锛屽父鐢ㄥ叧閿瓧锛岃嫢娑夊強澶氫釜鍏抽敭瀛楋紝鍏抽敭瀛椾箣闂粹�溿�佲�濆垎鍓�
+     */
+    public void setMfKeywordLv1(String mfKeywordLv1) {
+        this.mfKeywordLv1 = mfKeywordLv1 == null ? null : mfKeywordLv1.trim();
+    }
+
+    /**
+     * 鑾峰彇瀵硅薄鍙婅涓哄叧閿瓧: 浜岀骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @return MF_Keyword_Lv2 - 瀵硅薄鍙婅涓哄叧閿瓧: 浜岀骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public String getMfKeywordLv2() {
+        return mfKeywordLv2;
+    }
+
+    /**
+     * 璁剧疆瀵硅薄鍙婅涓哄叧閿瓧: 浜岀骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @param mfKeywordLv2 瀵硅薄鍙婅涓哄叧閿瓧: 浜岀骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public void setMfKeywordLv2(String mfKeywordLv2) {
+        this.mfKeywordLv2 = mfKeywordLv2 == null ? null : mfKeywordLv2.trim();
+    }
+
+    /**
+     * 鑾峰彇璁炬柦鎴栫墿鍝佸叧閿瓧锛� 涓夌骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @return MF_Keyword_Lv3 - 璁炬柦鎴栫墿鍝佸叧閿瓧锛� 涓夌骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public String getMfKeywordLv3() {
+        return mfKeywordLv3;
+    }
+
+    /**
+     * 璁剧疆璁炬柦鎴栫墿鍝佸叧閿瓧锛� 涓夌骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @param mfKeywordLv3 璁炬柦鎴栫墿鍝佸叧閿瓧锛� 涓夌骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public void setMfKeywordLv3(String mfKeywordLv3) {
+        this.mfKeywordLv3 = mfKeywordLv3 == null ? null : mfKeywordLv3.trim();
+    }
+
+    /**
+     * 鑾峰彇鏈烘瀯鎴栧崟浣嶅叧閿瓧锛� 鍥涚骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @return MF_Keyword_Lv4 - 鏈烘瀯鎴栧崟浣嶅叧閿瓧锛� 鍥涚骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public String getMfKeywordLv4() {
+        return mfKeywordLv4;
+    }
+
+    /**
+     * 璁剧疆鏈烘瀯鎴栧崟浣嶅叧閿瓧锛� 鍥涚骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     *
+     * @param mfKeywordLv4 鏈烘瀯鎴栧崟浣嶅叧閿瓧锛� 鍥涚骇鍏抽敭瀛楋紝鑻ユ秹鍙婂涓叧閿瓧锛屽叧閿瓧涔嬮棿鈥溿�佲�濆垎鍓�
+     */
+    public void setMfKeywordLv4(String mfKeywordLv4) {
+        this.mfKeywordLv4 = mfKeywordLv4 == null ? null : mfKeywordLv4.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/CommitmentController.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/CommitmentController.kt
index f053f90..7862833 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/CommitmentController.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/CommitmentController.kt
@@ -1,6 +1,7 @@
 package cn.flightfeather.supervision.lightshare.web
 
 import cn.flightfeather.supervision.lightshare.service.CommitmentService
+import cn.flightfeather.supervision.lightshare.vo.BaseResponse
 import cn.flightfeather.supervision.lightshare.vo.CommitmentVo
 import io.swagger.annotations.Api
 import io.swagger.annotations.ApiOperation
@@ -8,6 +9,8 @@
 import io.swagger.annotations.ApiResponse
 import org.springframework.web.bind.annotation.*
 import org.springframework.web.multipart.MultipartFile
+import org.springframework.web.multipart.MultipartHttpServletRequest
+import javax.servlet.http.HttpServletRequest
 import javax.servlet.http.HttpServletResponse
 
 /**
@@ -38,10 +41,14 @@
 
     @ApiOperation(value = "鐢熸垚鎵胯涔�")
     @PostMapping("/letter/create")
-    fun createLetterOfCommitment(
-        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
-        @ApiParam(value = "鎵胯涔﹀弬鏁�") @RequestBody vo: CommitmentVo,
-        @ApiParam(value = "鎵胯涔︾鍚�") @RequestPart("sign") sign: MultipartFile,
-        @ApiParam(value = "鎵胯涔︾洊绔�", required = false) @RequestPart("seal") seal: MultipartFile?
-    ) = commitmentService.createLetterOfCommitment(userId, vo, sign, seal)
+    fun createLetterOfCommitment(request: HttpServletRequest) = if (request is MultipartHttpServletRequest) {
+        val sign = request.getFile("sign")
+        val seal = request.getFile("seal")
+        val userId = request.getParameter("userId")
+        val vo = request.getParameter("coVo")
+
+        commitmentService.createLetterOfCommitment(userId, vo, sign, seal)
+    } else {
+        BaseResponse(false)
+    }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/ConsultationController.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/ConsultationController.kt
index a21506b..70e309e 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/ConsultationController.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/ConsultationController.kt
@@ -18,4 +18,95 @@
         @ApiParam(value = "鐢ㄦ埛id") @PathVariable userId: String,
         @ApiParam(value = "鍜ㄨ闂") @RequestBody questions: List<OnLineQuestion>
     ) = onLineQuestionService.addQuestions(userId, questions)
+
+    @ApiOperation(value = "鏍规嵁鍏抽敭瀛楁悳绱㈡硶寰嬫硶瑙�")
+    @GetMapping("/search/law")
+    fun searchLaw(
+        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+        @ApiParam(value = "鍏抽敭瀛�") @RequestParam keyword: String,
+        @ApiParam(value = "鎼滅储缁撴灉鐨勭被鍨�", required = false) @RequestParam type: Byte?,
+        @ApiParam(value = "椤电爜") @RequestParam page: Int,
+        @ApiParam(value = "鍗曢〉鏁版嵁閲�") @RequestParam perPage: Int,
+    ) = onLineQuestionService.searchLaw(userId, keyword, type, page, perPage)
+
+    @ApiOperation(value = "鑾峰彇鐑棬娉曞緥娉曡")
+    @GetMapping("/topic/law")
+    fun getTopicLaw(
+        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+    ) = onLineQuestionService.getTopicLaw(userId)
+
+    @ApiOperation(value = "鑾峰彇鐑棬娉曞緥娉曡鏉$洰")
+    @GetMapping("/topic/item")
+    fun getTopicMgtItems(
+        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+    ) = onLineQuestionService.getTopicMgtItems(userId)
+
+    @ApiOperation(value = "鑾峰彇鐑棬闂瓟")
+    @GetMapping("/topic/qa")
+    fun getTopicQA(
+        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+    ) = onLineQuestionService.getTopicQA(userId)
+
+    @ApiOperation(value = "鑾峰彇鐑棬妗堜緥")
+    @GetMapping("/topic/case")
+    fun getTopicCase(
+        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+    ) = onLineQuestionService.getTopicCase(userId)
+
+    @ApiOperation(value = "鑾峰彇娉曞緥娉曡鏂囦欢")
+    @GetMapping("/law/file")
+    fun getMgtFile(
+            @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+            @ApiParam(value = "鏂囦欢id") @RequestParam fileId: String,
+    ) = onLineQuestionService.getMgtFile(userId, fileId)
+
+    @ApiOperation(value = "鑾峰彇娉曞緥娉曡鏉$洰")
+    @GetMapping("/law/item")
+    fun getMgtItem(
+        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+        @ApiParam(value = "鏉$洰id") @RequestParam itemId: String,
+    ) = onLineQuestionService.getMgtItem(userId, itemId)
+
+    @ApiOperation(value = "鑾峰彇闂")
+    @GetMapping("/law/question")
+    fun getQuestion(
+        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+        @ApiParam(value = "闂id") @RequestParam qId: String,
+    ) = onLineQuestionService.getQuestion(userId, qId)
+
+    @ApiOperation(value = "鑾峰彇绛旀")
+    @GetMapping("/law/answer")
+    fun getAnswers(
+        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+        @ApiParam(value = "闂id") @RequestParam qId: String,
+    ) = onLineQuestionService.getAnswers(userId, qId)
+
+    @ApiOperation(value = "鑾峰彇妗堜緥")
+    @GetMapping("/law/case")
+    fun getCase(
+        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+        @ApiParam(value = "妗堜緥id") @RequestParam caseId: String,
+    ) = onLineQuestionService.getCase(userId, caseId)
+
+    @ApiOperation(value = "鑾峰彇闂")
+    @GetMapping("/question/type")
+    fun getQuestionsByType(
+        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+        @ApiParam(value = "瑕佺礌澶х被", required = false) @RequestParam kind: Byte?,
+        @ApiParam(value = "瑕佺礌灏忕被", required = false) @RequestParam subKind: Byte?,
+        @ApiParam(value = "椤电爜") @RequestParam page: Int,
+        @ApiParam(value = "鍗曢〉鏁版嵁閲�") @RequestParam perPage: Int,
+    ) = onLineQuestionService.getQuestionsByType(userId, kind, subKind, page, perPage)
+
+    @ApiOperation(value = "鑾峰彇鐜繚瑕佺礌澶х被")
+    @GetMapping("/elementtype")
+    fun getEnElementTypes(
+        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+    ) = onLineQuestionService.getEnElementTypes(userId)
+
+    @ApiOperation(value = "鑾峰彇鐜繚瑕佺礌灏忕被")
+    @GetMapping("/elementsubtype")
+    fun getEnElementSubTypes(
+        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+    ) = onLineQuestionService.getEnElementSubTypes(userId)
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserinfoController.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserinfoController.kt
index bdd9749..95f390a 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserinfoController.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/UserinfoController.kt
@@ -51,6 +51,12 @@
         @ApiParam("娉ㄥ唽淇℃伅") @RequestBody loginRequestVo: LoginRequestVo
     ) = userinfoService.register(loginRequestVo)
 
+    @ApiOperation(value = "娉ㄥ唽")
+    @PostMapping("/register2")
+    fun register2(
+        @ApiParam("娉ㄥ唽淇℃伅") @RequestBody loginRequestVo: LoginRequestVo
+    ) = userinfoService.register2(loginRequestVo)
+
     @ApiOperation(value = "鑾峰彇鐢ㄦ埛閫氳褰�")
     @GetMapping("/addressBook")
     fun getAddressBook(
diff --git a/src/main/kotlin/cn/flightfeather/supervision/timingtask/FetchVOC.kt b/src/main/kotlin/cn/flightfeather/supervision/timingtask/FetchVOC.kt
index 846650b..5e4c86b 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/timingtask/FetchVOC.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/timingtask/FetchVOC.kt
@@ -60,9 +60,9 @@
             set(Calendar.MINUTE, 0)
             set(Calendar.SECOND, 0)
         }
-        val endTime = DateUtil().DateToString(cal.time, "yyyy-MM-dd HH:mm:ss") ?: ""
+        val endTime = DateUtil.DateToString(cal.time, "yyyy-MM-dd HH:mm:ss") ?: ""
         cal.add(Calendar.HOUR_OF_DAY, -1)
-        val startTime = DateUtil().DateToString(cal.time, "yyyy-MM-dd HH:mm:ss") ?: ""
+        val startTime = DateUtil.DateToString(cal.time, "yyyy-MM-dd HH:mm:ss") ?: ""
 
         deviceCodeList.forEach {
             val deviceInfo = VOCHttpService.DeviceInfo(listOf(it), startTime, endTime)
@@ -78,7 +78,7 @@
                                     hourValue.vocStatCode = o["deviceCode"].asString
 
                                     val collectTime = o["collectTime"].asString
-                                    hourValue.vocDataTime = DateUtil().StringToDate(collectTime)
+                                    hourValue.vocDataTime = DateUtil.StringToDate(collectTime)
 
                                     o["minuteHourDayValueBeans"].asJsonArray.forEach {e1 ->
                                         e1.asJsonObject.let {o1 ->
diff --git a/src/main/kotlin/cn/flightfeather/supervision/timingtask/PushFume.kt b/src/main/kotlin/cn/flightfeather/supervision/timingtask/PushFume.kt
index 548000b..b2e4007 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/timingtask/PushFume.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/timingtask/PushFume.kt
@@ -30,7 +30,6 @@
 
     companion object {
 //        private lateinit var instance: PushFume
-        val dateUtil = DateUtil()
         val LOGGER = LoggerFactory.getLogger(PushFume::class.java)
     }
 
@@ -101,7 +100,7 @@
             dataList.last().let {
                 postData.data.add(FumeHttpService.FumeData(
                         "hengzhiyuan_${it.mvStatCode}",
-                        dateUtil.DateToString(startTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS),
+                    DateUtil.DateToString(startTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS),
                         0.0, average,
                         if (it.mvFanStatus) 3 else 2,
                         it.mvFanElectricity, 0,
diff --git a/src/main/kotlin/cn/flightfeather/supervision/websocket/Processor.kt b/src/main/kotlin/cn/flightfeather/supervision/websocket/Processor.kt
index dfff24a..ade2443 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/websocket/Processor.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/websocket/Processor.kt
@@ -141,7 +141,7 @@
         return WebSocketMsg(msgType.value, listOf(serverMsg
                 ?: ServerMsgVo(meetingId, onlineNum, registerNum).apply {
                     uuid = UUIDGenerator.generate16ShortUUID()
-                    time = DateUtil().DateToString(Date(), DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS)
+                    time = DateUtil.DateToString(Date(), DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS)
                     userId = "system"
                     userName = "admin"
                     status = MsgStatus.Sended.value
@@ -180,7 +180,7 @@
             val webSocketMsg = WebSocketMsg(msgType.value, listOf((serverMsg
                     ?: ServerMsgVo(meetingInfo[0], onlineNum, registerNum)).apply {
                 uuid = UUIDGenerator.generate16ShortUUID()
-                time = DateUtil().DateToString(Date(), DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS)
+                time = DateUtil.DateToString(Date(), DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS)
                 userId = "system"
                 userName = "admin"
                 status = MsgStatus.Sended.value
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 2daa9a4..15211b4 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -6,5 +6,5 @@
       v2:
         enabled: true
 
-imgPath: target/test-file/
+imgPath: images/
 filePath: D:/02product/05ledger/files/
\ No newline at end of file
diff --git a/src/main/resources/application-pro.yml b/src/main/resources/application-pro.yml
index a16dec4..9859cc9 100644
--- a/src/main/resources/application-pro.yml
+++ b/src/main/resources/application-pro.yml
@@ -7,4 +7,6 @@
         enabled: false
 
 imgPath: D:/02product/05ledger/images/
-filePath: D:/02product/05ledger/files/
\ No newline at end of file
+filePath: D:/02product/05ledger/files/
+#imgPath: C:/02product/05ledger/images/
+#filePath: C:/02product/05ledger/files/
\ No newline at end of file
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 557ae7a..741dcd1 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -12,14 +12,14 @@
 #    password: 123456
     #-TestEnd-
 
-#    url: jdbc:mysql://localhost:3306/ledger?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
-#    username: ledger
-#    password: ledger_fxxchackxr
+    url: jdbc:mysql://localhost:3306/ledger?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
+    username: ledger
+    password: ledger_fxxchackxr
 
     #   寮�鍙戣繙绋嬫湇鍔″櫒
-    url: jdbc:mysql://47.100.191.150:3306/ledger?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
-    username: remoteU1
-    password: eSoF8DnzfGTlhAjE
+#    url: jdbc:mysql://47.100.191.150:3306/ledger?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
+#    username: remoteU1
+#    password: eSoF8DnzfGTlhAjE
 
     initialSize: 5
     minIdle: 5
@@ -52,7 +52,7 @@
     time-zone: GMT+8
 
   profiles:
-    active: '@profile.active@'
+    active: pro
 
   jmx:
     default-domain: ledger
diff --git a/src/main/resources/font/msyh.ttf b/src/main/resources/font/msyh.ttf
new file mode 100644
index 0000000..ea3c090
--- /dev/null
+++ b/src/main/resources/font/msyh.ttf
Binary files differ
diff --git a/src/main/resources/font/msyhbd.ttf b/src/main/resources/font/msyhbd.ttf
new file mode 100644
index 0000000..22ee5e2
--- /dev/null
+++ b/src/main/resources/font/msyhbd.ttf
Binary files differ
diff --git a/src/main/resources/font/simsun.ttc b/src/main/resources/font/simsun.ttc
index 40e9693..e64e92e 100644
--- a/src/main/resources/font/simsun.ttc
+++ b/src/main/resources/font/simsun.ttc
Binary files differ
diff --git a/src/main/resources/font/simsunb.ttf b/src/main/resources/font/simsunb.ttf
deleted file mode 100644
index 82161c8..0000000
--- a/src/main/resources/font/simsunb.ttf
+++ /dev/null
Binary files differ
diff --git a/src/main/resources/generator/generatorConfig.xml b/src/main/resources/generator/generatorConfig.xml
index 83c01b2..87c0f17 100644
--- a/src/main/resources/generator/generatorConfig.xml
+++ b/src/main/resources/generator/generatorConfig.xml
@@ -4,7 +4,8 @@
         "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 <generatorConfiguration>
     <!-- 鏁版嵁搴撻┍鍔�:閫夋嫨浣犵殑鏈湴纭洏涓婇潰鐨勬暟鎹簱椹卞姩鍖�-->
-    <classPathEntry  location="C:\Users\feiyu\.m2\repository\mysql\mysql-connector-java\5.1.46\mysql-connector-java-5.1.46.jar"/>
+<!--    <classPathEntry  location="C:\Users\feiyu\.m2\repository\mysql\mysql-connector-java\5.1.46\mysql-connector-java-5.1.46.jar"/>-->
+    <classPathEntry  location="C:\Users\feiyu02\.m2\repository\mysql\mysql-connector-java\8.0.21\mysql-connector-java-8.0.21.jar"/>
     <!--defaultModelType{
     conditional:杩欎釜妯″瀷涓巋ierarchical妯″瀷鐩镐技,闄や簡濡傛灉涓�涓疄浣撶被鍙寘鍚竴涓瓧娈�,鍒欎笉浼氬崟鐙敓鎴愭瀹炰綋绫汇�傚洜姝�,濡傛灉涓�涓〃鐨勪富閿彧鏈変竴涓瓧娈�,閭d箞涓嶄細涓鸿瀛楁鐢熸垚鍗曠嫭鐨勫疄浣撶被,浼氬皢璇ュ瓧娈靛悎骞跺埌鍩烘湰瀹炰綋绫讳腑銆�
     flat:璇ユā鍨嬩负姣忎竴寮犺〃鍙敓鎴愪竴涓疄浣撶被銆傝繖涓疄浣撶被鍖呭惈琛ㄤ腑鐨勬墍鏈夊瓧娈点��
@@ -47,7 +48,7 @@
         <!-- 瑕佺敓鎴愮殑琛� tableName鏄暟鎹簱涓殑琛ㄥ悕鎴栬鍥惧悕 domainObjectName鏄疄浣撶被鍚�-->
         <!--<table tableName="t_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
         <!--<table tableName="ea_t_ledgerrecord" domainObjectName="LedgerRecord" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
-        <table tableName="ea_t_ledgersubtype" domainObjectName="LedgerSubType" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
+<!--        <table tableName="ea_t_ledgersubtype" domainObjectName="LedgerSubType" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
         <!--<table tableName="ea_t_mediafile" domainObjectName="LedgerMediaFile" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
         <!--<table tableName="ea_t_notification" domainObjectName="Notification" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
         <!--<table tableName="ea_t_law" domainObjectName="Law" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
@@ -81,5 +82,15 @@
 <!--        <table tableName="ea_t_overall_evaluation" domainObjectName="OverallEvaluation" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
 <!--        <table tableName="ea_t_punishment" domainObjectName="Punishment" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
 <!--        <table tableName="ts_t_user_map" domainObjectName="UserMap" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>-->
+<!--        <table tableName="epk_t_mgtfile" domainObjectName="MgtFile" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"-->
+<!--               selectByExampleQueryId="false"/>-->
+<!--        <table tableName="epk_t_mgtitem" domainObjectName="MgtItem" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"-->
+<!--               selectByExampleQueryId="false"/>-->
+<!--        <table tableName="epk_t_cstquestion" domainObjectName="CstQuestion" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"-->
+<!--               selectByExampleQueryId="false"/>-->
+<!--        <table tableName="epk_t_settinganswer" domainObjectName="SettingAnswer" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"-->
+<!--               selectByExampleQueryId="false"/>-->
+        <table tableName="epk_t_enforcecase" domainObjectName="EnforceCase" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
+               selectByExampleQueryId="false"/>
     </context>
 </generatorConfiguration>
\ No newline at end of file
diff --git a/src/main/resources/mapper/CommitmentMapper.xml b/src/main/resources/mapper/CommitmentMapper.xml
index a1aebdc..3fad7f9 100644
--- a/src/main/resources/mapper/CommitmentMapper.xml
+++ b/src/main/resources/mapper/CommitmentMapper.xml
@@ -8,12 +8,13 @@
     <id column="CM_GUID" property="cmGuid" jdbcType="VARCHAR" />
     <result column="UI_GUID" property="uiGuid" jdbcType="VARCHAR" />
     <result column="CM_Url" property="cmUrl" jdbcType="VARCHAR" />
+    <result column="CM_Pdf_Url" property="cmPdfUrl" jdbcType="VARCHAR" />
     <result column="CM_Create_Time" property="cmCreateTime" jdbcType="TIMESTAMP" />
   </resultMap>
   <sql id="Base_Column_List" >
     <!--
       WARNING - @mbg.generated
     -->
-    CM_GUID, UI_GUID, CM_Url, CM_CreateTime
+    CM_GUID, UI_GUID, CM_Url, CM_Pdf_Url, CM_CreateTime
   </sql>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/CstQuestionMapper.xml b/src/main/resources/mapper/CstQuestionMapper.xml
new file mode 100644
index 0000000..12c0f62
--- /dev/null
+++ b/src/main/resources/mapper/CstQuestionMapper.xml
@@ -0,0 +1,42 @@
+<?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="cn.flightfeather.supervision.domain.mapper.CstQuestionMapper" >
+  <resultMap id="BaseResultMap" type="cn.flightfeather.supervision.domain.entity.CstQuestion" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <id column="CQ_GUID" property="cqGuid" jdbcType="VARCHAR" />
+    <result column="CQ_Content" property="cqContent" jdbcType="VARCHAR" />
+    <result column="CQ_Kind" property="cqKind" jdbcType="TINYINT" />
+    <result column="CQ_Subkind" property="cqSubkind" jdbcType="TINYINT" />
+    <result column="CQ_Keywords" property="cqKeywords" jdbcType="VARCHAR" />
+    <result column="CQ_Is_Punish" property="cqIsPunish" jdbcType="BIT" />
+    <result column="CQ_Is_Illegal" property="cqIsIllegal" jdbcType="BIT" />
+    <result column="CQ_Is_Supervise" property="cqIsSupervise" jdbcType="BIT" />
+    <result column="CQ_Is_Shotspot" property="cqIsShotspot" jdbcType="BIT" />
+    <result column="CQ_Scenes" property="cqScenes" jdbcType="VARCHAR" />
+    <result column="CQ_Is_Associated" property="cqIsAssociated" jdbcType="BIT" />
+    <result column="MI_GUIDS" property="miGuids" jdbcType="VARCHAR" />
+    <result column="MF_Name" property="mfName" jdbcType="VARCHAR" />
+    <result column="MF_Reference_Number" property="mfReferenceNumber" jdbcType="VARCHAR" />
+    <result column="MI_Chapter_Name" property="miChapterName" jdbcType="VARCHAR" />
+    <result column="CQ_Is_Setting" property="cqIsSetting" jdbcType="BIT" />
+    <result column="CQ_Is_Intelligent" property="cqIsIntelligent" jdbcType="BIT" />
+    <result column="CQ_TotalNum" property="cqTotalnum" jdbcType="INTEGER" />
+    <result column="CQ_Create_Time" property="cqCreateTime" jdbcType="TIMESTAMP" />
+    <result column="CQ_Update_Time" property="cqUpdateTime" jdbcType="TIMESTAMP" />
+    <result column="CQ_Extension1" property="cqExtension1" jdbcType="VARCHAR" />
+    <result column="CQ_Extension2" property="cqExtension2" jdbcType="VARCHAR" />
+    <result column="CQ_Extension3" property="cqExtension3" jdbcType="VARCHAR" />
+    <result column="CQ_Remark" property="cqRemark" jdbcType="VARCHAR" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    CQ_GUID, CQ_Content, CQ_Kind, CQ_Subkind, CQ_Keywords, CQ_Is_Punish, CQ_Is_Illegal, 
+    CQ_Is_Supervise, CQ_Is_Shotspot, CQ_Scenes, CQ_Is_Associated, MI_GUIDS, MF_Name, 
+    MF_Reference_Number, MI_Chapter_Name, CQ_Is_Setting, CQ_Is_Intelligent, CQ_TotalNum, 
+    CQ_Create_Time, CQ_Update_Time, CQ_Extension1, CQ_Extension2, CQ_Extension3, CQ_Remark
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/EnforceCaseMapper.xml b/src/main/resources/mapper/EnforceCaseMapper.xml
new file mode 100644
index 0000000..3d07f27
--- /dev/null
+++ b/src/main/resources/mapper/EnforceCaseMapper.xml
@@ -0,0 +1,69 @@
+<?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="cn.flightfeather.supervision.domain.mapper.EnforceCaseMapper" >
+  <resultMap id="BaseResultMap" type="cn.flightfeather.supervision.domain.entity.EnforceCase" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <id column="EC_GUID" property="ecGuid" jdbcType="VARCHAR" />
+    <result column="EC_Title" property="ecTitle" jdbcType="VARCHAR" />
+    <result column="EC_Type" property="ecType" jdbcType="TINYINT" />
+    <result column="EC_Is_Mv_Front_list" property="ecIsMvFrontList" jdbcType="BIT" />
+    <result column="EC_Ep_Item_Type" property="ecEpItemType" jdbcType="TINYINT" />
+    <result column="EC_Ep_Item_Subtype" property="ecEpItemSubtype" jdbcType="TINYINT" />
+    <result column="EC_Keywords" property="ecKeywords" jdbcType="VARCHAR" />
+    <result column="EC_Occur_Date" property="ecOccurDate" jdbcType="TIMESTAMP" />
+    <result column="EC_Forfeit" property="ecForfeit" jdbcType="DOUBLE" />
+    <result column="EC_Province_Code" property="ecProvinceCode" jdbcType="VARCHAR" />
+    <result column="EC_Province_Name" property="ecProvinceName" jdbcType="VARCHAR" />
+    <result column="EC_City_Code" property="ecCityCode" jdbcType="VARCHAR" />
+    <result column="EC_City_Name" property="ecCityName" jdbcType="VARCHAR" />
+    <result column="EC_Is_Minor" property="ecIsMinor" jdbcType="BIT" />
+    <result column="EC_Is_Punish" property="ecIsPunish" jdbcType="BIT" />
+    <result column="EC_Is_Detained" property="ecIsDetained" jdbcType="BIT" />
+    <result column="EC_Is_Illegal" property="ecIsIllegal" jdbcType="BIT" />
+    <result column="EC_Is_Supervise" property="ecIsSupervise" jdbcType="BIT" />
+    <result column="EC_Is_Shotspot" property="ecIsShotspot" jdbcType="BIT" />
+    <result column="EC_Scenes" property="ecScenes" jdbcType="VARCHAR" />
+    <result column="EC_Is_Associated" property="ecIsAssociated" jdbcType="BIT" />
+    <result column="MI_GUIDS" property="miGuids" jdbcType="VARCHAR" />
+    <result column="EC_Item_Names" property="ecItemNames" jdbcType="VARCHAR" />
+    <result column="EC_File_Ids" property="ecFileIds" jdbcType="VARCHAR" />
+    <result column="EC_File_Names" property="ecFileNames" jdbcType="VARCHAR" />
+    <result column="EC_File_RNs" property="ecFileRns" jdbcType="VARCHAR" />
+    <result column="EC_Appendix_URL" property="ecAppendixUrl" jdbcType="VARCHAR" />
+    <result column="EC_Total_Num" property="ecTotalNum" jdbcType="INTEGER" />
+    <result column="EC_Create_Time" property="ecCreateTime" jdbcType="TIMESTAMP" />
+    <result column="EC_Update_Time" property="ecUpdateTime" jdbcType="TIMESTAMP" />
+    <result column="EC_Extension1" property="ecExtension1" jdbcType="VARCHAR" />
+    <result column="EC_Extension2" property="ecExtension2" jdbcType="VARCHAR" />
+    <result column="EC_Extension3" property="ecExtension3" jdbcType="VARCHAR" />
+    <result column="EC_Remark" property="ecRemark" jdbcType="VARCHAR" />
+  </resultMap>
+  <resultMap id="ResultMapWithBLOBs" type="cn.flightfeather.supervision.domain.entity.EnforceCase" extends="BaseResultMap" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <result column="EC_Meaning" property="ecMeaning" jdbcType="LONGVARCHAR" />
+    <result column="EC_Summary" property="ecSummary" jdbcType="LONGVARCHAR" />
+    <result column="EC_Examined" property="ecExamined" jdbcType="LONGVARCHAR" />
+    <result column="EC_Enlightenment" property="ecEnlightenment" jdbcType="LONGVARCHAR" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    EC_GUID, EC_Title, EC_Type, EC_Is_Mv_Front_list, EC_Ep_Item_Type, EC_Ep_Item_Subtype, 
+    EC_Keywords, EC_Occur_Date, EC_Forfeit, EC_Province_Code, EC_Province_Name, EC_City_Code, 
+    EC_City_Name, EC_Is_Minor, EC_Is_Punish, EC_Is_Detained, EC_Is_Illegal, EC_Is_Supervise, 
+    EC_Is_Shotspot, EC_Scenes, EC_Is_Associated, MI_GUIDS, EC_Item_Names, EC_File_Ids, 
+    EC_File_Names, EC_File_RNs, EC_Appendix_URL, EC_Total_Num, EC_Create_Time, EC_Update_Time, 
+    EC_Extension1, EC_Extension2, EC_Extension3, EC_Remark
+  </sql>
+  <sql id="Blob_Column_List" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    EC_Meaning, EC_Summary, EC_Examined, EC_Enlightenment
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/MgtFileMapper.xml b/src/main/resources/mapper/MgtFileMapper.xml
new file mode 100644
index 0000000..3ded022
--- /dev/null
+++ b/src/main/resources/mapper/MgtFileMapper.xml
@@ -0,0 +1,74 @@
+<?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="cn.flightfeather.supervision.domain.mapper.MgtFileMapper" >
+  <resultMap id="BaseResultMap" type="cn.flightfeather.supervision.domain.entity.MgtFile" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <id column="MF_GUID" property="mfGuid" jdbcType="VARCHAR" />
+    <result column="MF_Name" property="mfName" jdbcType="VARCHAR" />
+    <result column="MF_Short_Name" property="mfShortName" jdbcType="VARCHAR" />
+    <result column="MF_Reference_Number" property="mfReferenceNumber" jdbcType="VARCHAR" />
+    <result column="MF_File_Code" property="mfFileCode" jdbcType="VARCHAR" />
+    <result column="MF_File_Industry" property="mfFileIndustry" jdbcType="TINYINT" />
+    <result column="MF_Mgt_Level" property="mfMgtLevel" jdbcType="TINYINT" />
+    <result column="MF_Province_Code" property="mfProvinceCode" jdbcType="VARCHAR" />
+    <result column="MF_Province_Name" property="mfProvinceName" jdbcType="VARCHAR" />
+    <result column="MF_City_Code" property="mfCityCode" jdbcType="VARCHAR" />
+    <result column="MF_City_Name" property="mfCityName" jdbcType="VARCHAR" />
+    <result column="MF_District_Code" property="mfDistrictCode" jdbcType="VARCHAR" />
+    <result column="MF_District_Name" property="mfDistrictName" jdbcType="VARCHAR" />
+    <result column="MF_Town_Code" property="mfTownCode" jdbcType="VARCHAR" />
+    <result column="MF_Town_Name" property="mfTownName" jdbcType="VARCHAR" />
+    <result column="MF_Ind_District" property="mfIndDistrict" jdbcType="VARCHAR" />
+    <result column="MF_Area_Coverage" property="mfAreaCoverage" jdbcType="VARCHAR" />
+    <result column="MF_File_Type" property="mfFileType" jdbcType="TINYINT" />
+    <result column="MF_Ep_Item_Type" property="mfEpItemType" jdbcType="TINYINT" />
+    <result column="MF_Ep_Item_Subtype" property="mfEpItemSubtype" jdbcType="TINYINT" />
+    <result column="MF_Release_Org" property="mfReleaseOrg" jdbcType="VARCHAR" />
+    <result column="MF_Release_Date" property="mfReleaseDate" jdbcType="DATE" />
+    <result column="MF_Effective_Date" property="mfEffectiveDate" jdbcType="TIMESTAMP" />
+    <result column="MF_Closing_Date" property="mfClosingDate" jdbcType="TIMESTAMP" />
+    <result column="MF_Effective_Time" property="mfEffectiveTime" jdbcType="VARCHAR" />
+    <result column="MF_File_Basis" property="mfFileBasis" jdbcType="VARCHAR" />
+    <result column="MF_Summary" property="mfSummary" jdbcType="VARCHAR" />
+    <result column="MF_Sub_File_Url" property="mfSubFileUrl" jdbcType="VARCHAR" />
+    <result column="MF_Save_Type" property="mfSaveType" jdbcType="TINYINT" />
+    <result column="MF_File_Url" property="mfFileUrl" jdbcType="VARCHAR" />
+    <result column="MF_File_Encryption_Url" property="mfFileEncryptionUrl" jdbcType="VARCHAR" />
+    <result column="MF_Create_Time" property="mfCreateTime" jdbcType="TIMESTAMP" />
+    <result column="MF_Update_Time" property="mfUpdateTime" jdbcType="TIMESTAMP" />
+    <result column="MF_Extension1" property="mfExtension1" jdbcType="VARCHAR" />
+    <result column="MF_Extension2" property="mfExtension2" jdbcType="VARCHAR" />
+    <result column="MF_Extension3" property="mfExtension3" jdbcType="VARCHAR" />
+    <result column="MF_Remark" property="mfRemark" jdbcType="VARCHAR" />
+  </resultMap>
+  <resultMap id="ResultMapWithBLOBs" type="cn.flightfeather.supervision.domain.entity.MgtFile" extends="BaseResultMap" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <result column="MF_File_Revise" property="mfFileRevise" jdbcType="LONGVARCHAR" />
+    <result column="MF_Keyword_Lv1" property="mfKeywordLv1" jdbcType="LONGVARCHAR" />
+    <result column="MF_Keyword_Lv2" property="mfKeywordLv2" jdbcType="LONGVARCHAR" />
+    <result column="MF_Keyword_Lv3" property="mfKeywordLv3" jdbcType="LONGVARCHAR" />
+    <result column="MF_Keyword_Lv4" property="mfKeywordLv4" jdbcType="LONGVARCHAR" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    MF_GUID, MF_Name, MF_Short_Name, MF_Reference_Number, MF_File_Code, MF_File_Industry, 
+    MF_Mgt_Level, MF_Province_Code, MF_Province_Name, MF_City_Code, MF_City_Name, MF_District_Code, 
+    MF_District_Name, MF_Town_Code, MF_Town_Name, MF_Ind_District, MF_Area_Coverage, 
+    MF_File_Type, MF_Ep_Item_Type, MF_Ep_Item_Subtype, MF_Release_Org, MF_Release_Date, 
+    MF_Effective_Date, MF_Closing_Date, MF_Effective_Time, MF_File_Basis, MF_Summary, 
+    MF_Sub_File_Url, MF_Save_Type, MF_File_Url, MF_File_Encryption_Url, MF_Create_Time, 
+    MF_Update_Time, MF_Extension1, MF_Extension2, MF_Extension3, MF_Remark
+  </sql>
+  <sql id="Blob_Column_List" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    MF_File_Revise, MF_Keyword_Lv1, MF_Keyword_Lv2, MF_Keyword_Lv3, MF_Keyword_Lv4
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/MgtItemMapper.xml b/src/main/resources/mapper/MgtItemMapper.xml
new file mode 100644
index 0000000..b95046c
--- /dev/null
+++ b/src/main/resources/mapper/MgtItemMapper.xml
@@ -0,0 +1,54 @@
+<?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="cn.flightfeather.supervision.domain.mapper.MgtItemMapper" >
+  <resultMap id="BaseResultMap" type="cn.flightfeather.supervision.domain.entity.MgtItem" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <id column="MI_GUID" property="miGuid" jdbcType="VARCHAR" />
+    <result column="MI_Item_Code" property="miItemCode" jdbcType="VARCHAR" />
+    <result column="MI_Has_Item_Lv2" property="miHasItemLv2" jdbcType="BIT" />
+    <result column="MI_Item_Lv2_Id" property="miItemLv2Id" jdbcType="INTEGER" />
+    <result column="MI_Has_Item" property="miHasItem" jdbcType="BIT" />
+    <result column="MI_Item_Name" property="miItemName" jdbcType="VARCHAR" />
+    <result column="MI_Item_Id" property="miItemId" jdbcType="INTEGER" />
+    <result column="MI_Chapter_Name" property="miChapterName" jdbcType="VARCHAR" />
+    <result column="MI_Chapter_Id" property="miChapterId" jdbcType="INTEGER" />
+    <result column="MI_Chapter_Keyword" property="miChapterKeyword" jdbcType="VARCHAR" />
+    <result column="MF_GUID" property="mfGuid" jdbcType="VARCHAR" />
+    <result column="MF_Name" property="mfName" jdbcType="VARCHAR" />
+    <result column="MF_Short_Name" property="mfShortName" jdbcType="VARCHAR" />
+    <result column="MF_Reference_Number" property="mfReferenceNumber" jdbcType="VARCHAR" />
+    <result column="MF_File_Code" property="mfFileCode" jdbcType="VARCHAR" />
+    <result column="MI_Item_Url" property="miItemUrl" jdbcType="VARCHAR" />
+    <result column="MI_Keyword" property="miKeyword" jdbcType="VARCHAR" />
+    <result column="MI_Related_Items" property="miRelatedItems" jdbcType="VARCHAR" />
+    <result column="MI_Create_Time" property="miCreateTime" jdbcType="TIMESTAMP" />
+    <result column="MI_Update_Time" property="miUpdateTime" jdbcType="TIMESTAMP" />
+    <result column="MI_Extension1" property="miExtension1" jdbcType="VARCHAR" />
+    <result column="MI_Extension2" property="miExtension2" jdbcType="VARCHAR" />
+    <result column="MI_Extension3" property="miExtension3" jdbcType="VARCHAR" />
+    <result column="MI_Remark" property="miRemark" jdbcType="VARCHAR" />
+  </resultMap>
+  <resultMap id="ResultMapWithBLOBs" type="cn.flightfeather.supervision.domain.entity.MgtItem" extends="BaseResultMap" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <result column="MI_Item_Content" property="miItemContent" jdbcType="LONGVARCHAR" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    MI_GUID, MI_Item_Code, MI_Has_Item_Lv2, MI_Item_Lv2_Id, MI_Has_Item, MI_Item_Name, 
+    MI_Item_Id, MI_Chapter_Name, MI_Chapter_Id, MI_Chapter_Keyword, MF_GUID, MF_Name, 
+    MF_Short_Name, MF_Reference_Number, MF_File_Code, MI_Item_Url, MI_Keyword, MI_Related_Items, 
+    MI_Create_Time, MI_Update_Time, MI_Extension1, MI_Extension2, MI_Extension3, MI_Remark
+  </sql>
+  <sql id="Blob_Column_List" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    MI_Item_Content
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/SettingAnswerMapper.xml b/src/main/resources/mapper/SettingAnswerMapper.xml
new file mode 100644
index 0000000..0c061c4
--- /dev/null
+++ b/src/main/resources/mapper/SettingAnswerMapper.xml
@@ -0,0 +1,33 @@
+<?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="cn.flightfeather.supervision.domain.mapper.SettingAnswerMapper" >
+  <resultMap id="BaseResultMap" type="cn.flightfeather.supervision.domain.entity.SettingAnswer" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <id column="SA_GUID" property="saGuid" jdbcType="VARCHAR" />
+    <result column="SA_Summary" property="saSummary" jdbcType="VARCHAR" />
+    <result column="CQ_GUID" property="cqGuid" jdbcType="VARCHAR" />
+    <result column="SA_Kind" property="saKind" jdbcType="TINYINT" />
+    <result column="SA_Keywords" property="saKeywords" jdbcType="VARCHAR" />
+    <result column="SA_Access_Level" property="saAccessLevel" jdbcType="TINYINT" />
+    <result column="SA_Weight" property="saWeight" jdbcType="DOUBLE" />
+    <result column="SA_Content" property="saContent" jdbcType="VARCHAR" />
+    <result column="SA_Answer_Url" property="saAnswerUrl" jdbcType="VARCHAR" />
+    <result column="SA_Total_Num" property="saTotalNum" jdbcType="INTEGER" />
+    <result column="SA_Create_Time" property="saCreateTime" jdbcType="TIMESTAMP" />
+    <result column="SA_Update_Time" property="saUpdateTime" jdbcType="TIMESTAMP" />
+    <result column="SA_Extension1" property="saExtension1" jdbcType="VARCHAR" />
+    <result column="SA_Extension2" property="saExtension2" jdbcType="VARCHAR" />
+    <result column="SA_Extension3" property="saExtension3" jdbcType="VARCHAR" />
+    <result column="SA_Remark" property="saRemark" jdbcType="VARCHAR" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    <!--
+      WARNING - @mbg.generated
+    -->
+    SA_GUID, SA_Summary, CQ_GUID, SA_Kind, SA_Keywords, SA_Access_Level, SA_Weight, SA_Content, 
+    SA_Answer_Url, SA_Total_Num, SA_Create_Time, SA_Update_Time, SA_Extension1, SA_Extension2, 
+    SA_Extension3, SA_Remark
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/commitment-construction.ftl b/src/main/resources/templates/commitment-construction.ftl
index d27624a..8c9c409 100644
--- a/src/main/resources/templates/commitment-construction.ftl
+++ b/src/main/resources/templates/commitment-construction.ftl
@@ -13,7 +13,7 @@
                 style="font-family:瀹嬩綋; font-size:18pt; font-weight:bold">${City}</span><span
                 style="font-family:瀹嬩綋; font-size:18pt; font-weight:bold">${District}</span><span
                 style="font-family:瀹嬩綋; font-size:18pt; font-weight:bold">寤鸿宸ュ湴</span><span
-                style="font-family:瀹嬩綋; font-size:18pt; font-weight:bold">鐜淇$敤鎵胯涔�</span></p>
+                style="font-family:瀹嬩綋; font-size:18pt; font-weight:bold">鐜瀹堟硶鎵胯涔�</span></p>
         <div style="text-align:center">
             <table cellspacing="0" cellpadding="0" style="border-collapse:collapse; margin:0 auto; width:501.7pt">
                 <tr style="height:24.6pt">
@@ -237,12 +237,12 @@
                             <span style="font-family:瀹嬩綋; font-size:10pt">娉曚汉</span><span
                                 style="font-family:瀹嬩綋; font-size:10pt">浠h〃鎴栬矗</span>
                                 <span style="font-family:瀹嬩綋; font-size:10pt">浠讳汉锛堢瀛楋級锛�</span>
-                                <span style="font-family:瀹嬩綋; font-size:10pt; margin-left: 150pt;">鍗曚綅锛堢洊绔狅級</span>
+                                <#--  <span style="font-family:瀹嬩綋; font-size:10pt; margin-left: 150pt;">鍗曚綅锛堢洊绔狅級</span>  -->
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:26.25pt; widows:0; text-vertical: top;">
-                            <image src="${Sign}" style="width:100pt;height: 40pt;"/>
-                            <image src="${Seal}" style="width:70pt;height: 70pt;margin-left: 210pt;"/>
+                            <img src="${Sign}" style="width:100pt;height: 40pt;"/>
+                            <img src="${Seal}" style="width:70pt;height: 70pt;margin-left: 210pt;"/>
                         </p>
                         <p style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; widows:0"><span
                                 style="font-family:瀹嬩綋; font-size:10pt">&#xa0;</span></p>
diff --git a/src/main/resources/templates/commitment-restaurant.ftl b/src/main/resources/templates/commitment-restaurant.ftl
index e5803bb..2089527 100644
--- a/src/main/resources/templates/commitment-restaurant.ftl
+++ b/src/main/resources/templates/commitment-restaurant.ftl
@@ -1,92 +1,97 @@
-锘�<html>
+<html>
 
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <meta http-equiv="Content-Style-Type" content="text/css" />
     <meta name="generator" content="Aspose.Words for .NET 15.1.0.0" />
     <title></title>
+    <style type="text/css">
+        body {
+            font-family: "Arial","Microsoft YaHei","榛戜綋","瀹嬩綋",sans-serif;
+        }
+    </style>
 </head>
 
 <body>
     <div>
         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                style="font-family:瀹嬩綋; font-size:18pt; font-weight:bold">${City}${District}</span><span
-                style="font-family:瀹嬩綋; font-size:18pt; font-weight:bold">椁愰ギ</span><span
-                style="font-family:瀹嬩綋; font-size:18pt; font-weight:bold">鍗曚綅鐜淇$敤鎵胯涔�</span></p>
+                style=" font-size:18pt; font-weight:bold">${City}${District}</span><span
+                style=" font-size:18pt; font-weight:bold">椁愰ギ</span><span
+                style=" font-size:18pt; font-weight:bold">鍗曚綅鐜瀹堟硶鎵胯涔�</span></p>
         <div style="text-align:center">
             <table cellspacing="0" cellpadding="0" style="border-collapse:collapse; margin:0 auto">
                 <tr style="height:24.6pt">
                     <td colspan="2"
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:106.85pt">
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">鍗曚綅鍚嶇О</span></p>
+                                style=" font-size:12pt">鍗曚綅鍚嶇О</span></p>
                     </td>
                     <td colspan="3"
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:372.5pt">
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">${Department}</span></p>
+                                style=" font-size:12pt">${Department}</span></p>
                     </td>
                 </tr>
                 <tr style="height:25.75pt">
                     <td colspan="2"
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:106.85pt">
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">缁熶竴绀句細淇$敤浠g爜</span></p>
+                                style=" font-size:12pt">缁熶竴绀句細淇$敤浠g爜</span></p>
                     </td>
                     <td
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:133.55pt">
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">${SocialCode}</span></p>
+                                style=" font-size:12pt">${SocialCode}</span></p>
                     </td>
                     <td
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:97.8pt">
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">鐜瘎瀹℃壒鏂囧彿</span></p>
+                                style=" font-size:12pt">鐜瘎瀹℃壒鏂囧彿</span></p>
                     </td>
                     <td
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:119.55pt">
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">${Number}</span></p>
+                                style=" font-size:12pt">${Number}</span></p>
                     </td>
                 </tr>
                 <tr style="height:24.95pt">
                     <td colspan="2"
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:106.85pt">
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">娉曚汉</span><span
-                                style="font-family:瀹嬩綋; font-size:12pt">浠h〃</span><span
-                                style="font-family:瀹嬩綋; font-size:12pt">濮撳悕</span></p>
+                                style=" font-size:12pt">娉曚汉</span><span
+                                style=" font-size:12pt">浠h〃</span><span
+                                style=" font-size:12pt">濮撳悕</span></p>
                     </td>
                     <td
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:133.55pt">
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">${JuridicalPerson}</span></p>
+                                style=" font-size:12pt">${JuridicalPerson}</span></p>
                     </td>
                     <td
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:97.8pt">
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">娉曚汉</span><span
-                                style="font-family:瀹嬩綋; font-size:12pt">浠h〃</span><span
-                                style="font-family:瀹嬩綋; font-size:12pt">韬唤璇佸彿</span></p>
+                                style=" font-size:12pt">娉曚汉</span><span
+                                style=" font-size:12pt">浠h〃</span><span
+                                style=" font-size:12pt">韬唤璇佸彿</span></p>
                     </td>
                     <td
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:119.55pt">
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">${IdNo}</span></p>
+                                style=" font-size:12pt">${IdNo}</span></p>
                     </td>
                 </tr>
                 <tr style="height:42.7pt">
                     <td colspan="2"
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:106.85pt">
                         <p style="line-height:20pt; margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">鐜淇$敤鎵胯绫诲瀷</span></p>
+                                style=" font-size:12pt">鐜淇$敤鎵胯绫诲瀷</span></p>
                     </td>
                     <td colspan="3"
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:372.5pt">
                         <p style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">${Type1} 鐜繚涓讳綋璐d换鎵胯锛�${Type2} 鐜琛屾斂璁稿彲浜嬮」锛浡� </span></p>
+                                style=" font-size:12pt">${Type1} 鐜繚涓讳綋璐d换鎵胯锛�${Type2} 鐜琛屾斂璁稿彲浜嬮」锛浡� </span></p>
                         <p style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">${Type3} 鐜繚涓撻」璧勯噾鎴栧叾浠栬祫閲戣ˉ鍔╋紱${Type4} 鍏朵粬鐜繚鐢虫姤浜嬮」</span>
+                                style=" font-size:12pt">${Type3} 鐜繚涓撻」璧勯噾鎴栧叾浠栬祫閲戣ˉ鍔╋紱${Type4} 鍏朵粬鐜繚鐢虫姤浜嬮」</span>
                         </p>
                     </td>
                 </tr>
@@ -94,90 +99,88 @@
                     <td
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:31.5pt">
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:14pt">鎵�</span></p>
+                                style=" font-size:14pt">鎵�</span></p>
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:14pt">璇�</span></p>
+                                style=" font-size:14pt">璇�</span></p>
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:14pt">浜�</span></p>
+                                style=" font-size:14pt">浜�</span></p>
                         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:14pt">椤�</span></p>
+                                style=" font-size:14pt">椤�</span></p>
                     </td>
                     <td colspan="4"
                         style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:top; width:447.85pt">
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
                             <span
-                                style="font-family:瀹嬩綋; font-size:12pt">涓鸿返琛岀豢鑹插彂灞曠悊蹇碉紝鍔姏钀ラ�犺瘹瀹炲畧淇$殑绀句細鐜锛岃惤瀹為楗崟浣嶇幆淇濊矗浠�,闄嶄綆鍥犵幆澧冪瓑鍥犵礌閫犳垚鐨勯鍝佸畨鍏ㄩ殣鎮e拰灞呮皯绾犵悍锛岀‘淇濋楗笟鍋ュ悍鏈夊簭鍙戝睍锛屾湰鍗曚綅(鎴栨湰浜�)鑷効浣滃嚭濡備笅鎵胯:
+                                style=" font-size:12pt">涓鸿返琛岀豢鑹插彂灞曠悊蹇碉紝鍔姏钀ラ�犺瘹瀹炲畧淇$殑绀句細鐜锛岃惤瀹為楗崟浣嶇幆淇濊矗浠�,闄嶄綆鍥犵幆澧冪瓑鍥犵礌閫犳垚鐨勯鍝佸畨鍏ㄩ殣鎮e拰灞呮皯绾犵悍锛岀‘淇濋楗笟鍋ュ悍鏈夊簭鍙戝睍锛屾湰鍗曚綅(鎴栨湰浜�)鑷効浣滃嚭濡備笅鎵胯:
                             </span>
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
-                            <span style="font-family:瀹嬩綋; font-size:12pt">涓�銆佷弗鏍奸伒瀹堝浗瀹躲�佸競銆佸尯鏈夊叧鐜淇濇姢娉曞緥銆佹硶瑙勩�佽绔犮�佹爣鍑嗗拰鏀跨瓥瑙勫畾,鍧氭寔瀹堟硶鐢熶骇缁忚惀,
+                            <span style=" font-size:12pt">涓�銆佷弗鏍奸伒瀹堝浗瀹躲�佸競銆佸尯鏈夊叧鐜淇濇姢娉曞緥銆佹硶瑙勩�佽绔犮�佹爣鍑嗗拰鏀跨瓥瑙勫畾,鍧氭寔瀹堟硶鐢熶骇缁忚惀,
                                 绉瀬灞ヨ鐜淇濇姢绀句細璐d换锛屻�� </span>
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
                             <span
-                                style="font-family:瀹嬩綋; font-size:12pt">浜屻�佸竷灞�鍜屽缓璁剧鍚堝煄甯傛�讳綋瑙勫垝銆佸競瀹圭殑鐩稿叧瑕佹眰锛屼笉鍦ㄤ互涓嬪尯鍩熸柊寤恒�佹敼寤恒�佹墿寤轰骇鐢熸补鐑熴�佸紓鍛炽�佸簾姘旂殑椁愰ギ鏈嶅姟椤圭洰:灞呮皯浣忓畢妤笺�佹湭閰嶅璁剧珛涓撶敤鐑熼亾鐨勫晢浣忔ゼ浠ュ強鍟嗕綇妤间笌灞呬綇灞傜浉閭荤殑妤煎眰銆�
+                                style=" font-size:12pt">浜屻�佸竷灞�鍜屽缓璁剧鍚堝煄甯傛�讳綋瑙勫垝銆佸競瀹圭殑鐩稿叧瑕佹眰锛屼笉鍦ㄤ互涓嬪尯鍩熸柊寤恒�佹敼寤恒�佹墿寤轰骇鐢熸补鐑熴�佸紓鍛炽�佸簾姘旂殑椁愰ギ鏈嶅姟椤圭洰:灞呮皯浣忓畢妤笺�佹湭閰嶅璁剧珛涓撶敤鐑熼亾鐨勫晢浣忔ゼ浠ュ強鍟嗕綇妤间笌灞呬綇灞傜浉閭荤殑妤煎眰銆�
                             </span>
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
-                            <span style="font-family:瀹嬩綋; font-size:12pt">涓夈�佸畨瑁呮补鐑熷噣鍖栧拰寮傚懗澶勭悊璁炬柦锛屾补鐑熸帓鏀炬祿搴︾鍚�&lt;涓婃捣甯傞楗笟娌圭儫鎺掓斁鏍囧噯銆�(DB
+                            <span style=" font-size:12pt">涓夈�佸畨瑁呮补鐑熷噣鍖栧拰寮傚懗澶勭悊璁炬柦锛屾补鐑熸帓鏀炬祿搴︾鍚�&lt;涓婃捣甯傞楗笟娌圭儫鎺掓斁鏍囧噯銆�(DB
                                 31/844 -2014)锛屽苟濮旀墭绗﹀悎銆婃竻娲佽涓氱粡钀ユ湇鍔¤鑼冦�嬬殑鏈嶅姟鍗曚綅瀹氭湡杩涜缁存姢娓呮礂锛屽強鏃惰褰曠浉鍏冲彴璐︼紝纭繚鍏舵甯镐娇鐢紝闃叉瀵瑰懆杈瑰眳姘戦�犳垚鐢熸椿鐜姹℃煋銆� </span>
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
                             <span
-                                style="font-family:瀹嬩綋; font-size:12pt">鍥涖�佸畨瑁呯鍚堛�奀CAEPI-RG-Y-020-2011銆嬬殑娌圭儫鍦ㄧ嚎鐩戞祴瑁呯疆锛屽苟鍙婃椂涓庣敓鎬佺幆绔熼儴闂╙娌圭儫鐩戞帶绯荤粺鑱旂綉锛屽鎵樿鑼冩湇鍔″崟浣嶅畾鏈熻繍缁达紝鍙婃椂璁板綍鐩稿叧鍙拌处锛岀‘淇濆叾姝e父浣跨敤锛屼笉瓒呮爣鎺掓斁銆�
+                                style=" font-size:12pt">鍥涖�佸畨瑁呯鍚堛�奀CAEPI-RG-Y-020-2011銆嬬殑娌圭儫鍦ㄧ嚎鐩戞祴瑁呯疆锛屽苟鍙婃椂涓庣敓鎬佺幆绔熼儴闂╙娌圭儫鐩戞帶绯荤粺鑱旂綉锛屽鎵樿鑼冩湇鍔″崟浣嶅畾鏈熻繍缁达紝鍙婃椂璁板綍鐩稿叧鍙拌处锛岀‘淇濆叾姝e父浣跨敤锛屼笉瓒呮爣鎺掓斁銆�
                             </span>
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
-                            <span style="font-family:瀹嬩綋; font-size:12pt">浜斻�佸噣鍖栬缃鏈恒�佺┖璋冨鏈哄畨瑁呬綅缃敖閲忚繙绂讳綇鎴凤紝鍋氬ソ闅斿櫔銆侀檷鍣帾鏂斤紝鏄奸棿&lt;60dB銆�
+                            <span style=" font-size:12pt">浜斻�佸噣鍖栬缃鏈恒�佺┖璋冨鏈哄畨瑁呬綅缃敖閲忚繙绂讳綇鎴凤紝鍋氬ソ闅斿櫔銆侀檷鍣帾鏂斤紝鏄奸棿&lt;60dB銆�
                                 澶滈棿&lt;50aB锛� 纭繚涓嶅櫔澹版壈姘戙�� </span>
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
-                            <span style="font-family:瀹嬩綋; font-size:12pt">鍏�佷笉鍦ㄧ姝㈢殑鍖哄煙(鍦ㄥ綋鍦颁汉姘戞斂搴滅姝㈢殑鏃舵鍜屽尯鍩�)鍐呴湶澶╃儳鐑ら鍝併�� </span>
+                            <span style=" font-size:12pt">鍏�佷笉鍦ㄧ姝㈢殑鍖哄煙(鍦ㄥ綋鍦颁汉姘戞斂搴滅姝㈢殑鏃舵鍜屽尯鍩�)鍐呴湶澶╃儳鐑ら鍝併�� </span>
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
                             <span
-                                style="font-family:瀹嬩綋; font-size:12pt">涓冦�佸湪灞呮皯鍖哄唴浠庝簨椁愰ギ鏈嶅姟锛屼繚璇佷笉鍥犵幆澧冨洜绱犲奖鍝嶅懆鍥村眳姘戞甯哥敓娲伙紝涓�鏃﹀洜鎵版皯绛夐棶棰樺嚭鐜扮殑绾犵悍鐢辨湰鍗曚綅鑷璐熻矗鍗忓晢瑙h瘈骞剁珛鍗虫暣鏀广��
+                                style=" font-size:12pt">涓冦�佸湪灞呮皯鍖哄唴浠庝簨椁愰ギ鏈嶅姟锛屼繚璇佷笉鍥犵幆澧冨洜绱犲奖鍝嶅懆鍥村眳姘戞甯哥敓娲伙紝涓�鏃﹀洜鎵版皯绛夐棶棰樺嚭鐜扮殑绾犵悍鐢辨湰鍗曚綅鑷璐熻矗鍗忓晢瑙h瘈骞剁珛鍗虫暣鏀广��
                             </span>
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
                             <span
-                                style="font-family:瀹嬩綋; font-size:12pt">鍏�佸悓鎰忔湰鎵胯鍚戠ぞ浼氬叕寮�锛屽苟鑷鎺ュ彈鏀垮簻銆佽涓氱粍缁囥�佷富绠¢儴闂ㄥ鎵樼涓夋柟鐩戠鍗曚綅銆佺ぞ浼氬叕浼椼�佹柊闂昏垎璁虹殑鐩戠潱銆�</span>
+                                style=" font-size:12pt">鍏�佸悓鎰忔湰鎵胯鍚戠ぞ浼氬叕寮�锛屽苟鑷鎺ュ彈鏀垮簻銆佽涓氱粍缁囥�佷富绠¢儴闂ㄥ鎵樼涓夋柟鐩戠鍗曚綅銆佺ぞ浼氬叕浼椼�佹柊闂昏垎璁虹殑鐩戠潱銆�</span>
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
-                            <span style="font-family:瀹嬩綋; font-size:12pt">&#xa0;</span>
+                            <span style=" font-size:12pt">&#xa0;</span>
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:26.25pt; widows:0">
-                            <span style="font-family:瀹嬩綋; font-size:12pt">娉曚汉</span>
-                            <span style="font-family:瀹嬩綋; font-size:12pt">浠h〃鎴栬矗</span>
-                            <span style="font-family:瀹嬩綋; font-size:10pt">浠讳汉锛堢瀛楋級锛�</span>
-                            <span style="font-family:瀹嬩綋; font-size:10pt; margin-left: 150pt;">鍗曚綅锛堢洊绔狅級</span>
+                            <span style=" font-size:12pt">娉曚汉浠h〃鎴栬矗浠讳汉锛堢瀛楋級锛�</span>
+                            <#--  <span style=" font-size:12pt; margin-left: 150pt;">鍗曚綅锛堢洊绔狅級</span>  -->
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:26.25pt; widows:0">
-                            <image src="${Sign}" style="width:100pt;height: 40pt;"/>
-                            <image src="${Seal}" style="width:70pt;height: 70pt;margin-left: 210pt;"/>
+                            <img src="${Sign}" style="width:100pt;height: 40pt;"/>
+                            <img src="${Seal}" style="width:70pt;height: 70pt;margin-left: 210pt;"/>
                         </p>
                         <p style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; widows:0"><span
-                                style="font-family:瀹嬩綋; font-size:12pt">&#xa0;</span></p>
+                                style=" font-size:12pt">&#xa0;</span></p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:right; text-indent:28.5pt; widows:0">
-                            <span style="font-family:瀹嬩綋; font-size:10pt">${Year}</span>
-                            <span style="font-family:瀹嬩綋; font-size:10pt">骞�</span>
-                            <span style="font-family:瀹嬩綋; font-size:10pt">${Month}</span>
-                            <span style="font-family:瀹嬩綋; font-size:10pt">鏈�</span>
-                            <span style="font-family:瀹嬩綋; font-size:10pt">${Day}</span>
-                            <span style="font-family:瀹嬩綋; font-size:10pt">鏃�</span>
+                            <span style=" font-size:12pt">${Year}</span>
+                            <span style=" font-size:12pt">骞�</span>
+                            <span style=" font-size:12pt">${Month}</span>
+                            <span style=" font-size:12pt">鏈�</span>
+                            <span style=" font-size:12pt">${Day}</span>
+                            <span style=" font-size:12pt">鏃�</span>
                         </p>
                     </td>
                 </tr>
diff --git a/src/main/resources/templates/commitment-vehicle.ftl b/src/main/resources/templates/commitment-vehicle.ftl
index 931c62c..df9d38a 100644
--- a/src/main/resources/templates/commitment-vehicle.ftl
+++ b/src/main/resources/templates/commitment-vehicle.ftl
@@ -12,7 +12,7 @@
         <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
                 style="font-family:瀹嬩綋; font-size:18pt; font-weight:bold">${City}${District}</span><span
                 style="font-family:瀹嬩綋; font-size:18pt; font-weight:bold">姹戒慨</span><span
-                style="font-family:瀹嬩綋; font-size:18pt; font-weight:bold">鍗曚綅鐜淇$敤鎵胯涔�</span></p>
+                style="font-family:瀹嬩綋; font-size:18pt; font-weight:bold">鍗曚綅鐜瀹堟硶鎵胯涔�</span></p>
         <div style="text-align:center">
             <table cellspacing="0" cellpadding="0" style="border-collapse:collapse; margin:0 auto; width:501.7pt">
                 <tr style="height:24.6pt">
@@ -202,26 +202,24 @@
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:26.25pt; widows:0">
-                            <span style="font-family:瀹嬩綋; font-size:12pt">娉曚汉</span><span
-                                style="font-family:瀹嬩綋; font-size:12pt">浠h〃鎴栬矗</span>
-                                <span style="font-family:瀹嬩綋; font-size:10pt">浠讳汉锛堢瀛楋級锛�</span>
-                                <span style="font-family:瀹嬩綋; font-size:10pt; margin-left: 150pt;">鍗曚綅锛堢洊绔狅級</span>
+                            <span style="font-family:瀹嬩綋; font-size:12pt">娉曚汉浠h〃鎴栬矗浠讳汉锛堢瀛楋級锛�</span>
+                                <#--  <span style="font-family:瀹嬩綋; font-size:12pt; margin-left: 150pt;">鍗曚綅锛堢洊绔狅級</span>  -->
                         </p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; text-indent:26.25pt; widows:0">
-                            <image src="${Sign}" style="width:100pt;height: 40pt;"/>
-                            <image src="${Seal}" style="width:70pt;height: 70pt;margin-left: 210pt;"/>
+                            <img src="${Sign}" style="width:100pt;height: 40pt;"/>
+                            <img src="${Seal}" style="width:70pt;height: 70pt;margin-left: 210pt;"/>
                         </p>
                         <p style="line-height:20pt; margin:0pt; orphans:0; text-align:justify; widows:0"><span
                                 style="font-family:瀹嬩綋; font-size:12pt">&#xa0;</span></p>
                         <p
                             style="line-height:20pt; margin:0pt; orphans:0; text-align:right; text-indent:28.5pt; widows:0">
-                            <span style="font-family:瀹嬩綋; font-size:10pt">${Year}</span>
-                            <span style="font-family:瀹嬩綋; font-size:10pt">骞�</span>
-                            <span style="font-family:瀹嬩綋; font-size:10pt">${Month}</span>
-                            <span style="font-family:瀹嬩綋; font-size:10pt">鏈�</span>
-                            <span style="font-family:瀹嬩綋; font-size:10pt">${Day}</span>
-                            <span style="font-family:瀹嬩綋; font-size:10pt">鏃�</span>
+                            <span style="font-family:瀹嬩綋; font-size:12pt">${Year}</span>
+                            <span style="font-family:瀹嬩綋; font-size:12pt">骞�</span>
+                            <span style="font-family:瀹嬩綋; font-size:12pt">${Month}</span>
+                            <span style="font-family:瀹嬩綋; font-size:12pt">鏈�</span>
+                            <span style="font-family:瀹嬩綋; font-size:12pt">${Day}</span>
+                            <span style="font-family:瀹嬩綋; font-size:12pt">鏃�</span>
                         </p>
                     </td>
                 </tr>
diff --git a/src/test/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImplTest.kt b/src/test/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImplTest.kt
index 1309fe1..97b850b 100644
--- a/src/test/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImplTest.kt
+++ b/src/test/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImplTest.kt
@@ -2,6 +2,8 @@
 
 import cn.flightfeather.supervision.lightshare.service.CommitmentService
 import cn.flightfeather.supervision.lightshare.vo.CommitmentVo
+import com.google.gson.Gson
+import jdk.nashorn.internal.parser.JSONParser
 import org.apache.http.entity.ContentType
 import org.junit.Test
 import org.junit.jupiter.api.extension.ExtendWith
@@ -14,6 +16,7 @@
 import org.springframework.web.multipart.MultipartFile
 import org.springframework.web.multipart.MultipartRequest
 import org.springframework.web.multipart.commons.CommonsMultipartFile
+import springfox.documentation.spring.web.json.Json
 import java.io.ByteArrayInputStream
 import java.io.File
 import java.io.FileInputStream
@@ -71,10 +74,10 @@
 //        })
         //姹戒慨
 
-        val signImg = File("target/test-file/car_stop.png")
+        val signImg = File("C:\\work\\vs\\ff-ai-ep\\asset\\mipmap\\boat_driving.png")
         val sign = MockMultipartFile("sign.png", FileInputStream(signImg))
         val r = commitmentService.createLetterOfCommitment(
-            "ClOghpi60ZNUjb3f", CommitmentVo(
+            "WIIteekIBxXzespD", Gson().toJson(CommitmentVo(
                 "涓婃捣甯�",
                 "寰愭眹鍖�",
                 "鏌愭煇浼佷笟",
@@ -92,7 +95,7 @@
                 "2022",
                 "06",
                 "29",
-            ), sign, null
+            )), sign, null
         )
         println(r)
     }
diff --git a/src/test/kotlin/cn/flightfeather/supervision/timingtask/PushFumeTest.kt b/src/test/kotlin/cn/flightfeather/supervision/timingtask/PushFumeTest.kt
index 8d0f765..9307b92 100644
--- a/src/test/kotlin/cn/flightfeather/supervision/timingtask/PushFumeTest.kt
+++ b/src/test/kotlin/cn/flightfeather/supervision/timingtask/PushFumeTest.kt
@@ -36,8 +36,6 @@
     @Autowired
     lateinit var avgFumeMinuteValueMapper: AvgFumeMinuteValueMapper
 
-    private val dateUtil = DateUtil()
-
     @Test
     fun doTask() {
         var time = LocalDateTime.of(2021, 4, 16, 10, 0)
@@ -74,8 +72,8 @@
 
         list.forEach {
             fumeMinuteValue.mvStatCode = it.mvStatCode
-            fumeMinuteValue.mvCreateTime = dateUtil.StringToDate(section)
-            fumeMinuteValue.mvDataTime = dateUtil.StringToDate(section)
+            fumeMinuteValue.mvCreateTime = DateUtil.StringToDate(section)
+            fumeMinuteValue.mvDataTime = DateUtil.StringToDate(section)
             fumeMinuteValue.mvSignal = it.mvSignal
             fumeMinuteValue.mvFanStatus = it.mvFanStatus
             fumeMinuteValue.mvPurifierStatus = it.mvPurifierStatus

--
Gitblit v1.9.3