同步学生

同步学生学期评语

如果学生减少,就例如转班,退学等操作,自动把学生评语删除。如果学生增加,例如转过来学生,新增插班生,自动把学期评语初始化出来。如果出现一个学生两个学期评语,自动删除没有学期评语的学期评语。

学期评语类

public class BjtermRemark extends DataEntity{

	/**
	 * 学期评语
	 */
	
	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 list = findpy(termRemark);
		List 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 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());
					}
				}
			}
		}
	}

你可能感兴趣的:(javase,java)