YDParam.java 6.4 KB

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