b1f65a37c38b62d78fadb90f7a505d3e7561cf7f.svn-base 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. package org.jeecg.modules.system.controller;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import io.swagger.annotations.Api;
  8. import io.swagger.annotations.ApiOperation;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.jeecg.common.api.vo.Result;
  11. import org.jeecg.common.aspect.annotation.AutoLog;
  12. import org.jeecg.common.system.base.controller.JeecgController;
  13. import org.jeecg.common.system.query.QueryGenerator;
  14. import org.jeecg.common.util.FillRuleUtil;
  15. import org.jeecg.modules.system.entity.SysFillRule;
  16. import org.jeecg.modules.system.service.ISysFillRuleService;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.web.bind.annotation.*;
  19. import org.springframework.web.servlet.ModelAndView;
  20. import javax.servlet.http.HttpServletRequest;
  21. import javax.servlet.http.HttpServletResponse;
  22. import java.util.Arrays;
  23. /**
  24. * @Description: 填值规则
  25. * @Author: jeecg-boot
  26. * @Date: 2019-11-07
  27. * @Version: V1.0
  28. */
  29. @Slf4j
  30. @Api(tags = "填值规则")
  31. @RestController
  32. @RequestMapping("/sys/fillRule")
  33. public class SysFillRuleController extends JeecgController<SysFillRule, ISysFillRuleService> {
  34. @Autowired
  35. private ISysFillRuleService sysFillRuleService;
  36. /**
  37. * 分页列表查询
  38. *
  39. * @param sysFillRule
  40. * @param pageNo
  41. * @param pageSize
  42. * @param req
  43. * @return
  44. */
  45. @AutoLog(value = "填值规则-分页列表查询")
  46. @ApiOperation(value = "填值规则-分页列表查询", notes = "填值规则-分页列表查询")
  47. @GetMapping(value = "/list")
  48. public Result<?> queryPageList(SysFillRule sysFillRule,
  49. @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
  50. @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
  51. HttpServletRequest req) {
  52. QueryWrapper<SysFillRule> queryWrapper = QueryGenerator.initQueryWrapper(sysFillRule, req.getParameterMap());
  53. Page<SysFillRule> page = new Page<>(pageNo, pageSize);
  54. IPage<SysFillRule> pageList = sysFillRuleService.page(page, queryWrapper);
  55. return Result.ok(pageList);
  56. }
  57. /**
  58. * 测试 ruleCode
  59. *
  60. * @param ruleCode
  61. * @return
  62. */
  63. @GetMapping(value = "/testFillRule")
  64. public Result testFillRule(@RequestParam("ruleCode") String ruleCode) {
  65. Object result = FillRuleUtil.executeRule(ruleCode, new JSONObject());
  66. return Result.ok(result);
  67. }
  68. /**
  69. * 添加
  70. *
  71. * @param sysFillRule
  72. * @return
  73. */
  74. @AutoLog(value = "填值规则-添加")
  75. @ApiOperation(value = "填值规则-添加", notes = "填值规则-添加")
  76. @PostMapping(value = "/add")
  77. public Result<?> add(@RequestBody SysFillRule sysFillRule) {
  78. sysFillRuleService.save(sysFillRule);
  79. return Result.ok("添加成功!");
  80. }
  81. /**
  82. * 编辑
  83. *
  84. * @param sysFillRule
  85. * @return
  86. */
  87. @AutoLog(value = "填值规则-编辑")
  88. @ApiOperation(value = "填值规则-编辑", notes = "填值规则-编辑")
  89. @PostMapping(value = "/edit")
  90. public Result<?> edit(@RequestBody SysFillRule sysFillRule) {
  91. sysFillRuleService.updateById(sysFillRule);
  92. return Result.ok("编辑成功!");
  93. }
  94. /**
  95. * 通过id删除
  96. *
  97. * @param id
  98. * @return
  99. */
  100. @AutoLog(value = "填值规则-通过id删除")
  101. @ApiOperation(value = "填值规则-通过id删除", notes = "填值规则-通过id删除")
  102. @PostMapping(value = "/delete")
  103. public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
  104. sysFillRuleService.removeById(id);
  105. return Result.ok("删除成功!");
  106. }
  107. /**
  108. * 批量删除
  109. *
  110. * @param ids
  111. * @return
  112. */
  113. @AutoLog(value = "填值规则-批量删除")
  114. @ApiOperation(value = "填值规则-批量删除", notes = "填值规则-批量删除")
  115. @PostMapping(value = "/deleteBatch")
  116. public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
  117. this.sysFillRuleService.removeByIds(Arrays.asList(ids.split(",")));
  118. return Result.ok("批量删除成功!");
  119. }
  120. /**
  121. * 通过id查询
  122. *
  123. * @param id
  124. * @return
  125. */
  126. @AutoLog(value = "填值规则-通过id查询")
  127. @ApiOperation(value = "填值规则-通过id查询", notes = "填值规则-通过id查询")
  128. @GetMapping(value = "/queryById")
  129. public Result<?> queryById(@RequestParam(name = "id", required = true) String id) {
  130. SysFillRule sysFillRule = sysFillRuleService.getById(id);
  131. return Result.ok(sysFillRule);
  132. }
  133. /**
  134. * 导出excel
  135. *
  136. * @param request
  137. * @param sysFillRule
  138. */
  139. @RequestMapping(value = "/exportXls")
  140. public ModelAndView exportXls(HttpServletRequest request, SysFillRule sysFillRule) {
  141. return super.exportXls(request, sysFillRule, SysFillRule.class, "填值规则");
  142. }
  143. /**
  144. * 通过excel导入数据
  145. *
  146. * @param request
  147. * @param response
  148. * @return
  149. */
  150. @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  151. public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
  152. return super.importExcel(request, response, SysFillRule.class);
  153. }
  154. /**
  155. * 通过 ruleCode 执行自定义填值规则
  156. *
  157. * @param ruleCode 要执行的填值规则编码
  158. * @param formData 表单数据,可根据表单数据的不同生成不同的填值结果
  159. * @return 运行后的结果
  160. */
  161. @PostMapping("/executeRuleByCode/{ruleCode}")
  162. public Result executeByRuleCode(@PathVariable("ruleCode") String ruleCode, @RequestBody JSONObject formData) {
  163. Object result = FillRuleUtil.executeRule(ruleCode, formData);
  164. return Result.ok(result);
  165. }
  166. /**
  167. * 批量通过 ruleCode 执行自定义填值规则
  168. *
  169. * @param ruleData 要执行的填值规则JSON数组:
  170. * 示例: { "commonFormData": {}, rules: [ { "ruleCode": "xxx", "formData": null } ] }
  171. * @return 运行后的结果,返回示例: [{"ruleCode": "order_num_rule", "result": "CN2019111117212984"}]
  172. *
  173. */
  174. @PostMapping("/executeRuleByCodeBatch")
  175. public Result executeByRuleCodeBatch(@RequestBody JSONObject ruleData) {
  176. JSONObject commonFormData = ruleData.getJSONObject("commonFormData");
  177. JSONArray rules = ruleData.getJSONArray("rules");
  178. // 遍历 rules ,批量执行规则
  179. JSONArray results = new JSONArray(rules.size());
  180. for (int i = 0; i < rules.size(); i++) {
  181. JSONObject rule = rules.getJSONObject(i);
  182. String ruleCode = rule.getString("ruleCode");
  183. JSONObject formData = rule.getJSONObject("formData");
  184. // 如果没有传递 formData,就用common的
  185. if (formData == null) {
  186. formData = commonFormData;
  187. }
  188. // 执行填值规则
  189. Object result = FillRuleUtil.executeRule(ruleCode, formData);
  190. JSONObject obj = new JSONObject(rules.size());
  191. obj.put("ruleCode", ruleCode);
  192. obj.put("result", result);
  193. results.add(obj);
  194. }
  195. return Result.ok(results);
  196. }
  197. }