OrgAdjustHandlerEx.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package com.kingdee.eas.hr.org.web.handler;
  2. import com.kingdee.bos.BOSException;
  3. import com.kingdee.bos.Context;
  4. import com.kingdee.eas.common.EASBizException;
  5. import com.kingdee.eas.hr.org.web.handler.OrgAdjustHandler;
  6. import com.kingdee.eas.util.app.DbUtil;
  7. import com.kingdee.jdbc.rowset.IRowSet;
  8. import com.kingdee.shr.base.syssetting.app.osf.OSFAppUtil;
  9. import com.kingdee.shr.base.syssetting.context.SHRContext;
  10. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  11. import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
  12. import java.sql.SQLException;
  13. import java.util.ArrayList;
  14. import java.util.HashMap;
  15. import java.util.Map;
  16. import javax.servlet.http.HttpServletRequest;
  17. import javax.servlet.http.HttpServletResponse;
  18. import org.springframework.ui.ModelMap;
  19. public class OrgAdjustHandlerEx extends OrgAdjustHandler {
  20. Context ctx = SHRContext.getInstance().getContext();
  21. public OrgAdjustHandlerEx() {
  22. }
  23. public String beforeEffectAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
  24. String schemeId = request.getParameter("schemeId");
  25. Map<String, String> OrgRecMap = this.getOrgRecValue(schemeId);
  26. new HashMap();
  27. String sendAD = null;
  28. if (((String)OrgRecMap.get("state")).equals("1")) {
  29. sendAD = this.createLdapAdmin(OrgRecMap);
  30. System.out.println("sendAD:" + sendAD);
  31. }
  32. if (sendAD.indexOf("成功") != -1) {
  33. System.out.println(sendAD);
  34. return super.beforeEffectAction(request, response, modelMap);
  35. } else if (sendAD.indexOf("挂靠组织") != -1) {
  36. System.out.println(sendAD);
  37. return super.beforeEffectAction(request, response, modelMap);
  38. } else {
  39. System.out.println(sendAD);
  40. throw new ShrWebBizException(sendAD);
  41. }
  42. }
  43. private String createLdapAdmin(Map<String, String> OrgRecMap) {
  44. StringBuffer bolState = new StringBuffer();
  45. ArrayList<HashMap<String, Object>> orgList = new ArrayList();
  46. HashMap<String, Object> orgs = new HashMap();
  47. Map ouMap = this.getOu(OrgRecMap);
  48. System.out.println("ouMap:" + ouMap);
  49. orgs.put("ou1", ouMap.get("ou").toString());
  50. orgs.put("ou2", "深圳市标准技术研究院");
  51. orgs.put("actions", ouMap.get("actions").toString());
  52. orgList.add(orgs);
  53. HashMap<String, ArrayList<HashMap<String, Object>>> ldapMap = new HashMap();
  54. ldapMap.put("orgList", orgList);
  55. try {
  56. String eroState = OSFAppUtil.callService(this.ctx, "OrganizationLdapsService", ldapMap).toString();
  57. bolState.append(eroState);
  58. } catch (EASBizException var8) {
  59. bolState.append("调用同步AD域OSF接口OrganizationLdapsService失败," + var8.getMessage() + "!");
  60. } catch (BOSException var9) {
  61. bolState.append(var9.getMessage());
  62. }
  63. return bolState.toString();
  64. }
  65. private Map getOu(Map adminMap) {
  66. Map ouVal = new HashMap();
  67. String state = null;
  68. Map beforeMovMap = this.getAdminValById(adminMap.get("beforeMov").toString());
  69. beforeMovMap.get("adminType").toString();
  70. String[] beforAdminString = beforeMovMap.get("displayName").toString().split("_");
  71. Map afterMovMap = this.getAdminValById(adminMap.get("afterMov").toString());
  72. String afterAdminType = afterMovMap.get("adminType").toString();
  73. if (afterAdminType != null && afterAdminType != " ") {
  74. afterMovMap.get("displayName").toString().split("_");
  75. Map adminsMap = this.getAdminValById(adminMap.get("id").toString());
  76. String[] adminsString = adminsMap.get("displayName").toString().split("_");
  77. if (afterAdminType.equals("民非组织") && adminsString.length == 2) {
  78. this.createReserveFieldFirst(adminMap.get("id").toString(), beforeMovMap.get("adminType").toString());
  79. if (beforAdminString.length > 2) {
  80. ouVal.put("ou", adminsString[adminsString.length - 1].toString());
  81. ouVal.put("actions", "add");
  82. }
  83. }
  84. if (afterAdminType.equals("内部组织") && adminsString.length == 3) {
  85. this.createReserveFieldFirst(adminMap.get("id").toString(), beforeMovMap.get("adminType").toString());
  86. if (beforAdminString.length > 3) {
  87. ouVal.put("ou", adminsString[adminsString.length - 1].toString());
  88. ouVal.put("actions", "add");
  89. }
  90. }
  91. if (afterAdminType.equals("内部组织") && adminsString.length > 3) {
  92. this.createReserveFieldFirst(adminMap.get("id").toString(), beforeMovMap.get("adminType").toString());
  93. if (beforAdminString.length <= 3) {
  94. ouVal.put("ou", adminsString[adminsString.length - 1].toString());
  95. ouVal.put("actions", "delete");
  96. }
  97. }
  98. } else {
  99. state = "false";
  100. }
  101. ouVal.put("state", state);
  102. return ouVal;
  103. }
  104. private Map<String, String> getAdminValById(String adminID) {
  105. Map<String, String> adminVal = new HashMap();
  106. StringBuffer sql = new StringBuffer();
  107. sql.append("select * from T_ORG_Admin WHERE FID = '").append(adminID).append("'");
  108. try {
  109. IRowSet rs = DbUtil.executeQuery(this.ctx, sql.toString());
  110. while(rs.next()) {
  111. adminVal.put("name", rs.getString("FName_L2"));
  112. adminVal.put("displayName", rs.getString("FDisplayName_L2"));
  113. adminVal.put("adminType", rs.getString("FReserveFieldFirst"));
  114. }
  115. } catch (BOSException var6) {
  116. var6.printStackTrace();
  117. } catch (SQLException var7) {
  118. var7.printStackTrace();
  119. }
  120. return adminVal;
  121. }
  122. private Map<String, String> getOrgRecValue(String schemeId) {
  123. Map<String, String> orgRecMap = new HashMap();
  124. StringBuffer sql = new StringBuffer();
  125. sql.append("SELECT orgRec.fEnableStatus as state,orgRec.fBeforeMovParentID as BeforeMov,orgRec.fAfterMovParentID as AfterMov,admin.FID as idFROM T_HR_AdminOrgUnitVer orgVer INNER JOIN T_HR_OrgVerAdjRec orgRec ON orgVer.FID = orgRec.fOrgVerId INNER JOIN T_ORG_Admin admin ON orgVer.FAdminOrgUnitID = admin.FID WHERE orgRec.fOrgAdjSchm = '" + schemeId + "'");
  126. try {
  127. IRowSet rs = DbUtil.executeQuery(this.ctx, sql.toString());
  128. while(rs.next()) {
  129. orgRecMap.put("id", rs.getString("id"));
  130. orgRecMap.put("state", "state");
  131. orgRecMap.put("beforeMov", "BeforeMov");
  132. orgRecMap.put("afterMov", "AfterMov");
  133. }
  134. } catch (BOSException var5) {
  135. var5.printStackTrace();
  136. } catch (SQLException var6) {
  137. var6.printStackTrace();
  138. }
  139. return orgRecMap;
  140. }
  141. private void createReserveFieldFirst(String id, String reserveFieldFirst) {
  142. StringBuffer sql = new StringBuffer();
  143. sql.append("update T_ORG_Admin set FReserveFieldFirst = '").append(reserveFieldFirst).append("'").append(" where FID = '").append(id).append("'");
  144. try {
  145. DbUtil.execute(this.ctx, sql.toString());
  146. } catch (BOSException var5) {
  147. var5.printStackTrace();
  148. }
  149. }
  150. }