f64e55c24253ee0a20dd5ef82231abb7911eeaf3.svn-base 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package com.kingdee.shr.compensation.web.handler.integrate;
  2. import java.math.BigDecimal;
  3. import java.sql.SQLException;
  4. import java.text.ParseException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.ArrayList;
  7. import java.util.Calendar;
  8. import java.util.Date;
  9. import java.util.HashSet;
  10. import java.util.List;
  11. import java.util.Map;
  12. import java.util.Set;
  13. import javax.servlet.http.HttpServletRequest;
  14. import javax.servlet.http.HttpServletResponse;
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.apache.log4j.Logger;
  17. import com.kingdee.bos.BOSException;
  18. import com.kingdee.bos.Context;
  19. import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
  20. import com.kingdee.customer.util.handler.ConfigurationHandler;
  21. import com.kingdee.eas.basedata.person.PersonInfo;
  22. import com.kingdee.eas.common.EASBizException;
  23. import com.kingdee.eas.framework.CoreBaseInfo;
  24. import com.kingdee.eas.util.app.ContextUtil;
  25. import com.kingdee.eas.util.app.DbUtil;
  26. import com.kingdee.jdbc.rowset.IRowSet;
  27. import com.kingdee.shr.base.syssetting.context.SHRContext;
  28. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  29. import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
  30. import com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBillCollection;
  31. import com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBillEntryCollection;
  32. import com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBillEntryInfo;
  33. import com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBillFactory;
  34. import com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBillInfo;
  35. import com.kingdee.shr.compensation.app.integrate.CalSubmitSchemeInfo;
  36. import com.kingdee.shr.customer.gtiit.util.DateTimeUtils;
  37. /**
  38. * 专业应用提报列表
  39. * @author 86133
  40. *
  41. */
  42. public class BatchSubmitShemeBillListHandlerEx extends BatchSubmitShemeBillListHandler{
  43. private static Logger logger =
  44. Logger.getLogger("com.kingdee.shr.compensation.web.handler.integrate.BatchSubmitShemeBillListHandlerEx");
  45. @Override
  46. protected void beforeSubmit(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo model)
  47. throws SHRWebException {
  48. super.beforeSubmit(request, response, model);
  49. Context ctx = SHRContext.getInstance().getContext();
  50. BatchSubmitShemeBillInfo info = (BatchSubmitShemeBillInfo) model;
  51. if(StringUtils.isNotBlank(info.getString("id"))) {
  52. try {
  53. info = BatchSubmitShemeBillFactory.getLocalInstance(ctx).getBatchSubmitShemeBillInfo(new ObjectUuidPK(info.getString("id")));
  54. } catch (EASBizException e) {
  55. e.printStackTrace();
  56. } catch (BOSException e) {
  57. e.printStackTrace();
  58. }
  59. }
  60. //校验员工+提报月+方案只能提交一次
  61. BatchSubmitSchemeUtils.checkSubmitCount(info);
  62. //参数校验
  63. BatchSubmitSchemeUtils.checkExists(info);
  64. //校验分录人员是否重复
  65. BatchSubmitSchemeUtils.checkPersonRepeat(info);
  66. //校验只能提交发生日期和提报日期在一个月内的单据
  67. BatchSubmitSchemeUtils.checkSubmitDate(info);
  68. checkAmount(info);
  69. //校验员工+方案+发生日期不能重复
  70. BatchSubmitSchemeUtils.checkSubmitRepeat(info);
  71. }
  72. /**
  73. * 校验提报项目不能都为0或空
  74. * @param info
  75. * @throws ShrWebBizException
  76. */
  77. private void checkAmount(BatchSubmitShemeBillInfo info) throws ShrWebBizException{
  78. Context ctx = SHRContext.getInstance().getContext();
  79. CalSubmitSchemeInfo submitScheme = info.getSubmitScheme();
  80. String submitSchemeId = submitScheme.getId().toString();
  81. String sql = "SELECT a.FIELDSN,c.FBILLENTRYTABLENAME FROM T_HR_SCalSubmitItem a left join T_HR_SCalSubmitSchemeItem b on a.fid=b.fcalsubmititemid left join T_HR_SCalShemeTableRelation c on b.FCALSUBMITSCHEMEID = c.fsubmitschemeid where b.FCALSUBMITSCHEMEID = '"+submitSchemeId+"' and b.FISSHOW = '1' and b.FSTATE = '1'";
  82. logger.error("查询提报项目字段名和表面SQL:"+sql);
  83. List<String> list = new ArrayList<String>();
  84. String tableName = "";
  85. try {
  86. IRowSet iRowSet = DbUtil.executeQuery(ctx, sql);
  87. while(iRowSet.next()) {
  88. list.add("S"+iRowSet.getString("FIELDSN"));
  89. tableName = iRowSet.getString("FBILLENTRYTABLENAME");
  90. }
  91. logger.error("字段集合:"+list+",表名:"+tableName);
  92. if(list.size()==0) {
  93. return;
  94. }
  95. String fields = String.join(",", list);
  96. String schemeSql = "SELECT "+fields+" FROM "+tableName+" where fbillid = '"+info.getId().toString()+"' ";
  97. logger.error("查询提报项目数据SQL:"+schemeSql);
  98. IRowSet schemeRow = DbUtil.executeQuery(ctx, schemeSql);
  99. while(schemeRow.next()) {
  100. int count = 0;
  101. for(String itemField:list) {
  102. Object fieldObject = schemeRow.getObject(itemField);
  103. if(fieldObject instanceof Number) {
  104. BigDecimal itemNumber = schemeRow.getBigDecimal(itemField)==null?BigDecimal.ZERO:schemeRow.getBigDecimal(itemField);
  105. if(itemNumber.compareTo(BigDecimal.ZERO) == 0) {
  106. count++;
  107. }
  108. }else {
  109. if(StringUtils.isBlank(schemeRow.getString(itemField))) {
  110. count++;
  111. }
  112. }
  113. }
  114. if(count == list.size()) {
  115. throw new ShrWebBizException("The submitted project must have a non empty one");
  116. }
  117. }
  118. } catch (BOSException e) {
  119. e.printStackTrace();
  120. } catch (SQLException e) {
  121. e.printStackTrace();
  122. }
  123. }
  124. }