del:去掉路由校验

This commit is contained in:
2025-11-05 09:54:34 +08:00
parent cc8f1be6ac
commit 543a38a9f6
8 changed files with 584 additions and 78 deletions

View File

@@ -0,0 +1,507 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package org.nl.wql.core.engine.object;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.nl.exception.WDKException;
import org.nl.wql.WQLCore;
import org.nl.wql.core.DataType;
import org.nl.wql.core.bean.ErrorBean;
import org.nl.wql.core.bean.ResultBean;
import org.nl.wql.core.bean.XLSTableRow;
import org.nl.wql.core.content.BaseContext;
import org.nl.wql.core.content.HttpContext;
import org.nl.wql.core.db.DBConnBean;
import org.nl.wql.core.db.DBConnection;
import org.nl.wql.core.engine.Syntax;
import org.nl.wql.util.WqlUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class WO implements Serializable, Cloneable {
private static final Logger log = LoggerFactory.getLogger(WO.class);
private static final long serialVersionUID = -4831486954013002791L;
public WP wp;
private String code = "";
private String dbname = "dataSource";
private String dbtype = "";
private String hint_type = "";
private ArrayList tempTableList = new ArrayList();
private ArrayList processlist = new ArrayList();
public WO setDbname(String dbname) {
this.dbname = dbname;
return this;
}
public ArrayList getProcesslist() {
return this.processlist;
}
public void setProcesslist(ArrayList processlist) {
this.processlist = processlist;
}
public WO addParam(String key, Object value) {
int PAGE_PAGERECORDNUM;
if (StrUtil.equalsIgnoreCase("PAGE_PAGESTART", key)) {
PAGE_PAGERECORDNUM = (Integer)value;
this.setPage_PageStart(PAGE_PAGERECORDNUM);
} else if (StrUtil.equalsIgnoreCase("PAGE_PAGERECORDNUM", key)) {
PAGE_PAGERECORDNUM = (Integer)value;
this.setPage_PageRecordNum(PAGE_PAGERECORDNUM);
} else {
String SORT_ORDERBYFIELD;
if (StrUtil.equalsIgnoreCase("SORT_ORDERBYFIELD", key)) {
SORT_ORDERBYFIELD = (String)value;
this.setPage_OrderByField(SORT_ORDERBYFIELD);
} else if (StrUtil.equalsIgnoreCase("ORDERBY", key)) {
SORT_ORDERBYFIELD = (String)value;
this.setPage_OrderByField(SORT_ORDERBYFIELD);
}
}
this.setParam(key, value);
return this;
}
public WO addParamMap(HashMap map) {
Set keySet = map.keySet();
Iterator it = keySet.iterator();
while(it.hasNext()) {
String key = (String)it.next();
Object value = map.get(key);
this.addParam(key, value);
}
return this;
}
public WO addParamMap(JSONObject map) {
Set keySet = map.keySet();
Iterator it = keySet.iterator();
while(it.hasNext()) {
String key = (String)it.next();
Object value = map.get(key);
this.addParam(key, value);
}
return this;
}
public ResultBean process() {
ResultBean rb = this.MainProcess();
if (rb.isSuccess()) {
return rb;
} else {
StringBuffer sbuff = new StringBuffer();
ArrayList errlist = rb.getInfoError();
for(int i = 0; i < errlist.size(); ++i) {
ErrorBean errBean = (ErrorBean)errlist.get(i);
sbuff.append(errBean.toString());
sbuff.append("\n");
}
throw new WDKException(sbuff.toString());
}
}
public JSONObject pageQuery(HttpServletRequest request, String orderby) {
HttpContext hctx = new HttpContext(WqlUtil.getUUID());
hctx.setRequest(request);
return this.pageQuery((BaseContext)hctx, orderby);
}
public JSONObject pageQuery(BaseContext ctx, String orderby) {
int nPageRecordNum = -1;
int nPageStart = -1;
String strRows = ctx.getRows();
String strPage = ctx.getPage();
if (null != strRows && !"".equals(strRows.trim())) {
nPageRecordNum = Integer.parseInt(strRows);
}
if (null != strPage && !"".equals(strPage.trim())) {
nPageStart = Integer.parseInt(strPage) - 1;
}
String orderbyfield = ctx.getOrderbyfield();
if (null != orderbyfield && !"".equals(orderbyfield.trim())) {
orderby = orderbyfield;
}
return this.pageQuery2(nPageStart * nPageRecordNum, nPageRecordNum, orderby);
}
private JSONObject pageQuery2(int startrecord, int pagerecord, String orderby) {
this.setPage_PageStart(startrecord);
this.setPage_PageRecordNum(pagerecord);
this.setPage_OrderByField(orderby);
ResultBean rb = this.process();
return rb.pageResult();
}
public JSONObject pageQuery(int pageStart, int pageEnd, String orderby) {
this.setPage_PageStart(pageStart);
this.setPage_PageRecordNum(pageEnd - pageStart);
this.setPage_OrderByField(orderby);
ResultBean rb = this.process();
return rb.pageResult();
}
public void init() {
this.wp.init();
}
public WO(String code, ArrayList<String> wqlcontent) throws Exception {
this.code = code;
this.dbname = this.getDbname();
this.wp = new WP();
try {
DBConnBean dbb = (DBConnBean)WQLCore.dbMap.get(this.dbname);
if (dbb == null) {
throw new Exception("无效的数据库名:" + this.dbname);
} else {
this.dbtype = dbb.getDbtype();
String cmd = "";
Iterator it = wqlcontent.iterator();
while(true) {
while(true) {
String wql;
do {
do {
do {
do {
if (!it.hasNext()) {
return;
}
wql = (String)it.next();
wql = WqlUtil.ltrim(wql);
wql = WqlUtil.rtrim(wql);
} while("".equals(wql));
} while(wql.startsWith("--"));
} while(wql.startsWith("#"));
} while(wql.startsWith("//"));
if (wql.startsWith("[")) {
cmd = wql.substring(wql.indexOf("[") + 1, wql.indexOf("]"));
} else if ("数据库".equals(cmd)) {
this.dbname = wql;
dbb = (DBConnBean)WQLCore.dbMap.get(this.dbname);
if (dbb == null) {
throw new Exception("无效的数据库名:" + this.dbname);
}
this.dbtype = dbb.getDbtype();
} else if (!"IO定义".equals(cmd) && !"临时变量".equals(cmd)) {
if ("临时表".equals(cmd)) {
this.tempTableList.add(wql);
} else if ("业务过程".equals(cmd)) {
this.processlist.add(WqlUtil.ctrim(wql));
}
} else {
wql = WqlUtil.ctrim(wql);
this.wp.initIOParam(wql);
}
}
}
}
} catch (Exception var7) {
var7.printStackTrace();
log.error("WQL加载失败" + var7.toString());
throw new Exception("请检查WQL文件【" + code + ".wql】的语法规范!", var7);
}
}
public ResultBean MainProcess() {
Connection conn = DBConnection.getConnection(this.dbname);
log.debug(this.code + "执行开始");
log.debug(this.wp.toString());
this.wp.conn = conn;
synchronized(this.wp.conn) {
try {
this.wp._success = this.CreateTempTable();
if (this.wp._success) {
this.wp._success = this.Process();
}
} catch (Exception var9) {
var9.printStackTrace();
this.wp.InfoError = new ErrorBean();
this.wp.InfoError.setCode("QUERROR");
this.wp.InfoError.setDescription(var9.toString());
this.wp.ALInfoError.add(this.wp.InfoError);
this.wp._success = false;
} finally {
if (this.wp._success) {
log.debug(this.code + "执行成功");
this.wp.rb.setSucess(1);
} else {
log.warn(this.code + "执行失败");
this.wp.rb.setSucess(0);
}
DBConnection.freeConnection(this.wp.conn, this.dbname);
this.wp.rb.setInfoDump(this.wp.ALInfoDump);
this.wp.rb.setInfoError(this.wp.ALInfoError);
this.wp.rb.setInfoTrace(this.wp.ALInfoTrace);
return this.wp.rb;
}
}
}
private boolean CreateTempTable() {
this.wp._state = true;
this.wp.sSQL = "";
log.debug("------------开始执行\t创建临时表 ------------");
Iterator it = this.tempTableList.iterator();
while(it.hasNext()) {
String tempTableName = (String)it.next();
ArrayList rows = (ArrayList)WQLCore.tempTableMap.get(tempTableName.toUpperCase());
if (rows == null) {
log.error("临时表[" + tempTableName.toUpperCase() + "]未找到数据字典定义");
}
StringBuilder var10000;
WP var10002;
String pkstr;
int i;
XLSTableRow xtr;
if (DataType.MYSQL.equals(this.dbtype)) {
pkstr = new String();
this.wp.sSQL = "CREATE TEMPORARY TABLE IF NOT EXISTS " + tempTableName + " (";
for(i = 0; i < rows.size(); ++i) {
xtr = (XLSTableRow)rows.get(i);
if ("pk".equalsIgnoreCase(xtr.getParam())) {
pkstr = pkstr + xtr.getEnname() + ",";
}
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(xtr.getEnname()).append(" ").toString();
if (-1 != xtr.getType().indexOf("U_")) {
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(DataType.getFieldValue(this.dbtype, xtr.getType())).toString();
} else {
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(DataType.getFieldValue(this.dbtype, xtr.getType())).toString();
}
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(",").toString();
}
this.wp.sSQL = this.wp.sSQL.substring(0, this.wp.sSQL.length() - 1);
if (pkstr.length() > 0) {
pkstr = pkstr.substring(0, pkstr.length() - 1);
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(",PRIMARY KEY (").append(pkstr).append(")").toString();
}
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(" )").toString();
} else if (DataType.ORACLE.equals(this.dbtype)) {
pkstr = new String();
this.wp.sSQL = "CREATE GLOBAL TEMPORARY TABLE " + tempTableName + " (";
for(i = 0; i < rows.size(); ++i) {
xtr = (XLSTableRow)rows.get(i);
if ("pk".equalsIgnoreCase(xtr.getParam())) {
pkstr = pkstr + xtr.getEnname() + ",";
}
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(xtr.getEnname()).append(" ").toString();
if (-1 != xtr.getType().indexOf("U_")) {
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(DataType.getFieldValue(this.dbtype, xtr.getType())).toString();
} else {
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(DataType.getFieldValue(this.dbtype, xtr.getType())).toString();
}
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(",").toString();
}
this.wp.sSQL = this.wp.sSQL.substring(0, this.wp.sSQL.length() - 1);
if (pkstr.length() > 0) {
pkstr = pkstr.substring(0, pkstr.length() - 1);
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(",PRIMARY KEY (").append(pkstr).append(")").toString();
}
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(" ) ON COMMIT PRESERVE ROWS").toString();
} else if (!DataType.DB2.equals(this.dbtype)) {
if (DataType.MSSQL.equals(this.dbtype)) {
}
} else {
pkstr = new String();
this.wp.sSQL = "DECLARE GLOBAL TEMPORARY TABLE " + tempTableName + " (";
for(i = 0; i < rows.size(); ++i) {
xtr = (XLSTableRow)rows.get(i);
if ("pk".equalsIgnoreCase(xtr.getParam())) {
pkstr = pkstr + xtr.getEnname() + ",";
}
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(xtr.getEnname()).append(" ").toString();
if (-1 != xtr.getType().indexOf("U_")) {
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(DataType.getFieldValue(this.dbtype, xtr.getType())).toString();
} else {
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(DataType.getFieldValue(this.dbtype, xtr.getType())).toString();
}
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(",").toString();
}
this.wp.sSQL = this.wp.sSQL.substring(0, this.wp.sSQL.length() - 1);
if (pkstr.length() > 0) {
pkstr = pkstr.substring(0, pkstr.length() - 1);
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(",PRIMARY KEY (").append(pkstr).append(")").toString();
}
var10000 = new StringBuilder();
var10002 = this.wp;
var10002.sSQL = var10000.append(var10002.sSQL).append(" ) on commit preserve rows WITH REPLACE").toString();
}
log.debug("数据库创建临时表:\n" + this.wp.sSQL);
try {
if (null != this.wp.sSQL && !"".equals(this.wp.sSQL)) {
if (DataType.MSSQL.equals(this.dbtype)) {
Statement st = this.wp.conn.createStatement();
st.execute(this.wp.sSQL);
} else {
this.wp.st = this.wp.conn.prepareStatement(this.wp.sSQL);
this.wp.st.execute();
}
}
} catch (Exception var15) {
this.wp._state = false;
} finally {
try {
if (DBConnection.currpooltype != 1) {
if (this.wp.st != null) {
this.wp.st.close();
}
this.wp.st = null;
}
} catch (SQLException var14) {
log.error("关闭st,rs出错" + var14.toString());
}
}
}
log.debug("------------结束执行\t创建临时表 ------------");
return true;
}
private boolean Process() {
this.wp._state = true;
log.debug("------------开始执行\t业务主过程 ------------");
this.wp._state = (new Syntax()).exec(this, this.processlist);
log.debug("------------结束执行\t业务主过程 ------------");
return this.wp._state;
}
public String getDbtype() {
return this.dbtype;
}
public String getDbname() {
return this.dbname;
}
public String getCode() {
return this.code;
}
public int getRowCount() {
return this.wp.IRowsCount;
}
public ResultBean getResultBean() {
return this.wp.rb;
}
public WO setParam(String name, Object value) {
this.wp.setParam(name, value);
return this;
}
public WO setPage_PageStart(int nPageStart) {
this.wp.PAGE_PAGESTART = nPageStart;
return this;
}
public WO setPage_PageRecordNum(int nPageRecordNum) {
this.wp.PAGE_PAGERECORDNUM = nPageRecordNum;
return this;
}
public WO setPage_OrderByField(String sOrderByField) {
this.wp.SORT_ORDERBYFIELD = sOrderByField;
return this;
}
public void setHintMaster() {
this.hint_type = "/!TDDL:MASTER*/";
}
public void setHintSlave() {
this.hint_type = "/!TDDL:SLAVE*/";
}
public String getHint() {
return this.hint_type;
}
public boolean isHint() {
return null != this.hint_type && !"".equals(this.hint_type);
}
}