GetCompleteSqlService.java 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package com.kingdee.eas.custom.dataconfig.utils.service;
  2. import com.kingdee.bos.BOSException;
  3. import com.kingdee.bos.Context;
  4. import com.kingdee.bos.bsf.service.app.IHRMsfService;
  5. import com.kingdee.eas.common.EASBizException;
  6. import com.kingdee.eas.custom.dataconfig.utils.NativeSqlJoinOptimizer;
  7. import com.kingdee.eas.custom.dataconfig.utils.SqlUtils;
  8. import com.kingdee.eas.custom.entryconfig.DataConfigFactory;
  9. import com.kingdee.eas.custom.entryconfig.DataConfigInfo;
  10. import com.kingdee.eas.custom.entryconfig.DataConfigSelectFieldEntryCollection;
  11. import com.kingdee.shr.base.syssetting.MSFServiceFacadeFactory;
  12. import net.sf.jsqlparser.JSQLParserException;
  13. import java.util.HashMap;
  14. import java.util.Map;
  15. public class GetCompleteSqlService implements IHRMsfService {
  16. @Override
  17. public Object process(Context context, Map map) throws EASBizException, BOSException {
  18. // 从输入参数中获取"number"键对应的值,该值为数据配置的编号
  19. Object o = map.get("number");
  20. Object t = map.get("top");
  21. // 检查number参数是否为空
  22. if (o == null) {
  23. // 若为空则抛出运行时异常,提示number参数不可为空
  24. throw new RuntimeException("number参数不能为空!");
  25. }
  26. // 将number参数转换为字符串类型
  27. String number = o.toString();
  28. // 实例化SQL工具类,用于处理SQL构建相关的工具方法
  29. SqlUtils sqlUtils = new SqlUtils();
  30. // 根据number编号查询对应的数据配置信息
  31. // 此处SQL查询条件为number字段等于输入的编号,查询数据配置主信息及关联的条目信息
  32. DataConfigInfo dataConfigInfo = DataConfigFactory.getLocalInstance(context)
  33. .getDataConfigInfo("select *,SelectFieldEntry.* where number = '" + number + "' order by entrys.seq ");
  34. DataConfigSelectFieldEntryCollection selectFieldEntry = dataConfigInfo.getSelectFieldEntry();
  35. StringBuilder field = new StringBuilder();
  36. if (t!=null){
  37. field.append("top 1").append("\n");
  38. }
  39. StringBuilder selectField = sqlUtils.getSelectField(selectFieldEntry, field);
  40. Map<String,Object> getSqlServiceMap = new HashMap<String,Object>();
  41. getSqlServiceMap.put("number",number);
  42. Object o1 = MSFServiceFacadeFactory.getLocalInstance(context).processService("getSqlService", getSqlServiceMap);
  43. String sql = o1.toString();
  44. sql = sql.replace("{{filed}}",selectField.toString());
  45. return sql.toString();
  46. }
  47. }