package com.qxueyou.scc.school.service.impl; 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.ClientUtils; import com.qxueyou.scc.base.util.CollectionUtils; import com.qxueyou.scc.base.util.TraceUtils; import com.qxueyou.scc.school.model.SchSchoolDay; import com.qxueyou.scc.school.model.SchSchoolDayItem; import com.qxueyou.scc.school.service.ISchoolDayService; @Service public class SchoolDayService extends CommonAppService implements ISchoolDayService { @Override public Result insertSchoolDay(SchSchoolDay schSchoolDay) { if(StringUtils.isNotBlank(schSchoolDay.getSchoolDayId())){ TraceUtils.setUpdateTrace(schSchoolDay); }else{ TraceUtils.setCreateTrace(schSchoolDay); } schSchoolDay.setOrgId(ClientUtils.getOrgId()); this.save(schSchoolDay); return new Result(true); } @Override public Result deleteSchoolDay(String[] schoolDayIds) { String hql = "update SchSchoolDay set deleteFlag = true where schoolDayId = ? "; return bulkUpdateInLoop(hql, schoolDayIds); } @Override public Result insertSchoolDayItem(SchSchoolDayItem schSchoolDayItem) { // ÑéÖ¤ Result resultFlag = judgeTime(schSchoolDayItem); if(StringUtils.isNotBlank(resultFlag.getMsg())){ return resultFlag; } if(StringUtils.isNotBlank(schSchoolDayItem.getDayItemId())){ SchSchoolDayItem dayItem = read(SchSchoolDayItem.class, schSchoolDayItem.getDayItemId()); dayItem.setDayOrder(schSchoolDayItem.getDayOrder()); dayItem.setEndTime(schSchoolDayItem.getEndTime()); dayItem.setName(schSchoolDayItem.getName()); dayItem.setSchoolDayId(schSchoolDayItem.getSchoolDayId()); dayItem.setStartTime(schSchoolDayItem.getStartTime()); TraceUtils.setUpdateTrace(dayItem); save(dayItem); }else{ TraceUtils.setCreateTrace(schSchoolDayItem); this.save(schSchoolDayItem); } return new Result(true); } /** * ÅжÏÑ¡ÔñµÄʱ¼ä²»Äܰüº¬ÒÑÌí¼ÓѧÄêµÄ¿ªÊ¼Ê±¼äÖÁ½áÊøÊ±¼ä * time * @return */ public Result judgeTime( SchSchoolDayItem schSchoolDayItem) { // ·µ»Ø½á¹û Result resultFlag = new Result(true); List dayItemLst = setPublic(schSchoolDayItem.getDayItemId(),schSchoolDayItem.getSchoolDayId()); // ÑéÖ¤ for (int i = 0; i < dayItemLst.size(); i++) { boolean flagStart = dayItemLst.get(i).getStartTime().before(schSchoolDayItem.getStartTime()); boolean flagend = dayItemLst.get(i).getEndTime().before(schSchoolDayItem.getEndTime()); if(flagStart == false && flagend == true){ // Ñ¡ÔñµÄʱ¼ä°üº¬¿ªÊ¼Ê±¼äºÍ½áÊøÊ±¼ä resultFlag = new Result(true,"Ñ¡ÔñµÄ×÷Ϣʱ¼ä²»Äܰüº¬ÒÑÌí¼ÓµÄ×÷Ϣʱ¼ä"); break; } } return resultFlag; } /** * ¿ªÊ¼Ê±¼äµÄ»Øµ÷º¯Êý * schSchoolYear £ºstartTime * @return */ @Override public Result startCallback( SchSchoolDayItem schoolDayItem) { return callback(schoolDayItem.getStartTime(),schoolDayItem.getDayItemId(),schoolDayItem.getSchoolDayId()); } /** * ½áÊøÊ±¼äµÄ»Øµ÷º¯Êý * schSchoolYear £ºendTime * @return */ @Override public Result endCallback(SchSchoolDayItem schoolDayItem) { return callback(schoolDayItem.getEndTime(),schoolDayItem.getDayItemId(),schoolDayItem.getSchoolDayId()); } /** * ÅжÏÑ¡ÔñµÄʱ¼ä²»ÄÜÔÚÒÑÌí¼ÓѧÄêµÄ¿ªÊ¼Ê±¼äºÍ½áÊøÊ±¼äÖ®¼ä * time * @return */ public Result callback( Date time,String dayItemId,String schoolDayId) { // ·µ»Ø½á¹û Result resultFlag = new Result(true); List dayItemLst = setPublic(dayItemId,schoolDayId); if(dayItemLst.isEmpty()){ return resultFlag; } for (int i = 0; i < dayItemLst.size(); i++) { boolean flagStart = dayItemLst.get(i).getStartTime().before(time); boolean flagEnd = dayItemLst.get(i).getEndTime().before(time); if(flagStart == true && flagEnd == false){ // Ñ¡ÔñµÄʱ¼äÔÚ¿ªÊ¼Ê±¼äÖ®ºó½áÊøÊ±¼ä֮ǰ resultFlag = new Result(true,"ÒѾ­ÉèÖùýµ±Ç°µÄ×÷Ϣʱ¼ä"); break; } } return resultFlag; } public List setPublic(String dayItemId,String schoolDayId) { // »ñÈ¡µ±Ç°×÷Ϣʱ¼äµÄËùÓÐÃ÷ϸ String hql = "from SchSchoolDayItem where deleteFlag is false and schoolDayId = ? order by endTime desc"; List dayItemList = find(hql, CollectionUtils.newList(schoolDayId), SchSchoolDayItem.class); // ±à¼­Ò³Ãæ¹ýÂ˵±Ç°Ñ§Äê List dayItemLst = new ArrayList(); if(StringUtils.isNotBlank(dayItemId)){ for (SchSchoolDayItem dayItem : dayItemList) { if(!dayItem.getDayItemId().equals(dayItemId)){ dayItemLst.add(dayItem); } } return dayItemLst; }else{ return dayItemList; } } @Override public Result deleteSchoolDayItem(String[] dayItemIds) { String hql = "update SchSchoolDayItem set deleteFlag = true where dayItemId = ? "; return bulkUpdateInLoop(hql, dayItemIds); } }