GtiitLocalPersonOsfService.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. package com.kingdee.shr.customer.gtiit.osf;
  2. import java.text.SimpleDateFormat;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import org.apache.commons.lang3.StringUtils;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import com.kingdee.bos.BOSException;
  11. import com.kingdee.bos.Context;
  12. import com.kingdee.bos.bsf.service.app.IHRMsfService;
  13. import com.kingdee.eas.common.EASBizException;
  14. import com.kingdee.eas.util.app.DbUtil;
  15. import com.kingdee.jdbc.rowset.IRowSet;
  16. import com.kingdee.shr.customer.gtiit.osf.util.DateUtils;
  17. import com.kingdee.shr.integration.oa.util.IntegrateOAUtil;
  18. import com.kingdee.shr.integration.oa.util.MappingFieldInfo;
  19. /**
  20. * 获取人员基本信息
  21. * @author zkwuh
  22. *
  23. */
  24. public class GtiitLocalPersonOsfService implements IHRMsfService{
  25. private static final Logger logger = LoggerFactory.getLogger(GtiitLocalPersonOsfService.class);
  26. public Object process(Context ctx, Map map) throws EASBizException, BOSException {
  27. logger.error("GtiitOAGetAdminOrgDataService enter ");
  28. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  29. // 开始日期
  30. String startDate = (String) map.get("startDate");
  31. // 截止日期
  32. String endDate = (String) map.get("endDate");
  33. if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
  34. startDate=DateUtils.formatDate(startDate,true);
  35. endDate=DateUtils.formatDate(endDate,false);
  36. }
  37. logger.error("GtiitOAGetAdminOrgDataService接口参数-开始日期:" + startDate + ",截止日期:" + endDate + ",人员:" );
  38. List<MappingFieldInfo> fieldList = this.initMappingField();
  39. StringBuffer sql = new StringBuffer();
  40. sql.append("SELECT DISTINCT\r\n" +
  41. " p.fid SHRID,\r\n" +
  42. " p.fnumber PERSON_NUMBER,\r\n" +
  43. " p.cfsurname LAST_NAME,\r\n" +
  44. " p.cfmiddlenames MIDDLE_NAMES,\r\n" +
  45. " p.cfgivenname FIRST_NAME,\r\n" +
  46. " p.cflocalname LOCAL_NAME,\r\n" +
  47. " p.fname_l1 DISPLAY_NAME,\r\n" +
  48. " w.fname_l1 USER_PERSON_TYPE,\r\n" +
  49. " fu.fname_l1 FULL_PART_TIME,\r\n" +
  50. " p.fhiredate HIRE_DATE,\r\n" +
  51. " e.ftryoutmonth PROBATION_PERIOD,\r\n" +
  52. " 'Months' PROBATION_UNIT,\r\n" +
  53. " e.fplanformaldate DATE_PROBATION_END,\r\n" +
  54. " hp.fofficephone WORK_PHONE,\r\n" +
  55. " hp.fmobile CELL_PHONE,\r\n" +
  56. " hp.femail EMAIL_ADDRESS,\r\n" +
  57. " hp.cfprivateemail S_EMAIL_ADDRESS,\r\n" +
  58. " n.fname_l1 CITIZENSHIP,\r\n" +
  59. "CASE\r\n" +
  60. " \r\n" +
  61. " WHEN p.fgender= '1' THEN\r\n" +
  62. " '男' \r\n" +
  63. " WHEN p.fgender= '2' THEN\r\n" +
  64. " '女' ELSE '' \r\n" +
  65. " END AS GENDER,\r\n" +
  66. " p.fbirthday DATE_OF_BIRTH,\r\n" +
  67. " hf.fname_l1 ETHNICITY,\r\n" +
  68. " he.fname_l1 HUKOU_TYPE,\r\n" +
  69. " hl.fname_l1 POLITICAL_STATUS,\r\n" +
  70. " hs.fleftdate TER_DATE,\r\n" +
  71. " hre.fname_l1 REASON,\r\n" +
  72. " htc.fname_l1 PROFESSIONAL_TITLE,\r\n" +
  73. " hj.fname_l1 JOB_LEVEL,\r\n" +
  74. " p.cfusername USER_NAME,\r\n" +
  75. " hpc.cfcommencingdate CONTRACT_START_DATE,\r\n" +
  76. " hpc.cfexpireddate CONTRACT_END_DATE,\r\n" +
  77. " p.fcreatetime ERP_CREATION_DATE,\r\n" +
  78. " p.flastupdatetime ERP_LAST_UPDATE_DATE \r\n" +
  79. "FROM\r\n" +
  80. " T_BD_Person p\r\n" +
  81. " LEFT JOIN CT_MP_WorkerCategory w ON w.fid= p.cfworkercategoryid\r\n" +
  82. " LEFT JOIN CT_MP_FULLORPART fu ON fu.fid= p.cfftorptid\r\n" +
  83. " LEFT JOIN (\r\n" +
  84. " SELECT\r\n" +
  85. " ea.fpersonid ,\r\n" +
  86. " ea.ftryoutmonth ,\r\n" +
  87. " ea.fplanformaldate \r\n" +
  88. " FROM\r\n" +
  89. " T_HR_EmpLaborRelationHis ea\r\n" +
  90. " INNER JOIN ( SELECT fpersonid, MAX ( fenterdate ) maxDate FROM T_HR_EmpLaborRelationHis GROUP BY fpersonid ) eb ON ea.fpersonid= eb.fpersonid \r\n" +
  91. " AND ea.fenterdate= eb.maxDate \r\n" +
  92. " ) e ON p.fid= e.fpersonid\r\n" +
  93. " LEFT JOIN (\r\n" +
  94. " SELECT\r\n" +
  95. " hpa.fpersonid,\r\n" +
  96. " hpa.fofficephone,\r\n" +
  97. " hpa.fmobile,\r\n" +
  98. " hpa.femail,\r\n" +
  99. " hpa.cfprivateemail \r\n" +
  100. " FROM\r\n" +
  101. " T_HR_PersonContactMethod hpa\r\n" +
  102. " INNER JOIN ( SELECT fpersonid, MAX ( flastupdatetime ) maxDate FROM T_HR_PersonContactMethod GROUP BY fpersonid ) hpb ON hpa.fpersonid= hpb.fpersonid \r\n" +
  103. " AND hpb.maxDate= hpa.flastupdatetime \r\n" +
  104. " ) hp ON hp.fpersonid= p.fid\r\n" +
  105. " LEFT JOIN T_BD_Nationality n ON n.fid= p.fnationalityid\r\n" +
  106. " LEFT JOIN T_BD_HRFolk hf ON hf.fid= p.ffolkid\r\n" +
  107. " LEFT JOIN T_BD_Regpermresidence he ON he.fid= p.fregresidenceid\r\n" +
  108. " LEFT JOIN T_BD_HRPolitical hl ON hl.fid= p.fpoliticalfaceid\r\n" +
  109. " LEFT JOIN (\r\n" +
  110. " SELECT\r\n" +
  111. " hsa.fleftdate,\r\n" +
  112. " hsa.fdimissionreasonid,\r\n" +
  113. " hsa.fpersonid \r\n" +
  114. " FROM\r\n" +
  115. " T_HR_PersonPositionHis hsa\r\n" +
  116. " INNER JOIN ( SELECT fpersonid, MAX ( fjoingroupdatecur ) maxDate FROM T_HR_PersonPositionHis GROUP BY fpersonid ) hsb ON hsa.fpersonid= hsb.fpersonid \r\n" +
  117. " AND hsa.fjoingroupdatecur= hsb.maxDate \r\n" +
  118. " ) hs ON hs.fpersonid= p.fid\r\n" +
  119. " LEFT JOIN T_HR_BDDimissionReason hre ON hre.fid= hs.fdimissionreasonid\r\n" +
  120. " LEFT JOIN (\r\n" +
  121. " SELECT\r\n" +
  122. " hta.ftechnicalpostid,\r\n" +
  123. " hta.fpersonid \r\n" +
  124. " FROM\r\n" +
  125. " T_HR_PersonTechPost hta\r\n" +
  126. " INNER JOIN ( SELECT fpersonid, MAX ( fconferdate ) maxDate FROM T_HR_PersonTechPost GROUP BY fpersonid ) htb ON hta.fpersonid= htb.fpersonid \r\n" +
  127. " AND hta.fconferdate= htb.maxDate \r\n" +
  128. " ) ht ON ht.fpersonid= p.fid\r\n" +
  129. " LEFT JOIN T_HR_BDTechnicalPost htc ON htc.fid= ht.ftechnicalpostid\r\n" +
  130. " LEFT JOIN (\r\n" +
  131. " SELECT\r\n" +
  132. " hera.fpersonid,\r\n" +
  133. " hera.fjobgradeid \r\n" +
  134. " FROM\r\n" +
  135. " T_HR_EmpPostRank hera\r\n" +
  136. " INNER JOIN ( SELECT fpersonid, MAX ( fleffdt ) maxDate FROM T_HR_EmpPostRank GROUP BY fpersonid ) herb ON hera.fpersonid= herb.fpersonid \r\n" +
  137. " AND hera.fleffdt= herb.maxDate \r\n" +
  138. " ) her ON her.fpersonid= p.fid\r\n" +
  139. " LEFT JOIN T_HR_JobGrade hj ON hj.fid= her.fjobgradeid\r\n" +
  140. " LEFT JOIN (\r\n" +
  141. " SELECT\r\n" +
  142. " hpca.fpersonid,\r\n" +
  143. " hpca.cfcommencingdate,\r\n" +
  144. " hpca.cfexpireddate \r\n" +
  145. " FROM\r\n" +
  146. " CT_MP_Pcontractinfo hpca\r\n" +
  147. " INNER JOIN ( SELECT fpersonid, MAX ( cfexpireddate ) maxDate,max(flastupdatetime) lastDate,max(cfcommencingdate) startDate FROM CT_MP_Pcontractinfo GROUP BY fpersonid ) hpcb ON hpca.fpersonid= hpcb.fpersonid \r\n" +
  148. " AND hpca.cfexpireddate= hpcb.maxDate and hpca.flastupdatetime=hpcb.lastDate and hpca.cfcommencingdate=hpcb.startDate\r\n" +
  149. " ) hpc ON hpc.fpersonid= p.fid ");
  150. if(StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
  151. sql.append(" where p.flastupdatetime >= '"+startDate+"' and p.flastupdatetime <= '"+endDate+"'");
  152. }
  153. sql.append(" order by PERSON_NUMBER desc");
  154. logger.info("GtiitLocalPersonOsfService人员查询SQL"+sql.toString());
  155. IRowSet rs = DbUtil.executeQuery(ctx, sql.toString());
  156. List<HashMap<String, String>> dataList = IntegrateOAUtil.getRsListData(fieldList, rs);
  157. return dataList;
  158. }
  159. private List<MappingFieldInfo> initMappingField() {
  160. List<MappingFieldInfo> list = new ArrayList();
  161. MappingFieldInfo fieldInfo = new MappingFieldInfo();
  162. fieldInfo.setOaField("PERSON_NUMBER");
  163. fieldInfo.setShrField("PERSON_NUMBER");
  164. list.add(fieldInfo);
  165. fieldInfo = new MappingFieldInfo();
  166. fieldInfo.setOaField("SHRID");
  167. fieldInfo.setShrField("SHRID");
  168. list.add(fieldInfo);
  169. fieldInfo = new MappingFieldInfo();
  170. fieldInfo.setOaField("LAST_NAME");
  171. fieldInfo.setShrField("LAST_NAME");
  172. list.add(fieldInfo);
  173. fieldInfo = new MappingFieldInfo();
  174. fieldInfo.setOaField("MIDDLE_NAMES");
  175. fieldInfo.setShrField("MIDDLE_NAMES");
  176. list.add(fieldInfo);
  177. fieldInfo = new MappingFieldInfo();
  178. fieldInfo.setOaField("FIRST_NAME");
  179. fieldInfo.setShrField("FIRST_NAME");
  180. list.add(fieldInfo);
  181. fieldInfo = new MappingFieldInfo();
  182. fieldInfo.setOaField("LOCAL_NAME");
  183. fieldInfo.setShrField("LOCAL_NAME");
  184. list.add(fieldInfo);
  185. fieldInfo = new MappingFieldInfo();
  186. fieldInfo.setOaField("DISPLAY_NAME");
  187. fieldInfo.setShrField("DISPLAY_NAME");
  188. list.add(fieldInfo);
  189. fieldInfo = new MappingFieldInfo();
  190. fieldInfo.setOaField("USER_PERSON_TYPE");
  191. fieldInfo.setShrField("USER_PERSON_TYPE");
  192. list.add(fieldInfo);
  193. fieldInfo = new MappingFieldInfo();
  194. fieldInfo.setOaField("FULL_PART_TIME");
  195. fieldInfo.setShrField("FULL_PART_TIME");
  196. list.add(fieldInfo);
  197. fieldInfo = new MappingFieldInfo();
  198. fieldInfo.setOaField("HIRE_DATE");
  199. fieldInfo.setShrField("HIRE_DATE");
  200. list.add(fieldInfo);
  201. fieldInfo = new MappingFieldInfo();
  202. fieldInfo.setOaField("PROBATION_PERIOD");
  203. fieldInfo.setShrField("PROBATION_PERIOD");
  204. list.add(fieldInfo);
  205. fieldInfo = new MappingFieldInfo();
  206. fieldInfo.setOaField("PROBATION_UNIT");
  207. fieldInfo.setShrField("PROBATION_UNIT");
  208. list.add(fieldInfo);
  209. fieldInfo = new MappingFieldInfo();
  210. fieldInfo.setOaField("DATE_PROBATION_END");
  211. fieldInfo.setShrField("DATE_PROBATION_END");
  212. list.add(fieldInfo);
  213. fieldInfo = new MappingFieldInfo();
  214. fieldInfo.setOaField("WORK_PHONE");
  215. fieldInfo.setShrField("WORK_PHONE");
  216. list.add(fieldInfo);
  217. fieldInfo = new MappingFieldInfo();
  218. fieldInfo.setOaField("CELL_PHONE");
  219. fieldInfo.setShrField("CELL_PHONE");
  220. list.add(fieldInfo);
  221. fieldInfo = new MappingFieldInfo();
  222. fieldInfo.setOaField("EMAIL_ADDRESS");
  223. fieldInfo.setShrField("EMAIL_ADDRESS");
  224. list.add(fieldInfo);
  225. fieldInfo = new MappingFieldInfo();
  226. fieldInfo.setOaField("S_EMAIL_ADDRESS");
  227. fieldInfo.setShrField("S_EMAIL_ADDRESS");
  228. list.add(fieldInfo);
  229. fieldInfo = new MappingFieldInfo();
  230. fieldInfo.setOaField("CITIZENSHIP");
  231. fieldInfo.setShrField("CITIZENSHIP");
  232. list.add(fieldInfo);
  233. fieldInfo = new MappingFieldInfo();
  234. fieldInfo.setOaField("GENDER");
  235. fieldInfo.setShrField("GENDER");
  236. list.add(fieldInfo);
  237. fieldInfo = new MappingFieldInfo();
  238. fieldInfo.setOaField("DATE_OF_BIRTH");
  239. fieldInfo.setShrField("DATE_OF_BIRTH");
  240. list.add(fieldInfo);
  241. fieldInfo = new MappingFieldInfo();
  242. fieldInfo.setOaField("ETHNICITY");
  243. fieldInfo.setShrField("ETHNICITY");
  244. list.add(fieldInfo);
  245. fieldInfo = new MappingFieldInfo();
  246. fieldInfo.setOaField("HUKOU_TYPE");
  247. fieldInfo.setShrField("HUKOU_TYPE");
  248. list.add(fieldInfo);
  249. fieldInfo = new MappingFieldInfo();
  250. fieldInfo.setOaField("POLITICAL_STATUS");
  251. fieldInfo.setShrField("POLITICAL_STATUS");
  252. list.add(fieldInfo);
  253. fieldInfo = new MappingFieldInfo();
  254. fieldInfo.setOaField("TER_DATE");
  255. fieldInfo.setShrField("TER_DATE");
  256. list.add(fieldInfo);
  257. fieldInfo = new MappingFieldInfo();
  258. fieldInfo.setOaField("REASON");
  259. fieldInfo.setShrField("REASON");
  260. list.add(fieldInfo);
  261. fieldInfo = new MappingFieldInfo();
  262. fieldInfo.setOaField("PROFESSIONAL_TITLE");
  263. fieldInfo.setShrField("PROFESSIONAL_TITLE");
  264. list.add(fieldInfo);
  265. fieldInfo = new MappingFieldInfo();
  266. fieldInfo.setOaField("JOB_LEVEL");
  267. fieldInfo.setShrField("JOB_LEVEL");
  268. list.add(fieldInfo);
  269. fieldInfo = new MappingFieldInfo();
  270. fieldInfo.setOaField("USER_NAME");
  271. fieldInfo.setShrField("USER_NAME");
  272. list.add(fieldInfo);
  273. fieldInfo = new MappingFieldInfo();
  274. fieldInfo.setOaField("CONTRACT_START_DATE");
  275. fieldInfo.setShrField("CONTRACT_START_DATE");
  276. list.add(fieldInfo);
  277. fieldInfo = new MappingFieldInfo();
  278. fieldInfo.setOaField("CONTRACT_END_DATE");
  279. fieldInfo.setShrField("CONTRACT_END_DATE");
  280. list.add(fieldInfo);
  281. fieldInfo = new MappingFieldInfo();
  282. fieldInfo.setOaField("ERP_CREATION_DATE");
  283. fieldInfo.setShrField("ERP_CREATION_DATE");
  284. list.add(fieldInfo);
  285. fieldInfo = new MappingFieldInfo();
  286. fieldInfo.setOaField("ERP_LAST_UPDATE_DATE");
  287. fieldInfo.setShrField("ERP_LAST_UPDATE_DATE");
  288. list.add(fieldInfo);
  289. return list;
  290. }
  291. }