Ver código fonte

mc批量更新指定数量的实例-异步处理

wzy 1 mês atrás
pai
commit
1055386afa

+ 2 - 1
mjava-mc/src/main/java/com/malk/mc/controller/McYdController.java

@@ -129,7 +129,8 @@ public class McYdController {
      */
     @PostMapping("/batchUpdateSpecifiedQuantityData")
     public McR batchUpdateSpecifiedQuantityData(@RequestBody Map map){
-        return mcYdService.batchUpdateSpecifiedQuantityData(map);
+        mcYdService.batchUpdateSpecifiedQuantityData(map);
+        return McR.success();
     }
 
     /**

+ 2 - 1
mjava-mc/src/main/java/com/malk/mc/service/McYdService.java

@@ -1,6 +1,7 @@
 package com.malk.mc.service;
 
 import com.malk.server.common.McR;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.scheduling.annotation.Async;
 
 import java.util.Map;
@@ -23,5 +24,5 @@ public interface McYdService {
 
     McR allocateTransfer(Map map);
 
-    McR batchUpdateSpecifiedQuantityData(Map map);
+    void batchUpdateSpecifiedQuantityData(Map map);
 }

+ 53 - 46
mjava-mc/src/main/java/com/malk/mc/service/impl/McYdServiceImpl.java

@@ -597,70 +597,77 @@ public class McYdServiceImpl implements McYdService {
         return McR.success();
     }
 
+    @Async
     @Override
-    public McR batchUpdateSpecifiedQuantityData(Map map) {
-        String formInstId = UtilMap.getString(map, "formInstId");//当前表实例id
+    public void batchUpdateSpecifiedQuantityData(Map map) {
+        try {
+            String pid = UtilMap.getString(map, "pid");
+            MDC.put("MDC_KEY_PID",pid);
+
+            String formInstId = UtilMap.getString(map, "formInstId");//当前表实例id
 
-        //查询当前表formData
-        Map formData = ydClient.queryData(YDParam.builder()
-                .formInstanceId(formInstId)
-                .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+            //查询当前表formData
+            Map formData = ydClient.queryData(YDParam.builder()
+                    .formInstanceId(formInstId)
+                    .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
 
-        //目标表筛选字段唯一标识
-        String[] searchFields = UtilMap.getString(map, "searchFieldStr").split(",");
-        //目标表筛选字段值
-        String[] searchFieldValues = UtilMap.getString(map, "searchFieldValueStr").split(",");
+            //目标表筛选字段唯一标识
+            String[] searchFields = UtilMap.getString(map, "searchFieldStr").split(",");
+            //目标表筛选字段值
+            String[] searchFieldValues = UtilMap.getString(map, "searchFieldValueStr").split(",");
 
-        Map searchCondition = new HashMap();
+            Map searchCondition = new HashMap();
 
-        if (searchFields.length == searchFieldValues.length){
-            for (int i = 0; i < searchFields.length; i++) {
-                searchCondition.put(searchFields[i],searchFieldValues[i]);
+            if (searchFields.length == searchFieldValues.length){
+                for (int i = 0; i < searchFields.length; i++) {
+                    searchCondition.put(searchFields[i],searchFieldValues[i]);
+                }
+            }else {
+                log.info("筛选字段和筛选值数量不一致");
             }
-        }else {
-            return McR.errorUnknown("筛选字段和筛选值数量不一致");
-        }
 
-        int quantity = UtilMap.getInt(map, "quantity");//指定更新数量
-        if (quantity > 100){
-            return McR.errorUnknown("更新数量不能大于100");
-        }
+            int quantity = UtilMap.getInt(map, "quantity");//指定更新数量
+            if (quantity > 100){
+                log.info("更新数量不能大于100");
+            }
 
-        String formUuid = UtilMap.getString(map, "formUuid");//目标表uuid
+            String formUuid = UtilMap.getString(map, "formUuid");//目标表uuid
 
-        List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
-                .searchCondition(JSONObject.toJSONString(searchCondition))
-                .formUuid(formUuid)
-                .pageSize(quantity)
-                .build(), YDConf.FORM_QUERY.retrieve_list).getData();
+            List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
+                    .searchCondition(JSONObject.toJSONString(searchCondition))
+                    .formUuid(formUuid)
+                    .pageSize(quantity)
+                    .build(), YDConf.FORM_QUERY.retrieve_list).getData();
 
 
 
-        //目标表更新字段唯一标识
-        String[] fieldStrs = UtilMap.getString(map, "fieldStr").split(",");
-        //当前表字段唯一标识
-        String[] currentFieldStrs = UtilMap.getString(map, "currentFieldStrs").split(",");
+            //目标表更新字段唯一标识
+            String[] fieldStrs = UtilMap.getString(map, "fieldStr").split(",");
+            //当前表字段唯一标识
+            String[] currentFieldStrs = UtilMap.getString(map, "currentFieldStrs").split(",");
 
-        Map updateFormData = new HashMap();
+            Map updateFormData = new HashMap();
 
-        if (fieldStrs.length == currentFieldStrs.length){
-            for (int i = 0; i < fieldStrs.length; i++) {
-                updateFormData.put(fieldStrs[i],YDConf.getDataByCompId(formData,currentFieldStrs[i]));
+            if (fieldStrs.length == currentFieldStrs.length){
+                for (int i = 0; i < fieldStrs.length; i++) {
+                    updateFormData.put(fieldStrs[i],YDConf.getDataByCompId(formData,currentFieldStrs[i]));
+                }
+            }else {
+                log.info("更新字段和当前表字段数量不一致");
             }
-        }else {
-            return McR.errorUnknown("更新字段和当前表字段数量不一致");
-        }
 
-        for (Map datum : data) {
-            String formInstanceId = UtilMap.getString(datum, "formInstanceId");
+            for (Map datum : data) {
+                String formInstanceId = UtilMap.getString(datum, "formInstanceId");
 
-            ydClient.operateData(YDParam.builder()
-                    .formInstanceId(formInstanceId)
-                    .updateFormDataJson(JSONObject.toJSONString(updateFormData))
-                    .build(), YDConf.FORM_OPERATION.update);
+                ydClient.operateData(YDParam.builder()
+                        .formInstanceId(formInstanceId)
+                        .updateFormDataJson(JSONObject.toJSONString(updateFormData))
+                        .build(), YDConf.FORM_OPERATION.update);
+            }
+            log.info("批量更新成功");
+        }catch (Exception e){
+            log.info("更新数据失败:{}",e.getMessage());
         }
-
-        return McR.success();
     }