xinyb
2024-01-26 ca30ee8f4f9762500af3e41d16bd20fc37b1071a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
<%@page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="com.yc.service.impl.EnvHelper"%>
<%@page import="com.yc.service.impl.DBHelper"%>
<%@page import="com.yc.service.build.BuildFuncIfc"%>
<%@page import="org.springframework.jdbc.support.rowset.SqlRowSet"%>
<%@page import="com.yc.factory.FactoryBean"%>
<%@page import="com.yc.service.panel.TypeControlDao"%>
<%@page import="com.yc.service.panel.time.PanelTimeDao"%>
<%@page import="com.yc.service.panel.PanelManageDao"%>
<%@page import="com.yc.service.panel.GfieldApprovedButtonIfc"%>
<%@page import="com.yc.service.panel.SqlDBHelperIfc"%>
<%@page import="com.yc.service.upload.AttachmentIfc"%>
<%@page import="com.yc.entity.attachment.AttachmentEntity"%>
<%@page import="com.yc.utils.DefaultSet" %>
<%@page import="java.sql.SQLException"%>
<%@page import="net.sf.json.JSONObject"%>
<%@page import="org.springframework.jdbc.BadSqlGrammarException"%>
<%@page import="org.springframework.dao.EmptyResultDataAccessException"%>
<%@page import="org.springframework.dao.DataAccessException"%>
<%@page import="com.yc.multiData.SpObserver"%>
<%@page import="com.yc.utils.SessionKey"%>
<%@page import="com.google.gson.JsonArray"%>
<%@page import="com.google.gson.JsonObject"%>
<%@page import="com.yc.sdk.shopping.util.SettingKey"%>
<%@ include file="dataHead.jsp" %>
<%
  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");
  //pengbei
  request.setCharacterEncoding("UTF-8");
  response.setCharacterEncoding("UTF-8");
  String sql = "";
  String path = request.getContextPath();
  String basePath = SettingKey.getHostUrl(request)+ path + "/";
  Date now=new Date();
  SimpleDateFormat formatDate=new SimpleDateFormat("yyyy-MM-dd");
  String date=String.valueOf(now.getDate());
  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){
         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(doccode!=null && sql.contains("&doccode&")){//by danaus 2011-1-25
                     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,@formType@,request); 
             }
          }catch(Exception e){
              throw e;
//               try{
 //                    listInfo=PanelManageBo.getFromEnd(sql,tableIs2,wherePan,@formType@,request);      
 //              }catch(Exception ex){
//                     listInfo=new ArrayList<Map<String, Object>>();
 //                    //数据库乱设置时不显示页面,直接清空信息,或者不是乱设置,却不能用来查询,也清空信息
 //                 }
         }finally{
             SpObserver.setDBtoInstance();
         }
         if(listInfo.size()>0){
              docMap=listInfo.get(0);}
         if((doccode==null||"".equals(doccode))&&listInfo.size()>0){
                 doccode=DBHelper.getValue(docMap,"doccode");
                 if(!"".equals(doccode)) {
                  isNew = "0";//在获取不到doccode参数值情况下,进行数据加载,如果有doccode值说明不是新单 isNew赋值0 xin 2021-8-10 17:05:18
              }
         }
  }
  if((isNew!=null&&isNew.equals("0"))||listInfo.size()>0){
        isNewOpen=0;//不为新开单      
        docstatePan=DBHelper.getValueInt(docMap,"docstatus");
  }
  JSONObject jsonOldPanel = JSONObject.fromObject(docMap);
  if(!"".equalsIgnoreCase(doccode)&&copy==null){
//------------增加取消确认功能,从变量取得状态值(docstatePan),权限值(profile),到后台查询及生成相应的代码 by danaus 2014-5-27
        String cancelDoc="@canceldocstatus@";//取消确认状态值
        String excep="@sqlException@";//sql表达式
        String cancel_html="<a id=\"tpCanel\" href=\"javascript:void(0)\" onclick=\"iscanelProc=true;save(2);\" class=\"easyui-linkbutton\" plain=\"true\" iconCls=\"icon-cancel\">@CancelBtnName@</a>";//生成取消确认的html代码
        if(!"".equals(canelProc)){
              StringBuilder sqlEx= new StringBuilder();
              sqlEx.append("select case when  ");
              int ex=0;
              boolean flg=false;
              if(!"".equalsIgnoreCase(excep)){//存在sql表达式
                    sqlEx.append("("+excep+")");
                    flg=true;
              }
              if(!"".equalsIgnoreCase(cancelDoc)){ //存在有状态值
                    if(!"".equalsIgnoreCase(excep)){
                          sqlEx.append(" and (").append(" docstatus in (").append(cancelDoc.replaceAll(";",",")).append("))");
                    }else{
                        sqlEx.append(" docstatus in (").append(cancelDoc.replaceAll(";",",")).append(")");
                    }
                    flg=true;
              }   
              sqlEx.append((flg?"":" 1=1 ")+" then 1 else 0 end cancelButton from ").append(tableIs);
              try{
                    ex= PanelManageBo.getCancelButton(DBHelper.getRepAll(sqlEx.toString(),session,docMap,true)+" where doccode='"+doccode.replaceAll("'","")+"'");
               }catch(DataAccessException ea){//这异常判断单据是否还存在 xin 2018-12-8 17:45:59
                            if(ea instanceof EmptyResultDataAccessException){ 
                                        throw new Exception("该单据不存在!");
                         }else{throw ea;}         
               }catch(Exception e){
                         throw e;
               }
               if(ex==1){  //如果能显示,则用js把html代码写回到top页面。%>
                  <script>
                      $("#spcan").html('<%=cancel_html%>');    
                  </script> 
 <%
               }
        }
//-------------------end
 
//------------增加撤回功能,从变量取得状态值(docstatePan),权限值(profile),到后台查询及生成相应的代码 by danaus 2016-11-21
        cancelDoc="@RevokeBtnEditStatus@";//状态值
        excep="@RevokeBtnExpression@";//sql表达式
        String revoke_html="<a id=\"tpCanel\" href=\"javascript:void(0)\" onclick=\"isrevokeProc=true;save(2);\" class=\"easyui-linkbutton\" plain=\"true\" iconCls=\"icon-cancel\">撤回</a>";//生成html代码
        if(!"".equals(revokeProc)){
              StringBuilder sqlEx= new StringBuilder();
              sqlEx.append("select case when  ");
              int ex=0;
              boolean flg=false;
              if(!"".equalsIgnoreCase(excep)){//存在sql表达式
                    sqlEx.append("("+excep+")");
                    flg=true;
              }
              if(!"".equalsIgnoreCase(cancelDoc)){ //存在有状态值 
                    if(!"".equalsIgnoreCase(excep)){
                          sqlEx.append(" and (").append(" docstatus in (").append(cancelDoc.replaceAll(";",",")).append("))");
                    }else{
                        sqlEx.append(" docstatus in (").append(cancelDoc.replaceAll(";",",")).append(")"); 
                    }
                    flg=true;
              }   
              sqlEx.append((flg?"":" 1=1 ")+" then 1 else 0 end cancelButton from ").append(tableIs);
              try{
                   ex= PanelManageBo.getCancelButton(DBHelper.getRepAll(sqlEx.toString(),session,docMap,true)+" where doccode='"+doccode.replaceAll("'","")+"'");
              }catch(DataAccessException ea){//这异常判断单据是否还存在 xin 2018-12-8 17:45:59
                         if(ea instanceof EmptyResultDataAccessException){
                                throw new Exception("该单据不存在!");
                      }else{throw ea;}         
              }catch(Exception e){
                      throw e;
              }
             if(ex==1){ //如果能显示,则用js把html代码写回到top页面。 %>
                  <script>
                     $("#sprevoke").html('<%=revoke_html%>');    
                  </script> 
 <%
             }
        }
//-------------------end
  }
  SqlRowSet SRS =null;
  String outStr=""; 
  BuildFuncIfc  build=(BuildFuncIfc)FactoryBean.getBean("Build"); 
  try{
      String openDoc="@openDoc@";
      SpObserver.setDBtoInstance("_"+request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
      sqlDBHelperIfc.execSql(DBHelper.getProcessAll(openDoc,session,docMap,true));
  }catch(Exception e){
      throw e;
  }finally{
     SpObserver.setDBtoInstance();
  }
     //-------
     String userName=session.getAttribute(SessionKey.USERNAME)+"";
     String dbid=session.getAttribute(SessionKey.DATA_BASE_ID)+"";
     com.yc.app.v2.controller.APPController appController = (com.yc.app.v2.controller.APPController) FactoryBean.getBean("APPController");
     appController.execRecentAccessFormid(new com.yc.action.grid.RecentAccessEntity(userCode,userName,formId,formType,com.yc.service.impl.DBHelper.replaceBr(com.yc.utils.EncodeUtil.base64Encode(queryString)),formName,doccode.replaceAll("'",""),dbid));
     //----------
    //下面的调用是执行OA审核按钮  xin 2021-1-30 09:54:54
   // if(sqlDBHelperIfc.getOAVerifyMethod(docMap,userCode,docstatePan)){ %>
     <script>
        $(".OAVerify").html("<a href=\"javascript:OAVerifyMethod("+formId+",<%=docstatePan%>,'<%=DBHelper.getValue(docMap, "doccode")%>');\" id=\"OAVerify\" class=\"easyui-linkbutton\" plain=\"true\" iconCls=\"icon-oasht\" title=\"OA审核\">审核</a>");
        $(".OAVerify").css("display","none");
     </script>
  <%//}%>
@linkscript@
<style type="text/css">
 .posPan {
    border: 0px solid #000000;
    position: absolute;
    height: @rowHei@px;
    width: @kongJian@px;
    font-size: 13px;
    z-index:0;
 }
 .miaoshu_pan {    
    height: auto;
    @maoshuF@
    padding-top:5px;
    width: @miaoShuo@px;    
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    padding-right:6px;
    margin-top: -3px;
 }
 .control_div{
   float: left;
 }
 .mustThree_show {
    border:1px solid #ffcf5a;
    background: #fff url(/images/ppp.gif) no-repeat right;
 }
 .Three_show {
     border:1px solid #a5a6ad;    
 } 
 .input35{
   height:14px;
 } 
 .main_talbe {
    font-family: Verdana, Arial, Vrinda, Tahoma;
    line-height: 24px;
    font-size: 12px;
    color: #666;
 }
 .text {
    border:1px solid #a5a6ad;    
 }
</style>
<span onclick="panIndex='@index@'" id="panIndex@index@">
<script type="text/javascript">
 var docstatuPan=<%=docstatePan%>;
 panIndex="@index@";//需要替换
 qrCode='<%=DBHelper.getValue(docMap,"qrCode")%>';//单据二维码
 maxCols[panIndex]="@maxCols@";//面板跨列数
 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].where=encodeText("<%=wherePan%>");//by danaus 导出excel用
 panMain[panIndex].where16_496='@where16_496';//496模板需要
 isNew='<%=isNew%>';//单据加载完后会重新赋值一次,确保他当前单据是否为新单或已有单据 xin 2021-8-10 17:08:33
 panMain[panIndex].isNew=isNew;//是否是新单
</script>
<%@ include file="/public/template/0/showPan.txt" %>
<div class="panelControlDiv">
    @panelHtml@
</div>
<div class="panelControlDiv">
    @panelDownHtml@
</div>
<script type="text/javascript">
 @pansetInv@
 panMain[panIndex].loadSet(<%=docstatePan%>);
 panMain[panIndex].keyDown('123','null');
</script>
</span>