FillRuleUtil.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package org.jeecg.common.util;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.apache.commons.lang.StringUtils;
  8. import org.jeecg.common.handler.IFillRuleHandler;
  9. /**
  10. * 规则值自动生成工具类
  11. *
  12. * @author qinfeng
  13. * @举例: 自动生成订单号;自动生成当前日期
  14. */
  15. @Slf4j
  16. public class FillRuleUtil {
  17. /**
  18. * @param ruleCode ruleCode
  19. * @return
  20. */
  21. @SuppressWarnings("unchecked")
  22. public static Object executeRule(String ruleCode, JSONObject formData) {
  23. if (!StringUtils.isEmpty(ruleCode)) {
  24. try {
  25. // 获取 Service
  26. ServiceImpl impl = (ServiceImpl) SpringContextUtils.getBean("sysFillRuleServiceImpl");
  27. // 根据 ruleCode 查询出实体
  28. QueryWrapper queryWrapper = new QueryWrapper();
  29. queryWrapper.eq("rule_code", ruleCode);
  30. JSONObject entity = JSON.parseObject(JSON.toJSONString(impl.getOne(queryWrapper)));
  31. if (entity == null) {
  32. log.warn("填值规则:" + ruleCode + " 不存在");
  33. return null;
  34. }
  35. // 获取必要的参数
  36. String ruleClass = entity.getString("ruleClass");
  37. JSONObject params = entity.getJSONObject("ruleParams");
  38. if (params == null) {
  39. params = new JSONObject();
  40. }
  41. if (formData == null) {
  42. formData = new JSONObject();
  43. }
  44. // 通过反射执行配置的类里的方法
  45. IFillRuleHandler ruleHandler = (IFillRuleHandler) Class.forName(ruleClass).newInstance();
  46. return ruleHandler.execute(params, formData);
  47. } catch (Exception e) {
  48. e.printStackTrace();
  49. }
  50. }
  51. return null;
  52. }
  53. }