|
@@ -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;
|
|
|
+ }
|
|
|
}
|