RtrAutoTask.java 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package com.malk.taisen.Timers;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.malk.server.aliwork.YDParam;
  4. import com.malk.server.aliwork.YDSearch;
  5. import com.malk.service.aliwork.YDService;
  6. import com.malk.service.dingtalk.DDClient;
  7. import com.malk.service.dingtalk.DDClient_Notice;
  8. import com.malk.taisen.service.RtrServer;
  9. import com.malk.utils.UtilDateTime;
  10. import com.malk.utils.UtilMap;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  14. import org.springframework.context.annotation.Configuration;
  15. import org.springframework.scheduling.annotation.EnableScheduling;
  16. import org.springframework.scheduling.annotation.Scheduled;
  17. import java.time.LocalDate;
  18. import java.time.LocalDateTime;
  19. import java.util.*;
  20. @Slf4j
  21. @Configuration
  22. @EnableScheduling
  23. @ConditionalOnProperty(name = {"enable.scheduling"}, havingValue = "false")
  24. public class RtrAutoTask {
  25. @Autowired
  26. private RtrServer rtrServer;
  27. @Autowired
  28. private YDService ydService;
  29. @Autowired
  30. private DDClient_Notice ddClientNotice;
  31. @Autowired
  32. private DDClient ddClient;
  33. private String url="https://tysonchina.aliwork.com/APP_N9NPHVTQLPBPO8MR6WFG/formDetail/FORM-E8E54176A4D446C182EB6A3C012A0284AGQN?formInstId=";
  34. @Scheduled(cron = "0 30 2,12,18,22 15 * ?")
  35. public void rtrAutoPostSap() {
  36. log.info("财务计提&摊销自动执行任务...");
  37. // 获取当前时间
  38. LocalDate now = LocalDate.now();
  39. // 获取当月第一天 00:00:00
  40. LocalDateTime firstDayOfMonth = now.withDayOfMonth(1).atStartOfDay();
  41. // 获取当月最后一天 23:59:59.999999999
  42. LocalDateTime lastDayOfMonth = now.withDayOfMonth(now.lengthOfMonth())
  43. .atTime(23, 59, 59, 999999999);
  44. // 转换为时间戳(毫秒)
  45. long startTimestamp = UtilDateTime.getLocalDateTimeTimeStamp(firstDayOfMonth);
  46. long endTimestamp = UtilDateTime.getLocalDateTimeTimeStamp(lastDayOfMonth);
  47. YDSearch yidaSearch=new YDSearch("selectField_miwh5y55","待自动过账","状态", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ);
  48. YDSearch yidaSearch2=new YDSearch("dateField_miwh5y85",Arrays.asList(startTimestamp,endTimestamp),"时间", YDSearch.Type.DATE_FIELD,YDSearch.Operator.BETWEEN);
  49. List<Map> list=ydService.queryFormData_all(YDParam.builder().formUuid("FORM-E8E54176A4D446C182EB6A3C012A0284AGQN")
  50. .searchFieldJson(JSONObject.toJSONString(Arrays.asList(yidaSearch,yidaSearch2))).build());
  51. for(Map map:list){
  52. log.info("RTR 财务计提{}",map.get("instanceId"));
  53. rtrServer.RtrInsetSAP0005("YWJT","FORM-E8E54176A4D446C182EB6A3C012A0284AGQN", String.valueOf(map.get("instanceId")));
  54. }
  55. }
  56. @Scheduled(cron = "0 30 9 14 * ?")
  57. public void rtrMsgSend() {
  58. log.info("财务计提&摊销手动推送提醒...");
  59. // 获取当前时间
  60. LocalDate now = LocalDate.now();
  61. // 获取当月第一天 00:00:00
  62. LocalDateTime firstDayOfMonth = now.withDayOfMonth(1).atStartOfDay();
  63. // 获取当月最后一天 23:59:59.999999999
  64. LocalDateTime lastDayOfMonth = now.withDayOfMonth(now.lengthOfMonth())
  65. .atTime(23, 59, 59, 999999999);
  66. // 转换为时间戳(毫秒)
  67. long startTimestamp = UtilDateTime.getLocalDateTimeTimeStamp(firstDayOfMonth);
  68. long endTimestamp = UtilDateTime.getLocalDateTimeTimeStamp(lastDayOfMonth);
  69. YDSearch yidaSearch=new YDSearch("selectField_miwh5y55","待手动过账","状态", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ);
  70. YDSearch yidaSearch2=new YDSearch("dateField_miwh5y85",Arrays.asList(startTimestamp,endTimestamp),"时间", YDSearch.Type.DATE_FIELD,YDSearch.Operator.BETWEEN);
  71. List<Map> list=ydService.queryFormData_all(YDParam.builder().formUuid("FORM-E8E54176A4D446C182EB6A3C012A0284AGQN")
  72. .searchFieldJson(JSONObject.toJSONString(Arrays.asList(yidaSearch,yidaSearch2))).build());
  73. for(Map map:list){
  74. log.info("RTR 财务计提提醒{}",map.get("instanceId"));
  75. List<String> uids= UtilMap.getList(map,"employeeField_mejfoon1_id");
  76. if(uids.size()>0){
  77. sendMsg(uids,"财务计提&摊销凭证手动推送提醒","单据【"+map.get("textField_miwh5y6z")+"】前往推送凭证",url+map.get("instanceId"));
  78. }
  79. }
  80. }
  81. private void sendMsg(List<String> uid,String title,String text,String messageUrl){
  82. Map<String,Object> map=new HashMap<>();
  83. map.put("picUrl","@lALOACZwe2Rk");
  84. map.put("title",title);
  85. map.put("text",text);
  86. map.put("messageUrl",messageUrl);
  87. JSONObject msgMap=new JSONObject().fluentPut("msgtype","link").fluentPut("link",map);
  88. System.out.println(msgMap);
  89. ddClientNotice.sendNotification(ddClient.getAccessToken(),uid,null,false,
  90. msgMap);
  91. }
  92. // 临时
  93. @Scheduled(cron = "0 30 10/2 7 1 ?")
  94. public void test() {
  95. log.info("财务计提&摊销自动执行任务...");
  96. // 获取当前时间
  97. LocalDate now = LocalDate.now();
  98. // 获取当月第一天 00:00:00
  99. LocalDateTime firstDayOfMonth = now.withDayOfMonth(1).atStartOfDay();
  100. // 获取当月最后一天 23:59:59.999999999
  101. LocalDateTime lastDayOfMonth = now.withDayOfMonth(now.lengthOfMonth())
  102. .atTime(23, 59, 59, 999999999);
  103. // 转换为时间戳(毫秒)
  104. long startTimestamp = UtilDateTime.getLocalDateTimeTimeStamp(firstDayOfMonth);
  105. long endTimestamp = UtilDateTime.getLocalDateTimeTimeStamp(lastDayOfMonth);
  106. YDSearch yidaSearch=new YDSearch("selectField_miwh5y55","待自动过账","状态", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ);
  107. YDSearch yidaSearch2=new YDSearch("dateField_miwh5y85",Arrays.asList(startTimestamp,endTimestamp),"时间", YDSearch.Type.DATE_FIELD,YDSearch.Operator.BETWEEN);
  108. List<Map> list=ydService.queryFormData_all(YDParam.builder().formUuid("FORM-E8E54176A4D446C182EB6A3C012A0284AGQN")
  109. .searchFieldJson(JSONObject.toJSONString(Arrays.asList(yidaSearch,yidaSearch2))).build());
  110. for(Map map:list){
  111. log.info("RTR 财务计提{}",map.get("instanceId"));
  112. rtrServer.RtrInsetSAP0005("YWJT","FORM-E8E54176A4D446C182EB6A3C012A0284AGQN", String.valueOf(map.get("instanceId")));
  113. }
  114. }
  115. }