package com.kingdee.eas.hr.org.web.handler; import com.kingdee.bos.BOSException; import com.kingdee.bos.Context; import com.kingdee.eas.common.EASBizException; import com.kingdee.eas.hr.org.web.handler.OrgAdjustHandler; import com.kingdee.eas.util.app.DbUtil; import com.kingdee.jdbc.rowset.IRowSet; import com.kingdee.shr.base.syssetting.app.osf.OSFAppUtil; import com.kingdee.shr.base.syssetting.context.SHRContext; import com.kingdee.shr.base.syssetting.exception.SHRWebException; import com.kingdee.shr.base.syssetting.exception.ShrWebBizException; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.ui.ModelMap; public class OrgAdjustHandlerEx extends OrgAdjustHandler { Context ctx = SHRContext.getInstance().getContext(); public OrgAdjustHandlerEx() { } public String beforeEffectAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException { String schemeId = request.getParameter("schemeId"); Map OrgRecMap = this.getOrgRecValue(schemeId); new HashMap(); String sendAD = null; if (((String)OrgRecMap.get("state")).equals("1")) { sendAD = this.createLdapAdmin(OrgRecMap); System.out.println("sendAD:" + sendAD); } if (sendAD.indexOf("成功") != -1) { System.out.println(sendAD); return super.beforeEffectAction(request, response, modelMap); } else if (sendAD.indexOf("挂靠组织") != -1) { System.out.println(sendAD); return super.beforeEffectAction(request, response, modelMap); } else { System.out.println(sendAD); throw new ShrWebBizException(sendAD); } } private String createLdapAdmin(Map OrgRecMap) { StringBuffer bolState = new StringBuffer(); ArrayList> orgList = new ArrayList(); HashMap orgs = new HashMap(); Map ouMap = this.getOu(OrgRecMap); System.out.println("ouMap:" + ouMap); orgs.put("ou1", ouMap.get("ou").toString()); orgs.put("ou2", "深圳市标准技术研究院"); orgs.put("actions", ouMap.get("actions").toString()); orgList.add(orgs); HashMap>> ldapMap = new HashMap(); ldapMap.put("orgList", orgList); try { String eroState = OSFAppUtil.callService(this.ctx, "OrganizationLdapsService", ldapMap).toString(); bolState.append(eroState); } catch (EASBizException var8) { bolState.append("调用同步AD域OSF接口OrganizationLdapsService失败," + var8.getMessage() + "!"); } catch (BOSException var9) { bolState.append(var9.getMessage()); } return bolState.toString(); } private Map getOu(Map adminMap) { Map ouVal = new HashMap(); String state = null; Map beforeMovMap = this.getAdminValById(adminMap.get("beforeMov").toString()); beforeMovMap.get("adminType").toString(); String[] beforAdminString = beforeMovMap.get("displayName").toString().split("_"); Map afterMovMap = this.getAdminValById(adminMap.get("afterMov").toString()); String afterAdminType = afterMovMap.get("adminType").toString(); if (afterAdminType != null && afterAdminType != " ") { afterMovMap.get("displayName").toString().split("_"); Map adminsMap = this.getAdminValById(adminMap.get("id").toString()); String[] adminsString = adminsMap.get("displayName").toString().split("_"); if (afterAdminType.equals("民非组织") && adminsString.length == 2) { this.createReserveFieldFirst(adminMap.get("id").toString(), beforeMovMap.get("adminType").toString()); if (beforAdminString.length > 2) { ouVal.put("ou", adminsString[adminsString.length - 1].toString()); ouVal.put("actions", "add"); } } if (afterAdminType.equals("内部组织") && adminsString.length == 3) { this.createReserveFieldFirst(adminMap.get("id").toString(), beforeMovMap.get("adminType").toString()); if (beforAdminString.length > 3) { ouVal.put("ou", adminsString[adminsString.length - 1].toString()); ouVal.put("actions", "add"); } } if (afterAdminType.equals("内部组织") && adminsString.length > 3) { this.createReserveFieldFirst(adminMap.get("id").toString(), beforeMovMap.get("adminType").toString()); if (beforAdminString.length <= 3) { ouVal.put("ou", adminsString[adminsString.length - 1].toString()); ouVal.put("actions", "delete"); } } } else { state = "false"; } ouVal.put("state", state); return ouVal; } private Map getAdminValById(String adminID) { Map adminVal = new HashMap(); StringBuffer sql = new StringBuffer(); sql.append("select * from T_ORG_Admin WHERE FID = '").append(adminID).append("'"); try { IRowSet rs = DbUtil.executeQuery(this.ctx, sql.toString()); while(rs.next()) { adminVal.put("name", rs.getString("FName_L2")); adminVal.put("displayName", rs.getString("FDisplayName_L2")); adminVal.put("adminType", rs.getString("FReserveFieldFirst")); } } catch (BOSException var6) { var6.printStackTrace(); } catch (SQLException var7) { var7.printStackTrace(); } return adminVal; } private Map getOrgRecValue(String schemeId) { Map orgRecMap = new HashMap(); StringBuffer sql = new StringBuffer(); 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 + "'"); try { IRowSet rs = DbUtil.executeQuery(this.ctx, sql.toString()); while(rs.next()) { orgRecMap.put("id", rs.getString("id")); orgRecMap.put("state", "state"); orgRecMap.put("beforeMov", "BeforeMov"); orgRecMap.put("afterMov", "AfterMov"); } } catch (BOSException var5) { var5.printStackTrace(); } catch (SQLException var6) { var6.printStackTrace(); } return orgRecMap; } private void createReserveFieldFirst(String id, String reserveFieldFirst) { StringBuffer sql = new StringBuffer(); sql.append("update T_ORG_Admin set FReserveFieldFirst = '").append(reserveFieldFirst).append("'").append(" where FID = '").append(id).append("'"); try { DbUtil.execute(this.ctx, sql.toString()); } catch (BOSException var5) { var5.printStackTrace(); } } }