PerAtsOverTimeBillBatchEditHandlerExEx.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package com.kingdee.shr.customer.gtiit.handler;
  2. import com.kingdee.bos.BOSException;
  3. import com.kingdee.bos.Context;
  4. import com.kingdee.eas.basedata.person.PersonInfo;
  5. import com.kingdee.eas.framework.CoreBaseInfo;
  6. import com.kingdee.eas.hr.ats.AtsOverTimeBillEntryCollection;
  7. import com.kingdee.eas.hr.ats.AtsOverTimeBillEntryInfo;
  8. import com.kingdee.eas.hr.ats.AtsOverTimeBillInfo;
  9. import com.kingdee.eas.hr.ats.AttendFileStateEnum;
  10. import com.kingdee.eas.util.app.DbUtil;
  11. import com.kingdee.jdbc.rowset.IRowSet;
  12. import com.kingdee.shr.ats.web.handler.PerAtsOverTimeBillBatchEditHandler;
  13. import com.kingdee.shr.base.syssetting.context.SHRContext;
  14. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  15. import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
  16. import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
  17. import com.kingdee.shr.customer.gtiit.util.BaseUtil;
  18. import com.kingdee.shr.customer.gtiit.util.DateTimeUtils;
  19. import org.apache.commons.lang3.StringUtils;
  20. import org.apache.log4j.Logger;
  21. import org.springframework.ui.ModelMap;
  22. import org.springframework.util.LinkedMultiValueMap;
  23. import javax.servlet.http.HttpServletRequest;
  24. import javax.servlet.http.HttpServletResponse;
  25. import java.sql.SQLException;
  26. import java.text.SimpleDateFormat;
  27. import java.time.Instant;
  28. import java.time.LocalTime;
  29. import java.time.ZoneId;
  30. import java.util.*;
  31. public class PerAtsOverTimeBillBatchEditHandlerExEx extends PerAtsOverTimeBillBatchEditHandlerEx {
  32. private static Logger logger = Logger
  33. .getLogger("com.kingdee.shr.customer.gtiit.handler.PerAtsOverTimeBillBatchEditHandlerExEx");
  34. @Override
  35. protected void verifyModel(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo model)
  36. throws SHRWebException {
  37. super.verifyModel(request, response, model);
  38. //增加一位员工每个自然月只能提一张加班单校验
  39. checkOnlyTakeOneBill(request, response, model);
  40. }
  41. /**
  42. * 一位员工每个自然月只能提一张加班单校验
  43. * @param request
  44. * @param response
  45. * @param model
  46. */
  47. protected void checkOnlyTakeOneBill(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo model) throws ShrWebBizException {
  48. Context ctx = SHRContext.getInstance().getContext();
  49. try {
  50. AtsOverTimeBillInfo billInfo = (AtsOverTimeBillInfo) model;
  51. AtsOverTimeBillEntryCollection entries = billInfo.getEntries();
  52. StringBuilder sql = new StringBuilder(" select e.fid from T_HR_ATS_OVERTIMEBILL b ");
  53. sql.append(" left join T_HR_ATS_OVERTIMEBILLentry e on b.fid= e.fbillid ");
  54. sql.append(" where e.fpersonid=? and b.fbillstate='3' and e.fotdate>={ts ?} and e.fotdate<={ts ?} ");
  55. SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
  56. for (int i = 0; i < entries.size(); i++) {
  57. AtsOverTimeBillEntryInfo ats = entries.get(i);
  58. Date otdate = ats.getOtDate();
  59. PersonInfo personInfo = ats.getPerson();
  60. Calendar calendar = Calendar.getInstance();
  61. calendar.setTime(otdate);
  62. calendar.set(Calendar.DAY_OF_MONTH, 1);
  63. String fotdate1 = sf.format(calendar.getTime());
  64. calendar.add(Calendar.MONTH, 1);
  65. calendar.add(Calendar.DAY_OF_MONTH, -1);
  66. String fotdate2 = sf.format(calendar.getTime());
  67. IRowSet rs = DbUtil.executeQuery(ctx, sql.toString(), new String[]{personInfo.getId().toString(), fotdate1, fotdate2});
  68. if(rs.size()>0){
  69. throw new ShrWebBizException("Each employee can apply for overtime only once per natural month.Employee ("+personInfo.getName()+") has already applied.");
  70. }
  71. }
  72. }catch (BOSException e){
  73. e.printStackTrace();
  74. }
  75. }
  76. }