HistoryDevByCx/二开源码/京福/jg/.svn/pristine/5b/5bf7f553497c0e1c745b154c688...

274 lines
10 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.filter.XssUtil;
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.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>();
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;
}
}