johnswang
2021-11-21 90e9e5f9137bd808290a67ff72408648b643bf90
Merge branch 'dev' of http://wangxs@yc100.xicp.net:9090/r/eCoWorksV3.git into dev
13个文件已修改
768 ■■■■■ 已修改文件
WebRoot/.well-known/apple-app-site-association 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/apple-app-site-association 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/demo/demoList.jsp 633 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/js/hotkey.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/js/panel.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/action/panval/InvGet.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/api/controller/QrCodeController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/multiData/MultiDataSource.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/meitao/MeiTaoController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/wms/service/WMSServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/service/demo/DemoImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/service/panel/PanelValueImpl.java 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/dataSource/_dataSource.xml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/.well-known/apple-app-site-association
@@ -4,7 +4,7 @@
        "details": [
            {
                "appID": "C2NXR459SL.com.yc.onbus.erp",
                "paths": [ "/wechat/*","/app/*"]
                "paths": [ "/wechat/*","/app/*","/qq_conn/1112135818/*"]
            }
        ]
    }
WebRoot/apple-app-site-association
@@ -4,7 +4,7 @@
        "details": [
            {
                "appID": "C2NXR459SL.com.yc.onbus.erp",
                "paths": [ "/wechat/*","/app/*"]
                "paths": [ "/wechat/*","/app/*","/qq_conn/1112135818/*"]
            }
        ]
    }
WebRoot/demo/demoList.jsp
@@ -1,306 +1,371 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@page import="com.yc.sdk.shopping.util.SettingKey"%>
    <%@page import="com.yc.utils.SessionKey"%>
    <%
    String URL = SettingKey.getHostUrl(request) ;
    String dbid=(String)request.getSession().getAttribute(SessionKey.DATA_BASE_ID);
         pageEncoding="UTF-8" %>
<%@page import="com.yc.sdk.shopping.util.SettingKey" %>
<%@page import="com.yc.utils.SessionKey" %>
<%
    String URL = SettingKey.getHostUrl(request);
    String dbid = (String) request.getSession().getAttribute(SessionKey.DATA_BASE_ID);
    String wxQuery = SettingKey.getQueryStringByWx(request);
    wxQuery=(wxQuery==null || wxQuery.equals("")?"":"&"+wxQuery);
    %>
    wxQuery = (wxQuery == null || wxQuery.equals("") ? "" : "&" + wxQuery);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>数据源列表</title>
  <link    href="<%=URL %>/layui/css/layui.css?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/layui/css/layui.css")%>" rel="stylesheet">
  <script src="<%=URL %>/js/jquery-1.4.4.min.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/js/jquery-1.4.4.min.js")%>"></script>
  <script src="<%=URL %>/layui/layui.all.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/layui/layui.all.js")%>"></script>
  <script src="<%=URL %>/js/encode.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/js/encode.js")%>" type="text/javascript" ></script>
  <style type="text/css">
  .demoTable{
  margin: 15px;
  }
  .demoTables{
  margin: 15px 15px 5px 15px;
  }
    .layuitab{
      margin: 10px;
  }
  </style>
    <meta charset="UTF-8">
    <title>数据源列表</title>
    <link href="<%=URL %>/layui/css/layui.css?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/layui/css/layui.css")%>"
          rel="stylesheet">
    <script src="<%=URL %>/js/jquery-1.4.4.min.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/js/jquery-1.4.4.min.js")%>"></script>
    <script src="<%=URL %>/layui/layui.all.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/layui/layui.all.js")%>"></script>
    <script src="<%=URL %>/js/encode.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/js/encode.js")%>"
            type="text/javascript"></script>
    <style type="text/css">
        .demoTable {
            margin: 15px;
        }
        .demoTables {
            margin: 15px 15px 5px 15px;
        }
        .layuitab {
            margin: 10px;
        }
        .layui-input-block {
            width: 90px;
            margin-left: 0px;
        }
        #activeds{
            border-color: #D2D2D2!important;
            border-radius: 2px;
            width: 90px;
            height: 38px;
            color: #666565;
        }
    </style>
</head>
<body>
<%
if("338".equals(dbid)){//338为onbus.onbus.cn域名
    if ("338".equals(dbid)) {//338为onbus.onbus.cn域名
%>
<div class="demoTable">
 搜索: <div class="layui-inline" style="width:300px;">
          <input class="layui-input" name="id" id="demoReload" data-type="search" autocomplete="off" placeholder="账套名称 / 数据库名称 / 域名 / 备注">
       </div>
       <button class="layui-btn" data-type="search">搜索</button>
<%--    <form class="layui-form">--%>
        搜索:
        <div class="layui-inline" style="width:300px;">
            <input class="layui-input" name="id" id="demoReload" data-type="search" autocomplete="off"
                   placeholder="账套名称 / 数据库名称 / 域名 / 备注">
        </div>
        <div class="layui-form-item layui-inline" style="margin: 0px">
            <%--            <label class="layui-form-label">条件:</label>--%>
            <div class="layui-input-block">
                <select name="activeds" id="activeds" lay-filter="aihao">
                    <option value="" selected>所有</option>
                    <option value="1">启用</option>
                    <option value="0">停用</option>
                </select>
            </div>
        </div>
        <button class="layui-btn" data-type="search">搜索</button>
<%--    </form>--%>
</div>
<%} %>
<div class="demoTables">
<button class="layui-btn layui-btn-sm" data-type="reload">刷新</button>
<%
if("338".equals(dbid)){//338为onbus.onbus.cn域名
%>
<button class="layui-btn layui-btn-sm" data-type="configuration">生成配置文件</button>
<button class="layui-btn layui-btn-sm" data-type="newadd">新增</button>
<button class="layui-btn layui-btn-sm" data-type="democonfiguration">生成demo配置</button>
<button class="layui-btn layui-btn-sm" data-type="updatepwd">修改数据源登录密码</button>
<button class="layui-btn layui-btn-sm" data-type="synchronization">同步数据源</button>
<button class="layui-btn layui-btn-sm" data-type="reloaddbid">刷新数据库使用情况</button>
<%} %>
    <button class="layui-btn layui-btn-sm" data-type="reload">刷新</button>
    <%
        if ("338".equals(dbid)) {//338为onbus.onbus.cn域名
    %>
    <button class="layui-btn layui-btn-sm" data-type="configuration">生成配置文件</button>
    <button class="layui-btn layui-btn-sm" data-type="newadd">新增</button>
    <button class="layui-btn layui-btn-sm" data-type="democonfiguration">生成demo配置</button>
    <button class="layui-btn layui-btn-sm" data-type="updatepwd">修改数据源登录密码</button>
    <button class="layui-btn layui-btn-sm" data-type="synchronization">同步数据源</button>
    <button class="layui-btn layui-btn-sm" data-type="reloaddbid">刷新数据库使用情况</button>
    <%} %>
</div>
<div class="layuitab">
   <table class="layui-hide" id="demolist" lay-filter="demo"></table>
    <table class="layui-hide" id="demolist" lay-filter="demo"></table>
</div>
<script type="text/html" id="barDemo">
  <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
  <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
    <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
</body>
<script type="text/javascript">
$(function(){
    <% if(!(session.getAttribute(SessionKey.DEMO_REF)!=null&&session.getAttribute(SessionKey.DEMO_REF).equals(SessionKey.DEMO_REF))){  %>
     if(!(parent&&parent.parent_open&&parent.parent_open=="true")){
         window.location.href='/home.jsp';
     }
   <% }//处理不让不属好的项目直接打开路径,哪怕他有权限也不行 %>
    var table = layui.table;
    var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
    var $ = layui.$;
     //方法级渲染
      table.render({
        elem: '#demolist',
        url: '/demolistindex.do',
        cols: [[
           {field:'systemID', title: '账套名称',align:'center',sort: true,width:180,fixed: 'left'}
           ,{field:'actived', title: '启用',align:'center',sort: true,width:80,fixed: 'left',templet: function(t){
               return (t.actived && (t.expiredDays==null || t.expiredDays<=0))?'<i class="layui-icon layui-icon-ok" style="color: #1ad141;font-weight: 600;"></i>':'<i class="layui-icon layui-icon-close" style="color: red;font-weight: 600;"></i>';
              }
           }
          ,{field:'host', align:'center',title: 'IP地址',sort: true,width:100,fixed: 'left',templet: function(t){
                  var h=t.host;
                  h=h.substring(h.lastIndexOf("."));
                  return '*.*.*'+h;
                  }
           }
          ,{field:'db', align:'center',title: '数据库名称',width:180,sort: true,fixed: 'left'}
          ,{field:'expiredDate', title: '到期日期',align:'center',sort: true,width:120,fixed: 'left',templet: function(t){
               return ((t.expiredDate!=null && t.expiredDate!='')?'<span style="'+((t.expiredDays!=null && t.expiredDays>0)?'color:red;':'')+'">'+t.expiredDate+'</span>':'');
              }
          }
          ,{field:'dataSize', align:'center',title: '数据文件占用空间(MB)',width:180,sort: true}
          ,{field:'logSize',align:'center', title: '日志文件占用空间(MB)',width:180,sort: true}
          ,{field:'totalSize', align:'center',title: '合计占用空间(MB)',width:180,sort: true}
          ,{field:'dataFreeSpace', align:'center',title: '数据文件剩余空间(MB)',width:180,sort: true}
          ,{field:'logFreeSpace', align:'center',title: '日志文件剩余空间(MB)',width:180,sort: true}
          ,{field:'totalFreeSpace', align:'center',title: '合计剩余空间(MB)',width:180,sort: true}
          ,{field:'freeSpaceRate', align:'center',title: '剩余空间占比(%)',width:180,sort: true}
          ,{field:'invitationCode', align:'center',title: '邀请码',width:100,sort: true}
          ,{field:'protocol', align:'center',title: '协议',width:80,sort: true}
          ,{field:'isAutoGenerateFormId', align:'center',title: '自动生成功能号',sort: true,templet: function(t){
               return t.isAutoGenerateFormId?'是':'否';
             }
          }
          ,{field:'domain', align:'center',title: '域名',sort: true,width:150}
          ,{field:'expiredDays', align:'center',title: '到期操作',sort: true,width:100,templet: function(t){
               return '<a class="layui-btn layui-btn-xs '+((!t.actived || (t.expiredDays!=null && t.expiredDays>0))?'layui-btn-danger" lay-event="play"':'" lay-event="pause"')+'>'+((!t.actived || (t.expiredDays!=null && t.expiredDays>0))?'启用系统':'停止系统')+'</a>';
             }}
           ,{field:'right', align:'center',title: '操作',toolbar: '#barDemo',width:120}
        ]],
        id: 'testReload',
        page:{
            groups:10
        },
        limit:10,//每页显示10条数据
        limits : [10,15,20,25,30],
        where: { //条件
            dbId:<%=dbid%>,
            Actived:null,
            orderby:'DataSize desc,LogSize desc'
        },
        height: 'full-150' //高度最大化减去差值
        //skin: 'row', //行边框风格 line (行边框风格)row (列边框风格)nob (无边框风格)
       // even:true,//若不开启隔行背景,不设置该参数即可
        //size:'sm'//用于设定表格尺寸,若使用默认尺寸不设置该属性即可 lg(大尺寸)
      });
      //搜索按钮
      $('.demoTable .layui-btn').on('click', function(){
        var type = $(this).data('type');
        active[type] ? active[type].call(this) : '';
      });
      //搜索回车
      $('.demoTable input').on('keydown', function(e){
          if(e.keyCode==13){
              var type = $(this).data('type');
              active[type] ? active[type].call(this) : '';
          }
      });
      //配置文件信息按钮
      $('.demoTables .layui-btn').on('click', function(){
        var type = $(this).data('type');
        active[type] ? active[type].call(this) : '';
      });
      //重载
      var active = {
              search: function(){
                  var demoReload = $('#demoReload');
                  //执行重载
                  table.reload('testReload', {
                    page: {
                      curr: 1 //重新从第 1 页开始
                    }
                    ,where: {
                        dbId:<%=dbid%>,
                        search: demoReload.val(),
                        Actived:null,
                        orderby:'DataSize desc,LogSize desc'
                    }
                  }, 'data');
                },
                configuration:function(){
                     $.post("/setXml.do",'',function(date){
                         layer.alert(JSON.stringify(date), {
                              title: '生成配置文件:'
                            });
                         });
                },
                reload:function(){
                     window.location.reload();
                },
                newadd:function(){
                    if(parent.addTab){
                         parent.addTab('新增','','','','/demo/update1.jsp?id=0&up=1','');
                     }else{
                         window.open('/demo/update1.jsp?id=0&up=1');
                     }
                },
                democonfiguration:function(){
                    if(parent.addTab){
                         parent.addTab('生成demo配置','','','','/demo/update.jsp?demoConfig=demo','');
                     }else{
                         window.open('/demo/update.jsp?demoConfig=demo');
                     }
                },
                updatepwd:function(){
                    if(parent.addTab){
                         parent.addTab('修改数据源登陆密码','','','','/demo/updatepass.jsp','');
                     }else{
                         window.open('/demo/updatepass.jsp');
                     }
                },
                synchronization:function(){
                     $.post('/SyncDataSource.do','',function(date){
                         layer.alert(JSON.stringify(date), {
                              title: '同步数据源'
                            });
                         });
                },
                reloaddbid:function(){//刷新数据库使用情况
                    $.ajax({
                        url: '<%=URL%>/shopping/maintaince/maintaince.do?m=refreshdsdatasize<%=wxQuery%>',
                        type: 'post',
                        data: '',
                        dataType: 'json',
                        beforeSend:'',//ajaxLoading,
                        success: function(json) {
                            if (json['hint']) {
                                layer.alert(json['hint'], {
                                      title: '刷新数据库使用情况'
                                    });
                            }
                            if (json['error']) {
                                 layer.alert(json['error'], {
                                      title: '刷新数据库使用情况'
                                    });
                                return ;
                            }
                            setTimeout(function() {
                                active['search'].call(this);
                              }, 1000);
                        },
                        error: function(xhr, ajaxOptions, thrownError) {
                            layer.alert(xhr.responseText, {
                                  title: '刷新数据库使用情况'
                                });
                        }
                    });
                }
      };
      //监听行工具事件
      table.on('tool(demo)', function(obj){
        var data = obj.data;
        if(obj.event === 'del'){//删除
            layer.confirm('确定删除【'+data.systemID+'】吗?', {
                  btn: ['确定', '取消'], //可以无限个按钮
                  closeBtn: 0,
                  btnAlign: 'c',
                  resize :false
                }, function(index, layero){
                    $.post("/doDelDemo.do",{"op":data.dbId},function(json){
                        if (json['hint']) {
                             layer.alert(json['hint'], {
                                 title: '删除:'
                               });
                        }
                        if (json['error']) {
                            layer.alert(json['error'], {
                                   title: '删除:'
                                 });
                            return ;
                        }
                          window.location.reload(true);
                      });
                });
        } else if(obj.event === 'edit'){//编辑
            parent.addTab('编辑【'+data.systemID+'】','','','','/demo/update1.jsp?up=1&id='+data.dbId,'');
        }else if(obj.event === 'play'){//启动系统
            SystemStartStop('start',data.dbId);
        }else if(obj.event === 'pause'){//停止系统
            layer.confirm('是否真的停止系统,如果选【确定】,则系统将立即停止访问?', {
                  btn: ['确定', '取消'], //可以无限个按钮
                  closeBtn: 0,
                  btnAlign: 'c',
                  resize :false
                }, function(index, layero){
                    SystemStartStop('stop',data.dbId);
                });
        }
      });
    //监听行双击事件(双击事件为:row)
      table.on('rowDouble(demo)', function(obj){
        var data = obj.data;
        parent.addTab('编辑【'+data.systemID+'】','','','','/demo/update1.jsp?up=1&id='+data.dbId,'');
      });
        //系统启停
      var SystemStartStop=function(action,dbid){
          $.ajax({
                 url: '<%=URL%>/shopping/maintaince/maintaince.do?m=StopAndStart&action='+action+'&<%=SessionKey.DATA_BASE_ID%>='+ dbid<%=wxQuery%>,
                 type: 'post',
                 data: '',
                 dataType: 'json',
                 beforeSend:'',//ajaxLoading,
                 success: function(json) {
                     if (json['hint']) {
                         layer.msg(json['hint']);
                     }
                     if (json['error']) {
                         layer.msg(json['error'].warning);
                     }
                     setTimeout(function() {
                         active['search'].call(this);
                       }, 1000);
                 },
                 error: function(xhr, ajaxOptions, thrownError) {
                     layer.msg(xhr.responseText);
                 }
             });
      }
});
    $(function () {
        <% if(!(session.getAttribute(SessionKey.DEMO_REF)!=null&&session.getAttribute(SessionKey.DEMO_REF).equals(SessionKey.DEMO_REF))){  %>
        if (!(parent && parent.parent_open && parent.parent_open == "true")) {
            window.location.href = '/home.jsp';
        }
        <% }//处理不让不属好的项目直接打开路径,哪怕他有权限也不行 %>
        var table = layui.table;
        var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
        var $ = layui.$;
        // form.render(); //更新全部
        //方法级渲染
        table.render({
            elem: '#demolist',
            url: '/demolistindex.do',
            cols: [[
                {field: 'systemID', title: '账套名称', align: 'center', sort: true, width: 180, fixed: 'left'}
                , {
                    field: 'actived',
                    title: '启用',
                    align: 'center',
                    sort: true,
                    width: 80,
                    fixed: 'left',
                    templet: function (t) {
                        return (t.actived && (t.expiredDays == null || t.expiredDays <= 0)) ? '<i class="layui-icon layui-icon-ok" style="color: #1ad141;font-weight: 600;"></i>' : '<i class="layui-icon layui-icon-close" style="color: red;font-weight: 600;"></i>';
                    }
                }
                , {
                    field: 'host',
                    align: 'center',
                    title: 'IP地址',
                    sort: true,
                    width: 100,
                    fixed: 'left',
                    templet: function (t) {
                        var h = t.host;
                        h = h.substring(h.lastIndexOf("."));
                        return '*.*.*' + h;
                    }
                }
                , {field: 'db', align: 'center', title: '数据库名称', width: 180, sort: true, fixed: 'left'}
                , {
                    field: 'expiredDate',
                    title: '到期日期',
                    align: 'center',
                    sort: true,
                    width: 120,
                    fixed: 'left',
                    templet: function (t) {
                        return ((t.expiredDate != null && t.expiredDate != '') ? '<span style="' + ((t.expiredDays != null && t.expiredDays > 0) ? 'color:red;' : '') + '">' + t.expiredDate + '</span>' : '');
                    }
                }
                , {field: 'dataSize', align: 'center', title: '数据文件占用空间(MB)', width: 180, sort: true}
                , {field: 'logSize', align: 'center', title: '日志文件占用空间(MB)', width: 180, sort: true}
                , {field: 'totalSize', align: 'center', title: '合计占用空间(MB)', width: 180, sort: true}
                , {field: 'dataFreeSpace', align: 'center', title: '数据文件剩余空间(MB)', width: 180, sort: true}
                , {field: 'logFreeSpace', align: 'center', title: '日志文件剩余空间(MB)', width: 180, sort: true}
                , {field: 'totalFreeSpace', align: 'center', title: '合计剩余空间(MB)', width: 180, sort: true}
                , {field: 'freeSpaceRate', align: 'center', title: '剩余空间占比(%)', width: 180, sort: true}
                , {field: 'invitationCode', align: 'center', title: '邀请码', width: 100, sort: true}
                , {field: 'protocol', align: 'center', title: '协议', width: 80, sort: true}
                , {
                    field: 'isAutoGenerateFormId',
                    align: 'center',
                    title: '自动生成功能号',
                    sort: true,
                    templet: function (t) {
                        return t.isAutoGenerateFormId ? '是' : '否';
                    }
                }
                , {field: 'domain', align: 'center', title: '域名', sort: true, width: 150}
                , {
                    field: 'expiredDays',
                    align: 'center',
                    title: '到期操作',
                    sort: true,
                    width: 100,
                    templet: function (t) {
                        return '<a class="layui-btn layui-btn-xs ' + ((!t.actived || (t.expiredDays != null && t.expiredDays > 0)) ? 'layui-btn-danger" lay-event="play"' : '" lay-event="pause"') + '>' + ((!t.actived || (t.expiredDays != null && t.expiredDays > 0)) ? '启用系统' : '停止系统') + '</a>';
                    }
                }
                , {field: 'right', align: 'center', title: '操作', toolbar: '#barDemo', width: 120}
            ]],
            id: 'testReload',
            page: {
                groups: 10
            },
            limit: 10,//每页显示10条数据
            limits: [10, 15, 20, 25, 30],
            where: { //条件
                dbId:<%=dbid%>,
                Actived: null,
                orderby: 'DataSize desc,LogSize desc'
            },
            height: 'full-150' //高度最大化减去差值
            //skin: 'row', //行边框风格 line (行边框风格)row (列边框风格)nob (无边框风格)
            // even:true,//若不开启隔行背景,不设置该参数即可
            //size:'sm'//用于设定表格尺寸,若使用默认尺寸不设置该属性即可 lg(大尺寸)
        });
        //搜索按钮
        $('.demoTable .layui-btn').on('click', function () {
            var type = $(this).data('type');
            active[type] ? active[type].call(this) : '';
        });
        //搜索回车
        $('.demoTable input').on('keydown', function (e) {
            if (e.keyCode == 13) {
                var type = $(this).data('type');
                active[type] ? active[type].call(this) : '';
            }
        });
        //配置文件信息按钮
        $('.demoTables .layui-btn').on('click', function () {
            var type = $(this).data('type');
            active[type] ? active[type].call(this) : '';
        });
        //重载
        var active = {
            search: function () {
                var demoReload = $('#demoReload');
                var activeds=$('#activeds[name=activeds]').val();
                //执行重载
                table.reload('testReload', {
                    page: {
                        curr: 1 //重新从第 1 页开始
                    }
                    , where: {
                        dbId:<%=dbid%>,
                        search: demoReload.val(),
                        Actived: activeds,
                        orderby: 'DataSize desc,LogSize desc'
                    }
                }, 'data');
            },
            configuration: function () {
                $.post("/setXml.do", '', function (date) {
                    layer.alert(JSON.stringify(date), {
                        title: '生成配置文件:'
                    });
                });
            },
            reload: function () {
                window.location.reload();
            },
            newadd: function () {
                if (parent.addTab) {
                    parent.addTab('新增', '', '', '', '/demo/update1.jsp?id=0&up=1', '');
                } else {
                    window.open('/demo/update1.jsp?id=0&up=1');
                }
            },
            democonfiguration: function () {
                if (parent.addTab) {
                    parent.addTab('生成demo配置', '', '', '', '/demo/update.jsp?demoConfig=demo', '');
                } else {
                    window.open('/demo/update.jsp?demoConfig=demo');
                }
            },
            updatepwd: function () {
                if (parent.addTab) {
                    parent.addTab('修改数据源登陆密码', '', '', '', '/demo/updatepass.jsp', '');
                } else {
                    window.open('/demo/updatepass.jsp');
                }
            },
            synchronization: function () {
                $.post('/SyncDataSource.do', '', function (date) {
                    layer.alert(JSON.stringify(date), {
                        title: '同步数据源'
                    });
                });
            },
            reloaddbid: function () {//刷新数据库使用情况
                $.ajax({
                    url: '<%=URL%>/shopping/maintaince/maintaince.do?m=refreshdsdatasize<%=wxQuery%>',
                    type: 'post',
                    data: '',
                    dataType: 'json',
                    beforeSend: '',//ajaxLoading,
                    success: function (json) {
                        if (json['hint']) {
                            layer.alert(json['hint'], {
                                title: '刷新数据库使用情况'
                            });
                        }
                        if (json['error']) {
                            layer.alert(json['error'], {
                                title: '刷新数据库使用情况'
                            });
                            return;
                        }
                        setTimeout(function () {
                            active['search'].call(this);
                        }, 1000);
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                        layer.alert(xhr.responseText, {
                            title: '刷新数据库使用情况'
                        });
                    }
                });
            }
        };
        //监听行工具事件
        table.on('tool(demo)', function (obj) {
            var data = obj.data;
            if (obj.event === 'del') {//删除
                layer.confirm('确定删除【' + data.systemID + '】吗?', {
                    btn: ['确定', '取消'], //可以无限个按钮
                    closeBtn: 0,
                    btnAlign: 'c',
                    resize: false
                }, function (index, layero) {
                    $.post("/doDelDemo.do", {"op": data.dbId}, function (json) {
                        if (json['hint']) {
                            layer.alert(json['hint'], {
                                title: '删除:'
                            });
                        }
                        if (json['error']) {
                            layer.alert(json['error'], {
                                title: '删除:'
                            });
                            return;
                        }
                        window.location.reload(true);
                    });
                });
            } else if (obj.event === 'edit') {//编辑
                parent.addTab('编辑【' + data.systemID + '】', '', '', '', '/demo/update1.jsp?up=1&id=' + data.dbId, '');
            } else if (obj.event === 'play') {//启动系统
                SystemStartStop('start', data.dbId);
            } else if (obj.event === 'pause') {//停止系统
                layer.confirm('是否真的停止系统,如果选【确定】,则系统将立即停止访问?', {
                    btn: ['确定', '取消'], //可以无限个按钮
                    closeBtn: 0,
                    btnAlign: 'c',
                    resize: false
                }, function (index, layero) {
                    SystemStartStop('stop', data.dbId);
                });
            }
        });
        //监听行双击事件(双击事件为:row)
        table.on('rowDouble(demo)', function (obj) {
            var data = obj.data;
            parent.addTab('编辑【' + data.systemID + '】', '', '', '', '/demo/update1.jsp?up=1&id=' + data.dbId, '');
        });
        //系统启停
        var SystemStartStop = function (action, dbid) {
            $.ajax({
                url: '<%=URL%>/shopping/maintaince/maintaince.do?m=StopAndStart&action=' + action + '&<%=SessionKey.DATA_BASE_ID%>=' + dbid<%=wxQuery%>,
                type: 'post',
                data: '',
                dataType: 'json',
                beforeSend: '',//ajaxLoading,
                success: function (json) {
                    if (json['hint']) {
                        layer.msg(json['hint']);
                    }
                    if (json['error']) {
                        layer.msg(json['error'].warning);
                    }
                    setTimeout(function () {
                        active['search'].call(this);
                    }, 1000);
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    layer.msg(xhr.responseText);
                }
            });
        }
    });
</script>
</html>
WebRoot/js/hotkey.js
@@ -1825,7 +1825,7 @@
            }
            get.timer = setTimeout(function () {
                get.ShowDivForPanel(elem, panInfo[elem.id], rod);
            }, 2000);
            }, 1000);
        });
    }
};
WebRoot/js/panel.js
@@ -898,6 +898,10 @@
                                    for ( var j = 0; j < info.length; j++) {
                                        if (info[j].filed == filedIs) {// 查看此按钮的设置
                                            bzc = (info[j].value == "1") ? true : false;
                                            if (info[j].value == "1") {//这里判断把,放在下面bzc判断有问题。xin 2021-11-20 11:19:03
                                                //显示审核按钮 xin 2021-10-21 17:23:17
                                                $(".OAVerify").css("display", "inline-block");
                                            }
                                            break;
                                        }
                                    }
@@ -906,8 +910,6 @@
                                    // pan = this.zhuYi(filedIs, readIs[3],
                                    // docstatePan,
                                    // 'curchecked', db);
                                    //显示审核按钮 xin 2021-10-21 17:23:17
                                    $(".OAVerify").css("display","inline-block");
                                } else {
                                    bzc = true;
                                    pan = true;// 则为隐藏
src/com/yc/action/panval/InvGet.java
@@ -15,6 +15,7 @@
import com.yc.factory.FactoryBean;
import com.yc.im.service.RedisDAO;
import com.yc.im.util.RedisSocket;
import com.yc.multiData.JdbcPoolConfig;
import com.yc.multiData.MultiDataSource;
import com.yc.multiData.SpObserver;
import com.yc.sdk.password.action.ChangePassword;
@@ -93,13 +94,14 @@
    private  final Logger log = LoggerFactory.getLogger(this.getClass());
    public FileAndFolderOper FAFO = new FileAndFolderOper();
    public static String driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    public static Integer initialPoolSize = 5 ;
    public static Integer minPoolSize = 5 ;
    public static Integer maxPoolSize = 50 ;
    public static Integer acquireIncrement = 5 ;
    public static Integer maxIdleTime = 1800 ;
    public static Integer idleConnectionTestPeriod = 1800 ;
    public static Integer maxStatements = 0 ;
    public static Integer initialPoolSize = Integer.parseInt(JdbcPoolConfig.get("cop3.initialPoolSize")); //5 ;
    public static Integer minPoolSize = Integer.parseInt(JdbcPoolConfig.get("cop3.minPoolSize"));//5 ;
    public static Integer maxPoolSize = Integer.parseInt(JdbcPoolConfig.get("cop3.maxPoolSize"));//50 ;
    public static Integer acquireIncrement =Integer.parseInt(JdbcPoolConfig.get("cop3.acquireIncrement"));// 5 ;
    public static Integer maxIdleTime = Integer.parseInt(JdbcPoolConfig.get("cop3.maxIdleTime"));//1800 ;
    public static Integer idleConnectionTestPeriod = Integer.parseInt(JdbcPoolConfig.get("cop3.idleConnectionTestPeriod"));//1800 ;
    public static Integer maxStatements = Integer.parseInt(JdbcPoolConfig.get("cop3.maxStatements"));//0 ;
    @RequestMapping("/inv.do")
    public void login(int id, String where, String sel, String get, HttpServletRequest request, HttpServletResponse response) throws IOException, SQLException {
src/com/yc/api/controller/QrCodeController.java
@@ -639,7 +639,7 @@
        //---检查权限
        if (Integer.parseInt(request.getSession().getAttribute(SessionKey.SUPPER_USER) + "") == 0) {
            final Map attribute = (Map) request.getSession().getAttribute(SessionKey.PERSSION);
            if (!attribute.containsKey(formid)) {
            if (!attribute.containsKey(formid+"")) {// TODO key为String类型,containsKey传的参数类型也要强制转换成String类型 ,不然会出现本来是存在,又找不到的情况,特别注意
                //不存在于权限集合表示不需要输出
                throw new ApplicationException("没有新增客户资料的权限");
            }
src/com/yc/multiData/MultiDataSource.java
@@ -789,15 +789,15 @@
            
            cpds.setUser(dataSourceEntity.getUserid());
            cpds.setPassword(plainTextPassword);
            if (demoDataSource != null) {
                cpds.setInitialPoolSize(demoDataSource.getInitialPoolSize());
                cpds.setMinPoolSize(demoDataSource.getMinPoolSize());
                cpds.setMaxPoolSize(demoDataSource.getMaxPoolSize());
                cpds.setAcquireIncrement(demoDataSource.getAcquireIncrement());
                cpds.setMaxIdleTime(demoDataSource.getMaxIdleTime());
                cpds.setIdleConnectionTestPeriod(demoDataSource.getIdleConnectionTestPeriod());
                cpds.setMaxStatements(demoDataSource.getMaxStatements());
            }else {
//            if (demoDataSource != null) {
//                cpds.setInitialPoolSize(demoDataSource.getInitialPoolSize());
//                cpds.setMinPoolSize(demoDataSource.getMinPoolSize());
//                cpds.setMaxPoolSize(demoDataSource.getMaxPoolSize());
//                cpds.setAcquireIncrement(demoDataSource.getAcquireIncrement());
//                cpds.setMaxIdleTime(demoDataSource.getMaxIdleTime());
//                cpds.setIdleConnectionTestPeriod(demoDataSource.getIdleConnectionTestPeriod());
//                cpds.setMaxStatements(demoDataSource.getMaxStatements());
//            }else {
                cpds.setInitialPoolSize(InvGet.initialPoolSize); //   demoDataSource.getInitialPoolSize());
                cpds.setMinPoolSize(InvGet.minPoolSize) ;//   demoDataSource.getMinPoolSize());
                cpds.setMaxPoolSize(InvGet.maxPoolSize) ; // demoDataSource.getMaxPoolSize());
@@ -809,7 +809,7 @@
                //cpds.setTestConnectionOnCheckout(true);  //避免抛出 DataAccessResourceFailureException 例外时提示:“The connection is closed” 或 “该连接已关闭”
                //cpds.setPreferredTestQuery("select 'Testing connection from java connection pool'");  //避免抛出 DataAccessResourceFailureException 例外时提示:“The connection is closed” 或 “该连接已关闭”
            }
            //}
            cpds.resetPoolManager();
            // TODO 连接需要增加信息 在此后面添加 暂时不做处理
            String dbId = dataSourceEntity.getDemoDataSource()!=null&&!"".equals(dataSourceEntity.getDemoDataSource())?dataSourceEntity.getDemoDataSource(): dataSourceEntity.getDbId()+"" ;
src/com/yc/open/meitao/MeiTaoController.java
@@ -12,6 +12,7 @@
import com.yc.open.deli.service.PostDataBaseService;
import com.yc.open.jinwu.entity.T110565Entity;
import com.yc.open.jinwu.service.JinWuBaseService;
import com.yc.open.jinwu.service.JinWuBaseServiceIfc;
import com.yc.open.utils.ApiUtils;
import com.yc.open.utils.CallBackMessageToObject;
import com.yc.service.grid.GridServiceIfc;
@@ -35,8 +36,6 @@
 */
@RestController
public class MeiTaoController extends BaseController {
    @Autowired
    JinWuBaseService mJinWuBaseService;
@Autowired
  MeiTaoServiceIfc mMeiTaoServiceIfc;
    final Logger log = LoggerFactory.getLogger(this.getClass());
@@ -52,10 +51,11 @@
        //验证已在filter里面做,这里只需要处理业务逻辑
        CallBackMessage callBackMessage=new CallBackMessage();
        String data=null;
        JinWuBaseService mJinWuBaseService= (JinWuBaseService) FactoryBean.getBean("jinWuBaseService");
        try {
            Object dbid =request.getAttribute(SessionKey.SHOPPING_DBID);
            SpObserver.setDBtoInstance("_"+dbid);
            data=URLDecoder.decode(request.getParameter("data"),"utf-8");
            SpObserver.setDBtoInstance("_" + dbid);
            Sale sale=new Gson().fromJson(data,new com.google.gson.reflect.TypeToken<Sale>() {}.getType() );
            if(sale!=null) {
                StringBuilder sb=new StringBuilder();
src/com/yc/open/wms/service/WMSServiceImpl.java
@@ -1562,7 +1562,7 @@
                    " select @errMsg=null,@rowId=null,@matCode =null,@price =null,@cv2 =null,@tCcode =null,@itemMemo=null,@matName =null,\n" +
                            " @Barcode =null,@Brand =null,@Stcode =null,@stname =null,@UOM =null,@baseuom =null,@netprice =null,@TrademarkPrice =null,@special =null,@weight =null,@matgroup =null,@matgroupname =null,@TCname =null ,@TaxPrice =null ,@pricetype =null ,@totalmoney2=null,@discount =null,@whcode =null  ,@Pricerefcodeitem =null ,@Pricerefrowid =null ,@Pricerefcodeformid =null,@Poformid =null,@PoDocCode=null, @POrowid=null\n" +
                            " select @MatCode =" + GridUtils.prossSqlParm(detailEntity.getMatCode()) + ",@Poformid=" + detailEntity.getRefCodeFormId() + ",@PoDocCode=" + GridUtils.prossSqlParm(detailEntity.getRefCodeItem()) + ",@Porowid =" + GridUtils.prossSqlParm(detailEntity.getRefRowid()) + ",@digit=" + detailEntity.getDigit() + ",@itemMemo=" + GridUtils.prossSqlParm(detailEntity.getItemMemo()) + ",@cv1=" + GridUtils.prossSqlParm(detailEntity.getCv1()) + ",@cv2=" + GridUtils.prossSqlParm(detailEntity.getCv2()) + ",@digit=" + detailEntity.getDigit() + ",@freeSODigit=" + detailEntity.getFreeSODigit() + ",@squareNum=" + detailEntity.getSquareNum() + ",@Stcode=" + GridUtils.prossSqlParm(detailEntity.getStCode()) + ",@stname=" + GridUtils.prossSqlParm(detailEntity.getStName()) + "\n" +
                            " update a set a.itemMemo=@itemMemo,a.cv1=@cv1,a.cv2=@cv2,a.digit=@digit,a.squareNum=@squareNum,a.stcode=@stcode,a.stname=@stName,a.freeSODigit=@freeSODigit from t140101D a where a.DocCode=@doccode and a.MatCode=@matCode and a.PoDocCode=@PoDocCode and a.Porowid=@Porowid \n";
                            " update a set a.itemMemo=@itemMemo,a.cv1=@cv1,a.cv2=@cv2,a.digit=@digit,a.squareNum=@squareNum,a.stcode=@stcode,a.stname=@stName,a.MoneyType = case when isnull(FreeSODigit,0) <> isnull(@digit,0) then 1 else a.MoneyType end from t140101D a where a.DocCode=@doccode and a.MatCode=@matCode and a.PoDocCode=@PoDocCode and a.Porowid=@Porowid \n";
        }
        return sql;
src/com/yc/service/demo/DemoImpl.java
@@ -110,7 +110,8 @@
                + " from gsystem a \n"
                + " where 1 = 1 "
                + (demoConstant != null && demoConstant.getDbId()!= null ? " and a.id = " + demoConstant.getDbId():"") 
                + (demoConstant != null && demoConstant.getActived()!= null ? " and isnull(a.actived,0) = " + demoConstant.getActived():"")
                + (demoConstant != null && demoConstant.getActived()!= null ? " and (isnull(a.actived,0) = " + demoConstant.getActived()+
                  (demoConstant.getActived()==0?" or isnull(DATEDIFF(day,a.expiredDate,getdate()),0)>0)":" and isnull(DATEDIFF(day,a.expiredDate,getdate()),0)<=0)"):"")
                + (demoConstant != null && demoConstant.getDomain()!= null ? " and ';'+isnull(a.domain,'')+';' like '%;" + demoConstant.getDomain() + ";%'":"")
                + (demoConstant != null && demoConstant.getSearch()!= null ? " and (';'+isnull(a.systemID,'')+';' like '%" + demoConstant.getSearch() + "%' or "
                + "';'+isnull(a.db,'')+';' like '%" + demoConstant.getSearch() + "%' or"
src/com/yc/service/panel/PanelValueImpl.java
@@ -215,15 +215,20 @@
            where = (where != null && !"".equals(where.trim())) ? " where " + where : "";
            sugg = sugg.replace(";", ",");
            String[] su = sugg.split(",");
            String sql = "select top " + limit + " COUNT(1) OVER() as count," + sugg + " from ";
            String sql1 = " " + where + " and (" + su[0] + " not in (select top ((" + page + "-1)*" + limit + ") " + su[0] + " from ";
            String sql2 = " " + where + " order by " + su[0] + " desc)) order by " + su[0] + " desc";
            List<Map<String, Object>> list = getStrAll42SqlList(sql, sql1, sql2, tableMap);
            //注释掉 xin 2021-11-20 10:05:55
//            String sql = "select top " + limit + " COUNT(1) OVER() as count," + sugg + " from ";
//            String sql1 = " " + where + " and (" + su[0] + " not in (select top ((" + page + "-1)*" + limit + ") " + su[0] + " from ";
//            String sql2 = " " + where + " order by " + su[0] + " desc)) order by " + su[0] + " desc";
//            List<Map<String, Object>> list = getStrAll42SqlList(sql, sql1, sql2, tableMap);
            //下面是从新写过的分页查询 xin 2021-11-20 10:06:00
            String sql="select * from (select top "+limit+" * from (select top ("+page+"*"+limit+") count(1) over() as row_total," +sugg+" from ";
            String sql1=" "+where+" order by "+su[0]+" asc) as a order by a."+su[0]+" desc) as b order by b."+su[0]+" asc";
            List<Map<String, Object>> list = getStrAll42SqlList(sql, sql1, tableMap);
            Map<String, Object> dataMap = new HashMap<>();
            dataMap.put("count", 0);
            dataMap.put("data", "");
            if (list.size() > 0) {
                dataMap.put("count", DBHelper.getValueInt(list.get(0), "count") + (limit * (page - 1)));
                dataMap.put("count", DBHelper.getValueInt(list.get(0), "row_total"));
                dataMap.put("data", list);
            }
            return GridUtils.toJson(dataMap);
@@ -234,22 +239,43 @@
    }
    /**
     * 查询42控件需要到的信息
     * 查询42控件需要到的信息(新) xin 2021-11-20 10:08:06
     * 这个为最新
     * @param sql
     * @param sql1
     * @param map
     * @return
     */
    private List<Map<String,Object>> getStrAll42SqlList(String sql,String sql1,Map<String,Object> map){
        try {
            return jdbcTemplate.queryForList(sql + DBHelper.getValue(map, "HDTable") + sql1);
        } catch (Exception e) {//这里如果出现异常说明查询上面的主表出错了,那么执行下面查询从表信息,如果有异常那就抛出异常
            try {
                return jdbcTemplate.queryForList(sql + DBHelper.getValue(map, "dttable") + sql1);
            } catch (Exception e1) {
                throw e1;
            }
        }
    }
    /**
     * 查询42控件需要到的信息(旧)
     * 这个方法和上面注释一样 xin 2021-11-20 10:07:48
     * @param sql
     * @param sql1
     * @param sql2
     * @param map
     * @return
     */
    private  List<Map<String, Object>> getStrAll42SqlList(String sql,String sql1,String sql2,Map<String,Object> map){
        try {
            return jdbcTemplate.queryForList(sql + DBHelper.getValue(map, "HDTable") + sql1 + DBHelper.getValue(map, "HDTable") + sql2);
        } catch (Exception e) {//这里如果出现异常说明查询上面的主表出错了,那么执行下面查询从表信息,如果有异常那就抛出异常
            try {
                return jdbcTemplate.queryForList(sql + DBHelper.getValue(map, "dttable") + sql1 + DBHelper.getValue(map, "dttable") + sql2);
            } catch (Exception e1) {
                throw e1;
            }
        }
    }
//    private  List<Map<String, Object>> getStrAll42SqlList(String sql,String sql1,String sql2,Map<String,Object> map){
//        try {
//            return jdbcTemplate.queryForList(sql + DBHelper.getValue(map, "HDTable") + sql1 + DBHelper.getValue(map, "HDTable") + sql2);
//        } catch (Exception e) {//这里如果出现异常说明查询上面的主表出错了,那么执行下面查询从表信息,如果有异常那就抛出异常
//            try {
//                return jdbcTemplate.queryForList(sql + DBHelper.getValue(map, "dttable") + sql1 + DBHelper.getValue(map, "dttable") + sql2);
//            } catch (Exception e1) {
//                throw e1;
//            }
//        }
//    }
}
src/dataSource/_dataSource.xml
@@ -3,15 +3,15 @@
<beans>
   <bean id="_dataSource" class="com.yc.dataAccess.ComboPooledDataSource" destroy-method="close">  
        <property name="driverClass" value="LTc3UEItNDFQQjcyUEIxMjNQQjIyUEItNVBCLTEwMFBCLTQ0UEI4MFBCOTZQQjk4UEItMzhQQjc5UEItMjJQQi0xMDdQQjQ3UEItOTVQQi0zNlBCLTkwUEItMVBCLTEyUEItNjJQQjEzUEI2M1BCLTk5UEIzMFBCMzRQQi00NVBCLTg1UEI3UEIxMjVQQi01N1BCNjNQQjU2UEIyMFBCLTk5UEItMTI3UEItMlBCODlQQi00M1BCLTM3UEItNjRQQjIwUEItODZQQjY1UEItMTI2UEIxMDVQQjc3UEIxMjFQQi03OFBCLTI0UEIxMjdQQi0yNVBCLTg1UEIyUEItMTEyUEItOTFQQjU1UEItMjdQQi04MFBCMTE3UEItMTE2UEI0UEItOTBQQi0xMVBCOTRQQi0xNVBCMTI2UEItMTI1UEItMjFQQjIzUEIzN1BCLTFQQi00MVBCNjJQQi04MlBCLTkxUEItM1BCOTlQQi0xMjZQQi04N1BCLTExMFBCMTVQQjQ4UEI1MlBCLTI1UEItODVQQjE4UEItNjBQQi05MlBCMzFQQjQ4UEItMTE1UEIxMTJQQjk4UEIyM1BCNDNQQi0yUEI3NFBCN1BCLTk4UEI0OVBCMTAzUEI1MVBCLTEwNFBCNDVQQi03N1BCMzNQQjg1UEI5MlBCNjdQQjE3UEIxMDNQQjIwUEI5UEItODZQQi0zMVBCLTM5UEI4OFBCNjFQQi0yNFBCLTg5UEItMTAzUEI3NVBCLTMzUEI3NFBCLTY4UEItMTI1UEI4NlBCNzNQQjc5UEItNVBCLTFQQjdQQjJQQjExMVBCLTEyNFBCLTc3UEIxMjRQQi0yUEItNjRQQjMwUEIzNlBCLTIxUEIzMlBCOTRQQjgyUEItMTI2UEItMjJQQi00MFBCLTU0UEI1MVBCLTY1UEItOTFQQjgwUEItM1BCODJQQjcxUEItNTVQQi0xMDdQQi03MVBCLTcxUEItMThQQi0zNFBCLTQ0UEItNlBCLTExOVBCLTcyUEItMjVQQjkxUEI0MFBCNDlQQi0yM1BCLTRQQjgwUEIzMlBCLTYyUEI3MFBCLTExOFBCNjNQQjU5UEI5MlBCNjRQQjEyM1BCNzRQQjk2UEItMzhQQi0yM1BCLTc1UEI3NVBCLTIyUEI4MFBCNjNQQi0zMFBCLTgxUEItNDVQQjg2UEI1MVBCMTdQQjIxUEItODNQQjE5UEItMTE3UEIxMDFQQi0xMDdQQjhQQjExNlBCLTYyUEI1M1BCLTYzUEI5NVBCNDJQQjEyM1BCMTE3UEI4NlBCMFBCODRQQi05M1BCLTgzUEIzUEItMTRQQi03OFBCMTIyUEItMzc="/>
            <property name="jdbcUrl" value="LTFQQi0zMlBCLTRQQi00N1BCLTEzUEIzMlBCODZQQi0xMjJQQi0yNFBCNTlQQi0xMDhQQjc1UEI0N1BCLTMzUEItODlQQi0xMFBCLTkxUEI0NFBCLTUyUEItNTZQQi03UEI2N1BCLTEyNFBCOTlQQjk3UEItNjBQQjExNFBCLTExNVBCNzZQQjk0UEItNDRQQi0xMTJQQi05UEItMjBQQi0xMlBCLTUzUEIxMDJQQjE3UEIxMTdQQi0xMjFQQjczUEItMTIyUEItMTdQQi04OVBCMTExUEItNDFQQi04MFBCNTFQQi0xNFBCMjNQQjEyNlBCLTE2UEIxMjBQQi02OVBCLTE3UEI5NlBCMzVQQi0xMDRQQjEyNFBCMjRQQi04OFBCLTEyMlBCMTE4UEItNDRQQjFQQjY5UEItOTZQQjMwUEItNTZQQi0yN1BCLTY2UEItODlQQjEyUEI3MlBCLTUxUEItNzJQQi04M1BCMTJQQi03NlBCLTI1UEItMTA1UEIxMDJQQjUwUEIyNlBCLTMxUEIxMVBCLTU4UEIyNFBCLTQzUEItNzhQQjFQQjUwUEItMTI2UEI1UEI4NFBCNTJQQi01MVBCODNQQjExM1BCMjhQQjIzUEItMTRQQjdQQjEwUEI3UEI5MFBCLTM4UEIxMDhQQjMxUEItMTA2UEItMTA0UEItNzJQQi03MFBCODVQQi0xMDFQQjg0UEIxMDZQQi01MVBCLTMxUEIxMTRQQi01M1BCMjFQQi02N1BCLTQyUEI2MVBCNjZQQjExOVBCMFBCLTEwMlBCMlBCOTZQQjExUEItMjNQQi0xMDZQQi05MFBCLTExOFBCMTE1UEI5MVBCLTQwUEI1MlBCMTE4UEI4OVBCLTc4UEIyM1BCLTU5UEItNzRQQjU4UEItMjhQQjExN1BCODZQQjI2UEItMTJQQi00NFBCLTEwMFBCLTU2UEItMjJQQi0zN1BCLTEyNlBCNjlQQi05OFBCODZQQi0xUEItNTVQQi0xNVBCNjRQQi0xMDNQQjgxUEItNzBQQi0xMTZQQi02N1BCM1BCLTExMlBCLTEwM1BCOTBQQjc2UEI1OFBCMTEwUEItMTVQQjU2UEIyUEItMTEyUEI3NlBCMTFQQjMyUEIxMTdQQi03NlBCLTEwNFBCMlBCMjNQQjEyN1BCMTE1UEItMzRQQjExMFBCMTI3UEItMThQQi04NlBCLTJQQjU3UEIxMDRQQi0xNlBCNzZQQjZQQi04NFBCMTEzUEI2OVBCLTEwNFBCLTgyUEIzMlBCNzdQQjQwUEIxMDRQQjEwM1BCLTgwUEItNDdQQi04UEI5NlBCOTRQQi0xMTNQQjk3UEIyNFBCLTEwMFBCLTkxUEIyMFBCMTE3UEI5OFBCLTEyUEIxMFBCLTEyMFBCLTEwOFBCLTUyUEItODlQQjQ5UEItNjdQQjE5UEIxMjNQQi05N1BCLTM4UEI1OVBCOFBCODVQQi0xNFBCOTBQQi03NFBCLTc0UEItMTdQQjE3UEIxMThQQjQzUEItODVQQjQ2UEI1NlBCLTUyUEI1N1BCLTIxUEItMTEyUEItOTJQQjJQQjlQQi03MFBCLTYzUEIxMjBQQi05UEI1MVBCMVBCNTVQQi0xMlBCMTI1UEItNlBCLTk0UEItMTA2UEIxMDFQQjc3"/>
            <property name="jdbcUrl" value="LTFQQi0zMlBCLTRQQi00N1BCLTEzUEIzMlBCODZQQi0xMjJQQi0yNFBCNTlQQi0xMDhQQjc1UEI0N1BCLTMzUEItODlQQi0xMFBCLTkxUEI0NFBCLTUyUEItNTZQQi03UEI2N1BCLTEyNFBCOTlQQjk3UEItNjBQQjExNFBCLTExNVBCNzZQQjk0UEItNDRQQi0xMTJQQi05UEItMjBQQi0xMlBCLTUzUEIxMDJQQjE3UEIxMTdQQi0xMjFQQjczUEItMTIyUEItMTdQQi04OVBCMTExUEItNDFQQi04MFBCNTFQQi0xNFBCMjNQQjEyNlBCLTE2UEIxMjBQQi02OVBCLTE3UEI5NlBCMzVQQi0xMDRQQjEyNFBCMjRQQi04OFBCLTEyMlBCMTE4UEItNDRQQjFQQjY5UEItOTZQQjMwUEItNTZQQi0yN1BCLTY2UEItODlQQjEyUEI3MlBCLTUxUEItNzJQQi04M1BCMTJQQi03NlBCLTI1UEItMTJQQjg4UEI4NVBCOFBCLTEwMFBCLTQxUEItMTE5UEItMzRQQjEwUEI2OFBCODBQQi0zMlBCODFQQjExUEItMjFQQi05OVBCMTRQQi02NlBCMTRQQjExN1BCLTc3UEItOTVQQjk2UEItNzhQQjU4UEItNTFQQjE1UEI5NVBCLTEwMFBCLTgxUEI0OVBCLTIzUEItODNQQjgwUEItMjdQQi05NlBCMTVQQi0xNlBCMTAzUEIyMFBCMTA5UEItMzRQQjExOVBCLTgwUEI4NVBCLTgzUEItMTA0UEI3OFBCLTEyNVBCLTEzUEI0M1BCMTRQQi0zM1BCMjNQQjMwUEItNDZQQi0xMDNQQi01MlBCMTAwUEI1MVBCLTg3UEItMzBQQi0xMjJQQjE5UEItMzFQQjk3UEIxMFBCNzRQQi01M1BCLTg5UEItOTFQQi01NVBCLTYzUEIxMTVQQi04MlBCMjFQQi0xMFBCMTAwUEIzN1BCNDZQQjk0UEItNzhQQi0yNlBCLTY5UEI0OVBCMTAxUEIxNFBCNjJQQi04UEI1UEItMjJQQjgwUEItN1BCNjFQQjEwUEItNzFQQjU3UEItMTI3UEItNTlQQi0xMjNQQi00UEI1NVBCLTM3UEIxMjNQQi03M1BCLTEyMlBCNTNQQi01N1BCMTNQQjU2UEIxMTZQQjEwM1BCMjhQQi04NFBCNTJQQjEyN1BCOTRQQjU2UEIxNFBCLTEwMlBCLTJQQjgzUEI0NVBCNzNQQi01OFBCLTk5UEIxMTdQQjk1UEItMzlQQi01MVBCMTI0UEI1NlBCNjdQQi01NlBCMjRQQjU4UEI4NlBCODhQQi0zNFBCNDNQQjEyUEI1OVBCLTI2UEItNjlQQi05NlBCODhQQjY2UEItNjNQQi0yMlBCODJQQi05OFBCLTUxUEItMTI1UEIxMDBQQjExN1BCMTIxUEIxOFBCLTM4UEIxMDNQQi0xMjRQQjEwN1BCMzJQQjkwUEI4MVBCOTJQQjc3UEItMjhQQjU3UEI4MVBCNlBCMTI1UEI3M1BCMjRQQi0xMjJQQi0xMTRQQjU2UEI3NFBCNTdQQi0xMDVQQjExMVBCLTEyOFBCLTcxUEIzMFBCODg="/>
             <property name="user" value="MTE4UEItNjlQQi0zOVBCNTFQQjY4UEI1MlBCMTI0UEItM1BCLTEwN1BCNzRQQjUxUEItODFQQi05MVBCMTAzUEI0OVBCLTY1UEItMjFQQi05NVBCLTk3UEI1UEIyOVBCOThQQi03OVBCMTA5UEItN1BCLTExN1BCLTEyM1BCLTg4UEItMTE5UEItMjNQQi0xMDVQQjExN1BCNFBCLTE3UEItODFQQjExOFBCMjlQQjgyUEI5NlBCMVBCMzhQQi02N1BCOTVQQi03UEIxMDFQQi01MlBCLTYzUEItNTdQQi0xMTlQQi0xMDVQQi0xMDFQQjM1UEI2OVBCMTNQQjk4UEI0MlBCLTM2UEI0MFBCODVQQi0zMlBCLTg3UEItOTRQQi0zOVBCNjlQQjEyM1BCNDJQQi0zOFBCLTY3UEItNTlQQi0xMDlQQi02MVBCMzNQQjgyUEI3OVBCNTBQQi01OFBCNTBQQi01NVBCLTYyUEIxMDY="/>
            <property name="password" value="ewJnw8Ss/dNRJjkKynQUDEQhAw2S3I/gA3K3dsU4MrbHIR5MoAspFa0IMyGftTKecKv8K1bMXxhrT6hxQuTYnjG1qOkp2bB3eMYc2+Su7mEVf4yxhu/7+Od1vC5KPStKiIAUZmJM2+hG3Y/xb2V5EPR18Nchag5d0gSivjWeysZUlPIoeKRxXj7K7rOQzMWD4Zwb/LFoINptNYwlvwxeLFyFvlRXvqIo9eLTv1WmqiG7sjBCuXuiPagAa4BnmOTYsfgaNHQIphaPV32pWRKwFmyE6zPcAXc9yt7/Jo2K9KzGxoi+pDB6jCR4tZ60iEz6WJyP5sqOfomZI4y5+7HvBQ=="/>
            <property name="initialPoolSize" value="5"/>
            <property name="minPoolSize" value="5"/>
            <property name="password" value="CsXpgVWa82D07SA2qPxvKniZTapQKtCsgK49iJfs+vGd/2BWyVsNvW/t4mVn20Mt6YaCNjP9Ly0uAi1529GuF+J02pQTF89JZk3Ub0vp3NFuLmywmcUYixZteIBZY0HPg5KJiPdTPpFZrORvlCRyHzLTt+k54WRVRlffIUxsqNm41dFeYmvJqTiI49Iuo/NkdDV84AQqH+xR801xeGrtHh8e3ujQ10YzoBWWA8N3os9gRdoBsI2sotsY6RNs23l63nja7QPXqEWI54wHYyrIFCy/FriY08KwRCcnRRPJ1fiao8QCpT8UInzWHEeG9XFHXStGbICqmWtMxmM9bN1ipA=="/>
            <property name="initialPoolSize" value="1"/>
            <property name="minPoolSize" value="0"/>
            <property name="maxPoolSize" value="50"/>
            <property name="acquireIncrement" value="5"/>
            <property name="maxIdleTime" value="1800"/>
            <property name="idleConnectionTestPeriod" value="1800"/>
            <property name="acquireIncrement" value="3"/>
            <property name="maxIdleTime" value="60"/>
            <property name="idleConnectionTestPeriod" value="60"/>
            <property name="maxStatements" value="0"/>
   </bean>
</beans>