Prechádzať zdrojové kódy

添加缺考登记接口

yuanjunhao 3 týždňov pred
rodič
commit
c565800968

+ 1 - 1
system/system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java

@@ -104,7 +104,7 @@ public class LoginController {
         String origin = lowerCaseCaptcha+sysLoginModel.getCheckKey()+jeecgBaseConfig.getSignatureSecret();
         String realKey = Md5Util.md5Encode(origin, "utf-8");
         //update-end-author:taoyan date:2022-9-13 for: VUEN-2245 【漏洞】发现新漏洞待处理20220906
-        Object checkCode = redisUtil.get(realKey);
+//        Object checkCode = redisUtil.get(realKey);
         //当进入登录页时,有一定几率出现验证码错误 #1714
 //        if(checkCode==null || !checkCode.toString().equals(lowerCaseCaptcha)) {
 //            log.warn("验证码错误,key= {} , Ui checkCode= {}, Redis checkCode = {}", sysLoginModel.getCheckKey(), lowerCaseCaptcha, checkCode);

+ 6 - 7
web/src/main/java/com/ynfy/buss/exam/chouqian/controller/CqXxxqController.java

@@ -141,8 +141,8 @@ public class CqXxxqController extends JeecgController<CqXxxq, ICqXxxqService> {
         Page<CqYcqxx> page = new Page<CqYcqxx>(pageNo, pageSize);
         IPage<CqYcqxx> pageList = cqYcqxxService.page(page, queryWrapper);
 //        //测试添加
-//        System.err.println("显示查询条件:"+cqYcqxx);
-//        cqXxxqService.bjcq(cqYcqxx.getDistrictname());
+        System.err.println("显示查询条件:"+cqYcqxx);
+        cqXxxqService.bjcq(cqYcqxx.getDistrictname());
 
         return Result.OK(pageList);
     }
@@ -165,10 +165,9 @@ public class CqXxxqController extends JeecgController<CqXxxq, ICqXxxqService> {
         Page<CqCqks> page = new Page<CqCqks>(pageNo, pageSize);
         IPage<CqCqks> pageList = cqCqksService.page(page, queryWrapper);
 //        //测试添加
-//        CqXxxq cqXxxq=new CqXxxq();
-//        cqXxxq.setDistrictname("市中区");
-//        cqXxxq.setEstate("优");
-//        cqXxxqService.rycq(cqXxxq);
+        CqXxxq cqXxxq=new CqXxxq();
+        cqXxxq.setDistrictname(cqCqks.getDistrictname());
+        cqXxxqService.rycq(cqXxxq);
         return Result.OK(pageList);
     }
     /**
@@ -219,6 +218,6 @@ public class CqXxxqController extends JeecgController<CqXxxq, ICqXxxqService> {
     @GetMapping(value = "/qccqxx")
     public Result<String> qccqxx() {
 
-        return Result.OK("清成功");
+        return Result.OK("清成功");
     }
 }

+ 3 - 1
web/src/main/java/com/ynfy/buss/exam/chouqian/mapper/CqYcqxxMapper.java

@@ -11,6 +11,8 @@ public interface CqYcqxxMapper extends BaseMapper<CqYcqxx> {
     //获取抽取不足指定人数的院校
     List<CqYcqxx> chabzrsxx(@Param("districtname")String districtname ,@Param("estate")String estate ,@Param("studentamount")int studentamount);
     List<CqYcqxx> chabzrsxxbz(@Param("districtname")String districtname ,@Param("estate")String estate ,@Param("studentamount")int studentamount,@Param("schoolname")String schoolname);
+    //按学校编号排序获取学校
+    List<CqYcqxx> chaqxdjpx(@Param("districtname")String districtname ,@Param("estate")String estate ,@Param("studentamount")int studentamount);
     //获取指定地市抽取到的学校最多班级数
-    String chabanjishu(String districtname );
+    String chabanjishu(String districtname);
 }

+ 5 - 2
web/src/main/java/com/ynfy/buss/exam/chouqian/mapper/xml/CqYcqxxMapper.xml

@@ -6,13 +6,16 @@
 <!--        select * from cq_ycqxx where districtname=#{districtname} and schoolpopulation &lt; #{studentamount}-->
 <!--    </select>-->
     <select id="chabzrsxx" resultType="com.ynfy.buss.exam.chouqian.entity.CqYcqxx">
-            select * from cq_ycqxx where districtname=#{districtname} and schoolpopulation &lt; #{studentamount}
+            select * from cq_ycqxx where districtname=#{districtname} and estate=#{estate} and schoolpopulation &lt; #{studentamount}
     </select>
     <select id="chabzrsxxbz" resultType="com.ynfy.buss.exam.chouqian.entity.CqYcqxx">
-        select * from cq_ycqxx where districtname=#{districtname} and schoolpopulation &gt; #{studentamount} and schoolname!=#{schoolname} and state="0"
+        select * from cq_ycqxx where districtname=#{districtname} and estate=#{estate}  and schoolpopulation &gt; #{studentamount} and schoolname!=#{schoolname} and state="0"
     </select>
     <select id="chabanjishu" resultType="java.lang.String">
         select MAX(classcode) from cq_ycqxx
     </select>
+    <select id="chaqxdjpx" resultType="com.ynfy.buss.exam.chouqian.entity.CqYcqxx">
+        select * from cq_ycqxx where districtname=#{districtname} and state="0" and estate=#{estate}  ORDER BY CAST(schoolcode AS UNSIGNED)
+    </select>
 
 </mapper>

+ 80 - 14
web/src/main/java/com/ynfy/buss/exam/chouqian/service/impl/CqXxxqServiceImpl.java

@@ -246,6 +246,9 @@ public class CqXxxqServiceImpl extends ServiceImpl<CqXxxqMapper, CqXxxq> impleme
     //班级抽签
     @Override
     public String bjcq(String districtname) {
+        if (districtname.isEmpty()){
+            return "数据为空";
+        }
         String banji="";
 //        判断是否抽班级
         LambdaQueryWrapper<CqCqbjxx> query = new LambdaQueryWrapper<>();
@@ -277,13 +280,13 @@ public class CqXxxqServiceImpl extends ServiceImpl<CqXxxqMapper, CqXxxq> impleme
         query1.eq(CqCqbjxx::getDistrictname, cqXxxq.getDistrictname());
         CqCqbjxx cqCqbjxx=cqCqbjxxMapper.selectOne(query1);
         int studentamount = 45;//抽取人数
+        List<String>  dengji=cqXxxqMapper.huoqudsxxdj(cqXxxq.getDistrictname());
         //判断是否是市直属学校
         if (cqXxxq.getDistrictname().equals("市直属")) {
             //获取需要抽签的学校
             LambdaQueryWrapper<CqYcqxx> query = new LambdaQueryWrapper<>();
             query.eq(CqYcqxx::getDistrictname, cqXxxq.getDistrictname());
             List<CqYcqxx> cqYcqxxList=cqYcqxxMapper.selectList(query);
-
             for (CqYcqxx cqYcqxx : cqYcqxxList) {
                 //调用抽班级方法
                 rycqsjsbj(cqYcqxx,cqCqbjxx,studentamount);
@@ -291,10 +294,10 @@ public class CqXxxqServiceImpl extends ServiceImpl<CqXxxqMapper, CqXxxq> impleme
             }
         }else {
             //获取当前地市有多少个等级
-            List<String>  dengji=cqXxxqMapper.huoqudsxxdj(cqXxxq.getDistrictname());
             for (String estate : dengji) {
                 cqXxxq.setEstate(estate);
-                System.out.println("显示cqXxxq:"+cqXxxq);
+                System.out.println("-------------------------------------");
+//                System.out.println("显示cqXxxq:"+cqXxxq);
             //获取需要抽签的学校
             LambdaQueryWrapper<CqYcqxx> query = new LambdaQueryWrapper<>();
             query.eq(CqYcqxx::getDistrictname, cqXxxq.getDistrictname())
@@ -309,18 +312,24 @@ public class CqXxxqServiceImpl extends ServiceImpl<CqXxxqMapper, CqXxxq> impleme
                 }
             }
             }
+
         }
+        System.out.println("获取学校人数不足抽签人数的学校,都抽签完毕后,去别的学校里补");
+        //获取人员不够的学校进行补充
+        for (String estate : dengji) {
+            bcxxbanjiry(cqXxxq.getDistrictname(),estate,studentamount);
 
+        }
         return null;
     }
     public void rycqsjsbj(CqYcqxx cqYcqxx, CqCqbjxx cqCqbjxx, int studentamount) {
         List<CqCqks> cqCqksList=new ArrayList<>();//学校抽取考生集合
         int remainder = 0;//随机数取余的值
         String banji="";//班级
-        System.out.println("cqYcqxx详情:"+cqYcqxx);
-        System.out.println("班级随机数:"+cqCqbjxx.getBz());
+//        System.out.println("cqYcqxx详情:"+cqYcqxx);
+//        System.out.println("班级随机数:"+cqCqbjxx.getBz());
         if(cqYcqxx.getSchoolpopulation()>45){
-            System.out.println("够45人开始从班级里抽取人员");
+//            System.out.println("够45人开始从班级里抽取人员");
             //判断抽到的班级是否够45人
             //判断当前学校的班级数量是否在抽取的随机数中
             if(Integer.parseInt(cqYcqxx.getClasscode())>=Integer.parseInt(cqCqbjxx.getBz())){
@@ -341,12 +350,33 @@ public class CqXxxqServiceImpl extends ServiceImpl<CqXxxqMapper, CqXxxq> impleme
                 cqbanxs(cqYcqxx,banji,Integer.parseInt(cqCqbjxx.getBz()),studentamount);
             }
         }else {
-            cqCqksList=this.cqbanji(cqKsxxMapper.chaxxksxx(cqYcqxx.getDistrictname(),cqYcqxx.getSchoolname()));
-            for (CqCqks cqCqks : cqCqksList) {
-                cqCqksMapper.insert(cqCqks);
+            LambdaQueryWrapper<CqCqks> query = new LambdaQueryWrapper<>();
+            query.eq(CqCqks::getSchoolname, cqYcqxx.getSchoolname());
+            Long count = cqCqksMapper.selectCount(query);
+            if (Integer.parseInt(count+"")==0) {//有记录时不重复添加数据
+                cqCqksList = this.cqbanji(cqKsxxMapper.chaxxksxx(cqYcqxx.getDistrictname(), cqYcqxx.getSchoolname()));
+                //保存班级记录
+                CqCqbjxq cqCqbjxq = new CqCqbjxq();
+                cqCqbjxq.setYcqxxId(cqYcqxx.getId());
+                cqCqbjxq.setClassname(banji);
+                if (studentamount <= cqCqksList.size()) {
+                    cqCqbjxq.setBz(studentamount + "");
+                } else {
+                    cqCqbjxq.setBz(cqCqksList.size() + "");
+                }
+                cqCqbjxqMapper.insert(cqCqbjxq);
+                //保存抽签学生
+                for (CqCqks cqCqks : cqCqksList) {
+                    cqCqksMapper.insert(cqCqks);
+                }
+                System.out.println("------------------------------------------");
+//                System.out.println(cqCqksList);
+                System.out.println("学校人数不足抽签人数全部参加,都抽签完毕后,去别的学校里补");
+
+            }else {
+                System.out.println("不重复添加记录");
             }
-            System.out.println("学校人数不足抽签人数全部参加,都抽签完毕后,去别的学校里补");
-            //获取人员不够的学校进行补充
+
 
         }
     }
@@ -355,8 +385,8 @@ public class CqXxxqServiceImpl extends ServiceImpl<CqXxxqMapper, CqXxxq> impleme
         CqCqbjxq cqCqbjxq= new CqCqbjxq();
         //获取考生详情
         List<CqKsxx> cqKsxxList =cqKsxxMapper.chacqksxx(cqYcqxx.getSchoolname(),banji);
-        System.out.println("抽签班级学生数量:"+cqKsxxList.size());
-        System.out.println("抽签数量:"+studentamount);
+//        System.out.println("抽签班级学生数量:"+cqKsxxList.size());
+//        System.out.println("抽签数量:"+studentamount);
         List<CqCqks>  cqCqksList=new ArrayList<>();//抽中学生保存集合
         List<CqKsxx>  cqKsxxListcz=new ArrayList<>();//抽中学生集合
             //判断班级是否抽签
@@ -589,8 +619,13 @@ public class CqXxxqServiceImpl extends ServiceImpl<CqXxxqMapper, CqXxxq> impleme
     }
     //学校人数不够是补充别的学校里的人
     public boolean bcxxbanjiry(String districtname,String estate,int studentamount) {
+        //获取地市抽取的随机数
+        LambdaQueryWrapper<CqCqbjxx> query1 = new LambdaQueryWrapper<>();
+        query1.eq(CqCqbjxx::getDistrictname, districtname);
+        CqCqbjxx cqCqbjxx=cqCqbjxxMapper.selectOne(query1);
         int chouqurenshu=0;
-        int schoolcode=0;
+        int schoolcodewz=0;
+        CqYcqxx cqYcqxxb=new CqYcqxx();
         //获取需要补足的学校
        List<CqYcqxx> cqYcqxxList= cqYcqxxMapper.chabzrsxx(districtname,estate,studentamount);
         System.out.println("显示不够抽签人数的学校");
@@ -600,7 +635,38 @@ public class CqXxxqServiceImpl extends ServiceImpl<CqXxxqMapper, CqXxxq> impleme
             chouqurenshu=studentamount-cqYcqxx.getSchoolpopulation();
             //获取当前学校序号,去他邻近的下一所学校去补人
 //            schoolcode=Integer.parseInt(cqYcqxx.getSchoolcode());
+            //获取当前区下面的所有学校,按getSchoolcode排序
+            List<CqYcqxx> cqycqxxbcList= cqYcqxxMapper.chaqxdjpx(districtname,estate,studentamount);
+            schoolcodewz=cqycqxxbcList.indexOf(cqYcqxx);
+            System.out.println("第几个"+cqycqxxbcList.indexOf(cqYcqxx));
+            System.out.println("共几个"+cqycqxxbcList.size());
+            int code=0;
+            int biaozhi=0;
+            while (code!=cqycqxxbcList.size()){
+                if (schoolcodewz==cqycqxxbcList.size()){
+                    schoolcodewz=0;
+                }else {
+                    schoolcodewz=schoolcodewz+1;
+                }
+                cqYcqxxb=cqycqxxbcList.get(schoolcodewz);
+                //判断剩余学校人数是否大于需要抽签的人数
+                if (cqKsxxMapper.chaclassrs(cqYcqxxb.getSchoolname()) >chouqurenshu) {
+                    biaozhi=1;
+                    break;
+                }
+                code++;
+            }
+            //判断是否有合适的学校
+            if (biaozhi == 1) {
+                //抽人补
+                System.out.println("显示补足的学校"+cqYcqxxb);
+                //获取剩余班级
 
+            }else {
+                System.out.println("该区以抽签的学校中无法进行补足。");
+            }
+            ;
+            //获取他之后的学校去补人
 //            //获取的学校剩余班级人数需要大于需抽签人数
 //            List<CqYcqxx> cqycqxxbc= cqYcqxxMapper.chabzrsxxbz(districtname,estate,studentamount,cqYcqxx.getSchoolname());
 //            //获取能够补足的学校

+ 2 - 2
web/src/main/java/com/ynfy/buss/exam/exam/service/impl/ExamServiceImpl.java

@@ -1101,7 +1101,7 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
         //获取试卷是否已经进行交卷
         List<UserExamPapers> listuserExamPapers=iUserExamPapersService.UserExamIdPaperUserExamPapers(dto.getUserExamId(),dto.getPaperId());
         UserExamPapers userExamPapers=new UserExamPapers();
-        if (listuserExamPapers.size()>0){
+        if (!listuserExamPapers.isEmpty()){
             userExamPapers=listuserExamPapers.get(0);
         }else {
             throw new JeecgBootException("未查询到该试卷");
@@ -1109,7 +1109,7 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
         if (PaperState.FINISHED.equals(userExamPapers.getState()) || PaperState.WAIT_OPT.equals(userExamPapers.getState())) {
             //试卷已经交卷获取下一场考试试卷的信息
            List<UserExamPapers> userExamPapersLists= iUserExamPapersService.UserExamIdAllUserExamPapers(dto.getUserExamId());
-           if(userExamPapersLists.size()==0){
+           if(userExamPapersLists.isEmpty()){
                throw new JeecgBootException("该试卷已经交卷,不允许重复交卷,当前试卷为最后一套试卷,本次考试结束。");
            }else if(userExamPapersLists.size()==1){
 //               throw new JeecgBootException("该试卷已经交卷,不允许重复交卷,即将进入下一套试卷。",Integer.parseInt(userExamPapersLists.get(0).getPaperId()));