瀏覽代碼

ly 防抖

ly 1 年之前
父節點
當前提交
fc80f526f7

+ 141 - 127
master/src/main/java/com/ruoyi/project/training/elearn/controller/TElQuController.java

@@ -619,151 +619,165 @@ public class TElQuController extends BaseController {
         Workbook workbook = ExcelUtils.getWorkBook(file);
         Sheet sheet = workbook.getSheetAt(0);
         int rowNum = sheet.getPhysicalNumberOfRows();
+        int failNumber = 0;
+        int successNumber = 0;
+        //报错行数统计
+        List<Integer> failRow = new ArrayList<Integer>();
         for (int i = 1; i < rowNum; i++) {
-            logger.info("读取行数:" + i);
-            Row row = sheet.getRow(i);
-            int cellNum = row.getLastCellNum();
-            TElQu qu = new TElQu();
-            List<TElQuAnswer> answerList = new ArrayList<>();
-            String[] options = null;
-            for (int j = 0; j < cellNum; j++) {
-                Cell cell = row.getCell(j);
-                String cellValue = ExcelUtils.getCellValue(cell).trim();
-                logger.info("cellValue:" + cellValue);
-                if (j == 0) {
-                    //题型
-                    if ("单选题".equals(cellValue)) {
-                        qu.setQuType(1l);
-                    } else if ("多选题".equals(cellValue)) {
-                        qu.setQuType(2l);
-                    } else if ("判断题".equals(cellValue)) {
-                        qu.setQuType(3l);
-                    } else {
-                        break;
-                    }
-                } else if (j == 1) {
-                    qu.setContent(cellValue);
-                } else if (j == 2) {
-                    if (qu.getQuType() != 3) {
-                        options = cellValue.split(";");
-                    }
-                } else if (j == 3) {
-                    if (qu.getQuType() != 3) { //选择
-                        if (options.length == 4) { //ABCD
-                            TElQuAnswer answerA = new TElQuAnswer();
-                            answerA.setIsRight(0l);
-                            answerA.setContent(options[0]);
-                            TElQuAnswer answerB = new TElQuAnswer();
-                            answerB.setIsRight(0l);
-                            answerB.setContent(options[1]);
-                            TElQuAnswer answerC = new TElQuAnswer();
-                            answerC.setIsRight(0l);
-                            answerC.setContent(options[2]);
-                            TElQuAnswer answerD = new TElQuAnswer();
-                            answerD.setIsRight(0l);
-                            answerD.setContent(options[3]);
-                            if (cellValue.contains("A")) {
-                                answerA.setIsRight(1l);
-                            }
-                            if (cellValue.contains("B")) {
-                                answerB.setIsRight(1l);
-                            }
-                            if (cellValue.contains("C")) {
-                                answerC.setIsRight(1l);
-                            }
-                            if (cellValue.contains("D")) {
-                                answerD.setIsRight(1l);
-                            }
-                            answerList.add(answerA);
-                            answerList.add(answerB);
-                            answerList.add(answerC);
-                            answerList.add(answerD);
-                        }else if (options.length == 5) { //ABCDE
-                            TElQuAnswer answerA = new TElQuAnswer();
-                            answerA.setIsRight(0l);
-                            answerA.setContent(options[0]);
-                            TElQuAnswer answerB = new TElQuAnswer();
-                            answerB.setIsRight(0l);
-                            answerB.setContent(options[1]);
-                            TElQuAnswer answerC = new TElQuAnswer();
-                            answerC.setIsRight(0l);
-                            answerC.setContent(options[2]);
-                            TElQuAnswer answerD = new TElQuAnswer();
-                            answerD.setIsRight(0l);
-                            answerD.setContent(options[3]);
-                            TElQuAnswer answerE = new TElQuAnswer();
-                            answerE.setIsRight(0l);
-                            answerE.setContent(options[4]);
-                            if (cellValue.contains("A")) {
-                                answerA.setIsRight(1l);
-                            }
-                            if (cellValue.contains("B")) {
-                                answerB.setIsRight(1l);
-                            }
-                            if (cellValue.contains("C")) {
-                                answerC.setIsRight(1l);
-                            }
-                            if (cellValue.contains("D")) {
-                                answerD.setIsRight(1l);
-                            }if (cellValue.contains("E")) {
-                                answerE.setIsRight(1l);
+            try {
+                logger.info("读取行数:" + i);
+                Row row = sheet.getRow(i);
+                int cellNum = row.getLastCellNum();
+                TElQu qu = new TElQu();
+                List<TElQuAnswer> answerList = new ArrayList<>();
+                String[] options = null;
+                for (int j = 0; j < cellNum; j++) {
+                    Cell cell = row.getCell(j);
+                    String cellValue = ExcelUtils.getCellValue(cell).trim();
+                    logger.info("cellValue:" + cellValue);
+                    if (j == 0) {
+                        //题型
+                        if ("单选题".equals(cellValue)) {
+                            qu.setQuType(1l);
+                        } else if ("多选题".equals(cellValue)) {
+                            qu.setQuType(2l);
+                        } else if ("判断题".equals(cellValue)) {
+                            qu.setQuType(3l);
+                        } else {
+                            break;
+                        }
+                    } else if (j == 1) {
+                        qu.setContent(cellValue);
+                    } else if (j == 2) {
+                        if (qu.getQuType() != 3) {
+                            options = cellValue.split(";");
+                        }
+                    } else if (j == 3) {
+                        if (qu.getQuType() != 3) { //选择
+                            if (options.length == 4) { //ABCD
+                                TElQuAnswer answerA = new TElQuAnswer();
+                                answerA.setIsRight(0l);
+                                answerA.setContent(options[0]);
+                                TElQuAnswer answerB = new TElQuAnswer();
+                                answerB.setIsRight(0l);
+                                answerB.setContent(options[1]);
+                                TElQuAnswer answerC = new TElQuAnswer();
+                                answerC.setIsRight(0l);
+                                answerC.setContent(options[2]);
+                                TElQuAnswer answerD = new TElQuAnswer();
+                                answerD.setIsRight(0l);
+                                answerD.setContent(options[3]);
+                                if (cellValue.contains("A")) {
+                                    answerA.setIsRight(1l);
+                                }
+                                if (cellValue.contains("B")) {
+                                    answerB.setIsRight(1l);
+                                }
+                                if (cellValue.contains("C")) {
+                                    answerC.setIsRight(1l);
+                                }
+                                if (cellValue.contains("D")) {
+                                    answerD.setIsRight(1l);
+                                }
+                                answerList.add(answerA);
+                                answerList.add(answerB);
+                                answerList.add(answerC);
+                                answerList.add(answerD);
+                            } else if (options.length == 5) { //ABCDE
+                                TElQuAnswer answerA = new TElQuAnswer();
+                                answerA.setIsRight(0l);
+                                answerA.setContent(options[0]);
+                                TElQuAnswer answerB = new TElQuAnswer();
+                                answerB.setIsRight(0l);
+                                answerB.setContent(options[1]);
+                                TElQuAnswer answerC = new TElQuAnswer();
+                                answerC.setIsRight(0l);
+                                answerC.setContent(options[2]);
+                                TElQuAnswer answerD = new TElQuAnswer();
+                                answerD.setIsRight(0l);
+                                answerD.setContent(options[3]);
+                                TElQuAnswer answerE = new TElQuAnswer();
+                                answerE.setIsRight(0l);
+                                answerE.setContent(options[4]);
+                                if (cellValue.contains("A")) {
+                                    answerA.setIsRight(1l);
+                                }
+                                if (cellValue.contains("B")) {
+                                    answerB.setIsRight(1l);
+                                }
+                                if (cellValue.contains("C")) {
+                                    answerC.setIsRight(1l);
+                                }
+                                if (cellValue.contains("D")) {
+                                    answerD.setIsRight(1l);
+                                }
+                                if (cellValue.contains("E")) {
+                                    answerE.setIsRight(1l);
+                                }
+                                answerList.add(answerA);
+                                answerList.add(answerB);
+                                answerList.add(answerC);
+                                answerList.add(answerD);
+                                answerList.add(answerE);
+                            } else if (options.length == 3) { //ABC
+                                TElQuAnswer answerA = new TElQuAnswer();
+                                answerA.setIsRight(0l);
+                                answerA.setContent(options[0]);
+                                TElQuAnswer answerB = new TElQuAnswer();
+                                answerB.setIsRight(0l);
+                                answerB.setContent(options[1]);
+                                TElQuAnswer answerC = new TElQuAnswer();
+                                answerC.setIsRight(0l);
+                                answerC.setContent(options[2]);
+
+                                if (cellValue.contains("A")) {
+                                    answerA.setIsRight(1l);
+                                }
+                                if (cellValue.contains("B")) {
+                                    answerB.setIsRight(1l);
+                                }
+                                if (cellValue.contains("C")) {
+                                    answerC.setIsRight(1l);
+                                }
+
+                                answerList.add(answerA);
+                                answerList.add(answerB);
+                                answerList.add(answerC);
                             }
-                            answerList.add(answerA);
-                            answerList.add(answerB);
-                            answerList.add(answerC);
-                            answerList.add(answerD);
-                            answerList.add(answerE);
-                        }else if (options.length == 3) { //ABC
+
+                        } else if (qu.getQuType() == 3) { //判断
                             TElQuAnswer answerA = new TElQuAnswer();
                             answerA.setIsRight(0l);
-                            answerA.setContent(options[0]);
+                            answerA.setContent("正确");
                             TElQuAnswer answerB = new TElQuAnswer();
                             answerB.setIsRight(0l);
-                            answerB.setContent(options[1]);
-                            TElQuAnswer answerC = new TElQuAnswer();
-                            answerC.setIsRight(0l);
-                            answerC.setContent(options[2]);
-
+                            answerB.setContent("错误");
                             if (cellValue.contains("A")) {
                                 answerA.setIsRight(1l);
                             }
                             if (cellValue.contains("B")) {
                                 answerB.setIsRight(1l);
                             }
-                            if (cellValue.contains("C")) {
-                                answerC.setIsRight(1l);
-                            }
-
                             answerList.add(answerA);
                             answerList.add(answerB);
-                            answerList.add(answerC);
-                        }
-
-                    } else if (qu.getQuType() == 3) { //判断
-                        TElQuAnswer answerA = new TElQuAnswer();
-                        answerA.setIsRight(0l);
-                        answerA.setContent("正确");
-                        TElQuAnswer answerB = new TElQuAnswer();
-                        answerB.setIsRight(0l);
-                        answerB.setContent("错误");
-                        if (cellValue.contains("A")) {
-                            answerA.setIsRight(1l);
-                        }
-                        if (cellValue.contains("B")) {
-                            answerB.setIsRight(1l);
                         }
-                        answerList.add(answerA);
-                        answerList.add(answerB);
+                        // 最终insert
+                        qu.setAnswerList(answerList);
+                        qu.setRepoIds(repos);
+                        logger.info(JSON.toJSONString(qu));
+                        tElQuService.insertTElQu(qu);
+                        successNumber++;
                     }
-                    // 最终insert
-                    qu.setAnswerList(answerList);
-                    qu.setRepoIds(repos);
-                    logger.info(JSON.toJSONString(qu));
-                    tElQuService.insertTElQu(qu);
-
                 }
+            } catch (Exception e) {
+                failNumber++;
+                logger.info("e:" + JSON.toJSONString(e));
+                failRow.add(i + 1);
             }
         }
-        return AjaxResult.success();
+        logger.info("successNumber:" + String.valueOf(successNumber));
+        logger.info("failNumber:" + String.valueOf(failNumber));
+        logger.info("failRow:" + String.valueOf(failRow));
+        return AjaxResult.success(String.valueOf(successNumber), failRow);
     }
 }

+ 2 - 0
master/src/main/java/com/ruoyi/project/training/service/impl/TTrainingbccServiceImpl.java

@@ -7,6 +7,7 @@ import java.util.stream.Collectors;
 
 import com.alibaba.fastjson.JSON;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.interceptor.annotation.RepeatSubmit;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.project.training.domain.TTrainingbccDevice;
 import com.ruoyi.project.training.mapper.TTrainingbccDeviceMapper;
@@ -110,6 +111,7 @@ public class TTrainingbccServiceImpl implements ITTrainingbccService
 
     @Override
     @Transactional
+    @RepeatSubmit
     public int updateStaffIds(TTrainingbcc tTrainingbcc) {
         TTrainingbccDevice param = new TTrainingbccDevice();
         param.setRegularId(tTrainingbcc.getId());

+ 9 - 1
ui/src/views/training/elearn/qu/index.vue

@@ -616,7 +616,15 @@ export default {
       this.uploadExcel.open = false;
       this.uploadExcel.isUploading = false;
       this.$refs.uploadExcel.clearFiles();
-      this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+      if (response.data.length > 0) {
+        let failrow = ''
+        for (let i = 0; i < response.data.length; i++) {
+          failrow += response.data[i] + ','
+        }
+        this.$alert(this.$t('导入成功条数:') + response.msg + '<br>' + this.$t('失败行数:') + failrow, this.$t('导入结果'), {dangerouslyUseHTMLString: true});
+      } else {
+        this.$alert(this.$t('导入成功条数:') + response.msg, this.$t('导入结果'), {dangerouslyUseHTMLString: true});
+      }
       this.getList();
     },
     // 提交上传文件

+ 5 - 3
ui/src/views/training/trainingbcc/index.vue

@@ -512,7 +512,7 @@ import { allFileList, listCommonfile, getCommonfile, delCommonfile, addCommonfil
 import {getCompanylevel, updateCompanylevel} from "@/api/training/companylevel";
 import {listExam} from "@/api/training/elearn/exam";
 import {getFirstPlanTmpl} from "@/api/training/bccnew/firstPlanTmpl";
-
+import _ from 'lodash';
 
 export default {
   name: "Training",
@@ -1283,6 +1283,9 @@ export default {
     },
     //岗位筛选变动
     postChange() {
+      this.submitDebounced();
+    },
+    submitDebounced: _.debounce(function() {
       this.leftList = [];
       if (this.checkboxPost.length > 0) {
         this.staffmgrQueryParams.actualposts = this.checkboxPost.toString();
@@ -1297,8 +1300,7 @@ export default {
           })
         })
       }
-    },
-
+    }, 1000), // 300 毫秒内没有更多的点击时,提交最终数据
     //选择参会人员变动
     staffChange() {
       this.personForm.staffIds = this.checked.toString()