DataSetController.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. package jnpf.base.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.dev33.satoken.annotation.SaMode;
  4. import cn.dev33.satoken.stp.StpUtil;
  5. import cn.hutool.core.util.ObjectUtil;
  6. import com.google.common.collect.ImmutableList;
  7. import com.google.common.collect.ImmutableMap;
  8. import io.swagger.v3.oas.annotations.Operation;
  9. import io.swagger.v3.oas.annotations.Parameter;
  10. import io.swagger.v3.oas.annotations.Parameters;
  11. import io.swagger.v3.oas.annotations.tags.Tag;
  12. import jnpf.base.ActionResult;
  13. import jnpf.base.entity.DataInterfaceEntity;
  14. import jnpf.base.entity.DataSetEntity;
  15. import jnpf.base.model.dataset.*;
  16. import jnpf.base.service.DataInterfaceService;
  17. import jnpf.base.service.DataSetService;
  18. import jnpf.base.util.dataSet.DataSetConstant;
  19. import jnpf.base.util.dataSet.DataSetSwapUtil;
  20. import jnpf.constant.DataInterfaceVarConst;
  21. import jnpf.constant.DbSensitiveConstant;
  22. import jnpf.constant.MsgCode;
  23. import jnpf.model.SystemParamModel;
  24. import jnpf.model.visualJson.FieLdsModel;
  25. import jnpf.model.visualJson.config.ConfigModel;
  26. import jnpf.permission.service.UserService;
  27. import jnpf.util.JsonUtil;
  28. import jnpf.util.ParameterUtil;
  29. import jnpf.util.RandomUtil;
  30. import jnpf.util.StringUtil;
  31. import jnpf.util.treeutil.SumTree;
  32. import jnpf.util.visiual.JnpfKeyConsts;
  33. import org.springframework.beans.factory.annotation.Autowired;
  34. import org.springframework.web.bind.annotation.*;
  35. import java.util.*;
  36. /**
  37. * 数据集控制器
  38. *
  39. * @author JNPF开发平台组
  40. * @version v5.0.0
  41. * @copyright 引迈信息技术有限公司
  42. * @date 2024/5/7 10:09:18
  43. */
  44. @Tag(name = "数据集", description = "DataSet")
  45. @RestController
  46. @RequestMapping("/api/system/DataSet")
  47. public class DataSetController {
  48. @Autowired
  49. private DataSetService dataSetService;
  50. @Autowired
  51. private UserService userApi;
  52. @Autowired
  53. private DataSetSwapUtil dataSetSwapUtil;
  54. @Autowired
  55. private DataInterfaceService dataInterfaceService;
  56. @Operation(summary = "列表")
  57. @SaCheckPermission(value = {"onlineDev.printDev", "onlineDev.report"}, mode = SaMode.OR)
  58. @GetMapping
  59. public ActionResult<List<SumTree<TableTreeModel>>> list(DataSetPagination pagination) throws Exception {
  60. List<DataSetEntity> list = dataSetService.getList(pagination);
  61. List<SumTree<TableTreeModel>> res = new ArrayList<>();
  62. for (DataSetEntity item : list) {
  63. if (StringUtil.isNotEmpty(ParameterUtil.checkContainsSensitive(item.getDataConfigJson(), DbSensitiveConstant.PRINT_SENSITIVE))) {
  64. return ActionResult.fail(MsgCode.SYS047.get());
  65. }
  66. // if (!item.getDataConfigJson().contains("@formId")) {
  67. // return ActionResult.fail(MsgCode.SYS048.get());
  68. // }
  69. SumTree<TableTreeModel> printTableFields = dataSetService.getTabFieldStruct(item);
  70. res.add(printTableFields);
  71. }
  72. return ActionResult.success(res);
  73. }
  74. @Operation(summary = "获取字段")
  75. @SaCheckPermission(value = {"onlineDev.printDev", "onlineDev.report"}, mode = SaMode.OR)
  76. @PostMapping("/fields")
  77. public ActionResult<List<SumTree<TableTreeModel>>> getOneFields(@RequestBody DataSetForm form) throws Exception {
  78. DataSetEntity item = JsonUtil.getJsonToBean(form, DataSetEntity.class);
  79. SumTree<TableTreeModel> printTableFields = dataSetService.getTabFieldStruct(item);
  80. return ActionResult.success(printTableFields.getChildren());
  81. }
  82. @Operation(summary = "获取数据")
  83. @PostMapping("/Data")
  84. public ActionResult getData(@RequestBody DataSetQuery query) {
  85. String moduleId = query.getModuleId();
  86. StpUtil.checkPermissionOr(moduleId, "onlineDev.report");
  87. Map<String, Object> dataMapOrList = dataSetService.getDataList(query);
  88. String id = query.getId();
  89. String convertConfig = query.getConvertConfig();
  90. Map<String, List<Map<String, Object>>> resultData = new HashMap<>();
  91. dataSetSwapUtil.swapData(id, convertConfig, dataMapOrList);
  92. for (String key : dataMapOrList.keySet()) {
  93. if (dataMapOrList.get(key) instanceof List) {
  94. List<Map<String, Object>> list = (List<Map<String, Object>>) dataMapOrList.get(key);
  95. resultData.put(key, list);
  96. }
  97. }
  98. return ActionResult.success(resultData);
  99. }
  100. @Operation(summary = "参数转换")
  101. @PostMapping("/parameterData")
  102. public ActionResult getParameterData(@RequestBody DataSetQuery query) {
  103. String moduleId = query.getModuleId();
  104. StpUtil.checkPermissionOr(moduleId, "onlineDev.report");
  105. Map<String, Object> queryMap = query.getMap() != null ? query.getMap() : new HashMap<>();
  106. List<FieLdsModel> queryList = StringUtil.isNotEmpty(query.getQueryList()) ? JsonUtil.getJsonToList(query.getQueryList(), FieLdsModel.class) : new ArrayList<>();
  107. Map<String, Map<String, Object>> dataMap = new HashMap<>();
  108. Map<String, List<String>> paramMap = ImmutableMap.of(
  109. DataSetConstant.KEY_USER, ImmutableList.of(DataInterfaceVarConst.USER, DataInterfaceVarConst.USERANDSUB, DataInterfaceVarConst.USERANDPROGENY),
  110. DataSetConstant.KEY_ORG, ImmutableList.of(DataInterfaceVarConst.ORG, DataInterfaceVarConst.ORGANDSUB, DataInterfaceVarConst.ORGANIZEANDPROGENY),
  111. DataSetConstant.KEY_POS, ImmutableList.of(DataInterfaceVarConst.POSITIONID, DataInterfaceVarConst.POSITIONANDSUB, DataInterfaceVarConst.POSITIONANDPROGENY)
  112. );
  113. Map<String, String> paramSystemMap = userApi.getSystemFieldValue(new SystemParamModel());
  114. List<DataSetSwapModel> convertList = new ArrayList<>();
  115. for (String key : paramMap.keySet()) {
  116. List<String> list = paramMap.get(key) != null ? paramMap.get(key) : new ArrayList<>();
  117. for (String id : list) {
  118. DataSetSwapModel swapModel = new DataSetSwapModel();
  119. swapModel.setType(key);
  120. swapModel.setField(id + "." + id);
  121. swapModel.setConfig(new DataSetConfig());
  122. convertList.add(swapModel);
  123. Map<String, Object> systemMap = new HashMap<>();
  124. String systemValue = paramSystemMap.get(id);
  125. try {
  126. List<String> value = JsonUtil.getJsonToList(systemValue, String.class);
  127. systemMap.put(id, !value.isEmpty() ? value : "");
  128. } catch (Exception e) {
  129. systemMap.put(id, systemValue);
  130. }
  131. dataMap.put(id, systemMap);
  132. }
  133. }
  134. for (String key : queryMap.keySet()) {
  135. String vModel = key.replace("-", ".");
  136. String[] name = key.split("-");
  137. FieLdsModel fieLdsModel = queryList.stream().filter(t -> Objects.equals(t.getVModel(), vModel)).findFirst().orElse(null);
  138. if (fieLdsModel != null) {
  139. //转换配置
  140. ConfigModel config = fieLdsModel.getConfig();
  141. String type = fieLdsModel.getType();
  142. DataSetConfig dataSetConfig = new DataSetConfig();
  143. dataSetConfig.setDataType(config.getDataType());
  144. dataSetConfig.setOptions(JsonUtil.getJsonToList(config.getOptions(), DataSetOptions.class));
  145. dataSetConfig.setDictionaryType(config.getDictionaryType());
  146. dataSetConfig.setPropsValue(config.getPropsValue());
  147. dataSetConfig.setPropsLabel(config.getPropsLabel());
  148. dataSetConfig.setPropsUrl(config.getPropsUrl());
  149. dataSetConfig.setFormat(config.getFormat());
  150. Object value = queryMap.get(key);
  151. switch (type) {
  152. case JnpfKeyConsts.NUM_INPUT:
  153. type = DataSetConstant.KEY_NUMBER;
  154. break;
  155. case JnpfKeyConsts.COMSELECT:
  156. type = DataSetConstant.KEY_ORG;
  157. if (value instanceof List) {
  158. value = JsonUtil.getObjectToString(value);
  159. }
  160. break;
  161. case JnpfKeyConsts.DEPSELECT:
  162. type = DataSetConstant.KEY_DEP;
  163. if (value instanceof List) {
  164. value = JsonUtil.getObjectToString(value);
  165. }
  166. break;
  167. case JnpfKeyConsts.ROLESELECT:
  168. type = DataSetConstant.KEY_ROLE;
  169. if (value instanceof List) {
  170. value = JsonUtil.getObjectToString(value);
  171. }
  172. break;
  173. case JnpfKeyConsts.POSSELECT:
  174. type = DataSetConstant.KEY_POS;
  175. if (value instanceof List) {
  176. value = JsonUtil.getObjectToString(value);
  177. }
  178. break;
  179. case JnpfKeyConsts.USERSELECT:
  180. type = DataSetConstant.KEY_USERS;
  181. if (value instanceof List) {
  182. value = JsonUtil.getObjectToString(value);
  183. }
  184. break;
  185. case JnpfKeyConsts.GROUPSELECT:
  186. type = DataSetConstant.KEY_GROUP;
  187. if (value instanceof List) {
  188. value = JsonUtil.getObjectToString(value);
  189. }
  190. break;
  191. }
  192. DataSetSwapModel swapModel = new DataSetSwapModel();
  193. swapModel.setType(type);
  194. swapModel.setField(fieLdsModel.getVModel());
  195. swapModel.setConfig(dataSetConfig);
  196. convertList.add(swapModel);
  197. //数据
  198. String model = name[0];
  199. Map<String, Object> map = dataMap.get(model) != null ? dataMap.get(model) : new HashMap<>();
  200. map.put(name[1], value);
  201. dataMap.put(model, map);
  202. }
  203. }
  204. String convertConfig = JsonUtil.getObjectToString(convertList);
  205. Map<String, Object> dataMapOrList = new HashMap<>();
  206. for (String key : dataMap.keySet()) {
  207. List<Map<String, Object>> dataList = new ArrayList<>();
  208. dataList.add(dataMap.get(key));
  209. dataMapOrList.put(key, dataList);
  210. }
  211. dataSetSwapUtil.swapData(RandomUtil.uuId(), convertConfig, dataMapOrList);
  212. return ActionResult.success(dataMap);
  213. }
  214. @Operation(summary = "列表")
  215. @SaCheckPermission(value = {"onlineDev.printDev", "onlineDev.report"}, mode = SaMode.OR)
  216. @GetMapping("/getList")
  217. public ActionResult<List<DataSetInfo>> getList(DataSetPagination pagination) {
  218. List<DataSetEntity> list = dataSetService.getList(pagination);
  219. List<DataSetInfo> dataSetInfoList = new ArrayList<>();
  220. if (ObjectUtil.isNotEmpty(list)) {
  221. for (DataSetEntity item : list) {
  222. DataSetInfo bean = JsonUtil.getJsonToBean(item, DataSetInfo.class);
  223. try {
  224. SumTree<TableTreeModel> printTableFields = dataSetService.getTabFieldStruct(item);
  225. bean.setChildren(printTableFields.getChildren());
  226. dataSetInfoList.add(bean);
  227. } catch (Exception e) {
  228. e.printStackTrace();
  229. }
  230. if (Objects.equals(item.getType(), 3)) {
  231. DataInterfaceEntity info = dataInterfaceService.getInfo(item.getInterfaceId());
  232. if (info != null) {
  233. bean.setTreePropsName(info.getFullName());
  234. }
  235. }
  236. }
  237. }
  238. return ActionResult.success(dataSetInfoList);
  239. }
  240. @Operation(summary = "批量保存")
  241. @Parameters({
  242. @Parameter(name = "form", description = "数据集表单")
  243. })
  244. @SaCheckPermission(value = {"onlineDev.printDev", "onlineDev.report"}, mode = SaMode.OR)
  245. @PostMapping("/save")
  246. public ActionResult saveList(@RequestBody DataForm form) {
  247. List<DataSetInfo> list = form.getList() != null ? form.getList() : new ArrayList<>();
  248. dataSetService.create(JsonUtil.getJsonToList(list, DataSetForm.class), form.getObjectType(), form.getObjectId());
  249. return ActionResult.success(MsgCode.SU002.get());
  250. }
  251. @Operation(summary = "数据预览")
  252. @SaCheckPermission(value = {"onlineDev.printDev", "onlineDev.report"}, mode = SaMode.OR)
  253. @PostMapping("/getPreviewData")
  254. public ActionResult<DataSetViewInfo> getPreviewData(@RequestBody DataSetForm dataSetForm) {
  255. if (Objects.equals(dataSetForm.getType(), 3)) {
  256. DataSetViewInfo info = dataSetService.getPreviewDataInterface(dataSetForm);
  257. return ActionResult.success(info);
  258. }
  259. DataSetViewInfo info = dataSetService.getPreviewData(dataSetForm);
  260. return ActionResult.success(info);
  261. }
  262. }