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<SchTerm> 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<SchTerm> 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<SchTerm> setPublic(String schTermId,String schShoolYearId) {
|
|
// »ñÈ¡µ±Ç°Ñ§ÄêµÄËùÓÐѧÆÚ
|
String hql = "from SchTerm where deleteFlag is false and schoolYearId = ? order by endTime desc";
|
List<SchTerm> schTermList = find(hql, CollectionUtils.newList(schShoolYearId), SchTerm.class);
|
|
// ±à¼Ò³Ãæ¹ýÂ˵±Ç°Ñ§Äê
|
List<SchTerm> schTermLst = new ArrayList<SchTerm>();
|
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);
|
|
}
|
|
|
}
|