YDParam.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  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点, 结束日期j建议加1
  42. private String modifiedFromTimeGMT;
  43. // 修改结束时间, ppExt: 需要同时传递开始和就结束才会生效; 其次日期格式yyyy-MM-dd, 但默认是0点, 结束日期j建议加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. private String instanceStatus;
  59. private String approvedResult;
  60. /**
  61. * 格式化赋值: 内部使用
  62. */
  63. public void setDynamicOrder(String dynamicOrder) {
  64. this.dynamicOrder = dynamicOrder;
  65. }
  66. public void setDynamicOrder(String rule, String... compIds) {
  67. for (String compId : compIds) {
  68. JSONObject orderJson = new JSONObject();
  69. orderJson.put(compId, rule);
  70. this.dynamicOrder = orderJson.toJSONString();
  71. }
  72. }
  73. /**
  74. * 自定义参数
  75. */
  76. private String compIdSerial; // 流水号排序字段
  77. /**
  78. * 钉钉新版本接口
  79. */
  80. @Builder.Default
  81. private Integer pageNumber = 1;
  82. private String formInstanceId;
  83. // formInstanceId 为新版本实例id字段
  84. public String getFormInstanceId() {
  85. if (StringUtils.isBlank(formInstanceId)) {
  86. return formInstId;
  87. }
  88. return formInstanceId;
  89. }
  90. /// FIXME: 表单/流程全局查询
  91. private String searchCondition;
  92. // 全局条件查询列表数据 FIXME: 若是查询组件也传searchFieldJson格式
  93. public String getSearchCondition() {
  94. if (StringUtils.isBlank(searchCondition)) {
  95. return searchFieldJson;
  96. }
  97. return searchCondition;
  98. }
  99. // 查询列表可查询多个指定实例ID | 批量删除 [上限50] | 批量更新
  100. private List<String> formInstanceIdList;
  101. // 是否需要宜搭表单组件格式的实例数据
  102. private boolean needFormInstanceValue = false;
  103. // 查询明细数据列表, 默认仅返回前50
  104. private String tableFieldId;
  105. // 附件转临时免登地址
  106. private String fileUrl;
  107. // 临时地址失效时间, 默认10分钟, 最大值24小时
  108. @Builder.Default
  109. private Integer timeout = 600000;
  110. /**
  111. * 批量删除
  112. */
  113. // 是否需要宜搭服务端异步执行该任务
  114. @Builder.Default
  115. boolean asynchronousExecution = false;
  116. // 是否需要触发表单绑定的校验规则、关联业务规则和第三方服务回调
  117. @Builder.Default
  118. boolean executeExpression = false;
  119. // 是否不触发表单绑定的校验规则、关联业务规则和第三方服务回调。
  120. @Builder.Default
  121. boolean noExecuteExpression = true;
  122. // 是否忽略空值。
  123. @Builder.Default
  124. boolean ignoreEmpty = true;
  125. // 是否使用最新的表单schema版本。
  126. @Builder.Default
  127. boolean useLatestFormSchemaVersion = true;
  128. // 使用最新的表单版本进行更新。
  129. @Builder.Default
  130. boolean useLatestVersion = false;
  131. /**
  132. * 分组校验
  133. *
  134. * @RequestBody @Validated(YDParam.Create.class) YDParam ydParam
  135. */
  136. public interface Create extends Default {
  137. }
  138. public interface Create_Process extends Default {
  139. }
  140. public interface Retrieve_Condition extends Default {
  141. }
  142. public interface Retrieve_Condition_Update extends Default {
  143. }
  144. public interface Retrieve_FormInstId extends Default {
  145. }
  146. public interface Retrieve_ProcessInstanceId extends Default {
  147. }
  148. public interface Retrieve_ProcessInstanceIds extends Default {
  149. }
  150. public interface Update extends Default {
  151. }
  152. public interface Update_ProcessInstanceId extends Default {
  153. }
  154. public interface Delete extends Default {
  155. }
  156. public interface Delete_ProcessInstanceId extends Default {
  157. }
  158. public interface Definition extends Default {
  159. }
  160. }