package com.qxueyou.scc.school.service.impl; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.base.service.impl.CommonAppService; import com.qxueyou.scc.base.util.CollectionUtils; import com.qxueyou.scc.base.util.TraceUtils; import com.qxueyou.scc.school.model.SchTerm; import com.qxueyou.scc.school.model.SchTermReDay; import com.qxueyou.scc.school.service.ISchoolTermService; @Service public class SchoolTermService extends CommonAppService implements ISchoolTermService { @Override public Result insertSchoolTerm(SchTerm schTerm,String schoolDayId) { // 验证 Result resultFlag = judgeTime(schTerm); if(StringUtils.isNotBlank(resultFlag.getMsg())){ return resultFlag; } if(StringUtils.isNotBlank(schTerm.getTermId())){ SchTerm schTermNew = read(SchTerm.class, schTerm.getTermId()); schTermNew.setName(schTerm.getName()); schTermNew.setEndTime(schTerm.getEndTime()); schTermNew.setStartTime(schTerm.getStartTime()); schTermNew.setSchoolYearId(schTerm.getSchoolYearId()); schTermNew.setTermOrder(schTerm.getTermOrder()); TraceUtils.setUpdateTrace(schTermNew); this.save(schTermNew); }else{ TraceUtils.setCreateTrace(schTerm); this.save(schTerm); } String hql = " from SchTermReDay where termId=?"; SchTermReDay re = findUnique(hql, CollectionUtils.newList(schTerm.getTermId()), SchTermReDay.class); if(re==null){ re = new SchTermReDay(); TraceUtils.setCreateTrace(re); re.setSchoolDayId(schoolDayId); re.setDeleteFlag(false); re.setTermId(schTerm.getTermId()); this.save(re); }else{ re.setSchoolDayId(schoolDayId); TraceUtils.setUpdateTrace(re); save(re); } return new Result(true); } /** * 判断选择的时间不能包含已添加学年的开始时间至结束时间 * time * @return */ public Result judgeTime( SchTerm schTerm) { // 返回结果 Result resultFlag = new Result(true); List schTermLst = setPublic(schTerm.getTermId(),schTerm.getSchoolYearId()); // 验证 for (int i = 0; i < schTermLst.size(); i++) { boolean flagStart = schTermLst.get(i).getStartTime().before(schTerm.getStartTime()); boolean flagend = schTermLst.get(i).getEndTime().before(schTerm.getEndTime()); if(flagStart == false && flagend == true){ // 选择的时间包含开始时间和结束时间 resultFlag = new Result(true,"选择的学期时间不能包含已添加的学期时间"); break; } } return resultFlag; } /** * 开始时间的回调函数 * schSchoolYear :startTime * @return */ @Override public Result startCallback(String termId,String startTime,String shoolYearId) { return callback(termId, startTime, shoolYearId); } /** * 结束时间的回调函数 * schSchoolYear :endTime * @return */ @Override public Result endCallback(String termId,String endTime,String shoolYearId) { return callback(termId, endTime, shoolYearId); } /** * 判断选择的时间不能在已添加学年的开始时间和结束时间之间 * time * @return */ public Result callback(String schTermId, String startEndTime,String schShoolYearId) { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");//小写的mm表示的是分钟 Date time = null; try { time = sdf.parse(startEndTime); } catch (ParseException e) { e.printStackTrace(); } // 返回结果 Result resultFlag = new Result(true); List schTermLst = setPublic(schTermId,schShoolYearId); if(schTermLst.isEmpty()){ return resultFlag; } for (int i = 0; i < schTermLst.size(); i++) { boolean flagStart = schTermLst.get(i).getStartTime().before(time); boolean flagEnd = schTermLst.get(i).getEndTime().before(time); if(flagStart == true && flagEnd == false){ // 选择的时间在开始时间之后结束时间之前 resultFlag = new Result(true,"当前学年已设置该时间的学期"); break; } } return resultFlag; } public List setPublic(String schTermId,String schShoolYearId) { // 获取当前学年的所有学期 String hql = "from SchTerm where deleteFlag is false and schoolYearId = ? order by endTime desc"; List schTermList = find(hql, CollectionUtils.newList(schShoolYearId), SchTerm.class); // 编辑页面过滤当前学年 List schTermLst = new ArrayList(); if(StringUtils.isNotBlank(schTermId)){ for (SchTerm schTerm : schTermList) { if(!schTerm.getTermId().equals(schTermId)){ schTermLst.add(schTerm); } } return schTermLst; }else{ return schTermList; } } @Override public Result deleteSchoolTerm(String[] termIds) { String hql = "update SchTerm set deleteFlag = true where termId = ? "; return bulkUpdateInLoop(hql, termIds); } }