Parcourir la source

班级code唯一性验证

dzx il y a 8 mois
Parent
commit
dca117f5c9

+ 2 - 0
src/main/java/com/xjrsoft/module/base/service/IBaseClassService.java

@@ -31,4 +31,6 @@ public interface IBaseClassService extends MPJBaseService<BaseClass> {
     Boolean addClass(AddBaseClassPageDto dto);
 
     Boolean updateClass(UpdateBaseClassPageDto dto);
+
+    String initClassCode(Long gradeId);
 }

+ 41 - 1
src/main/java/com/xjrsoft/module/base/service/impl/BaseClassServiceImpl.java

@@ -20,7 +20,9 @@ import com.xjrsoft.module.base.dto.AddBaseClassPageDto;
 import com.xjrsoft.module.base.dto.BaseClassPageDto;
 import com.xjrsoft.module.base.dto.UpdateBaseClassPageDto;
 import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.base.mapper.BaseClassMapper;
+import com.xjrsoft.module.base.mapper.BaseGradeMapper;
 import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.base.vo.BaseClassPageVo;
 import com.xjrsoft.module.base.vo.StudentClassVo;
@@ -59,6 +61,8 @@ public class BaseClassServiceImpl extends MPJBaseServiceImpl<BaseClassMapper, Ba
 
     private final IBandingTaskClassService bandingTaskClassService;
 
+    private final BaseGradeMapper gradeMapper;
+
     /**
      * 获取家长关联的学生 id 是家长的ID
      *
@@ -161,6 +165,7 @@ public class BaseClassServiceImpl extends MPJBaseServiceImpl<BaseClassMapper, Ba
         baseClass.setCreateDate(new Date());
         baseClass.setEnabledMark(EnabledMark.ENABLED.getCode());
         baseClass.setCreateUserId(StpUtil.getLoginIdAsLong());
+        baseClass.setCode(initClassCode(baseClass.getGradeId()));
         if (baseClass.getTeacherId() != null) {
             //查询该班主任是否是其他在读班级
             long count = this.count(
@@ -224,10 +229,21 @@ public class BaseClassServiceImpl extends MPJBaseServiceImpl<BaseClassMapper, Ba
                             .ne(BaseClass::getId, dto.getId())
             );
             if (count > 0) {
-                throw new MyException("该老师已是其他在读班级班主任,无法添加");
+                throw new MyException("该老师已是其他在读班级班主任,无法修改");
+            }
+        }
+        if(!aClass.getCode().equals(dto.getCode())){
+            List<BaseClass> list = this.list(
+                    new QueryWrapper<BaseClass>().lambda()
+                            .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode())
+                            .eq(BaseClass::getCode, dto.getCode())
+            );
+            if(!list.isEmpty()){
+                throw new MyException("班级编码已存在,无法修改");
             }
         }
 
+
         BaseClass baseClass = BeanUtil.toBean(dto, BaseClass.class);
         baseClass.setModifyDate(new Date());
         baseClass.setModifyUserId(StpUtil.getLoginIdAsLong());
@@ -291,4 +307,28 @@ public class BaseClassServiceImpl extends MPJBaseServiceImpl<BaseClassMapper, Ba
         return update;
     }
 
+    /**
+     * 根据年级,查询并生成最新的classCode
+     * @param gradeId 年级id
+     * @return classCode
+     */
+    @Override
+    public String initClassCode(Long gradeId) {
+        BaseGrade baseGrade = gradeMapper.selectById(gradeId);
+        String year = baseGrade.getTitle().replace("年", "");
+        List<BaseClass> list = this.list(
+                new QueryWrapper<BaseClass>().lambda()
+                        .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(BaseClass::getGradeId, gradeId)
+                        .orderByDesc(BaseClass::getCode)
+        );
+        if(!list.isEmpty()){
+            String code = list.get(0).getCode();
+            code = code.trim().substring(code.length() - 3);
+
+            return year + String.format("%03d", Integer.parseInt(code) + 1);
+        }
+        return year + "001";
+    }
+
 }