XyTodo.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package com.malk.suodisi.entity;
  2. import com.fasterxml.jackson.annotation.JsonAutoDetect;
  3. import com.fasterxml.jackson.annotation.PropertyAccessor;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. import lombok.Data;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.Objects;
  9. @Data
  10. public class XyTodo {
  11. //系统标识(每个系统和环境不同,需要联系管理员获取)
  12. private String sysCode;
  13. //密钥(每个系统和环境不同,需要联系管理员获取)
  14. private String secureCode;
  15. //唯一流水号
  16. private String busNo;
  17. //标题
  18. private String title;
  19. //业务层级类型,例如:"人力资源流程,员工出差申请",层级必须不少于二级。
  20. private String busType;
  21. //当前状况(流程描述,即当前节点名称)
  22. private String currentStatus;
  23. //待办 PC 地址,传输相对路径时需要向管理员提供唯一地址前缀,该地址需能过 OA 单点进行跳转
  24. private String pcUrl;
  25. //待办 APP 地址,传输相对路径时需要向管理员提供唯一地址前缀,该地址需能过 OA 单点进行跳转
  26. private String appUrl;
  27. //操作类型:1、待办;2、已办;3、待阅
  28. //如果新的推送类型一样,本次推送不生效,所以不能通过重复推送的办法去修改例如标题,审批状态等数据,如果需要修改数据,请对接专门的修改接口
  29. private int optType;
  30. //创建人域账号
  31. private String creator;
  32. //创建人姓名
  33. private String creatorName;
  34. //创建时间,样例 : "yyyy-MM-dd HH:mm:ss"
  35. private String createDateTime;
  36. //接收人域账号,字符串形式,支持多人逗号隔开
  37. private String receivers;
  38. //接收人姓名,字符串形式,支持多人逗号隔开
  39. private String receiverNames;
  40. //接收时间,样例 : "yyyy-MM-dd HH:mm:ss"
  41. private String receiveDateTime;
  42. //是否支持批量操作
  43. private boolean isSupportBatch;
  44. //审批时间,新的数据必须大于等于数据库中的旧数据,本次推送才生效
  45. private String approveDateTime;
  46. //关键字字段(该字段为搜索条件,对单据进行定位)
  47. private List<String> keywords;
  48. //流程 id(主要用于统一待办添加关注功能,以及催办功能)
  49. private String flowId;
  50. public Map toMap() throws Exception {
  51. ObjectMapper mapper = new ObjectMapper();
  52. // 禁用属性名自动检测,直接使用字段名
  53. mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
  54. mapper.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE);
  55. return mapper.convertValue(this, Map.class);
  56. }
  57. public XyTodo() {
  58. }
  59. public XyTodo(String sysCode, String secureCode, String busType) {
  60. this.sysCode = sysCode;
  61. this.secureCode = secureCode;
  62. this.busType = busType;
  63. }
  64. public void setCurrentStatus(String currentStatus) {
  65. if (Objects.nonNull(this.currentStatus)){
  66. String[] split = this.currentStatus.split(",");
  67. boolean isExist = false;
  68. for (String s : split) {
  69. if (s.equals(currentStatus)) {
  70. isExist = true;
  71. }
  72. }
  73. if (!isExist) {
  74. this.currentStatus += "," + currentStatus;
  75. }
  76. }else {
  77. this.currentStatus = currentStatus;
  78. }
  79. }
  80. public void setReceiverNames(String receiverNames) {
  81. if (Objects.nonNull(this.receiverNames)){
  82. String[] split = this.receiverNames.split(",");
  83. boolean isExist = false;
  84. for (String s : split) {
  85. if (s.equals(receiverNames)) {
  86. isExist = true;
  87. }
  88. }
  89. if (!isExist) {
  90. this.receiverNames += "," + receiverNames;
  91. }
  92. }else {
  93. this.receiverNames = receiverNames;
  94. }
  95. }
  96. public void setReceivers(String receivers) {
  97. if (Objects.nonNull(this.receivers)){
  98. String[] split = this.receivers.split(",");
  99. boolean isExist = false;
  100. for (String s : split) {
  101. if (s.equals(receivers)) {
  102. isExist = true;
  103. }
  104. }
  105. if (!isExist) {
  106. this.receivers += "," + receivers;
  107. }
  108. }else{
  109. this.receivers = receivers;
  110. }
  111. }
  112. }