DataSetConfigUtil.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
  1. package jnpf.base.util.dataSet;
  2. import jnpf.base.model.dataset.*;
  3. import jnpf.constant.DsKeyConst;
  4. import jnpf.database.model.superQuery.SuperQueryJsonModel;
  5. import jnpf.database.source.DbBase;
  6. import jnpf.database.util.DbTypeUtil;
  7. import jnpf.emnus.DsJoinTypeEnum;
  8. import jnpf.emnus.SearchMethodEnum;
  9. import jnpf.model.visualJson.FieLdsModel;
  10. import jnpf.util.DateUtil;
  11. import jnpf.util.JsonUtil;
  12. import jnpf.util.StringUtil;
  13. import org.apache.commons.collections4.CollectionUtils;
  14. import java.util.*;
  15. /**
  16. * 配置式工具类
  17. *
  18. * @author JNPF开发平台组
  19. * @version v5.1.0
  20. * @copyright 引迈信息技术有限公司
  21. * @date 2024/9/9 17:34:11
  22. */
  23. public class DataSetConfigUtil {
  24. //字段别名
  25. public static final String FIELD_RENAME = "%s.%s AS %s ";
  26. //普通查询
  27. public static final String SELECT_FROM = "SELECT %s FROM %s";
  28. //最基础的查询别名
  29. public static final String SELECT_UNIT = "(SELECT %s FROM %s) %s";
  30. //基础的上级查询
  31. public static final String SELECT_UPPER = "(%s) %s";
  32. public static final String SELECT_BRACKET = "(%s)";
  33. public static final String SIGN_EMPTY = "";
  34. public static final String SIGN_BLANK = " ";
  35. public static final String SIGN_COMMA = ",";
  36. public static final String SIGN_EQUALS = " = ";
  37. public static final String SIGN_ON = " ON ";
  38. public static final String SIGN_AND = " AND ";
  39. public static final String SIGN_WHERE = " WHERE ";
  40. public static final String SIGN_OR = " OR ";
  41. public static final String SIGN_UNDERLINE = "_";
  42. public static final String SIGN_BAR = "-";
  43. public static final String SIGN_PER = "%";
  44. public static final String SIGN_BETWEEN = " BETWEEN ";
  45. public static final String SIGN_NULL = " IS NULL ";
  46. public static final String SIGN_NOT_NULL = " IS NOT NULL ";
  47. public static final String SIGN_NEQ = " <> ";
  48. public static final String SIGN_GREATER = " > ";
  49. public static final String SIGN_LESS = " < ";
  50. public static final String SIGN_GREATER_EQ = " >= ";
  51. public static final String SIGN_LESS_EQ = " <= ";
  52. public static final String SIGN_LIKE = " LIKE ";
  53. public static final String SIGN_NOT_LIKE = " NOT LIKE ";
  54. public static final String SIGN_JNPFNULLLIST = "jnpfNullList";
  55. public static final String SIGN_QUESTION = "?";
  56. public static final String SIGN_TAMESTAMP = "TO_TIMESTAMP(?,'yyyy-mm-dd hh24:mi:ss')";
  57. /**
  58. * 递归获取全部字段
  59. *
  60. * @param configList
  61. * @param list
  62. */
  63. public static void getAllFields(List<DsConfigModel> configList, List<DsConfigFields> list) {
  64. if (configList == null || CollectionUtils.isEmpty(configList)) return;
  65. for (DsConfigModel item : configList) {
  66. if (item.getFieldList() != null && item.getFieldList().size() > 0) {
  67. list.addAll(item.getFieldList());
  68. }
  69. getAllFields(item.getChildren(), list);
  70. }
  71. }
  72. /**
  73. * 单表查询字段别名
  74. *
  75. * @param list
  76. * @return
  77. */
  78. public static String getTableFieldsAlias(List<DsConfigFields> list, boolean onlyField) {
  79. if (list == null || CollectionUtils.isEmpty(list)) return SIGN_EMPTY;
  80. StringJoiner result = new StringJoiner(SIGN_COMMA);
  81. for (DsConfigFields item : list) {
  82. String tableAlias = item.getTable();
  83. String fieldAlias = item.getFieldAlias();
  84. String field = item.getField();
  85. if (StringUtil.isNotEmpty(fieldAlias)) {
  86. if (onlyField) {
  87. //只有别名字段
  88. result.add(fieldAlias);
  89. } else {
  90. //表名.字段 AS 别名
  91. result.add(String.format(FIELD_RENAME, tableAlias, field, fieldAlias));
  92. }
  93. } else {
  94. //只有原字段
  95. result.add(field);
  96. }
  97. }
  98. return result.toString();
  99. }
  100. /**
  101. * 解析json
  102. *
  103. * @param configListJson
  104. * @return
  105. */
  106. public static List<DsConfigModel> analyzeJson(String configListJson, String dbType) {
  107. List<DsConfigModel> configList = JsonUtil.getJsonToList(configListJson, DsConfigModel.class);
  108. if (CollectionUtils.isEmpty(configList)) {
  109. return new ArrayList<>();
  110. }
  111. //单个表不别名
  112. if (CollectionUtils.isEmpty(configList.get(0).getChildren())) {
  113. return configList;
  114. }
  115. int startIndex = 0;
  116. //别名小写
  117. if (DbTypeUtil.needToLowerCase(dbType)) {
  118. startIndex = 32;
  119. }
  120. analyzeDsConfigModel(configList, startIndex);
  121. return configList;
  122. }
  123. /**
  124. * 递归解析json
  125. *
  126. * @param configList
  127. * @param letterNum
  128. */
  129. private static void analyzeDsConfigModel(List<DsConfigModel> configList, int letterNum) {
  130. if (CollectionUtils.isNotEmpty(configList)) {
  131. for (DsConfigModel configModel : configList) {
  132. String tableLetter = getLetter(letterNum) + SIGN_UNDERLINE;
  133. String tableAlias = tableLetter + configModel.getTable();
  134. configModel.setTableAlias(tableAlias);
  135. //子表配置
  136. List<DsConfigModel> children = configModel.getChildren();
  137. if (CollectionUtils.isNotEmpty(children)) {
  138. letterNum++;
  139. analyzeDsConfigModel(children, letterNum);
  140. }
  141. //字段别名设置
  142. List<DsConfigFields> fieldList = configModel.getFieldList();
  143. if (CollectionUtils.isNotEmpty(fieldList)) {
  144. for (DsConfigFields field : fieldList) {
  145. field.setFieldAlias(tableLetter + field.getField());
  146. field.setTable(configModel.getTable());
  147. }
  148. }
  149. letterNum++;
  150. }
  151. }
  152. }
  153. /**
  154. * 组装sql
  155. *
  156. * @param configList
  157. * @return
  158. */
  159. public static String assembleSql(List<DsConfigModel> configList, DsParamModel dsParamModel) {
  160. String sql = "";
  161. if (CollectionUtils.isEmpty(configList)) {
  162. return null;
  163. }
  164. List<DsConfigFields> listDF = new ArrayList<>();
  165. DataSetConfigUtil.getAllFields(configList, listDF);
  166. String fieldsAlias = getTableFieldsAlias(listDF, true);
  167. DsConfigModel configModel = configList.get(0);
  168. StringBuilder result = new StringBuilder();
  169. //递归组装
  170. if (CollectionUtils.isNotEmpty(configModel.getChildren())) {
  171. StringBuilder childStr = new StringBuilder();
  172. DataSetConfigUtil.recurAssSql(configModel, childStr, dsParamModel);
  173. result.append(childStr);
  174. } else {
  175. String where = DataSetConfigUtil.recurAssWhere(configModel, dsParamModel, false);
  176. String tableAndWhere = "";
  177. if (!where.equals("()")){
  178. tableAndWhere = configModel.getTable() + (StringUtil.isNotEmpty(where) ? SIGN_WHERE + where : "");
  179. result.append(String.format(SELECT_FROM, fieldsAlias, tableAndWhere));
  180. }else {
  181. result.append(String.format(SELECT_FROM, fieldsAlias,configModel.getTable()));
  182. }
  183. }
  184. sql = result.toString();
  185. //组装最外层过滤
  186. if (StringUtil.isNotEmpty(dsParamModel.getFilterConfigJson())) {
  187. DsConfigModel relationModel = JsonUtil.getJsonToBean(dsParamModel.getFilterConfigJson(), DsConfigModel.class);
  188. if (CollectionUtils.isNotEmpty(relationModel.getRuleList())) {
  189. StringBuilder filterResult = new StringBuilder();
  190. String filterTable = StringUtil.isNotEmpty(configModel.getTableAlias()) ? configModel.getTableAlias() : configModel.getTable();
  191. filterResult.append(String.format(SELECT_FROM, fieldsAlias, String.format(SELECT_UPPER, sql, filterTable)));
  192. relationModel.setTable(configModel.getTable());
  193. relationModel.setFieldList(configModel.getFieldList());
  194. relationModel.setChildren(configModel.getChildren());
  195. String recurAssWhere = recurAssWhere(relationModel, dsParamModel, true);
  196. if (StringUtil.isNotEmpty(recurAssWhere)) {
  197. filterResult.append(SIGN_WHERE);
  198. filterResult.append(recurAssWhere);
  199. }
  200. sql = filterResult.toString();
  201. }
  202. }
  203. return sql;
  204. }
  205. /**
  206. * 递归组装
  207. *
  208. * @param configModel
  209. * @param result
  210. * @return
  211. */
  212. private static void recurAssSql(DsConfigModel configModel, StringBuilder result, DsParamModel dsParamModel) {
  213. List<DsConfigModel> children = configModel.getChildren();
  214. //递归获取全部字段
  215. List<DsConfigFields> listDF = new ArrayList<>();
  216. DataSetConfigUtil.getAllFields(new ArrayList() {{
  217. add(configModel);
  218. }}, listDF);
  219. String tableAlias = configModel.getTableAlias();
  220. String table = configModel.getTable();
  221. List<DsConfigFields> fieldList = configModel.getFieldList();
  222. String mainFields = DataSetConfigUtil.getTableFieldsAlias(fieldList, false);
  223. //当前查询条件
  224. String where = DataSetConfigUtil.recurAssWhere(configModel, dsParamModel, false);
  225. String tableAndWhere = table + (StringUtil.isNotEmpty(where) ? SIGN_WHERE + where : "");
  226. //查询当前表语句 - 有子表往里塞,没有直接抛出
  227. String tableSelect = String.format(SELECT_UNIT, mainFields, tableAndWhere, tableAlias);
  228. if (CollectionUtils.isNotEmpty(children)) {
  229. //查询结果集
  230. String allFields = DataSetConfigUtil.getTableFieldsAlias(listDF, true);
  231. StringBuilder childBuilder = new StringBuilder();
  232. //查询主表字段
  233. childBuilder.append(tableSelect);
  234. //查询连表
  235. for (DsConfigModel item : children) {
  236. DsRelationConfig relationConfig = item.getRelationConfig();
  237. List<DsConfigFields> fieldItem = item.getFieldList();
  238. String codeByType = DsJoinTypeEnum.getCodeByType(relationConfig.getType());
  239. childBuilder.append(SIGN_BLANK);
  240. childBuilder.append(codeByType);
  241. StringBuilder itemBuilder = new StringBuilder();
  242. DataSetConfigUtil.recurAssSql(item, itemBuilder, dsParamModel);
  243. if (CollectionUtils.isNotEmpty(item.getChildren())) {
  244. childBuilder.append(String.format(SELECT_UPPER, itemBuilder, item.getTableAlias()));
  245. } else {
  246. childBuilder.append(itemBuilder);
  247. }
  248. //关联关系拼接-必须有关联关系
  249. List<DsRelationModel> relationList = relationConfig.getRelationList();
  250. childBuilder.append(SIGN_ON);
  251. StringJoiner relationJoiner = new StringJoiner(SIGN_AND);
  252. for (DsRelationModel relationModel : relationList) {
  253. DsConfigFields pFields = fieldList.stream().filter(t -> t.getField().equals(relationModel.getPField())).findFirst().orElse(null);
  254. DsConfigFields cFields = fieldItem.stream().filter(t -> t.getField().equals(relationModel.getField())).findFirst().orElse(null);
  255. relationJoiner.add(pFields.getFieldAlias() + SIGN_EQUALS + cFields.getFieldAlias());
  256. }
  257. childBuilder.append(relationJoiner);
  258. }
  259. //拼接所有表的关联关系
  260. StringJoiner relationWhereJoiner = new StringJoiner(SIGN_AND);
  261. for (DsConfigModel item : children) {
  262. DsRelationConfig relationConfig = item.getRelationConfig();
  263. //连表条件拼接
  264. DsConfigModel relationModel = new DsConfigModel();
  265. relationModel.setTable(table);
  266. relationModel.setFieldList(fieldList);
  267. relationModel.setChildren(children);
  268. relationModel.setMatchLogic(relationConfig.getMatchLogic());
  269. relationModel.setRuleList(relationConfig.getRuleList());
  270. String relationWhere = DataSetConfigUtil.recurAssWhere(relationModel, dsParamModel, true);
  271. if (StringUtil.isNotEmpty(relationWhere)) {
  272. relationWhereJoiner.add(relationWhere);
  273. }
  274. }
  275. if (relationWhereJoiner.length() > 0) {
  276. childBuilder.append(SIGN_WHERE);
  277. childBuilder.append(relationWhereJoiner);
  278. }
  279. result.append(String.format(SELECT_FROM, allFields, childBuilder));
  280. } else {
  281. result.append(tableSelect);
  282. }
  283. }
  284. /**
  285. * 组装where条件
  286. *
  287. * @param configModel
  288. * @param dsParamModel
  289. * @param fieldAlias
  290. * @return
  291. */
  292. public static String recurAssWhere(DsConfigModel configModel, DsParamModel dsParamModel, boolean fieldAlias) {
  293. List<DsConfigFields> fieldList = configModel.getFieldList();
  294. Map<String, List<DsConfigFields>> fieldsMap = new HashMap<>();
  295. fieldsMap.put(configModel.getTable(), fieldList);
  296. List<DsConfigModel> children = configModel.getChildren();
  297. for (DsConfigModel child : children) {
  298. fieldsMap.put(child.getTable(), child.getFieldList());
  299. }
  300. String matchLogic = SearchMethodEnum.And.getSymbol().equals(configModel.getMatchLogic()) ? SIGN_AND : SIGN_OR;
  301. List<SuperQueryJsonModel> ruleList = configModel.getRuleList();
  302. StringJoiner matchJoiner = new StringJoiner(matchLogic);
  303. int m = 0;
  304. if (CollectionUtils.isNotEmpty(ruleList)) {
  305. for (SuperQueryJsonModel ruleModel : ruleList) {
  306. String logic = SearchMethodEnum.And.getSymbol().equals(ruleModel.getLogic()) ? SIGN_AND : SIGN_OR;
  307. StringJoiner logicJoiner = new StringJoiner(logic);
  308. List<FieLdsModel> groups = ruleModel.getGroups();
  309. int n = 0;
  310. for (FieLdsModel fieLdsModel : groups) {
  311. DsConfigFields configFields = null;
  312. String thisField;
  313. if (fieLdsModel.getField().contains(SIGN_BAR)) {
  314. String thisTable = fieLdsModel.getField().split(SIGN_BAR)[0];
  315. thisField = fieLdsModel.getField().split(SIGN_BAR)[1];
  316. List<DsConfigFields> dsConfigFields = fieldsMap.get(thisTable);
  317. if (CollectionUtils.isNotEmpty(dsConfigFields)) {
  318. configFields = dsConfigFields.stream().filter(t -> t.getField().equals(thisField)).findFirst().orElse(null);
  319. }
  320. } else {
  321. thisField = fieLdsModel.getField();
  322. configFields = fieldList.stream().filter(t -> t.getField().equals(thisField)).findFirst().orElse(null);
  323. }
  324. if (configFields != null && StringUtil.isNotEmpty(configFields.getFieldAlias())) {
  325. fieLdsModel.setFieldAlias(configFields.getFieldAlias());
  326. } else {
  327. fieLdsModel.setFieldAlias(thisField);
  328. }
  329. String condition = getCondition(fieLdsModel, dsParamModel, fieldAlias);
  330. logicJoiner.add(condition);
  331. n++;
  332. }
  333. if (logicJoiner.length() > 0) {
  334. String logicSql = logicJoiner.toString();
  335. if (n > 1) {
  336. logicSql = String.format(SELECT_BRACKET, logicSql);
  337. }
  338. matchJoiner.add(logicSql);
  339. m++;
  340. }
  341. }
  342. }
  343. if (matchJoiner.length() > 0) {
  344. String matchSql = matchJoiner.toString();
  345. if (m > 1) {
  346. matchSql = String.format(SELECT_BRACKET, matchSql);
  347. }
  348. return matchSql;
  349. }
  350. return "";
  351. }
  352. /**
  353. * 拼接条件
  354. *
  355. * @param fieLdsModel
  356. * @param dsParamModel
  357. * @param fieldAlias
  358. * @return
  359. */
  360. public static String getCondition(FieLdsModel fieLdsModel, DsParamModel dsParamModel, boolean fieldAlias) {
  361. List<Object> values = dsParamModel.getValues();
  362. String dbType = dsParamModel.getDbType();
  363. boolean isOracleOrPostgre = DbBase.ORACLE.equalsIgnoreCase(dbType) || DbBase.POSTGRE_SQL.equalsIgnoreCase(dbType);
  364. boolean isSqlServer = DbBase.SQL_SERVER.equalsIgnoreCase(dbType);
  365. String field = fieldAlias ? fieLdsModel.getFieldAlias() : fieLdsModel.getField();
  366. String dataType = fieLdsModel.getDataType();
  367. SearchMethodEnum symbol = SearchMethodEnum.getSearchMethod(fieLdsModel.getSymbol());
  368. String mark = SIGN_QUESTION;
  369. if (DsKeyConst.DateSelect.contains(dataType) && isOracleOrPostgre) {
  370. mark = SIGN_TAMESTAMP;
  371. }
  372. //获取条件值
  373. swapValue(fieLdsModel, dsParamModel);
  374. Object fieldValueOne = fieLdsModel.getFieldValueOne();
  375. Object fieldValueTwo = fieLdsModel.getFieldValueTwo();
  376. if (isSqlServer && fieldValueOne instanceof String) {
  377. fieldValueOne = String.valueOf(fieldValueOne).replaceAll("\\[", "[[]");
  378. }
  379. StringBuilder sqlBuilder = new StringBuilder();
  380. switch (symbol) {
  381. case IsNull:
  382. sqlBuilder.append(field + SIGN_NULL);
  383. break;
  384. case IsNotNull:
  385. sqlBuilder.append(field + SIGN_NOT_NULL);
  386. break;
  387. case Equal:
  388. sqlBuilder.append(field + SIGN_EQUALS + mark);
  389. values.add(fieldValueOne);
  390. break;
  391. case NotEqual:
  392. sqlBuilder.append(field + SIGN_NEQ + mark);
  393. values.add(fieldValueOne);
  394. break;
  395. case GreaterThan:
  396. sqlBuilder.append(field + SIGN_GREATER + mark);
  397. values.add(fieldValueOne);
  398. break;
  399. case LessThan:
  400. sqlBuilder.append(field + SIGN_LESS + mark);
  401. values.add(fieldValueOne);
  402. break;
  403. case GreaterThanOrEqual:
  404. sqlBuilder.append(field + SIGN_GREATER_EQ + mark);
  405. values.add(fieldValueOne);
  406. break;
  407. case LessThanOrEqual:
  408. sqlBuilder.append(field + SIGN_LESS_EQ + mark);
  409. values.add(fieldValueOne);
  410. break;
  411. case Like:
  412. sqlBuilder.append(field + SIGN_LIKE + mark);
  413. values.add(SIGN_PER + fieldValueOne + SIGN_PER);
  414. break;
  415. case NotLike:
  416. sqlBuilder.append(field + SIGN_NOT_LIKE + mark);
  417. values.add(SIGN_PER + fieldValueOne + SIGN_PER);
  418. break;
  419. case Between:
  420. sqlBuilder.append(field + SIGN_BETWEEN + mark + SIGN_AND + mark);
  421. values.add(fieldValueOne);
  422. values.add(fieldValueTwo);
  423. break;
  424. case Included:
  425. case NotIncluded:
  426. List<String> dataList = new ArrayList<>();
  427. if (fieldValueOne == null || StringUtil.isEmpty(fieldValueOne.toString())) {
  428. dataList.add(SIGN_JNPFNULLLIST);
  429. } else if (fieldValueOne instanceof List) {
  430. dataList.addAll((List) fieldValueOne);
  431. } else {
  432. try {
  433. dataList.addAll(JsonUtil.getJsonToList(fieldValueOne.toString(), String.class));
  434. } catch (Exception e) {
  435. dataList.add(fieldValueOne.toString());
  436. }
  437. }
  438. StringJoiner included = new StringJoiner(SIGN_OR);
  439. StringJoiner notIncluded = new StringJoiner(SIGN_AND);
  440. for (String s : dataList) {
  441. if (symbol == SearchMethodEnum.Included) {
  442. included.add(field + SIGN_LIKE + mark);
  443. values.add(SIGN_PER + s + SIGN_PER);
  444. } else {
  445. notIncluded.add(field + SIGN_NOT_LIKE + mark);
  446. values.add(SIGN_PER + s + SIGN_PER);
  447. }
  448. }
  449. if (SearchMethodEnum.Included.equals(symbol)){
  450. sqlBuilder.append(String.format(SELECT_BRACKET, included));
  451. }else {
  452. sqlBuilder.append(String.format(SELECT_BRACKET, notIncluded));
  453. }
  454. break;
  455. }
  456. return sqlBuilder.toString();
  457. }
  458. /**
  459. * 值转换
  460. *
  461. * @param fieLdsModel
  462. * @param dsParamModel
  463. */
  464. public static void swapValue(FieLdsModel fieLdsModel, DsParamModel dsParamModel) {
  465. Map<String, String> systemParam = dsParamModel.getSystemParam();
  466. String fieldValue = fieLdsModel.getFieldValue();
  467. String dataType = fieLdsModel.getDataType();
  468. String valueOne = null;
  469. String valueTwo = null;
  470. Object fieldValueOne = fieldValue;
  471. Object fieldValueTwo = fieldValue;
  472. String fieldValueType = fieLdsModel.getFieldValueType();
  473. List<String> data = new ArrayList<>();
  474. if (DsKeyConst.BetweenSelect.contains(dataType)) {
  475. try {
  476. data.addAll(JsonUtil.getJsonToList(fieldValue, String.class));
  477. if (data.size() == 0) return;
  478. if (data.size() == 1) data.add(data.get(0));
  479. } catch (Exception e) {
  480. data.add(fieldValue);
  481. data.add(fieldValue);
  482. }
  483. valueOne = data.get(0);
  484. valueTwo = data.get(1);
  485. }
  486. switch (dataType) {
  487. case DsKeyConst.DOUBLE:
  488. fieldValueOne = valueOne != null ? new Double(valueOne) : valueOne;
  489. fieldValueTwo = valueTwo != null ? new Double(valueTwo) : valueTwo;
  490. break;
  491. case DsKeyConst.BIGINT:
  492. fieldValueOne = valueOne != null ? new Long(valueOne) : valueOne;
  493. fieldValueTwo = valueTwo != null ? new Long(valueTwo) : valueTwo;
  494. break;
  495. case DsKeyConst.DATE:
  496. case DsKeyConst.TIME:
  497. if (valueOne != null) {
  498. fieldValueOne = DateUtil.dateFormat(new Date(Long.valueOf(valueOne)));
  499. }
  500. if (valueTwo != null) {
  501. fieldValueTwo = DateUtil.dateFormat(new Date(Long.valueOf(valueTwo)));
  502. }
  503. break;
  504. default:
  505. //TEXT 1-自定义,2-系统参数
  506. if (Objects.equals(fieldValueType, "2")) {
  507. fieldValueOne = systemParam.get(fieldValue);
  508. }
  509. break;
  510. }
  511. fieLdsModel.setFieldValueOne(fieldValueOne);
  512. fieLdsModel.setFieldValueTwo(fieldValueTwo);
  513. }
  514. /**
  515. * asc码获取字母
  516. *
  517. * @param letterNum
  518. * @return
  519. */
  520. public static String getLetter(int letterNum) {
  521. char letter = (char) (65 + letterNum);
  522. return String.valueOf(letter);
  523. }
  524. }