288 lines
11 KiB
Plaintext
288 lines
11 KiB
Plaintext
package com.api.browser.web;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.api.browser.bean.BrowserBean;
|
|
import com.api.browser.service.Browser;
|
|
import com.api.browser.util.BrowserConfigComInfo;
|
|
import com.api.browser.util.BrowserConstant;
|
|
import com.api.browser.util.BrowserInitUtil;
|
|
import com.api.browser.util.DeviceTypeAttr;
|
|
import com.engine.systeminfo.util.BrowserConfigManager;
|
|
import com.engine.workflow.biz.wfPathAdvanceSet.BrowserDataDefinitionBiz;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import weaver.conn.RecordSet;
|
|
import weaver.filter.XssUtil;
|
|
import weaver.general.BaseBean;
|
|
import weaver.general.Util;
|
|
import weaver.hrm.HrmUserVarify;
|
|
import weaver.hrm.User;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.ws.rs.*;
|
|
import javax.ws.rs.core.Context;
|
|
import java.util.Enumeration;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import java.util.Objects;
|
|
import java.util.stream.Collectors;
|
|
|
|
/**
|
|
* 浏览框接口
|
|
* @author jhy Mar 29, 2017
|
|
*
|
|
*/
|
|
@Path("/public/browser")
|
|
public class BrowserAction {
|
|
|
|
/**
|
|
* 设置浏览框的默认配置
|
|
* @param browser
|
|
* @param params
|
|
*/
|
|
public void setBrowserStatus(Browser browser,Map<String, Object> params)
|
|
{
|
|
String deviceType=Util.null2String(params.get("_ec_device"));
|
|
String isMobile=Util.null2String(params.get("_ec_ismobile"));
|
|
browser.setDeviceType(DeviceTypeAttr.PC);
|
|
//pc mobile_ec mobile_dingding
|
|
if (StringUtils.isNotBlank(deviceType))
|
|
{
|
|
DeviceTypeAttr dt=DeviceTypeAttr.valueOf(deviceType.toUpperCase());
|
|
browser.setDeviceType(dt);
|
|
}
|
|
|
|
browser.setMobile("true".equals(isMobile));
|
|
}
|
|
|
|
@POST
|
|
@Path("/data/{type}")
|
|
@Produces("text/plain;charset=utf-8")
|
|
public String getBrowserData2(@PathParam("type") String type, @Context HttpServletRequest request, @Context HttpServletResponse response) {
|
|
return getBrowserData(type,request,response);
|
|
}
|
|
|
|
@GET
|
|
@Path("/data/{type}")
|
|
@Produces("text/plain;charset=utf-8")
|
|
public String getBrowserData(@PathParam("type") String type, @Context HttpServletRequest request, @Context HttpServletResponse response) {
|
|
BrowserConfigComInfo browserConfigComInfo = new BrowserConfigComInfo();
|
|
Map<String, Object> params = getRequestParams(request,response);
|
|
String browserClassName = browserConfigComInfo.getClazz(type);
|
|
Map<String, Object> apidatas = new HashMap<String, Object>();
|
|
Object xswq_jf_zm = params.get("xswq_jf_zm");
|
|
if (xswq_jf_zm != null && StringUtils.equals("xswq", Objects.toString(xswq_jf_zm))) {
|
|
RecordSet rsTemp = new RecordSet();
|
|
rsTemp.execute("select count(*) as cnt from hrmresource ");
|
|
String count = "0";
|
|
if (rsTemp.next()) {
|
|
count = rsTemp.getString("cnt");
|
|
}
|
|
params.put("max", Integer.parseInt(count));
|
|
}
|
|
new BaseBean().writeLog("getBrowserData params:" + JSONObject.toJSONString(params));
|
|
try {
|
|
Browser browser = (Browser) Class.forName(browserClassName).newInstance();
|
|
browser.setBrowserType(type);
|
|
setBrowserStatus(browser,params);
|
|
|
|
//获取测试预览设置的用户
|
|
if (params.get("operatoruser_" + params.get("currenttime")) != null) {
|
|
browser.setUser(this.getPreviewUser(request));
|
|
} else {
|
|
browser.setUser(this.getUserByRequest(request, response));
|
|
}
|
|
|
|
String sqlWhere = Util.null2String(browser.spellSqlWhere(params));
|
|
String _tempSqlWhere = Util.null2String(params.get(BrowserConstant.SPELL_SQL_WHERE));
|
|
if(!"".equals(sqlWhere) || !_tempSqlWhere.equals(sqlWhere)){
|
|
params.put(BrowserConstant.SPELL_SQL_WHERE, _tempSqlWhere + " " + sqlWhere);
|
|
}
|
|
|
|
//建模快捷搜索 处理 con_传参 的问题 用于浏览数据定义
|
|
String isFromMode = Util.null2o(Util.null2String(params.get("isFromMode")));
|
|
if("1".equals(isFromMode)){
|
|
Map<String, Object> params2=params.entrySet().stream()
|
|
.collect(Collectors.toMap(
|
|
entry->entry.getKey().replaceAll("con_","field"),
|
|
Map.Entry::getValue));
|
|
|
|
params.putAll(params2);
|
|
}
|
|
|
|
|
|
apidatas.putAll(browser.getBrowserData(params));
|
|
/*String countData=BrowserConfigManager.getValue("pageSize","browser");
|
|
if(StringUtils.isNotBlank(countData))
|
|
apidatas.put("pageSize",countData);*/
|
|
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
apidatas.put("status", false);
|
|
apidatas.put("error", e.getMessage());
|
|
apidatas.put("api_status", false);
|
|
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
|
|
}
|
|
|
|
return JSONObject.toJSONString(apidatas);
|
|
}
|
|
|
|
@GET
|
|
@Path("/destData/{type}")
|
|
public String getDestData(@PathParam("type") String type, @Context HttpServletRequest request, @Context HttpServletResponse response) {
|
|
Map<String, Object> params = getRequestParams(request,response);
|
|
String browserClassName = new BrowserConfigComInfo().getClazz(type);
|
|
Map<String, Object> apidatas = new HashMap<String, Object>();
|
|
try {
|
|
Browser browser = (Browser) Class.forName(browserClassName).newInstance();
|
|
setBrowserStatus(browser,params);
|
|
browser.setBrowserType(type);
|
|
browser.setUser(this.getUserByRequest(request, response));
|
|
apidatas = browser.getMultBrowserDestData(params);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
apidatas.put("api_status", false);
|
|
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
|
|
}
|
|
return JSONObject.toJSONString(apidatas);
|
|
}
|
|
|
|
@POST
|
|
@Path("/destData/{type}")
|
|
public String getDestData2(@PathParam("type") String type, @Context HttpServletRequest request, @Context HttpServletResponse response) {
|
|
Map<String, Object> params = getRequestParams(request,response);
|
|
String browserClassName = new BrowserConfigComInfo().getClazz(type);
|
|
Map<String, Object> apidatas = new HashMap<String, Object>();
|
|
try {
|
|
Browser browser = (Browser) Class.forName(browserClassName).newInstance();
|
|
setBrowserStatus(browser,params);
|
|
browser.setBrowserType(type);
|
|
browser.setUser(this.getUserByRequest(request, response));
|
|
apidatas = browser.getMultBrowserDestData(params);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
apidatas.put("api_status", false);
|
|
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
|
|
}
|
|
return JSONObject.toJSONString(apidatas);
|
|
}
|
|
|
|
|
|
@POST
|
|
@Path("/complete/{type}")
|
|
public String browserAutoComplete2(@PathParam("type") String type, @Context HttpServletRequest request, @Context HttpServletResponse response){
|
|
return browserAutoComplete(type,request,response);
|
|
}
|
|
|
|
@GET
|
|
@Path("/complete/{type}")
|
|
public String browserAutoComplete(@PathParam("type") String type, @Context HttpServletRequest request, @Context HttpServletResponse response){
|
|
String browserClassName = new BrowserConfigComInfo().getClazz(type);
|
|
Map<String, Object> apidatas = new HashMap<String, Object>();
|
|
Map<String, Object> params = getRequestParams(request,response);
|
|
try {
|
|
User user = null;
|
|
//获取测试预览设置的用户
|
|
if (params.get("operatoruser_" + params.get("currenttime")) != null) {
|
|
user = this.getPreviewUser(request);
|
|
} else {
|
|
user = this.getUserByRequest(request, response);
|
|
}
|
|
Browser browser = (Browser) Class.forName(browserClassName).newInstance();
|
|
browser.setBrowserType(type);
|
|
setBrowserStatus(browser,params);
|
|
browser.setUser(user);
|
|
String sqlWhere = Util.null2String(browser.spellSqlWhere(getRequestParams(request,response)));
|
|
//XssUtil xssUtil=new XssUtil();
|
|
|
|
//对 sqlwhere 做解密处理
|
|
//String sqlwhereParam=Util.null2String(params.get("sqlwhere"));
|
|
//sqlwhereParam=xssUtil.get(sqlwhereParam);
|
|
//params.put("sqlwhere",sqlwhereParam);
|
|
|
|
String _tempSqlWhere = Util.null2String(request.getParameter(BrowserConstant.SPELL_SQL_WHERE));
|
|
|
|
if(!"".equals(sqlWhere) || !_tempSqlWhere.equals(sqlWhere)){
|
|
request.setAttribute(BrowserConstant.SPELL_SQL_WHERE, _tempSqlWhere + " " + sqlWhere);
|
|
}
|
|
BrowserDataDefinitionBiz.getDataDefinitionParams(params,type,user);
|
|
browser.setAutoCompleteDataDefinitionParams(params);
|
|
apidatas = browser.browserAutoComplete(request,response);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
apidatas.put("api_status", false);
|
|
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
|
|
}
|
|
return Util.fromScreen4(JSONObject.toJSONString(apidatas),7);
|
|
}
|
|
|
|
@GET
|
|
@Path("/condition/{type}")
|
|
public String getBrowserConditionInfo(@PathParam("type") String type, @Context HttpServletRequest request, @Context HttpServletResponse response){
|
|
Map<String, Object> params = getRequestParams(request,response);
|
|
String browserClassName = new BrowserConfigComInfo().getClazz(type);
|
|
Map<String, Object> apidatas = new HashMap<String, Object>();
|
|
try {
|
|
User user = null;
|
|
//获取测试预览设置的用户
|
|
if (params.get("operatoruser_" + params.get("currenttime")) != null) {
|
|
user = this.getPreviewUser(request);
|
|
} else {
|
|
user = this.getUserByRequest(request, response);
|
|
}
|
|
Browser browser = (Browser) Class.forName(browserClassName).newInstance();
|
|
browser.setBrowserType(type);
|
|
browser.setUser(user);
|
|
setBrowserStatus(browser,params);
|
|
|
|
apidatas = browser.getBrowserConditionInfo(params);
|
|
BrowserDataDefinitionBiz.markBrowserConditionDefinition(apidatas,params,type,user);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
apidatas.put("api_status", false);
|
|
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
|
|
}
|
|
|
|
return JSONObject.toJSONString(apidatas);
|
|
}
|
|
|
|
|
|
private Map<String,Object> getRequestParams(HttpServletRequest request,HttpServletResponse response){
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
Enumeration<String> em = request.getParameterNames();
|
|
while(em.hasMoreElements()){
|
|
String paramname = em.nextElement();
|
|
params.put(paramname, request.getParameter(paramname));
|
|
}
|
|
return params;
|
|
}
|
|
@GET
|
|
@Path("/prop/{type}")
|
|
public String getBrowserProps(@PathParam("type") String type, @Context HttpServletRequest request, @Context HttpServletResponse response){
|
|
User user = HrmUserVarify.getUser(request, response);// 需要增加的代码
|
|
BrowserInitUtil browserInitUtil = new BrowserInitUtil();
|
|
BrowserBean browserProp = new BrowserBean(type);
|
|
browserInitUtil.initBrowser(browserProp,user.getLanguage());
|
|
return JSONObject.toJSONString(browserProp);
|
|
}
|
|
|
|
private User getUserByRequest(HttpServletRequest request, HttpServletResponse response){
|
|
String f_weaver_belongto_userid = Util.null2String(request.getParameter("f_weaver_belongto_userid"));
|
|
String f_weaver_belongto_usertype = Util.null2String(request.getParameter("f_weaver_belongto_usertype"));
|
|
User user = HrmUserVarify.getUser(request, response, f_weaver_belongto_userid, f_weaver_belongto_usertype);
|
|
return user;
|
|
}
|
|
|
|
/**
|
|
* 获取测试预览操作用户
|
|
* @param request
|
|
* @return
|
|
*/
|
|
private User getPreviewUser(HttpServletRequest request){
|
|
String f_weaver_belongto_userid = Util.null2String(request.getParameter("f_weaver_belongto_userid"));
|
|
String f_weaver_belongto_usertype = Util.null2String(request.getParameter("f_weaver_belongto_usertype"));
|
|
User user = User.getUser(Integer.parseInt(f_weaver_belongto_userid),Integer.parseInt(f_weaver_belongto_usertype));
|
|
return user;
|
|
}
|
|
}
|