123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- 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.metadata.entity.*;
- import com.kingdee.bos.sql.ParserException;
- import com.kingdee.eas.common.EASBizException;
- import com.kingdee.eas.framework.CoreBaseInfo;
- import com.kingdee.shr.base.syssetting.MSFServiceFacadeFactory;
- import com.kingdee.shr.base.syssetting.exception.SHRWebException;
- import com.kingdee.shr.base.syssetting.web.dynamic.model.FieldInfo;
- import com.kingdee.shr.base.syssetting.web.dynamic.model.UIViewInfo;
- 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<FieldInfo> fields = viewInfo.getFields();
- String query = viewInfo.getQuery();
- //判断页面是否配置query
- if (query != null && !query.equals("")) {
- //通过query获取数据
- List<Map<String, Object>> gridDataEntity = viewGetDataUtils.getGridDataEntity( uipk, where);
- //合拼组装数据 ,页面配置字段和查询的数据
- for (int i = 0; i < gridDataEntity.size(); i++) {
- Map<String, Object> 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<CoreBaseInfo> 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<String, String> 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<String, Object> serverMap = new HashMap<>();
- serverMap.put("uipk", dataUipk);
- serverMap.put("where", dataComparison + " = " + "'" + coreBaseInfo.getString(dataValue) + "'");
- Object o1 = MSFServiceFacadeFactory.getLocalInstance(context).processService("viewGetDataService", 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());
- }
- }
|