|
|
@@ -13,6 +13,7 @@ import com.malk.huagao.service.KdHuaGaoService;
|
|
|
import com.malk.server.aliwork.YDConf;
|
|
|
import com.malk.server.aliwork.YDParam;
|
|
|
import com.malk.server.aliwork.YDSearch;
|
|
|
+import com.malk.server.common.McException;
|
|
|
import com.malk.server.common.McR;
|
|
|
import com.malk.server.dingtalk.DDConf;
|
|
|
import com.malk.server.dingtalk.DDR_New;
|
|
|
@@ -75,11 +76,16 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
|
|
|
userId = "yida_pub_account";
|
|
|
}
|
|
|
|
|
|
- String formInstId = ydClient.operateData(YDParam.builder()
|
|
|
+ String formInstId = retryOperateData(YDParam.builder()
|
|
|
.formUuid("FORM-0BEA655A36724D509A2CF21C4BA38D367YF7")
|
|
|
.formDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mfmhvkey, selectField_mhsjnn2r, dateField_mhsjnn2s, employeeField_mhswy0xy", "成品库存天数看板", "更新中", System.currentTimeMillis(),Arrays.asList(userId))))
|
|
|
.build(), YDConf.FORM_OPERATION.create).toString();
|
|
|
|
|
|
+ /*String formInstId = ydClient.operateData(YDParam.builder()
|
|
|
+ .formUuid("FORM-0BEA655A36724D509A2CF21C4BA38D367YF7")
|
|
|
+ .formDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mfmhvkey, selectField_mhsjnn2r, dateField_mhsjnn2s, employeeField_mhswy0xy", "成品库存天数看板", "更新中", System.currentTimeMillis(),Arrays.asList(userId))))
|
|
|
+ .build(), YDConf.FORM_OPERATION.create).toString();*/
|
|
|
+
|
|
|
// 获取当前日期
|
|
|
LocalDate today = LocalDate.now();
|
|
|
|
|
|
@@ -117,12 +123,16 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
|
|
|
|
|
|
for (List<String> formInstanceIdList : formInstanceIdListList) {
|
|
|
if (!formInstanceIdList.isEmpty()){
|
|
|
- ydClient.operateData(YDParam.builder()
|
|
|
+ retryOperateData(YDParam.builder()
|
|
|
.formUuid("FORM-3B2E5C93D7E6494B9AD920B48A90159F7DZ4")
|
|
|
.formInstanceIdList(formInstanceIdList)
|
|
|
.build(), YDConf.FORM_OPERATION.delete_batch);
|
|
|
+ /*ydClient.operateData(YDParam.builder()
|
|
|
+ .formUuid("FORM-3B2E5C93D7E6494B9AD920B48A90159F7DZ4")
|
|
|
+ .formInstanceIdList(formInstanceIdList)
|
|
|
+ .build(), YDConf.FORM_OPERATION.delete_batch);*/
|
|
|
}
|
|
|
- Thread.sleep(1000);
|
|
|
+// Thread.sleep(1000);
|
|
|
}
|
|
|
log.info("删除序列号主档数据完成:{}年,{}月,{}周",year,month,weekOfMonth);
|
|
|
|
|
|
@@ -207,7 +217,7 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
|
|
|
|
|
|
formData.put("numberField_mfat6egj",1);//统计数值,默认1
|
|
|
|
|
|
- ydClient.operateData(YDParam.builder()
|
|
|
+ retryOperateData(YDParam.builder()
|
|
|
.formUuid("FORM-3B2E5C93D7E6494B9AD920B48A90159F7DZ4")
|
|
|
.formDataJson(JSONObject.toJSONString(formData))
|
|
|
.build(), YDConf.FORM_OPERATION.create);
|
|
|
@@ -234,7 +244,7 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
|
|
|
}
|
|
|
|
|
|
if (!formInstanceIdList.isEmpty()){
|
|
|
- ydClient.operateData(YDParam.builder()
|
|
|
+ retryOperateData(YDParam.builder()
|
|
|
.formUuid("FORM-4CB51E04B8344622BE880C9D573F68CANKWU")
|
|
|
.formInstanceIdList(formInstanceIdList)
|
|
|
.build(), YDConf.FORM_OPERATION.delete_batch);
|
|
|
@@ -252,7 +262,7 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
|
|
|
}
|
|
|
|
|
|
if (!formInstanceIdList2.isEmpty()){
|
|
|
- ydClient.operateData(YDParam.builder()
|
|
|
+ retryOperateData(YDParam.builder()
|
|
|
.formUuid("FORM-5764CC3F6D964FD3A165BD7D4D75999FO8NQ")
|
|
|
.formInstanceIdList(formInstanceIdList2)
|
|
|
.build(), YDConf.FORM_OPERATION.delete_batch);
|
|
|
@@ -283,26 +293,26 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
|
for (Map groupMap : grouprList) {
|
|
|
- ydClient.operateData(YDParam.builder()
|
|
|
+ retryOperateData(YDParam.builder()
|
|
|
.formUuid("FORM-4CB51E04B8344622BE880C9D573F68CANKWU")
|
|
|
.formDataJson(JSONObject.toJSONString(groupMap))
|
|
|
.build(), YDConf.FORM_OPERATION.create);
|
|
|
|
|
|
- ydClient.operateData(YDParam.builder()
|
|
|
+ retryOperateData(YDParam.builder()
|
|
|
.formUuid("FORM-5764CC3F6D964FD3A165BD7D4D75999FO8NQ")
|
|
|
.formDataJson(JSONObject.toJSONString(groupMap))
|
|
|
.build(), YDConf.FORM_OPERATION.create);
|
|
|
}
|
|
|
|
|
|
//更新看板更新记录
|
|
|
- ydClient.operateData(YDParam.builder()
|
|
|
+ retryOperateData(YDParam.builder()
|
|
|
.formInstId(formInstId)
|
|
|
.updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mhsjnn2r, dateField_mhsjnn2t", "已完成", System.currentTimeMillis())))
|
|
|
.build(), YDConf.FORM_OPERATION.update);
|
|
|
|
|
|
}catch (Exception e){
|
|
|
//更新看板更新记录
|
|
|
- ydClient.operateData(YDParam.builder()
|
|
|
+ retryOperateData(YDParam.builder()
|
|
|
.formInstId(formInstId)
|
|
|
.updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mhsjnn2r, dateField_mhsjnn2t, textareaField_mir0zmpo", "异常", System.currentTimeMillis(),e.getMessage())))
|
|
|
.build(), YDConf.FORM_OPERATION.update);
|
|
|
@@ -1212,4 +1222,40 @@ public class KdHuaGaoServiceImpl implements KdHuaGaoService {
|
|
|
|
|
|
return epochMilli;
|
|
|
}
|
|
|
+
|
|
|
+ //自带重试的operateData方法
|
|
|
+ private Object retryOperateData(YDParam param, YDConf.FORM_OPERATION formOperation) {
|
|
|
+ int maxAttempts = 3; // 尝试的最大次数
|
|
|
+ int attempt = 0;
|
|
|
+
|
|
|
+ Object result = null;
|
|
|
+
|
|
|
+ while (attempt < maxAttempts) {
|
|
|
+ try {
|
|
|
+ result = ydClient.operateData(param, formOperation);
|
|
|
+
|
|
|
+ return result;
|
|
|
+ } catch (McException e) {
|
|
|
+ if (e.getMessage().equals("The request has failed due to a temporary failure of the server.")) {
|
|
|
+ attempt++;
|
|
|
+ // 线程睡眠3秒
|
|
|
+ try {
|
|
|
+ Thread.sleep(3000);
|
|
|
+ log.info("尝试第{}次,param:{},FORM_OPERATION:{},异常信息:{}", attempt, JSONObject.toJSONString(param), formOperation,e.getMessage());
|
|
|
+ } catch (InterruptedException ie) {
|
|
|
+ Thread.currentThread().interrupt(); // 重新设置中断状态
|
|
|
+ System.err.println("Sleep interrupted: " + ie.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("操作失败,param:{},FORM_OPERATION:{},异常信息:{}", JSONObject.toJSONString(param), formOperation,e.getMessage());
|
|
|
+
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ throw new RuntimeException("超出最大重试次数,param:"+JSONObject.toJSONString(param)+",FORM_OPERATION:{}"+formOperation);
|
|
|
+ }
|
|
|
+
|
|
|
}
|