Prechádzať zdrojové kódy

修复批量导入外呼数据丢失数据的问题

peicj 1 deň pred
rodič
commit
77942c7bc6

+ 25 - 14
ruoyi-admin/src/main/java/com/ruoyi/aicall/controller/ApiController.java

@@ -687,6 +687,20 @@ public class ApiController extends BaseController {
         return callPhone;
         return callPhone;
     }
     }
 
 
+    private void insertCallPhoneBatch(List<CcCallPhone> batchList, List<CcCallPhone> successList) {
+        if (batchList.isEmpty()) {
+            return;
+        }
+        try {
+            ccCallPhoneService.batchInsertCcCallPhone(batchList);
+            successList.addAll(batchList);
+        } catch (Exception e) {
+            log.error("批次插入名单失败,本批{}条,继续处理下一批", batchList.size(), e);
+        } finally {
+            batchList.clear();
+        }
+    }
+
 
 
 
 
     private TableDataInfo getOutboundRecords(ApiCallRecordQueryParams queryParams) {
     private TableDataInfo getOutboundRecords(ApiCallRecordQueryParams queryParams) {
@@ -1905,9 +1919,9 @@ public class ApiController extends BaseController {
             }
             }
         }
         }
 
 
-        // 追加名单
-        int successCount = 0;
-        List<CcCallPhone> callPhoneList = new ArrayList<>();
+        // 追加名单:逐批入库,每批成功后再汇总,批次互不影响
+        List<CcCallPhone> batchList = new ArrayList<>(200);
+        List<CcCallPhone> allCallPhoneList = new ArrayList<>();
         for (CommonPhoneModel commonPhoneModel : commonCallListModel.getPhoneList()) {
         for (CommonPhoneModel commonPhoneModel : commonCallListModel.getPhoneList()) {
             String phoneNum = commonPhoneModel.getPhoneNum();
             String phoneNum = commonPhoneModel.getPhoneNum();
             if (StringUtils.isBlank(phoneNum)) {
             if (StringUtils.isBlank(phoneNum)) {
@@ -1915,19 +1929,16 @@ public class ApiController extends BaseController {
             }
             }
             CcCallPhone callPhone = buildCcCallPhone(ccCallTask, phoneNum, commonPhoneModel.getBizJson());
             CcCallPhone callPhone = buildCcCallPhone(ccCallTask, phoneNum, commonPhoneModel.getBizJson());
             callPhone.setTtsText(commonPhoneModel.getNoticeContent());
             callPhone.setTtsText(commonPhoneModel.getNoticeContent());
-            callPhoneList.add(callPhone);
-            successCount ++;
-            if (callPhoneList.size() >= 200) {
-                ccCallPhoneService.batchInsertCcCallPhone(callPhoneList);
-                callPhoneList = new ArrayList<>();
+            batchList.add(callPhone);
+            if (batchList.size() >= 200) {
+                insertCallPhoneBatch(batchList, allCallPhoneList);
             }
             }
         }
         }
-        if (!callPhoneList.isEmpty()) {
-            ccCallPhoneService.batchInsertCcCallPhone(callPhoneList);
-        }
+        insertCallPhoneBatch(batchList, allCallPhoneList);
+        int successCount = allCallPhoneList.size();
         log.info("成功追加" + successCount + "个名单");
         log.info("成功追加" + successCount + "个名单");
-        if(!CollectionUtils.isEmpty(callPhoneList)){
-            callPhoneList.forEach(callPhoneRecord -> {
+        if(!CollectionUtils.isEmpty(allCallPhoneList)){
+            allCallPhoneList.forEach(callPhoneRecord -> {
                 callPhoneRecord.setBizJson("");
                 callPhoneRecord.setBizJson("");
                 try{
                 try{
                     if(StringUtils.isNotEmpty(callPhoneRecord.getTelephone())){
                     if(StringUtils.isNotEmpty(callPhoneRecord.getTelephone())){
@@ -1949,7 +1960,7 @@ public class ApiController extends BaseController {
                 }
                 }
             });
             });
         }
         }
-        return AjaxResult.success("成功追加" + successCount + "个名单",callPhoneList);
+        return AjaxResult.success("成功追加" + successCount + "个名单", allCallPhoneList);
     }
     }
 
 
     /**
     /**