|
@@ -58,79 +58,98 @@ public class McYdServiceImpl implements McYdService {
|
|
|
@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 = 10;
|
|
|
- DDR_New ddrNew = null;
|
|
|
- do {
|
|
|
- int i1 =1 ;
|
|
|
- boolean flag1 = false;
|
|
|
- while (i1<=5 && !flag1) {
|
|
|
- try {
|
|
|
- ddrNew = ydClient.queryData(YDParam.builder()
|
|
|
- .formUuid(formUuid)
|
|
|
- .pageNumber(i)
|
|
|
- .pageSize(pageSize)
|
|
|
- .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("{}")
|
|
|
- .noExecuteExpression(false)
|
|
|
- .asynchronousExecution(false)
|
|
|
- .build(),YDConf.FORM_OPERATION.multi_update);
|
|
|
-
|
|
|
- i++;
|
|
|
- flag1 = true;
|
|
|
- }catch (Exception e){
|
|
|
- log.error("更新表单实例版本失败:{}, 重试次数:{}",e.getMessage(),i1);
|
|
|
+ try {
|
|
|
+ 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 = 10;
|
|
|
+ DDR_New ddrNew = null;
|
|
|
+ do {
|
|
|
+ int i1 =1 ;
|
|
|
+ boolean flag1 = false;
|
|
|
+ while (i1<=5 && !flag1) {
|
|
|
try {
|
|
|
- Thread.sleep(3000);
|
|
|
- } catch (InterruptedException ex) {
|
|
|
- throw new RuntimeException(ex);
|
|
|
+ ddrNew = ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid(formUuid)
|
|
|
+ .pageNumber(i)
|
|
|
+ .pageSize(pageSize)
|
|
|
+ .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("{}")
|
|
|
+ .noExecuteExpression(false)
|
|
|
+ .asynchronousExecution(false)
|
|
|
+ .build(),YDConf.FORM_OPERATION.multi_update);
|
|
|
+
|
|
|
+ i++;
|
|
|
+ flag1 = true;
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("更新表单实例版本失败:{}, 重试次数:{}",e.getMessage(),i1);
|
|
|
+ try {
|
|
|
+ Thread.sleep(3000);
|
|
|
+ } catch (InterruptedException ex) {
|
|
|
+ throw new RuntimeException(ex);
|
|
|
+ }
|
|
|
+ i1++;
|
|
|
}
|
|
|
- i1++;
|
|
|
}
|
|
|
- }
|
|
|
- if (i1 > 5){
|
|
|
- log.error("更新表单实例版本失败:{}");
|
|
|
- break;
|
|
|
- }
|
|
|
+ if (i1 > 5){
|
|
|
+ throw new RuntimeException("更新表单实例版本失败,超过最大重试次数!");
|
|
|
+ }
|
|
|
|
|
|
- }while (ddrNew.getTotalCount() > ddrNew.getPageNumber() * pageSize);
|
|
|
- }
|
|
|
+ }while (ddrNew.getTotalCount() > ddrNew.getPageNumber() * pageSize);
|
|
|
+ }
|
|
|
|
|
|
- //发送工作通知给当前登陆人
|
|
|
+ //发送工作通知给当前登陆人
|
|
|
+ if (Objects.nonNull(map.get("userId"))){
|
|
|
+ //获取当前时间 精确到秒
|
|
|
+ String time = DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss");
|
|
|
+ sendDdMsg(ddClient.getAccessToken(),ddConf.getAgentId(),map.get("userId").toString(),"表单实例版本已更新 时间:" + time);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ //发送工作通知
|
|
|
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);
|
|
|
+ String time = DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss");//获取当前时间 精确到秒
|
|
|
+ sendDdMsg(ddClient.getAccessToken(),ddConf.getAgentId(),map.get("userId").toString(),"更新表单实例版本异常:" + e.getMessage() + " 时间:" + time);
|
|
|
}
|
|
|
+
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //发送工作通知
|
|
|
+ public void sendDdMsg(String access_token,Number agent_id, String userid_list, String content){
|
|
|
+ if (Objects.nonNull(userid_list)){
|
|
|
+ Map param2 = new HashMap();
|
|
|
+ param2.put("access_token",access_token);
|
|
|
+ Map body3 = new HashMap();
|
|
|
+ body3.put("agent_id",agent_id);
|
|
|
+ body3.put("userid_list",userid_list);
|
|
|
+ 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",content));
|
|
|
+ body3.put("msg",msg);
|
|
|
+ UtilHttp.doPost("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2",null,param2,body3);
|
|
|
}
|
|
|
}
|
|
|
|