haogh 1 year ago
parent
commit
0c6f42f20c

+ 1 - 3
src/main/java/com/qmth/exam/reserve/controller/admin/ExamRoomController.java

@@ -5,9 +5,6 @@ import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.core.collection.PageResult;
 import com.qmth.boot.core.exception.StatusException;
-import com.qmth.exam.reserve.bean.examsite.ExamSiteReq;
-import com.qmth.exam.reserve.bean.examsite.ExamSiteSaveReq;
-import com.qmth.exam.reserve.bean.examsite.ExamSiteVO;
 import com.qmth.exam.reserve.bean.login.LoginUser;
 import com.qmth.exam.reserve.bean.room.ExamRoomReq;
 import com.qmth.exam.reserve.bean.room.ExamRoomSaveReq;
@@ -75,6 +72,7 @@ public class ExamRoomController extends BaseController {
 
     @ApiOperation(value = "考场导入")
     @PostMapping(value = "/import")
+    @Aac(strict = false, auth = false)
     public Map<String, Object> importExamRoom(@RequestParam MultipartFile file) {
         LoginUser user = this.curLoginUser();
         List<Map<String, Object>> failRecords;

+ 24 - 3
src/main/java/com/qmth/exam/reserve/service/impl/CategoryServiceImpl.java

@@ -16,7 +16,6 @@ import com.qmth.exam.reserve.bean.category.CategoryCacheBean;
 import com.qmth.exam.reserve.bean.category.CategoryInfo;
 import com.qmth.exam.reserve.bean.login.LoginUser;
 import com.qmth.exam.reserve.bean.stdapply.CategoryVO;
-import com.qmth.exam.reserve.bean.task.ApplyTaskVO;
 import com.qmth.exam.reserve.bean.teaching.TeachingReq;
 import com.qmth.exam.reserve.bean.teaching.TeachingSaveReq;
 import com.qmth.exam.reserve.bean.teaching.TeachingSingleVO;
@@ -26,7 +25,6 @@ import com.qmth.exam.reserve.cache.impl.CategoryCacheService;
 import com.qmth.exam.reserve.dao.CategoryDao;
 import com.qmth.exam.reserve.entity.CategoryEntity;
 import com.qmth.exam.reserve.enums.CategoryLevel;
-import com.qmth.exam.reserve.enums.ImportStatus;
 import com.qmth.exam.reserve.enums.Role;
 import com.qmth.exam.reserve.service.CategoryService;
 import com.qmth.exam.reserve.util.PageUtil;
@@ -242,6 +240,7 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryDao, CategoryEntity
             throw new StatusException("请选择教学点所在城市");
         }
         checkTeachingExist(orgId, req, req.getId() != null);
+        checkTeachingNameExist(req.getId(), req.getName());
     }
 
     private void checkTeachingExist(Long orgId, TeachingSaveReq req, boolean idFlag) {
@@ -255,6 +254,16 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryDao, CategoryEntity
         }
     }
 
+    private void checkTeachingNameExist(Long id, String teachingName) {
+        LambdaQueryWrapper<CategoryEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CategoryEntity::getName, teachingName);
+        wrapper.notIn(id != null, CategoryEntity::getId, id);
+        List<CategoryEntity> categoryEntities = baseMapper.selectList(wrapper);
+        if (!categoryEntities.isEmpty()) {
+            throw new StatusException(" 教学点名称已经存在");
+        }
+    }
+
     @Override
     public List<CategoryVO> listCity(LoginUser user) {
         LambdaQueryWrapper<CategoryEntity> wrapper = new LambdaQueryWrapper<>();
@@ -306,7 +315,12 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryDao, CategoryEntity
             } else if (name.length() > 50) {
                 msg.append(" 教学点名称不能超过50个字符");
             } else {
-                category.setName(name);
+                List<CategoryEntity> categoryEntities = listTeachingByName(name);
+                if(categoryEntities != null && !categoryEntities.isEmpty()) {
+                    msg.append(" 教学点名称不能重复");
+                } else {
+                    category.setName(name);
+                }
             }
             String cityName = trimAndNullIfBlank(line.get(EXCEL_HEADER[2]));
             Long cityId = null;
@@ -349,6 +363,12 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryDao, CategoryEntity
         return failRecords;
     }
 
+    private List<CategoryEntity> listTeachingByName(String name) {
+        LambdaQueryWrapper<CategoryEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CategoryEntity::getName, name);
+        return list(wrapper);
+    }
+
     @Override
     public void updateTeachingCapacity(Long teachingId) {
         baseMapper.updateTeachingCapacity(teachingId);
@@ -381,6 +401,7 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryDao, CategoryEntity
             baseMapper.insert(category);
         }
     }
+    
 
     private Long getIdByName(String cityName, List<CategoryVO> cityList) {
         for (CategoryVO city : cityList) {

+ 5 - 5
src/main/java/com/qmth/exam/reserve/service/impl/ExamRoomServiceImpl.java

@@ -151,13 +151,13 @@ public class ExamRoomServiceImpl extends ServiceImpl<ExamRoomDao, ExamRoomEntity
                 msg.append(" 找到的所属考点大于1个");
             }
             if (examSiteList.size() == 1) {
-                ExamRoomEntity examRoom = getExamRoom(examSiteList.get(0).getId(), code);
-                if (examRoom != null) {
-                    msg.append(" 当前考点下已经存在考场代码为:").append(code).append("的考场");
-                } else {
+//                ExamRoomEntity examRoom = getExamRoom(examSiteList.get(0).getId(), code);
+//                if (examRoom != null) {
+//                    msg.append(" 当前考点下已经存在考场代码为:").append(code).append("的考场");
+//                } else {
                     room.setExamSiteId(examSiteList.get(0).getId());
                     room.setEnable(Boolean.TRUE);
-                }
+//                }
             }
 
             if (msg.length() > 0) {

+ 21 - 1
src/main/java/com/qmth/exam/reserve/service/impl/ExamSiteServiceImpl.java

@@ -164,7 +164,12 @@ public class ExamSiteServiceImpl extends ServiceImpl<ExamSiteDao, ExamSiteEntity
             } else if (name.length() > 100) {
                 msg.append(" 考点名称不能超过100个字符");
             } else {
-                site.setName(name);
+                List<ExamSiteEntity> examSiteEntities = listExamSiteByName(name);
+                if(examSiteEntities != null && !examSiteEntities.isEmpty()){
+                    msg.append(" 考点名称不能重复");
+                } else {
+                    site.setName(name);
+                }
             }
             String teachingName = trimAndNullIfBlank(line.get(EXCEL_HEADER[2]));
             if (StringUtils.isBlank(teachingName)) {
@@ -220,6 +225,10 @@ public class ExamSiteServiceImpl extends ServiceImpl<ExamSiteDao, ExamSiteEntity
         return failRecords;
     }
 
+    private List<ExamSiteEntity> listExamSiteByName(String name) {
+        return lambdaQuery().eq(ExamSiteEntity::getName, name).list();
+    }
+
     @Override
     public void updateExamSiteCapacity(Long examSiteId) {
         baseMapper.updateExamSiteCapacity(examSiteId);
@@ -266,6 +275,7 @@ public class ExamSiteServiceImpl extends ServiceImpl<ExamSiteDao, ExamSiteEntity
             throw new StatusException("请选择考点所属教学点");
         }
         checkExamSiteExist(req, req.getId() != null);
+        checkExamSiteNameExists(req.getId(), req.getName());
     }
 
     private void checkExamSiteExist(ExamSiteSaveReq req, boolean idFlag) {
@@ -279,6 +289,16 @@ public class ExamSiteServiceImpl extends ServiceImpl<ExamSiteDao, ExamSiteEntity
         }
     }
 
+    private void checkExamSiteNameExists(Long id, String examSiteName) {
+        LambdaQueryWrapper<ExamSiteEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ExamSiteEntity::getName, examSiteName);
+        wrapper.notIn(id != null, ExamSiteEntity::getId, id);
+        List<ExamSiteEntity> examSiteEntities = baseMapper.selectList(wrapper);
+        if (!examSiteEntities.isEmpty()) {
+            throw new StatusException(" 考点名称已经存在");
+        }
+    }
+
     private String trimAndNullIfBlank(String s) {
         if (StringUtils.isBlank(s)) {
             return null;