package com.kingdee.eas.custom.utils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.kingdee.bos.BOSException; import com.kingdee.bos.Context; import com.kingdee.bos.bsf.service.app.IHRMsfService; import com.kingdee.bos.dao.query.IQueryExecutor; import com.kingdee.bos.dao.query.QueryExecutorFactory; import com.kingdee.bos.framework.cache.service.CacheService; import com.kingdee.bos.metadata.MetaDataPK; import com.kingdee.bos.metadata.entity.*; import com.kingdee.bos.sql.ParserException; import com.kingdee.eas.common.EASBizException; import com.kingdee.eas.framework.CoreBaseCollection; import com.kingdee.eas.framework.CoreBaseInfo; import com.kingdee.eas.framework.ICoreBase; import com.kingdee.shr.base.syssetting.DomainFilterFacadeFactory; import com.kingdee.shr.base.syssetting.IDomainFilterFacade; import com.kingdee.shr.base.syssetting.MSFServiceFacadeFactory; import com.kingdee.shr.base.syssetting.UIViewFactory; import com.kingdee.shr.base.syssetting.app.util.XMLUtil; import com.kingdee.shr.base.syssetting.context.SHRContext; import com.kingdee.shr.base.syssetting.exception.SHRWebException; import com.kingdee.shr.base.syssetting.exception.ShrWebBizException; import com.kingdee.shr.base.syssetting.ml.SHRWebResource; import com.kingdee.shr.base.syssetting.model.VirtualDataFetcher; import com.kingdee.shr.base.syssetting.util.MetaDataUtil; import com.kingdee.shr.base.syssetting.util.SysSettingUIViewUtil; import com.kingdee.shr.base.syssetting.web.dynamic.model.FieldInfo; import com.kingdee.shr.base.syssetting.web.dynamic.model.ListUIViewInfo; import com.kingdee.shr.base.syssetting.web.dynamic.model.UIViewInfo; import com.kingdee.shr.base.syssetting.web.dynamic.util.UIViewUtil; import com.kingdee.shr.base.syssetting.web.dynamic.view.converter.IFragmentUIViewConverter; import com.kingdee.shr.base.syssetting.web.dynamic.view.converter.IUIViewConverter; import com.kingdee.shr.base.syssetting.web.dynamic.view.converter.UIViewConverterFactory; import com.kingdee.shr.ml.MLServiceFactory; import com.kingdee.shr.ml.ResourceType; import com.kingdee.util.LocaleUtils; import com.kingdee.util.StringUtils; import com.kingdee.util.Uuid; import org.jdom.Document; import org.jdom.Element; import org.jdom.output.XMLOutputter; import org.jdom.xpath.XPath; import java.text.MessageFormat; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ViewGetDataService implements IHRMsfService { @Override public Object process(Context context, Map map) throws EASBizException, BOSException { String uipk = map.get("uipk") == null ? "" : map.get("uipk").toString(); String where = map.get("where") == null ? "" : map.get("where").toString(); try { JSONArray jsonArray = new JSONArray(); ViewGetDataUtils viewGetDataUtils = new ViewGetDataUtils(context,uipk); //通过uipk获取视图信息 UIViewInfo viewInfo = viewGetDataUtils.getViewInfo(); //获取视图配置字段 List fields = viewInfo.getFields(); String query = viewInfo.getQuery(); //判断页面是否配置query if (query != null && !query.equals("")) { //通过query获取数据 List> gridDataEntity = viewGetDataUtils.getGridDataEntity( uipk, where); //合拼组装数据 ,页面配置字段和查询的数据 for (int i = 0; i < gridDataEntity.size(); i++) { Map stringObjectMap = gridDataEntity.get(i); JSONArray jsonArray1 = new JSONArray(); for (int j = 0; j < fields.size(); j++) { JSONObject jsonObject = new JSONObject(); FieldInfo fieldInfo = fields.get(j); String alias = fieldInfo.getAlias(); String name = fieldInfo.getName(); DataType dataType = fieldInfo.getDataType(); jsonObject.put("alias", alias); jsonObject.put("name", name); jsonObject.put("dataType", dataType); Object o = stringObjectMap.get(name); jsonObject.put("data", o); jsonArray1.add(jsonObject); } jsonArray.add(jsonArray1); } return jsonArray; } // 未配置query List coreBaseList = viewGetDataUtils.getCoreBaseInfo(uipk, where); //合拼组装数据 ,页面配置字段和查询的数据 for (int i = 0; i < coreBaseList.size(); i++) { CoreBaseInfo coreBaseInfo = coreBaseList.get(i); JSONArray jsonArray1 = new JSONArray(); int w = 0; for (int j = 0; j < fields.size(); j++) { JSONObject jsonObject = new JSONObject(); FieldInfo fieldInfo = fields.get(j); String alias = fieldInfo.getAlias(); String name = fieldInfo.getName(); DataType dataType = fieldInfo.getDataType(); jsonObject.put("alias", alias); jsonObject.put("name", name); jsonObject.put("dataType", dataType); Object o = coreBaseInfo.get(name); jsonObject.put("data", o ); if (dataType!=null&&dataType.getName().equals("Enum")){ PropertyInfo property = fieldInfo.getProperty(); if (property instanceof OwnPropertyInfo) { OwnPropertyInfo ownProp = (OwnPropertyInfo)property; if (DataType.ENUM.equals(ownProp.getDataType())) { String enumSource = ownProp.getMetaDataRef(); if ( o!=null){ Object enumByValue = com.kingdee.shr.base.syssetting.app.util.MetaDataUtil.findEnumByValue(enumSource, o); jsonObject.put("data", enumByValue); } } } } jsonArray1.add(jsonObject); Map attributes = fieldInfo.getAttributes(); if (attributes != null) { String s = attributes.get("data-isGridCol"); if (s != null && s.equals("true")) { String dataUipk = attributes.get("data-uipk"); if (dataUipk.equals(uipk)) { jsonObject.put("data", ""); break; } String dataValue = attributes.get("data-value"); String dataComparison = attributes.get("data-comparison"); if (dataUipk != null && !dataUipk.equals("") && dataValue != null && !dataValue.equals("") && dataComparison != null && !dataComparison.equals("")) { Map serverMap = new HashMap<>(); serverMap.put("uipk", dataUipk); serverMap.put("where", dataComparison + " = " + "'" + coreBaseInfo.getString(dataValue) + "'"); Object o1 = MSFServiceFacadeFactory.getLocalInstance(context).processService("serviceTest", serverMap); if (o1 != null) { // JSONArray objects = JSONArray.parseArray(o1.toString()); jsonObject.put("data", o1); } } } } } jsonArray.add(jsonArray1); } return jsonArray; } catch (SHRWebException e) { throw new RuntimeException(e); } catch (ParserException e) { throw new RuntimeException(e); } } public static void main(String[] args) { Pattern sqlPattern = Pattern.compile( "(?:')|(?:--)|(/\\*(?:.|[\\n\\r])*?\\*/)|(\\b(select|update|and|or|delete" + "|insert|trancate|char|substr|ascii|declare|exec|count|master|into|drop|execute)\\b|(\\*|;|\\+|'|%))"); Matcher ors = sqlPattern.matcher(null); System.out.println(ors.find()); } }