package org.fireflow.demo.holiday.module; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Enumeration; import java.util.List; import javax.servlet.ServletContext; import org.fireflow.demo.MainModule; import org.fireflow.demo.holiday.bean.Holiday; import org.fireflow.demo.holiday.bean.LeaveRequest; import org.fireflow.demo.holiday.bean.LeaveRequestDetail; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.ioc.Ioc; import org.nutz.mvc.Mvcs; import org.nutz.trans.Atom; import org.nutz.trans.Trans; /** * 请假申请完成后更新请假申请信息 * * @author apple * */ public class LeaveFormApproveOK { private String daoBeanName = MainModule.DAO_BEAN_NAME;; private Dao dao = null; public void setDao(Dao dao) { this.dao = dao; } public Dao dao() { if (dao == null) { ServletContext servletContext = Mvcs.getServletContext(); if (servletContext != null) { //也行我能直接拿到Ioc容器 Ioc ioc = Mvcs.getIoc(); if (ioc != null) { dao = ioc.get(Dao.class, daoBeanName); return dao; } else { //Search in servletContext.attr Enumeration<String> names = servletContext.getAttributeNames(); while (names.hasMoreElements()) { String attrName = (String) names.nextElement(); Object obj = servletContext.getAttribute(attrName); if (obj instanceof Ioc) { dao = ((Ioc)obj).get(Dao.class, daoBeanName); return dao; } } //还是没找到? 试试新版Mvcs.ctx ioc = Mvcs.ctx.getDefaultIoc(); if (ioc != null) { dao = ioc.get(Dao.class, daoBeanName); return dao; } } } throw new RuntimeException("NutDao not found!!"); } return dao; } /** * 将借款申请的状态改为3,即审批通过状态。 * @param borrowCode */ public void updateHolidaysInfo(String billCode){ final Dao tmpdao = dao(); if (tmpdao==null){ throw new NullPointerException("更新BorrowApplyStatusTo3状态值失败,无法获得dao对象。"); } SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); LeaveRequest leaveRequest = dao().fetch(LeaveRequest.class,billCode); String employeeId = leaveRequest.getEmployeeId(); String leaveType = leaveRequest.getLeaveType(); List<LeaveRequestDetail> detailList = dao().query(LeaveRequestDetail.class, Cnd.where("billCode","=",billCode)); try{ for (LeaveRequestDetail detail : detailList){ Date leaveDate = detail.getLeaveDate(); float totalDays = detail.getTimeSection()==2?1f:0.5f; Calendar calendar = Calendar.getInstance(); calendar.setTime(leaveDate); int year = calendar.get(Calendar.YEAR); calendar.add(Calendar.DATE, -1); Date yesterday = calendar.getTime(); List<Holiday> holidays = dao().query(Holiday.class, Cnd.where("employeeId","=",employeeId) .and("yearStart","<=",leaveDate).and("yearEnd",">=",yesterday)); if (holidays==null || holidays.size()==0){ //插入一条 Holiday holiday = new Holiday(); holiday.setEmployeeId(employeeId); try { holiday.setYearStart(format.parse(year+"-01-01")); holiday.setYearEnd(format.parse(year+"-12-31")); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } holiday.setLastUpdatePerson("sys"); holidays.add(dao().insert(holiday)); } Holiday hld = holidays.get(0); if (Holiday.HOLIDAY_PAID.equals(leaveType)){ hld.setUsedPaidVacationDays(hld.getUsedPaidVacationDays()+totalDays); }else if (Holiday.HOLIDAY_ABSENCE.equals(leaveType)){ hld.setUsedAbsenceLeaveDays(hld.getUsedAbsenceLeaveDays()+totalDays); }else if (Holiday.HOLIDAY_SICK.equals(leaveType)){ hld.setUsedSickLeaveDays(hld.getUsedSickLeaveDays()+totalDays); }else if (Holiday.HOLIDAY_MARITAL.equals(leaveType)){ hld.setUsedMaritalLeaveDays(hld.getUsedMaritalLeaveDays()+totalDays); }else if (Holiday.HOLIDAY_MATERNITY.equals(leaveType)){ hld.setUsedMaternityLeaveDays(hld.getUsedMaternityLeaveDays()+totalDays); }else if (Holiday.HOLIDAY_FUNERAL.equals(leaveType)){ hld.setUsedFuneralLeaveDays(hld.getUsedFuneralLeaveDays()+totalDays); }else{ hld.setUsedAbsenceLeaveDays(hld.getUsedAbsenceLeaveDays()+totalDays); } dao().update(hld); } }catch(Exception e){ e.printStackTrace(); } } }