2021-12-09 17:51:44 +08:00

222 lines
10 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ page language="java" contentType="text/html;charset=GBK" %><%@
page import="java.util.*"%><%@
page import="java.net.URLDecoder"%><%@
page import="com.amarsoft.are.*"%><%@
page import="com.amarsoft.are.jbo.*"%><%@
page import="com.amarsoft.are.lang.DataElement"%><%@
page import="com.amarsoft.are.lang.StringX"%><%@
page import="com.amarsoft.awe.control.model.*"%><%@
page import="com.amarsoft.awe.dw.*"%><%@
page import="com.amarsoft.awe.dw.ui.actions.IDataAction"%><%@
page import="com.amarsoft.awe.dw.ui.info.DefaultAction"%><%@
page import="com.amarsoft.awe.dw.ui.util.Request"%><%@
page import="com.amarsoft.awe.dw.ui.htmlfactory.*"%><%@
page import="com.amarsoft.awe.dw.ui.htmlfactory.imp.*"%>
<%@page import="com.amarsoft.awe.util.ObjectConverts"%>
<%@page import="com.tenwa.list.filtersql.*"%>
<%
/*
本页面为Ajax调用页面无刷新运行
功能:实现列表保存,删除操作,目前不支持保存操作
*/
String sJbo = "";
boolean isSerializJbo = "1".equals(Request.GBKSingleRequest("isSerializJbo",request));//是否序列化jbo
String sRefreshRowIndex = Request.GBKSingleRequest("RefreshRowIndex",request);
int iRefreshRowIndex = -1;
if(sRefreshRowIndex.trim().length()>0&&sRefreshRowIndex.matches("[0-9]+"))
iRefreshRowIndex = Integer.parseInt(sRefreshRowIndex);
//ARE.getLog().trace("isSerializJbo = " + isSerializJbo);
String sCurPage = Request.GBKSingleRequest("curpage",request);
String sRowCount = Request.GBKSingleRequest("rowcount",request);
String sTableIndex = Request.GBKSingleRequest("index",request);
String sSortIndex = Request.GBKSingleRequest("SYS_SortIndex",request);//排序字段序号
String sSortDirect = Request.GBKSingleRequest("SYS_SortDirect",request);//排序方向
int iCurPage = 0;
if(sCurPage.matches("[0-9]+"))
iCurPage = Integer.parseInt(sCurPage);
int iRowCount = -1;
if(sRowCount.trim().length()>0){
iRowCount = Integer.parseInt(sRowCount);
}
//ARE.getLog().trace("iRowCount = " + iRowCount);
String sASD = Request.GBKSingleRequest("SERIALIZED_ASD",request);
ASDataObject asObj = Component.getDataObject(sASD);
//获得查询参数
String sArgsValue = asObj.getParamstr();
List<DataElement> initParameters = asObj.getInitParameters(); //初始参数
List<DataElement> parameters = new ArrayList<DataElement>();
parameters.addAll(initParameters);
//ARE.getLog().trace("initParameters size = " + initParameters.size());
if(!StringX.isSpace(sArgsValue)){
sArgsValue = ASDataWindow.getTrueParams(asObj.getJboWhere(),sArgsValue);
}
//ARE.getLog().trace("sArgsValue = " + sArgsValue);
String sOrigJboWhere = asObj.getJboWhere();
String[]customerFilter=null;
BaseASFilterCustomWhereClauses customFilter=(BaseASFilterCustomWhereClauses)asObj.getFilterCustomWhereClauses();
if(customFilter!=null){
asObj.appendJboWhere(customFilter.getWhereClauses(asObj, request));
}
int filter_count = 0;
if(asObj.Filters!=null){
for(int k=0;k<asObj.Filters.size();k++){
ASDataObjectFilter asFilter = (ASDataObjectFilter)asObj.Filters.get(k);
if(asFilter.sFilterInputs!=null){
String sColName = asFilter.acColumn.getAttribute("ColName").toUpperCase();
String sColFilterRefId = asObj.getColumn(sColName).getAttribute("COLFILTERREFID");
if(sColFilterRefId!=null && sColFilterRefId.length()>0)sColName = sColFilterRefId.toUpperCase();//sColName = sColFilterRefId;
//ARE.getLog().trace("sColName = " + sColName);
String option = "";//Request.GBKSingleRequest("DOFILTER_DF_"+ sColName +"_1_OP",request);
String value = "";//Request.GBKSingleRequest("DOFILTER_DF_"+ sColName +"_1_VALUE",request);
String value2 = "";
if(request.getParameter("DOFILTER_DF_"+ sColName +"_1_OP")!=null){
option = URLDecoder.decode(request.getParameter("DOFILTER_DF_"+ sColName +"_1_OP").toString(),"UTF-8");
//ARE.getLog().trace("option=" + option);
}
if(request.getParameter("DOFILTER_DF_"+ sColName +"_1_VALUE")!=null){
value = URLDecoder.decode(request.getParameter("DOFILTER_DF_"+ sColName +"_1_VALUE").toString(),"UTF-8");
//ARE.getLog().trace("value1 = " + value);
}
if(request.getParameter("DOFILTER_DF_"+ sColName +"_2_VALUE")!=null){
value2 = URLDecoder.decode(request.getParameter("DOFILTER_DF_"+ sColName +"_2_VALUE").toString(),"UTF-8");
//ARE.getLog().trace("value2 = " + value2);
}
if(null!=customFilter){
if(customFilter.checkFilter(sColName)){
value="";
value2="";
}
}
if(option.equalsIgnoreCase("In"))
asFilter.sFilterInputs[0][1] = "_@$^_" + value;//从request中取值
else if(option.equalsIgnoreCase("Area")){
//ARE.getLog().trace("asFilter.sFilterInputs[0].length="+asFilter.sFilterInputs[0].length+",value2=" + value2);
asFilter.sFilterInputs[0][1] = value;//从request中取值
asFilter.sFilterInputs[1][1] = value2;//从request中取值
}else
asFilter.sFilterInputs[0][1] = value;//从request中取值
for(int t=0;t<asFilter.sFilterInputs.length;t++){
if(asFilter.sFilterInputs[t][1]==null || asFilter.sFilterInputs[t][1].equals(""))continue;
//ARE.getLog().trace(asFilter.sFilterInputs[t][0] + "==" + new String(asFilter.sFilterInputs[t][1].getBytes("UTF-8"),"GBK"));
if(option.equalsIgnoreCase("Like") || option.equalsIgnoreCase("NotLike")){
parameters.add(DataElement.valueOf(asFilter.sFilterInputs[t][0], "%" + asFilter.sFilterInputs[t][1] + "%"));
}else if(option.equalsIgnoreCase("BeginsWith") || option.equalsIgnoreCase("NotBeginsWith")){
parameters.add(DataElement.valueOf(asFilter.sFilterInputs[t][0], asFilter.sFilterInputs[t][1] + "%"));
}else{
parameters.add(DataElement.valueOf(asFilter.sFilterInputs[t][0], asFilter.sFilterInputs[t][1]));
/* if(!value2.equals("")){
parameters.add(DataElement.valueOf("DOFILTER_DF_"+ sColName +"_2_VALUE", value2));
} */
}
filter_count++;
}
if(option.equalsIgnoreCase("Like")) option="BeginsWith";
asFilter.sOperator = option;//设置查询操作符
}
}
//设置包括查询参数在内的参数
System.out.println(parameters.toString());
asObj.setParameters(parameters);
}
//设置排序
if(!sSortIndex.equals("")){
//ARE.getLog().trace(" " +sSortIndex+ " " + sSortDirect + " ");
//asObj.setJboOrder(" " + (Integer.parseInt(sSortIndex)+1) + " " + sSortDirect + " " );
asObj.setJboOrder(" " + sSortIndex + " " + sSortDirect + " " );
asObj.composeJboSql();
}
if(asObj.Filters!=null && sSortIndex.equals(""))asObj.composeJboSql();
//if(null!=customFilter){asObj.setJboSql(customFilter.replaceOldWhere(asObj.getJboSql()));}
//执行实际查询
//ARE.getLog().trace("sArgsValue=" + sArgsValue);
String dataQueryClass = asObj.getDataQueryClass();
ListHtmlGenerator list = null;
if(StringX.isEmpty(dataQueryClass)){
list = new DefaultListHtmlGenerator(asObj,sTableIndex,sArgsValue,asObj.getPageSize(),iCurPage,request);
}else{
Object queryObj = Class.forName(asObj.getDataQueryClass()).newInstance();
if(queryObj instanceof DefaultListHtmlGenerator){
DefaultListHtmlGenerator list3 = (DefaultListHtmlGenerator)queryObj;
list3.initConstructParams(asObj,sTableIndex,sArgsValue,asObj.getPageSize(),iCurPage,request);
list3.beforeRun(JBOFactory.createJBOTransaction());
list = list3;
}else{
ListHtmlWithASDataObjectGenerator list2 = (ListHtmlWithASDataObjectGenerator)queryObj;
list2.initBasicParams(asObj, sArgsValue, asObj.getPageSize(), iCurPage, request);
list = list2;
}
}
list.setEditable(asObj.isEditable());
//增加统计信息
int iColCount = asObj.Columns.size();
boolean[] bServerCounts = new boolean[iColCount];
String[] aServerCountActualNames = new String[iColCount];
String[] aServerCountTableNames = new String[iColCount];
for (int iCol = 0; iCol < iColCount; iCol++) {
String sColColumnType = asObj.getColumnAttribute(iCol, "ColColumnType");
if(sColColumnType.equals("3")){//添加到总计数组
bServerCounts[iCol] = true;
}else{
bServerCounts[iCol] = false;
}
aServerCountActualNames[iCol] = asObj.getColumnAttribute(iCol, "ColActualName");
aServerCountTableNames[iCol] = asObj.getColumnAttribute(iCol, "ColTableName");
}
list.setRowCount(iRowCount);
if (filter_count == 0 && asObj.getCurPage().getAttribute("flowRowCount") != null) {
list.setRowCount(Integer.parseInt(asObj.getCurPage().getAttribute("flowRowCount")));
}
list.setServerCounts(bServerCounts,aServerCountActualNames,aServerCountTableNames);
//统计信息设置结束
list.setWebRootPath(request.getContextPath());
list.setRefreshRowIndex(iRefreshRowIndex);//刷新的行编号,-1表示刷新所有行
list.run(null);
String sListData = list.getHtmlResult();
StringBuffer sbSerializedJBO = new StringBuffer();
if(isSerializJbo){
String[] aSerializedJBOs=((HtmlJboSupportor)list).getSerializedJBOs();
if(aSerializedJBOs==null || aSerializedJBOs.length==0)
sJbo = "";
else{
for(int i=0;i<aSerializedJBOs.length;i++){
sbSerializedJBO.append("," + aSerializedJBOs[i]);
}
sJbo = sbSerializedJBO.toString().substring(1);
}
}
StringBuffer sbResult = new StringBuffer();
sbResult.append("{");
sbResult.append("status:true,");
sbResult.append("SERIALIZED_JBO:'"+ sJbo +"',");
sbResult.append("SERIALIZED_ASD:'"+sASD+"',");
sbResult.append("ArgValues:'"+sArgsValue+"',");
//重新序列化dataobject
asObj.setJboWhere(sOrigJboWhere);
//ARE.getLog().trace("sOrigJboWhere="+sOrigJboWhere);
ObjectConverts.saveObject(new java.io.File(Component.getDWTmpPath(asObj.getSerializableName())), asObj);
String sNewASD = asObj.getSerializableName();//ObjectConverts.getString(asObj);
sbResult.append("New_SERIALIZED_ASD:'"+sNewASD+"',");
//sListData = sListData.replaceAll("\r\n","\\\\n").replaceAll("\n","\\\\n").replaceAll("\"","\\\\\"").replaceAll("\\\\'","\\\\\\\\'");
//sListData = sListData.replace("\\n","\\\\n");
sListData = sListData/*.replaceAll("\\\\","\\\\\\\\")*/.replaceAll("\r\n","").replaceAll("\n","").replaceAll("\"","\\\\\"").replaceAll("\\\\'","\\\\\\\\'");
sListData = sListData.replace("\\n","");
//ARE.getLog().trace("ListData = " + sListData);
if(sSortIndex.equals("")){
sbResult.append("data:\""+ sListData +"\"");
}else{
sbResult.append("data:\""+ sListData +"\",");
sbResult.append("sortIndex:'"+ sSortIndex +"',");
sbResult.append("sortDirect:\""+ sSortDirect +"\"");
}
sbResult.append("}");
out.println(sbResult.toString());
//ARE.getLog().trace("result = " + sbResult.toString());
%>