From 2c24f787f28e85af3a7f89e4277063e9a2523909 Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期四, 09 一月 2025 17:25:33 +0800
Subject: [PATCH] 两网融合部分

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ExportToXmlJob.java                                       |   63 +
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/FileDetail.java                      |   13 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/RespData.java                        |   19 
 lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java                                         |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml              |    4 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/util/FileUtils.java                     |  195 +++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java      |    5 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/util/SM3Util.java                       |   71 ++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcPassLogMapper.xml         |    8 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/ILogTableService.java                                 |   22 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcPassLogMapper.java            |   20 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/PostParams.java                      |   14 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/LogTable.java                                          |   39 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java                 |    2 
 lxzn-module-mdc/src/test/java/org/lxzn/TestOne.java                                                               |   79 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/LogTableMapper.xml                                 |    5 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java              |    9 
 lxzn-boot-base-core/pom.xml                                                                                       |   12 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcPassLogService.java         |   19 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java               |    6 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/LogTableServiceImpl.java                         |  219 ++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/TransferTableDataJob.java                                 |    7 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/api/controller/SystemApiController.java        |  345 +++++++--
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java       |   36 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/TokenResp.java                       |   21 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java                                           |   19 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/LogTableMapper.java                                    |   11 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/FileClient.java                                          |  227 ++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/SqlExecutor.java                                         |   29 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/SyslogClient.java                                        |   51 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentRunningSectionController.java          |   10 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentRunningSectionDto.java                        |   45 +
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/SysLogTypeObjectDto.java             |   61 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java              |   37 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/MdcPassLog.java                  |   62 +
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/util/JwTUtil.java                       |   48 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml               |    1 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ImportXmlToDataJob.java                                   |   62 +
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcPassLogServiceImpl.java |   26 
 39 files changed, 1,806 insertions(+), 118 deletions(-)

diff --git a/lxzn-boot-base-core/pom.xml b/lxzn-boot-base-core/pom.xml
index d956bcc..5f93651 100644
--- a/lxzn-boot-base-core/pom.xml
+++ b/lxzn-boot-base-core/pom.xml
@@ -219,6 +219,18 @@
 			<groupId>com.fasterxml.jackson.module</groupId>
 			<artifactId>jackson-module-kotlin</artifactId>
 		</dependency>
+		<!--鍥藉瘑绠楁硶鍔犲瘑-->
+		<dependency>
+			<groupId>org.bouncycastle</groupId>
+			<artifactId>bcprov-jdk15to18</artifactId>
+			<version>1.64</version>
+		</dependency>
+		<!--鏃ュ織绯荤粺-->
+		<dependency>
+			<groupId>org.graylog2</groupId>
+			<artifactId>syslog4j</artifactId>
+			<version>0.9.60</version>
+		</dependency>
 	</dependencies>
 
 </project>
\ No newline at end of file
diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
index 5aeb5ce..8e49670 100644
--- a/lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
+++ b/lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
@@ -98,6 +98,8 @@
         filterChainDefinitionMap.put("/sys/getLoginQrcode/**", "anon"); //鐧诲綍浜岀淮鐮�
         filterChainDefinitionMap.put("/sys/getQrcodeToken/**", "anon"); //鐩戝惉鎵爜
         filterChainDefinitionMap.put("/sys/checkAuth", "anon"); //鎺堟潈鎺ュ彛鎺掗櫎
+        filterChainDefinitionMap.put("/sys/api/appAuth", "anon"); //缃戦椄璁よ瘉鎺ュ彛鎺掗櫎
+        filterChainDefinitionMap.put("/sys/api/fileUpload", "anon"); //缃戦椄涓婁紶鏂囦欢鎺ュ彛鎺掗櫎
 
 
         filterChainDefinitionMap.put("/", "anon");
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentRunningSectionController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentRunningSectionController.java
index fff036f..31ba8db 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentRunningSectionController.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentRunningSectionController.java
@@ -4,11 +4,14 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.mdc.dto.EquipmentMachingDto;
 import org.jeecg.modules.mdc.dto.MdcEquipmentRunningSectionDto;
 import org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection;
+import org.jeecg.modules.mdc.entity.MdcNoplanClose;
 import org.jeecg.modules.mdc.service.IMdcEquipmentRunningSectionService;
 import org.jeecg.modules.mdc.service.IMdcEquipmentWorkLineService;
 import org.jeecg.modules.mdc.vo.MdcEquipmentRunningSectionVo;
@@ -16,8 +19,10 @@
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.ModelAndView;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
 
@@ -56,6 +61,11 @@
         }
     }
 
+    @RequestMapping(value = "/exportLogXls")
+    public ModelAndView exportXls(HttpServletRequest request, MdcEquipmentRunningSectionVo equipmentRunningSectionVo) {
+        return equipmentRunningSectionService.exportXls(equipmentRunningSectionVo);
+    }
+
     @ApiOperation(value = "璁惧鏃ュ織-鍘嗗彶鏌ヨ", notes = "璁惧鏃ュ織-鍘嗗彶鏌ヨ")
     @GetMapping("/logCharts")
     public Result<List<Map<String, Object>>> logCharts(MdcEquipmentRunningSectionVo equipmentRunningSectionVo){
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentRunningSectionDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentRunningSectionDto.java
index 62226ab..15dc7af 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentRunningSectionDto.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentRunningSectionDto.java
@@ -1,6 +1,10 @@
 package org.jeecg.modules.mdc.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.jeecg.modules.mdc.util.DateUtils;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
@@ -13,20 +17,41 @@
 
     /*搴忓彿*/
     private String id;
+
+    /*鐘舵��,0:鍏虫満,1:寮�鏈�,2:寰呮満,3:宸ヤ綔,22:鎶ヨ*/
+    @Excel(name = "鐘舵��", width = 15, replace={"鍏虫満_0","寮�鏈篲1","寰呮満_2","宸ヤ綔_3","鎶ヨ_22"})
+    private Integer status;
+
+    /*寮�濮嬫椂闂�*/
+    @Excel(name = "寮�濮嬫椂闂�", width = 24, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    private Date startTime;
+
+    /*缁撴潫鏃堕棿*/
+    @Excel(name = "缁撴潫鏃堕棿", width = 24, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+
+    /*鎸佺画鏃堕棿*/
+    @Excel(name = "鎸佺画鏃堕棿", width = 24, exportConvert = true)
+    private Long duration;
+
+    //绋嬪簭鍙�
+    @Excel(name = "绋嬪簭鍙�", width = 20)
+    private String sequenceNumber;
+
     /*璁惧*/
     private String equipmentId;
-    /*寮�濮嬫椂闂�*/
-    private Date startTime;
-    /*缁撴潫鏃堕棿*/
-    private Date endTime;
-    /*鏃堕暱*/
-    private Long duration;
-    /*鐘舵��,0:鍏虫満,1:寮�鏈�,2:寰呮満,3:宸ヤ綔,22:鎶ヨ*/
-    private Integer status;
+
     /*鎶ヨ*/
     private String alarm;
     /*浼垪 鎶ヨ鍐呭*/
     private String alarmContent;
-    //绋嬪簭鍙�
-    private String sequenceNumber;
+
+    public String convertgetDuration(){
+        return DateUtils.secondsToTime(this.duration.intValue());
+    }
+
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/LogTable.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/LogTable.java
new file mode 100644
index 0000000..d522be5
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/LogTable.java
@@ -0,0 +1,39 @@
+package org.jeecg.modules.mdc.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author Lius
+ * @date 2024/12/18 14:19
+ */
+@Data
+@TableName("log_table")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "log_table瀵硅薄", description = "sql璁板綍琛�")
+public class LogTable implements Serializable {
+
+    private static final long serialVersionUID = 953864495681756550L;
+
+    /**
+     * 鎿嶄綔绫诲瀷锛圛NSERT / UPDATE / DELETE锛�
+     */
+    private String action;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date createTime;
+
+    /**
+     * sql璁板綍
+     */
+    private String sqlLog;
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ExportToXmlJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ExportToXmlJob.java
new file mode 100644
index 0000000..544d4f1
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ExportToXmlJob.java
@@ -0,0 +1,63 @@
+package org.jeecg.modules.mdc.job;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.mdc.service.ILogTableService;
+import org.jeecg.modules.mdc.util.ThrowableUtil;
+import org.jeecg.modules.quartz.entity.QuartzJob;
+import org.jeecg.modules.quartz.entity.SysQuartzLog;
+import org.jeecg.modules.quartz.service.IQuartzJobService;
+import org.jeecg.modules.quartz.service.ISysQuartzLogService;
+import org.jeecg.modules.system.service.ISysAnnouncementService;
+import org.quartz.*;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 瀵煎嚭sql璁板綍鍒皒ml鏂囦欢浠诲姟
+ * @author Lius
+ * @date 2024/12/18 14:53
+ */
+@PersistJobDataAfterExecution
+@DisallowConcurrentExecution
+@Slf4j
+public class ExportToXmlJob implements Job {
+
+    @Resource
+    private ISysQuartzLogService sysQuartzLogService;
+
+    @Resource
+    private IQuartzJobService quartzJobService;
+
+    @Resource
+    private ISysAnnouncementService sysAnnouncementService;
+
+    @Resource
+    private ILogTableService logTableService;
+
+    @Override
+    public void execute(JobExecutionContext context) throws JobExecutionException {
+        SysQuartzLog quartzLog = new SysQuartzLog();
+        quartzLog.setCreateTime(new Date());
+        List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName());
+        if (byJobClassName != null && !byJobClassName.isEmpty()) {
+            quartzLog.setJobId(byJobClassName.get(0).getId());
+        }
+        log.info("瀹氭椂瀵煎嚭鍚屾鏁版嵁琛╯ql浠诲姟 ExportToXmlJob start!  鏃堕棿:" + DateUtils.now());
+        long startTime = System.currentTimeMillis();
+        try {
+            logTableService.exportDataToXml();
+            quartzLog.setIsSuccess(0);
+        } catch (Exception e) {
+            quartzLog.setIsSuccess(-1);
+            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
+            // 鍙戦�佹秷鎭�氱煡
+            sysAnnouncementService.jobSendMessage("瀹氭椂瀵煎嚭鍚屾鏁版嵁琛╯ql浠诲姟", quartzLog.getExceptionDetail());
+        }
+        long endTime = System.currentTimeMillis();
+        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+        sysQuartzLogService.save(quartzLog);
+    }
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ImportXmlToDataJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ImportXmlToDataJob.java
new file mode 100644
index 0000000..2dee55d
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ImportXmlToDataJob.java
@@ -0,0 +1,62 @@
+package org.jeecg.modules.mdc.job;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.mdc.service.ILogTableService;
+import org.jeecg.modules.mdc.util.ThrowableUtil;
+import org.jeecg.modules.quartz.entity.QuartzJob;
+import org.jeecg.modules.quartz.entity.SysQuartzLog;
+import org.jeecg.modules.quartz.service.IQuartzJobService;
+import org.jeecg.modules.quartz.service.ISysQuartzLogService;
+import org.jeecg.modules.system.service.ISysAnnouncementService;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author Lius
+ * @date 2024/12/19 16:43
+ */
+@Slf4j
+public class ImportXmlToDataJob implements Job {
+
+    @Resource
+    private ISysQuartzLogService sysQuartzLogService;
+
+    @Resource
+    private IQuartzJobService quartzJobService;
+
+    @Resource
+    private ISysAnnouncementService sysAnnouncementService;
+
+    @Resource
+    private ILogTableService logTableService;
+
+    @Override
+    public void execute(JobExecutionContext context) throws JobExecutionException {
+        SysQuartzLog quartzLog = new SysQuartzLog();
+        quartzLog.setCreateTime(new Date());
+        List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName());
+        if (byJobClassName != null && !byJobClassName.isEmpty()) {
+            quartzLog.setJobId(byJobClassName.get(0).getId());
+        }
+        log.info("瀹氭椂瀵煎叆sql鏁版嵁浠诲姟 ImportXmlToDataJob start!  鏃堕棿:" + DateUtils.now());
+        long startTime = System.currentTimeMillis();
+        try {
+            logTableService.importXmlToData();
+            quartzLog.setIsSuccess(0);
+        } catch (Exception e) {
+            quartzLog.setIsSuccess(-1);
+            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
+            // 鍙戦�佹秷鎭�氱煡
+            sysAnnouncementService.jobSendMessage("瀹氭椂瀵煎叆sql鏁版嵁浠诲姟", quartzLog.getExceptionDetail());
+        }
+        long endTime = System.currentTimeMillis();
+        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+        sysQuartzLogService.save(quartzLog);
+    }
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/TransferTableDataJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/TransferTableDataJob.java
index 2bc6d5f..741b5b1 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/TransferTableDataJob.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/TransferTableDataJob.java
@@ -62,11 +62,8 @@
                     if (StringUtils.isNotBlank(tableName)) {
                         String backupTableName = equipmentService.checkTableExists(equipment.getSavetablename() + "_backup");
                         if (StringUtils.isNotBlank(backupTableName)) {
-                            Integer num = equipmentService.checkTableDataNum(equipment.getSavetablename(), day);
-                            if (num > 0) {
-                                equipmentService.insertTableData(backupTableName, tableName, day);
-                                equipmentService.deleteTableData(tableName, day);
-                            }
+                            equipmentService.insertTableData(backupTableName, tableName, day);
+                            equipmentService.deleteTableData(tableName, day);
                         } else {
                             //澶囦唤琛ㄤ笉瀛樺湪鍒涘缓澶囦唤琛ㄥ苟杩佺Щ鏁版嵁
                             equipmentService.insertNoTableData(tableName + "_backup", tableName, day);
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/LogTableMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/LogTableMapper.java
new file mode 100644
index 0000000..98cc17f
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/LogTableMapper.java
@@ -0,0 +1,11 @@
+package org.jeecg.modules.mdc.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.mdc.entity.LogTable;
+
+/**
+ * @author Lius
+ * @date 2024/12/18 14:24
+ */
+public interface LogTableMapper extends BaseMapper<LogTable>  {
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java
index 3815783..c63deec 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java
@@ -25,4 +25,6 @@
      * @return
      */
     Integer selectProcessLong(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
+
+    MdcEquipmentStatisticalInfo findMdcEquipmentStatisticalInfo(@Param("equipmentId") String equipmentId, @Param("data") String data);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/LogTableMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/LogTableMapper.xml
new file mode 100644
index 0000000..3d79dd7
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/LogTableMapper.xml
@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.mdc.mapper.LogTableMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml
index a2b6082..fdd58e4 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml
@@ -38,6 +38,7 @@
             mdc_equipment_running_section
         WHERE
             equipment_id = #{ equipmentId }
+            AND status <![CDATA[ <> ]]> '22'
             AND  (start_long &lt;= #{ endLong } AND end_long &gt;= #{ startLong })
         ORDER BY
             start_time
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml
index e5d1c6b..dc24767 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml
@@ -12,4 +12,8 @@
     <select id="selectProcessLong" resultType="java.lang.Integer">
         SELECT TOP 1 process_long FROM mdc_equipment_statistical_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate}
     </select>
+
+    <select id="findMdcEquipmentStatisticalInfo" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo">
+        SELECT TOP 1 * FROM mdc_equipment_statistical_info WHERE equipment_id = #{equipmentId} AND the_date = #{data}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/ILogTableService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/ILogTableService.java
new file mode 100644
index 0000000..1a1a791
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/ILogTableService.java
@@ -0,0 +1,22 @@
+package org.jeecg.modules.mdc.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.mdc.entity.LogTable;
+
+/**
+ * @author Lius
+ * @date 2024/12/18 14:29
+ */
+public interface ILogTableService extends IService<LogTable> {
+
+    /**
+     * 瀵煎嚭鍚屾鏁版嵁琛╯ql鍒皒ml鏂囦欢涓婁紶鍒扮綉闂告湇鍔″櫒
+     */
+    void exportDataToXml();
+
+    /**
+     * 瀵煎叆鍚屾鏁版嵁sql鎵ц鍒版暟鎹簱
+     */
+    void importXmlToData();
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java
index f326ac6..88cde49 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java
@@ -6,6 +6,7 @@
 import org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection;
 import org.jeecg.modules.mdc.vo.MdcAlarmAnalyzeQueryVo;
 import org.jeecg.modules.mdc.vo.MdcEquipmentRunningSectionVo;
+import org.springframework.web.servlet.ModelAndView;
 
 import java.util.Date;
 import java.util.List;
@@ -88,4 +89,9 @@
 
     List<Integer> getDataList(String equipmentId, Date date);
 
+    /**
+     * 瀵煎嚭
+     */
+    ModelAndView exportXls(MdcEquipmentRunningSectionVo equipmentRunningSectionVo);
+
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java
index 51d56e6..953b23f 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java
@@ -26,4 +26,13 @@
      * @return
      */
     Integer selectProcessLong(String equipmentId, String validDate);
+
+    /**
+     * 鏍规嵁璁惧缂栧彿鍜屾棩鏈熸煡璇㈣繍琛屾暟鎹�
+     *
+     * @param equipmentId
+     * @param date
+     * @return
+     */
+    MdcEquipmentStatisticalInfo findMdcEquipmentStatisticalInfo(String equipmentId, String date);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/LogTableServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/LogTableServiceImpl.java
new file mode 100644
index 0000000..c9c68b1
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/LogTableServiceImpl.java
@@ -0,0 +1,219 @@
+package org.jeecg.modules.mdc.service.impl;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.file.FileReader;
+import cn.hutool.core.io.file.FileWriter;
+import cn.hutool.core.net.NetUtil;
+import cn.hutool.crypto.SmUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import me.zhyd.oauth.log.Log;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.modules.mdc.util.SqlExecutor;
+import org.jeecg.modules.system.vo.SysLogTypeObjectDto;
+import org.jeecg.modules.mdc.entity.LogTable;
+import org.jeecg.modules.system.entity.MdcPassLog;
+import org.jeecg.modules.mdc.mapper.LogTableMapper;
+import org.jeecg.modules.mdc.service.ILogTableService;
+import org.jeecg.modules.system.service.IMdcPassLogService;
+import org.jeecg.modules.mdc.util.DateUtils;
+import org.jeecg.modules.mdc.util.FileClient;
+import org.jeecg.modules.system.util.FileUtils;
+import org.jeecg.modules.mdc.util.SyslogClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.net.InetAddress;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author Lius
+ * @date 2024/12/18 14:29
+ */
+@Service
+public class LogTableServiceImpl extends ServiceImpl<LogTableMapper, LogTable> implements ILogTableService {
+
+    @Value("${fileService.localFilePath}")
+    private String localFilePath;
+
+    @Value("${fileService.servicePath}")
+    private String servicePath;
+
+    @Value("${fileService.host}")
+    private String host;
+
+    @Value("${fileService.port}")
+    private String port;
+
+    @Value("${fileService.username}")
+    private String username;
+
+    @Value("${fileService.pwd}")
+    private String pwd;
+
+    @Value("${fileService.addressToken}")
+    private String addressToken;
+
+    @Value("${fileService.addressUploadFile}")
+    private String addressUploadFile;
+
+    @Value("${fileService.logIp}")
+    private String logIp;
+
+    @Value("${fileService.logPort}")
+    private String logPort;
+
+    @Value("${fileService.newFilePath}")
+    private String newFilePath;
+
+    @Resource
+    private IMdcPassLogService mdcPassLogService;
+
+    private static final String TYPE = "01";
+
+    @Resource
+    private SqlExecutor sqlExecutor;
+
+
+    /**
+     * 瀵煎嚭鍚屾鏁版嵁琛╯ql鍒皒ml鏂囦欢
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void exportDataToXml() {
+        // step.1 鏌ヨ鏈�鏂版暟鎹� 鏃堕棿姝e簭鎺掑垪
+        List<LogTable> logTables = this.baseMapper.selectList(new LambdaQueryWrapper<LogTable>().orderByAsc(LogTable::getCreateTime));
+        if (logTables != null && !logTables.isEmpty()) {
+
+            // step.2 澶勭悊鏁版嵁
+            List<String> sqlList = logTables.stream().map(LogTable::getSqlLog).collect(Collectors.toList());
+
+            // step.3 鍐欏叆鏂囦欢
+            // step.3.1 鏂囦欢鍛藉悕
+            String today = DateUtils.format(DateUtils.getNow(), DateUtils.STRDATE);
+            MdcPassLog mdcPassLogLast = mdcPassLogService.selectTodayLast(today);
+            int sequenceNumber = 1;
+            if (mdcPassLogLast != null) {
+                sequenceNumber = mdcPassLogLast.getSequenceNumber() + 1;
+            }
+
+            // 鏂囦欢璺緞
+            String locFilePath = localFilePath + TYPE + today + String.format("%06d", sequenceNumber) + ".xml";
+            FileWriter writer = new FileWriter(locFilePath);
+            writer.writeLines(sqlList);
+
+            // step.4 鎺ㄩ�佺綉闂�
+            // step.4.1 娴嬭瘯鏈嶅姟鍣ㄨ繛閫氭��
+            boolean ping = NetUtil.ping(host + ":" + port);
+            if (!ping) {
+                FileUtil.del(locFilePath);
+                throw new JeecgBootException("鏈嶅姟鍣ㄨ繛鎺ワ細 " + host + ":" + port + " 寮傚父锛�");
+            }
+
+            // step.4.2 鑾峰彇token
+            String token = "";
+            try {
+                token = FileClient.getToken(host, port, username, pwd, addressToken);
+            } catch (Throwable e) {
+                throw new JeecgBootException("鑾峰彇token澶辫触锛�");
+            }
+
+            // step 4.3 璋冪敤鏂囦欢涓婁紶鎺ュ彛
+            if (StringUtils.isNotBlank(token)) {
+                try {
+                    File[] files = FileUtil.ls(localFilePath);
+                    for (File file : files) {
+                        if (file.isFile()) {
+                            SysLogTypeObjectDto objectName = new SysLogTypeObjectDto();
+
+                            objectName.setDateTime(DateUtils.format(DateUtils.getNow(), DateUtils.STR_DATE_TIME_SMALL));
+                            objectName.setFileName(file.getName());
+                            objectName.setFileSize(FileUtils.changeFileFormatKb(String.valueOf(new File(localFilePath).length())));
+                            objectName.setSourceAddress(localFilePath);
+                            String sm3 = SmUtil.sm3(file);
+                            objectName.setAbstract1(sm3);
+                            //椤哄簭鍙�
+                            String fileName = file.getName();
+                            String sequenceOrder = fileName.substring(fileName.length() - 10, fileName.length() - 4);
+                            String dayTime = fileName.substring(fileName.length() - 18, fileName.length() - 10);
+                            int sequenceNum = Integer.parseInt(sequenceOrder);
+                            objectName.setFileNum(Integer.toString(sequenceNum));
+                            // 鎻掑叆浼犺緭鏃ュ織
+                            MdcPassLog mdcPassLog = new MdcPassLog();
+                            mdcPassLog.setPassLogFileName(file.getAbsolutePath());
+                            mdcPassLog.setPassName(fileName);
+                            mdcPassLog.setDayTime(dayTime);
+                            mdcPassLog.setSequenceNumber(sequenceNum);
+                            mdcPassLog.setSequenceOrder(sequenceOrder);
+                            mdcPassLogService.save(mdcPassLog);
+
+                            String ip = InetAddress.getLocalHost().getHostAddress();
+                            if (StringUtils.isBlank(ip)) {
+                                objectName.setSourceAddress("10.118.10.62");
+                                objectName.setAddress("10.118.10.62");
+                            } else {
+                                objectName.setSourceAddress(ip);
+                                objectName.setAddress(ip);
+                            }
+
+                            objectName.setDestination(host);
+                            objectName.setResult("澶辫触");
+                            // 鏈湴鏂囦欢璺緞
+                            String loFilePath = localFilePath + "\\" + file.getName();
+                            // 鐩爣鏂囦欢璺緞
+                            String servicePathName = servicePath + "\\" + file.getName();
+                            String result = FileClient.uploadFile(host, port, token, file.getName(), servicePathName, loFilePath, addressUploadFile);
+                            if ("鎴愬姛".equals(result)) {
+                                FileUtil.del(loFilePath);
+                                objectName.setResult("鎴愬姛");
+                                SyslogClient.sendClient(logIp, Integer.valueOf(logPort), objectName.toString());
+                            } else {
+                                objectName.setResult(result);
+                                objectName.setTypes("error");
+                                SyslogClient.sendClient(logIp, Integer.valueOf(logPort), objectName.toString());
+                            }
+                        }
+                    }
+                } catch (Throwable e) {
+                    throw new JeecgBootException("璋冪敤鏂囦欢涓婁紶鎺ュ彛澶辫触锛�");
+                }
+            }
+
+            // step.5 鍒犻櫎宸茬粡鍐欏叆鏂囦欢骞跺彂閫佽嚦缃戦椄鐨勬暟鎹�
+            // step.5.1 鍒犻櫎鏁版嵁搴撴暟鎹�
+            this.baseMapper.delete(new LambdaQueryWrapper<LogTable>().le(LogTable::getCreateTime, logTables.get(logTables.size() - 1).getCreateTime()));
+
+        }
+    }
+
+    /**
+     * 瀵煎叆鍚屾鏁版嵁sql鎵ц鍒版暟鎹簱
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void importXmlToData() {
+        File[] files = FileUtil.ls(localFilePath);
+        for (File file : files) {
+            if (file.isFile()) {
+                String loFilePath = localFilePath + "\\" + file.getName();
+                FileReader fileReader = new FileReader(loFilePath);
+                String sqlList = fileReader.readString();
+                try {
+                    sqlExecutor.execute(sqlList);
+                } catch (Exception e) {
+                    throw new JeecgBootException("鎵цsql澶辫触锛�");
+                }
+                // 澶囦唤
+                FileUtil.move(new File(loFilePath), new File(newFilePath + "\\" + file.getName()), true);
+            }
+        }
+    }
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
index c8dd286..b5ef548 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
@@ -54,6 +54,9 @@
     @Resource
     private IMdcEquipmentRunningSectionService mdcEquipmentRunningSectionService;
 
+    @Resource
+    private IMdcEquipmentStatisticalInfoService mdcEquipmentStatisticalInfoService;
+
     /**
      * 鍒╃敤鐜囨姤琛�
      *
@@ -1696,10 +1699,7 @@
 
                     List<MdcUtilizationResultDto> list = new ArrayList<>();
                     for (String date : dateList) {
-                        Date startTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL);
-                        Date endTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL);
-                        endTime = DateUtils.addDays(endTime, 1);
-                        list.add(this.utilizationRate(mdcEquDepDto.getEquipmentId(), mdcEquDepDto.getEquipmentName(), mdcEquDepDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList));
+                        list.add(this.utilizationRateTrend(mdcEquDepDto.getEquipmentId(), mdcEquDepDto.getEquipmentName(), mdcEquDepDto.getEquipmentType(), date, mdcUtilizationRateList));
                     }
                     mdcEfficiencyListDto.setDataList(list);
                     listDtos.add(mdcEfficiencyListDto);
@@ -1716,10 +1716,7 @@
                     mdcEfficiencyListDto.setEquipmentType(mdcEquProDto.getEquipmentType());
                     List<MdcUtilizationResultDto> list = new ArrayList<>();
                     for (String date : dateList) {
-                        Date startTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL);
-                        Date endTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL);
-                        endTime = DateUtils.addDays(endTime, 1);
-                        list.add(this.utilizationRate(mdcEquProDto.getEquipmentId(), mdcEquProDto.getEquipmentName(), mdcEquProDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList));
+                        list.add(this.utilizationRateTrend(mdcEquProDto.getEquipmentId(), mdcEquProDto.getEquipmentName(), mdcEquProDto.getEquipmentType(), date, mdcUtilizationRateList));
                     }
                     mdcEfficiencyListDto.setDataList(list);
                     listDtos.add(mdcEfficiencyListDto);
@@ -1731,6 +1728,30 @@
         return result;
     }
 
+    private MdcUtilizationResultDto utilizationRateTrend(String equipmentId, String equipmentName, String equipmentType, String date, List<MdcUtilizationRate> mdcUtilizationRateList) {
+        MdcUtilizationResultDto dto = new MdcUtilizationResultDto();
+        dto.setEquipmentId(equipmentId);
+        dto.setEquipmentName(equipmentName);
+        dto.setEquipmentType(equipmentType);
+        dto.setTheDate(date);
+        MdcEquipmentStatisticalInfo mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findMdcEquipmentStatisticalInfo(equipmentId, date);
+        if (mdcEquipmentStatisticalInfo != null) {
+            dto.setUtilizationRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("86400"), 6, RoundingMode.HALF_UP));
+        } else {
+            dto.setUtilizationRate(new BigDecimal("0"));
+        }
+        long rate = dto.getUtilizationRate().multiply(new BigDecimal("100")).longValue();
+        for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) {
+            if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) {
+                dto.setColor(mdcUtilizationRate.getRateParameterColor());
+            }
+        }
+        if (StringUtils.isBlank(dto.getColor())) {
+            dto.setColor(mdcUtilizationRateList.get(mdcUtilizationRateList.size() - 1).getRateParameterColor());
+        }
+        return dto;
+    }
+
     @Override
     public List<BigDecimal> getEfficiencyRate(String equipmentId, String date) {
         return mdcEfficiencyReportMapper.getEfficiencyRate(equipmentId, date);
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java
index 749ce8d..d1ec752 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java
@@ -3,7 +3,9 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.vo.DictModel;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.mdc.dto.EquipmentMachingDto;
 import org.jeecg.modules.mdc.dto.MdcAlarmListDto;
 import org.jeecg.modules.mdc.dto.MdcEquipmentRunningSectionDto;
@@ -15,9 +17,13 @@
 import org.jeecg.modules.mdc.vo.MdcAlarmAnalyzeQueryVo;
 import org.jeecg.modules.mdc.vo.MdcEquipmentRunningSectionVo;
 import org.jeecg.modules.system.service.ISysDictService;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.servlet.ModelAndView;
 
 import javax.annotation.Resource;
 import java.util.*;
@@ -99,17 +105,6 @@
                         }
                     }
                 }
-//                Set<TmpEquipmentAlarm> set = entity.getTmpEquipmentAlarmSet();
-//                if (entity.getStatus() == 22 && set != null && !set.isEmpty()) {
-//                    Iterator<TmpEquipmentAlarm> iterator = entity.getTmpEquipmentAlarmSet().iterator();
-//                    //鑾峰彇鎶ヨ缂栧彿鐩稿悓鐨勬姤璀︿俊鎭�
-//                    while (iterator.hasNext()) {
-//                        TmpEquipmentAlarm next = iterator.next();
-//                        if (StringUtils.isNotBlank(next.getAlarmNo()) && next.getAlarmNo().equals(entity.getStatus())) {
-//                            dto.setAlarmContent(next.getAlarmContent());
-//                        }
-//                    }
-//                }
                 dtos.add(dto);
             }
         }
@@ -136,7 +131,7 @@
             if (!a.getStatus().equals(b.getStatus()) && a.getEndTime().equals(b.getStartTime())) {
                 result.add(dtos.get(dtos.size() - 1));
             }
-        } else if (dtos.size() == 1){
+        } else if (dtos.size() == 1) {
             result.addAll(dtos);
         }
 
@@ -570,6 +565,7 @@
 
     /**
      * 鏁版嵁鍚屾澶勭悊
+     *
      * @param list
      * @param errorList
      */
@@ -740,6 +736,22 @@
         return this.baseMapper.getDataList(equipmentId, date);
     }
 
+    /**
+     * 瀵煎嚭
+     */
+    @Override
+    public ModelAndView exportXls(MdcEquipmentRunningSectionVo equipmentRunningSectionVo) {
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<MdcEquipmentRunningSectionDto> mdcEquipmentRunningSectionDtos = this.logList(equipmentRunningSectionVo);
+        // 瀵煎嚭鏂囦欢鍚嶇О
+        mv.addObject(NormalExcelConstants.FILE_NAME, "璁惧鏃ュ織");
+        mv.addObject(NormalExcelConstants.CLASS, MdcEquipmentRunningSectionDto.class);
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("璁惧鏃ュ織鍒楄〃鏁版嵁", "瀵煎嚭浜�:" + user.getRealname(), "璁惧鏃ュ織"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, mdcEquipmentRunningSectionDtos);
+        return mv;
+    }
+
     private Map<String, List<MdcEquipmentRunningSectionDto>> logCharts(MdcEquipmentRunningSectionVo equipmentRunningSectionVo, String date) {
         Map<String, List<MdcEquipmentRunningSectionDto>> map = new HashMap<>();
         List<MdcEquipmentRunningSectionDto> normal = new ArrayList<>();
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java
index 2a09c05..267b539 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java
@@ -94,6 +94,11 @@
         }
     }
 
+    @Override
+    public MdcEquipmentStatisticalInfo findMdcEquipmentStatisticalInfo(String equipmentId, String date) {
+        return this.baseMapper.findMdcEquipmentStatisticalInfo(equipmentId, date.replaceAll("-", ""));
+    }
+
     private List<EquipmentStatisticalInfo> dataHandle(List<MdcEquipmentStatisticalInfo> list) {
         List<EquipmentStatisticalInfo> result = new ArrayList<>();
         list.forEach(item -> {
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java
index 75c7f8e..2c31126 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java
@@ -1079,4 +1079,23 @@
 
         return dateString;
     }
+
+    /**
+     * 绉掕浆鍖栦负鏃跺垎绉�
+     *
+     * @param seconds
+     * @return
+     */
+    public static String secondsToTime(int seconds) {
+        int hours = seconds / 3600;
+        int minutes = (seconds % 3600) / 60;
+        int sec = seconds % 60;
+
+        // 灏嗗皬鏃躲�佸垎閽熷拰绉掕浆鎹负涓や綅鏁版牸寮�
+        String formattedHours = String.format("%02d", hours);
+        String formattedMinutes = String.format("%02d", minutes);
+        String formattedSeconds = String.format("%02d", sec);
+
+        return formattedHours + "灏忔椂" + formattedMinutes + "鍒�" + formattedSeconds + "绉�";
+    }
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/FileClient.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/FileClient.java
new file mode 100644
index 0000000..903f5dc
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/FileClient.java
@@ -0,0 +1,227 @@
+package org.jeecg.modules.mdc.util;
+
+import cn.hutool.crypto.SmUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.FileEntity;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.protocol.HTTP;
+import org.apache.http.util.EntityUtils;
+import org.jeecg.modules.system.util.SM3Util;
+
+import java.io.File;
+import java.net.URLEncoder;
+
+/**
+ * @author clown
+ * * @date 2023/11/14
+ */
+@Slf4j
+public class FileClient {
+
+    public static String getToken(String host, String port, String userName, String pwd,String address) throws Exception, Throwable {
+        CloseableHttpClient client = null;
+        CloseableHttpResponse response = null;
+        try {
+
+            ObjectMapper objectMapper = new ObjectMapper();
+            JSONObject jsonObject = new JSONObject();
+            //鏋勯�犺姹傚弬鏁癮ppId鍜宲assword
+            jsonObject.put("appId", userName);
+            //灏嗗瘑鐮侀�氳繃SM3鍔犲瘑
+            jsonObject.put("password", SM3Util.encrypt(pwd));
+            String str = objectMapper.writeValueAsString(jsonObject);
+            StringEntity stringEntity = new StringEntity(str);
+            //鏋勯�爃ttp璇锋眰
+            String url = "http" + "://" + host + ":" + port + "/" + address;
+            HttpPost httpPost = new HttpPost(url);
+            //璁剧疆Content-Type
+            httpPost.setHeader(HTTP.CONTENT_TYPE, "application/json");
+            //Content-length浼氬湪璇锋眰鑷姩鑷姩鍔犱笂
+            //灏嗘瀯閫犲ソ鐨勫弬鏁版斁鍏ヨ姹備腑
+            httpPost.setEntity(stringEntity);
+            //璁剧疆璇锋眰瓒呮椂鏃堕棿
+            RequestConfig requestConfig = RequestConfig.custom()
+                    .setConnectTimeout(5000).setConnectionRequestTimeout(5000)
+                    .setSocketTimeout(5000).build();
+            httpPost.setConfig(requestConfig);
+            //鍙戣捣璇锋眰
+            client = HttpClients.createDefault();
+            response = client.execute(httpPost);
+            //瑙f瀽璇锋眰鐨剅esponse
+            if (response.getStatusLine().getStatusCode() == 200) {
+                HttpEntity entity = response.getEntity();
+                String result = EntityUtils.toString(entity, "UTF-8");
+                JSONObject jobject = JSONObject.parseObject(result);
+                int code = jobject.getIntValue("code");
+                String token = jobject.getString("token");
+                String message = jobject.getString("msg");
+                if (200 != code) {
+                    throw new Exception("appAuth Error,code[" + code + "],message[" + message + "]");
+                } else {
+                    //鑻ヨ姹傛垚鍔燂紝杩斿洖token
+                    return token;
+                }
+            } else {
+                throw new Exception("appAuth Error:" + response.getStatusLine().toString());
+            }
+        } catch (Throwable e) {
+            throw e;
+        } finally {
+            if (response != null) {
+                try {
+                    response.close();
+                } catch (Throwable t) {
+                }
+            }
+            if (client != null) {
+                try {
+                    client.close();
+                } catch (Throwable t) {
+                }
+            }
+        }
+    }
+
+
+    //uploadFile()
+
+    /**
+     *
+     * @param host
+     * @param port
+     * @param token
+     * @param remoteFilePath
+     * @param localFilePath
+     * @param addressUploadFile
+     * @return
+     * @throws Exception
+     * @throws Throwable
+     */
+    public static String uploadFile(String host, String port, String token,String fileName, String remoteFilePath, String localFilePath,String addressUploadFile) throws Exception, Throwable {
+        CloseableHttpClient client = null;
+        CloseableHttpResponse response = null;
+        try {
+            //鎷兼帴璇锋眰鐨剈rl
+            String url = "http" + "://" + host + ":" + port + "/" + addressUploadFile;
+            //鏋勯�犺姹�
+            HttpPost httpPost = new HttpPost(url);
+            //璁剧疆Content-Type涓烘枃浠舵祦鏍煎紡
+            httpPost.setHeader(HTTP.CONTENT_TYPE, "application/octet-stream");
+            //璁剧疆header鐨勮姹傚弬鏁�
+            httpPost.addHeader("Accept", "*/*");
+            httpPost.addHeader("Accept-Encoding", "UTF-8");
+            httpPost.setHeader("Token", token);
+            //FileName闇�瑕佺粡杩嘦RLEncoder鍔犵爜锛岄槻姝腑鏂囦贡鐮�
+            httpPost.setHeader("FileName", URLEncoder.encode(remoteFilePath, "UTF-8"));
+            /*鏂囦欢澶у皬*/
+            httpPost.setHeader("WenjianqIcaoren", URLEncoder.encode("璋斂", "UTF-8"));
+            httpPost.setHeader("Shenpiren", URLEncoder.encode("闄堟捣娉�", "UTF-8"));
+            httpPost.setHeader("Miji", URLEncoder.encode("鍐呴儴", "UTF-8"));
+            httpPost.addHeader("Baomiqixian", "10,12,30");
+            httpPost.addHeader("Qianfaren", URLEncoder.encode("闄堟捣娉�", "UTF-8"));
+            File file = new File(localFilePath);
+            if (!file.exists()){
+                httpPost.addHeader("Wenjiansanliezhi", "1");
+            } else {
+                String sm3 = SmUtil.sm3(file);
+                httpPost.addHeader("Wenjiansanliezhi", sm3);
+            }
+
+            httpPost.addHeader("Beizhu", URLEncoder.encode("鏃�", "UTF-8"));
+            //灏嗗搴斾笂浼犵殑鏈湴鏂囦欢瑙f瀽鎴愭枃浠舵祦鏀惧叆body
+            httpPost.setEntity(new FileEntity(new File(localFilePath)));
+
+            //鏍规嵁鏂囦欢澶у皬璁剧疆瓒呮椂鏃堕棿
+            int timeout = (int) ((new File(localFilePath).length() / (1000)) * 2 + 2000);
+            //璁剧疆瓒呮椂鏃堕棿
+            RequestConfig requestConfig = RequestConfig.custom()
+                    .setConnectTimeout(5000).setConnectionRequestTimeout(5000)
+                    .setSocketTimeout(timeout).build();
+            httpPost.setConfig(requestConfig);
+            //璇锋眰鏋勯�犲畬鎴愶紝鍙戣捣璇锋眰
+            client = HttpClients.createDefault();
+            response = client.execute(httpPost);
+            //瑙f瀽response
+            if (response.getStatusLine().getStatusCode() == 200) {
+                HttpEntity entity = response.getEntity();
+                // log.info(entity);
+                String result = EntityUtils.toString(entity, "UTF-8");
+                JSONObject jobject = JSONObject.parseObject(result);
+                int code = jobject.getIntValue("code");
+                String message = jobject.getString("msg");
+                if (200 != code) {
+                    //
+                    log.info( "code: "+ code +"  message: " + message);
+                    if (response != null) {
+                        try {
+                            response.close();
+                        } catch (Throwable t) {
+                        }
+                    }
+                    if (client != null) {
+                        try {
+                            client.close();
+                        } catch (Throwable t) {
+                        }
+                    }
+                    return "澶辫触";
+                }
+                return "鎴愬姛";
+            } else {
+                //
+                log.info( response.getStatusLine().toString());
+                if (response != null) {
+                    try {
+                        response.close();
+                    } catch (Throwable t) {
+                    }
+                }
+                if (client != null) {
+                    try {
+                        client.close();
+                    } catch (Throwable t) {
+                    }
+                }
+                return "澶辫触";
+            }
+        } catch (Throwable e) {
+            //throw e;
+            System.out.println( e.toString());
+            if (response != null) {
+                try {
+                    response.close();
+                } catch (Throwable t) {
+                }
+            }
+            if (client != null) {
+                try {
+                    client.close();
+                } catch (Throwable t) {
+                }
+            }
+            return "澶辫触";
+        } finally {
+            if (response != null) {
+                try {
+                    response.close();
+                } catch (Throwable t) {
+                }
+            }
+            if (client != null) {
+                try {
+                    client.close();
+                } catch (Throwable t) {
+                }
+            }
+        }
+    }
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/SqlExecutor.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/SqlExecutor.java
new file mode 100644
index 0000000..7f495ba
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/SqlExecutor.java
@@ -0,0 +1,29 @@
+package org.jeecg.modules.mdc.util;
+
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.jdbc.SqlRunner;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * @author Lius
+ * @date 2025/1/3 13:26
+ */
+@Component
+public class SqlExecutor {
+
+    @Resource
+    private SqlSessionFactory sqlSessionFactory;
+
+    public void execute(String sql) {
+        try (SqlSession sqlSession = sqlSessionFactory.openSession(true)) {
+            SqlRunner runner = new SqlRunner(sqlSession.getConnection());
+            runner.run(sql);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("Error executing SQL: " + sql, e);
+        }
+    }
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/SyslogClient.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/SyslogClient.java
new file mode 100644
index 0000000..11f3491
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/SyslogClient.java
@@ -0,0 +1,51 @@
+package org.jeecg.modules.mdc.util;
+
+import lombok.extern.slf4j.Slf4j;
+import org.graylog2.syslog4j.Syslog;
+import org.graylog2.syslog4j.SyslogIF;
+
+import java.net.URLDecoder;
+
+/**
+ * @author clown
+ * * @date 2023/12/17
+ */
+@Slf4j
+public class SyslogClient {
+
+    private static final String MESSAGE = "charset=utf-8 logType=閫氱煡 instanceName=瀹炰緥1 taskName=浠诲姟2" +
+            " logLevel=鍛婅 objectName=瀵硅薄1 desc=鏄庣粏1 result=鎴愬姛 date=2023-10-30 00:21:00";
+
+    public static void send(String ip, Integer port) {
+        try {
+            // 鑾峰彇syslog鐨勬搷浣滅被锛屼娇鐢╱dp鍗忚銆俿yslog鏀寔"udp", "tcp"鍗忚
+            SyslogIF syslog = Syslog.getInstance("udp");
+            // 璁剧疆syslog鏈嶅姟鍣ㄧ鍦板潃鍜岀鍙�
+            syslog.getConfig().setHost(ip);
+            syslog.getConfig().setPort(port);
+            //鍙戦�佷俊鎭埌鏈嶅姟鍣紝2琛ㄧず鏃ュ織绾у埆 鑼冨洿涓�0~7鐨勬暟瀛楃紪鐮侊紝琛ㄧず浜嗕簨浠剁殑涓ラ噸绋嬪害銆�0鏈�楂橈紝7鏈�浣�
+            syslog.log(0, URLDecoder.decode(MESSAGE, "utf-8"));
+            log.info("鍙戦�佹垚鍔�");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static Boolean sendClient(String ip, Integer port, String messageClient) {
+        try {
+            log.info(messageClient);
+            // 鑾峰彇syslog鐨勬搷浣滅被锛屼娇鐢╱dp鍗忚銆俿yslog鏀寔"udp", "tcp"鍗忚
+            SyslogIF syslog = Syslog.getInstance("tcp");
+            // 璁剧疆syslog鏈嶅姟鍣ㄧ鍦板潃鍜岀鍙�
+            syslog.getConfig().setHost(ip);
+            syslog.getConfig().setPort(port);
+            //鍙戦�佷俊鎭埌鏈嶅姟鍣紝2琛ㄧず鏃ュ織绾у埆 鑼冨洿涓�0~7鐨勬暟瀛楃紪鐮侊紝琛ㄧず浜嗕簨浠剁殑涓ラ噸绋嬪害銆�0鏈�楂橈紝7鏈�浣�
+            syslog.log(0, URLDecoder.decode(messageClient, "utf-8"));
+            log.info("鍙戦�佹垚鍔�");
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+}
diff --git a/lxzn-module-mdc/src/test/java/org/lxzn/TestOne.java b/lxzn-module-mdc/src/test/java/org/lxzn/TestOne.java
index 852082b..e6ea755 100644
--- a/lxzn-module-mdc/src/test/java/org/lxzn/TestOne.java
+++ b/lxzn-module-mdc/src/test/java/org/lxzn/TestOne.java
@@ -1,8 +1,15 @@
 package org.lxzn;
 
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.file.FileReader;
+import cn.hutool.core.io.file.FileWriter;
+import org.apache.commons.lang.StringUtils;
 import org.jeecg.modules.mdc.util.DateUtils;
+import org.jeecg.modules.system.util.SM3Util;
 import org.junit.Test;
 
+import java.io.File;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.*;
@@ -388,4 +395,76 @@
         System.out.println(startDate);
     }
 
+    @Test
+    public void test45() {
+        List<Integer> list= new ArrayList<>();
+        list.add(1);
+        list.add(2);
+        list.add(3);
+        list.add(4);
+        int i = 2;
+        for (Integer integer : list) {
+            if (integer == i) {
+                continue;
+            }
+            System.out.println(integer);
+        }
+    }
+
+    @Test
+    public void test46() {
+        String date = LocalDate.now().minusDays(1).toString();
+        System.out.println(date);
+    }
+
+    @Test
+    public void test47() {
+        String date = LocalDate.now().minusDays(1).toString();
+        String replace = date.replace("-", "");
+        System.out.println(replace);
+    }
+
+    @Test
+    public void test48() throws IOException {
+        List<String> list = new ArrayList<>();
+        list.add("test1");
+        list.add("test2");
+        FileWriter writer = new FileWriter("D:\\data\\test.xml");
+        writer.writeLines(list);
+    }
+
+    @Test
+    public void test49() {
+        String token = "";
+        if (StringUtils.isNotBlank(token)) {
+            System.out.println("涓嶄负绌�");
+        } else {
+            System.out.println("涓虹┖");
+        }
+    }
+
+    @Test
+    public void test50() {
+        String fileName = "0120241224000001.xml";
+        String substring = fileName.substring(fileName.length() - 10, fileName.length() - 4);
+        String substring2 = fileName.substring(fileName.length() - 18, fileName.length() - 10);
+        System.out.println(substring);
+        System.out.println(substring2);
+    }
+
+    @Test
+    public void test51() {
+        String pwd = "123";
+        String encrypt = SM3Util.encrypt(pwd);
+        System.out.println(encrypt);
+    }
+
+    @Test
+    public void test52() {
+        String loFilePath = "D:\\data\\0120241226000001.xml";
+        FileReader fileReader = new FileReader(loFilePath);
+        String s1 = fileReader.readString();
+        System.out.println(s1);
+    }
+
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/api/controller/SystemApiController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/api/controller/SystemApiController.java
index 6e6cceb..3e078e8 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/api/controller/SystemApiController.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/api/controller/SystemApiController.java
@@ -2,18 +2,33 @@
 
 import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.tomcat.util.http.fileupload.IOUtils;
 import org.jeecg.common.api.dto.DataLogDTO;
 import org.jeecg.common.api.dto.OnlineAuthDTO;
 import org.jeecg.common.api.dto.message.*;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.vo.*;
 import org.jeecg.common.util.SqlInjectionUtil;
+import org.jeecg.modules.system.entity.MdcPassLog;
 import org.jeecg.modules.system.security.DictQueryBlackListHandler;
+import org.jeecg.modules.system.service.IMdcPassLogService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.jeecg.modules.system.service.impl.SysBaseApiImpl;
+import org.jeecg.modules.system.util.JwTUtil;
+import org.jeecg.modules.system.util.SM3Util;
+import org.jeecg.modules.system.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -21,12 +36,19 @@
 
 /**
  * 鏈嶅姟鍖� system妯″潡 瀵瑰鎺ュ彛璇锋眰绫�
+ *
  * @author: jeecg-boot
  */
 @Slf4j
 @RestController
 @RequestMapping("/sys/api")
 public class SystemApiController {
+
+    @Value("${fileService.username}")
+    private String username;
+
+    @Value("${fileService.pwd}")
+    private String pwd;
 
     @Autowired
     private SysBaseApiImpl sysBaseApi;
@@ -36,50 +58,58 @@
     @Autowired
     private DictQueryBlackListHandler dictQueryBlackListHandler;
 
+    @Resource
+    private IMdcPassLogService mdcPassLogService;
+
 
     /**
      * 鍙戦�佺郴缁熸秷鎭�
+     *
      * @param message 浣跨敤鏋勯�犲櫒璧嬪�煎弬鏁� 濡傛灉涓嶈缃甤ategory(娑堟伅绫诲瀷)鍒欓粯璁や负2 鍙戦�佺郴缁熸秷鎭�
      */
     @PostMapping("/sendSysAnnouncement")
-    public void sendSysAnnouncement(@RequestBody MessageDTO message){
+    public void sendSysAnnouncement(@RequestBody MessageDTO message) {
         sysBaseApi.sendSysAnnouncement(message);
     }
 
     /**
      * 鍙戦�佹秷鎭� 闄勫甫涓氬姟鍙傛暟
+     *
      * @param message 浣跨敤鏋勯�犲櫒璧嬪�煎弬鏁�
      */
     @PostMapping("/sendBusAnnouncement")
-    public void sendBusAnnouncement(@RequestBody BusMessageDTO message){
+    public void sendBusAnnouncement(@RequestBody BusMessageDTO message) {
         sysBaseApi.sendBusAnnouncement(message);
     }
 
     /**
      * 閫氳繃妯℃澘鍙戦�佹秷鎭�
+     *
      * @param message 浣跨敤鏋勯�犲櫒璧嬪�煎弬鏁�
      */
     @PostMapping("/sendTemplateAnnouncement")
-    public void sendTemplateAnnouncement(@RequestBody TemplateMessageDTO message){
+    public void sendTemplateAnnouncement(@RequestBody TemplateMessageDTO message) {
         sysBaseApi.sendTemplateAnnouncement(message);
     }
 
     /**
      * 閫氳繃妯℃澘鍙戦�佹秷鎭� 闄勫甫涓氬姟鍙傛暟
+     *
      * @param message 浣跨敤鏋勯�犲櫒璧嬪�煎弬鏁�
      */
     @PostMapping("/sendBusTemplateAnnouncement")
-    public void sendBusTemplateAnnouncement(@RequestBody BusTemplateMessageDTO message){
+    public void sendBusTemplateAnnouncement(@RequestBody BusTemplateMessageDTO message) {
         sysBaseApi.sendBusTemplateAnnouncement(message);
     }
 
     /**
      * 閫氳繃娑堟伅涓績妯℃澘锛岀敓鎴愭帹閫佸唴瀹�
+     *
      * @param templateDTO 浣跨敤鏋勯�犲櫒璧嬪�煎弬鏁�
      * @return
      */
     @PostMapping("/parseTemplateByCode")
-    public String parseTemplateByCode(@RequestBody TemplateDTO templateDTO){
+    public String parseTemplateByCode(@RequestBody TemplateDTO templateDTO) {
         return sysBaseApi.parseTemplateByCode(templateDTO);
     }
 
@@ -87,85 +117,94 @@
      * 鏍规嵁涓氬姟绫诲瀷busType鍙婁笟鍔usId淇敼娑堟伅宸茶
      */
     @GetMapping("/updateSysAnnounReadFlag")
-    public void updateSysAnnounReadFlag(@RequestParam("busType") String busType, @RequestParam("busId")String busId){
+    public void updateSysAnnounReadFlag(@RequestParam("busType") String busType, @RequestParam("busId") String busId) {
         sysBaseApi.updateSysAnnounReadFlag(busType, busId);
     }
 
     /**
      * 鏍规嵁鐢ㄦ埛璐﹀彿鏌ヨ鐢ㄦ埛淇℃伅
+     *
      * @param username
      * @return
      */
     @GetMapping("/getUserByName")
-    public LoginUser getUserByName(@RequestParam("username") String username){
+    public LoginUser getUserByName(@RequestParam("username") String username) {
         return sysBaseApi.getUserByName(username);
     }
 
     /**
      * 鏍规嵁鐢ㄦ埛id鏌ヨ鐢ㄦ埛淇℃伅
+     *
      * @param id
      * @return
      */
     @GetMapping("/getUserById")
-    LoginUser getUserById(@RequestParam("id") String id){
+    LoginUser getUserById(@RequestParam("id") String id) {
         return sysBaseApi.getUserById(id);
     }
 
     /**
      * 閫氳繃鐢ㄦ埛璐﹀彿鏌ヨ瑙掕壊闆嗗悎
+     *
      * @param username
      * @return
      */
     @GetMapping("/getRolesByUsername")
-    List<String> getRolesByUsername(@RequestParam("username") String username){
+    List<String> getRolesByUsername(@RequestParam("username") String username) {
         return sysBaseApi.getRolesByUsername(username);
     }
 
     /**
      * 閫氳繃鐢ㄦ埛璐﹀彿鏌ヨ閮ㄩ棬闆嗗悎
+     *
      * @param username
      * @return 閮ㄩ棬 id
      */
     @GetMapping("/getDepartIdsByUsername")
-    List<String> getDepartIdsByUsername(@RequestParam("username") String username){
+    List<String> getDepartIdsByUsername(@RequestParam("username") String username) {
         return sysBaseApi.getDepartIdsByUsername(username);
     }
 
     /**
      * 閫氳繃鐢ㄦ埛璐﹀彿鏌ヨ閮ㄩ棬 name
+     *
      * @param username
      * @return 閮ㄩ棬 name
      */
     @GetMapping("/getDepartNamesByUsername")
-    List<String> getDepartNamesByUsername(@RequestParam("username") String username){
+    List<String> getDepartNamesByUsername(@RequestParam("username") String username) {
         return sysBaseApi.getDepartNamesByUsername(username);
     }
 
 
     /**
      * 鑾峰彇鏁版嵁瀛楀吀
+     *
      * @param code
      * @return
      */
     @GetMapping("/queryDictItemsByCode")
-    List<DictModel> queryDictItemsByCode(@RequestParam("code") String code){
+    List<DictModel> queryDictItemsByCode(@RequestParam("code") String code) {
         return sysBaseApi.queryDictItemsByCode(code);
     }
 
     /**
      * 鑾峰彇鏈夋晥鐨勬暟鎹瓧鍏�
+     *
      * @param code
      * @return
      */
     @GetMapping("/queryEnableDictItemsByCode")
-    List<DictModel> queryEnableDictItemsByCode(@RequestParam("code") String code){
+    List<DictModel> queryEnableDictItemsByCode(@RequestParam("code") String code) {
         return sysBaseApi.queryEnableDictItemsByCode(code);
     }
 
 
-    /** 鏌ヨ鎵�鏈夌殑鐖剁骇瀛楀吀锛屾寜鐓reate_time鎺掑簭 */
+    /**
+     * 鏌ヨ鎵�鏈夌殑鐖剁骇瀛楀吀锛屾寜鐓reate_time鎺掑簭
+     */
     @GetMapping("/queryAllDict")
-    List<DictModel> queryAllDict(){
+    List<DictModel> queryAllDict() {
 //        try{
 //            //鐫�10绉掞紝gateway缃戝叧5绉掕秴鏃讹紝浼氳Е鍙戠啍鏂檷绾ф搷浣�
 //            Thread.sleep(10000);
@@ -179,63 +218,69 @@
 
     /**
      * 鏌ヨ鎵�鏈夊垎绫诲瓧鍏�
+     *
      * @return
      */
     @GetMapping("/queryAllSysCategory")
-    List<SysCategoryModel> queryAllSysCategory(){
+    List<SysCategoryModel> queryAllSysCategory() {
         return sysBaseApi.queryAllSysCategory();
     }
 
 
     /**
      * 鏌ヨ鎵�鏈夐儴闂� 浣滀负瀛楀吀淇℃伅 id -->value,departName -->text
+     *
      * @return
      */
     @GetMapping("/queryAllDepartBackDictModel")
-    List<DictModel> queryAllDepartBackDictModel(){
+    List<DictModel> queryAllDepartBackDictModel() {
         return sysBaseApi.queryAllDepartBackDictModel();
     }
 
     /**
      * 鑾峰彇鎵�鏈夎鑹� 甯﹀弬
      * roleIds 榛樿閫変腑瑙掕壊
+     *
      * @return
      */
     @GetMapping("/queryAllRole")
-    public List<ComboModel> queryAllRole(@RequestParam(name = "roleIds",required = false)String[] roleIds){
-        if(roleIds==null || roleIds.length==0){
+    public List<ComboModel> queryAllRole(@RequestParam(name = "roleIds", required = false) String[] roleIds) {
+        if (roleIds == null || roleIds.length == 0) {
             return sysBaseApi.queryAllRole();
-        }else{
+        } else {
             return sysBaseApi.queryAllRole(roleIds);
         }
     }
 
     /**
      * 閫氳繃鐢ㄦ埛璐﹀彿鏌ヨ瑙掕壊Id闆嗗悎
+     *
      * @param username
      * @return
      */
     @GetMapping("/getRoleIdsByUsername")
-    public List<String> getRoleIdsByUsername(@RequestParam("username")String username){
+    public List<String> getRoleIdsByUsername(@RequestParam("username") String username) {
         return sysBaseApi.getRoleIdsByUsername(username);
     }
 
     /**
      * 閫氳繃閮ㄩ棬缂栧彿鏌ヨ閮ㄩ棬id
+     *
      * @param orgCode
      * @return
      */
     @GetMapping("/getDepartIdsByOrgCode")
-    public String getDepartIdsByOrgCode(@RequestParam("orgCode")String orgCode){
+    public String getDepartIdsByOrgCode(@RequestParam("orgCode") String orgCode) {
         return sysBaseApi.getDepartIdsByOrgCode(orgCode);
     }
 
     /**
      * 鏌ヨ鎵�鏈夐儴闂�
+     *
      * @return
      */
     @GetMapping("/getAllSysDepart")
-    public List<SysDepartModel> getAllSysDepart(){
+    public List<SysDepartModel> getAllSysDepart() {
         return sysBaseApi.getAllSysDepart();
     }
 
@@ -246,29 +291,30 @@
      * @return
      */
     @GetMapping("/getDynamicDbSourceById")
-    DynamicDataSourceModel getDynamicDbSourceById(@RequestParam("dbSourceId")String dbSourceId){
+    DynamicDataSourceModel getDynamicDbSourceById(@RequestParam("dbSourceId") String dbSourceId) {
         return sysBaseApi.getDynamicDbSourceById(dbSourceId);
     }
 
 
-
     /**
      * 鏍规嵁閮ㄩ棬Id鑾峰彇閮ㄩ棬璐熻矗浜�
+     *
      * @param deptId
      * @return
      */
     @GetMapping("/getDeptHeadByDepId")
-    public List<String> getDeptHeadByDepId(@RequestParam("deptId") String deptId){
+    public List<String> getDeptHeadByDepId(@RequestParam("deptId") String deptId) {
         return sysBaseApi.getDeptHeadByDepId(deptId);
     }
 
     /**
      * 鏌ユ壘鐖剁骇閮ㄩ棬
+     *
      * @param departId
      * @return
      */
     @GetMapping("/getParentDepartId")
-    public DictModel getParentDepartId(@RequestParam("departId")String departId){
+    public DictModel getParentDepartId(@RequestParam("departId") String departId) {
         return sysBaseApi.getParentDepartId(departId);
     }
 
@@ -279,17 +325,18 @@
      * @return
      */
     @GetMapping("/getDynamicDbSourceByCode")
-    public DynamicDataSourceModel getDynamicDbSourceByCode(@RequestParam("dbSourceCode") String dbSourceCode){
+    public DynamicDataSourceModel getDynamicDbSourceByCode(@RequestParam("dbSourceCode") String dbSourceCode) {
         return sysBaseApi.getDynamicDbSourceByCode(dbSourceCode);
     }
 
     /**
      * 缁欐寚瀹氱敤鎴峰彂娑堟伅
+     *
      * @param userIds
      * @param cmd
      */
     @GetMapping("/sendWebSocketMsg")
-    public void sendWebSocketMsg(String[] userIds, String cmd){
+    public void sendWebSocketMsg(String[] userIds, String cmd) {
         sysBaseApi.sendWebSocketMsg(userIds, cmd);
     }
 
@@ -297,71 +344,77 @@
     /**
      * 鏍规嵁id鑾峰彇鎵�鏈夊弬涓庣敤鎴�
      * userIds
+     *
      * @return
      */
     @GetMapping("/queryAllUserByIds")
-    public List<LoginUser> queryAllUserByIds(@RequestParam("userIds") String[] userIds){
+    public List<LoginUser> queryAllUserByIds(@RequestParam("userIds") String[] userIds) {
         return sysBaseApi.queryAllUserByIds(userIds);
     }
 
     /**
      * 鏌ヨ鎵�鏈夌敤鎴� 杩斿洖ComboModel
+     *
      * @return
      */
     @GetMapping("/queryAllUserBackCombo")
-    public List<ComboModel> queryAllUserBackCombo(){
+    public List<ComboModel> queryAllUserBackCombo() {
         return sysBaseApi.queryAllUserBackCombo();
     }
 
     /**
      * 鍒嗛〉鏌ヨ鐢ㄦ埛 杩斿洖JSONObject
+     *
      * @return
      */
     @GetMapping("/queryAllUser")
-    public JSONObject queryAllUser(@RequestParam(name="userIds",required=false)String userIds, @RequestParam(name="pageNo",required=false) Integer pageNo,@RequestParam(name="pageSize",required=false) int pageSize){
+    public JSONObject queryAllUser(@RequestParam(name = "userIds", required = false) String userIds, @RequestParam(name = "pageNo", required = false) Integer pageNo, @RequestParam(name = "pageSize", required = false) int pageSize) {
         return sysBaseApi.queryAllUser(userIds, pageNo, pageSize);
     }
-
 
 
     /**
      * 灏嗕細璁鍒颁俊鎭帹鍔ㄥ埌棰勮
      * userIds
-     * @return
+     *
      * @param userId
+     * @return
      */
     @GetMapping("/meetingSignWebsocket")
-    public void meetingSignWebsocket(@RequestParam("userId")String userId){
+    public void meetingSignWebsocket(@RequestParam("userId") String userId) {
         sysBaseApi.meetingSignWebsocket(userId);
     }
 
     /**
      * 鏍规嵁name鑾峰彇鎵�鏈夊弬涓庣敤鎴�
      * userNames
+     *
      * @return
      */
     @GetMapping("/queryUserByNames")
-    public List<LoginUser> queryUserByNames(@RequestParam("userNames")String[] userNames){
+    public List<LoginUser> queryUserByNames(@RequestParam("userNames") String[] userNames) {
         return sysBaseApi.queryUserByNames(userNames);
     }
 
     /**
      * 鑾峰彇鐢ㄦ埛鐨勮鑹查泦鍚�
+     *
      * @param username
      * @return
      */
     @GetMapping("/getUserRoleSet")
-    public Set<String> getUserRoleSet(@RequestParam("username")String username){
+    public Set<String> getUserRoleSet(@RequestParam("username") String username) {
         return sysBaseApi.getUserRoleSet(username);
     }
 
     /**
      * 鑾峰彇鐢ㄦ埛鐨勬潈闄愰泦鍚�
+     *
      * @param username
      * @return
      */
     @GetMapping("/getUserPermissionSet")
-    public Set<String> getUserPermissionSet(@RequestParam("username") String username){
+    public Set<String> getUserPermissionSet(@RequestParam("username") String username) {
         return sysBaseApi.getUserPermissionSet(username);
     }
 
@@ -369,32 +422,35 @@
 
     /**
      * 鍒ゆ柇鏄惁鏈塷nline璁块棶鐨勬潈闄�
+     *
      * @param onlineAuthDTO
      * @return
      */
     @PostMapping("/hasOnlineAuth")
-    public boolean hasOnlineAuth(@RequestBody OnlineAuthDTO onlineAuthDTO){
+    public boolean hasOnlineAuth(@RequestBody OnlineAuthDTO onlineAuthDTO) {
         return sysBaseApi.hasOnlineAuth(onlineAuthDTO);
     }
 
     /**
      * 鏌ヨ鐢ㄦ埛瑙掕壊淇℃伅
+     *
      * @param username
      * @return
      */
     @GetMapping("/queryUserRoles")
-    public Set<String> queryUserRoles(@RequestParam("username") String username){
+    public Set<String> queryUserRoles(@RequestParam("username") String username) {
         return sysUserService.getUserRolesSet(username);
     }
 
 
     /**
      * 鏌ヨ鐢ㄦ埛鏉冮檺淇℃伅
+     *
      * @param username
      * @return
      */
     @GetMapping("/queryUserAuths")
-    public Set<String> queryUserAuths(@RequestParam("username") String username){
+    public Set<String> queryUserAuths(@RequestParam("username") String username) {
         return sysUserService.getUserPermissionsSet(username);
     }
 
@@ -402,109 +458,122 @@
      * 閫氳繃閮ㄩ棬id鑾峰彇閮ㄩ棬鍏ㄩ儴淇℃伅
      */
     @GetMapping("/selectAllById")
-    public SysDepartModel selectAllById(@RequestParam("id") String id){
+    public SysDepartModel selectAllById(@RequestParam("id") String id) {
         return sysBaseApi.selectAllById(id);
     }
 
     /**
      * 鏍规嵁鐢ㄦ埛id鏌ヨ鐢ㄦ埛鎵�灞炲叕鍙镐笅鎵�鏈夌敤鎴穒ds
+     *
      * @param userId
      * @return
      */
     @GetMapping("/queryDeptUsersByUserId")
-    public List<String> queryDeptUsersByUserId(@RequestParam("userId") String userId){
+    public List<String> queryDeptUsersByUserId(@RequestParam("userId") String userId) {
         return sysBaseApi.queryDeptUsersByUserId(userId);
     }
 
 
     /**
      * 鏌ヨ鏁版嵁鏉冮檺
+     *
      * @return
      */
     @GetMapping("/queryPermissionDataRule")
-    public List<SysPermissionDataRuleModel> queryPermissionDataRule(@RequestParam("component") String component, @RequestParam("requestPath")String requestPath, @RequestParam("username") String username){
+    public List<SysPermissionDataRuleModel> queryPermissionDataRule(@RequestParam("component") String component, @RequestParam("requestPath") String requestPath, @RequestParam("username") String username) {
         return sysBaseApi.queryPermissionDataRule(component, requestPath, username);
     }
 
     /**
      * 鏌ヨ鐢ㄦ埛淇℃伅
+     *
      * @param username
      * @return
      */
     @GetMapping("/getCacheUser")
-    public SysUserCacheInfo getCacheUser(@RequestParam("username") String username){
+    public SysUserCacheInfo getCacheUser(@RequestParam("username") String username) {
         return sysBaseApi.getCacheUser(username);
     }
 
     /**
      * 鏅�氬瓧鍏哥殑缈昏瘧
+     *
      * @param code
      * @param key
      * @return
      */
     @GetMapping("/translateDict")
-    public String translateDict(@RequestParam("code") String code, @RequestParam("key") String key){
+    public String translateDict(@RequestParam("code") String code, @RequestParam("key") String key) {
         return sysBaseApi.translateDict(code, key);
     }
 
 
     /**
      * 36鏍规嵁澶氫釜鐢ㄦ埛璐﹀彿(閫楀彿鍒嗛殧)锛屾煡璇㈣繑鍥炲涓敤鎴蜂俊鎭�
+     *
      * @param usernames
      * @return
      */
     @RequestMapping("/queryUsersByUsernames")
-    List<JSONObject> queryUsersByUsernames(@RequestParam("usernames") String usernames){
+    List<JSONObject> queryUsersByUsernames(@RequestParam("usernames") String usernames) {
         return this.sysBaseApi.queryUsersByUsernames(usernames);
     }
 
     /**
      * 37鏍规嵁澶氫釜鐢ㄦ埛id(閫楀彿鍒嗛殧)锛屾煡璇㈣繑鍥炲涓敤鎴蜂俊鎭�
+     *
      * @param ids
      * @return
      */
     @RequestMapping("/queryUsersByIds")
-    List<JSONObject> queryUsersByIds(@RequestParam("ids") String ids){
+    List<JSONObject> queryUsersByIds(@RequestParam("ids") String ids) {
         return this.sysBaseApi.queryUsersByIds(ids);
     }
 
     /**
      * 38鏍规嵁澶氫釜閮ㄩ棬缂栫爜(閫楀彿鍒嗛殧)锛屾煡璇㈣繑鍥炲涓儴闂ㄤ俊鎭�
+     *
      * @param orgCodes
      * @return
      */
     @GetMapping("/queryDepartsByOrgcodes")
-    List<JSONObject> queryDepartsByOrgcodes(@RequestParam("orgCodes") String orgCodes){
+    List<JSONObject> queryDepartsByOrgcodes(@RequestParam("orgCodes") String orgCodes) {
         return this.sysBaseApi.queryDepartsByOrgcodes(orgCodes);
     }
 
     /**
      * 39鏍规嵁澶氫釜閮ㄩ棬ID(閫楀彿鍒嗛殧)锛屾煡璇㈣繑鍥炲涓儴闂ㄤ俊鎭�
+     *
      * @param ids
      * @return
      */
     @GetMapping("/queryDepartsByIds")
-    List<JSONObject> queryDepartsByIds(@RequestParam("ids") String ids){
+    List<JSONObject> queryDepartsByIds(@RequestParam("ids") String ids) {
         return this.sysBaseApi.queryDepartsByIds(ids);
     }
 
     /**
      * 40鍙戦�侀偖浠舵秷鎭�
+     *
      * @param email
      * @param title
      * @param content
      */
     @GetMapping("/sendEmailMsg")
-    public void sendEmailMsg(@RequestParam("email")String email,@RequestParam("title")String title,@RequestParam("content")String content){
-         this.sysBaseApi.sendEmailMsg(email,title,content);
-    };
+    public void sendEmailMsg(@RequestParam("email") String email, @RequestParam("title") String title, @RequestParam("content") String content) {
+        this.sysBaseApi.sendEmailMsg(email, title, content);
+    }
+
+    ;
+
     /**
      * 41 鑾峰彇鍏徃涓嬬骇閮ㄩ棬鍜屽叕鍙镐笅鎵�鏈夌敤鎴蜂俊鎭�
+     *
      * @param orgCode
      */
     @GetMapping("/getDeptUserByOrgCode")
-    List<Map> getDeptUserByOrgCode(@RequestParam("orgCode")String orgCode){
-       return this.sysBaseApi.getDeptUserByOrgCode(orgCode);
+    List<Map> getDeptUserByOrgCode(@RequestParam("orgCode") String orgCode) {
+        return this.sysBaseApi.getDeptUserByOrgCode(orgCode);
     }
 
     /**
@@ -527,7 +596,7 @@
      */
     @GetMapping("/loadDictItem")
     public List<String> loadDictItem(@RequestParam("dictCode") String dictCode, @RequestParam("keys") String keys) {
-        if(!dictQueryBlackListHandler.isPass(dictCode)){
+        if (!dictQueryBlackListHandler.isPass(dictCode)) {
             log.error(dictQueryBlackListHandler.getError());
             return null;
         }
@@ -543,7 +612,7 @@
      */
     @GetMapping("/getDictItems")
     public List<DictModel> getDictItems(@RequestParam("dictCode") String dictCode) {
-        if(!dictQueryBlackListHandler.isPass(dictCode)){
+        if (!dictQueryBlackListHandler.isPass(dictCode)) {
             log.error(dictQueryBlackListHandler.getError());
             return null;
         }
@@ -571,7 +640,7 @@
      */
     @GetMapping("/loadDictItemByKeyword")
     public List<DictModel> loadDictItemByKeyword(@RequestParam("dictCode") String dictCode, @RequestParam("keyword") String keyword, @RequestParam(value = "pageSize", required = false) Integer pageSize) {
-        if(!dictQueryBlackListHandler.isPass(dictCode)){
+        if (!dictQueryBlackListHandler.isPass(dictCode)) {
             log.error(dictQueryBlackListHandler.getError());
             return null;
         }
@@ -580,27 +649,29 @@
 
     /**
      * 48 鏅�氬瓧鍏哥殑缈昏瘧锛屾牴鎹涓猟ictCode鍜屽鏉℃暟鎹紝澶氫釜浠ラ�楀彿鍒嗗壊
+     *
      * @param dictCodes
      * @param keys
      * @return
      */
     @GetMapping("/translateManyDict")
-    public Map<String, List<DictModel>> translateManyDict(@RequestParam("dictCodes") String dictCodes, @RequestParam("keys") String keys){
+    public Map<String, List<DictModel>> translateManyDict(@RequestParam("dictCodes") String dictCodes, @RequestParam("keys") String keys) {
         return this.sysBaseApi.translateManyDict(dictCodes, keys);
     }
 
 
     /**
      * 鑾峰彇琛ㄦ暟鎹瓧鍏� 銆愭帴鍙g鍚嶉獙璇併��
+     *
      * @param table
      * @param text
      * @param code
      * @return
      */
     @GetMapping("/queryTableDictItemsByCode")
-    List<DictModel> queryTableDictItemsByCode(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code){
-        String str = table+","+text+","+code;
-        if(!dictQueryBlackListHandler.isPass(str)){
+    List<DictModel> queryTableDictItemsByCode(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code) {
+        String str = table + "," + text + "," + code;
+        if (!dictQueryBlackListHandler.isPass(str)) {
             log.error(dictQueryBlackListHandler.getError());
             return null;
         }
@@ -609,6 +680,7 @@
 
     /**
      * 鏌ヨ琛ㄥ瓧鍏� 鏀寔杩囨护鏁版嵁 銆愭帴鍙g鍚嶉獙璇併��
+     *
      * @param table
      * @param text
      * @param code
@@ -616,9 +688,9 @@
      * @return
      */
     @GetMapping("/queryFilterTableDictInfo")
-    List<DictModel> queryFilterTableDictInfo(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("filterSql") String filterSql){
-        String str = table+","+text+","+code;
-        if(!dictQueryBlackListHandler.isPass(str)){
+    List<DictModel> queryFilterTableDictInfo(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("filterSql") String filterSql) {
+        String str = table + "," + text + "," + code;
+        if (!dictQueryBlackListHandler.isPass(str)) {
             log.error(dictQueryBlackListHandler.getError());
             return null;
         }
@@ -631,6 +703,7 @@
     /**
      * 銆愭帴鍙g鍚嶉獙璇併��
      * 鏌ヨ鎸囧畾table鐨� text code 鑾峰彇瀛楀吀锛屽寘鍚玹ext鍜寁alue
+     *
      * @param table
      * @param text
      * @param code
@@ -639,9 +712,9 @@
      */
     @Deprecated
     @GetMapping("/queryTableDictByKeys")
-    public List<String> queryTableDictByKeys(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("keyArray") String[] keyArray){
-        String str = table+","+text+","+code;
-        if(!dictQueryBlackListHandler.isPass(str)){
+    public List<String> queryTableDictByKeys(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("keyArray") String[] keyArray) {
+        String str = table + "," + text + "," + code;
+        if (!dictQueryBlackListHandler.isPass(str)) {
             log.error(dictQueryBlackListHandler.getError());
             return null;
         }
@@ -651,6 +724,7 @@
 
     /**
      * 瀛楀吀琛ㄧ殑 缈昏瘧銆愭帴鍙g鍚嶉獙璇併��
+     *
      * @param table
      * @param text
      * @param code
@@ -658,9 +732,9 @@
      * @return
      */
     @GetMapping("/translateDictFromTable")
-    public String translateDictFromTable(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("key") String key){
-        String str = table+","+text+","+code;
-        if(!dictQueryBlackListHandler.isPass(str)){
+    public String translateDictFromTable(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("key") String key) {
+        String str = table + "," + text + "," + code;
+        if (!dictQueryBlackListHandler.isPass(str)) {
             log.error(dictQueryBlackListHandler.getError());
             return null;
         }
@@ -682,8 +756,8 @@
      */
     @GetMapping("/translateDictFromTableByKeys")
     public List<DictModel> translateDictFromTableByKeys(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("keys") String keys) {
-        String str = table+","+text+","+code;
-        if(!dictQueryBlackListHandler.isPass(str)){
+        String str = table + "," + text + "," + code;
+        if (!dictQueryBlackListHandler.isPass(str)) {
             log.error(dictQueryBlackListHandler.getError());
             return null;
         }
@@ -692,57 +766,64 @@
 
     /**
      * 鍙戦�佹ā鏉夸俊鎭�
+     *
      * @param message
      */
     @PostMapping("/sendTemplateMessage")
-    public void sendTemplateMessage(@RequestBody MessageDTO message){
+    public void sendTemplateMessage(@RequestBody MessageDTO message) {
         sysBaseApi.sendTemplateMessage(message);
     }
 
     /**
      * 鑾峰彇娑堟伅妯℃澘鍐呭
+     *
      * @param code
      * @return
      */
     @GetMapping("/getTemplateContent")
-    public String getTemplateContent(@RequestParam("code") String code){
+    public String getTemplateContent(@RequestParam("code") String code) {
         return this.sysBaseApi.getTemplateContent(code);
     }
 
     /**
      * 淇濆瓨鏁版嵁鏃ュ織
+     *
      * @param dataLogDto
      */
     @PostMapping("/saveDataLog")
-    public void saveDataLog(@RequestBody DataLogDTO dataLogDto){
+    public void saveDataLog(@RequestBody DataLogDTO dataLogDto) {
         this.sysBaseApi.saveDataLog(dataLogDto);
     }
 
     @PostMapping("/addSysFiles")
-    public void addSysFiles(@RequestBody SysFilesModel sysFilesModel){this.sysBaseApi.addSysFiles(sysFilesModel);}
+    public void addSysFiles(@RequestBody SysFilesModel sysFilesModel) {
+        this.sysBaseApi.addSysFiles(sysFilesModel);
+    }
 
     @GetMapping("/getFileUrl")
-    public String getFileUrl(@RequestParam(name="fileId") String fileId){
+    public String getFileUrl(@RequestParam(name = "fileId") String fileId) {
         return this.sysBaseApi.getFileUrl(fileId);
     }
 
     /**
      * 鏇存柊澶村儚
+     *
      * @param loginUser
      * @return
      */
     @PutMapping("/updateAvatar")
-    public void updateAvatar(@RequestBody LoginUser loginUser){
+    public void updateAvatar(@RequestBody LoginUser loginUser) {
         this.sysBaseApi.updateAvatar(loginUser);
     }
 
     /**
      * 鍚慳pp绔� websocket鎺ㄩ�佽亰澶╁埛鏂版秷鎭�
+     *
      * @param userId
      * @return
      */
     @GetMapping("/sendAppChatSocket")
-    public void sendAppChatSocket(@RequestParam(name="userId") String userId){
+    public void sendAppChatSocket(@RequestParam(name = "userId") String userId) {
         this.sysBaseApi.sendAppChatSocket(userId);
     }
 
@@ -750,18 +831,116 @@
     /**
      * VUEN-2584銆恑ssue銆戝钩鍙皊ql娉ㄥ叆婕忔礊鍑犱釜闂
      * 閮ㄥ垎鐗规畩鍑芥暟 鍙互灏嗘煡璇㈢粨鏋滄贩澶瑰湪閿欒淇℃伅涓紝瀵艰嚧鏁版嵁搴撶殑淇℃伅鏆撮湶
+     *
      * @param e
      * @return
      */
     @ExceptionHandler(java.sql.SQLException.class)
-    public Result<?> handleSQLException(Exception e){
+    public Result<?> handleSQLException(Exception e) {
         String msg = e.getMessage();
         String extractvalue = "extractvalue";
         String updatexml = "updatexml";
-        if(msg!=null && (msg.toLowerCase().indexOf(extractvalue)>=0 || msg.toLowerCase().indexOf(updatexml)>=0)){
+        if (msg != null && (msg.toLowerCase().indexOf(extractvalue) >= 0 || msg.toLowerCase().indexOf(updatexml) >= 0)) {
             return Result.error("鏍¢獙澶辫触锛宻ql瑙f瀽寮傚父锛�");
         }
         return Result.error("鏍¢獙澶辫触锛宻ql瑙f瀽寮傚父锛�" + msg);
     }
-    
+
+    /**
+     * 缃戦椄璁よ瘉
+     *
+     * @param postParams
+     * @return
+     */
+    @PostMapping(value = "/appAuth")
+    public TokenResp getToken(@RequestBody PostParams postParams) {
+        //鑾峰彇璇锋眰澶翠腑浼犲叆鐨刟ppId鍜宲assword
+        String appId = postParams.getAppId();
+        String password = postParams.getPassword();
+
+        //鐢ㄤ簬鏍¢獙鐨勬纭殑appId鍜宲assword锛堟牴鎹笟鍔¤皟鏁达級
+
+        //鏍¢獙appId鍜宲aaword锛岀敱浜庢祴璇曠敤鐨勬槑鏂囧瘑鐮�,SM3Util.verify()鍏堝皢閾枃瀵嗙爜SM3鍔犲瘑鍚庡啀涓庝紶鍏assword瀵规瘮
+        if (username.equals(appId)) {
+            //鏍¢獙閫氳繃锛岀敓鎴恡oken绛惧悕
+            if (SM3Util.verify(pwd, password)) {
+                String token = JwTUtil.sign(appId, pwd);
+                return new TokenResp("200", "璁よ瘉鎴愬姛", token);
+            } else {
+                return new TokenResp("", "瀵嗙爜閿欒", null);
+            }
+        } else {
+            return new TokenResp("", "璐﹀彿閿欒", null);
+        }
+    }
+
+    @PostMapping(value = "/fileUpload")
+    public RespData uploadFiles(HttpServletRequest request) {
+
+        FileDetail fileDetail = new FileDetail();
+        try {
+            request.setCharacterEncoding("UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        //鑾峰彇FileName
+        if (request.getHeader("FileName") != null) {
+            try {
+                fileDetail.setFileName(URLDecoder.decode(request.getHeader("FileName"), "utf-8"));
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+        }
+        //鑾峰彇Content-Length
+        if (request.getHeader("Content-Length") != null) {
+            try {
+                fileDetail.setContentLength(URLDecoder.decode(request.getHeader("Content-Length"), "utf-8"));
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+        }
+        //鑾峰彇鏂囦欢娴�
+        ServletInputStream inputStream = null;
+        try {
+            inputStream = request.getInputStream();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        //鎿嶄綔鏂囦欢娴侊紝涓婁紶鏂囦欢
+        FileOutputStream fileOut = null;
+        try {
+            fileOut = new FileOutputStream(fileDetail.getFileName()); // 杩欓噷鍙互鏀硅矾寰�
+            IOUtils.copy(inputStream, fileOut);
+            fileOut.flush();
+            //涓嶈褰曟暟鎹噺
+            MdcPassLog mdcPassLog = new MdcPassLog();
+            File file = new File(fileDetail.getFileName());
+            String fileName = file.getName();
+            String sequenceOrder = fileName.substring(fileName.length() - 10, fileName.length() - 4);
+            String dayTime = fileName.substring(fileName.length() - 18, fileName.length() - 10);
+            mdcPassLog.setPassLogFileName(file.getAbsolutePath());
+            int sequenceNum = Integer.parseInt(sequenceOrder);
+            mdcPassLog.setPassName(fileName);
+            mdcPassLog.setDayTime(dayTime);
+            mdcPassLog.setSequenceNumber(sequenceNum);
+            mdcPassLog.setSequenceOrder(sequenceOrder);
+            mdcPassLogService.save(mdcPassLog);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (inputStream != null) {
+                    inputStream.close();
+                }
+                if (fileOut != null) {
+                    fileOut.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return new RespData("200", "鏂囦欢涓婁紶鎴愬姛");
+    }
+
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/MdcPassLog.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/MdcPassLog.java
new file mode 100644
index 0000000..981d2d6
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/MdcPassLog.java
@@ -0,0 +1,62 @@
+package org.jeecg.modules.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author clown
+ * * @date 2023/12/12
+ */
+@Data
+@TableName("mdc_pass_log")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "mdc_pass_log瀵硅薄", description = "鍙戦�佹枃浠舵棩蹇楄〃")
+public class MdcPassLog implements Serializable {
+
+    private static final long serialVersionUID = -9138730240370211497L;
+
+    @TableId(type = IdType.ASSIGN_ID)
+    private String id;
+    /**
+     * 鍚嶇О
+     */
+    private String passName;
+    /**
+     * 搴忓彿
+     */
+    private String sequenceOrder;
+    /**
+     * 鏃堕棿
+     */
+    private String dayTime;
+    /**
+     * 绫诲瀷
+     */
+    private String passType;
+    /**
+     * 鏂囦欢鍚嶇О
+     */
+    private String passLogFileName;
+    /**
+     * 椤哄簭鍙�
+     */
+    private Integer sequenceNumber;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date createTime;
+
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcPassLogMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcPassLogMapper.java
new file mode 100644
index 0000000..579d8c5
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcPassLogMapper.java
@@ -0,0 +1,20 @@
+package org.jeecg.modules.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.system.entity.MdcPassLog;
+
+/**
+ * @author Lius
+ * @date 2024/12/23 14:59
+ */
+public interface MdcPassLogMapper extends BaseMapper<MdcPassLog> {
+
+    /**
+     * 鏌ヨ浠婃棩鏈�鏂颁竴鏉′紶杈撴棩蹇�
+     *
+     * @param date
+     * @return
+     */
+    MdcPassLog selectTodayLast(@Param("date") String date);
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcPassLogMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcPassLogMapper.xml
new file mode 100644
index 0000000..7cd9e3a
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcPassLogMapper.xml
@@ -0,0 +1,8 @@
+<?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="org.jeecg.modules.system.mapper.MdcPassLogMapper">
+
+    <select id="selectTodayLast" resultType="org.jeecg.modules.system.entity.MdcPassLog">
+        SELECT TOP 1 * FROM mdc_pass_log WHERE day_time = #{date} ORDER BY create_time DESC
+    </select>
+</mapper>
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcPassLogService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcPassLogService.java
new file mode 100644
index 0000000..e531182
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcPassLogService.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.system.entity.MdcPassLog;
+
+/**
+ * @author Lius
+ * @date 2024/12/23 15:00
+ */
+public interface IMdcPassLogService extends IService<MdcPassLog> {
+
+    /**
+     * 鏌ヨ浠婃棩鏈�鏂颁竴鏉′紶杈撴棩蹇�
+     *
+     * @param date
+     * @return
+     */
+    MdcPassLog selectTodayLast(String date);
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcPassLogServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcPassLogServiceImpl.java
new file mode 100644
index 0000000..eb9fd10
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcPassLogServiceImpl.java
@@ -0,0 +1,26 @@
+package org.jeecg.modules.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.system.entity.MdcPassLog;
+import org.jeecg.modules.system.mapper.MdcPassLogMapper;
+import org.jeecg.modules.system.service.IMdcPassLogService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author Lius
+ * @date 2024/12/23 15:00
+ */
+@Service
+public class MdcPassLogServiceImpl extends ServiceImpl<MdcPassLogMapper, MdcPassLog> implements IMdcPassLogService {
+
+    /**
+     * 鏌ヨ浠婃棩鏈�鏂颁竴鏉′紶杈撴棩蹇�
+     *
+     * @param date
+     * @return
+     */
+    @Override
+    public MdcPassLog selectTodayLast(String date) {
+        return this.baseMapper.selectTodayLast(date);
+    }
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/util/FileUtils.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/util/FileUtils.java
new file mode 100644
index 0000000..e15701c
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/util/FileUtils.java
@@ -0,0 +1,195 @@
+package org.jeecg.modules.system.util;
+
+import cn.hutool.core.date.DateUtil;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Created by YangBin on 2017/9/15.
+ */
+public class FileUtils {
+    private static final long MAX_FILE_SIZE = 10 * 1024 * 1024;
+
+    /**
+     * 鑾峰彇鏈嶅姟鍣ㄤ复鏃惰矾寰�
+     *
+     * @param request
+     * @return
+     */
+    public static String serverTempPath(HttpServletRequest request) {
+        String fsep = System.getProperty("file.separator");
+        String path = request.getSession().getServletContext().getRealPath("");
+        if (path.lastIndexOf(fsep) == path.length() - 1) {
+            path += "upload" + fsep + "voucher" + fsep;
+        } else {
+            path += fsep + "upload" + fsep + "voucher" + fsep;
+        }
+        return path;
+    }
+
+    public static String serverTempPathIntactReg(HttpServletRequest request) {
+        String fsep = System.getProperty("file.separator");
+        String path = request.getSession().getServletContext().getRealPath("");
+        if (path.lastIndexOf(fsep) == path.length() - 1) {
+            path += "upload" + fsep + "log" + fsep + "error" + fsep;
+        } else {
+            path += fsep + "upload" + fsep + "log" + fsep + "error" + fsep;
+        }
+        return path;
+    }
+
+    public static String serverTempPathProcess(HttpServletRequest request) {
+        String fsep = System.getProperty("file.separator");
+        String path = request.getSession().getServletContext().getRealPath("");
+        if (path.lastIndexOf(fsep) == path.length() - 1) {
+            path += "upload" + fsep + "process" + fsep;
+        } else {
+            path += fsep + "upload" + fsep + "process" + fsep;
+        }
+        return path;
+    }
+
+    public static String changeFileFormatKb(String flow) {
+        BigDecimal flows = new BigDecimal(flow);
+        if (flows.compareTo(new BigDecimal(0)) > 0 && flows.compareTo(new BigDecimal(1024)) < 0) {//灏忎簬1M
+            return flows.toString() + "B";
+        } else if (flows.compareTo(new BigDecimal(1024)) >= 0) {
+            BigDecimal result = flows.divide(new BigDecimal(1024), 2, BigDecimal.ROUND_HALF_UP);
+            return result.toString() + "KB";
+        } else {
+            return "0";
+        }
+    }
+
+
+    /**
+     * 寰楀埌椤圭洰鏍圭洰褰曚笅鐨勭粷瀵硅矾寰勶紙纾佺洏鐨勭墿鐞嗚矾寰勶級
+     *
+     * @param request
+     * @param newPath
+     * @return
+     */
+    public static String getFilePath(HttpServletRequest request, String newPath) {
+        String fsep = System.getProperty("file.separator");
+        String path = request.getSession().getServletContext().getRealPath("/upload");
+        path += fsep + newPath;
+        return path;
+    }
+
+    /**
+     * 寰楀埌椤圭洰鏍圭洰褰曚笅鐨勭浉瀵硅矾寰� 锛堢浉瀵逛簬椤圭洰涓烘牴璺緞锛�
+     *
+     * @param newPath
+     * @return
+     */
+    public static String getRelativePath(String newPath) {
+        return "/upload/" + newPath;
+    }
+
+
+    /**
+     * 鏂规硶涓�:浣跨敤 FileWriter 鍐欐枃浠�
+     *
+     * @param filepath 鏂囦欢鐩綍
+     * @param content  寰呭啓鍏ュ唴瀹�
+     * @throws IOException
+     */
+    public static void fileWriterSql(String filepath, String content) throws IOException {
+        OutputStreamWriter outputStreamWriter = null;
+        try {
+            File file = new File(filepath);
+            if (!file.exists()) {
+                file.createNewFile();
+            }
+            FileOutputStream outputStream = new FileOutputStream(file);
+            if (outputStream != null) {
+                outputStreamWriter = new OutputStreamWriter(outputStream, "utf-8");
+                outputStreamWriter.write(content);
+                outputStreamWriter.flush();
+            }
+        } catch (IOException e) {
+            e.getMessage();
+        } finally {
+            try {
+                if (outputStreamWriter != null) {
+                    outputStreamWriter.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+        /*
+        File file=new File(filepath);
+        Writer writer = new OutputStreamWriter(new FileOutputStream(file.getAbsoluteFile()), "UTF-8");
+        writer.append(content);
+         */
+    }
+
+    /**
+     * 鏂囦欢澶у皬鏅鸿兘杞崲
+     * 浼氬皢鏂囦欢澶у皬杞崲涓烘渶澶ф弧瓒冲崟浣�
+     *
+     * @param size锛堟枃浠跺ぇ灏忥紝鍗曚綅涓築锛�
+     * @return 鏂囦欢澶у皬
+     */
+    public static String formatFileSize(Long size) {
+        String sizeName = null;
+        if (1024 * 1024 > size && size >= 1024) {
+            sizeName = String.format("%.2f", size.doubleValue() / 1024) + "KB";
+        } else if (1024 * 1024 * 1024 > size && size >= 1024 * 1024) {
+            sizeName = String.format("%.2f", size.doubleValue() / (1024 * 1024)) + "MB";
+        } else if (size >= 1024 * 1024 * 1024) {
+            sizeName = String.format("%.2f", size.doubleValue() / (1024 * 1024 * 1024)) + "GB";
+        } else {
+            sizeName = size.toString() + "B";
+        }
+        return sizeName;
+    }
+
+    /**
+     * 涓婁紶鏂囦欢宸ュ叿绫�
+     *
+     * @param userPic
+     * @param path
+     * @param fileName
+     * @return
+     */
+    public static boolean uploadFile(MultipartFile userPic, String path, String fileName) {
+        Long fileSize = userPic.getSize();
+        if (fileSize > MAX_FILE_SIZE) {
+            return false;
+        }
+        File targetFile = new File(path, fileName);
+        if (!targetFile.exists()) {
+            targetFile.mkdirs();
+        }
+        try {
+            userPic.transferTo(targetFile);
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    /**
+     * 閲嶅懡鍚嶆枃浠跺悕 鍔犲叆鏃堕棿鎴�
+     *
+     * @param fileName
+     * @return
+     */
+    public static String newFileName(String fileName) {
+        String suffix = fileName.substring(fileName.lastIndexOf('.'));
+        String dateStr = "_" + DateUtil.now();
+        String nameFile = fileName.substring(0, fileName.indexOf("."));
+        //鏂版枃浠跺悕
+        return nameFile + dateStr + suffix;
+    }
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/util/JwTUtil.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/util/JwTUtil.java
new file mode 100644
index 0000000..daf7414
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/util/JwTUtil.java
@@ -0,0 +1,48 @@
+package org.jeecg.modules.system.util;
+
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.algorithms.Algorithm;
+import com.auth0.jwt.exceptions.JWTDecodeException;
+import com.auth0.jwt.interfaces.DecodedJWT;
+
+import java.util.Date;
+
+/**
+ * @author clown
+ * * @date 2023/11/23
+ */
+public class JwTUtil {
+    /**
+     * 浠巘oken涓В瀵嗗嚭鐢ㄦ埛鍚�
+     */
+    public static String getUsername(String token) {
+        try {
+            DecodedJWT jwt = JWT.decode(token);
+            return jwt.getClaim("username").asString();
+        } catch (JWTDecodeException e) {
+            return null;
+        }
+    }
+
+    /**
+     * 鍒ゆ柇鏄惁杩囨湡
+     */
+    public static boolean isExpired(String token) {
+        DecodedJWT jwt = JWT.decode(token);
+        return jwt.getExpiresAt().before(new Date());
+    }
+
+    /**
+     * 鐢熸垚绛惧悕
+     */
+    public static String sign(String username, String secret) {
+        Algorithm algorithm = Algorithm.HMAC256(secret);
+        // 30鍒嗛挓鍚庤繃鏈�
+        Date date = new Date(System.currentTimeMillis() + 60 * 60 * 1000);
+        // 闄勫甫username淇℃伅锛堝彧瑕佷綘鎰挎剰锛屽彲浠ラ檮甯ap銆丩ist绛夛級
+        return JWT.create().withClaim("username", username).withExpiresAt(date).sign(algorithm);
+
+    }
+
+
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/util/SM3Util.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/util/SM3Util.java
new file mode 100644
index 0000000..4ea6feb
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/util/SM3Util.java
@@ -0,0 +1,71 @@
+package org.jeecg.modules.system.util;
+
+import org.bouncycastle.crypto.digests.SM3Digest;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
+
+import java.io.UnsupportedEncodingException;
+import java.security.Security;
+import java.util.Arrays;
+
+/**
+ * @author clown
+ * * @date 2023/11/23
+ */
+public class SM3Util {
+    /**
+     * 缂栫爜鏍煎紡
+     */
+    private static final String ENCODING = "UTF-8";
+
+    static{
+        Security.addProvider(new BouncyCastleProvider());
+    }
+
+    /**
+     *
+     * @param paramStr 瑕乻m3鍔犲瘑鐨勫唴瀹�
+     * @return sm3鍔犲瘑鍚庡瘑鏂�
+     */
+    public static String encrypt(String paramStr){
+        String resultHexString = "";
+        try {
+            byte[] srcData = paramStr.getBytes(ENCODING);
+            byte[] hash = hash(srcData);
+            resultHexString = ByteUtils.toHexString(hash);
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return resultHexString;
+    }
+
+    public static byte[] hash(byte[] srcData){
+        SM3Digest sm3Digest = new SM3Digest();
+        sm3Digest.update(srcData,0,srcData.length);
+        byte[] bytes = new byte[sm3Digest.getDigestSize()];
+        sm3Digest.doFinal(bytes,0);
+        return bytes;
+    }
+
+    /**
+     *
+     * @param str 鏄庢枃
+     * @param hexString 瀵嗘枃
+     * @return 鏄庢枃瀵嗘枃瀵规瘮缁撴灉
+     */
+    public static boolean verify(String str,String hexString){
+        boolean flag = false;
+        try {
+            byte[] srcData = str.getBytes(ENCODING);
+            byte[] sm3Hash = ByteUtils.fromHexString(hexString);
+            byte[] hash = hash(srcData);
+            if (Arrays.equals(hash,sm3Hash)){
+                flag = true;
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return flag;
+    }
+
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/FileDetail.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/FileDetail.java
new file mode 100644
index 0000000..3fd1b08
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/FileDetail.java
@@ -0,0 +1,13 @@
+package org.jeecg.modules.system.vo;
+
+import lombok.Data;
+
+/**
+ * @author clown
+ * * @date 2023/11/28
+ */
+@Data
+public class FileDetail {
+    private String fileName;
+    private String contentLength;
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/PostParams.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/PostParams.java
new file mode 100644
index 0000000..7875a97
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/PostParams.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.system.vo;
+
+import lombok.Data;
+
+/**
+ * @author clown
+ * * @date 2023/11/23
+ */
+@Data
+public class PostParams {
+
+    private String appId;
+    private String password;
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/RespData.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/RespData.java
new file mode 100644
index 0000000..504546e
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/RespData.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.system.vo;
+
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * @author clown
+ * * @date 2023/11/28
+ */
+@Data
+public class RespData {
+    private String code;
+    private String msg;
+
+    public RespData(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/SysLogTypeObjectDto.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/SysLogTypeObjectDto.java
new file mode 100644
index 0000000..ff967fb
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/SysLogTypeObjectDto.java
@@ -0,0 +1,61 @@
+package org.jeecg.modules.system.vo;
+
+import lombok.Data;
+
+/**
+ * @author clown
+ * * @date 2023/12/19
+ */
+@Data
+public class SysLogTypeObjectDto {
+
+    /**
+     * 绯荤粺鍚嶇О
+     */
+    private String systemName = "MDC";
+    /**
+     * 鏃堕棿
+     */
+    private String dateTime;
+    /**
+     * 鍦扮偣
+     */
+    private String location = "鎴愬彂宸ヤ笟鍥�";
+    /**
+     * 绫诲瀷  Info/error
+     */
+    private String types = "info";
+    /**
+     * 鏂囦欢搴忓彿
+     */
+    private String fileNum;
+    /**
+     * 鏂囦欢鍚�
+     */
+    private String fileName;
+    /**
+     * 鏂囦欢澶у皬
+     */
+    private String fileSize;
+    /**
+     * 涓氬姟绯荤粺ip
+     */
+    private String address = "10.118.10.62";
+    /**
+     * 鏂囦欢鎽樿
+     */
+    private String abstract1;
+    /**
+     * 婧愬湴鍧�
+     */
+    private String sourceAddress;
+    /**
+     * 鐩殑鍦板潃
+     */
+    private String destination;
+    /**
+     * 缁撴灉
+     */
+    private String result;
+
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/TokenResp.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/TokenResp.java
new file mode 100644
index 0000000..be5264b
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/TokenResp.java
@@ -0,0 +1,21 @@
+package org.jeecg.modules.system.vo;
+
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * @author clown
+ * * @date 2023/11/23
+ */
+@Data
+public class TokenResp {
+    private String code;
+    private String token;
+    private String msg;
+
+    public TokenResp(String code, String token, String msg) {
+        this.code = code;
+        this.token = token;
+        this.msg = msg;
+    }
+}

--
Gitblit v1.9.3