EmpBatchEnrollConsecutiveAddNewEditHandlerEx.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  1. //
  2. // Source code recreated from a .class file by IntelliJ IDEA
  3. // (powered by FernFlower decompiler)
  4. //
  5. package com.kingdee.shr.batchAffair.web.handler;
  6. import com.kingdee.bos.BOSException;
  7. import com.kingdee.bos.Context;
  8. import com.kingdee.eas.base.core.hr.util.CnToSpell;
  9. import com.kingdee.eas.basedata.org.AdminOrgUnitCollection;
  10. import com.kingdee.eas.basedata.org.AdminOrgUnitFactory;
  11. import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
  12. import com.kingdee.eas.basedata.org.JobCollection;
  13. import com.kingdee.eas.basedata.org.JobFactory;
  14. import com.kingdee.eas.basedata.org.JobInfo;
  15. import com.kingdee.eas.basedata.org.PositionCollection;
  16. import com.kingdee.eas.basedata.org.PositionFactory;
  17. import com.kingdee.eas.basedata.org.PositionInfo;
  18. import com.kingdee.eas.common.EASBizException;
  19. import com.kingdee.eas.framework.CoreBaseInfo;
  20. import com.kingdee.eas.hr.base.HRBizDefineFactory;
  21. import com.kingdee.eas.hr.base.HRBizDefineInfo;
  22. import com.kingdee.eas.hr.emp.EmpQuickAddNewInfoInfo;
  23. import com.kingdee.eas.util.app.DbUtil;
  24. import com.kingdee.jdbc.rowset.IRowSet;
  25. import com.kingdee.shr.base.syssetting.app.osf.OSFAppUtil;
  26. import com.kingdee.shr.base.syssetting.context.SHRContext;
  27. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  28. import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
  29. import java.sql.SQLException;
  30. import java.text.SimpleDateFormat;
  31. import java.util.ArrayList;
  32. import java.util.Date;
  33. import java.util.HashMap;
  34. import java.util.Map;
  35. import javax.servlet.http.HttpServletRequest;
  36. import javax.servlet.http.HttpServletResponse;
  37. import org.springframework.ui.ModelMap;
  38. public class EmpBatchEnrollConsecutiveAddNewEditHandlerEx extends EmpBatchEnrollConsecutiveAddNewEditHandler {
  39. public EmpBatchEnrollConsecutiveAddNewEditHandlerEx() {
  40. }
  41. public void getNamePinYinAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
  42. String personName = this.getIdCordsfilter(request.getParameter("personName"));
  43. String cnSpell = CnToSpell.getSpell(personName, false);
  44. StringBuffer namePinYin = new StringBuffer();
  45. if (this.getPersonNamePinYin(cnSpell) > 0) {
  46. namePinYin.append(cnSpell).append("0").append(this.getPersonNamePinYin(cnSpell) + 1);
  47. } else {
  48. namePinYin.append(cnSpell);
  49. }
  50. this.writeSuccessData(namePinYin.toString());
  51. }
  52. public void getLaborRelationAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
  53. String personName = this.getIdCordsfilter(request.getParameter("personName"));
  54. String cnSpell = CnToSpell.getSpell(personName, false);
  55. StringBuffer namePinYin = new StringBuffer();
  56. StringBuffer namePinYinSX = new StringBuffer();
  57. if (this.getPersonNamePinYin(cnSpell) > 0) {
  58. namePinYin.append(cnSpell).append("0").append(this.getPersonNamePinYin(cnSpell) + 1);
  59. } else {
  60. namePinYin.append(cnSpell);
  61. }
  62. namePinYinSX.append(namePinYin.toString());
  63. StringBuffer nameBufSql = new StringBuffer();
  64. nameBufSql.append("select * from T_HR_BDEmployeeType b ").append("inner join T_HR_EmpLaborRelation e on b.FID = e.FLaborRelationStateID ").append("inner join T_BD_Person p on p.FID = e.FPersonID ").append("where b.FID = '").append("2JNc5qoSR7mPF3oNZeqB/qKehbM=").append("'");
  65. try {
  66. IRowSet rs = DbUtil.executeQuery(getContext(), nameBufSql.toString());
  67. String size = String.valueOf(rs.size());
  68. if (size.length() == 1) {
  69. namePinYinSX.append("00").append(size);
  70. } else if (size.length() == 2) {
  71. namePinYinSX.append("0").append(size);
  72. } else {
  73. namePinYinSX.append(size);
  74. }
  75. namePinYinSX.append("_sx");
  76. } catch (BOSException var11) {
  77. var11.printStackTrace();
  78. }
  79. this.writeSuccessData(namePinYinSX.toString());
  80. }
  81. public void getPositionBolAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
  82. String personName = this.getIdCordsfilter(request.getParameter("personName"));
  83. String positionId = request.getParameter("positions");
  84. String personNumber = request.getParameter("personNumber");
  85. String cn =personName+"_"+personNumber;
  86. StringBuffer sql = new StringBuffer();
  87. String state = "false";
  88. sql.append("select * from T_ORG_Admin a inner join T_HR_PersonPosition p on a.FID = p.FPersonDep ").append("inner join T_BD_Person b on b.FID = p.FPersonID ").append("inner join T_ORG_Position s on s.FAdminOrgUnitID = a.FID ").append("inner join T_HR_BDEmployeeType t on b.FEMPLOYEETYPEID = t.FID ").append("where s.FID = '").append(positionId).append("' and b.FZDY2 = '").append(cn).append("' and t.FinService = 1");
  89. try {
  90. IRowSet rs = DbUtil.executeQuery(getContext(), sql.toString());
  91. if (!rs.next()) {
  92. state = "true";
  93. }
  94. } catch (BOSException var9) {
  95. var9.printStackTrace();
  96. } catch (SQLException var10) {
  97. var10.printStackTrace();
  98. }
  99. this.writeSuccessData(state);
  100. }
  101. protected void afterSave(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo model) throws SHRWebException {
  102. EmpQuickAddNewInfoInfo eni = this.getEmpQuickAddNewInfoInfo(request);
  103. EmpQuickAddNewInfoInfo eqaInfo = this.getEmpQuickAddNew(eni);
  104. super.afterSave(request, response, model);
  105. try {
  106. String sendAD = this.createLdapAdUser(eqaInfo);
  107. if (sendAD.indexOf("成功") != -1) {
  108. System.out.println(sendAD);
  109. this.setPersonLdapUser(eqaInfo);
  110. } else {
  111. if (sendAD.indexOf("挂靠组织") == -1) {
  112. System.out.println(sendAD);
  113. throw new ShrWebBizException(sendAD);
  114. }
  115. System.out.println(sendAD);
  116. this.setPersonLdapUser(eqaInfo);
  117. }
  118. } catch (EASBizException var7) {
  119. var7.printStackTrace();
  120. } catch (BOSException var8) {
  121. var8.printStackTrace();
  122. }
  123. }
  124. private EmpQuickAddNewInfoInfo getEmpQuickAddNew(EmpQuickAddNewInfoInfo info) {
  125. Map<String, String> map = new HashMap();
  126. StringBuffer sql = new StringBuffer();
  127. JobInfo jinfo = null;
  128. JobCollection jcol = null;
  129. PositionInfo poInfo = null;
  130. PositionCollection poCol = null;
  131. sql.append("select * from T_HR_EmpQuickAddNewInfo where FID = '").append(info.getId()).append("'");
  132. try {
  133. IRowSet rs = DbUtil.executeQuery(getContext(), sql.toString());
  134. while(rs.next()) {
  135. map.put("jobId", rs.getString("FJobID"));
  136. map.put("positionId", rs.getString("FPositionID"));
  137. }
  138. if (map.get("jobId") != null && map.get("jobId") != " ") {
  139. jcol = JobFactory.getLocalInstance(getContext()).getJobCollection("where id = '" + (String)map.get("jobId") + "'");
  140. if (jcol != null && jcol.size() > 0) {
  141. jinfo = jcol.get(0);
  142. info.setJob(jinfo);
  143. }
  144. }
  145. if (map.get("positionId") != null && map.get("positionId") != " ") {
  146. poCol = PositionFactory.getLocalInstance(getContext()).getPositionCollection("where id = '" + (String)map.get("positionId") + "'");
  147. if (poCol != null && poCol.size() > 0) {
  148. poInfo = poCol.get(0);
  149. info.setPosition(poInfo);
  150. }
  151. }
  152. } catch (BOSException var9) {
  153. var9.printStackTrace();
  154. } catch (SQLException var10) {
  155. var10.printStackTrace();
  156. }
  157. return info;
  158. }
  159. private EmpQuickAddNewInfoInfo getEmpQuickAddNewInfoInfo(HttpServletRequest request) {
  160. return (EmpQuickAddNewInfoInfo)request.getAttribute("dynamic_model");
  161. }
  162. private int getPersonNamePinYin(String pinyin) {
  163. Context ctx = SHRContext.getInstance().getContext();
  164. StringBuffer sql = new StringBuffer();
  165. int numbers = 0;
  166. sql.append("select COUNT").append("(").append("*").append(")").append(" as numbers from T_BD_Person where FFullNamePingYin = '").append(pinyin).append("'");
  167. try {
  168. for(IRowSet rs = DbUtil.executeQuery(ctx, sql.toString()); rs.next(); numbers = rs.getInt("numbers")) {
  169. }
  170. } catch (BOSException var6) {
  171. var6.printStackTrace();
  172. } catch (SQLException var7) {
  173. var7.printStackTrace();
  174. }
  175. return numbers;
  176. }
  177. private void setPersonLdapUser(EmpQuickAddNewInfoInfo info) {
  178. StringBuffer sql = new StringBuffer();
  179. sql.append("update T_BD_Person set FZDY1 = '").append(info.get("regionname")).append("'");
  180. //String FZDY2 = info.get("name").toString()+"_"+info.get("number").toString();
  181. int ex = this.getPersonName(info.getString("empname"));
  182. String cn = (String) info.get("empname");
  183. if(ex>0) {
  184. if(ex<10) {
  185. cn += "0" + ex;
  186. }else {
  187. cn += ex;
  188. }
  189. }
  190. String FZDY2 = cn;
  191. sql.append(",FZDY2 = '").append(FZDY2).append("'");
  192. sql.append(" where FNumber = '").append(info.get("number")).append("'");
  193. if (info.getIdCardNO() != null && info.getIdCardNO() != " ") {
  194. sql.append(" and FIDCardNo = '").append(info.getIdCardNO()).append("'");
  195. }
  196. if (info.getPassportNO() != null && info.getPassportNO() != " ") {
  197. sql.append(" and FPassportNo = '").append(info.getPassportNO()).append("'");
  198. }
  199. try {
  200. DbUtil.execute(getContext(), sql.toString());
  201. } catch (BOSException var4) {
  202. var4.printStackTrace();
  203. }
  204. }
  205. private int getPersonName(String name) {
  206. Context ctx = SHRContext.getInstance().getContext();
  207. StringBuffer sql = new StringBuffer();
  208. int numbers = 0;
  209. sql.append(" select COUNT(fid) numbers from T_BD_Person where FEmployeeTypeID in(select fid from T_HR_BDEmployeeType where FINSERVICE in(1,4)) and FNAME_l2=?");
  210. try {
  211. IRowSet rs = DbUtil.executeQuery(ctx, sql.toString(), new Object[]{name});
  212. if( rs.next()) {
  213. numbers = rs.getInt("numbers");
  214. }
  215. } catch (BOSException var6) {
  216. var6.printStackTrace();
  217. } catch (SQLException var7) {
  218. var7.printStackTrace();
  219. }
  220. return numbers;
  221. }
  222. private String createLdapAdUser(EmpQuickAddNewInfoInfo info) throws EASBizException, BOSException {
  223. StringBuffer bolState = new StringBuffer();
  224. HRBizDefineInfo defInfo = info.getActionDef();
  225. HRBizDefineFactory.getLocalInstance(getContext()).getHRBizDefineInfo(" where id = '" + defInfo.getId().toString() + "'");
  226. ArrayList<HashMap<String, Object>> personList = new ArrayList();
  227. Map<String, Object> adminMap = getAdminOrgUnit(info);
  228. HashMap<String, Object> person = new HashMap();
  229. System.out.println("adminMap:" + adminMap);
  230. if ("false".equals(adminMap.get("state"))) {
  231. bolState.append("员工入职组织属性为空,默认为挂靠组织,不同步AD!");
  232. } else {
  233. int ex = this.getPersonName(info.getString("empname"));
  234. String cn = (String) info.get("empname");
  235. if(ex>0) {
  236. if(ex<10) {
  237. cn += "0" + ex;
  238. }else {
  239. cn += ex;
  240. }
  241. }
  242. //String cn =(String)info.get("name")+"_"+(String)info.get("number");
  243. if (info.get("regionname").toString().indexOf("sx") != -1) {
  244. person.put("cn", cn);
  245. } else {
  246. person.put("cn", cn);
  247. }
  248. person.put("empnumber", info.get("number"));
  249. person.put("empname", info.get("name"));
  250. person.put("sn", info.get("regionName"));
  251. person.put("regionname", info.get("regionName"));
  252. person.put("ou1", adminMap.get("ou1"));
  253. person.put("ou2", adminMap.get("ou2"));
  254. person.put("title", this.getJob(info));
  255. person.put("company", adminMap.get("company"));
  256. person.put("department", adminMap.get("department"));
  257. person.put("adpo", adminMap.get("ad"));
  258. person.put("superior", this.getSuperior(adminMap.get("adminId").toString()));
  259. person.put("mobile", info.getTelNum());
  260. person.put("birth", getStringDateShort(info.getBirthday()));
  261. // person.put("enrollagain", "true");
  262. person.put("action", "add");
  263. person.put("actions", "add");
  264. try {
  265. personList.add(person);
  266. HashMap<String, ArrayList<HashMap<String, Object>>> ldapMap = new HashMap();
  267. ldapMap.put("personList", personList);
  268. String state = OSFAppUtil.callService(getContext(), "PersonLdapsService", ldapMap).toString();
  269. bolState.append(state);
  270. } catch (EASBizException var9) {
  271. bolState.append("调用同步AD域OSF接口PersonLdapsService失败,请检查接口配置信息!");
  272. } catch (BOSException var10) {
  273. bolState.append("调用同步AD域OSF接口PersonLdapsService失败,请检查接口配置信息!");
  274. }
  275. }
  276. return bolState.toString();
  277. }
  278. private String getIdCordsfilter(String str) {
  279. String[] SqlStr2 = new String[]{"*", "'", ";", "-", "--", "+", "//", "/", "%", "#"};
  280. for(int i = 0; i < SqlStr2.length; ++i) {
  281. if (str.indexOf(SqlStr2[i]) >= 0) {
  282. str = str.replaceAll(SqlStr2[i], "");
  283. }
  284. }
  285. return str;
  286. }
  287. private static String getStringDateShort(Date dates) {
  288. String dateString = null;
  289. if (dates != null) {
  290. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  291. dateString = formatter.format(dates);
  292. }
  293. return dateString;
  294. }
  295. private String getSuperior(String adminId) {
  296. String superiors = null;
  297. StringBuffer sql = new StringBuffer();
  298. if (adminId != null) {
  299. sql.append("select FZDY1 from T_BD_Person WHERE FID = (").append("select TOP 1 FPersonID from T_HR_EmpOrgRelation WHERE FPositionID = ").append("(select FID from T_ORG_Position where FID = ").append("(select FResponPositionID from T_ORG_Admin where FID = '").append(adminId).append("'").append("))").append(" order by FCreateTime DESC)");
  300. try {
  301. for(IRowSet rs = DbUtil.executeQuery(getContext(), sql.toString()); rs.next(); superiors = rs.getString("FZDY1")) {
  302. }
  303. } catch (BOSException var5) {
  304. var5.printStackTrace();
  305. } catch (SQLException var6) {
  306. var6.printStackTrace();
  307. }
  308. }
  309. return superiors;
  310. }
  311. private Map<String, Object> getAdminOrgUnit(EmpQuickAddNewInfoInfo info) throws BOSException {
  312. Map<String, Object> adminMap = new HashMap();
  313. String state = null;
  314. PositionInfo poInfo = null;
  315. PositionCollection poCol = null;
  316. String ou1 = null;
  317. String ou2 = null;
  318. String ad = null;
  319. AdminOrgUnitInfo adminInfo = null;
  320. AdminOrgUnitCollection adminCol = null;
  321. poCol = PositionFactory.getLocalInstance(getContext()).getPositionCollection("where id = '" + info.getPosition().getId() + "'");
  322. if (poCol != null && poCol.size() > 0) {
  323. poInfo = poCol.get(0);
  324. adminCol = AdminOrgUnitFactory.getLocalInstance(getContext()).getAdminOrgUnitCollection(" where id = '" + poInfo.getAdminOrgUnit().getId() + "'");
  325. }
  326. if (adminCol != null && adminCol.size() > 0) {
  327. adminInfo = adminCol.get(0);
  328. String displayName = adminInfo.getDisplayName();
  329. String longNumber = adminInfo.get("longNumber").toString();
  330. String[] adminString = displayName.split("_");
  331. if ("挂靠组织".equals(adminInfo.get("reservefieldfirst"))) {
  332. state = "false";
  333. } else if (adminString.length >= 4) {
  334. if ("内部组织".equals(adminInfo.get("reservefieldfirst"))) {
  335. ou1 = adminString[3];
  336. ou2 = adminString[2];
  337. } else {
  338. ou1 = adminString[2];
  339. }
  340. } else if (adminString.length == 3) {
  341. ou1 = adminString[2];
  342. } else {
  343. state = "false";
  344. }
  345. if ("true".equals(poInfo.get("isRespPosition").toString())) {
  346. if (adminString.length <= 4) {
  347. ad = "a";
  348. } else {
  349. ad = "b";
  350. }
  351. }
  352. adminMap.put("ad", ad);
  353. adminMap.put("department", ou1);
  354. adminMap.put("ou1", ou1);
  355. adminMap.put("ou2", ou2);
  356. adminMap.put("adminId", getAdminIdByLongNumber(longNumber));
  357. if (ou2 != null) {
  358. adminMap.put("company", ou2);
  359. } else {
  360. adminMap.put("company", ou1);
  361. }
  362. } else {
  363. state = "false";
  364. }
  365. adminMap.put("state", state);
  366. return adminMap;
  367. }
  368. private String getAdminIdByLongNumber(String longName) {
  369. String key = "!";
  370. String returnVal = null;
  371. String longNumbers = null;
  372. int c = longName.indexOf(key);
  373. int i = 0;
  374. int[] d;
  375. for(d = new int[longName.split("!").length - 1]; c != -1; ++i) {
  376. d[i] = c;
  377. c = longName.indexOf(key, c + 1);
  378. }
  379. if (longName.split("!").length > 4) {
  380. longNumbers = longName.substring(0, d[3]);
  381. } else {
  382. longNumbers = longName;
  383. }
  384. try {
  385. String sql = "select FID from T_ORG_Admin WHERE FLongNumber = '" + longNumbers + "'";
  386. for(IRowSet rs = DbUtil.executeQuery(getContext(), sql); rs.next(); returnVal = rs.getString("FID")) {
  387. }
  388. } catch (BOSException var9) {
  389. var9.printStackTrace();
  390. } catch (SQLException var10) {
  391. var10.printStackTrace();
  392. }
  393. return returnVal;
  394. }
  395. private String getJob(EmpQuickAddNewInfoInfo info) {
  396. PositionInfo poInfo = (PositionInfo)info.get("position");
  397. PositionCollection poCol = null;
  398. String poName = null;
  399. if (poInfo != null) {
  400. try {
  401. poCol = PositionFactory.getLocalInstance(getContext()).getPositionCollection(" where id = '" + poInfo.get("id") + "'");
  402. if (poCol != null && poCol.size() > 0) {
  403. PositionInfo jbInfos = poCol.get(0);
  404. poName = jbInfos.getName().toString();
  405. return poName;
  406. }
  407. } catch (BOSException var6) {
  408. var6.printStackTrace();
  409. }
  410. }
  411. return poName;
  412. }
  413. public Context getContext() {
  414. return SHRContext.getInstance().getContext();
  415. }
  416. }