YDParam.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. package com.malk.server.aliwork;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.malk.base.BaseDto;
  4. import lombok.AllArgsConstructor;
  5. import lombok.Builder;
  6. import lombok.Data;
  7. import lombok.NoArgsConstructor;
  8. import org.apache.commons.lang3.StringUtils;
  9. import javax.validation.constraints.NotNull;
  10. import javax.validation.constraints.Null;
  11. import javax.validation.groups.Default;
  12. import java.util.List;
  13. /**
  14. * 表单接口适用于流程: 查询和更新以及删除 [参数校验参考CatchException]
  15. */
  16. @Data
  17. @Builder
  18. @AllArgsConstructor
  19. @NoArgsConstructor
  20. public class YDParam extends BaseDto {
  21. /**
  22. * 接口参数
  23. */
  24. @NotNull(message = "应用编码不能为空")
  25. private String appType;
  26. @Null(message = "应用秘钥无需传递")
  27. private String systemToken;
  28. // 默认宜搭平台, 有操作数据权限
  29. @Builder.Default
  30. private String userId = YDConf.PUB_ACCOUNT;
  31. @NotNull(message = "表单编码不能为空", groups = {Create.class, Retrieve_Condition.class, Definition.class, Create_Process.class, Retrieve_Condition_Update.class})
  32. private String formUuid;
  33. /// FIXME: 表单/流程组件查询
  34. private String searchFieldJson;
  35. @Builder.Default
  36. private Integer currentPage = 1;
  37. @Builder.Default
  38. private Integer pageSize = YDConf.PAGE_SIZE_LIMIT;
  39. // 流程暂不支持排序
  40. private String dynamicOrder;
  41. // 修改开始时间, ppExt: 需要同时传递开始和就结束才会生效; 其次日期格式yyyy-MM-dd, 但默认是0点, 结束日期建议加1
  42. private String modifiedFromTimeGMT;
  43. // 修改结束时间, ppExt: 需要同时传递开始和就结束才会生效; 其次日期格式yyyy-MM-dd, 但默认是0点, 结束日期建议加1
  44. private String modifiedToTimeGMT;
  45. @NotNull(message = "实例ID不能为空", groups = {Update.class, Delete.class, Retrieve_FormInstId.class})
  46. private String formInstId;
  47. @NotNull(message = "更新内容不能为空", groups = {Update.class, Update_ProcessInstanceId.class, Retrieve_Condition_Update.class})
  48. private String updateFormDataJson;
  49. @NotNull(message = "流程编码不能为空", groups = Create_Process.class)
  50. private String processCode;
  51. // todo: 成员组件未匹配, 接口可以新增 [系统会忽略], 导入会提示无法匹配
  52. @NotNull(message = "新增内容不能为空", groups = {Create.class, Create_Process.class})
  53. public String formDataJson;
  54. @NotNull(message = "实例ID不能为空", groups = {Update_ProcessInstanceId.class, Delete_ProcessInstanceId.class, Retrieve_ProcessInstanceId.class})
  55. private String processInstanceId;
  56. @NotNull(message = "实例ID不能为空", groups = Retrieve_ProcessInstanceIds.class)
  57. private String processInstanceIds;
  58. /// RUNNING / NEW / PAUSED / TERMINATED / COMPLETED / ERROR / CANCELED
  59. private String instanceStatus;
  60. /// disagree / agree
  61. private String approvedResult;
  62. /**
  63. * 格式化赋值: 内部使用
  64. */
  65. public void setDynamicOrder(String dynamicOrder) {
  66. this.dynamicOrder = dynamicOrder;
  67. }
  68. public void setDynamicOrder(String rule, String... compIds) {
  69. for (String compId : compIds) {
  70. JSONObject orderJson = new JSONObject();
  71. orderJson.put(compId, rule);
  72. this.dynamicOrder = orderJson.toJSONString();
  73. }
  74. }
  75. /// 查询创建时间, 钉钉版本接口 [旧版本接口不支持]
  76. private String createFromTimeGMT;
  77. private String createToTimeGMT;
  78. /**
  79. * 自定义参数
  80. */
  81. private String compIdSerial; // 流水号排序字段
  82. /**
  83. * 钉钉新版本接口
  84. */
  85. @Builder.Default
  86. private Integer pageNumber = 1;
  87. private String formInstanceId;
  88. // formInstanceId 为新版本实例id字段
  89. public String getFormInstanceId() {
  90. if (StringUtils.isBlank(formInstanceId)) {
  91. return formInstId;
  92. }
  93. return formInstanceId;
  94. }
  95. /// FIXME: 表单/流程全局查询
  96. private String searchCondition;
  97. // 全局条件查询列表数据 FIXME: 若是查询组件也传searchFieldJson格式
  98. public String getSearchCondition() {
  99. if (StringUtils.isBlank(searchCondition)) {
  100. return searchFieldJson;
  101. }
  102. return searchCondition;
  103. }
  104. // 查询列表可查询多个指定实例ID | 批量删除 [上限50] | 批量更新
  105. private List<String> formInstanceIdList;
  106. // 是否需要宜搭表单组件格式的实例数据
  107. private boolean needFormInstanceValue = false;
  108. // 查询明细数据列表, 默认仅返回前50
  109. private String tableFieldId;
  110. // 附件转临时免登地址
  111. private String fileUrl;
  112. // 临时地址失效时间, 默认10分钟, 最大值24小时
  113. @Builder.Default
  114. private Integer timeout = 600000;
  115. /**
  116. * 批量删除
  117. */
  118. // 是否需要宜搭服务端异步执行该任务
  119. @Builder.Default
  120. private boolean asynchronousExecution = false;
  121. // 是否需要触发表单绑定的校验规则、关联业务规则和第三方服务回调
  122. @Builder.Default
  123. private boolean executeExpression = false;
  124. // 是否不触发表单绑定的校验规则、关联业务规则和第三方服务回调。
  125. @Builder.Default
  126. private boolean noExecuteExpression = true;
  127. // 是否忽略空值。
  128. @Builder.Default
  129. private boolean ignoreEmpty = true;
  130. // 是否使用最新的表单schema版本。
  131. @Builder.Default
  132. private boolean useLatestFormSchemaVersion = true;
  133. // 使用最新的表单版本进行更新。
  134. @Builder.Default
  135. private boolean useLatestVersion = false;
  136. /**
  137. * 评论
  138. */
  139. private String atUserId;
  140. private String content;
  141. /**
  142. * 分组校验
  143. *
  144. * @RequestBody @Validated(YDParam.Create.class) YDParam ydParam
  145. */
  146. public interface Create extends Default {
  147. }
  148. public interface Create_Process extends Default {
  149. }
  150. public interface Retrieve_Condition extends Default {
  151. }
  152. public interface Retrieve_Condition_Update extends Default {
  153. }
  154. public interface Retrieve_FormInstId extends Default {
  155. }
  156. public interface Retrieve_ProcessInstanceId extends Default {
  157. }
  158. public interface Retrieve_ProcessInstanceIds extends Default {
  159. }
  160. public interface Update extends Default {
  161. }
  162. public interface Update_ProcessInstanceId extends Default {
  163. }
  164. public interface Delete extends Default {
  165. }
  166. public interface Delete_ProcessInstanceId extends Default {
  167. }
  168. public interface Definition extends Default {
  169. }
  170. }