1.能用到的表结构
2.能用到的表结构
3.处理逻辑
计算当前年级、班级的下一级年级、班级,并进行更换
3.1 储存对象
public class StudentClassEnity {
//学校标识
private String schoolUUid;
//原来年级标识
private String gradeUuid;
//原来班级标识
private String classUUid;
//现在年级标识
private String xgradeUuid;
//现在班级标识
private String xclassUUid;
public String getSchoolUUid() {
return schoolUUid;
}
public void setSchoolUUid(String schoolUUid) {
this.schoolUUid = schoolUUid;
}
public String getGradeUuid() {
return gradeUuid;
}
public void setGradeUuid(String gradeUuid) {
this.gradeUuid = gradeUuid;
}
public String getClassUUid() {
return classUUid;
}
public void setClassUUid(String classUUid) {
this.classUUid = classUUid;
}
public String getXgradeUuid() {
return xgradeUuid;
}
public void setXgradeUuid(String xgradeUuid) {
this.xgradeUuid = xgradeUuid;
}
public String getXclassUUid() {
return xclassUUid;
}
public void setXclassUUid(String xclassUUid) {
this.xclassUUid = xclassUUid;
}
}
3.2 处理逻辑
public String updateOneClickClass(StudentClassEnity studentClassEnity) {
List<StudentClassEnity> updateClassList = new ArrayList<>();
//1. 查询当前有效的班级列表(含当前年级排序)
List<StudentEnity> upClassList = humanMapper.selectClassList(studentClassEnity.getSchoolUUid());
//得到最大的年级排序
int maxGradeNum =humanMapper.selectGradeNum(studentClassEnity.getSchoolUUid());
if(upClassList != null && upClassList.size() >0){
for (StudentEnity upClass : upClassList) {
Integer nextGradeNumber = upClass.getGradeNumber();
if (upClass.getGradeNumber() + 1 > maxGradeNum) {
// 如果班级当前的年级排序已超过学段年级数范围,则判断为毕业(排序为-1)
nextGradeNumber = -1;
//删除该班级学生信息
this.deleteStudentByClassUUid(upClass.getClassUUid());
} else {
// 否则正常取下一级年级
nextGradeNumber = nextGradeNumber + 1;
//根据排序取下一级年级标识和年级Id
StudentEnity gradeEnty = humanMapper.selectNextGradeUUidBy(studentClassEnity.getSchoolUUid(),nextGradeNumber,"5");
if(gradeEnty != null){
StudentClassEnity studentClassEnity1 = new StudentClassEnity();
//原来班级标识
studentClassEnity1.setClassUUid(upClass.getClassUUid());
//原来年级标识
studentClassEnity1.setGradeUuid(upClass.getGradeUuid());
//现在年级标识
studentClassEnity1.setXgradeUuid(gradeEnty.getGradeUuid());
//根据年级Id和班级名称得到现班级
String nextClassUUid =humanMapper.selectNextClassUUidBy(gradeEnty.getRelationId(),upClass.getClassName());
if(StringUtil.isEmpty(nextClassUUid)){ //不存在该班级 ,则新增该班级
TreeEnity treeEnity =new TreeEnity();
treeEnity.setBusinessType(gradeEnty.getBusinessType());
treeEnity.setParentId(gradeEnty.getRelationId());
treeEnity.setDeptName(upClass.getClassName());
treeEnity.setOrderNum(upClass.getClassNumber());
treeEnity.setOneTypes("1");
treeEnity.setTwoTypes("6");
String json =treeService.insertTree(treeEnity);
if(StringUtil.isNotBlank(json)){
JSONObject jsonObject=JSONObject.parseObject(json,JSONObject.class);
String IsPass = String.valueOf(jsonObject.get("IsPass"));
if(IsPass.equals("true")){ //请求成功
//得到现在的班级标识
nextClassUUid = jsonObject.getString("Obj");
}else {
return JsonResultUtils.error("同步失败",0);
}
}
}
studentClassEnity1.setXclassUUid(nextClassUUid);
updateClassList.add(studentClassEnity1);
}else {
return JsonResultUtils.error("组织结构不支持一键升班",0);
}
}
}
for (StudentClassEnity studentClassEnity1:updateClassList ) {
/*-----------------已经得到想要的参数啦——根据需求进行业务逻辑处理开始----------------------------*/
/*这里我写的了另外一个方法做了异步处理*/
this.updateClass(studentClassEnity1);
/*-----------------根据需求进行业务逻辑处理结束----------------------------*/
}
}
return JsonResultUtils.success("操作成功",1);
}