123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package com.kingdee.shr.customer.gtiit.handler;
- import com.kingdee.bos.BOSException;
- import com.kingdee.bos.Context;
- import com.kingdee.eas.basedata.person.PersonInfo;
- import com.kingdee.eas.framework.CoreBaseInfo;
- import com.kingdee.eas.hr.ats.AtsOverTimeBillEntryCollection;
- import com.kingdee.eas.hr.ats.AtsOverTimeBillEntryInfo;
- import com.kingdee.eas.hr.ats.AtsOverTimeBillInfo;
- import com.kingdee.eas.hr.ats.AttendFileStateEnum;
- import com.kingdee.eas.util.app.DbUtil;
- import com.kingdee.jdbc.rowset.IRowSet;
- import com.kingdee.shr.ats.web.handler.PerAtsOverTimeBillBatchEditHandler;
- import com.kingdee.shr.base.syssetting.context.SHRContext;
- import com.kingdee.shr.base.syssetting.exception.SHRWebException;
- import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
- import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
- import com.kingdee.shr.customer.gtiit.util.BaseUtil;
- import com.kingdee.shr.customer.gtiit.util.DateTimeUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.log4j.Logger;
- import org.springframework.ui.ModelMap;
- import org.springframework.util.LinkedMultiValueMap;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.sql.SQLException;
- import java.text.SimpleDateFormat;
- import java.time.Instant;
- import java.time.LocalTime;
- import java.time.ZoneId;
- import java.util.*;
- public class PerAtsOverTimeBillBatchEditHandlerExEx extends PerAtsOverTimeBillBatchEditHandlerEx {
- private static Logger logger = Logger
- .getLogger("com.kingdee.shr.customer.gtiit.handler.PerAtsOverTimeBillBatchEditHandlerExEx");
- @Override
- protected void verifyModel(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo model)
- throws SHRWebException {
- super.verifyModel(request, response, model);
- //增加一位员工每个自然月只能提一张加班单校验
- checkOnlyTakeOneBill(request, response, model);
- }
- /**
- * 一位员工每个自然月只能提一张加班单校验
- * @param request
- * @param response
- * @param model
- */
- protected void checkOnlyTakeOneBill(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo model) throws ShrWebBizException {
- Context ctx = SHRContext.getInstance().getContext();
- try {
- AtsOverTimeBillInfo billInfo = (AtsOverTimeBillInfo) model;
- AtsOverTimeBillEntryCollection entries = billInfo.getEntries();
- StringBuilder sql = new StringBuilder(" select e.fid from T_HR_ATS_OVERTIMEBILL b ");
- sql.append(" left join T_HR_ATS_OVERTIMEBILLentry e on b.fid= e.fbillid ");
- sql.append(" where e.fpersonid=? and b.fbillstate='3' and e.fotdate>={ts ?} and e.fotdate<={ts ?} ");
- SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
- for (int i = 0; i < entries.size(); i++) {
- AtsOverTimeBillEntryInfo ats = entries.get(i);
- Date otdate = ats.getOtDate();
- PersonInfo personInfo = ats.getPerson();
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(otdate);
- calendar.set(Calendar.DAY_OF_MONTH, 1);
- String fotdate1 = sf.format(calendar.getTime());
- calendar.add(Calendar.MONTH, 1);
- calendar.add(Calendar.DAY_OF_MONTH, -1);
- String fotdate2 = sf.format(calendar.getTime());
- IRowSet rs = DbUtil.executeQuery(ctx, sql.toString(), new String[]{personInfo.getId().toString(), fotdate1, fotdate2});
- if(rs.size()>0){
- throw new ShrWebBizException("Each employee can apply for overtime only once per natural month.Employee ("+personInfo.getName()+") has already applied.");
- }
- }
- }catch (BOSException e){
- e.printStackTrace();
- }
- }
- }
|