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); } }