ViewGetDataService.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. package com.kingdee.eas.custom.utils;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.kingdee.bos.BOSException;
  5. import com.kingdee.bos.Context;
  6. import com.kingdee.bos.bsf.service.app.IHRMsfService;
  7. import com.kingdee.bos.dao.query.IQueryExecutor;
  8. import com.kingdee.bos.dao.query.QueryExecutorFactory;
  9. import com.kingdee.bos.framework.cache.service.CacheService;
  10. import com.kingdee.bos.metadata.MetaDataPK;
  11. import com.kingdee.bos.metadata.entity.*;
  12. import com.kingdee.bos.sql.ParserException;
  13. import com.kingdee.eas.common.EASBizException;
  14. import com.kingdee.eas.framework.CoreBaseCollection;
  15. import com.kingdee.eas.framework.CoreBaseInfo;
  16. import com.kingdee.eas.framework.ICoreBase;
  17. import com.kingdee.shr.base.syssetting.DomainFilterFacadeFactory;
  18. import com.kingdee.shr.base.syssetting.IDomainFilterFacade;
  19. import com.kingdee.shr.base.syssetting.MSFServiceFacadeFactory;
  20. import com.kingdee.shr.base.syssetting.UIViewFactory;
  21. import com.kingdee.shr.base.syssetting.app.util.XMLUtil;
  22. import com.kingdee.shr.base.syssetting.context.SHRContext;
  23. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  24. import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
  25. import com.kingdee.shr.base.syssetting.ml.SHRWebResource;
  26. import com.kingdee.shr.base.syssetting.model.VirtualDataFetcher;
  27. import com.kingdee.shr.base.syssetting.util.MetaDataUtil;
  28. import com.kingdee.shr.base.syssetting.util.SysSettingUIViewUtil;
  29. import com.kingdee.shr.base.syssetting.web.dynamic.model.FieldInfo;
  30. import com.kingdee.shr.base.syssetting.web.dynamic.model.ListUIViewInfo;
  31. import com.kingdee.shr.base.syssetting.web.dynamic.model.UIViewInfo;
  32. import com.kingdee.shr.base.syssetting.web.dynamic.util.UIViewUtil;
  33. import com.kingdee.shr.base.syssetting.web.dynamic.view.converter.IFragmentUIViewConverter;
  34. import com.kingdee.shr.base.syssetting.web.dynamic.view.converter.IUIViewConverter;
  35. import com.kingdee.shr.base.syssetting.web.dynamic.view.converter.UIViewConverterFactory;
  36. import com.kingdee.shr.ml.MLServiceFactory;
  37. import com.kingdee.shr.ml.ResourceType;
  38. import com.kingdee.util.LocaleUtils;
  39. import com.kingdee.util.StringUtils;
  40. import com.kingdee.util.Uuid;
  41. import org.jdom.Document;
  42. import org.jdom.Element;
  43. import org.jdom.output.XMLOutputter;
  44. import org.jdom.xpath.XPath;
  45. import java.text.MessageFormat;
  46. import java.util.*;
  47. import java.util.regex.Matcher;
  48. import java.util.regex.Pattern;
  49. public class ViewGetDataService implements IHRMsfService {
  50. @Override
  51. public Object process(Context context, Map map) throws EASBizException, BOSException {
  52. String uipk = map.get("uipk") == null ? "" : map.get("uipk").toString();
  53. String where = map.get("where") == null ? "" : map.get("where").toString();
  54. try {
  55. JSONArray jsonArray = new JSONArray();
  56. ViewGetDataUtils viewGetDataUtils = new ViewGetDataUtils(context,uipk);
  57. //通过uipk获取视图信息
  58. UIViewInfo viewInfo = viewGetDataUtils.getViewInfo();
  59. //获取视图配置字段
  60. List<FieldInfo> fields = viewInfo.getFields();
  61. String query = viewInfo.getQuery();
  62. //判断页面是否配置query
  63. if (query != null && !query.equals("")) {
  64. //通过query获取数据
  65. List<Map<String, Object>> gridDataEntity = viewGetDataUtils.getGridDataEntity( uipk, where);
  66. //合拼组装数据 ,页面配置字段和查询的数据
  67. for (int i = 0; i < gridDataEntity.size(); i++) {
  68. Map<String, Object> stringObjectMap = gridDataEntity.get(i);
  69. JSONArray jsonArray1 = new JSONArray();
  70. for (int j = 0; j < fields.size(); j++) {
  71. JSONObject jsonObject = new JSONObject();
  72. FieldInfo fieldInfo = fields.get(j);
  73. String alias = fieldInfo.getAlias();
  74. String name = fieldInfo.getName();
  75. DataType dataType = fieldInfo.getDataType();
  76. jsonObject.put("alias", alias);
  77. jsonObject.put("name", name);
  78. jsonObject.put("dataType", dataType);
  79. Object o = stringObjectMap.get(name);
  80. jsonObject.put("data", o);
  81. jsonArray1.add(jsonObject);
  82. }
  83. jsonArray.add(jsonArray1);
  84. }
  85. return jsonArray;
  86. }
  87. // 未配置query
  88. List<CoreBaseInfo> coreBaseList = viewGetDataUtils.getCoreBaseInfo(uipk, where);
  89. //合拼组装数据 ,页面配置字段和查询的数据
  90. for (int i = 0; i < coreBaseList.size(); i++) {
  91. CoreBaseInfo coreBaseInfo = coreBaseList.get(i);
  92. JSONArray jsonArray1 = new JSONArray();
  93. int w = 0;
  94. for (int j = 0; j < fields.size(); j++) {
  95. JSONObject jsonObject = new JSONObject();
  96. FieldInfo fieldInfo = fields.get(j);
  97. String alias = fieldInfo.getAlias();
  98. String name = fieldInfo.getName();
  99. DataType dataType = fieldInfo.getDataType();
  100. jsonObject.put("alias", alias);
  101. jsonObject.put("name", name);
  102. jsonObject.put("dataType", dataType);
  103. Object o = coreBaseInfo.get(name);
  104. jsonObject.put("data", o );
  105. if (dataType!=null&&dataType.getName().equals("Enum")){
  106. PropertyInfo property = fieldInfo.getProperty();
  107. if (property instanceof OwnPropertyInfo) {
  108. OwnPropertyInfo ownProp = (OwnPropertyInfo)property;
  109. if (DataType.ENUM.equals(ownProp.getDataType())) {
  110. String enumSource = ownProp.getMetaDataRef();
  111. if ( o!=null){
  112. Object enumByValue = com.kingdee.shr.base.syssetting.app.util.MetaDataUtil.findEnumByValue(enumSource, o);
  113. jsonObject.put("data", enumByValue);
  114. }
  115. }
  116. }
  117. }
  118. jsonArray1.add(jsonObject);
  119. Map<String, String> attributes = fieldInfo.getAttributes();
  120. if (attributes != null) {
  121. String s = attributes.get("data-isGridCol");
  122. if (s != null && s.equals("true")) {
  123. String dataUipk = attributes.get("data-uipk");
  124. if (dataUipk.equals(uipk)) {
  125. jsonObject.put("data", "");
  126. break;
  127. }
  128. String dataValue = attributes.get("data-value");
  129. String dataComparison = attributes.get("data-comparison");
  130. if (dataUipk != null && !dataUipk.equals("")
  131. && dataValue != null && !dataValue.equals("")
  132. && dataComparison != null && !dataComparison.equals("")) {
  133. Map<String, Object> serverMap = new HashMap<>();
  134. serverMap.put("uipk", dataUipk);
  135. serverMap.put("where", dataComparison + " = " + "'" + coreBaseInfo.getString(dataValue) + "'");
  136. Object o1 = MSFServiceFacadeFactory.getLocalInstance(context).processService("serviceTest", serverMap);
  137. if (o1 != null) {
  138. // JSONArray objects = JSONArray.parseArray(o1.toString());
  139. jsonObject.put("data", o1);
  140. }
  141. }
  142. }
  143. }
  144. }
  145. jsonArray.add(jsonArray1);
  146. }
  147. return jsonArray;
  148. } catch (SHRWebException e) {
  149. throw new RuntimeException(e);
  150. } catch (ParserException e) {
  151. throw new RuntimeException(e);
  152. }
  153. }
  154. public static void main(String[] args) {
  155. Pattern sqlPattern = Pattern.compile(
  156. "(?:')|(?:--)|(/\\*(?:.|[\\n\\r])*?\\*/)|(\\b(select|update|and|or|delete"
  157. + "|insert|trancate|char|substr|ascii|declare|exec|count|master|into|drop|execute)\\b|(\\*|;|\\+|'|%))");
  158. Matcher ors = sqlPattern.matcher(null);
  159. System.out.println(ors.find());
  160. }
  161. }