|
@@ -1,621 +0,0 @@
|
|
|
-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.ICqXxxqService;
|
|
|
-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 CqXxxqServiceImpl extends ServiceImpl<CqXxxqMapper, CqXxxq> implements ICqXxxqService {
|
|
|
- @Autowired
|
|
|
- private CqXxxqMapper cqXxxqMapper ;
|
|
|
- @Autowired
|
|
|
- private CqYcqxxMapper cqYcqxxMapper ;
|
|
|
- @Autowired
|
|
|
- private CqKsxxMapper cqKsxxMapper ;
|
|
|
- @Autowired
|
|
|
- private CqCqksMapper cqCqksMapper ;
|
|
|
- @Autowired
|
|
|
- private CqCqbjxxMapper cqCqbjxxMapper ;
|
|
|
- @Autowired
|
|
|
- private CqCqbjxqMapper cqCqbjxqMapper ;
|
|
|
- @Autowired
|
|
|
-
|
|
|
- //指定区间内抽取随机数
|
|
|
- public static int getRandomNumber(int min, int max) {
|
|
|
- if (min > max) {
|
|
|
- throw new IllegalArgumentException("最小值不能大于最大值");
|
|
|
- }
|
|
|
- Random random = new Random();
|
|
|
- return random.nextInt((max - min) + 1) + min;
|
|
|
- }
|
|
|
- // 抽学校
|
|
|
- public static List<CqXxxq> chouschool(List<CqXxxq> candidates, int numberOfWinners) {
|
|
|
- if (candidates == null || candidates.isEmpty()) {
|
|
|
- throw new IllegalArgumentException("候选学校列表不能为空");
|
|
|
- }
|
|
|
- if (numberOfWinners <= 0 || numberOfWinners > candidates.size()) {
|
|
|
- throw new IllegalArgumentException("中签学校必须大于0且不超过候选学校数量");
|
|
|
- }
|
|
|
-
|
|
|
- Random random = new Random();
|
|
|
- Set<Integer> selectedIndices = new HashSet<>(); // 用于存储已选中的索引
|
|
|
- List<CqXxxq> winners = new ArrayList<>(); // 存储中签者
|
|
|
-
|
|
|
- while (winners.size() < numberOfWinners) {
|
|
|
- int randomIndex = random.nextInt(candidates.size()); // 生成随机索引
|
|
|
- if (selectedIndices.add(randomIndex)) { // 如果索引未被选中过
|
|
|
- winners.add(candidates.get(randomIndex)); // 添加到中签者列表
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return winners;
|
|
|
- }// 抽学生
|
|
|
- public static List<CqKsxx> choustudent(List<CqKsxx> candidates, int numberOfWinners) {
|
|
|
- if (candidates == null || candidates.isEmpty()) {
|
|
|
- throw new IllegalArgumentException("候选学校列表不能为空");
|
|
|
- }
|
|
|
- if (numberOfWinners <= 0 || numberOfWinners > candidates.size()) {
|
|
|
- throw new IllegalArgumentException("中签学校必须大于0且不超过候选学校数量");
|
|
|
- }
|
|
|
-
|
|
|
- Random random = new Random();
|
|
|
- Set<Integer> selectedIndices = new HashSet<>(); // 用于存储已选中的索引
|
|
|
- List<CqKsxx> winners = new ArrayList<>(); // 存储中签者
|
|
|
-
|
|
|
- while (winners.size() < numberOfWinners) {
|
|
|
- int randomIndex = random.nextInt(candidates.size()); // 生成随机索引
|
|
|
- if (selectedIndices.add(randomIndex)) { // 如果索引未被选中过
|
|
|
- winners.add(candidates.get(randomIndex)); // 添加到中签者列表
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return winners;
|
|
|
- }
|
|
|
-// // 从集合中抽取多个班级
|
|
|
-// public static List<String> chouclass(List<String> candidates, int numberOfWinners) {
|
|
|
-// if (candidates == null || candidates.isEmpty()) {
|
|
|
-// throw new IllegalArgumentException("候选列表不能为空");
|
|
|
-// }
|
|
|
-// if (numberOfWinners <= 0 || numberOfWinners > candidates.size()) {
|
|
|
-// throw new IllegalArgumentException("中签人数必须大于0且不超过候选人数");
|
|
|
-// }
|
|
|
-//
|
|
|
-// Random random = new Random();
|
|
|
-// Set<Integer> selectedIndices = new HashSet<>(); // 用于存储已选中的索引
|
|
|
-// List<String> winners = new ArrayList<>(); // 存储中签者
|
|
|
-//
|
|
|
-// while (winners.size() < numberOfWinners) {
|
|
|
-// int randomIndex = random.nextInt(candidates.size()); // 生成随机索引
|
|
|
-// if (selectedIndices.add(randomIndex)) { // 如果索引未被选中过
|
|
|
-// winners.add(candidates.get(randomIndex)); // 添加到中签者列表
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// return winners;
|
|
|
-// }
|
|
|
- //学校抽签
|
|
|
- @Override
|
|
|
- public Map<String,List<CqXxxq>> cqxx(CqXxxq cqXxxq) {
|
|
|
- Map<String,List<CqXxxq>> CqXxxqlistmap=new HashMap<>();
|
|
|
- List<CqXxxq> cqXxList=new ArrayList<>();//被抽签到到学校
|
|
|
- List<CqXxxq> cqXxxqList=new ArrayList<>();
|
|
|
- List<CqXxxq> cqXxxqLists=new ArrayList<>();//接口抛错使用
|
|
|
- CqXxxq cqXxxqs=new CqXxxq();//接口抛错使用
|
|
|
- CqYcqxx cqYcqxx=new CqYcqxx();//添加抽取记录的对象
|
|
|
- //判断是否是市直属学校
|
|
|
- if (cqXxxq.getDistrictname().equals("市直属")) {
|
|
|
- cqXxList=cqXxxqMapper.cqxxxqszs(cqXxxq);
|
|
|
- if(cqXxList.isEmpty()){
|
|
|
- CqXxxqlistmap.put("市直属",cqXxList);
|
|
|
-// throw new JeecgBootException("没有可抽签的学校!");
|
|
|
- }else {
|
|
|
- //保存被抽签的学校
|
|
|
- for (CqXxxq xxxq : cqXxList) {
|
|
|
- cqYcqxx.setId(null);
|
|
|
- cqYcqxx.setDistrictname(xxxq.getDistrictname());
|
|
|
- cqYcqxx.setSchoolname(xxxq.getSchoolname());
|
|
|
- cqYcqxx.setSchoolcode(xxxq.getSchoolcode());
|
|
|
- cqYcqxx.setClasscode(xxxq.getClasscode());
|
|
|
- cqYcqxx.setNianji(xxxq.getNianji());
|
|
|
- cqYcqxx.setEstate(xxxq.getEstate());
|
|
|
- cqYcqxx.setSchoolpopulation(xxxq.getSchoolpopulation());
|
|
|
- cqYcqxxMapper.insert(cqYcqxx);
|
|
|
- }
|
|
|
- CqXxxqlistmap.put("市直属",cqXxList);
|
|
|
- }
|
|
|
- }else {
|
|
|
- //获取当前地市有多少个等级
|
|
|
- List<String> dengji = cqXxxqMapper.huoqudsxxdj(cqXxxq.getDistrictname());
|
|
|
- for (String estate : dengji) {
|
|
|
- cqXxxq.setEstate(estate);
|
|
|
- //根据县区名称、年级、层次获取符合的学校
|
|
|
- cqXxxqList = cqXxxqMapper.cqxxxq(cqXxxq);
|
|
|
- if (cqXxxqList.isEmpty()) {
|
|
|
- CqXxxqlistmap.put(estate,cqXxList);
|
|
|
-// throw new JeecgBootException("没有可抽签的学校!");
|
|
|
- } else if (cqXxxqList.size() < Integer.parseInt(cqXxxq.getSchooamount())) {
|
|
|
- CqXxxqlistmap.put(estate,cqXxxqLists);
|
|
|
-// throw new JeecgBootException("可抽签的学数量不能大于以抽签学校数量!");
|
|
|
- } else {
|
|
|
- //检查当前区是否已经抽签
|
|
|
- LambdaQueryWrapper<CqYcqxx> query = new LambdaQueryWrapper<>();
|
|
|
- query.eq(CqYcqxx::getDistrictname, cqXxxq.getDistrictname())
|
|
|
- .eq(CqYcqxx::getEstate, cqXxxq.getEstate());
|
|
|
- Long count = cqYcqxxMapper.selectCount(query);
|
|
|
- if (Integer.parseInt(count + "") > 0) {
|
|
|
- CqXxxqlistmap.put(estate,cqXxxqLists);
|
|
|
-// throw new JeecgBootException("该区当前等级已经有抽签记录无法重复抽签!");
|
|
|
- } else if (Integer.parseInt(count + "") == 0) {
|
|
|
- cqXxList = chouschool(cqXxxqList, Integer.parseInt(cqXxxq.getSchooamount()));
|
|
|
- //保存被抽签的学校
|
|
|
- for (CqXxxq xxxq : cqXxList) {
|
|
|
- cqYcqxx.setId(null);
|
|
|
- cqYcqxx.setDistrictname(xxxq.getDistrictname());
|
|
|
- cqYcqxx.setSchoolname(xxxq.getSchoolname());
|
|
|
- cqYcqxx.setSchoolcode(xxxq.getSchoolcode());
|
|
|
- cqYcqxx.setClasscode(xxxq.getClasscode());
|
|
|
- cqYcqxx.setNianji(xxxq.getNianji());
|
|
|
- cqYcqxx.setEstate(xxxq.getEstate());
|
|
|
- //获取抽签学校的考生数
|
|
|
- cqYcqxx.setSchoolpopulation(xxxq.getSchoolpopulation());
|
|
|
- cqYcqxxMapper.insert(cqYcqxx);
|
|
|
- }
|
|
|
- } else {
|
|
|
- System.out.println("异常");
|
|
|
- }
|
|
|
- CqXxxqlistmap.put(estate,cqXxList);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return CqXxxqlistmap;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public List<CqXxxq> hqxx(CqXxxq cqXxxq) {
|
|
|
- LambdaQueryWrapper<CqXxxq> query = new LambdaQueryWrapper<>();
|
|
|
- query.eq(CqXxxq::getDistrictname, cqXxxq.getDistrictname())
|
|
|
- .eq(CqXxxq::getEstate, cqXxxq.getEstate())
|
|
|
- .eq(CqXxxq::getNianji, cqXxxq.getNianji());
|
|
|
- return cqXxxqMapper.selectList(query);
|
|
|
- }
|
|
|
-
|
|
|
- // //抽签不允许抽已经抽取的区
|
|
|
-// @Override
|
|
|
-// public String cqxxbcf(CqXxxq cqXxxq) {
|
|
|
-// int studentamount=Integer.parseInt(cqXxxq.getStudentamount());
|
|
|
-// //根据县区名称、年级、层次获取符合的学校
|
|
|
-// List<CqXxxq> cqXxxqList=cqXxxqMapper.cqxxxq(cqXxxq);
|
|
|
-//
|
|
|
-// 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 "抽签完成!";
|
|
|
-// }
|
|
|
-// }
|
|
|
- //班级抽签
|
|
|
- @Override
|
|
|
- public String bjcq(String districtname) {
|
|
|
- String banji="";
|
|
|
-// 判断是否抽班级
|
|
|
- LambdaQueryWrapper<CqCqbjxx> query = new LambdaQueryWrapper<>();
|
|
|
- query.eq(CqCqbjxx::getDistrictname, districtname);
|
|
|
- Long count = cqCqbjxxMapper.selectCount(query);
|
|
|
- if (Integer.parseInt(count+"") >0) {
|
|
|
- return "该区已经有抽签班级记录无法重复抽签!";
|
|
|
-// System.out.println("该区已经有抽签班级记录无法重复抽签");
|
|
|
- }else if(Integer.parseInt(count+"") ==0){
|
|
|
- //获取当前区内班级数量最大的学校的班级数量
|
|
|
- String zuidashuliang =cqYcqxxMapper.chabanjishu(districtname);
|
|
|
- int sjs =getRandomNumber(Integer.parseInt(zuidashuliang));
|
|
|
- banji=convertNumberToChinese(sjs)+"班";
|
|
|
- System.out.println(banji);
|
|
|
- //添加到数据库
|
|
|
- CqCqbjxx cqCqbjxx= new CqCqbjxx();
|
|
|
- cqCqbjxx.setDistrictname(districtname);
|
|
|
- cqCqbjxx.setClassname(banji);
|
|
|
- cqCqbjxx.setBz(sjs+"");
|
|
|
- cqCqbjxxMapper.insert(cqCqbjxx);
|
|
|
- }
|
|
|
- return banji;
|
|
|
- }
|
|
|
-//人员抽签
|
|
|
- @Override
|
|
|
- public String rycq(CqXxxq cqXxxq) {
|
|
|
- //获取地市抽取的随机数
|
|
|
- LambdaQueryWrapper<CqCqbjxx> query1 = new LambdaQueryWrapper<>();
|
|
|
- query1.eq(CqCqbjxx::getDistrictname, cqXxxq.getDistrictname());
|
|
|
- CqCqbjxx cqCqbjxx=cqCqbjxxMapper.selectOne(query1);
|
|
|
- int studentamount = 45;//抽取人数
|
|
|
- //判断是否是市直属学校
|
|
|
- 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);
|
|
|
- System.out.println(cqYcqxx);
|
|
|
- }
|
|
|
- }else {
|
|
|
- //获取当前地市有多少个等级
|
|
|
- List<String> dengji=cqXxxqMapper.huoqudsxxdj(cqXxxq.getDistrictname());
|
|
|
- for (String estate : dengji) {
|
|
|
- cqXxxq.setEstate(estate);
|
|
|
- System.out.println("显示cqXxxq:"+cqXxxq);
|
|
|
- //获取需要抽签的学校
|
|
|
- LambdaQueryWrapper<CqYcqxx> query = new LambdaQueryWrapper<>();
|
|
|
- query.eq(CqYcqxx::getDistrictname, cqXxxq.getDistrictname())
|
|
|
- .eq(CqYcqxx::getEstate, cqXxxq.getEstate());
|
|
|
- List<CqYcqxx> cqYcqxxList=cqYcqxxMapper.selectList(query);
|
|
|
- if (cqYcqxxList.isEmpty()){
|
|
|
- System.out.println("空的不处理!");
|
|
|
- }else {
|
|
|
- for (CqYcqxx cqYcqxx : cqYcqxxList) {
|
|
|
- //调用抽班级方法
|
|
|
- rycqsjsbj(cqYcqxx,cqCqbjxx,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());
|
|
|
- if(cqYcqxx.getSchoolpopulation()>45){
|
|
|
- System.out.println("够45人开始从班级里抽取人员");
|
|
|
- //判断抽到的班级是否够45人
|
|
|
- //判断当前学校的班级数量是否在抽取的随机数中
|
|
|
- if(Integer.parseInt(cqYcqxx.getClasscode())>=Integer.parseInt(cqCqbjxx.getBz())){
|
|
|
- //获取抽到的班级是几班
|
|
|
- banji=cqYcqxx.getNianji()+convertNumberToChinese(Integer.parseInt(cqCqbjxx.getBz()))+"班";
|
|
|
- //获取班级里面的人
|
|
|
- System.out.println("banji1:"+banji);
|
|
|
- cqbanxs(cqYcqxx,banji,Integer.parseInt(cqCqbjxx.getBz()),studentamount);
|
|
|
- }else {
|
|
|
- //小于则随机数除以班级数量取余获取抽到的班级
|
|
|
- remainder=Integer.parseInt(cqCqbjxx.getBz())%Integer.parseInt(cqYcqxx.getClasscode());
|
|
|
- if (remainder==0){
|
|
|
- remainder=Integer.parseInt(cqYcqxx.getClasscode());
|
|
|
- }
|
|
|
- banji=cqYcqxx.getNianji()+convertNumberToChinese(remainder)+"班";
|
|
|
- System.out.println("banji2:"+banji);
|
|
|
-
|
|
|
- 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);
|
|
|
- }
|
|
|
- System.out.println("学校人数不足抽签人数全部参加,都抽签完毕后,去别的学校里补");
|
|
|
- //获取人员不够的学校进行补充
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- //根据班级抽学生
|
|
|
- public void cqbanxs(CqYcqxx cqYcqxx, String banji, int sjs, int studentamount) {
|
|
|
- CqCqbjxq cqCqbjxq= new CqCqbjxq();
|
|
|
- //获取考生详情
|
|
|
- List<CqKsxx> cqKsxxList =cqKsxxMapper.chacqksxx(cqYcqxx.getSchoolname(),banji);
|
|
|
- System.out.println("抽签班级学生数量:"+cqKsxxList.size());
|
|
|
- System.out.println("抽签数量:"+studentamount);
|
|
|
- List<CqCqks> cqCqksList=new ArrayList<>();//抽中学生保存集合
|
|
|
- List<CqKsxx> cqKsxxListcz=new ArrayList<>();//抽中学生集合
|
|
|
- //判断班级是否抽签
|
|
|
- LambdaQueryWrapper<CqCqks> query = new LambdaQueryWrapper<>();
|
|
|
- query.eq(CqCqks::getSchoolname, cqYcqxx.getSchoolname())
|
|
|
- .eq(CqCqks::getClassname, banji);
|
|
|
- Long count = cqCqksMapper.selectCount(query);
|
|
|
- if (Integer.parseInt(count+"")==0){
|
|
|
- //抽签班级信息保存入库
|
|
|
- cqCqbjxq.setYcqxxId(cqYcqxx.getId());
|
|
|
- cqCqbjxq.setClassname(banji);
|
|
|
- if (studentamount<=cqKsxxList.size()) {
|
|
|
- cqCqbjxq.setBz(studentamount+"");
|
|
|
- }else {
|
|
|
- cqCqbjxq.setBz(cqKsxxList.size()+"");
|
|
|
- }
|
|
|
- cqCqbjxqMapper.insert(cqCqbjxq);
|
|
|
- //判断班级人数是否符合抽签人数
|
|
|
- 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);
|
|
|
- }
|
|
|
- //顺序抽取下一个班
|
|
|
- sjs=sjs+1;
|
|
|
- CqCqbjxx cqCqbjxx=new CqCqbjxx();
|
|
|
- cqCqbjxx.setBz(sjs+"");
|
|
|
- rycqsjsbj(cqYcqxx,cqCqbjxx,studentamount-cqKsxxList.size());
|
|
|
- }
|
|
|
- }else {
|
|
|
- System.out.println("该班级以抽签");
|
|
|
- }
|
|
|
- }
|
|
|
- // 生成抽签班级随机数
|
|
|
- public static int getRandomNumber(int zuidashuliang) {
|
|
|
- Random random = new Random();
|
|
|
- return random.nextInt(zuidashuliang) + 1; // nextInt(x)生成0-x,加1后变为1-x
|
|
|
- }
|
|
|
- // 将数字转换为中文大写形式
|
|
|
- public static String convertNumberToChinese(int number) {
|
|
|
- String[] chineseNumbers = {
|
|
|
- "一", "二", "三", "四", "五",
|
|
|
- "六", "七", "八", "九", "十",
|
|
|
- "十一", "十二", "十三", "十四", "十五",
|
|
|
- "十六", "十七", "十八", "十九", "二十"
|
|
|
- };
|
|
|
-
|
|
|
- if (number >= 1 && number <= 20) {
|
|
|
- return chineseNumbers[number - 1]; // 数组索引从0开始
|
|
|
- } else {
|
|
|
- return "未知";
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public List<String> huoquds() {
|
|
|
- return cqXxxqMapper.huoquds();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public List<String> huoqudsxxdj(String districtname) {
|
|
|
- return cqXxxqMapper.huoqudsxxdj(districtname);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public List<String> huoqudsxxnj(String districtname) {
|
|
|
- return cqXxxqMapper.huoqudsxxnj(districtname);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public String qccqxx() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- // 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) {
|
|
|
-//
|
|
|
-// //查询当前学校有多少个班级
|
|
|
-// 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(String.valueOf(cqYcqxx.getSchoolpopulation()))>studentamount){
|
|
|
-// //判断班级是否抽签
|
|
|
-// LambdaQueryWrapper<CqCqks> query = new LambdaQueryWrapper<>();
|
|
|
-// 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);
|
|
|
-// }
|
|
|
-// //在本校中重新抽班级补人
|
|
|
-//// 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;
|
|
|
-// }
|
|
|
-// //循环赋值
|
|
|
- public List<CqCqks> cqbanji(List<CqKsxx> cqKsxxList) {
|
|
|
- List<CqCqks> cqCqksList=new ArrayList<>();
|
|
|
- CqCqks cqCqks=new CqCqks();
|
|
|
- for (CqKsxx cqKsxx : cqKsxxList) {
|
|
|
- cqCqks.setUsername(cqKsxx.getUsername());
|
|
|
- cqCqks.setRealname(cqKsxx.getRealname());
|
|
|
- cqCqks.setDistrictname(cqKsxx.getDistrictname());
|
|
|
- cqCqks.setSchoolname(cqKsxx.getSchoolname());
|
|
|
- cqCqks.setNianji(cqKsxx.getNianji());
|
|
|
- cqCqks.setClassname(cqKsxx.getClassname());
|
|
|
- cqCqks.setSex(cqKsxx.getSex());
|
|
|
- cqCqksList.add(cqCqks);
|
|
|
- cqCqks=new CqCqks();
|
|
|
- }
|
|
|
- return cqCqksList;
|
|
|
-
|
|
|
- }
|
|
|
- //学校人数不够是补充别的学校里的人
|
|
|
- public boolean bcxxbanjiry(String districtname,String estate,int studentamount) {
|
|
|
- int chouqurenshu=0;
|
|
|
- int schoolcode=0;
|
|
|
- //获取需要补足的学校
|
|
|
- List<CqYcqxx> cqYcqxxList= cqYcqxxMapper.chabzrsxx(districtname,estate,studentamount);
|
|
|
- System.out.println("显示不够抽签人数的学校");
|
|
|
- System.out.println(cqYcqxxList);
|
|
|
- System.out.println(cqYcqxxList.size());
|
|
|
- for (CqYcqxx cqYcqxx : cqYcqxxList) {
|
|
|
- chouqurenshu=studentamount-cqYcqxx.getSchoolpopulation();
|
|
|
- //获取当前学校序号,去他邻近的下一所学校去补人
|
|
|
-// schoolcode=Integer.parseInt(cqYcqxx.getSchoolcode());
|
|
|
-
|
|
|
-// //获取的学校剩余班级人数需要大于需抽签人数
|
|
|
-// 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;
|
|
|
- }
|
|
|
-}
|