YDConf.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package com.malk.server.aliwork;
  2. import com.alibaba.fastjson.JSON;
  3. import com.malk.utils.UtilMap;
  4. import lombok.Data;
  5. import lombok.extern.slf4j.Slf4j;
  6. import org.springframework.boot.context.properties.ConfigurationProperties;
  7. import org.springframework.stereotype.Component;
  8. import java.util.Arrays;
  9. import java.util.List;
  10. import java.util.Map;
  11. @Data
  12. @Component
  13. @ConfigurationProperties(prefix = "aliwork")
  14. @Slf4j
  15. public class YDConf {
  16. private String appType;
  17. private String systemToken;
  18. /**
  19. * 一个切片数量上限
  20. */
  21. public static final Integer UPPER_LIMIT = 30000;
  22. /**
  23. * 一个分页数量上限
  24. */
  25. public static final Integer PAGE_SIZE_LIMIT = 100;
  26. /**
  27. * 接口访问账号 [不能触发待办与消息通知, 业务规则亦不能]
  28. * -
  29. * 非管理员账号只可以查询, 不检验权限
  30. * 操作数据需要管理员账号, 或宜搭平台
  31. */
  32. public static final String PUB_ACCOUNT = "yida_pub_account";
  33. ////////////////////////// 新版本API //////////////////////////
  34. /**
  35. * 查询表单
  36. */
  37. public enum FORM_QUERY {
  38. retrieve_list, // 全局查询, 不包含子表单
  39. retrieve_list_all, // 全局查询, 包含子表单
  40. multi_retrieve_id,
  41. retrieve_id, // 单个ID查询
  42. retrieve_search_process, // 流程列表
  43. retrieve_search_form, // 表单列表
  44. retrieve_search_process_id, // 流程列表
  45. retrieve_search_form_id, // 表单列表
  46. retrieve_details, // 子表数据[表单]
  47. retrieve_changed, // 变更记录
  48. retrieve_definition, // 表单定义
  49. }
  50. /**
  51. * 表单操作
  52. */
  53. public enum FORM_OPERATION {
  54. create,
  55. delete, // 传入为body, 文档为param
  56. update,
  57. multi_create, // 批量操作
  58. delete_batch, // 批量删除
  59. multi_update, // 批量更新
  60. start, // 发起流程
  61. batchSave, // 批量创建
  62. }
  63. /**
  64. * 关联表单处理
  65. *
  66. * @param formType: "receipt" 跳转为表单【若是流程,则权限体系会失效,但也会显示审批节点】; formType: "process" 为流程
  67. * @apiNote ppExt 接口更新, 传入jsonString或List都可以. 返回数据都是两层json解析, 组件 + _id格式
  68. */
  69. public List<Map> associationForm(String formUuid, String formInstanceId, String title, String subTitle, boolean isProcess) {
  70. return associationForm(appType, formUuid, formInstanceId, title, subTitle, isProcess);
  71. }
  72. public static List<Map> associationForm(String appType, String formUuid, String formInstanceId, String title, String subTitle, boolean isProcess) {
  73. String formType = isProcess ? "process" : "receipt";
  74. return Arrays.asList(UtilMap.map("appType, formUuid, instanceId, title, subTitle, formType", appType, formUuid, formInstanceId, title, subTitle, formType));
  75. }
  76. /**
  77. * 组件格式化取值 [取值] todo 明细表递归, 循环传递入参
  78. */
  79. public static Object getDataByCompId(Map formData, String compId_cur) {
  80. if (compId_cur.contains("associationFormField_")) {
  81. // 服务注册 #{_yida_all_data} 直接组件Id
  82. if (!formData.containsKey(compId_cur)) {
  83. // 接口返回数据, 关联组件ID, 不会返回组件id字段
  84. compId_cur = compId_cur + "_id";
  85. }
  86. return JSON.parse(String.valueOf(formData.get(compId_cur)));
  87. } else if (compId_cur.contains("employeeField_")) {
  88. if (!formData.containsKey(compId_cur + "_id")) {
  89. // 服务注册 #{_yida_all_data} 返回JsonString userid 数组
  90. return JSON.parse(String.valueOf(formData.get(compId_cur)));
  91. } else {
  92. // 成员组件, 接口返回组件id返回为姓名, _id返回是userId
  93. return formData.get(compId_cur + "_id");
  94. }
  95. }
  96. return formData.get(compId_cur);
  97. }
  98. ////////////////////////// 老版本API //////////////////////////
  99. /**
  100. * 表单接口适用于流程: 查询和更新以及删除
  101. */
  102. private static String formatApiForm(String uri) {
  103. return "/yida_vpc/form/" + uri + ".json";
  104. }
  105. private static String formatApiProcess(String uri) {
  106. return "/yida_vpc/process/" + uri + ".json";
  107. }
  108. /**
  109. * 接口地址: 表单
  110. */
  111. public static final String API_FORM_CREATE = formatApiForm("saveFormData");
  112. public static final String API_FORM_DELETE = formatApiForm("deleteFormData");
  113. public static final String API_FORM_UPDATE = formatApiForm("updateFormData");
  114. public static final String API_FORM_DETAIL = formatApiForm("getFormDataById");
  115. public static final String API_FORM_QUERY_ID = formatApiForm("searchFormDataIds");
  116. public static final String API_FORM_QUERY_DATA = formatApiForm("searchFormDatas");
  117. public static final String API_FORM_DEFINITION = "/yida_vpc/formDesign/getFormComponentDefinationList.json";
  118. /**
  119. * 接口地址: 流程
  120. */
  121. public static final String API_PROCESS_CREATE = formatApiProcess("startInstance");
  122. public static final String API_PROCESS_DELETE = formatApiProcess("deleteInstance");
  123. public static final String API_PROCESS_UPDATE = formatApiProcess("updateInstance");
  124. public static final String API_PROCESS_DETAIL = formatApiProcess("getInstanceById");
  125. public static final String API_PROCESS_BATCH_DETAIL = formatApiProcess("getInstancesByIds");
  126. public static final String API_PROCESS_QUERY_ID = formatApiProcess("getInstanceIds");
  127. public static final String API_PROCESS_QUERY_DATA = formatApiProcess("getInstances");
  128. /**
  129. * 其它接口
  130. */
  131. public static final String API_OPEN_URL = "/yida_vpc/file/getOpenUrl.json";
  132. }