fs-danaus
2024-03-16 a2ecbf17d6ba1c7b135fe10bb4cdfefa05b75add
在线交流,流程跟踪根据sql表达式设置显示与否
30个文件已修改
2166 ■■■■ 已修改文件
WebRoot/public/template/0/16/dataHead.jsp 936 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/16/index.jsp 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/16/jsCssHead.jsp 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/16/panel.jsp 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/496/dataHead.jsp 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/496/index.jsp 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/496/panel.jsp 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/498/dataHead.jsp 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/498/index.jsp 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/498/jsCssHead.jsp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/498/panel.jsp 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/5/dataHead.jsp 399 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/5/index.jsp 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/5/panel.jsp 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/8/dataHead.jsp 369 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/8/index.jsp 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/8/jsCssHead.jsp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/8/panel.jsp 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/action/grid/TreeBean.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/app/v2/entity/GformEntity.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/app/v2/service/impl/DanJunFormServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/ionic/schedule/JPushTimer.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/sdk/gaodemap/api/GaoDeMapService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/sdk/huaweimap/controller/HuaweiMapController.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/sdk/huaweimap/service/HuaWeiMapService.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/sdk/map/entity/SearchEntity.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/sdk/map/service/AbstractMapService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/service/build/type/v2/BaseImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/service/build/type/v2/T_Based_Impl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/service/grid/GridServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/public/template/0/16/dataHead.jsp
@@ -12,109 +12,885 @@
<%@page import="com.yc.sdk.shopping.util.SettingKey"%>
<%@page import="com.yc.service.upload.AttachmentIfc"%>
<%
    String URL =SettingKey.getHostUrl(request);
    String canelProc="[?canelProc]";//取消确认过程
    String revokeProc="[?revokeProc]";//撤回过程
    int formId = [?formId];//formid
    String formName ="[?formName]";//formName
    int formType = [?formType];
    int version=[?version];//当前的版本号
    int optype = [?formOptType];//操作类型
    String URL = SettingKey.getHostUrl(request);
    String canelProc = "[?canelProc]";//取消确认过程
    String revokeProc = "[?revokeProc]";//撤回过程
    int formId =
    [
    ?
    formId
    ]
    ;//formid
    String
    formName
    =
    "[?formName]"
    ;//formName
    int
    formType
    =
    [
    ?
    formType
    ]
    ;
    int
    version
    =
    [
    ?
    version
    ]
    ;//当前的版本号
    int
    optype
    =
    [
    ?
    formOptType
    ]
    ;//操作类型
    //序列号扫码 xin 2021-8-2 17:50:03
    //入库
    Integer isshowinserialbtn=[?isshowinserialbtn];
    String inserialbtneditstatus="[?inserialbtneditstatus]";
    Integer
    isshowinserialbtn
    =
    [
    ?
    isshowinserialbtn
    ]
    ;
    String
    inserialbtneditstatus
    =
    "[?inserialbtneditstatus]"
    ;
    //出库
    Integer isshowoutserialbtn=[?isshowoutserialbtn];
    String outserialbtneditstatus="[?outserialbtneditstatus]";
    Integer
    isshowoutserialbtn
    =
    [
    ?
    isshowoutserialbtn
    ]
    ;
    String
    outserialbtneditstatus
    =
    "[?outserialbtneditstatus]"
    ;
    //盘点
    Integer isShowCycleCountSerialBtn=[?isShowCycleCountSerialBtn];
    String cycleCountSerialBtnEditStatus="[?cycleCountSerialBtnEditStatus]";
    Integer
    isShowCycleCountSerialBtn
    =
    [
    ?
    isShowCycleCountSerialBtn
    ]
    ;
    String
    cycleCountSerialBtnEditStatus
    =
    "[?cycleCountSerialBtnEditStatus]"
    ;
    //农行支付收款、退款控制 xin 2021-8-23 14:30:39
    Integer isshowonlinepaymentbutton=[?isshowonlinepaymentbutton];
    String online="";
    if(isshowonlinepaymentbutton==1){
    online+=",(case when isnull(OnlinePaymentAmount,0) > 0 then 1 else 0 end) as isshowonlinepaymentbutton";
    Integer
    isshowonlinepaymentbutton
    =
    [
    ?
    isshowonlinepaymentbutton
    ]
    ;
    String
    online
    =
    ""
    ;
    if
    (
    isshowonlinepaymentbutton
    ==
    1
    )
    {
    online
    +=
    ",(case when isnull(OnlinePaymentAmount,0) > 0 then 1 else 0 end) as isshowonlinepaymentbutton"
    ;
    }
    //---------------在线交流,流程跟踪 by danaus 2024-03-15 09:36
    String
    isShowOnlineMsg
    =
    "[?isShowOnlineMsg]"
    ;//是否显示,1显示,0不显示
    String
    showOnlineMsgExpression
    =
    "[?ShowOnlineMsgExpression]"
    ;//表达式
    String
    isShowProcessTracking
    =
    "[?isShowProcessTracking]"
    ;
    String
    showProcessTrackingExpression
    =
    "[?ShowProcessTrackingExpression]"
    ;
    //--在线交流sql表达式
    if
    (
    "1"
    .
    equals
    (
    isShowOnlineMsg
    )
    )
    {
    if
    (
    org
    .
    apache
    .
    commons
    .
    lang3
    .
    StringUtils
    .
    isNotBlank
    (
    showOnlineMsgExpression
    )
    )
    {
    showOnlineMsgExpression
    =
    DBHelper
    .
    getRepAll
    (
    showOnlineMsgExpression
    ,
    session
    ,
    null
    ,
    true
    )
    ;
    online
    +=
    ",(case when "
    +
    showOnlineMsgExpression
    +
    " then 1 else 0 end) as isShowOnlineMsgBtn"
    ;
    }
    else
    {
    //没有设置表达式,默认显示
    online
    +=
    ",1 as isShowOnlineMsgBtn"
    ;
    }
    }
    //--流程跟踪sql表达式
    if
    (
    "1"
    .
    equals
    (
    isShowProcessTracking
    )
    )
    {
    if
    (
    org
    .
    apache
    .
    commons
    .
    lang3
    .
    StringUtils
    .
    isNotBlank
    (
    showProcessTrackingExpression
    )
    )
    {
    showProcessTrackingExpression
    =
    DBHelper
    .
    getRepAll
    (
    showProcessTrackingExpression
    ,
    session
    ,
    null
    ,
    true
    )
    ;
    online
    +=
    ",(case when "
    +
    showProcessTrackingExpression
    +
    " then 1 else 0 end) as isShowProcessTrackingBtn"
    ;
    }
    else
    {
    online
    +=
    ",1 as isShowProcessTrackingBtn"
    ;
    }
    }
    //-----------
    //用户代码
    String hrCode = (String)session.getAttribute(SessionKey.HRCODE);
    String userCode = (String)session.getAttribute(SessionKey.USERCODE);
    String
    hrCode
    =
    (
    String
    )
    session
    .
    getAttribute
    (
    SessionKey
    .
    HRCODE
    )
    ;
    String
    userCode
    =
    (
    String
    )
    session
    .
    getAttribute
    (
    SessionKey
    .
    USERCODE
    )
    ;
    //用户权限
    Map<String,Map<String,Object>> perssion=(Map<String,Map<String,Object>>)session.getAttribute(SessionKey.PERSSION);
    Map
    <
    String
    ,
    Map
    <
    String
    ,
    Object
    >
    >
    perssion
    =
    (
    Map
    <
    String
    ,
    Map
    <
    String
    ,
    Object
    >
    >
    )
    session
    .
    getAttribute
    (
    SessionKey
    .
    PERSSION
    )
    ;
    //用户对于该功能号所拥有的权限代码
    int profile=-1;
    try{
        profile=(Integer)perssion.get(formId+"").get("optype");
    }catch(Exception e){}
    int
    profile
    =
    -
    1
    ;
    try
    {
    profile
    =
    (
    Integer
    )
    perssion
    .
    get
    (
    formId
    +
    ""
    )
    .
    get
    (
    "optype"
    )
    ;
    }
    catch
    (
    Exception
    e
    )
    {
    }
    //是否为超级管理员  1 为超级管理员
    String isSuperUser = (String)session.getAttribute(SessionKey.SUPPER_USER);
    isSuperUser=isSuperUser.intern();
    if(isSuperUser=="1"){
        profile=com.yc.utils.FormOpUtil.TotalOP;
    }
    if(optype!=-1){
        profile=profile&optype;
    }
    String queryString = request.getQueryString();
    if(queryString==null){
        queryString="";
    }
    String
    isSuperUser
    =
    (
    String
    )
    session
    .
    getAttribute
    (
    SessionKey
    .
    SUPPER_USER
    )
    ;
    isSuperUser
    =
    isSuperUser
    .
    intern
    (
    )
    ;
    if
    (
    isSuperUser
    ==
    "1"
    )
    {
    profile
    =
    com
    .
    yc
    .
    utils
    .
    FormOpUtil
    .
    TotalOP
    ;
    }
    if
    (
    optype
    !=
    -
    1
    )
    {
    profile
    =
    profile
    &
    optype
    ;
    }
    String
    queryString
    =
    request
    .
    getQueryString
    (
    )
    ;
    if
    (
    queryString
    ==
    null
    )
    {
    queryString
    =
    ""
    ;
    }
    //打开时输入密码
    String isOpenFuncShowPwdEdit = "[?isOpenFuncShowPwdEdit]";
    if(isOpenFuncShowPwdEdit!="" && isOpenFuncShowPwdEdit!="0"){
        boolean hasOpen = CheckInputPwdUtils.checkPwd(isOpenFuncShowPwdEdit,"[?formId]",request,response,session);
        if(!hasOpen){
            return;
        }
    String
    isOpenFuncShowPwdEdit
    =
    "[?isOpenFuncShowPwdEdit]"
    ;
    if
    (
    isOpenFuncShowPwdEdit
    !=
    ""
    &&
    isOpenFuncShowPwdEdit
    !=
    "0"
    )
    {
    boolean
    hasOpen
    =
    CheckInputPwdUtils
    .
    checkPwd
    (
    isOpenFuncShowPwdEdit
    ,
    "[?formId]"
    ,
    request
    ,
    response
    ,
    session
    )
    ;
    if
    (
    !
    hasOpen
    )
    {
    return
    ;
    }
    }
    //功能链接表达式
    String hasShowItemExpression = "[?hasShowItemExpression]";
    String
    hasShowItemExpression
    =
    "[?hasShowItemExpression]"
    ;
    //执行sql查询类
    SqlQueryIfc sqlQueryIfc = (SqlQueryIfc)FactoryBean.getBean("SqlQueryImpl");
    SqlRowSet rs = null;
    String p = request.getParameter("p");
    String g = request.getParameter("g");
    String flag = request.getParameter("flag");
    String docCode = request.getParameter("doccode")==null?"":request.getParameter("doccode");
    String copy=request.getParameter("cp");
    String isNew=request.getParameter("isNew");//docCode.equals("")?null:"";
    String panelEnd="";
    String wherePan=null;
    wherePan=request.getParameter("wherePan");
    String where = request.getParameter("where");
    wherePan =(wherePan==null)?(where!=null?where:null):wherePan;
    request.setAttribute("wherePan",wherePan);//功能连接表达式 &符号的替换属性需要用到   在RequestParameterUtils类的replaceRequestExpression方法调用到。操作时间 2014-6-26 10:40:00
    if(wherePan==null&&(queryString.startsWith("where=")||queryString.startsWith("wherePan="))){
        wherePan=queryString.replace("where=", "").replace("wherePan=","");
    SqlQueryIfc
    sqlQueryIfc
    =
    (
    SqlQueryIfc
    )
    FactoryBean
    .
    getBean
    (
    "SqlQueryImpl"
    )
    ;
    SqlRowSet
    rs
    =
    null
    ;
    String
    p
    =
    request
    .
    getParameter
    (
    "p"
    )
    ;
    String
    g
    =
    request
    .
    getParameter
    (
    "g"
    )
    ;
    String
    flag
    =
    request
    .
    getParameter
    (
    "flag"
    )
    ;
    String
    docCode
    =
    request
    .
    getParameter
    (
    "doccode"
    )
    ==
    null
    ?
    ""
    :
    request
    .
    getParameter
    (
    "doccode"
    )
    ;
    String
    copy
    =
    request
    .
    getParameter
    (
    "cp"
    )
    ;
    String
    isNew
    =
    request
    .
    getParameter
    (
    "isNew"
    )
    ;//docCode.equals("")?null:"";
    String
    panelEnd
    =
    ""
    ;
    String
    wherePan
    =
    null
    ;
    wherePan
    =
    request
    .
    getParameter
    (
    "wherePan"
    )
    ;
    String
    where
    =
    request
    .
    getParameter
    (
    "where"
    )
    ;
    wherePan
    =
    (
    wherePan
    ==
    null
    )
    ?
    (
    where
    !=
    null
    ?
    where
    :
    null
    )
    :
    wherePan
    ;
    request
    .
    setAttribute
    (
    "wherePan"
    ,
    wherePan
    )
    ;//功能连接表达式 &符号的替换属性需要用到   在RequestParameterUtils类的replaceRequestExpression方法调用到。操作时间 2014-6-26 10:40:00
    if
    (
    wherePan
    ==
    null
    &&
    (
    queryString
    .
    startsWith
    (
    "where="
    )
    ||
    queryString
    .
    startsWith
    (
    "wherePan="
    )
    )
    )
    {
    wherePan
    =
    queryString
    .
    replace
    (
    "where="
    ,
    ""
    )
    .
    replace
    (
    "wherePan="
    ,
    ""
    )
    ;
    }
    wherePan=com.yc.utils.HtmlUtil.prossIntoSessionForStr(wherePan,session);
    wherePan
    =
    com
    .
    yc
    .
    utils
    .
    HtmlUtil
    .
    prossIntoSessionForStr
    (
    wherePan
    ,
    session
    )
    ;
    if(wherePan!=null){//如果是三点弹出就改下路径,进入if
        String []temp = wherePan.split("and");
        String []t=null;
        for(int i=0;i<temp.length;i++){
            t=temp[i].split("=");
            if("doccode".equalsIgnoreCase(t[0])){
                try{
                    docCode=t[1];break;
                }catch(Exception e){}
            }
        }
        panelEnd=wherePan;
    t
    =
    temp
    [
    i
    ]
    .
    split
    (
    "="
    )
    ;
    if
    (
    "doccode"
    .
    equalsIgnoreCase
    (
    t
    [
    0
    ]
    )
    )
    {
    try
    {
    docCode
    =
    t
    [
    1
    ]
    ;
    break
    ;
    }
    if(copy!=null){
        docCode=request.getParameter("doccode");
    catch
    (
    Exception
    e
    )
    {
    }
    if(docCode!=null&&!docCode.equals("")){
        //isNew=(isNew==null)?"1":"0";
        panelEnd=(panelEnd.equals("")?"doccode='"+docCode.replaceAll("'","")+"'":panelEnd)+" and (formid in("+formId+" #dataformid#)) #formdatafilters# ";
    }
    }
    panelEnd
    =
    wherePan
    ;
    }
    if
    (
    copy
    !=
    null
    )
    {
    docCode
    =
    request
    .
    getParameter
    (
    "doccode"
    )
    ;
    }
    if
    (
    docCode
    !=
    null
    &&
    !
    docCode
    .
    equals
    (
    ""
    )
    )
    {
    //isNew=(isNew==null)?"1":"0";
    panelEnd
    =
    (
    panelEnd
    .
    equals
    (
    ""
    )
    ?
    "doccode='"
    +
    docCode
    .
    replaceAll
    (
    "'"
    ,
    ""
    )
    +
    "'"
    :
    panelEnd
    )
    +
    " and (formid in("
    +
    formId
    +
    " #dataformid#)) #formdatafilters# "
    ;
    }
    //panel info
    panelEnd=panelEnd.equals("")?"1=2":panelEnd;
    wherePan=panelEnd+ " and "+DBHelper.getQx(session);
    String doccode=docCode.replaceAll("'","");
    isNew=(isNew!=null?isNew:((doccode.equals(""))?"1":"0"));
    panelEnd
    =
    panelEnd
    .
    equals
    (
    ""
    )
    ?
    "1=2"
    :
    panelEnd
    ;
    wherePan
    =
    panelEnd
    +
    " and "
    +
    DBHelper
    .
    getQx
    (
    session
    )
    ;
    String
    doccode
    =
    docCode
    .
    replaceAll
    (
    "'"
    ,
    ""
    )
    ;
    isNew
    =
    (
    isNew
    !=
    null
    ?
    isNew
    :
    (
    (
    doccode
    .
    equals
    (
    ""
    )
    )
    ?
    "1"
    :
    "0"
    )
    )
    ;
    String grid=null;
    //end
    //---下面的变量太杂了。以后需要优化掉 2019-11-13 14:55:20 xin
WebRoot/public/template/0/16/index.jsp
@@ -26,22 +26,9 @@
                    String customURL=DBHelper.getCustomURL(request,formId,formType,"panel.jsp");
                %>
                <jsp:include page="<%=customURL%>" flush="true"></jsp:include><%//改成兼容用户自定义控件布局的变量 xin 2024-1-12 16:14:05%>
<%--                <%@ include file="panel.jsp" %>--%>
            </div>
        </div>
        <%
            if ("1".equals(isShowOnlineMsg)) {
                //isShowOnlineMsg定义在jsCssHead
                request.setAttribute("formId", formId + "");
                request.setAttribute("docCode", doccode);
        %>
        <jsp:include page="/general/onlineMessage.jsp" flush="true"/>
        <%
            }
            if ("1".equals(isShowProcessTracking)) {//isShowProcessTracking定义在jsCssHead
        %>
        <%@ include file="/general/processTrack.jsp" %>
        <%} %>
        <%//文字颜色说明显示位置 xin 2022-5-16 14:45:39%>
        [?ColorDescription]
    </div>
WebRoot/public/template/0/16/jsCssHead.jsp
@@ -36,10 +36,7 @@
<script type="text/javascript" src="/js/bootstrap/fileinput/js/fileinput.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/js/bootstrap/fileinput/js/fileinput.js")%>"></script>
<script type="text/javascript" src="/js/bootstrap/fileinput/js/locales/zh.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/js/bootstrap/fileinput/js/locales/zh.js")%>"></script>
<script type="text/javascript" src="/general/Viewer/js/viewer.min.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/general/Viewer/js/viewer.min.js")%>"></script>
<%
    String isShowOnlineMsg="[?isShowOnlineMsg]";
    String isShowProcessTracking="[?isShowProcessTracking]";
%>
<script type="text/javascript">
 var savedFunclink16='';
 var spellPath="/<%=session.getAttribute(SessionKey.DATA_BASE_ID)%>/<%=session.getAttribute(SessionKey.VERSION_ID)%>/<%=session.getAttribute(SessionKey.SYSTEM_LANGUAGE)%>/";
WebRoot/public/template/0/16/panel.jsp
@@ -39,11 +39,11 @@
  Date now=new Date();
  SimpleDateFormat formatDate=new SimpleDateFormat("yyyy-MM-dd");
  String date=String.valueOf(now.getDate());
  Map<String,Object> docMap=new HashMap<String,Object>();
  int isNewOpen=1;
  int docstatePan=0;
  String tableIs="@zhu@";
  String tableIs2="@minxi@";
  Map<String,Object> docMap=new HashMap<String,Object>();
  List<Map<String, Object>> listInfo=new ArrayList<Map<String, Object>>();
  String addUrl="";//添加传给grid的条件,需要分离
  if((wherePan!=null&&!wherePan.equals(""))||grid!=null){
@@ -169,6 +169,7 @@
             }
        }
//-------------------end
  }
  SqlRowSet SRS =null;
  String outStr=""; 
@@ -264,6 +265,19 @@
<div class="panelControlDiv">
    @panelDownHtml@
</div>
     <%
         if ("1".equals(docMap.get("isshowonlinemsgbtn"))) {
             //isShowOnlineMsg定义在jsCssHead
             request.setAttribute("formId", formId + "");
             request.setAttribute("docCode", doccode);
     %>
        <jsp:include page="/general/onlineMessage.jsp" flush="true"/>
        <%
            }
            if ("1".equals(docMap.get("isshowprocesstrackingbtn"))) {//isShowProcessTracking定义在jsCssHead
        %>
        <%@ include file="/general/processTrack.jsp" %>
        <%} %>
<script type="text/javascript">
 @pansetInv@
 panMain[panIndex].loadSet(<%=docstatePan%>);
WebRoot/public/template/0/496/dataHead.jsp
@@ -25,8 +25,6 @@
<%@page import="com.yc.utils.DefaultSet" %>
<%@page import="com.yc.sdk.shopping.util.SettingKey"%>
<%
    String isShowOnlineMsg="[?isShowOnlineMsg]";
    String isShowProcessTracking="[?isShowProcessTracking]";
    String canelProc="[?canelProc]";//取消确认过程
    String revokeProc="[?revokeProc]";//撤回过程  
    String URL =SettingKey.getHostUrl(request);
@@ -53,7 +51,31 @@
    if(isshowonlinepaymentbutton==1){
        online+=",(case when isnull(OnlinePaymentAmount,0) > 0 then 1 else 0 end) as isshowonlinepaymentbutton";
    }
//---------------在线交流,流程跟踪 by danaus 2024-03-15 09:36
    String isShowOnlineMsg="[?isShowOnlineMsg]";//是否显示,1显示,0不显示
    String showOnlineMsgExpression="[?ShowOnlineMsgExpression]";//表达式
    String isShowProcessTracking="[?isShowProcessTracking]";
    String showProcessTrackingExpression="[?ShowProcessTrackingExpression]";
    //--在线交流sql表达式
    if ("1".equals(isShowOnlineMsg)) {
    if(org.apache.commons.lang3.StringUtils.isNotBlank(showOnlineMsgExpression)){
    showOnlineMsgExpression=DBHelper.getRepAll(showOnlineMsgExpression,session,null,true);
    online+=",(case when "+showOnlineMsgExpression+" then 1 else 0 end) as isShowOnlineMsgBtn";
    }else{
    //没有设置表达式,默认显示
    online+=",1 as isShowOnlineMsgBtn";
    }
    }
    //--流程跟踪sql表达式
    if ("1".equals(isShowProcessTracking)) {
    if(org.apache.commons.lang3.StringUtils.isNotBlank(showProcessTrackingExpression)){
    showProcessTrackingExpression=DBHelper.getRepAll(showProcessTrackingExpression,session,null,true);
    online+=",(case when "+showProcessTrackingExpression+" then 1 else 0 end) as isShowProcessTrackingBtn";
    }else{
    online+=",1 as isShowProcessTrackingBtn";
    }
    }
    //-----------
    //用户代码
    String hrCode = (String)session.getAttribute(SessionKey.HRCODE);
    String userCode = (String)session.getAttribute(SessionKey.USERCODE);
WebRoot/public/template/0/496/index.jsp
@@ -80,18 +80,6 @@
                @panFou@
            </div>
        </div>
        <%if ("1".equals(isShowOnlineMsg)) {//isShowOnlineMsg定义在jsCssHead %>
        <%
            request.setAttribute("formId", formId + "");
            request.setAttribute("docCode", doccode);
        %>
        <jsp:include page="/general/onlineMessage.jsp" flush="true"/>
        <%
            }
            if ("1".equals(isShowProcessTracking)) {//isShowProcessTracking定义在jsCssHead
        %>
        <%@ include file="/general/processTrack.jsp" %>
        <%} %>
        <%//文字颜色说明显示位置 xin 2022-5-16 14:45:39%>
        [?ColorDescription]
    </div>
WebRoot/public/template/0/496/panel.jsp
@@ -262,6 +262,19 @@
</div>
 @include@
<div class="panelControlDiv">@panelDownHtml@</div>
    <%
        if ("1".equals(docMap.get("isshowonlinemsgbtn"))) {
        //isShowOnlineMsg定义在jsCssHead
        request.setAttribute("formId", formId + "");
        request.setAttribute("docCode", doccode);
    %>
        <jsp:include page="/general/onlineMessage.jsp" flush="true"/>
        <%
            }
            if ("1".equals(docMap.get("isshowprocesstrackingbtn"))) {//isShowProcessTracking定义在jsCssHead
        %>
        <%@ include file="/general/processTrack.jsp" %>
        <%} %>
<script type="text/javascript">
  panIndex="@index@";//需要替换 
  @pansetInv@ 
WebRoot/public/template/0/498/dataHead.jsp
@@ -110,7 +110,32 @@
    String isNew =  request.getParameter("isNew");
    String fl = request.getParameter("fl");
    String flag = request.getParameter("flag");
    String online="";
    //---------------在线交流,流程跟踪 by danaus 2024-03-15 09:36
    String isShowOnlineMsg="[?isShowOnlineMsg]";//是否显示,1显示,0不显示
    String showOnlineMsgExpression="[?ShowOnlineMsgExpression]";//表达式
    String isShowProcessTracking="[?isShowProcessTracking]";
    String showProcessTrackingExpression="[?ShowProcessTrackingExpression]";
    //--在线交流sql表达式
    if ("1".equals(isShowOnlineMsg)) {
    if(org.apache.commons.lang3.StringUtils.isNotBlank(showOnlineMsgExpression)){
    showOnlineMsgExpression=DBHelper.getRepAll(showOnlineMsgExpression,session,null,true);
    online+=",(case when "+showOnlineMsgExpression+" then 1 else 0 end) as isShowOnlineMsgBtn";
    }else{
    //没有设置表达式,默认显示
    online+=",1 as isShowOnlineMsgBtn";
    }
    }
    //--流程跟踪sql表达式
    if ("1".equals(isShowProcessTracking)) {
    if(org.apache.commons.lang3.StringUtils.isNotBlank(showProcessTrackingExpression)){
    showProcessTrackingExpression=DBHelper.getRepAll(showProcessTrackingExpression,session,null,true);
    online+=",(case when "+showProcessTrackingExpression+" then 1 else 0 end) as isShowProcessTrackingBtn";
    }else{
    online+=",1 as isShowProcessTrackingBtn";
    }
    }
    //-----------
    if(@doc!=null&&!@doc.equals("")){
      //  isNew=(isNew==null)?"1":"0";
      panelEnd=(panelEnd.equals("")?"@doc='"+@doc.replaceAll("'","")+"'":panelEnd)+" and (formid in([?formId] #dataformid#)) #formdatafilters# ";
WebRoot/public/template/0/498/index.jsp
@@ -32,15 +32,6 @@
                    @panFou@
                </div>
            </div>
            <%if ("1".equals(isShowOnlineMsg)) {//isShowOnlineMsg定义在jsCssHead %>
            <iframe style="width: 850px;height: 220px;" frameborder="0" scrolling="no"
                    src="/general/onlineMessage.jsp?formId=<%=formId %>&docCode=<%=doccode %>"></iframe>
            <%
                }
                if ("1".equals(isShowProcessTracking)) {//isShowProcessTracking定义在jsCssHead
            %>
            <%@ include file="/general/processTrack.jsp" %>
            <%} %>
            <%//文字颜色说明显示位置 xin 2022-5-16 14:45:39%>
            [?ColorDescription]
        </div>
WebRoot/public/template/0/498/jsCssHead.jsp
@@ -1,9 +1,5 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    String isShowOnlineMsg="[?isShowOnlineMsg]";
    String isShowProcessTracking="[?isShowProcessTracking]";
%>
<link rel="stylesheet" type="text/css" href="/style/commons.css?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/style/commons.css")%>">
<link rel="stylesheet" type="text/css" href="/style/icon.css?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/style/icon.css")%>">
<link rel="stylesheet" type="text/css" href="/style/default/easyui.css?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/style/default/easyui.css")%>">
WebRoot/public/template/0/498/panel.jsp
@@ -28,7 +28,8 @@
        addUrl = " and "+temp1.substring(inds+3);
        }                  
      try{
         sql="select top 1 @selectColAll@ from ";//只能查一条
        // sql="select top 1 @selectColAll@ from ";//只能查一条
          sql="select top 1 @selectColAll@"+online+" from ";//增加在线交流,流程跟踪的后台执行判断 by danaus 2024-03-15 15:48
         if(sql.contains("&doccode&")){//by danaus 2011-1-25
         if(doccode!=null)
         sql=sql.replaceAll("&doccode&",doccode.replaceAll("'",""));
@@ -242,7 +243,19 @@
<div class="panelControlDiv">
    @panelDownHtml@
</div>
    <%
        if ("1".equals(docMap.get("isshowonlinemsgbtn"))) {
        //isShowOnlineMsg定义在jsCssHead
        request.setAttribute("formId", formId + "");
        request.setAttribute("docCode", doccode);
    %>
        <jsp:include page="/general/onlineMessage.jsp" flush="true"/>
        <%
            }
            if ("1".equals(docMap.get("isshowprocesstrackingbtn"))) {//isShowProcessTracking定义在jsCssHead
        %>
        <%@ include file="/general/processTrack.jsp" %>
        <%} %>
<script type="text/javascript">
@pansetInv@
panMain[panIndex].loadSet(<%=docstatePan%>);
WebRoot/public/template/0/5/dataHead.jsp
@@ -39,76 +39,333 @@
<%@page import="com.yc.utils.FormOpUtil"%>
<%
    SqlDBHelperIfc  sqlDBHelperIfc=(SqlDBHelperIfc)FactoryBean.getBean("SqlDBHelper");
    GfieldApprovedButtonIfc gButtonIfc=(GfieldApprovedButtonIfc)FactoryBean.getBean("GfieldApprovedButton");
    PanelTimeDao PanelTimeBo=(PanelTimeDao)FactoryBean.getBean("PanelTime");
    PanelManageDao PanelManageBo=(PanelManageDao)FactoryBean.getBean("PanelManage");
    TypeControlDao TypeControlBo=(TypeControlDao)FactoryBean.getBean("TypeControl");
    BuildFuncIfc  build=(BuildFuncIfc)FactoryBean.getBean("Build");
      SqlQueryIfc sqlQueryIfc = (SqlQueryIfc)FactoryBean.getBean("SqlQueryImpl");
      BuildTopIfc buildTopIfc = (BuildTopIfc)FactoryBean.getBean("BuildTopImpl");
      GfieldIfc gfieldIfc = (GfieldIfc)FactoryBean.getBean("GfieldImpl");
    FormLoadParameterEntity load =new FormLoadParameterEntity();//存放加载面板信息需要到的参数
    Map<String, Object> bdMap =new HashMap<String,Object>();//存放加载面板返回的信息
    String URL =SettingKey.getHostUrl(request);   //路径
    SqlDBHelperIfc  sqlDBHelperIfc=(SqlDBHelperIfc)FactoryBean.getBean("SqlDBHelper");
    GfieldApprovedButtonIfc gButtonIfc=(GfieldApprovedButtonIfc)FactoryBean.getBean("GfieldApprovedButton");
    PanelTimeDao PanelTimeBo=(PanelTimeDao)FactoryBean.getBean("PanelTime");
    PanelManageDao PanelManageBo=(PanelManageDao)FactoryBean.getBean("PanelManage");
    TypeControlDao TypeControlBo=(TypeControlDao)FactoryBean.getBean("TypeControl");
    BuildFuncIfc  build=(BuildFuncIfc)FactoryBean.getBean("Build");
    SqlQueryIfc sqlQueryIfc = (SqlQueryIfc)FactoryBean.getBean("SqlQueryImpl");
    BuildTopIfc buildTopIfc = (BuildTopIfc)FactoryBean.getBean("BuildTopImpl");
    GfieldIfc gfieldIfc = (GfieldIfc)FactoryBean.getBean("GfieldImpl");
    FormLoadParameterEntity load =new FormLoadParameterEntity();//存放加载面板信息需要到的参数
    Map<String, Object> bdMap =new HashMap<String,Object>();//存放加载面板返回的信息
    String URL =SettingKey.getHostUrl(request);   //路径
    String pantit="";
    int formId = [?formId];//功能号
    String formName ="[?formName]";//formName
    int formType = [?formType];
    int version=[?version];//当前的版本号
    int optype = [?formOptType];//操作类型
    String isShowOnlineMsg="[?isShowOnlineMsg]";//是否打开在线交流
    String isShowProcessTracking="[?isShowProcessTracking]";//是否打开流程跟踪
    //序列号扫码 xin 2021-8-2 17:50:03
    //入库
    Integer isshowinserialbtn=[?isshowinserialbtn];
    String inserialbtneditstatus="[?inserialbtneditstatus]";
    //出库
    Integer isshowoutserialbtn=[?isshowoutserialbtn];
    String outserialbtneditstatus="[?outserialbtneditstatus]";
    String
    outserialbtneditstatus
    =
    "[?outserialbtneditstatus]"
    ;
    //盘点
    Integer isShowCycleCountSerialBtn=[?isShowCycleCountSerialBtn];
    String cycleCountSerialBtnEditStatus="[?cycleCountSerialBtnEditStatus]";
    Integer
    isShowCycleCountSerialBtn
    =
    [
    ?
    isShowCycleCountSerialBtn
    ]
    ;
    String
    cycleCountSerialBtnEditStatus
    =
    "[?cycleCountSerialBtnEditStatus]"
    ;
    //农行支付收款、退款控制 xin 2021-8-23 14:30:39
    Integer isshowonlinepaymentbutton=[?isshowonlinepaymentbutton];
    String online="";
    if(isshowonlinepaymentbutton==1){
    online+=",(case when isnull(OnlinePaymentAmount,0) > 0 then 1 else 0 end) as isshowonlinepaymentbutton";
    Integer
    isshowonlinepaymentbutton
    =
    [
    ?
    isshowonlinepaymentbutton
    ]
    ;
    String
    online
    =
    ""
    ;
    if
    (
    isshowonlinepaymentbutton
    ==
    1
    )
    {
    online
    +=
    ",(case when isnull(OnlinePaymentAmount,0) > 0 then 1 else 0 end) as isshowonlinepaymentbutton"
    ;
    }
    //---------------在线交流,流程跟踪 by danaus 2024-03-15 09:36
    String
    isShowOnlineMsg
    =
    "[?isShowOnlineMsg]"
    ;//是否显示,1显示,0不显示
    String
    showOnlineMsgExpression
    =
    "[?ShowOnlineMsgExpression]"
    ;//表达式
    String
    isShowProcessTracking
    =
    "[?isShowProcessTracking]"
    ;
    String
    showProcessTrackingExpression
    =
    "[?ShowProcessTrackingExpression]"
    ;
    //--在线交流sql表达式
    if
    (
    "1"
    .
    equals
    (
    isShowOnlineMsg
    )
    )
    {
    if
    (
    org
    .
    apache
    .
    commons
    .
    lang3
    .
    StringUtils
    .
    isNotBlank
    (
    showOnlineMsgExpression
    )
    )
    {
    showOnlineMsgExpression
    =
    DBHelper
    .
    getRepAll
    (
    showOnlineMsgExpression
    ,
    session
    ,
    null
    ,
    true
    )
    ;
    online
    +=
    ",(case when "
    +
    showOnlineMsgExpression
    +
    " then 1 else 0 end) as isShowOnlineMsgBtn"
    ;
    }
    else
    {
    //没有设置表达式,默认显示
    online
    +=
    ",1 as isShowOnlineMsgBtn"
    ;
    }
    }
    //--流程跟踪sql表达式
    if
    (
    "1"
    .
    equals
    (
    isShowProcessTracking
    )
    )
    {
    if
    (
    org
    .
    apache
    .
    commons
    .
    lang3
    .
    StringUtils
    .
    isNotBlank
    (
    showProcessTrackingExpression
    )
    )
    {
    showProcessTrackingExpression
    =
    DBHelper
    .
    getRepAll
    (
    showProcessTrackingExpression
    ,
    session
    ,
    null
    ,
    true
    )
    ;
    online
    +=
    ",(case when "
    +
    showProcessTrackingExpression
    +
    " then 1 else 0 end) as isShowProcessTrackingBtn"
    ;
    }
    else
    {
    online
    +=
    ",1 as isShowProcessTrackingBtn"
    ;
    }
    }
    //-----------
    //用户代码
    String userCode = (String)session.getAttribute(SessionKey.USERCODE);
    String
    userCode
    =
    (
    String
    )
    session
    .
    getAttribute
    (
    SessionKey
    .
    USERCODE
    )
    ;
    //用户权限
    Map<String,Map<String,Object>> perssion=(Map<String,Map<String,Object>>)session.getAttribute(SessionKey.PERSSION);
    Map
    <
    String
    ,
    Map
    <
    String
    ,
    Object
    >
    >
    perssion
    =
    (
    Map
    <
    String
    ,
    Map
    <
    String
    ,
    Object
    >
    >
    )
    session
    .
    getAttribute
    (
    SessionKey
    .
    PERSSION
    )
    ;
    //用户对于该功能号所拥有的权限代码
    int profile=-1;
    try{
        profile=(Integer)perssion.get(formId+"").get("optype");
    }catch(Exception e){}
    int
    profile
    =
    -
    1
    ;
    try
    {
    profile
    =
    (
    Integer
    )
    perssion
    .
    get
    (
    formId
    +
    ""
    )
    .
    get
    (
    "optype"
    )
    ;
    }
    catch
    (
    Exception
    e
    )
    {
    }
    //是否为超级管理员  1 为超级管理员
    String isSuperUser = (String)session.getAttribute(SessionKey.SUPPER_USER);
    isSuperUser=isSuperUser.intern();
    if(isSuperUser=="1")
        profile=FormOpUtil.TotalOP;
    profile=FormOpUtil.TotalOP;
    if(optype!=-1){
        profile=profile&optype;
    }
    profile=profile&optype;
    }
    //获取查询字符串。比如:http://localhost/test.do?a=b&c=d&e=f
    //通过request.getQueryString()得到的是a=b&c=d&e=f;
    String queryString = request.getQueryString();
    if(queryString==null){
        queryString="";
    }
    queryString="";
    }
    //打开时输入密码
    String isOpenFuncShowPwdEdit = "[?isOpenFuncShowPwdEdit]";
    if(isOpenFuncShowPwdEdit!="" && isOpenFuncShowPwdEdit!="0"){
        boolean hasOpen = CheckInputPwdUtils.checkPwd(isOpenFuncShowPwdEdit,"[?formId]",request,response,session);
        if(!hasOpen){
            return;
        }
    boolean hasOpen = CheckInputPwdUtils.checkPwd(isOpenFuncShowPwdEdit,"[?formId]",request,response,session);
    if(!hasOpen){
    return;
    }
    }
    //功能链接表达式
    String hasShowItemExpression = "[?hasShowItemExpression]";
    String hasShowItemExpression = "[?hasShowItemExpression]";
    //
    SqlRowSet rs = null;
    String panelEnd="";
@@ -122,36 +379,36 @@
    String wherePan=request.getParameter("wherePan");
    String where = request.getParameter("where");
    if(wherePan==null){
        wherePan=(where!=null?where:null);
    wherePan=(where!=null?where:null);
    }
    request.setAttribute("wherePan",wherePan);
    request.setAttribute("wherePan",wherePan);
    if(wherePan==null&&(queryString.startsWith("where=")||queryString.startsWith("wherePan="))){
        wherePan=queryString.replace("where=", "").replace("wherePan=","");
    wherePan=queryString.replace("where=", "").replace("wherePan=","");
    }
    //功能连接表达式 &符号的替换属性需要用到   在RequestParameterUtils类的replaceRequestExpression方法调用到。操作时间 2014-6-26 10:40:00
    wherePan=HtmlUtil.prossIntoSessionForStr(wherePan,session);
    if(wherePan!=null){
        String []temp = wherePan.split("and");
        String []t=null;
        for(int i=0;i<temp.length;i++){
            t=temp[i].split("=");
            if("doccode".equalsIgnoreCase(t[0])){
                try{
                    docCode=t[1];break;
                }catch(Exception e){}
            }
        }
        panelEnd=wherePan;
    }
    String []temp = wherePan.split("and");
    String []t=null;
    for(int i=0;i<temp.length;i++){
    t=temp[i].split("=");
    if("doccode".equalsIgnoreCase(t[0])){
    try{
    docCode=t[1];break;
    }catch(Exception e){}
    }
    }
    panelEnd=wherePan;
    }
    if(copy!=null){
        docCode=request.getParameter("doccode");
        where="doccode='"+docCode+"'";
    docCode=request.getParameter("doccode");
    where="doccode='"+docCode+"'";
    }
    if(docCode!=null&&!docCode.equals("")){
        panelEnd=(panelEnd.equals("")?"doccode='"+docCode.replaceAll("'","")+"'":panelEnd)+" and (formid in("+formId+" #dataformid#)) #formdatafilters#";
    if(docCode!=null&&!docCode.equals("")){
    panelEnd=(panelEnd.equals("")?"doccode='"+docCode.replaceAll("'","")+"'":panelEnd)+" and (formid in("+formId+" #dataformid#)) #formdatafilters#";
    }
    //panel info
    panelEnd=panelEnd.equals("")?"1=2":panelEnd;
    wherePan=panelEnd+ " and "+DBHelper.getQx(session);
@@ -161,17 +418,17 @@
    String grid=null;
    //end
    wherePan=DBHelper.getDWFqx(wherePan,request,formId,0);//组装取得数据组权限 
    String docStatus="0";
    try{
        //获取单据状态 xin 2019-2-25 16:59:54
        docStatus=PanelManageBo.getDocstatus(wherePan,formId,"[?zhu]",request);
    String docStatus="0";
    try{
    //获取单据状态 xin 2019-2-25 16:59:54
    docStatus=PanelManageBo.getDocstatus(wherePan,formId,"[?zhu]",request);
    }catch(Exception e){
        docStatus="0";
    docStatus="0";
    }
     load.setDocStatus(docStatus);
     load.setHasCopy(copy);
     load.setFormId(formId);
     load.setFormType(formType);
     load.setDoccode(docCode);
     load.setSession(request.getSession());
    %>
    load.setDocStatus(docStatus);
    load.setHasCopy(copy);
    load.setFormId(formId);
    load.setFormType(formType);
    load.setDoccode(docCode);
    load.setSession(request.getSession());
%>
WebRoot/public/template/0/5/index.jsp
@@ -130,21 +130,8 @@
                    String customURL=DBHelper.getCustomURL(request,formId,formType,"panel.jsp");
                %>
                <jsp:include page="<%=customURL%>" flush="true"></jsp:include><%//改成兼容用户自定义控件布局的变量 xin 2024-1-12 16:14:05%>
<%--                <%@ include file="panel.jsp" %>--%>
            </div>
        </div>
        <%
            if ("1".equals(isShowOnlineMsg)) {//isShowOnlineMsg定义在jsCssHead
                request.setAttribute("formId", formId + "");
                request.setAttribute("docCode", doccode);
        %>
        <jsp:include page="/general/onlineMessage.jsp" flush="true"/>
        <%
            }
            if ("1".equals(isShowProcessTracking)) {//isShowProcessTracking定义在jsCssHead
        %>
        <%@ include file="/general/processTrack.jsp" %>
        <%}%>
        <%//文字颜色说明显示位置 xin 2022-5-16 14:45:39%>
        [?ColorDescription]
        <span id="checkIs"> </span>
WebRoot/public/template/0/5/panel.jsp
@@ -13,27 +13,27 @@
    String sql = "";
    SqlRowSet SRS =null;//3类型控件遍历下拉数据
    String addUrl="";//添加传给grid的条件,需要分离
    Map<String,Object> docMap=new HashMap<String,Object>();//查询获取到的数据信息Map集合
    List<Map<String, Object>> listInfo=new ArrayList<Map<String, Object>>();//查询获取到的数据信息List集合
    if((wherePan!=null&&!wherePan.equals(""))||grid!=null){
          if(wherePan.indexOf("@G@")!=-1){
              int inds=wherePan.indexOf("@G@");
              String temp1=wherePan;
               wherePan=temp1.substring(0,inds);
               addUrl = " and "+temp1.substring(inds+3);
          }
          try{
                sql="select top 1 @selectColAll@ from ";//只能查一条
                if(sql.contains("&doccode&")){//by danaus 2011-1-25
                       if(doccode!=null)
                       sql=sql.replaceAll("&doccode&",doccode.replaceAll("'",""));
                }
                SpObserver.setDBtoInstance("_"+request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
                load.setSql(sql);
                load.setSqlWhere(wherePan);
                load.setTableName(tableIs);
                //加载面板数据信息或复单时候加载
                listInfo=PanelManageBo.getFormLoad(load);
    Map<String, Object> docMap = new HashMap<String, Object>();//查询获取到的数据信息Map集合
    List<Map<String, Object>> listInfo = new ArrayList<Map<String, Object>>();//查询获取到的数据信息List集合
    if ((wherePan != null && !wherePan.equals("")) || grid != null) {
        if (wherePan.indexOf("@G@") != -1) {
            int inds = wherePan.indexOf("@G@");
            String temp1 = wherePan;
            wherePan = temp1.substring(0, inds);
            addUrl = " and " + temp1.substring(inds + 3);
        }
        try {
            sql = "select top 1 @selectColAll@" + online + " from ";//只能查一条
            if (sql.contains("&doccode&")) {//by danaus 2011-1-25
                if (doccode != null)
                    sql = sql.replaceAll("&doccode&", doccode.replaceAll("'", ""));
            }
            SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
            load.setSql(sql);
            load.setSqlWhere(wherePan);
            load.setTableName(tableIs);
            //加载面板数据信息或复单时候加载
            listInfo = PanelManageBo.getFormLoad(load);
                if(listInfo.size()>0){
                    docMap.putAll(listInfo.get(0));
                    docstatePan=DBHelper.getValueInt(docMap,"docstatus");               
@@ -180,19 +180,33 @@
 panMain[panIndex]=clone(panPar);
 @uploadEditStatusMap@
 @panInfo@
 @panelScript@
 panMain[panIndex].upDoc='<%=DBHelper.getValue(docMap,"upDoc")%>';
 panMain[panIndex].nextDoc='<%=DBHelper.getValue(docMap,"nextDoc")%>';
 panMain[panIndex].controlUrl="panelControl@formId@.jsp";
 panMain[panIndex].isNew=isNew;//是否是新单
 @panelScript @
     panMain
 [panIndex].upDoc = '<%=DBHelper.getValue(docMap,"upDoc")%>';
 panMain[panIndex].nextDoc = '<%=DBHelper.getValue(docMap,"nextDoc")%>';
 panMain[panIndex].controlUrl = "panelControl@formId@.jsp";
 panMain[panIndex].isNew = isNew;//是否是新单
</script> 
<%@ include file="/public/template/0/showPan.txt"%>
<%@ include file="/public/template/0/showPan.txt" %>
<div class="panelControlDiv">@panelHtml@</div>
<div id="tplt-grid"><%@ include file="@formId@_@customGrid@grid.jsp"%></div>
<div id="tplt-grid"><%@ include file="@formId@_@customGrid@grid.jsp" %></div>
<div class="panelControlDiv">@panelDownHtml@</div>
        <%
            if ("1".equals(docMap.get("isshowonlinemsgbtn"))) {
                request.setAttribute("formId", formId + "");
                request.setAttribute("docCode", doccode);
        %>
        <jsp:include page="/general/onlineMessage.jsp" flush="true"/>
        <%
            }
            if ("1".equals(docMap.get("isshowprocesstrackingbtn"))) {
        %>
        <%@ include file="/general/processTrack.jsp" %>
        <%} %>
<script type="text/javascript">
 @pansetInv@
 panMain[panIndex].loadSet(<%=docstatePan%>);
 panMain[panIndex].keyDown('123','null');
 @pansetInv @
     panMain
 [panIndex].loadSet(<%=docstatePan%>);
 panMain[panIndex].keyDown('123', 'null');
</script>
</span>
WebRoot/public/template/0/8/dataHead.jsp
@@ -26,48 +26,321 @@
    String inserialbtneditstatus="[?inserialbtneditstatus]";
    //出库
    Integer isshowoutserialbtn=[?isshowoutserialbtn];
    String outserialbtneditstatus="[?outserialbtneditstatus]";
    String
    outserialbtneditstatus
    =
    "[?outserialbtneditstatus]"
    ;
    //盘点
    Integer isShowCycleCountSerialBtn=[?isShowCycleCountSerialBtn];
    String cycleCountSerialBtnEditStatus="[?cycleCountSerialBtnEditStatus]";
    Integer
    isShowCycleCountSerialBtn
    =
    [
    ?
    isShowCycleCountSerialBtn
    ]
    ;
    String
    cycleCountSerialBtnEditStatus
    =
    "[?cycleCountSerialBtnEditStatus]"
    ;
    //农行支付收款、退款控制 xin 2021-8-23 14:30:39
    Integer isshowonlinepaymentbutton=[?isshowonlinepaymentbutton];
    String online="";
    if(isshowonlinepaymentbutton==1){
    online+=",(case when isnull(OnlinePaymentAmount,0) > 0 then 1 else 0 end) as isshowonlinepaymentbutton";
    Integer
    isshowonlinepaymentbutton
    =
    [
    ?
    isshowonlinepaymentbutton
    ]
    ;
    String
    online
    =
    ""
    ;
    if
    (
    isshowonlinepaymentbutton
    ==
    1
    )
    {
    online
    +=
    ",(case when isnull(OnlinePaymentAmount,0) > 0 then 1 else 0 end) as isshowonlinepaymentbutton"
    ;
    }
    //---------------在线交流,流程跟踪 by danaus 2024-03-15 09:36
    String
    isShowOnlineMsg
    =
    "[?isShowOnlineMsg]"
    ;//是否显示,1显示,0不显示
    String
    showOnlineMsgExpression
    =
    "[?ShowOnlineMsgExpression]"
    ;//表达式
    String
    isShowProcessTracking
    =
    "[?isShowProcessTracking]"
    ;
    String
    showProcessTrackingExpression
    =
    "[?ShowProcessTrackingExpression]"
    ;
    //--在线交流sql表达式
    if
    (
    "1"
    .
    equals
    (
    isShowOnlineMsg
    )
    )
    {
    if
    (
    org
    .
    apache
    .
    commons
    .
    lang3
    .
    StringUtils
    .
    isNotBlank
    (
    showOnlineMsgExpression
    )
    )
    {
    showOnlineMsgExpression
    =
    DBHelper
    .
    getRepAll
    (
    showOnlineMsgExpression
    ,
    session
    ,
    null
    ,
    true
    )
    ;
    online
    +=
    ",(case when "
    +
    showOnlineMsgExpression
    +
    " then 1 else 0 end) as isShowOnlineMsgBtn"
    ;
    }
    else
    {
    //没有设置表达式,默认显示
    online
    +=
    ",1 as isShowOnlineMsgBtn"
    ;
    }
    }
    //--流程跟踪sql表达式
    if
    (
    "1"
    .
    equals
    (
    isShowProcessTracking
    )
    )
    {
    if
    (
    org
    .
    apache
    .
    commons
    .
    lang3
    .
    StringUtils
    .
    isNotBlank
    (
    showProcessTrackingExpression
    )
    )
    {
    showProcessTrackingExpression
    =
    DBHelper
    .
    getRepAll
    (
    showProcessTrackingExpression
    ,
    session
    ,
    null
    ,
    true
    )
    ;
    online
    +=
    ",(case when "
    +
    showProcessTrackingExpression
    +
    " then 1 else 0 end) as isShowProcessTrackingBtn"
    ;
    }
    else
    {
    online
    +=
    ",1 as isShowProcessTrackingBtn"
    ;
    }
    }
    //-----------
    //用户代码
    String hrCode = (String)session.getAttribute(SessionKey.HRCODE);
    String userCode = (String)session.getAttribute(SessionKey.USERCODE);
    String
    hrCode
    =
    (
    String
    )
    session
    .
    getAttribute
    (
    SessionKey
    .
    HRCODE
    )
    ;
    String
    userCode
    =
    (
    String
    )
    session
    .
    getAttribute
    (
    SessionKey
    .
    USERCODE
    )
    ;
    //用户权限
    Map<String,Map<String,Object>> perssion=(Map<String,Map<String,Object>>)session.getAttribute(SessionKey.PERSSION);
    Map
    <
    String
    ,
    Map
    <
    String
    ,
    Object
    >
    >
    perssion
    =
    (
    Map
    <
    String
    ,
    Map
    <
    String
    ,
    Object
    >
    >
    )
    session
    .
    getAttribute
    (
    SessionKey
    .
    PERSSION
    )
    ;
    //用户对于该功能号所拥有的权限代码
    int profile=-1;
    try{
        profile=(Integer)perssion.get(formId+"").get("optype");
    }catch(Exception e){}
    int
    profile
    =
    -
    1
    ;
    try
    {
    profile
    =
    (
    Integer
    )
    perssion
    .
    get
    (
    formId
    +
    ""
    )
    .
    get
    (
    "optype"
    )
    ;
    }
    catch
    (
    Exception
    e
    )
    {
    }
    //是否为超级管理员  1 为超级管理员
    String isSuperUser = (String)session.getAttribute(SessionKey.SUPPER_USER);
    isSuperUser=isSuperUser.intern();
    if(isSuperUser=="1")
        profile=com.yc.utils.FormOpUtil.TotalOP;
    profile=com.yc.utils.FormOpUtil.TotalOP;
    if(optype!=-1){
        profile=profile&optype;
    profile=profile&optype;
    }
    String queryString = request.getQueryString();
    if(queryString==null)queryString="";
    //打开时输入密码
    String isOpenFuncShowPwdEdit = "[?isOpenFuncShowPwdEdit]";
    if(isOpenFuncShowPwdEdit!="" && isOpenFuncShowPwdEdit!="0"){
        boolean hasOpen = CheckInputPwdUtils.checkPwd(isOpenFuncShowPwdEdit,"[?formId]",request,response,session);
        if(!hasOpen){
            return;
        }
    boolean hasOpen = CheckInputPwdUtils.checkPwd(isOpenFuncShowPwdEdit,"[?formId]",request,response,session);
    if(!hasOpen){
    return;
    }
    }
    //功能链接表达式
    String hasShowItemExpression = "[?hasShowItemExpression]";
@@ -86,35 +359,35 @@
    String where = request.getParameter("where");
    wherePan =(wherePan==null)?(where!=null?where:null):wherePan;
    request.setAttribute("wherePan",wherePan);//功能连接表达式 &符号的替换属性需要用到   在RequestParameterUtils类的replaceRequestExpression方法调用到。操作时间 2014-6-26 10:40:00
            if(wherePan==null&&
        (queryString.startsWith("where=")||
            queryString.startsWith("wherePan="))){
        wherePan=queryString.replace("where=", "").replace("wherePan=","");
    if(wherePan==null&&
    (queryString.startsWith("where=")||
    queryString.startsWith("wherePan="))){
    wherePan=queryString.replace("where=", "").replace("wherePan=","");
    }
    wherePan=com.yc.utils.HtmlUtil.prossIntoSessionForStr(wherePan,session);
    if(wherePan!=null){
        String []temp = wherePan.split("and");
        String []t=null;
        for(int i=0;i<temp.length;i++){
            t=temp[i].split("=");
            if("doccode".equalsIgnoreCase(t[0])){
                try{
                    docCode=t[1];break;
                }catch(Exception e){
                }
            }
        }
        panelEnd=wherePan;
    String []temp = wherePan.split("and");
    String []t=null;
    for(int i=0;i<temp.length;i++){
    t=temp[i].split("=");
    if("doccode".equalsIgnoreCase(t[0])){
    try{
    docCode=t[1];break;
    }catch(Exception e){
    }
    }
    }
    panelEnd=wherePan;
    }
    if(copy!=null){
        docCode=request.getParameter("doccode");
        where="doccode='"+docCode+"'";
    docCode=request.getParameter("doccode");
    where="doccode='"+docCode+"'";
    }
    if(docCode!=null&&!docCode.equals("")){
       // isNew=(isNew==null)?"1":"0";
        panelEnd=(panelEnd.equals("")?"doccode='"+docCode.replaceAll("'","")+"'":panelEnd)+" and (formid in("+formId+" #dataformid#)) #formdatafilters# ";
    // isNew=(isNew==null)?"1":"0";
    panelEnd=(panelEnd.equals("")?"doccode='"+docCode.replaceAll("'","")+"'":panelEnd)+" and (formid in("+formId+" #dataformid#)) #formdatafilters# ";
    }
    //panel info
    panelEnd=panelEnd.equals("")?"1=2":panelEnd;
@@ -129,5 +402,5 @@
    Map  atMap = new HashMap();
    Map<String, Object> bdMap =new HashMap<String,Object>();
    boolean nb=false;
    String pantit="";
    %>
    String pantit="";
%>
WebRoot/public/template/0/8/index.jsp
@@ -27,20 +27,7 @@
                    String customURL=DBHelper.getCustomURL(request,formId,formType,"panel.jsp");
                %>
                <jsp:include page="<%=customURL%>" flush="true"></jsp:include><%//改成兼容用户自定义控件布局的变量 xin 2024-1-12 16:14:05%>
<%--                <%@ include file="panel.jsp" %>--%>
            </div>
            <%if ("1".equals(isShowOnlineMsg)) {//isShowOnlineMsg定义在jsCssHead %>
            <%
                request.setAttribute("formId", formId + "");
                request.setAttribute("docCode", doccode);
            %>
            <jsp:include page="/general/onlineMessage.jsp" flush="true"/>
            <%
                }
                if ("1".equals(isShowProcessTracking)) {//isShowProcessTracking定义在jsCssHead
            %>
            <%@ include file="/general/processTrack.jsp" %>
            <%} %>
            <%//文字颜色说明显示位置 xin 2022-5-16 14:45:39%>
            [?ColorDescription]
        </div>
WebRoot/public/template/0/8/jsCssHead.jsp
@@ -1,9 +1,5 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    String isShowOnlineMsg="[?isShowOnlineMsg]";
    String isShowProcessTracking="[?isShowProcessTracking]";
%>
<link rel="stylesheet" type="text/css" href="/style/commons.css?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/style/commons.css")%>"> 
<link rel="stylesheet" type="text/css" href="/style/icon.css?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/style/icon.css")%>">
<link rel="stylesheet" type="text/css" href="/style/default/easyui.css?v=<%=com.yc.utils.FileUtil.getVerstion(request,"/style/default/easyui.css")%>">
WebRoot/public/template/0/8/panel.jsp
@@ -52,27 +52,29 @@
   String tableIs2="@minxi@";
   Map<String,Object> docMap=new HashMap<String,Object>();
   List<Map<String, Object>> listInfo=new ArrayList<Map<String, Object>>();
   String addUrl="";//添加传给grid的条件,需要分离
   if((wherePan!=null&&!wherePan.equals(""))||grid!=null){
       //wherePan=java.net.URLDecoder.decode(wherePan,"utf-8");
       if(wherePan.indexOf("@G@")!=-1){
           int inds=wherePan.indexOf("@G@");
           String temp1=wherePan;
            wherePan=temp1.substring(0,inds);
            addUrl = " and "+temp1.substring(inds+3);
       }
      try{
          sql="select top 1 @selectColAll@ from ";//只能查一条
          if(sql.contains("&doccode&")){//by danaus 2011-1-25
              if(doccode!=null)
              sql=sql.replaceAll("&doccode&",doccode.replaceAll("'",""));
          }
          SpObserver.setDBtoInstance("_"+request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
          if(copy!=null){
              listInfo=PanelManageBo.getFromEnd(sql,tableIs,wherePan.replaceAll("_ycid_","id"),@formType@,copy,request);
           }else{
              listInfo=PanelManageBo.getFromEnd(sql,tableIs,(wherePan==null?wherePan:wherePan.replaceAll("_ycid_","id")),@formType@,request);
          }
    String addUrl = "";//添加传给grid的条件,需要分离
    if ((wherePan != null && !wherePan.equals("")) || grid != null) {
        //wherePan=java.net.URLDecoder.decode(wherePan,"utf-8");
        if (wherePan.indexOf("@G@") != -1) {
            int inds = wherePan.indexOf("@G@");
            String temp1 = wherePan;
            wherePan = temp1.substring(0, inds);
            addUrl = " and " + temp1.substring(inds + 3);
        }
        try {
            sql = "select top 1 @selectColAll@" + online + " from ";//只能查一条
            if (sql.contains("&doccode&")) {//by danaus 2011-1-25
                if (doccode != null)
                    sql = sql.replaceAll("&doccode&", doccode.replaceAll("'", ""));
            }
            SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
            if (copy != null) {
                listInfo = PanelManageBo.getFromEnd(sql, tableIs, wherePan.replaceAll("_ycid_", "id"), @formType @,
                copy, request);
            } else {
                listInfo = PanelManageBo.getFromEnd(sql, tableIs, (wherePan == null ? wherePan : wherePan.replaceAll("_ycid_", "id")),
                @formType @,request);
            }
       }catch(Exception e){
           throw e;
//        try{
@@ -281,9 +283,23 @@
<div class="panelControlDiv">
    @panelDownHtml@
</div>
    <%
        if ("1".equals(docMap.get("isshowonlinemsgbtn"))) {
            //isShowOnlineMsg定义在jsCssHead
            request.setAttribute("formId", formId + "");
            request.setAttribute("docCode", doccode);
    %>
        <jsp:include page="/general/onlineMessage.jsp" flush="true"/>
        <%
            }
            if ("1".equals(docMap.get("isshowprocesstrackingbtn"))) {//isShowProcessTracking定义在jsCssHead
        %>
        <%@ include file="/general/processTrack.jsp" %>
        <%} %>
<script type="text/javascript">
@pansetInv@
panMain[panIndex].loadSet(<%=docstatePan%>);
panMain[panIndex].keyDown('123','null');
@pansetInv @
    panMain
[panIndex].loadSet(<%=docstatePan%>);
panMain[panIndex].keyDown('123', 'null');
</script>
</span>
src/com/yc/action/grid/TreeBean.java
@@ -1,6 +1,5 @@
package com.yc.action.grid;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -18,7 +17,7 @@
    private String treeNodeFiled;//树节点字段名称
    private String treefilterstr;//树过滤条件
    public  void build(String str){
        //treenodeid+sp+type+sp+nodeval+sp+treecontrol+sp+currentFormid+sp+treeFormType+sp+"1=1"+sp+detailNodeid;
        //treenodeid+sp+type+sp+nodeval+sp+treecontrol+sp+currentFormid+sp+treeFormType+sp+"1=1"+sp+detailNodeid+sp+treefilterstr
          if(str!=null&&!"".equals(str)) {
              String[] temp = str.split(";");
              treeNodeFiled = temp[0];
src/com/yc/app/v2/entity/GformEntity.java
@@ -715,6 +715,8 @@
    private static final long serialVersionUID = 1L;
    private Integer isShowCycleCountSerialBtn;
    private String cycleCountSerialBtnEditStatus;
    private  String excludeTablesWhenSaving;
    private String excludeTablesWhenSaving;
    private String showOnlineMsgExpression;
    private String showProcessTrackingExpression;
}
src/com/yc/app/v2/service/impl/DanJunFormServiceImpl.java
@@ -168,6 +168,33 @@
                //没设置则按钮不显示
                sb.append(",0 as [RevokeBtn_Visible]");
            }
            //---------------在线交流,流程跟踪 by danaus 2024-03-15 09:36
            Integer isShowOnlineMsg = gformEntity.getIsshowonlinemsg();//是否显示,1显示,0不显示
            String showOnlineMsgExpression = gformEntity.getShowOnlineMsgExpression();//表达式
            Integer isShowProcessTracking = gformEntity.getIsshowprocesstracking();
            String showProcessTrackingExpression = gformEntity.getShowProcessTrackingExpression();
            //--在线交流sql表达式
            if (isShowOnlineMsg != null && isShowOnlineMsg == 1) {
                if (org.apache.commons.lang3.StringUtils.isNotBlank(showOnlineMsgExpression)) {
                    sb.append(",(case when " + showOnlineMsgExpression + " then 1 else 0 end) as [isShowOnlineMsgBtn_Visible]");
                } else {
                    //没有设置表达式,默认显示
                    sb.append(",1 as [isShowOnlineMsgBtn_Visible]");
                }
            } else {
                sb.append(",0 as [isShowOnlineMsgBtn_Visible]");
            }
            //--流程跟踪sql表达式
            if (isShowProcessTracking != null && isShowProcessTracking == 1) {
                if (org.apache.commons.lang3.StringUtils.isNotBlank(showProcessTrackingExpression)) {
                    sb.append(",(case when " + showProcessTrackingExpression + " then 1 else 0 end) as [isShowProcessTrackingBtn_Visible]");
                } else {
                    sb.append(",1 as [isShowProcessTrackingBtn_Visible]");
                }
            } else {
                sb.append(",0 as [isShowProcessTrackingBtn_Visible]");
            }
            //-----------
        }
        return sb.toString();
    }
src/com/yc/ionic/schedule/JPushTimer.java
@@ -143,7 +143,7 @@
                            extras.put("title", companyMemo);//公司名称
                            List<String> alais = new ArrayList<String>();
                            alais.add(telephone);
                            //alais.add(dataSourceEntity.getDbId() + "_" + usercode);
                            alais.add(dataSourceEntity.getDbId() + "_" + usercode);//TODO 兼容处理,app所有版本都更新后,再移除
                            queue.add(new JpushMsg(alais, topic, extras, dataSourceEntity.getDbId(), UNID, map.get("formname") + "", doccode));
                        }
src/com/yc/sdk/gaodemap/api/GaoDeMapService.java
@@ -25,6 +25,11 @@
    }
    @Override
    public Object searchByText(SearchEntity searchEntity) throws Exception {
        return null;
    }
    @Override
    public Object nearbySearch(SearchEntity searchEntity) throws Exception {
        return null;
    }
src/com/yc/sdk/huaweimap/controller/HuaweiMapController.java
@@ -38,4 +38,29 @@
            return callBackMessage.toJSONObject();
        }
    }
    /**
     * 关键字搜索
     *
     * @param request
     * @return 返回结果
     */
    @RequestMapping(value = "/app/map/searchByText.do", method = RequestMethod.POST)
    @CrossOrigin
    public @ResponseBody Object searchByText(@RequestBody SearchEntity searchEntity,
                                             HttpServletRequest request) {
        CallBackMessage callBackMessage = new CallBackMessage();
        try {
            if (searchEntity == null) {
                throw new ApplicationException("参数不能为空");
            }
            Object result = MapService.getMapFactory().searchByText(searchEntity);
            callBackMessage.sendSuccessMessageByDefault();
            callBackMessage.setInfo(result);
            return callBackMessage.toJSONObject();
        } catch (Exception ex) {
            callBackMessage.sendErrorMessage(this.getErrorMsg(ex));
            return callBackMessage.toJSONObject();
        }
    }
}
src/com/yc/sdk/huaweimap/service/HuaWeiMapService.java
@@ -27,6 +27,7 @@
    private static String GEOCODEURL = "https://siteapi.cloud.huawei.com/mapApi/v1/siteService/reverseGeocode";
    private static String IPURL = "https://openlocation-drcn.platform.dbankcloud.com/networklocation/v1/ipLocation";
    private static String SEARCHURL = "https://siteapi.cloud.huawei.com/mapApi/v1/siteService/nearbySearch";
    private static String SEARCHBYTEXTURL = "https://siteapi.cloud.huawei.com/mapApi/v1/siteService/searchByText";
    @Override
    public LocationEntity getIPLocation(String ip) throws Exception {
@@ -55,6 +56,40 @@
    }
    @Override
    public Object searchByText(SearchEntity searchEntity) throws Exception {
        try {
            if (StringUtils.isBlank(searchEntity.getQuery())) {
                throw new ApplicationException("搜索关键字不能为空");
            }
            HttpClient httpClient = HttpClients.createDefault();
            HttpPost post = new HttpPost(SEARCHBYTEXTURL);
            post.setHeader("Content-Type", "application/json;charset=utf-8");
            post.setHeader("Authorization", "Bearer " + KEY);
            StringEntity myEntity = new StringEntity(JSON.toJSONString(searchEntity), "UTF-8");
            myEntity.setContentType("application/json;charset=UTF-8");
            post.setEntity(myEntity);
            HttpResponse response = httpClient.execute(post);
            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode != HttpStatus.SC_OK) {
                throw new ApplicationException("获取响应失败,请重新提交-" + response.getStatusLine().getStatusCode() + "[" + response.getStatusLine().getReasonPhrase() + "]");
            } else {
                ReverseGeocodeResponseEntity responseEntity = JSON.parseObject(EntityUtils.toString(response.getEntity(), "UTF-8"), ReverseGeocodeResponseEntity.class);
                if ("0".equalsIgnoreCase(responseEntity.getReturnCode())) {
                    return responseEntity;
                } else if ("010004".equalsIgnoreCase(responseEntity.getReturnCode())) {
                    //查找不到
                    return responseEntity;
                } else {
                    throw new ApplicationException(responseEntity.getReturnDesc());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new ApplicationException("获取响应失败,请重新提交" + e.getMessage());
        }
    }
    @Override
    public Object nearbySearch(SearchEntity searchEntity) throws Exception {
        try {
            CoordinateEntity coordinateEntity = searchEntity.getLocation();
src/com/yc/sdk/map/entity/SearchEntity.java
@@ -7,8 +7,10 @@
public class SearchEntity {
    String query;
    CoordinateEntity location;
    int radius;
    int radius = 5000;
    String hwPoiType;
    int pageIndex = 1;
    int pageSize = 20;
    boolean cityLimit = false;
    String cityId;
}
src/com/yc/sdk/map/service/AbstractMapService.java
@@ -33,4 +33,12 @@
     */
    Object nearbySearch(SearchEntity searchEntity) throws Exception;
    /**
     * 关键字搜索
     *
     * @param searchEntity
     * @return
     * @throws Exception
     */
    Object searchByText(SearchEntity searchEntity) throws Exception;
}
src/com/yc/service/build/type/v2/BaseImpl.java
@@ -45,7 +45,7 @@
    protected PanelServiceIfc pIfc;
    public static String BEAN_INFO = "beaninfo";
    private static String GFORM_SQL = " isTitle,formname,showdetail,isopenFuncshowpwdedit,isshowpwdedit,optype,HDTable,version,dataformid,formdatafilters,panellabellayout,CancelBtnProcName,CancelBtnExpression,CancelBtnEditStatus,CancelBtnName,RevokeBtnProcName,RevokeBtnExpression,RevokeBtnEditStatus,isShowOnlineMsg,isShowProcessTracking,autoOpen,predocstatus,procgroupaftersavedoc,dealafterdocsave,transgroupcode,dttable,isShowNewDocButton,isshowinserialbtn,inserialbtneditstatus,isshowoutserialbtn ,outserialbtneditstatus,isshowonlinepaymentbutton,isshowgridstyleforapp,popupWindowsHeightRate,isShowCycleCountSerialBtn,cycleCountSerialBtnEditStatus";//
    private static String GFORM_SQL = " isTitle,formname,showdetail,isopenFuncshowpwdedit,isshowpwdedit,optype,HDTable,version,dataformid,formdatafilters,panellabellayout,CancelBtnProcName,CancelBtnExpression,CancelBtnEditStatus,CancelBtnName,RevokeBtnProcName,RevokeBtnExpression,RevokeBtnEditStatus,isShowOnlineMsg,isShowProcessTracking,autoOpen,predocstatus,procgroupaftersavedoc,dealafterdocsave,transgroupcode,dttable,isShowNewDocButton,isshowinserialbtn,inserialbtneditstatus,isshowoutserialbtn ,outserialbtneditstatus,isshowonlinepaymentbutton,isshowgridstyleforapp,popupWindowsHeightRate,isShowCycleCountSerialBtn,cycleCountSerialBtnEditStatus,showOnlineMsgExpression,showProcessTrackingExpression";//
    protected Map<String, Object> getGformInfo(String formid) {
        return gformIfc.getGformInfo(GFORM_SQL, Integer.parseInt(formid));
    }
@@ -303,12 +303,6 @@
                "<script type=\"text/javascript\" src=\"/js/bootstrap/v5.1.3/js/bootstrap.bundle.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,\"/js/bootstrap/v5.1.3/js/bootstrap.bundle.js\")%>\"></script>\n";
        if (num != 0) {//表示存在有上传控件
            js_css +=
//                    "<link rel=\"stylesheet\" type=\"text/css\" href=\"/js/bootstrap-upload/css/fileinput.css?v=<%=com.yc.utils.FileUtil.getVerstion(request,\"/js/bootstrap-upload/css/fileinput.css\")%>\">\n" +
//                    "<link rel=\"stylesheet\" type=\"text/css\" href=\"/js/bootstrap-upload/css/bootstrap.css?v=<%=com.yc.utils.FileUtil.getVerstion(request,\"/js/bootstrap-upload/css/bootstrap.css\")%>\">\n" +
//                    "<link rel=\"stylesheet\" type=\"text/css\" href=\"/js/bootstrap-upload/css/rotationscaling.css?v=<%=com.yc.utils.FileUtil.getVerstion(request,\"/js/bootstrap-upload/css/rotationscaling.css\")%>\">\n" +
//                    "<script type=\"text/javascript\" src=\"/js/bootstrap-upload/js/fileinput.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,\"/js/bootstrap-upload/js/fileinput.js\")%>\"></script>\n" +
//                    "<script type=\"text/javascript\" src=\"/js/bootstrap-upload/js/locales/zh.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,\"/js/bootstrap-upload/js/locales/zh.js\")%>\"></script>\n" +
//                    "<script type=\"text/javascript\" src=\"/shopping/view/javascript/bootstrap/js/bootstrap.min.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,\"/shopping/view/javascript/bootstrap/js/bootstrap.min.js\")%>\"></script>\n";
                    "<link rel=\"stylesheet\" type=\"text/css\" href=\"/js/bootstrap/fileinput/css/fileinput.css?v=<%=com.yc.utils.FileUtil.getVerstion(request,\"/js/bootstrap/fileinput/css/fileinput.css\")%>\">\n" +
                            "<link rel=\"stylesheet\" type=\"text/css\" href=\"/general/Viewer/css/viewer.min.css?v=<%=com.yc.utils.FileUtil.getVerstion(request,\"/general/Viewer/css/viewer.min.css\")%>\">\n" +
                            "<script type=\"text/javascript\" src=\"/js/bootstrap/fileinput/js/fileinput.js?v=<%=com.yc.utils.FileUtil.getVerstion(request,\"/js/bootstrap/fileinput/js/fileinput.js\")%>\"></script>\n" +
@@ -354,25 +348,27 @@
        tmpJsp = tmpJsp.replace("[?formId]", baseBean.formID);
        tmpJsp = tmpJsp.replace("[?table]", toString(gformInfo.get("HDTable")));
        tmpJsp = tmpJsp.replace("[?formType]", baseBean.type + "");
        tmpJsp = tmpJsp.replace("[?formName]", gformInfo.get("formName")+"");
        tmpJsp = tmpJsp.replace("[?canelProc]",toString(gformInfo.get("CancelBtnProcName")));//取消确认
        tmpJsp = tmpJsp.replace("[?revokeProc]",toString(gformInfo.get("RevokeBtnProcName")));//撤回
        tmpJsp= tmpJsp.replace("[?zhu]", baseBean.zhu);
        tmpJsp = tmpJsp.replace("[?formName]", gformInfo.get("formName") + "");
        tmpJsp = tmpJsp.replace("[?canelProc]", toString(gformInfo.get("CancelBtnProcName")));//取消确认
        tmpJsp = tmpJsp.replace("[?revokeProc]", toString(gformInfo.get("RevokeBtnProcName")));//撤回
        tmpJsp = tmpJsp.replace("[?zhu]", baseBean.zhu);
        tmpJsp = tmpJsp.replace("[?sousuo]", baseBean.sous);
        tmpJsp = tmpJsp.replace("@doc", baseBean.doc);
        tmpJsp = tmpJsp.replace("@id_info", baseBean.id_info);
        tmpJsp = tmpJsp.replace("[?predocstatus]", gformInfo.get("predocstatus") + "");
        tmpJsp = tmpJsp.replace("[?isShowOnlineMsg]", gformInfo.get("isShowOnlineMsg") + "");
        tmpJsp = tmpJsp.replace("[?isShowProcessTracking]", gformInfo.get("isShowProcessTracking") + "");
        tmpJsp = tmpJsp.replace("[?ShowOnlineMsgExpression]", gformInfo.get("showOnlineMsgExpression") == null ? "" : gformInfo.get("showOnlineMsgExpression") + "");
        tmpJsp = tmpJsp.replace("[?ShowProcessTrackingExpression]", gformInfo.get("showProcessTrackingExpression") == null ? "" : gformInfo.get("showProcessTrackingExpression") + "");
        tmpJsp = tmpJsp.replace("[?isOpenFuncShowPwdEdit]", toString(gformInfo.get("isopenFuncshowpwdedit")));
        tmpJsp = tmpJsp.replace("[?version]", ("".equalsIgnoreCase(toString(gformInfo.get("version"))) ? "0" : toString(gformInfo.get("version"))));
        // 序列号扫码 xin 2021-8-2 17:45:43
        //入库
        tmpJsp = tmpJsp.replace("[?isshowinserialbtn]", DBHelper.getValueInt(gformInfo,"isshowinserialbtn")+"");
        tmpJsp = tmpJsp.replace("[?inserialbtneditstatus]", DBHelper.getValue(gformInfo,"inserialbtneditstatus"));
        tmpJsp = tmpJsp.replace("[?isshowinserialbtn]", DBHelper.getValueInt(gformInfo, "isshowinserialbtn") + "");
        tmpJsp = tmpJsp.replace("[?inserialbtneditstatus]", DBHelper.getValue(gformInfo, "inserialbtneditstatus"));
        //出库
        tmpJsp = tmpJsp.replace("[?isshowoutserialbtn]", DBHelper.getValueInt(gformInfo,"isshowoutserialbtn")+"");
        tmpJsp = tmpJsp.replace("[?outserialbtneditstatus]", DBHelper.getValue(gformInfo,"outserialbtneditstatus"));
        tmpJsp = tmpJsp.replace("[?isshowoutserialbtn]", DBHelper.getValueInt(gformInfo, "isshowoutserialbtn") + "");
        tmpJsp = tmpJsp.replace("[?outserialbtneditstatus]", DBHelper.getValue(gformInfo, "outserialbtneditstatus"));
        //盘点
        tmpJsp = tmpJsp.replace("[?isShowCycleCountSerialBtn]", DBHelper.getValueInt(gformInfo,"isShowCycleCountSerialBtn")+"");
        tmpJsp = tmpJsp.replace("[?cycleCountSerialBtnEditStatus]", DBHelper.getValue(gformInfo,"cycleCountSerialBtnEditStatus"));
src/com/yc/service/build/type/v2/T_Based_Impl.java
@@ -56,14 +56,17 @@
                throw new Exception("凭证定义未定义" + formID + "功能号的期间组织代码");
            }
        }
        data = data.replaceAll("@CustomDoccode@", this.getValue(listS.get(0), "customdoccode"));
        data = data.replace("#periodtype#", this.getValue(listS.get(0), "periodtype"));
        data = data.replace("#comanyId#", companyId);
        data = data.replaceAll("#transgroupcode#", gformInfo.get("transgroupcode")+"");
        data = data.replaceAll("#transgroupcode#", gformInfo.get("transgroupcode") + "");
        data = data.replaceAll("#predocstatus#", gformInfo.get("predocstatus") + "");
        data = data.replace("[?predocstatus]", gformInfo.get("predocstatus") + "");
        data = data.replace("[?isShowOnlineMsg]", gformInfo.get("isShowOnlineMsg") + "");
        data = data.replace("[?isShowProcessTracking]", gformInfo.get("isShowProcessTracking") + "");
        data = data.replace("[?ShowOnlineMsgExpression]", gformInfo.get("showOnlineMsgExpression") == null ? "" : gformInfo.get("showOnlineMsgExpression") + "");
        data = data.replace("[?ShowProcessTrackingExpression]", gformInfo.get("showProcessTrackingExpression") == null ? "" : gformInfo.get("showProcessTrackingExpression") + "");
        buildPageCode(data, fileName, baseBean);
    }
}
src/com/yc/service/grid/GridServiceImpl.java
@@ -56,7 +56,7 @@
public class GridServiceImpl extends BaseService implements GridServiceIfc {
    @Autowired
    Type38Ifc type38Ifc;
    private final String gform = "[formid], [formname],[isused],[formmemo],[optype],[refformid],[hdtable],[dttable],[showdetail],[fetchrecnumber],[queryform],[refreshTime],[refresh_aftersave],[frozencols],[LockGridSort],[rowcopyfields],[rowcopyformids],[rowDelFormids],[index1],[index1primary],[index2],[index2primary],[index3],[index3Primary],[dataformid],[predocstatus],[postdocstatus],[DocStatusName],[transgroupcode],[codelength],[preFixcode],[precodetype],[helpdoc_udl],[checkblncfields],[formalign],[DealAfterDocSave],[AllowEmptyRow],[Busi2fiDataView],[glcodefield],[txtinputfields],[DBCtrlRowCount],[ShowAsDetailMode],[modifytableflag],[applytableflag],[CrossInputType],[MultiTitleType],[datapooled],[glentitycode],[formdatafilters],[ProcGroupafterSavedoc], [TransTypecode],[currencyfld],[chkFormula],[GridFormatFun],[SelectChecker],[ReturnCurChecker],[ReturnCurCheckerName],[FT],[FTFormType],[FK],[SeekGroupID],[sPremissField],[dPremissField],[FKeFilter],[GridRowHeight],[GridHeight], [isShowPwdEdit], [isOpenFuncShowPwdEdit], [isShowOnlineMsg] ,[isShowProcessTracking] ,[PanelLabelLayout],[isTitle], [isTaobao],[cellAlign] ,[pageSize],[version],[reportprompts],[CancelBtnProcName],[CancelBtnExpression],[CancelBtnEditStatus],[isShowCell],[importProcName],[CancelIsSave],[CancelBtnName],[isGantt],[byGroup],[DefaultRowCount],[Expanded], [isFilter], [JNIName],[JNIDataBaseURL], [JNIPort] ,[JNIDataBaseName], [JNIUser], [JNIPwd] ,[JNISql] ,[JNITempTable],[addNewRow],[autopaging],[RevokeBtnProcName],[RevokeBtnExpression],[RevokeBtnEditStatus],[autoOpen],isExchangeDataWithHost,isShowNewDocButton,isShowMemoWhenApprovals,isshowinserialbtn,inserialbtneditstatus,isshowoutserialbtn ,outserialbtneditstatus,isShowOnlinePaymentButton,isShowGridStyleForApp ,popupWindowsHeightRate,isShowCycleCountSerialBtn,cycleCountSerialBtnEditStatus,excludeTablesWhenSaving ";//
    private final String gform = "[formid], [formname],[isused],[formmemo],[optype],[refformid],[hdtable],[dttable],[showdetail],[fetchrecnumber],[queryform],[refreshTime],[refresh_aftersave],[frozencols],[LockGridSort],[rowcopyfields],[rowcopyformids],[rowDelFormids],[index1],[index1primary],[index2],[index2primary],[index3],[index3Primary],[dataformid],[predocstatus],[postdocstatus],[DocStatusName],[transgroupcode],[codelength],[preFixcode],[precodetype],[helpdoc_udl],[checkblncfields],[formalign],[DealAfterDocSave],[AllowEmptyRow],[Busi2fiDataView],[glcodefield],[txtinputfields],[DBCtrlRowCount],[ShowAsDetailMode],[modifytableflag],[applytableflag],[CrossInputType],[MultiTitleType],[datapooled],[glentitycode],[formdatafilters],[ProcGroupafterSavedoc], [TransTypecode],[currencyfld],[chkFormula],[GridFormatFun],[SelectChecker],[ReturnCurChecker],[ReturnCurCheckerName],[FT],[FTFormType],[FK],[SeekGroupID],[sPremissField],[dPremissField],[FKeFilter],[GridRowHeight],[GridHeight], [isShowPwdEdit], [isOpenFuncShowPwdEdit], [isShowOnlineMsg] ,[isShowProcessTracking] ,[PanelLabelLayout],[isTitle], [isTaobao],[cellAlign] ,[pageSize],[version],[reportprompts],[CancelBtnProcName],[CancelBtnExpression],[CancelBtnEditStatus],[isShowCell],[importProcName],[CancelIsSave],[CancelBtnName],[isGantt],[byGroup],[DefaultRowCount],[Expanded], [isFilter], [JNIName],[JNIDataBaseURL], [JNIPort] ,[JNIDataBaseName], [JNIUser], [JNIPwd] ,[JNISql] ,[JNITempTable],[addNewRow],[autopaging],[RevokeBtnProcName],[RevokeBtnExpression],[RevokeBtnEditStatus],[autoOpen],isExchangeDataWithHost,isShowNewDocButton,isShowMemoWhenApprovals,isshowinserialbtn,inserialbtneditstatus,isshowoutserialbtn ,outserialbtneditstatus,isShowOnlinePaymentButton,isShowGridStyleForApp ,popupWindowsHeightRate,isShowCycleCountSerialBtn,cycleCountSerialBtnEditStatus,excludeTablesWhenSaving,showOnlineMsgExpression,showProcessTrackingExpression ";//
    private final String gfield = "[formid],[headflag], [fieldid],[statisid],[Lblcode],[fieldname],[datatype],[displayformat], [showongrid],[gridcaption],  [gridcontroltype],[gridlength],[ft],[ftformtype],[emptyrefdata], [fk],[seekgroupid],[spremissfield],[dpremissfield],[efilter],[return_one_record],[numfieldid],  [visible], [hidelabel], [controltype],[rowno],[colno],[lengthnum],[heightnum],[detailrowno],[detailcolno],[detaillength],[detailheight],[statisflag] ,[blcheckauth],[indexfld],[readonly],[datalink],[keyinput],[secretfld],[calcufield],[formula],[sumfield],[funclinkname],[activefuns] ,[initvalue] ,[checkauthmode],[PreLike],[EnterToNextRow],[tabsheetname],[passwordchar],[uppercase] ,[LinkFormDisplayFields], [dyfieldview],[copyfromlastrow],[ftlockconditionflag],[datafilterfield], [HelpKeyID] ,[MultiLangYN], [IMEactive] , [memo], [Hints],[editStatus],[isReader] ,[SqlScript],[MasterFieldShowLocation], [isCustomHTMLComponent] , [showFieldValueExpression],[HyperlinkFT],[HyperlinkFTFormType],[HyperlinkSPremissField],  [HyperlinkDPremissField],[HyperlinkEFilter],[Hyperlinkmode],[isAutoSaved],[stylecss],[rowSpan] ,[isImport],[isExport],[fieldtype],[cellAlign], [isCopyExclude],[isAutoRefresh],[isLoad],[Audit],[TipsExpression],[SuggestFileds],[RelationField],[onlyOne],AppColNo,AppHeight,AppHideLabel,AppLength,AppRowNo,AppVisible,ScanCodeField,funclinkname,exportTitle,isAPPExcludeField,SqlWhere,afterBlockDividingLine,appCellAlign,isSuppressBlankLineForDropDown ";