123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package com.malk.mc.service.impl;
- import cn.hutool.core.date.DateUtil;
- import com.malk.mc.service.McYdService;
- import com.malk.server.aliwork.YDConf;
- import com.malk.server.aliwork.YDParam;
- import com.malk.server.common.McR;
- import com.malk.server.dingtalk.DDConf;
- import com.malk.server.dingtalk.DDR_New;
- import com.malk.service.aliwork.YDClient;
- import com.malk.service.dingtalk.DDClient;
- import com.malk.utils.UtilHttp;
- import com.malk.utils.UtilMap;
- import org.apache.logging.log4j.util.Strings;
- import org.slf4j.MDC;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Async;
- import org.springframework.stereotype.Service;
- import java.util.*;
- @Service
- public class McYdServiceImpl implements McYdService {
- @Autowired
- private YDClient ydClient;
- @Autowired
- private DDClient ddClient;
- @Autowired
- private DDConf ddConf;
- @Override
- @Async
- public void updateFormDataVersion(Map map) {
- String pid = Objects.nonNull(map.get("pid")) ? map.get("pid").toString() : "";
- String formInstId = Objects.nonNull(map.get("formInstId")) ? map.get("formInstId").toString() : "";
- String formUuid = Objects.nonNull(map.get("formUuid")) ? map.get("formUuid").toString() : "";
- if (Strings.isNotBlank(pid)){
- MDC.put("MDC_KEY_PID",pid);
- if (Strings.isNotBlank(formInstId) && Strings.isBlank(formUuid)){
- ydClient.operateData(YDParam.builder()
- .formInstId(formInstId)
- .useLatestVersion(true)
- .updateFormDataJson("{}").build(), YDConf.FORM_OPERATION.update);
- }else if (Strings.isBlank(formInstId) && Strings.isNotBlank(formUuid)){
- int i = 1;
- int pageSize = 100;
- DDR_New ddrNew;
- do {
- ddrNew = ydClient.queryData(YDParam.builder()
- .formUuid(formUuid)
- .pageNumber(i)
- .pageSize(100)
- .build(), YDConf.FORM_QUERY.retrieve_search_form_id);
- List<String> formInstIdList = (List<String>) ddrNew.getData();
- //noExecuteExpression字段不传或传false 传true会导致实例版本不更新或滞后更新
- ydClient.operateData(YDParam.builder()
- .formInstanceIdList(formInstIdList)
- .formUuid(formUuid)
- .useLatestFormSchemaVersion(true)
- .updateFormDataJson("{}")
- .build(),YDConf.FORM_OPERATION.multi_update);
- }while (ddrNew.getTotalCount() > ddrNew.getPageNumber() * pageSize);
- }
- //发送工作通知给当前登陆人
- if (Objects.nonNull(map.get("userId"))){
- String userId = map.get("userId").toString();
- Map param2 = new HashMap();
- param2.put("access_token",ddClient.getAccessToken());
- Map body3 = new HashMap();
- body3.put("agent_id",ddConf.getAgentId());
- body3.put("userid_list",userId);
- Map msg = new HashMap();
- msg.put("msgtype","text");
- //获取当前时间 精确到秒
- String time = DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss");
- msg.put("text", UtilMap.map("content","表单实例版本已更新 时间:" + time));
- body3.put("msg",msg);
- UtilHttp.doPost("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2",null,param2,body3);
- }
- }
- }
- }
|