AtsOverTimeBillBatchEditHandlerExEx.java 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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.AtsOverTimeBillBatchEditHandler;
  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. /**
  32. * 多人加班单表单Handler
  33. * @author xiaoxin
  34. *
  35. */
  36. public class AtsOverTimeBillBatchEditHandlerExEx extends AtsOverTimeBillBatchEditHandlerEx{
  37. private static Logger logger =
  38. Logger.getLogger("com.kingdee.shr.customer.gtiit.handler.AtsOverTimeBillBatchEditHandlerExEx");
  39. @Override
  40. protected void verifyModel(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo model)
  41. throws SHRWebException {
  42. super.verifyModel(request, response, model);
  43. //增加一位员工每个自然月只能提一张加班单校验
  44. checkOnlyTakeOneBill(request, response, model);
  45. }
  46. /**
  47. * 一位员工每个自然月只能提一张加班单校验
  48. * @param request
  49. * @param response
  50. * @param model
  51. */
  52. protected void checkOnlyTakeOneBill(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo model) throws ShrWebBizException {
  53. Context ctx = SHRContext.getInstance().getContext();
  54. try {
  55. AtsOverTimeBillInfo billInfo = (AtsOverTimeBillInfo) model;
  56. AtsOverTimeBillEntryCollection entries = billInfo.getEntries();
  57. StringBuilder sql = new StringBuilder(" select e.fid from T_HR_ATS_OVERTIMEBILL b ");
  58. sql.append(" left join T_HR_ATS_OVERTIMEBILLentry e on b.fid= e.fbillid ");
  59. sql.append(" where e.fpersonid=? and b.fbillstate='3' and e.fotdate>={ts ?} and e.fotdate<={ts ?} ");
  60. SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
  61. for (int i = 0; i < entries.size(); i++) {
  62. AtsOverTimeBillEntryInfo ats = entries.get(i);
  63. Date otdate = ats.getOtDate();
  64. PersonInfo personInfo = ats.getPerson();
  65. Calendar calendar = Calendar.getInstance();
  66. calendar.setTime(otdate);
  67. calendar.set(Calendar.DAY_OF_MONTH, 1);
  68. String fotdate1 = sf.format(calendar.getTime());
  69. calendar.add(Calendar.MONTH, 1);
  70. calendar.add(Calendar.DAY_OF_MONTH, -1);
  71. String fotdate2 = sf.format(calendar.getTime());
  72. IRowSet rs = DbUtil.executeQuery(ctx, sql.toString(), new String[]{personInfo.getId().toString(), fotdate1, fotdate2});
  73. if(rs.size()>0){
  74. throw new ShrWebBizException("Each employee can apply for overtime only once per natural month.Employee ("+personInfo.getName()+") has already applied.");
  75. }
  76. }
  77. }catch (BOSException e){
  78. e.printStackTrace();
  79. }
  80. }
  81. }