Просмотр исходного кода

Merge branch 'master' of http://git.dongkesoft.com:9001/DK-MES-3.0/mes-server-report

hongxudong 2 лет назад
Родитель
Сommit
cee8c121e2

+ 7 - 0
pom.xml

@@ -20,6 +20,13 @@
 
     <profiles>
         <profile>
+            <id>st</id>
+            <properties>
+                <environment>st</environment>
+            </properties>
+        </profile>
+
+        <profile>
             <id>uat</id>
             <properties>
                 <environment>uat</environment>

+ 9 - 15
src/main/java/com/dk/report/mapper/CustomReportMapper.xml

@@ -6,7 +6,7 @@
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
         tcr.report_id,tcr.parent_uuid
-        , tcr.report_name, tcr.user_ids, tcr.fty_ids, tcr.sql_script, tcr.flg_page, tcr.describe, tcr.report_status, tcr.remarks, tcr.display_no,
+        , tcr.report_name, tcr.user_ids, tcr.fty_ids, tcr.sql_script, tcr.describe, tcr.report_status, tcr.remarks, tcr.display_no,
         tcr.flg_valid, tcr.fty_id, tcr.op_create_time, tcr.op_create_user_id, tcr.op_update_time, tcr.op_update_user_id, tcr.op_app_code,
         tcr.op_timestamp, tcr.op_db_user,report_type
     </sql>
@@ -18,7 +18,6 @@
         <result column="report_Type" property="reportType"/>
         <result column="parent_uuid" property="parentUuid" typeHandler="UuidTypeHandler"/>
         <result column="report_type_name" property="reportTypeName"/>
-        <result column="flg_page" property="flgPage"/>
         <result column="user_ids" property="userIds" typeHandler="com.dk.common.infrastructure.handler.IntListTypeHandler"/>
         <result column="fty_ids" property="ftyIds" typeHandler="com.dk.common.infrastructure.handler.IntListTypeHandler"/>
         <result column="user_names" property="userNames"/>
@@ -86,6 +85,9 @@
         <result column="remarks" property="remarks"/>
         <result column="pivot_data" property="pivotData" typeHandler="JsonTypeHandler"/>
         <result column="flg_pivot" property="flgPivot"/>
+        <result column="flg_page" property="flgPage"/>
+        <result column="flg_proc" property="flgProc"/>
+        <result column="flg_dynamic_col" property="flgDynamicCol"/>
         <result column="display_no" property="displayNo"/>
         <result column="flg_valid" property="flgValid"/>
         <result column="fty_id" property="ftyId"/>
@@ -245,7 +247,6 @@
     <select id="selectByReport" resultMap="BaseResultMap">
         select tcr.report_id,
             tcr.report_name,
-            tcr.flg_page,
             tcr.user_ids,
             tcr.fty_ids,
             (select string_agg(u.user_name,' | ') from core.t_user u where u.user_id = any(tcr.user_ids)) as "user_names",
@@ -299,6 +300,9 @@
         </if>
             tcrs.pivot_data as "sql_pivot_data",
             tcrs.flg_pivot as "sql_flg_pivot",
+            tcrs.flg_page as "sql_flg_page",
+            tcrs.flg_proc as "sql_flg_proc",
+            tcrs.flg_dynamic_col as "sql_flg_dynamic_col",
             tcrs.change_script_others as "sql_change_script_others",
             tcrs.change_script as "sql_change_script",
             tcrs.change_tab_name as "sql_change_tab_name",
@@ -315,7 +319,7 @@
         on tcr.report_id = tcrc.report_id
         and tcr.fty_id = tcrc.fty_id
         and tcrc.flg_valid
-        left join sys.t_data_kind tdk
+        left join sys.t_value_kind tdk
         on tcrc.kind = tdk.kind_code
         left join rpt.t_custom_report_sql tcrs
         on tcr.report_id = tcrs.report_id
@@ -346,7 +350,6 @@
             report_type,
             parent_uuid,
             user_ids,
-            flg_page,
             report_status,
             describe,
             remarks,
@@ -363,7 +366,6 @@
             #{reportType},
             #{parentUuid} ::uuid,
             #{userIds ,typeHandler=IntListTypeHandler},
-            #{flgPage},
             #{reportStatus},
             #{describe},
             #{remarks},
@@ -392,9 +394,6 @@
         <if test="reportType != null">
             report_type =  #{reportType},
         </if>
-        <if test="flgPage != null">
-            flg_page =  #{flgPage},
-        </if>
         <if test="reportStatus != null">
             report_status =  #{reportStatus},
         </if>
@@ -567,7 +566,6 @@
             report_id,
             report_name,
             sql_script,
-            flg_page,
             report_status,
             report_type,
             parent_uuid,
@@ -584,7 +582,6 @@
             #{reportId} ::uuid,
             #{reportName},
             #{sqlScript},
-            #{flgPage},
             #{reportStatus},
             #{reportType},
             #{parentUuid} ::uuid,
@@ -598,7 +595,6 @@
         on conflict (report_id,fty_id) do update set
         report_name = excluded."report_name",
         sql_script = excluded."sql_script",
-        flg_page = excluded."flg_page",
         report_status = excluded."report_status",
         report_type = excluded."report_type",
         parent_uuid = excluded."parent_uuid",
@@ -690,7 +686,6 @@
             report_id,
             report_name,
             sql_script,
-            flg_page,
             report_status,
             describe,
             remarks,
@@ -710,7 +705,6 @@
                 #{item.reportId}::uuid,
                 #{item.reportName},
                 #{item.sqlScript},
-                #{item.flgPage},
                 #{item.reportStatus},
                 #{item.describe},
                 #{item.remarks},
@@ -746,7 +740,7 @@
 
     <!--    SQL-->
     <select id="selectReportSql" resultMap="SqlResultMap">
-        select t.sql_id, t.report_id, t.name, t.label, t.sql_script, t.remarks, t.display_no, t.flg_valid, t.fty_id, t.op_create_time, t.op_create_user_id, t.op_update_time, t.op_update_user_id, t.op_app_code, t.op_timestamp, t.op_db_user, t.change_script, t.change_tab_name, t.change_script_others, t.sub_totals, t.sub_total_data_keys, t.pivot_data, t.flg_pivot
+        select t.sql_id, t.report_id, t.name, t.label,t.flg_page,t.flg_proc,t.flg_dynamic_col, t.sql_script, t.remarks, t.display_no, t.flg_valid, t.fty_id, t.op_create_time, t.op_create_user_id, t.op_update_time, t.op_update_user_id, t.op_app_code, t.op_timestamp, t.op_db_user, t.change_script, t.change_tab_name, t.change_script_others, t.sub_totals, t.sub_total_data_keys, t.pivot_data, t.flg_pivot
         from rpt.t_custom_report_sql t
                  inner join rpt.t_custom_report tr on tr.report_id = t.report_id
         where t.fty_id = 1 and t.flg_valid

+ 9 - 0
src/main/java/com/dk/report/mapper/CustomReportSqlMapper.xml

@@ -20,6 +20,9 @@
         <result column="sql_script" property="sqlScript"/>
         <result column="pivot_data" property="pivotData" typeHandler="JsonTypeHandler"/>
         <result column="flg_pivot" property="flgPivot"/>
+        <result column="flg_page" property="flgPage"/>
+        <result column="flg_proc" property="flgProc"/>
+        <result column="flg_dynamic_col" property="flgDynamicCol"/>
         <result column="remarks" property="remarks"/>
         <result column="display_no" property="displayNo"/>
         <result column="flg_valid" property="flgValid"/>
@@ -155,6 +158,9 @@
             sub_total_data_keys,
             pivot_data,
             flg_pivot,
+            flg_page,
+            flg_proc,
+            flg_dynamic_col,
         </trim>
         )
         values
@@ -177,6 +183,9 @@
                 #{item.subTotalDataKeys},
                 #{item.pivotData, typeHandler=JsonTypeHandler},
                 #{item.flgPivot},
+                #{item.flgPage},
+                #{item.flgProc},
+                #{item.flgDynamicCol},
             </trim>
             )
         </foreach>

+ 0 - 6
src/main/java/com/dk/report/model/pojo/CustomReport.java

@@ -90,12 +90,6 @@ public class CustomReport implements Serializable {
     @ApiModelProperty(value = "sql内容 (空时为有功能权限的全部工号)")
     private String sqlScript;
 
-    /**
-     * 是否分页
-     */
-    @Excel(name = "是否分页")
-    @ApiModelProperty(value = "是否分页")
-    private Boolean flgPage;
 
     /**
      * 报表状态

+ 20 - 0
src/main/java/com/dk/report/model/pojo/CustomReportSql.java

@@ -133,6 +133,26 @@ public class CustomReportSql extends PageInfo<CustomReportSql> implements Serial
     @ApiModelProperty(value = "显示顺序 (【1 ~ 46655】)")
     private Integer displayNo;
 
+    /**
+     * 是否分页
+     */
+    @Excel(name = "是否分页")
+    @ApiModelProperty(value = "是否分页")
+    private Boolean flgPage;
+
+    /**
+     * 是否为存储过程
+     */
+    @Excel(name = "是否为存储过程")
+    @ApiModelProperty(value = "是否为存储过程")
+    private Boolean flgProc;
+
+    /**
+     * 是否显示动态列
+     */
+    @Excel(name = "是否显示动态列")
+    @ApiModelProperty(value = "是否显示动态列")
+    private Boolean flgDynamicCol;
 
     /**
      * 有效标识 (1:正常 0:停用)

+ 0 - 7
src/main/java/com/dk/report/model/query/CustomReportQuery.java

@@ -196,13 +196,6 @@ public class CustomReportQuery extends PageInfo<CustomReportQuery> implements Se
     private String opDbUser;
 
     /**
-     * 是否分页
-     */
-    @Excel(name = "是否分页")
-    @ApiModelProperty(value = "是否分页")
-    private Boolean flgPage;
-
-    /**
      * 有效标识
      */
     @TableField(exist = false)

+ 0 - 7
src/main/java/com/dk/report/model/response/CustomReportResponse.java

@@ -218,13 +218,6 @@ public class CustomReportResponse extends PageInfo<CustomReportResponse> impleme
     private String opDbUser;
 
     /**
-     * 是否分页
-     */
-    @Excel(name = "是否分页")
-    @ApiModelProperty(value = "是否分页")
-    private Boolean flgPage;
-
-    /**
      * 查询条件设置
      */
     private List<CustomReportCondition> conditionList;

+ 20 - 0
src/main/java/com/dk/report/model/vo/CustomReportSqlVO.java

@@ -223,6 +223,26 @@ public class CustomReportSqlVO implements Serializable {
     @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
     private String opDbUser;
 
+    /**
+     * 是否分页
+     */
+    @Excel(name = "是否分页")
+    @ApiModelProperty(value = "是否分页")
+    private Boolean flgPage;
+
+    /**
+     * 是否分页
+     */
+    @Excel(name = "是否为存储过程")
+    @ApiModelProperty(value = "是否为存储过程")
+    private Boolean flgProc;
+
+    /**
+     * 是否显示动态列
+     */
+    @Excel(name = "是否显示动态列")
+    @ApiModelProperty(value = "是否显示动态列")
+    private Boolean flgDynamicCol;
 
     /**
      * 表格设置

+ 0 - 7
src/main/java/com/dk/report/model/vo/CustomReportVO.java

@@ -136,13 +136,6 @@ public class CustomReportVO implements Serializable {
     @ApiModelProperty(value = "工厂ID")
     private Integer ftyId;
 
-    /**
-     * 是否分页
-     */
-    @Excel(name = "是否分页")
-    @ApiModelProperty(value = "是否分页")
-    private Boolean flgPage;
-
 
     /**
      * 创建时间 (触发器自动处理)

+ 38 - 21
src/main/java/com/dk/report/service/CustomReportService.java

@@ -1,7 +1,9 @@
 package com.dk.report.service;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.enums.ErrorCodeEnum;
@@ -320,7 +322,10 @@ public class CustomReportService extends BaseService<CustomReport> {
         List<Map<String, Object>> list = new ArrayList<>();
         // 获取sqlId
         Integer sqlId = Integer.parseInt(param.get("sqlId").toString());
+        // 是否分页
         Boolean flgPage = Boolean.parseBoolean(param.get("flgPage").toString());
+        // 是否存储过程
+        Boolean flgProc = Boolean.parseBoolean(param.get("flgProc").toString());
         // 获取报表对应的sql
         String sqlString = customReportMapper.selectSqlById(sqlId);
         String sqlFinal = "";
@@ -342,24 +347,36 @@ public class CustomReportService extends BaseService<CustomReport> {
             }
             sqlString = sqlString.replaceAll("#\\{" + entry.getKey() + "}", value);
         }
-        sqlFinal = sqlString + " limit #{end} offset #{start} ";
+        // 不是存储过程才加,存储过程的分页在存储过程中做
+        if (flgPage && !flgProc) {
+            sqlFinal = sqlString + " limit #{end} offset #{start} ";
+        } else {
+            sqlFinal = sqlString;
+        }
+
         // 排序
-        if (param.get("subTotal") != null && ((List) param.get("subTotal")).size() > 0) {
+        if (!flgProc && param.get("subTotal") != null && ((List) param.get("subTotal")).size() > 0) {
             List<String> orderByParam = (List) param.get("subTotal");
             String orderByParamString = "\"" + String.join("\",\"", orderByParam) + "\"";
             sqlFinal = "select t.* from ( " + sqlFinal + " ) t ORDER BY " + orderByParamString;
         }
         param.put("sql", sqlFinal);
         list = customReportMapper.excuteSql(param);
+        if (list != null && list.size() == 1 && list.get(0).get("content") != null) {
+            list = JSON.parseObject(list.get(0).get("content").toString(), new TypeReference<List<Map<String, Object>>>() {});
+        }
         Integer count = list.size();
         // 分页时要计算合计数量
         if (flgPage) {
             // 只需要首页计算合计
             if (Integer.parseInt(param.get("currentPage").toString()) == 1) {
-                param.put("sql", "select count(1) count from (" + sqlString + ") t");
-                List<Map<String, Object>> listCount = customReportMapper.excuteSql(param);
-                if (listCount != null && listCount.size() > 0) {
-                    count = Integer.parseInt(listCount.get(0).get("count").toString());
+                // 非存储过程
+                if (!flgProc) {
+                    param.put("sql", "select count(1) count from (" + sqlString + ") t");
+                    List<Map<String, Object>> listCount = customReportMapper.excuteSql(param);
+                    if (listCount != null && listCount.size() > 0) {
+                        count = Integer.parseInt(listCount.get(0).get("count").toString());
+                    }
                 }
             }
         }
@@ -480,19 +497,19 @@ public class CustomReportService extends BaseService<CustomReport> {
     }
 
     /**
-     * @desc   : 导入sql文件并执行
+     * @desc : 导入sql文件并执行
      * @author : 洪旭东
-     * @date   : 2023-06-25 11:27
+     * @date : 2023-06-25 11:27
      */
     @Transactional(
             rollbackFor = {Exception.class}
     )
-    public ResponseResultVO<?> importSql(MultipartFile file){
+    public ResponseResultVO<?> importSql(MultipartFile file) {
         UserVO user = authUtils.getUser();
 
         if (file.isEmpty()) {
             return ResponseResultUtil.error();
-        }else{
+        } else {
             //删除旧数据
             Map<String, Object> map = new HashMap<>(2);
             map.put("fty_id", user.getFtyId());
@@ -508,13 +525,13 @@ public class CustomReportService extends BaseService<CustomReport> {
                 List<String> data = new ArrayList<>();
                 //当前行
                 String lineTxt;
-                while((lineTxt = bufferedReader.readLine()) != null){
+                while ((lineTxt = bufferedReader.readLine()) != null) {
                     data.add(lineTxt);
                 }
 
                 //读取每行内容保存
                 for (int i = 0; i < 3; i++) {
-                    switch (i){
+                    switch (i) {
                         case 0:
                             setReportSql(data.get(i), user);
                             break;
@@ -538,11 +555,11 @@ public class CustomReportService extends BaseService<CustomReport> {
     }
 
     /**
-     * @desc   : 自定义报表总表 保存
+     * @desc : 自定义报表总表 保存
      * @author : 洪旭东
-     * @date   : 2023-06-27 15:42
+     * @date : 2023-06-27 15:42
      */
-    private void setReportSql(String txt, UserVO user){
+    private void setReportSql(String txt, UserVO user) {
         List<CustomReport> array = JSONArray.parseArray(txt, CustomReport.class);
         //改工厂ID和userID
         array.forEach(it -> it.setFtyId(user.getFtyId()).setOpCreateUserId(Long.valueOf(user.getUserId())).setOpUpdateUserId(Long.valueOf(user.getUserId())));
@@ -550,11 +567,11 @@ public class CustomReportService extends BaseService<CustomReport> {
     }
 
     /**
-     * @desc   : 自定义报表条件 保存
+     * @desc : 自定义报表条件 保存
      * @author : 洪旭东
-     * @date   : 2023-06-27 15:42
+     * @date : 2023-06-27 15:42
      */
-    private void setConditionSql(String txt, UserVO user){
+    private void setConditionSql(String txt, UserVO user) {
         List<CustomReportCondition> array = JSONArray.parseArray(txt, CustomReportCondition.class);
         //改工厂ID和userID
         array.forEach(it -> it.setFtyId(user.getFtyId()).setOpCreateUserId(Long.valueOf(user.getUserId())).setOpUpdateUserId(Long.valueOf(user.getUserId())));
@@ -562,11 +579,11 @@ public class CustomReportService extends BaseService<CustomReport> {
     }
 
     /**
-     * @desc   : 自定义报表SQL、自定义报表表格 保存
+     * @desc : 自定义报表SQL、自定义报表表格 保存
      * @author : 洪旭东
-     * @date   : 2023-06-27 15:42
+     * @date : 2023-06-27 15:42
      */
-    private void setSqlSql(List<String> data, UserVO user){
+    private void setSqlSql(List<String> data, UserVO user) {
         List<CustomReportSql> array = JSONArray.parseArray(data.get(2), CustomReportSql.class);
         List<CustomReportTable> array2 = JSONArray.parseArray(data.get(3), CustomReportTable.class);
         array.forEach(it -> {

+ 138 - 0
src/main/resources/st/bootstrap.yml

@@ -0,0 +1,138 @@
+server:
+  port: 6004
+spring:
+  application:
+    name: report-server
+  cloud:
+    nacos:
+      config:
+        server-addr: 192.168.0.90:8848
+      discovery:
+        server-addr: 192.168.0.90:8848
+        ip: 192.168.0.90 #默认是局域网ip,固定为外网ip
+        namespace: mes-dev
+  datasource:
+    driver-class-name: org.postgresql.Driver
+    url: jdbc:postgresql://192.168.0.90:15100/dkmes3
+    username: dkmes
+    password: dk
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      initial-size: 10 # 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
+      max-active: 150 # 最大连接池连接数量,最大活跃连接数
+      min-idle: 10 # 最小连接池连接数量,最小空闲数量
+      max-wait: 300000   # 获取连接时最大等待时间,单位毫秒
+      # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
+      pool-prepared-statements: false
+      # 指定每个连接上PSCache的大小
+      # max-pool-prepared-statement-per-connection-size: 20
+      # 和上面的等价
+      # max-open-prepared-statements:
+      # 指定检测连接sql,如果是null,会影响testWhileIdle、testOnBorrow、testOnReturn失效,如果底层代码use-ping-method是true,默认使用ping
+      validation-query: SELECT 1
+      validation-query-timeout: 500
+      # 申请连接时会使用validationQuery检测连接是否有效,true会降低性能,如果是true,并且检测到连接已关闭,会获取其它的可用的连接
+      test-on-borrow: false
+      # 归还连接时会使用validationQuery检测连接是否有效,true会降低性能,如果是true,并且检测到连接已关闭,会获取其它的可用的连接,放回数据库线程池
+      test-on-return: false
+      # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果此连接空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
+      test-while-idle: true
+      # 1)配合testWhileIdle=true时使用,如果当前jdbc使用间隔大于timeBetweenEvictionRunsMillis配置的空闲连接过期时间,执行validationQuery检测连接是否有效。
+      # 数据库会主动超时并断开连接,因此建议timeBetweenEvictionRunsMillis小于数据库的连接主动断开时间(如mysql的wait_timeout和interactive_timeout)
+      # 2)配置间隔多久才进行一次检测,Destroy线程检测需要关闭的空闲连接的时间,单位是毫秒
+      time-between-eviction-runs-millis: 55000
+      # 配置一个连接在池中最小生存的时间,单位是毫秒
+      min-evictable-idle-time-millis: 30000
+      # max-evictable-idle-time-millis:
+      # 通过connectProperties属性来打开mergeSql功能;记录慢SQL
+      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
+      filters: slf4j #sql文不允许写#注释,只可以在xml中写 <!--  -->注释
+      stat-view-servlet:
+        enabled: true
+        login-username: dongke
+        login-password: dongke
+        url-pattern: /druid/*
+        reset-enable: false
+      web-stat-filter:
+        exclusions: "*.js,*.gif,*.jpg,*.css,/druid/*"
+  redis:
+    host: s.dev01.dkiboss.com
+    port: 14000
+    password: dk
+  zipkin:
+    base-url: http://s.dev01.dkiboss.com:9411/
+    discovery-client-enabled: false
+    sleuth:
+      sampler:
+        probability: 1
+  servlet:
+    multipart:
+      max-file-size: 10MB
+
+logback:
+  file: /home/java_project/dk_mes/${spring.application.name}/${spring.application.name}_logs
+
+feign:
+  sentinel:
+    enabled: true
+  client:
+    config:
+      default:
+        connectTimeout: 60000
+        readTimeout: 60000
+
+mybatis-plus:
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    map-underscore-to-camel-case: true
+  type-aliases-package: com.dk.oauth.dto,com.dk.common.infrastructure.handler #类型转换器包名
+  mapper-locations: classpath:/mapper/**/*Mapper.xml,com/hegii/scrm/common/mapper/opinfo/*.xml
+
+mybatis:
+  config-location: classpath:mybatis-config.xml
+
+swagger:
+  enabled: true
+
+wx:
+  code2Session: https://qyapi.weixin.qq.com/cgi-bin/miniprogram/jscode2session?
+  accessToken: https://qyapi.weixin.qq.com/cgi-bin/gettoken?
+  appId: wx414cffd0fc05e151
+  appSecret: 868ec372b9da961eb42989559bc9ccc5
+  apiUrl: https://api.weixin.qq.com/sns/jscode2session?
+  #  企信企业id
+  corpid: ww796c5d1684937b2f
+  #  获取企业标签库
+  corp_tag_list: https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_corp_tag_list?access_token=
+  #  添加企业客户标签
+  add_corp_tag: https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_corp_tag?access_token=
+  #  编辑企业客户标签
+  edit_corp_tag: https://qyapi.weixin.qq.com/cgi-bin/externalcontact/edit_corp_tag?access_token=
+  #  删除企业客户标签
+  del_corp_tag: https://qyapi.weixin.qq.com/cgi-bin/externalcontact/del_corp_tag?access_token=
+
+dongke:
+  base:
+    pojo:
+      valid-key: flg_valid  #db有效标识
+      is-valid: true  #表示有效的值
+      un-valid: false  #表示无效的值
+      delete-key: flg_del  #db删除标识
+      is-delete: true  #表示删除的值
+      un-delete: false  #表示未删除的值
+    dynamic-ds:
+      ds-key: DS
+    ds:
+      table-name:
+
+#  单点登录是否开启
+single-sign-on: false
+uploadPath: ''
+printTemplatePath : ''
+
+aes-key: b6f64c1001b04b9f
+client-app-id: 48849faf-8bbb-4a29-9548-0ba1c3df963f
+excel-folder: /home/java_project/dk_mes/mdm-server/excel/
+#  自定义报表导出sql文件路径
+custom-report-sql: /home/java_project/dk_mes/sql/custom-report-sql.sql
+