Jelajahi Sumber

抽签接口添加

yuanjunhao 1 hari lalu
induk
melakukan
a7cb4d615d

+ 94 - 8
web/src/main/java/com/ynfy/buss/exam/chouqian/controller/CqXxxqController.java

@@ -3,24 +3,30 @@ package com.ynfy.buss.exam.chouqian.controller;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ynfy.buss.exam.chouqian.entity.CqCqks;
 import com.ynfy.buss.exam.chouqian.entity.CqXxxq;
+import com.ynfy.buss.exam.chouqian.entity.CqYcqxx;
+import com.ynfy.buss.exam.chouqian.service.ICqCqksService;
 import com.ynfy.buss.exam.chouqian.service.ICqXxxqService;
+import com.ynfy.buss.exam.chouqian.service.ICqYcqxxService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.Arrays;
 import java.util.List;
-import java.util.Objects;
 
 
 @Api(tags = "抽签")
@@ -30,7 +36,10 @@ import java.util.Objects;
 public class CqXxxqController extends JeecgController<CqXxxq, ICqXxxqService> {
     @Autowired
     private ICqXxxqService cqXxxqService;
-
+    @Autowired
+    private ICqYcqxxService cqYcqxxService;
+    @Autowired
+    private ICqCqksService cqCqksService;
     /**
      * 学校抽签
      *
@@ -47,9 +56,86 @@ public class CqXxxqController extends JeecgController<CqXxxq, ICqXxxqService> {
         cqXxxq.setEstate("优");
         cqXxxq.setSchooamount("2");
         cqXxxq.setStudentamount("45");
-        cqXxxqService.cqxx(cqXxxq);
-        return Result.OK("添加成功!");
-    }
 
+        return Result.OK(cqXxxqService.cqxx(cqXxxq));
+    }
+    /**
+     * 分页以抽签学校查询
+     *
+     * @param cqYcqxx
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @ApiOperation(value = "分页以抽签学校查询", notes = "分页以抽签学校查询")
+    @GetMapping(value = "/xxlist")
+    public Result<IPage<CqYcqxx>> xxPageList(CqYcqxx cqYcqxx,
+                                             @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                             @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                             HttpServletRequest req) {
+        QueryWrapper<CqYcqxx> queryWrapper = QueryGenerator.initQueryWrapper(cqYcqxx, req.getParameterMap());
+        Page<CqYcqxx> page = new Page<CqYcqxx>(pageNo, pageSize);
+        IPage<CqYcqxx> pageList = cqYcqxxService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+    /**
+     * 分页以抽签学校查询
+     *
+     * @param cqCqks
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @ApiOperation(value = "分页以抽签学校查询", notes = "分页以抽签学校查询")
+    @GetMapping(value = "/kslist")
+    public Result<IPage<CqCqks>> ksList(CqCqks cqCqks,
+                                         @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                         HttpServletRequest req) {
+        QueryWrapper<CqCqks> queryWrapper = QueryGenerator.initQueryWrapper(cqCqks, req.getParameterMap());
+        Page<CqCqks> page = new Page<CqCqks>(pageNo, pageSize);
+        IPage<CqCqks> pageList = cqCqksService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+    /**
+     * 导出excel
+     * @param request
+     */
+    @RequestMapping(value = "/xxexportXls")
+    public ModelAndView xxexportXls(CqYcqxx cqYcqxx, HttpServletRequest request) {
 
+        // Step.1 组装查询条件
+        QueryWrapper<CqYcqxx> queryWrapper = QueryGenerator.initQueryWrapper(cqYcqxx, request.getParameterMap());
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<CqYcqxx> pageList = cqYcqxxService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME,"抽签学校列表");
+        mv.addObject(NormalExcelConstants.CLASS,CqYcqxx.class);
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        mv.addObject(NormalExcelConstants.PARAMS,new ExportParams("抽签学校列表数据","导出人:"+user.getRealname(),"导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST,pageList);
+        return mv;
+    }
+    /**
+     * 导出excel
+     * @param request
+     */
+    @RequestMapping(value = "/ksexportXls")
+    public ModelAndView ksexportXls(CqCqks cqCqks, HttpServletRequest request) {
+        // Step.1 组装查询条件
+        QueryWrapper<CqCqks> queryWrapper = QueryGenerator.initQueryWrapper(cqCqks, request.getParameterMap());
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<CqCqks> pageList = cqCqksService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME,"抽签人员列表");
+        mv.addObject(NormalExcelConstants.CLASS,CqCqks.class);
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        mv.addObject(NormalExcelConstants.PARAMS,new ExportParams("抽签人员数据","导出人:"+user.getRealname(),"导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST,pageList);
+        return mv;
+    }
 }

+ 5 - 1
web/src/main/java/com/ynfy/buss/exam/chouqian/entity/CqYcqxx.java

@@ -44,9 +44,13 @@ public class CqYcqxx implements Serializable {
     @ApiModelProperty(value = "等级")
     private String estate;
 
+    @Excel(name = "状态", width = 15)
+    @ApiModelProperty(value = "状态")
+    private String state;
+
     @Excel(name = "学校人数", width = 15)
     @ApiModelProperty(value = "学校人数")
-    private String schoolpopulation;
+    private Integer schoolpopulation;
     /**
      * createTime
      */

+ 14 - 0
web/src/main/java/com/ynfy/buss/exam/chouqian/mapper/CqCqbjxxMapper.java

@@ -0,0 +1,14 @@
+package com.ynfy.buss.exam.chouqian.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import com.ynfy.buss.exam.chouqian.entity.CqCqbjxx;
+
+import java.util.List;
+
+
+public interface CqCqbjxxMapper extends BaseMapper<CqCqbjxx> {
+
+
+
+}

+ 1 - 0
web/src/main/java/com/ynfy/buss/exam/chouqian/mapper/CqKsxxMapper.java

@@ -10,6 +10,7 @@ import java.util.List;
 public interface CqKsxxMapper extends BaseMapper<CqKsxx> {
 //    获取学校内所有班级
     List<String> chaclassname(String schoolname);
+    Integer chaclassrs(String schoolname);
     //获取指定学校指定班级的人数
     List<CqKsxx> chacqksxx(@Param("schoolname")String schoolname, @Param("classname")String classname);
 }

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

@@ -2,8 +2,13 @@ package com.ynfy.buss.exam.chouqian.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ynfy.buss.exam.chouqian.entity.CqYcqxx;
+import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
 
-public interface CqYcqxxMapper extends BaseMapper<CqYcqxx> {
 
+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);
 }

+ 7 - 0
web/src/main/java/com/ynfy/buss/exam/chouqian/mapper/xml/CqKsxxMapper.xml

@@ -3,9 +3,16 @@
 <mapper namespace="com.ynfy.buss.exam.chouqian.mapper.CqKsxxMapper">
 
     <select id="chaclassname" resultType="java.lang.String">
+        select distinct classname from cq_ksxx where schoolname=#{schoolname} and classname  not in (select a.classname from cq_cqbjxx a,cq_ycqxx b where a.ycqxx_id=b.id and schoolname=#{schoolname})
+    </select>
+    <select id="chaclassnameqc" resultType="java.lang.String">
         select distinct classname from cq_ksxx where schoolname=#{schoolname}
     </select>
     <select id="chacqksxx" resultType="com.ynfy.buss.exam.chouqian.entity.CqKsxx">
         select * from cq_ksxx where schoolname=#{schoolname} and classname=#{classname}
     </select>
+    <select id="chaclassrs" resultType="java.lang.Integer">
+        select count(0) from cq_ksxx where schoolname=#{schoolname} and classname  not in (select a.classname from cq_cqbjxx a,cq_ycqxx b where a.ycqxx_id=b.id and schoolname=#{schoolname})
+    </select>
+
 </mapper>

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

@@ -2,6 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ynfy.buss.exam.chouqian.mapper.CqXxxqMapper">
     <select id="cqxxxq" resultType="com.ynfy.buss.exam.chouqian.entity.CqXxxq">
-    select * from cq_xxxq where districtname=#{cqXxxq.districtname} and nianji=#{cqXxxq.nianji} and estate=#{cqXxxq.estate}
+    select * from cq_xxxq where districtname=#{cqXxxq.districtname} and nianji=#{cqXxxq.nianji} and estate=#{cqXxxq.estate} and
+                                schoolname not in(select schoolname from cq_ycqxx where districtname=#{cqXxxq.districtname} )
     </select>
 </mapper>

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

@@ -2,4 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ynfy.buss.exam.chouqian.mapper.CqYcqxxMapper">
 
+<!--    <select id="chabzrsxx" resultType="java.lang.String">-->
+<!--        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>
+    <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>
 </mapper>

+ 9 - 0
web/src/main/java/com/ynfy/buss/exam/chouqian/service/ICqCqksService.java

@@ -0,0 +1,9 @@
+package com.ynfy.buss.exam.chouqian.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ynfy.buss.exam.chouqian.entity.CqCqks;
+
+
+public interface ICqCqksService extends IService<CqCqks> {
+
+}

+ 15 - 0
web/src/main/java/com/ynfy/buss/exam/chouqian/service/ICqXxxqService.java

@@ -0,0 +1,15 @@
+package com.ynfy.buss.exam.chouqian.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ynfy.buss.exam.chouqian.entity.CqXxxq;
+import com.ynfy.buss.exam.exam.entity.ExamPapers;
+
+import java.util.List;
+
+
+public interface ICqXxxqService extends IService<CqXxxq> {
+   //学校抽签
+    String cqxx(CqXxxq cqXxxq);
+    String cqxxbcf(CqXxxq cqXxxq);
+
+}

+ 9 - 0
web/src/main/java/com/ynfy/buss/exam/chouqian/service/ICqYcqxxService.java

@@ -0,0 +1,9 @@
+package com.ynfy.buss.exam.chouqian.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ynfy.buss.exam.chouqian.entity.CqYcqxx;
+
+
+public interface ICqYcqxxService extends IService<CqYcqxx> {
+
+}

+ 20 - 0
web/src/main/java/com/ynfy/buss/exam/chouqian/service/impl/CqCqksServiceImpl.java

@@ -0,0 +1,20 @@
+package com.ynfy.buss.exam.chouqian.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ynfy.buss.exam.chouqian.entity.CqCqks;
+import com.ynfy.buss.exam.chouqian.mapper.CqCqksMapper;
+import com.ynfy.buss.exam.chouqian.service.ICqCqksService;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * @Description: exam
+ * @Author: jeecg-boot
+ * @Date: 2023-02-23
+ * @Version: V1.0
+ */
+@Service
+public class CqCqksServiceImpl extends ServiceImpl<CqCqksMapper, CqCqks> implements ICqCqksService {
+
+}

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

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ynfy.buss.exam.chouqian.entity.*;
 import com.ynfy.buss.exam.chouqian.mapper.*;
 import com.ynfy.buss.exam.chouqian.service.ICqXxxqService;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.system.entity.SysDepart;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -108,27 +109,20 @@ public class CqXxxqServiceImpl extends ServiceImpl<CqXxxqMapper, CqXxxq> impleme
         return winners;
     }
     @Override
-    public List<CqXxxq> cqxx(CqXxxq cqXxxq) {
+    public String cqxx(CqXxxq cqXxxq) {
         int studentamount=Integer.parseInt(cqXxxq.getStudentamount());
         //根据县区名称、年级、层次获取符合的学校
         List<CqXxxq> cqXxxqList=cqXxxqMapper.cqxxxq(cqXxxq);
-        System.out.println("显示要抽签的学校。");
-        System.out.println(cqXxxqList);
-        System.out.println(cqXxxqList.size());
+//        System.out.println("显示要抽签的学校。");
         List<CqXxxq> cqXxList=new ArrayList<>();//被抽签到到学校
-        cqXxList=chouschool(cqXxxqList, Integer.parseInt(cqXxxq.getSchooamount()));
-        System.out.println("抽取到的学校"+cqXxList);
-        CqYcqxx cqYcqxx=new CqYcqxx();//添加抽取记录的对象
-
-        //检查当前区是否已经抽签
-        LambdaQueryWrapper<CqYcqxx> query = new LambdaQueryWrapper<>();
-        query.eq(CqYcqxx::getDistrictname, cqXxxq.getDistrictname());
-        Long count = cqYcqxxMapper.selectCount(query);
-        System.out.println("显示count:"+count);
-        if (Integer.parseInt(count+"") >0) {
-            System.out.println("该区已经有抽签记录无法重复抽签");
-        }else if(Integer.parseInt(count+"") ==0){
-            //保存被抽签的学校
+        if(cqXxxqList.isEmpty()){
+            return "没有可抽签的学校";
+        }else if(cqXxxqList.size()<Integer.parseInt(cqXxxq.getSchooamount())) {
+            return "可抽签的学数量不能大于以抽签学校数量";
+        }else {
+            cqXxList=chouschool(cqXxxqList, Integer.parseInt(cqXxxq.getSchooamount()));
+            CqYcqxx cqYcqxx=new CqYcqxx();//添加抽取记录的对象
+
             for (CqXxxq xxxq : cqXxList) {
                 cqYcqxx.setId(null);
                 cqYcqxx.setDistrictname(xxxq.getDistrictname());
@@ -138,88 +132,182 @@ public class CqXxxqServiceImpl extends ServiceImpl<CqXxxqMapper, CqXxxq> impleme
                 //获取抽签学校的考生数
                 LambdaQueryWrapper<CqKsxx> query1 = new LambdaQueryWrapper<>();
                 query1.eq(CqKsxx::getDistrictname, xxxq.getDistrictname())
-                      .eq(CqKsxx::getSchoolname, xxxq.getSchoolname());
-                cqYcqxx.setSchoolpopulation(String.valueOf(cqKsxxMapper.selectCount(query1)));
+                        .eq(CqKsxx::getSchoolname, xxxq.getSchoolname());
+                cqYcqxx.setSchoolpopulation(Math.toIntExact(cqKsxxMapper.selectCount(query1)));
                 cqYcqxxMapper.insert(cqYcqxx);
                 //抽签班级
-                this.cqbanji(cqYcqxx,xxxq,studentamount);
+                this.cqbanji(cqYcqxx,xxxq.getSchoolname(),studentamount);
             }
-        }else {
-            System.out.println("异常");
+//            //正常情况抽取完成,开始抽取学校不足指定人数的规则
+            this.bcxxbanjiry(cqXxxq.getDistrictname(),cqXxxq.getEstate(),studentamount);
+            return "抽签完成!";
         }
-        //正常情况抽取完成,开始抽取学校不足指定人数的规则
 
+    }
+    //抽签不允许抽已经抽取的区
+    @Override
+    public String cqxxbcf(CqXxxq cqXxxq) {
+        int studentamount=Integer.parseInt(cqXxxq.getStudentamount());
+        //根据县区名称、年级、层次获取符合的学校
+        List<CqXxxq> cqXxxqList=cqXxxqMapper.cqxxxq(cqXxxq);
 
-        return null;
+        if(cqXxxqList.isEmpty()){
+            return "没有可抽签的学校";
+        }else if(cqXxxqList.size()<Integer.parseInt(cqXxxq.getSchooamount())) {
+            return "可抽签的学数量不能大于以抽签学校数量";
+        }else{
+            //        System.out.println("显示要抽签的学校。");
+            List<CqXxxq> cqXxList=new ArrayList<>();//被抽签到到学校
+            cqXxList=chouschool(cqXxxqList, Integer.parseInt(cqXxxq.getSchooamount()));
+//        System.out.println("抽取到的学校"+cqXxList);
+            CqYcqxx cqYcqxx=new CqYcqxx();//添加抽取记录的对象
+            //检查当前区是否已经抽签
+            LambdaQueryWrapper<CqYcqxx> query = new LambdaQueryWrapper<>();
+            query.eq(CqYcqxx::getDistrictname, cqXxxq.getDistrictname());
+            Long count = cqYcqxxMapper.selectCount(query);
+//        System.out.println("显示count:"+count);
+            if (Integer.parseInt(count+"") >0) {
+                System.out.println("该区已经有抽签记录无法重复抽签");
+            }else if(Integer.parseInt(count+"") ==0){
+                //保存被抽签的学校
+                for (CqXxxq xxxq : cqXxList) {
+                    cqYcqxx.setId(null);
+                    cqYcqxx.setDistrictname(xxxq.getDistrictname());
+                    cqYcqxx.setSchoolname(xxxq.getSchoolname());
+                    cqYcqxx.setNianji(xxxq.getNianji());
+                    cqYcqxx.setEstate(xxxq.getEstate());
+                    //获取抽签学校的考生数
+                    LambdaQueryWrapper<CqKsxx> query1 = new LambdaQueryWrapper<>();
+                    query1.eq(CqKsxx::getDistrictname, xxxq.getDistrictname())
+                            .eq(CqKsxx::getSchoolname, xxxq.getSchoolname());
+                    cqYcqxx.setSchoolpopulation(Math.toIntExact(cqKsxxMapper.selectCount(query1)));
+                    cqYcqxxMapper.insert(cqYcqxx);
+                    //抽签班级
+                    this.cqbanji(cqYcqxx,xxxq.getSchoolname(),studentamount);
+                }
+//            //正常情况抽取完成,开始抽取学校不足指定人数的规则
+                this.bcxxbanjiry(cqXxxq.getDistrictname(),cqXxxq.getEstate(),studentamount);
+            }else {
+                System.out.println("异常");
+            }
+            return "抽签完成!";
+        }
+    }
+    public boolean cqbanji(CqYcqxx cqYcqxx,String Schoolname,int studentamount) {
+        //校验当前学校是否进行班级抽取
+//        System.out.println("yyz显示cqYcqxx:"+cqYcqxx);
+//        System.out.println("yyz显示xxxq:"+xxxq);
+//        LambdaQueryWrapper<CqCqbjxx> query1 = new LambdaQueryWrapper<>();
+//        query1.eq(CqCqbjxx::getYcqxxId, cqYcqxx.getId());
+//        Long count1 = cqCqbjxxMapper.selectCount(query1);
+//        if (Integer.parseInt(count1+"") >0) {
+//            System.out.println("该学校以抽签班级");
+//        }else if(Integer.parseInt(count1+"") ==0){
+            //学校抽签完毕抽取学校班级
+            //查询当前学校有多少个班级
+            List<String> bjlist=cqKsxxMapper.chaclassname(Schoolname);
+            //抽签班级
+            System.out.println(bjlist);
+            List<String> chouqianclass=chouclass(bjlist,1);
+            CqCqbjxx cqCqbjxx= new CqCqbjxx();
+            cqCqbjxx.setYcqxxId(cqYcqxx.getId());
+            cqCqbjxx.setClassname(chouqianclass.get(0));
+            cqCqbjxxMapper.insert(cqCqbjxx);
+            //调用抽人方法
+            this.cqbanjiry(cqYcqxx,Schoolname,cqCqbjxx,studentamount);
+//        }
+
+        return true;
     }
+    //补学校抽签班级
+    public boolean cqbanjibxx(CqYcqxx cqYcqxx,String Schoolname,int studentamount) {
 
-    public boolean cqbanji(CqYcqxx cqYcqxx,CqXxxq xxxq,int studentamount) {
-        //学校抽签完毕抽取学校班级
         //查询当前学校有多少个班级
-        List<String> bjlist=cqKsxxMapper.chaclassname(xxxq.getSchoolname());
+        List<String> bjlist=cqKsxxMapper.chaclassname(Schoolname);
         //抽签班级
         System.out.println(bjlist);
         List<String> chouqianclass=chouclass(bjlist,1);
         CqCqbjxx cqCqbjxx= new CqCqbjxx();
         cqCqbjxx.setYcqxxId(cqYcqxx.getId());
         cqCqbjxx.setClassname(chouqianclass.get(0));
+        cqCqbjxx.setClasssjs("补给"+cqYcqxx.getSchoolname()+studentamount+"人");
         cqCqbjxxMapper.insert(cqCqbjxx);
+        //调用抽人方法
+        this.cqbanjiry(cqYcqxx,Schoolname,cqCqbjxx,studentamount);
+        return true;
+    }
+    public boolean cqbanjiry(CqYcqxx cqYcqxx,String Schoolname,CqCqbjxx cqCqbjxx,int studentamount) {
         //班级抽取完毕开始抽取学生
+        //获取班级考试人数
+        System.out.println("开始抽人数");
+        //获取考生详情
+        List<CqKsxx> cqKsxxList =cqKsxxMapper.chacqksxx(Schoolname,cqCqbjxx.getClassname());
+//            System.out.println("抽签班级学生详情"+cqKsxxList);
+        System.out.println("抽签班级学生数量"+cqKsxxList.size());
+        List<CqCqks>  cqCqksList=new ArrayList<>();//抽中学生保存集合
+        List<CqKsxx>  cqKsxxListcz=new ArrayList<>();//抽中学生集合
         //判断抽到的学校人数是否大于指定人数
-        if(Integer.parseInt(cqYcqxx.getSchoolpopulation())>studentamount){
-            //获取班级考试人数
-            System.out.println("开始抽人数");
-            //获取考生详情
-            List<CqKsxx> cqKsxxList =cqKsxxMapper.chacqksxx(xxxq.getSchoolname(),cqCqbjxx.getClassname());
-            System.out.println("抽签班级学生详情"+cqKsxxList);
-            System.out.println("抽签班级学生数量"+cqKsxxList.size());
-            List<CqCqks>  cqCqksList=new ArrayList<>();//抽中学生保存集合
-            List<CqKsxx>  cqKsxxListcz=new ArrayList<>();//抽中学生集合
+        if(Integer.parseInt(String.valueOf(cqYcqxx.getSchoolpopulation()))>studentamount){
             //判断班级是否抽签
             LambdaQueryWrapper<CqCqks> query = new LambdaQueryWrapper<>();
-            query.eq(CqCqks::getSchoolname, xxxq.getSchoolname())
-                 .eq(CqCqks::getClassname, cqCqbjxx.getClassname());
+            query.eq(CqCqks::getSchoolname, Schoolname)
+                    .eq(CqCqks::getClassname, cqCqbjxx.getClassname());
             Long count = cqCqksMapper.selectCount(query);
             if (Integer.parseInt(count+"")==0){
-            //判断班级人数是否符合抽签人数
-            if(cqKsxxList.size()>studentamount){
-                System.out.println("大于45,随机仇人");
-                //班级人数大于抽签人数时随机抽取考试人员
-                cqKsxxListcz= choustudent(cqKsxxList,studentamount);
-                System.out.println(cqKsxxListcz);
-                System.out.println(cqKsxxListcz.size());
-                cqCqksList=this.cqbanji(cqKsxxListcz);
-                for (CqCqks cqCqks : cqCqksList) {
-                    cqCqks.setId(null);
-                    cqCqksMapper.insert(cqCqks);
-                }
-            }else if(cqKsxxList.size()==studentamount){
-                System.out.println("=45");
-                cqCqksList=this.cqbanji(cqKsxxList);
-                for (CqCqks cqCqks : cqCqksList) {
-                    cqCqks.setId(null);
-                    cqCqksMapper.insert(cqCqks);
-                }
-            }else{
-                System.out.println("小于45");
-                //若抽中班级的学生数量少于当前学段需要参加考试的学生数量,当前班级人员全部参加
-                cqCqksList=this.cqbanji(cqKsxxList);
-                for (CqCqks cqCqks : cqCqksList) {
-                    cqCqks.setId(null);
-                    cqCqksMapper.insert(cqCqks);
+                //判断班级人数是否符合抽签人数
+                if(cqKsxxList.size()>studentamount){
+                    System.out.println("大于45,随机抽人");
+                    //班级人数大于抽签人数时随机抽取考试人员
+                    cqKsxxListcz= choustudent(cqKsxxList,studentamount);
+                    System.out.println(cqKsxxListcz);
+                    System.out.println(cqKsxxListcz.size());
+                    cqCqksList=this.cqbanji(cqKsxxListcz);
+                    for (CqCqks cqCqks : cqCqksList) {
+                        cqCqks.setId(null);
+                        cqCqksMapper.insert(cqCqks);
+                    }
+                }else if(cqKsxxList.size()==studentamount){
+                    System.out.println("=45");
+                    cqCqksList=this.cqbanji(cqKsxxList);
+                    for (CqCqks cqCqks : cqCqksList) {
+                        cqCqks.setId(null);
+                        cqCqksMapper.insert(cqCqks);
+                    }
+                }else{
+                    System.out.println("小于45");
+                    //若抽中班级的学生数量少于当前学段需要参加考试的学生数量,当前班级人员全部参加
+                    cqCqksList=this.cqbanji(cqKsxxList);
+                    for (CqCqks cqCqks : cqCqksList) {
+                        cqCqks.setId(null);
+                        cqCqksMapper.insert(cqCqks);
+                    }
+                    //在本校中重新抽班级补人
+//                    this.cqbanji(cqYcqxx,xxxq,studentamount-cqKsxxList.size());
+                    //查询当前学校剩余多少个班级
+                    List<String> bjlist=cqKsxxMapper.chaclassname(Schoolname);
+                    //抽签班级
+                    System.out.println(bjlist);
+                    List<String> chouqianclass=chouclass(bjlist,1);
+                    CqCqbjxx cqCqbjxx1= new CqCqbjxx();
+                    cqCqbjxx1.setYcqxxId(cqYcqxx.getId());
+                    cqCqbjxx1.setClassname(chouqianclass.get(0));
+                    cqCqbjxx1.setClasssjs("补");
+                    cqCqbjxxMapper.insert(cqCqbjxx1);
+                    //调用抽人方法  只抽取缺的人数
+                    this.cqbanjiry(cqYcqxx,Schoolname,cqCqbjxx1,studentamount-cqKsxxList.size());
                 }
-                //在本校中重新抽班级补人
-
-            }
             }else {
                 System.out.println("该班级以抽签");
             }
 
         }else {
+            cqCqksList=this.cqbanji(cqKsxxList);
+            for (CqCqks cqCqks : cqCqksList) {
+                cqCqksMapper.insert(cqCqks);
+            }
             System.out.println("学校人数不足抽签人数全部参加,都抽签完毕后,去别的学校里补");
+
         }
-        //
-        //
         return true;
     }
     //循环赋值
@@ -239,4 +327,32 @@ public class CqXxxqServiceImpl extends ServiceImpl<CqXxxqMapper, CqXxxq> impleme
         return cqCqksList;
 
     }
+    //学校人数不够是补充别的学校里的人
+    public boolean bcxxbanjiry(String districtname,String estate,int studentamount) {
+        int chouqurenshu=0;
+        //获取需要补足的学校
+       List<CqYcqxx> cqycqxx= cqYcqxxMapper.chabzrsxx(districtname,estate,studentamount);
+        System.out.println("显示不够抽签人数的学校");
+        System.out.println(cqycqxx);
+        System.out.println(cqycqxx.size());
+        for (CqYcqxx cqYcqxx : cqycqxx) {
+            chouqurenshu=studentamount-cqYcqxx.getSchoolpopulation();
+            //获取的学校剩余班级人数需要大于需抽签人数
+            List<CqYcqxx> cqycqxxbc= cqYcqxxMapper.chabzrsxxbz(districtname,estate,studentamount,cqYcqxx.getSchoolname());
+            //获取能够补足的学校
+            System.out.println("cqycqxxbc"+cqycqxxbc);
+            //学校剩余班级人数是否够抽取的
+            for (CqYcqxx cqYcqxxbc : cqycqxxbc) {
+                System.out.println(chouqurenshu);
+                //判断剩余人数是否狗
+                if(cqKsxxMapper.chaclassrs(cqYcqxxbc.getSchoolname())>chouqurenshu){
+                    System.out.println("执行");
+                    this.cqbanjibxx(cqYcqxxbc,cqYcqxxbc.getSchoolname(),chouqurenshu);
+                    break;
+                }
+            }
+        }
+
+        return true;
+    }
 }

+ 25 - 0
web/src/main/java/com/ynfy/buss/exam/chouqian/service/impl/CqYcqxxServiceImpl.java

@@ -0,0 +1,25 @@
+package com.ynfy.buss.exam.chouqian.service.impl;
+
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ynfy.buss.exam.chouqian.entity.*;
+import com.ynfy.buss.exam.chouqian.mapper.*;
+import com.ynfy.buss.exam.chouqian.service.ICqYcqxxService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+
+/**
+ * @Description: exam
+ * @Author: jeecg-boot
+ * @Date: 2023-02-23
+ * @Version: V1.0
+ */
+@Service
+public class CqYcqxxServiceImpl extends ServiceImpl<CqYcqxxMapper, CqYcqxx> implements ICqYcqxxService {
+
+}