package com.xcgl.weeklyMeeting.controller; import cn.com.lzt.common.util.DepartUtil; import cn.com.lzt.useractiviti.data.dao.UseractivitiDataDao; import com.xcgl.projecttask.entity.ProjecttaskEntity; import com.xcgl.utils.XcglConstant; import com.xcgl.weeklyMeeting.entity.WeeklyMeetingEntity; import com.xcgl.weeklyMeeting.entity.WeeklyMeetingPage; import com.xcgl.weeklyMeeting.results.BaseResult; import com.xcgl.weeklyMeeting.service.WeeklyMeetingService; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.jeecgframework.core.common.controller.BaseController; import org.jeecgframework.core.common.exception.BusinessException; import org.jeecgframework.core.common.model.json.AjaxJson; import org.jeecgframework.core.util.MyBeanUtils; import org.jeecgframework.core.util.ResourceUtil; import org.jeecgframework.web.system.pojo.base.TSDepart; import org.jeecgframework.web.system.pojo.base.TSUser; import org.jeecgframework.web.system.service.SystemService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; @Controller @RequestMapping(value = "/weeklyMeetingController") public class WeeklyMeetingController extends BaseController { private static final Logger logger = Logger.getLogger(WeeklyMeetingController.class); @Autowired WeeklyMeetingService weeklyMeetingService; @Autowired private SystemService systemService; @Autowired UseractivitiDataDao useractivitiDataDao; @RequestMapping(params = "goAdd") public ModelAndView goAdd(HttpServletRequest request) { Calendar now = Calendar.getInstance(); Integer weekOfYear= now.get(Calendar.WEEK_OF_YEAR); Integer year = now.get(Calendar.YEAR); String weekNum =String.valueOf(year)+weekOfYear; request.setAttribute("weekNum",weekNum); String diffWeekString = request.getParameter("diffWeek"); Integer diffWeek = diffWeekString==null?0:Integer.valueOf(diffWeekString); String watchType = request.getParameter("watchType"); if(StringUtils.equals(watchType,"before")){ diffWeek--; }else if(StringUtils.equals(watchType,"next")){ diffWeek++; } now.add(Calendar.DAY_OF_YEAR,diffWeek*7 ); request.setAttribute("diffWeek",diffWeek); String searchWeekNum = String.valueOf(now.get(Calendar.YEAR))+now.get(Calendar.WEEK_OF_YEAR); String hql = "from WeeklyMeetingEntity where weekNum =? "; String urgent = request.getParameter("urgent"); String importance = request.getParameter("importance"); String executionStatus = request.getParameter("executionStatus"); List args = new ArrayList(); args.add(searchWeekNum); if(StringUtils.isNotBlank(urgent)){ hql += " and urgent=? "; args.add(urgent); } if(StringUtils.isNotBlank(importance)){ hql += " and importance=? "; args.add(importance); } if(StringUtils.isNotBlank(executionStatus)){ if("1".equals(executionStatus)){ hql += " and executionStatus in (?, ?)"; args.add("0"); args.add(executionStatus); }else{ hql += " and executionStatus=? "; args.add(executionStatus); } } TSUser sessionUser = ResourceUtil.getSessionUser(); boolean generalManagerOffice = DepartUtil.userWhetherBelongToGeneralManagerOffice(sessionUser); if(!generalManagerOffice){ hql += " and proposeId=? "; args.add(sessionUser.getId()); } List list = systemService.findHql(hql,args.toArray()); for(WeeklyMeetingEntity entity:list){ String status = entity.getExecutionStatus(); String taskId = entity.getProjectTaskId(); if(StringUtils.isNotBlank(taskId)) { ProjecttaskEntity projecttaskEntity = systemService.get(ProjecttaskEntity.class, taskId); if(projecttaskEntity != null){ if (!StringUtils.equals(status, XcglConstant.TASKSTATUS_DONE)) { String taskStatus = projecttaskEntity.getTaskstatus(); if (StringUtils.equals(taskStatus, XcglConstant.TASKSTATUS_DONE)) { Date endTime = projecttaskEntity.getExeendtime(); Date endDate = projecttaskEntity.getPlanendtime(); entity.setActualCompletion(endTime); if(endTime.getTime() > endDate.getTime()){ entity.setExecutionStatus("40"); }else{ entity.setExecutionStatus(taskStatus); } }else{ Date nowDate = new Date(); Date endDate = projecttaskEntity.getPlanendtime(); if (nowDate.getTime() > endDate.getTime()) { entity.setExecutionStatus("30"); }else{ entity.setExecutionStatus(taskStatus); } } systemService.saveOrUpdate(entity); } entity.setShowProjectTask(new Integer(0).equals(projecttaskEntity.getTemp())); } } } request.setAttribute("list",list); request.setAttribute("userName",sessionUser.getUserName()); request.setAttribute("generalManagerOffice",generalManagerOffice); return new ModelAndView("com/xcgl/weeklyMeeting/weeklyMeeting-add"); } @ResponseBody @RequestMapping(params = "addAndModify") public AjaxJson addAndModify(WeeklyMeetingPage meetingPage, HttpServletRequest request) { AjaxJson j = new AjaxJson(); String message=null; try{ List list = meetingPage.getWeeklyMeetingEntitiyList(); for(WeeklyMeetingEntity entity:list){ String id = entity.getId(); if(StringUtils.isNotBlank(id)) { WeeklyMeetingEntity old = systemService.get(WeeklyMeetingEntity.class, id); WeeklyMeetingEntity oldest = new WeeklyMeetingEntity(); MyBeanUtils.copyBeanNotNull2Bean(old, oldest); MyBeanUtils.copyBeanNotNull2Bean(entity, old); if(compare(old, oldest)){ old.setIssue("0"); old.setExecutionStatus("0"); old.setRemindNum("0"); if(StringUtils.isNotEmpty(old.getProjectTaskId())){ TSDepart depart = useractivitiDataDao.getUserDep(old.getImplementationId()); ProjecttaskEntity projecttaskEntity = systemService.get(ProjecttaskEntity.class, old.getProjectTaskId()); projecttaskEntity.setProjectid(depart.getProjectid()); projecttaskEntity.setOwner(old.getImplementationId()); projecttaskEntity.setDescription(old.getMeetingContent()); projecttaskEntity.setName(old.getMeetingContent()); Date planendTime = old.getExpectedCompletion(); Calendar now = Calendar.getInstance(); now.setTime(planendTime); now.set(Calendar.HOUR_OF_DAY, 17); projecttaskEntity.setPlanendtime(now.getTime()); projecttaskEntity.setTaskstatus("0"); projecttaskEntity.setCompletePer("0"); systemService.saveOrUpdate(projecttaskEntity); } } systemService.saveOrUpdate(old); }else { systemService.saveOrUpdate(entity); } } }catch(Exception e){ e.printStackTrace(); throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } public boolean compare(WeeklyMeetingEntity old, WeeklyMeetingEntity oldest){ if(!(oldest.getMeetingTime().getTime() == old.getMeetingTime().getTime())){ return true; }else if(!oldest.getMeetingContent().equals(old.getMeetingContent())){ return true; }else if(!oldest.getUrgent().equals(old.getUrgent())){ return true; }else if(!oldest.getImportance().equals(old.getImportance())){ return true; }else if(!oldest.getProposeId().equals(old.getProposeId())){ return true; }else if(!oldest.getProposeName().equals(old.getProposeName())){ return true; }else if(!oldest.getImplementationId().equals(old.getImplementationId())){ return true; }else if(!oldest.getImplementationName().equals(old.getImplementationName())){ return true; }else if(!(oldest.getExpectedCompletion().getTime() == old.getExpectedCompletion().getTime())){ return true; } return false; } @ResponseBody @RequestMapping(params = "queryList") public BaseResult queryList(HttpServletRequest request) { return weeklyMeetingService.queryList(request); } @ResponseBody @RequestMapping(params = "deleteRecord") public BaseResult deleteRecord(HttpServletRequest request) { return weeklyMeetingService.deleteRecord(request); } @ResponseBody @RequestMapping(params = "issueTask") public BaseResult issueTask(HttpServletRequest request) { return weeklyMeetingService.issueTask(request); } @ResponseBody @RequestMapping(params = "reexecution") public BaseResult reexecution(HttpServletRequest request) { return weeklyMeetingService.reexecution(request); } @ResponseBody @RequestMapping(params = "revokeTask") public BaseResult revokeTask(HttpServletRequest request) { return weeklyMeetingService.revokeTask(request); } }