PositionAdminRangeF7HandlerEx.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package com.kingdee.eas.hr.emp.web.handler;
  2. import java.sql.SQLException;
  3. import java.text.MessageFormat;
  4. import java.text.SimpleDateFormat;
  5. import java.util.ArrayList;
  6. import java.util.Date;
  7. import java.util.List;
  8. import java.util.Map;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import com.kingdee.bos.BOSException;
  12. import com.kingdee.bos.Context;
  13. import com.kingdee.bos.metadata.entity.*;
  14. import com.kingdee.eas.basedata.cm.util.BDUtils;
  15. import com.kingdee.eas.basedata.framework.util.BDUtil;
  16. import com.kingdee.eas.hr.base.EmpPosOrgRelationCollection;
  17. import com.kingdee.eas.hr.base.EmpPosOrgRelationFactory;
  18. import com.kingdee.eas.hr.base.EmpPosOrgRelationInfo;
  19. import com.kingdee.eas.hr.base.IEmpPosOrgRelation;
  20. import com.kingdee.eas.util.app.DbUtil;
  21. import com.kingdee.jdbc.rowset.IRowSet;
  22. import com.kingdee.shr.base.syssetting.context.SHRContext;
  23. import com.kingdee.shr.base.syssetting.json.GridDataEntity;
  24. import com.kingdee.shr.base.syssetting.web.handler.ListHandler;
  25. import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
  26. import com.kingdee.util.DateTimeUtils;
  27. import com.kingdee.util.StringUtils;
  28. import org.apache.log4j.Logger;
  29. import org.springframework.ui.ModelMap;
  30. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  31. /**
  32. * 兼职单
  33. *
  34. * @author coyle
  35. * 20250331
  36. */
  37. public class PositionAdminRangeF7HandlerEx extends EmpOrgF7Handler {
  38. private static Logger logger = Logger.getLogger(PositionAdminRangeF7HandlerEx.class);
  39. Context ctx = SHRContext.getInstance().getContext();
  40. public String getListDataAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
  41. throws SHRWebException {
  42. String modelFilter = (String) modelMap.get("filter");
  43. if (StringUtils.isEmpty(modelFilter)) {
  44. String filter = request.getParameter("filter");
  45. String personId = filter.substring(filter.indexOf("idRanFromPluralityDel") + "idRanFromPluralityDel".length());
  46. logger.error("filter ----" + filter);
  47. logger.error("personId-----" + personId);
  48. if (null != filter) {
  49. String empBatchEnrollConsecutiveAddNew;
  50. String filterEndSign;
  51. if (filter.indexOf("idRanFromPluralityAdd") != -1) {
  52. empBatchEnrollConsecutiveAddNew = filter.substring(0, filter.indexOf("idRanFromPluralityAdd"));
  53. filterEndSign = filter
  54. .substring(filter.indexOf("idRanFromPluralityAdd") + "idRanFromPluralityAdd".length());
  55. if (!StringUtils.isEmpty(filterEndSign)) {
  56. filter = empBatchEnrollConsecutiveAddNew
  57. + " id not in (select fpositionid from T_HR_EmpOrgRelation t where t.fpersonid='"
  58. + filterEndSign + "' and t.fleffdt = {2199-12-31} and t.FISSYSTEM = 1)";
  59. } else {
  60. filter = empBatchEnrollConsecutiveAddNew;
  61. }
  62. modelMap.put("filter", filter);
  63. }
  64. if (filter.indexOf("idRanFromPluralityDel") != -1) {
  65. ////202503 日期更改
  66. Date curDate = new Date();
  67. String dateStr = DateTimeUtils.format(curDate, "yyyy-MM-dd");
  68. empBatchEnrollConsecutiveAddNew = filter.substring(0, filter.indexOf("idRanFromPluralityDel"));
  69. filterEndSign = filter
  70. .substring(filter.indexOf("idRanFromPluralityDel") + "idRanFromPluralityDel".length());
  71. filter = empBatchEnrollConsecutiveAddNew
  72. + " id in (select fpositionid from T_HR_EmpOrgRelation t where t.fpersonid='"
  73. + filterEndSign
  74. + "' and t.fleffdt >= {" + dateStr + "} and t.fassigntype=0 and t.fisInner = 1 and t.FActionID not in ('jpoAAAH/03nmaL7Z','V2vNOLaKRuGuv9/HNB5laOZovtk='))";
  75. modelMap.put("filter", filter);
  76. }
  77. if (filter.indexOf("idRanFromPositionHierarchy") != -1) {
  78. empBatchEnrollConsecutiveAddNew = filter.substring(0, filter.indexOf("idRanFromPositionHierarchy"));
  79. filterEndSign = filter.substring(
  80. filter.indexOf("idRanFromPositionHierarchy") + "idRanFromPositionHierarchy".length());
  81. filter = empBatchEnrollConsecutiveAddNew
  82. + " id in (select fchildid from T_ORG_PositionHierarchy where FHierarchyID = '"
  83. + filterEndSign + "')";
  84. modelMap.put("filter", filter);
  85. }
  86. if (filter.indexOf("F7query") != -1) {
  87. filter = filter.replace("F7query", "select");
  88. modelMap.put("filter", filter);
  89. }
  90. if (filter.indexOf("=''") != -1) {
  91. filter = filter.replace("=''", " is not null");
  92. modelMap.put("filter", filter);
  93. }
  94. if (filter.indexOf("empBatchEnrollConsecutiveAddNew") != -1) {
  95. empBatchEnrollConsecutiveAddNew = "empBatchEnrollConsecutiveAddNew";
  96. filterEndSign = "filterEndSign";
  97. int start = filter.indexOf(empBatchEnrollConsecutiveAddNew);
  98. int end = filter.indexOf(filterEndSign) + filterEndSign.length();
  99. String partFilterStr = filter.substring(start, end);
  100. String partFilterParam = partFilterStr.substring(empBatchEnrollConsecutiveAddNew.length(),
  101. partFilterStr.indexOf(filterEndSign));
  102. String[] partFilterParamArr = partFilterParam.split(",");
  103. String partFilterStrAfterTranfer = "";
  104. if (partFilterParamArr.length == 2) {
  105. String bizManageTypeId = partFilterParamArr[0];
  106. String manageHrOrgID = partFilterParamArr[1];
  107. partFilterStrAfterTranfer = "adminOrgUnit.id in (select FAdminOrgID from T_HR_AdminOrgBURelation where fbizManagetypeId='"
  108. + bizManageTypeId + "' and FManageHrOrgID = '" + manageHrOrgID + "' and fstate = 1)";
  109. }
  110. filter = filter.replace(partFilterStr, partFilterStrAfterTranfer);
  111. modelMap.put("filter", filter);
  112. }
  113. }
  114. this.prepareQueryList(request, response, modelMap);
  115. long start = 0L;
  116. long end = 0L;
  117. if (logger.isDebugEnabled()) {
  118. start = (new Date()).getTime();
  119. }
  120. GridDataEntity gridDataEntity = this.getGridRequestData(request, response, modelMap);
  121. if (logger.isDebugEnabled()) {
  122. end = (new Date()).getTime();
  123. logger.debug(MessageFormat.format("handler: {0}, get list data, cost: {1}", this.getClass().getName(), end - start));
  124. }
  125. this.afterGetListData(request, response, gridDataEntity);
  126. this.doFieldPermFilter(gridDataEntity);
  127. try {
  128. //新增开始结束数据
  129. List<Map<String, Object>> rows = gridDataEntity.getRows();
  130. for (Map<String, Object> map : rows) {
  131. String positionNumber = (String) map.get("number");
  132. String effdeAndLeffdeSql = getEffdeAndLeffdeSql(personId, positionNumber);
  133. logger.error("effdeAndLeffdeSql" + effdeAndLeffdeSql);
  134. IRowSet rowSet = DbUtil.executeQuery(ctx, effdeAndLeffdeSql);
  135. if (rowSet.next()) {
  136. map.put("EmpPosOrgRelation.EFFDT", rowSet.getString("effdt"));
  137. map.put("EmpPosOrgRelation.LEFFDT", rowSet.getString("leffdt"));
  138. }
  139. }
  140. } catch (Exception e) {
  141. e.printStackTrace();
  142. throw new RuntimeException(e);
  143. }
  144. JSONUtils.writeJson(response, gridDataEntity);
  145. }
  146. return null;
  147. }
  148. public String getEffdeAndLeffdeSql(String personId, String positionNumber) {
  149. StringBuilder sb = new StringBuilder();
  150. sb.append("select ").append("\n");
  151. sb.append("porgerelation.feffdt as effdt ,").append("\n");
  152. sb.append("porgerelation.fleffdt as leffdt ").append("\n");
  153. sb.append("from T_HR_EMPORGRELATION porgerelation").append("\n");
  154. sb.append("left join T_ORG_Position position on porgerelation.FPOSITIONID= position.fid").append("\n");
  155. sb.append(" where position.fnumber='" + positionNumber + "' ").append("\n");
  156. sb.append("and fpersonid = '" + personId + "' ").append("\n");
  157. sb.append("order by porgerelation.feffdt desc").append("\n");
  158. return sb.toString();
  159. }
  160. }