同步学生学期评语
如果学生减少,就例如转班,退学等操作,自动把学生评语删除。如果学生增加,例如转过来学生,新增插班生,自动把学期评语初始化出来。如果出现一个学生两个学期评语,自动删除没有学期评语的学期评语。
学期评语类
public class BjtermRemark extends DataEntity<BjtermRemark>{
/**
* 学期评语
*/
private static final long serialVersionUID = 1L;
@MyMongoQuery(type = MyQueryType.IS)
private String xq; //学期
@MyMongoQuery(type = MyQueryType.IS)
private String clazzId; //班级id
private String clazzName; //班级名称
private String bzrId; //班主任id
private String bzrName; //班主任名称
@MyMongoQuery(type = MyQueryType.IS)
private String stuId; //学生id
private String stuName; //学生名称
private String dpDate; //点评时间
private String py; //评语
private String cid; //学校
public void initBjtermRemark(SysClazz clazz){
this.clazzName = clazz.getName();
this.bzrId = clazz.getTeaid();
this.bzrName = clazz.getTeaname();
this.stuName = UserUtils.getNameByIdCheck(this.stuId);
}
public String getXq() {
return xq;
}
public String getClazzId() {
return clazzId;
}
public String getClazzName() {
return clazzName;
}
public String getStuId() {
return stuId;
}
public String getStuName() {
return stuName;
}
public String getDpDate() {
return dpDate;
}
public String getPy() {
return py;
}
public String getCid() {
return cid;
}
public void setXq(String xq) {
this.xq = xq;
}
public void setClazzId(String clazzId) {
this.clazzId = clazzId;
}
public void setClazzName(String clazzName) {
this.clazzName = clazzName;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public void setDpDate(String dpDate) {
this.dpDate = dpDate;
}
public void setPy(String py) {
this.py = py;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getBzrId() {
return bzrId;
}
public String getBzrName() {
return bzrName;
}
public void setBzrId(String bzrId) {
this.bzrId = bzrId;
}
public void setBzrName(String bzrName) {
this.bzrName = bzrName;
}
service层方法
public void tb(BjtermRemark termRemark) {
// 学期评语1.学生多了,学期评语少了2.学生少了,学期评语多了
//1.根据参数(学期,班主任id,班级id)查询出本学期本班学期评语
List<BjtermRemark> list = findpy(termRemark);
List<SysUser> stus = Lists.newArrayList();
if (StringUtils.isNotBlank(termRemark.getClazzId())) {
// 班级学生
//2.根据班级id查询出所有的本班级学生
stus = ClazzUtils.findStuByXzb(termRemark.getClazzId());
//3.把本班级的任意一个人的学期评语查询出来
BjtermRemark pytmp = list.get(0);
//4.学生集合不为null
if (Jh.isNotBlank(stus)) {
//5.层循环放学生
for (SysUser stu : stus) {
//6.初始化一个学生为null
SysUser tmp = null;
for (BjtermRemark py : list) {
//7.内层放学期评语
if (ObjUtil.equals(py.getStuId(), stu.getId())) {
//8.如果学期评语内的学生id和学生id相等,把学生赋给临时变量tmp
tmp = stu;
//9.跳出本次内层循环
break;
}
}
//10.下个学生之前判断tmp是否为null
if (tmp == null) {
//11.如果为null,证明没有相等的,就是需要给学生新增一个学期评语
BjtermRemark termRemark1 = new BjtermRemark();
termRemark1.setXq(pytmp.getXq());
termRemark1.setClazzId(pytmp.getClazzId());
termRemark1.setClazzName(pytmp.getClazzName());
termRemark1.setBzrId(pytmp.getBzrId());
termRemark1.setBzrName(pytmp.getBzrName());
termRemark1.setStuId(stu.getId());
termRemark1.setStuName(stu.getName());
termRemark1.setCid(UserUtils.getCurrentCompanyId());
termRemark1.preInsert();
list.add(termRemark1);
MongoUtils.save(termRemark1);
}
}
//用来存学生id和学期评语类
Map<String, BjtermRemark> map = Maps.newHashMap();
//学期评语外层循环,学生内层循环
for (BjtermRemark py : list) {
//1.定义临时变量学期评语
BjtermRemark pytmp1 = null;
for (SysUser stu : stus) {
//2.如果学期评语的学生id和学生id相等
if (ObjUtil.equals(py.getStuId(), stu.getId())) {
//3.把学期评语发给临时变量
pytmp1 = py;
//4.跳出本次内层循环
break;
}
}
//5.如果临时变量为null
if (pytmp1 != null) {
//6.根据学期的学生id查询map是否有学期评语
BjtermRemark pytmp2 = map.get(py.getStuId());
if (pytmp2 == null) {
//7.没有,给map里面添加进去
map.put(py.getStuId(), py);
} else {
//8.有,可能有重复的学期评语
if (StringUtils.isNotBlank(pytmp2.getPy())) {
//9.如果这个没有学期评语,刚存进去map的有,就删掉这个
ljdel(pytmp1.getId());
} else if (StringUtils.isNotBlank(pytmp.getPy())) {
//10.如果这个有学期评语,刚存进去map的没有,就删除map里面的
ljdel(pytmp2.getId());
//11.然后把把刚才那个map里的学期评语覆盖掉
map.put(py.getStuId(), pytmp1);
} else {
//12.两个都为null,就把刚才那个临时的学期评语删除掉(就是本次循环到的这次)
ljdel(pytmp1.getId());
}
}
} else {
//没有相等的,直接删除学期评语
ljdel(py.getId());
}
}
}
}
}