diff --git a/code/backend/RegulatoryManagementBackend/.vscode/.editorconfig b/code/backend/RegulatoryManagementBackend/.vscode/.editorconfig
new file mode 100644
index 0000000..b1aa8c0
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/.vscode/.editorconfig
@@ -0,0 +1,25 @@
+# top-most EditorConfig file
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 4
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.js]
+indent_size = 4
+
+[*.ts]
+indent_size = 4
+
+[*.py]
+indent_size = 4
+
+[*.java]
+indent_size = 4
+
+[*.xml]
+indent_size = 2
diff --git a/code/backend/RegulatoryManagementBackend/.vscode/fileheader.template.js b/code/backend/RegulatoryManagementBackend/.vscode/fileheader.template.js
new file mode 100644
index 0000000..ec0a8e0
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/.vscode/fileheader.template.js
@@ -0,0 +1,78 @@
+/**
+ * This file is generated by VSCode extension: Fileheader Pro
+ */
+
+/**
+ * These comments can help you write your own template with type hint
+ * @typedef {Object} FileheaderVariable  Fileheader variables
+ * @property {string} birthtime file birth time. will get it from VCS or fallback to filesystem when it is not available
+ * @property {string} mtime file modification time. will get it from VCS or fallback to filesystem when it is not available
+ * @property {string} authorName if the file is tracked by VCS, it will get the author name from VCS. else it will get it from current user name
+ * @property {string} authorEmail if the file is tracked by VCS, it will get the author email from VCS. else it will get it from current user email
+ * @property {string} userName else it will get it from current user name
+ * @property {string} userEmail  user email is from VSCode config, and fallback to VCS config
+ * @property {string} companyName
+ * @property {string} projectName name of current project
+ * @property {string} filePath the file path, relative to project root with POSIX path separator
+ * @property {string} dirPath the directory path, relative to project root with POSIX path separator
+ * @property {string} fileName filename with extension
+ */
+
+ /**
+ * @typedef {string | number | null | undefined | Template | boolean} TemplateInterpolation NOTE: boolean or falsy value will render empty string
+ *
+ * @typedef {{ strings: TemplateStringsArray; interpolations: TemplateInterpolation[]; }} Template
+ * @typedef {(strings: TemplateStringsArray, ...values: any[]) => string} ITemplateFunction
+ *
+ */
+
+/**
+ * Please confirm your provider extends from globalThis.FileheaderLanguageProvider
+ */
+class CustomLanguageProvider extends globalThis.FileheaderLanguageProvider {
+  /**
+   * @type {string[]}
+   */
+  languages = [
+    "java",
+    "javascript",
+    "typescript",
+    "javascriptreact",
+    "typescriptreact",
+  ];
+
+  /**
+   * @type {string=} the language block comment start string.
+   * this is for future feature: support detect old custom template when custom template changes
+   */
+  blockCommentStart = "/**";
+
+  /**
+   * @type {string=}
+   */
+  blockCommentEnd = "*/";
+
+  /**
+   * get your template when document language matched
+   * @param {ITemplateFunction} tpl template function, it is a tagged function, support nested interpolation
+   * @param {FileheaderVariable} variables template variables
+   * @returns {Template}
+   */
+  getTemplate(tpl, variables) {
+    // prettier-ignore
+    return tpl
+`/**
+ * @Author: ${variables.authorName} <${variables.authorEmail}>
+ * @Date: ${variables.birthtime}
+ * @LastEditors: ${variables.userName}
+ * @LastModified: ${variables.mtime}
+ * @FilePath: ${variables.filePath}
+ * @Description:
+ *
+ *               Copyright (c) ${2025} by Kane All rights reserved
+ */`;
+  }
+}
+
+// export your provider classes
+module.exports = [CustomLanguageProvider];
diff --git a/code/backend/RegulatoryManagementBackend/.vscode/settings.json b/code/backend/RegulatoryManagementBackend/.vscode/settings.json
new file mode 100644
index 0000000..5e37972
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/.vscode/settings.json
@@ -0,0 +1,4 @@
+{
+    "java.configuration.updateBuildConfiguration": "interactive",
+    "java.compile.nullAnalysis.mode": "automatic"
+}
diff --git a/code/backend/RegulatoryManagementBackend/pom.xml b/code/backend/RegulatoryManagementBackend/pom.xml
index 0669c73..f48bbb7 100644
--- a/code/backend/RegulatoryManagementBackend/pom.xml
+++ b/code/backend/RegulatoryManagementBackend/pom.xml
@@ -1,67 +1,153 @@
 
 
-
-  4.0.0
+
+    4.0.0
 
-  com.cpic.xim
-  RegulatoryManagementBackend
-  1.0-SNAPSHOT
-  war
+    com.cpic.xim
+    RegulatoryManagementBackend
+    1.0-SNAPSHOT
+    war
 
-  RegulatoryManagementBackend Maven Webapp
-  
-  http://www.example.com
+    RegulatoryManagementBackend Maven Webapp
+    
+    http://www.example.com
 
-  
-    UTF-8
-    8
-    8
-  
+    
+        UTF-8
+        18
+        18
+        6.2.11
+        2.24.3
+        2.18.3
+    
 
-  
-    
-      junit
-      junit
-      4.13.1
-      test
-    
-  
+    
+        
+            junit
+            junit
+            4.13.1
+            test
+        
 
-  
-    RegulatoryManagementBackend
-    
-      
-        
-          maven-clean-plugin
-          3.4.0
-        
-        
-        
-          maven-resources-plugin
-          3.3.1
-        
-        
-          maven-compiler-plugin
-          3.13.0
-        
-        
-          maven-surefire-plugin
-          3.3.0
-        
-        
-          maven-war-plugin
-          3.4.0
-        
-        
-          maven-install-plugin
-          3.1.2
-        
-        
-          maven-deploy-plugin
-          3.1.2
-        
-      
-    
-  
-
+        
+        
+            org.springframework
+            spring-context
+            ${spring.version}
+        
+        
+            org.springframework
+            spring-test
+            ${spring.version}
+            test
+        
+        
+            org.springframework
+            spring-web
+            ${spring.version}
+        
+        
+            org.springframework
+            spring-webmvc
+            ${spring.version}
+        
+        
+            jakarta.servlet
+            jakarta.servlet-api
+            6.1.0
+            provided
+        
+
+        
+        
+            org.apache.logging.log4j
+            log4j-core
+            ${log4j.version}
+        
+        
+            org.apache.logging.log4j
+            log4j-slf4j2-impl
+            ${log4j.version}
+        
+        
+            org.apache.logging.log4j
+            log4j-api
+            ${log4j.version}
+        
+        
+        
+            com.fasterxml.jackson.core
+            jackson-databind
+            ${jackson.version}
+        
+        
+            com.fasterxml.jackson.core
+            jackson-core
+            ${jackson.version}
+        
+        
+            com.fasterxml.jackson.core
+            jackson-annotations
+            ${jackson.version}
+        
+
+        
+            com.mysql
+            mysql-connector-j
+            9.2.0
+        
+
+        
+            org.apache.commons
+            commons-fileupload2-jakarta-servlet6
+            2.0.0-M2
+        
+        
+            commons-io
+            commons-io
+            2.18.0
+        
+
+    
+
+    
+        RegulatoryManagementBackend
+        
+            
+                
+                    maven-clean-plugin
+                    3.4.0
+                
+                
+                
+                    maven-resources-plugin
+                    3.3.1
+                
+                
+                    maven-compiler-plugin
+                    3.13.0
+                
+                
+                    maven-surefire-plugin
+                    3.3.0
+                
+                
+                    maven-war-plugin
+                    3.4.0
+                
+                
+                    maven-install-plugin
+                    3.1.2
+                
+                
+                    maven-deploy-plugin
+                    3.1.2
+                
+            
+        
+    
+
\ No newline at end of file
diff --git a/code/backend/RegulatoryManagementBackend/src/main/java/com/cpic/xim/web/controllers/QueryResponse.java b/code/backend/RegulatoryManagementBackend/src/main/java/com/cpic/xim/web/controllers/QueryResponse.java
new file mode 100644
index 0000000..c1887a5
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/java/com/cpic/xim/web/controllers/QueryResponse.java
@@ -0,0 +1,91 @@
+/*
+ * @Author: Kane
+ * @Date: 2023-04-05 22:34:36
+ * @LastEditors: Kane
+ * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/QueryResponse.java
+ * @Description:
+ *
+ * Copyright (c) ${2022} by Kane, All Rights Reserved.
+ */
+package com.cpic.xim.web.controllers;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class QueryResponse
+{
+    @JsonProperty( "success" )
+    private boolean success;
+
+    @JsonProperty( "message" )
+    private String  message;
+
+    public QueryResponse( boolean success, String message )
+    {
+        this.success = success;
+        this.message = message;
+    }
+
+    public QueryResponse()
+    {
+        this.success = false;
+        this.message = "";
+    }
+
+    public boolean isSuccess()
+    {
+        return success;
+    }
+
+    public void setSuccess( boolean success )
+    {
+        this.success = success;
+    }
+
+    public String getMessage()
+    {
+        return message;
+    }
+
+    public void setMessage( String message )
+    {
+        this.message = message;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + (success ? 1231 : 1237);
+        result = prime * result + ((message == null) ? 0 : message.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals( Object obj )
+    {
+        if ( this == obj )
+            return true;
+        if ( obj == null )
+            return false;
+        if ( getClass() != obj.getClass() )
+            return false;
+        QueryResponse other = (QueryResponse) obj;
+        if ( success != other.success )
+            return false;
+        if ( message == null )
+        {
+            if ( other.message != null )
+                return false;
+        }
+        else if ( !message.equals( other.message ) )
+            return false;
+        return true;
+    }
+
+    @Override
+    public String toString()
+    {
+        return "QueryResult [success=" + success + ", message=" + message + "]";
+    }
+}
diff --git a/code/backend/RegulatoryManagementBackend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUpload.java b/code/backend/RegulatoryManagementBackend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUpload.java
new file mode 100644
index 0000000..98a06e8
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUpload.java
@@ -0,0 +1,97 @@
+/*
+ * @Author: Kane
+ * @Date: 2023-01-22 23:11:26
+ * @LastEditors: Kane
+ * @LastEditTime: 2023-10-23 17:01:29
+ * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUpload.java
+ * @Description: 用于接受上传文件的Controller。
+ * 
+ * Copyright (c) ${2022} by Kane, All Rights Reserved. 
+ */
+
+package com.cpic.xim.web.controllers.fileupload;
+
+import java.io.File;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+import java.util.Vector;
+import jakarta.servlet.http.HttpServletRequest;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+// @SuppressWarnings( "unused" )
+@Controller
+@RequestMapping( path = "/file" )
+public class FileUpload
+{
+    /**
+     * 接收上传文件,并保存到临时目录:
+     * 1、临时目录下再用sessionID作为子目录保存文件。
+     * 2、保存时不更改文件名,会覆盖同名文件。
+     * 3、MultipartFile参数形参名称必须和请求form中file标签的name属性一致,否则值为null。
+     * 4、返回值为接收结果和文件保存绝对路径。
+     * @param taskName 任务名称字符串
+     * @param files MultipartFile结构的文件对象
+     * @param request HttpServletRequest对象实例
+     * @return 返回一个FileUploadResult对象,包含上传结果。
+     */
+    @RequestMapping( path = "/file-upload.do" )
+    @ResponseBody
+    public FileUploadResult getUploadFile( @RequestParam( "task-name" ) String taskName,
+            @RequestParam( "files" ) MultipartFile file, HttpServletRequest request )
+    {
+        // session id用来创建临时目录,避免重复
+        String sessionID = request.getSession().getId();
+        FileUploadResult result = new FileUploadResult();
+        Vector fileNames = new Vector();
+
+        result.setSuccess( true );
+        result.setMessage( "上传成功!" );
+
+        String filePath = request.getServletContext().getRealPath( "/temp/upload/" + sessionID );
+        File dir = new File( filePath );
+
+        if ( !dir.mkdirs() )
+        {
+            
+        }
+
+        // 检查文件长度,如果为0则跳过
+        if ( file.isEmpty() )
+        {
+            result.setSuccess( false );
+            result.setMessage( "不允许上传空文件。" );
+        }
+        else
+        {
+            // 保存文件到临时目录
+            Long milliSecond =
+                    LocalDateTime.now().toInstant( ZoneOffset.of( "+8" ) ).toEpochMilli();
+            String fileName = String.valueOf( milliSecond ) + file.getOriginalFilename();
+            // String fileName = file.getOriginalFilename();
+            File destFile = new File( filePath, fileName );
+
+            try
+            {
+                file.transferTo( destFile );
+                // 把上传文件的绝对路径保存,返回给前端
+                fileNames.add( destFile.getAbsolutePath() );
+
+                result.setSuccess( true );
+                result.setMessage( "上传成功" );
+                result.setFileList( fileNames );
+            }
+            catch ( IOException error )
+            {
+                result.setSuccess( false );
+                result.setMessage( "上传失败,原因:" + error.getMessage() );
+            }
+        }
+
+        return result;
+    }
+}
diff --git a/code/backend/RegulatoryManagementBackend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUploadResult.java b/code/backend/RegulatoryManagementBackend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUploadResult.java
new file mode 100644
index 0000000..c21a96c
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUploadResult.java
@@ -0,0 +1,54 @@
+/*
+ * @Author: Kane
+ * @Date: 2023-01-23 22:56:17
+ * @LastEditors: Kane
+ * @LastEditTime: 2023-10-06 00:32:47
+ * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/FileUpload/FileUploadResult.java
+ * @Description: 
+ * 
+ * Copyright (c) ${2022} by Kane, All Rights Reserved. 
+ */
+
+package com.cpic.xim.web.controllers.fileupload;
+
+import java.util.Vector;
+import com.cpic.xim.web.controllers.QueryResponse;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@SuppressWarnings( "unused" )
+public class FileUploadResult extends QueryResponse
+{
+    public FileUploadResult()
+    {
+        super();
+    }
+
+    /**
+     * 构造函数
+     * @param success 是否上传成功
+     * @param message 消息字符串
+     * @param fileList 文件绝对路径字符串数组
+     */
+    public FileUploadResult( boolean success, 
+                             String message, 
+                             Vector fileList )
+    {
+        super( success, message );
+
+        this.fileList = fileList;
+    }
+
+    public Vector getFileList()
+    {
+        return fileList;
+    }
+
+    public void setFileList( Vector fileList )
+    {
+        this.fileList = fileList;
+    }
+
+    @JsonProperty( "fileList" )
+    private Vector fileList;
+}
+
diff --git a/code/backend/RegulatoryManagementBackend/src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java b/code/backend/RegulatoryManagementBackend/src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java
new file mode 100644
index 0000000..c1abfa0
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java
@@ -0,0 +1,66 @@
+/**
+ * @Author: Kane Wang 
+ * @Date: 2025-03-15 18:40:54
+ * @LastEditors: Kane Wang
+ * @LastModified: 2025-03-16 08:56:20
+ * @FilePath: src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java
+ * @Description:
+ * 
+ *               Copyright (c) 2025 by Kane All rights reserved
+ */
+package com.cpic.xim.web.filters.cros;
+
+import java.io.IOException;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpMethod;
+
+public class CrosFilter implements Filter
+{
+    private static Logger logger = LoggerFactory.getLogger( CrosFilter.class );
+
+    /**
+     * @param req
+     */
+    @Override
+    public void doFilter(
+            ServletRequest req,
+            ServletResponse resp,
+            FilterChain chain
+    )
+      throws ServletException,
+      IOException
+    {
+        HttpServletRequest  request      = ( HttpServletRequest ) req;
+        HttpServletResponse response     = ( HttpServletResponse ) resp;
+        String              method       = request.getMethod();
+        String              originHeader = request.getHeader( "Origin" );
+
+        logger.info( "收到" + method + "请求,来自" + originHeader );
+
+        // 如果是Options请求
+        if ( method.equals( HttpMethod.OPTIONS.toString() ) )
+        {
+            originHeader = "*";
+        }
+
+        response.setHeader( "Access-Control-Allow-Origin", originHeader );
+        response.setHeader( "Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT" );
+        response.setHeader( "Access-Control-Max-Age", "0" );
+        response.setHeader( "Access-Control-Allow-Headers",
+                            "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token" );
+        response.setHeader( "Access-Control-Allow-Credentials", "true" );
+        response.setHeader( "XDomainRequestAllowed", "1" );
+        response.setHeader( "XDomainRequestAllowed", "1" );
+
+        chain.doFilter( request, response );
+    }
+
+}
diff --git a/code/backend/RegulatoryManagementBackend/src/main/resources/log4j2.xml b/code/backend/RegulatoryManagementBackend/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..e99d2f7
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/resources/log4j2.xml
@@ -0,0 +1,40 @@
+
+    
+        
+            
+            
+        
+        
+            
+                [%t][%level][%d{HH:mm:ss.SSS}][%logger.%M{36}#%L] %msg%n
+            
+            
+                
+                
+                
+            
+        
+        
+            
+                [%t][%level][%d{HH:mm:ss.SSS}][%logger.%M{36}#%L] %msg%n
+            
+            
+                
+                
+                
+            
+        
+    
+    
+        
+        
+            
+            
+            
+        
+    
+
\ No newline at end of file
diff --git a/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/jdbc.properties b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/jdbc.properties
new file mode 100644
index 0000000..fe5e4da
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/jdbc.properties
@@ -0,0 +1,4 @@
+jdbc.oracle.driver=oracle.jdbc.driver.OracleDriver
+jdbc.oracle.xmcx1.url=jdbc:oracle:thin:@10.39.0.86:1521:xmcx1
+jdbc.oracle.xmcx1.username=desktop_archievement_admin
+jdbc.oracle.xmcx1.password=Cpic123456
\ No newline at end of file
diff --git a/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/ArchievementMapper.xml b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/ArchievementMapper.xml
new file mode 100644
index 0000000..539e8bd
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/ArchievementMapper.xml
@@ -0,0 +1,28 @@
+
+
+
+    
+    
+
+    
+        
+        
+    
+
\ No newline at end of file
diff --git a/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/ImportBIArchievementDataMapper.xml b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/ImportBIArchievementDataMapper.xml
new file mode 100644
index 0000000..ab92f80
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/ImportBIArchievementDataMapper.xml
@@ -0,0 +1,51 @@
+
+
+
+    
+        insert into BI电销坐席车非渗透率跟踪表 ( "部门","经办","车险保费(万)","车险保费占比","非车保费(万)",
+        "当月保费渗透率","保费渗透率环比上月","当月客户渗透率","客户渗透率环比上月",
+        "当月车非客均保费","客均保费环比上月" )
+        values ( #{departmentName}, #{telsalerName}, #{motoPremium}, #{motoPremiumProportion}, #{nomotoPremium}, 
+                 #{attachingRate},  #{attachingRateChange}, #{customerHandleRate},
+                 #{customerHandleRateChange}, #{noMotoPremiumPerCustomer}, #{noMotoPremiumPerCustomerChange} )
+    
+
+    
+        insert into "BI电销坐席续保率跟踪表-24年" ("责任部门","责任人","机构目标值1(%)","到期数-全月",
+                                         "序时到期数占比(%)","个车续保率(序时)(%)","个车续保率(全月)(%)",
+                                         "环比昨日(%)","环比上月(%)")
+        values (#{责任部门},#{责任人},#{机构目标值},#{到期数全月},#{序时到期数占比},
+        #{个车续保率序时},#{个车续保率全月},#{环比昨日},#{环比上月} )
+    
+
+    
+        insert into BI机构渗透率跟踪表 ( 部门,"目标值-机构",目标差距,"车险保费",
+        车险保费占比,"非车保费",当月保费渗透率,保费渗透率环比上月,当月客户渗透率,
+        客户渗透率环比上月,当月车非客均保费,客均保费环比上月,车险客户数)
+        values (#{departmentName},#{departmentObject},#{objectGap},#{motoPremium},
+        #{motoPremiumProPortion},#{nomotoPremium},#{attachingRate},#{attachingRateChange},
+        #{customerHandleRate},#{customerHandleRateChange},#{premiumPerCustomer},#{premiumPerCustomerChange},
+        #{motoInsuranceCustomerCount} )
+    
+
+    
+        insert into "BI机构续保率跟踪表-24年"( "责任部门","机构目标值1(%)","到期数-全月" ,"序时到期数占比(%)","个车续保率(序时)(%)",
+        "个车续保率(全月)(%)","环比昨日(%)","环比上月(%)")
+        values (#{责任部门},#{机构目标值},#{到期数全月},#{序时到期数占比},
+        #{个车续保率序时},#{个车续保率全月},#{环比昨日},#{环比上月} )
+    
+
+    
+    
+    
+
+    
+
\ No newline at end of file
diff --git a/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/QueryBIArchievementDataMapper.xml b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/QueryBIArchievementDataMapper.xml
new file mode 100644
index 0000000..b28207d
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/QueryBIArchievementDataMapper.xml
@@ -0,0 +1,120 @@
+
+
+
+    
+    
+    
+    
+    
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+    
+
+    
+    
+    
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+    
+
+    
+    
+    
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+    
+
+    
+    
+    
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+    
+
\ No newline at end of file
diff --git a/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/RankingListMapper.xml b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/RankingListMapper.xml
new file mode 100644
index 0000000..f066f9f
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/RankingListMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+    
+    
+        
+        
+        
+    
+    
+        
+        
+        
+    
+
\ No newline at end of file
diff --git a/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/RewardsMapper.xml b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/RewardsMapper.xml
new file mode 100644
index 0000000..28ebbd8
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/RewardsMapper.xml
@@ -0,0 +1,50 @@
+
+
+
+    
+    
+        
+        
+    
+
+    
+    
+        
+        
+        
+        
+        
+    
+
+    
+
+    
+    
+
+    
+    
+
\ No newline at end of file
diff --git a/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/StaffMapper.xml b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/StaffMapper.xml
new file mode 100644
index 0000000..e21c614
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/StaffMapper.xml
@@ -0,0 +1,37 @@
+
+
+
+     
+     
+          
+          
+          
+          
+          
+          
+          
+          
+     
+
\ No newline at end of file
diff --git a/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/TWrTelsalerMapper.xml b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/TWrTelsalerMapper.xml
new file mode 100644
index 0000000..ee55c6c
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mapper/TWrTelsalerMapper.xml
@@ -0,0 +1,164 @@
+
+
+
+    
+    
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+    
+
+     
+    
+        insert into TWR_TELSALER_DEV(
+            人员姓名,
+            人员工号,
+            籍贯,
+            参加工作时间,
+            入职日期,
+            入司日期,
+            业务类型,
+            办公地省,
+            办公地市,
+            人员类别,
+            现任岗位,
+            现任职级,
+            机构名称,
+            职场分类,
+            片区名称,
+            团队名称,
+            对口分公司,
+            展业地区,
+            招聘渠道,
+            渠道明细,
+            全日制最高学历,
+            学历类型,
+            用工性质名称,
+            合同种类,
+            合同类型,
+            合同性质,
+            合同签订次数,
+            合同生效日期,
+            合同到期日期,
+            人员属性,
+            保代员工号,
+            职场属性,
+            办公性质,
+            保代人员属性,
+            人员状态)
+        values (
+            #{人员姓名},
+            #{人员工号},
+            #{籍贯},
+            #{参加工作时间},
+            #{入职日期},
+            #{入司日期},
+            #{业务类型},
+            #{办公地省},
+            #{办公地市},
+            #{人员类别},
+            #{现任岗位},
+            #{现任职级},
+            #{机构名称},
+            #{职场分类},
+            #{片区名称},
+            #{团队名称},
+            #{对口分公司},
+            #{展业地区},
+            #{招聘渠道},
+            #{渠道明细},
+            #{全日制最高学历},
+            #{学历类型},
+            #{用工性质名称},
+            #{合同种类},
+            #{合同类型},
+            #{合同性质},
+            #{合同签订次数},
+            #{合同生效日期},
+            #{合同到期日期},
+            #{人员属性},
+            #{保代员工号},
+            #{职场属性},
+            #{办公性质},
+            #{保代人员属性},
+            #{人员状态} )
+    
+
+    
+
+    
+
\ No newline at end of file
diff --git a/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mybatis-config.xml b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mybatis-config.xml
new file mode 100644
index 0000000..39eba52
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/resources/mybatis/mybatis-config.xml
@@ -0,0 +1,39 @@
+
+
+
+    
+
+    
+		
+		
+	
+
+    
+    
+        
+        
+    
+
+    
+        
+            
+            
+                
+                
+                
+                
+            
+        
+    
+    
+    
+        
+        
+        
+        
+        
+        
+         
+    
+
+
\ No newline at end of file
diff --git a/code/backend/RegulatoryManagementBackend/src/main/webapp/WEB-INF/classes/spring.xml b/code/backend/RegulatoryManagementBackend/src/main/webapp/WEB-INF/classes/spring.xml
new file mode 100644
index 0000000..a349f68
--- /dev/null
+++ b/code/backend/RegulatoryManagementBackend/src/main/webapp/WEB-INF/classes/spring.xml
@@ -0,0 +1,37 @@
+
+
+    
+    
+    
+
+    
+
+    
+        
+        
+    
+
+
\ No newline at end of file
diff --git a/code/backend/RegulatoryManagementBackend/src/main/webapp/WEB-INF/web.xml b/code/backend/RegulatoryManagementBackend/src/main/webapp/WEB-INF/web.xml
index b9c921f..f5c2aef 100644
--- a/code/backend/RegulatoryManagementBackend/src/main/webapp/WEB-INF/web.xml
+++ b/code/backend/RegulatoryManagementBackend/src/main/webapp/WEB-INF/web.xml
@@ -1,10 +1,39 @@
 
 
+  version="4.0"
+  xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+  xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
+  xmlns:xml="http://www.w3.org/XML/1998/namespace"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
+  
   Archetype Created Web Application
-
+
+  
+    springmvc
+    org.springframework.web.servlet.DispatcherServlet
+    
+      contextConfigLocation
+      classpath:spring.xml
+    
+    1
+  
+  
+    springmvc
+    *.do
+  
+  
+    springmvc
+    /account/p13_account_check
+  
+
+  
+    CrosFilter
+    com.cpic.xim.web.filters.cros.CrosFilter
+  
+  
+    CrosFilter
+    *
+  
+
+
\ No newline at end of file