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.SchSchoolYear; import com.qxueyou.scc.school.service.ISchoolYearService; @Service public class SchoolYearService extends CommonAppService implements ISchoolYearService { @Override public Result insertSchoolYear(SchSchoolYear schSchoolYear) { // 验证 Result resultFlag = judgeTime(schSchoolYear); if(StringUtils.isNotBlank(resultFlag.getMsg())){ return resultFlag; } SchSchoolYear schoolYear = null; if(StringUtils.isNotBlank(schSchoolYear.getSchoolYearId())){// 修改 schoolYear = read(SchSchoolYear.class, schSchoolYear.getSchoolYearId()); TraceUtils.setUpdateTrace(schoolYear); schoolYear.setOrgId(ClientUtils.getOrgId()); schoolYear.setStartTime(schSchoolYear.getStartTime()); schoolYear.setEndTime(schSchoolYear.getEndTime()); schoolYear.setName(schSchoolYear.getName()); this.save(schoolYear); }else{ // 新增 schoolYear = new SchSchoolYear(); TraceUtils.setCreateTrace(schoolYear); schoolYear.setOrgId(ClientUtils.getOrgId()); schoolYear.setStartTime(schSchoolYear.getStartTime()); schoolYear.setEndTime(schSchoolYear.getEndTime()); schoolYear.setName(schSchoolYear.getName()); this.save(schoolYear); } return new Result(true); } /** * 判断选择的时间不能包含已添加学年的开始时间至结束时间 * time * @return */ public Result judgeTime( SchSchoolYear schSchoolYear) { // 返回结果 Result resultFlag = new Result(true); List schoolYearLst = setPublic(schSchoolYear.getSchoolYearId()); // 验证 for (int i = 0; i < schoolYearLst.size(); i++) { boolean flagStart = schoolYearLst.get(i).getStartTime().before(schSchoolYear.getStartTime()); boolean flagend = schoolYearLst.get(i).getEndTime().before(schSchoolYear.getEndTime()); if(flagStart == false && flagend == true){ // 选择的时间包含开始时间和结束时间 resultFlag = new Result(true,"选择的学年时间不能包含已添加的学年时间"); break; } } return resultFlag; } /** * 开始时间的回调函数 * schSchoolYear :startTime * @return */ @Override public Result startCallback( SchSchoolYear schSchoolYear) { return callback(schSchoolYear.getStartTime(),schSchoolYear.getSchoolYearId()); } /** * 结束时间的回调函数 * schSchoolYear :endTime * @return */ @Override public Result endCallback( SchSchoolYear schSchoolYear) { return callback(schSchoolYear.getEndTime(),schSchoolYear.getSchoolYearId()); } /** * 判断选择的时间不能在已添加学年的开始时间和结束时间之间 * time * @return */ public Result callback( Date time,String schSchoolYearId) { // 返回结果 Result resultFlag = new Result(true); List schoolYearLst = setPublic(schSchoolYearId); if(schoolYearLst.isEmpty()){ return resultFlag; } for (int i = 0; i < schoolYearLst.size(); i++) { boolean flagStart = schoolYearLst.get(i).getStartTime().before(time); boolean flagend = schoolYearLst.get(i).getEndTime().before(time); if(flagStart == true && flagend == false){ // 选择的时间在开始时间之后结束时间之前 resultFlag = new Result(true,"当前机构已设置该时间的学年"); break; } } return resultFlag; } public List setPublic( String schSchoolYearId) { // 获取当前机构所有学年 String hql = "from SchSchoolYear where deleteFlag is false and orgId = ? order by endTime desc"; List schoolYearList = find(hql, CollectionUtils.newList(ClientUtils.getOrgId()), SchSchoolYear.class); // 编辑页面过滤当前学年 List schoolYearLst = new ArrayList(); if(StringUtils.isNotBlank(schSchoolYearId)){ for (SchSchoolYear schoolYear : schoolYearList) { if(!schoolYear.getSchoolYearId().equals(schSchoolYearId)){ schoolYearLst.add(schoolYear); } } return schoolYearLst; }else{ return schoolYearList; } } @Override public Result deleteSchoolYear(String[] yearIds) { String hql = "update SchSchoolYear set deleteFlag = true where schoolYearId = ? "; return bulkUpdateInLoop(hql, yearIds); } }