McYdServiceImpl.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package com.malk.mc.service.impl;
  2. import cn.hutool.core.date.DateUtil;
  3. import com.malk.mc.service.McYdService;
  4. import com.malk.server.aliwork.YDConf;
  5. import com.malk.server.aliwork.YDParam;
  6. import com.malk.server.common.McR;
  7. import com.malk.server.dingtalk.DDConf;
  8. import com.malk.server.dingtalk.DDR_New;
  9. import com.malk.service.aliwork.YDClient;
  10. import com.malk.service.dingtalk.DDClient;
  11. import com.malk.utils.UtilHttp;
  12. import com.malk.utils.UtilMap;
  13. import org.apache.logging.log4j.util.Strings;
  14. import org.slf4j.MDC;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.scheduling.annotation.Async;
  17. import org.springframework.stereotype.Service;
  18. import java.util.*;
  19. @Service
  20. public class McYdServiceImpl implements McYdService {
  21. @Autowired
  22. private YDClient ydClient;
  23. @Autowired
  24. private DDClient ddClient;
  25. @Autowired
  26. private DDConf ddConf;
  27. @Override
  28. @Async
  29. public void updateFormDataVersion(Map map) {
  30. String pid = Objects.nonNull(map.get("pid")) ? map.get("pid").toString() : "";
  31. String formInstId = Objects.nonNull(map.get("formInstId")) ? map.get("formInstId").toString() : "";
  32. String formUuid = Objects.nonNull(map.get("formUuid")) ? map.get("formUuid").toString() : "";
  33. if (Strings.isNotBlank(pid)){
  34. MDC.put("MDC_KEY_PID",pid);
  35. if (Strings.isNotBlank(formInstId) && Strings.isBlank(formUuid)){
  36. ydClient.operateData(YDParam.builder()
  37. .formInstId(formInstId)
  38. .useLatestVersion(true)
  39. .updateFormDataJson("{}").build(), YDConf.FORM_OPERATION.update);
  40. }else if (Strings.isBlank(formInstId) && Strings.isNotBlank(formUuid)){
  41. int i = 1;
  42. int pageSize = 100;
  43. DDR_New ddrNew;
  44. do {
  45. ddrNew = ydClient.queryData(YDParam.builder()
  46. .formUuid(formUuid)
  47. .pageNumber(i)
  48. .pageSize(100)
  49. .build(), YDConf.FORM_QUERY.retrieve_search_form_id);
  50. List<String> formInstIdList = (List<String>) ddrNew.getData();
  51. //noExecuteExpression字段不传或传false 传true会导致实例版本不更新或滞后更新
  52. ydClient.operateData(YDParam.builder()
  53. .formInstanceIdList(formInstIdList)
  54. .formUuid(formUuid)
  55. .useLatestFormSchemaVersion(true)
  56. .updateFormDataJson("{}")
  57. .build(),YDConf.FORM_OPERATION.multi_update);
  58. }while (ddrNew.getTotalCount() > ddrNew.getPageNumber() * pageSize);
  59. }
  60. //发送工作通知给当前登陆人
  61. if (Objects.nonNull(map.get("userId"))){
  62. String userId = map.get("userId").toString();
  63. Map param2 = new HashMap();
  64. param2.put("access_token",ddClient.getAccessToken());
  65. Map body3 = new HashMap();
  66. body3.put("agent_id",ddConf.getAgentId());
  67. body3.put("userid_list",userId);
  68. Map msg = new HashMap();
  69. msg.put("msgtype","text");
  70. //获取当前时间 精确到秒
  71. String time = DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss");
  72. msg.put("text", UtilMap.map("content","表单实例版本已更新 时间:" + time));
  73. body3.put("msg",msg);
  74. UtilHttp.doPost("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2",null,param2,body3);
  75. }
  76. }
  77. }
  78. }