c70f2500647dd36985caf25f9c7e55a407794b08.svn-base 54 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121
  1. package com.kingdee.shr.customer.gtiit.rpt;
  2. import java.sql.Date;
  3. import java.sql.SQLException;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.LinkedHashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import java.util.stream.Collectors;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import org.springframework.ui.ModelMap;
  13. import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
  14. import com.alibaba.fastjson.JSON;
  15. //import com.alibaba.fastjson.JSONObject;
  16. import org.json.JSONObject;
  17. //import com.alibaba.fastjson.JSON;
  18. //import com.alibaba.fastjson.JSONObject;
  19. //import com.alibaba.fastjson.JSON;
  20. import com.cloudera.impala.jdbc4.internal.apache.log4j.Logger;
  21. import com.kingdee.bos.BOSException;
  22. import com.kingdee.bos.Context;
  23. import com.kingdee.eas.util.app.DbUtil;
  24. import com.kingdee.jdbc.rowset.IRowSet;
  25. import com.kingdee.shr.base.syssetting.context.SHRContext;
  26. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  27. import com.kingdee.shr.base.syssetting.web.handler.ListHandler;
  28. import java.io.UnsupportedEncodingException;
  29. import java.net.URLEncoder;
  30. import org.apache.commons.lang3.StringUtils;
  31. import org.apache.poi.ss.usermodel.CellStyle;
  32. //import org.apache.poi.hssf.usermodel.HSSFCell;
  33. //import org.apache.poi.hssf.usermodel.HSSFCellStyle;
  34. //import org.apache.poi.hssf.usermodel.HSSFRow;
  35. //import org.apache.poi.hssf.usermodel.HSSFSheet;
  36. //import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  37. import org.apache.poi.ss.usermodel.DataFormat;
  38. import org.apache.poi.ss.usermodel.FillPatternType;
  39. import org.apache.poi.ss.usermodel.IndexedColors;
  40. import org.apache.poi.xssf.usermodel.XSSFCell;
  41. import org.apache.poi.xssf.usermodel.XSSFCellStyle;
  42. import org.apache.poi.xssf.usermodel.XSSFFont;
  43. import org.apache.poi.xssf.usermodel.XSSFRow;
  44. import org.apache.poi.xssf.usermodel.XSSFSheet;
  45. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  46. import java.io.IOException;
  47. import java.io.OutputStream;
  48. // 员工花名册
  49. public class PersonRosterListHandler extends ListHandler {
  50. Context ctx = SHRContext.getInstance().getContext();
  51. private static Logger logger1 = Logger.getLogger("com.kingdee.shr.customer.gtiit.rpt.PersonRosterListHandler");
  52. private int totalCount;
  53. public PersonRosterListHandler() {
  54. }
  55. public String getGridColModelAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
  56. throws SHRWebException, BOSException, SQLException {
  57. List<String> colNames = this.getcolNamesAction();
  58. List<Map<String, Object>> colModel = this.getcolModelAction();
  59. LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();
  60. map.put("colNames", colNames);
  61. map.put("colModel", colModel);
  62. JSONUtils.writeJson(response, map);
  63. return null;
  64. }
  65. public void getGridDataAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
  66. throws BOSException, SQLException, SHRWebException {
  67. int rows = Integer.parseInt(request.getParameter("rows"));
  68. int page = Integer.parseInt(request.getParameter("page"));
  69. // 获取过滤条件
  70. String fastFilterItems = request.getParameter("fastFilterItems");
  71. JSONObject tofastFilterItems = new JSONObject(fastFilterItems);
  72. //JSONObject tofastFilterItems = JSON.parseObject(fastFilterItems);
  73. // 获取人员
  74. JSONObject personJson = tofastFilterItems.getJSONObject("person");
  75. String personid = personJson.getString("values");
  76. // 获取人员类别
  77. JSONObject personTypeJson = tofastFilterItems.getJSONObject("personType");
  78. String personTypeId = personTypeJson.getString("values");
  79. // 获取状态
  80. JSONObject statusJson = tofastFilterItems.getJSONObject("status");
  81. String status = statusJson.getString("values");
  82. // 入职时间段
  83. JSONObject periodEmploymentJson = tofastFilterItems.getJSONObject("periodEmployment");
  84. String pervalues = periodEmploymentJson.getString("values");
  85. String startDate = null;
  86. String endDate = null;
  87. if (pervalues != null && !pervalues.equals("")) {
  88. JSONObject periodEmploymentValues = periodEmploymentJson.getJSONObject("values");
  89. startDate = periodEmploymentValues.getString("startDate");
  90. endDate = periodEmploymentValues.getString("endDate");
  91. }
  92. // 离职时间段
  93. JSONObject periodResignationJson = tofastFilterItems.getJSONObject("periodResignation");
  94. String resValues = periodResignationJson.getString("values");
  95. String resStartDate = null;
  96. String resEndDate = null;
  97. if (resValues != null && !resValues.equals("")) {
  98. JSONObject periodResignationValues = periodResignationJson.getJSONObject("values");
  99. resStartDate = periodResignationValues.getString("startDate");
  100. resEndDate = periodResignationValues.getString("endDate");
  101. }
  102. // 截止时间
  103. JSONObject deadlineJson = tofastFilterItems.getJSONObject("deadline");
  104. String deadValues = deadlineJson.getString("values");
  105. String dataeTime = null;
  106. if (deadValues != null && !deadValues.equals("")) {
  107. JSONObject deadVluesJson = deadlineJson.getJSONObject("values");
  108. dataeTime = deadVluesJson.getString("date");
  109. }
  110. List<Map<String, Object>> maplist = new ArrayList<Map<String, Object>>();
  111. int num = 0;
  112. IRowSet rs = DbUtil.executeQuery(this.ctx,
  113. this.getSql(personid, personTypeId, status, startDate, endDate, resStartDate, resEndDate, dataeTime));
  114. //序列号
  115. int serial=0;
  116. while (rs.next()) {
  117. ++num;
  118. if (num >= rows * (page - 1) + 1 && num <= rows * page) {
  119. serial++;
  120. Map<String, Object> map = new HashMap<String, Object>();
  121. map.put("No", Integer.toString(serial));
  122. map.put("PERSONNUMBER", rs.getString("PERSONNUMBER"));
  123. map.put("PERSONNUMBER", rs.getString("PERSONNUMBER"));
  124. map.put("LASTNAME", rs.getString("LASTNAME"));
  125. map.put("MiddleName", rs.getString("MiddleName"));
  126. map.put("FirstName", rs.getString("FirstName"));
  127. map.put("LocalName", rs.getString("LocalName"));
  128. if(StringUtils.isNotBlank(rs.getString("DisplayName"))) {
  129. map.put("DisplayName",rs.getString("DisplayName"));
  130. }else {
  131. map.put("DisplayName","");
  132. }
  133. map.put("Department", rs.getString("Department"));
  134. if(StringUtils.isNotBlank(rs.getString("Dept"))) {
  135. map.put("Dept",rs.getString("Dept"));
  136. }else {
  137. map.put("Dept","");
  138. }
  139. map.put("Job", rs.getString("Job"));
  140. map.put("Level", rs.getString("Level"));
  141. map.put("Position", rs.getString("Position"));
  142. map.put("PositionCode", rs.getString("PositionCode"));
  143. map.put("WorkCategory", rs.getString("WorkCategory"));
  144. map.put("PersonType", rs.getString("PersonType"));
  145. map.put("FULLTIMEORPARTTIME", rs.getString("FULLTIMEORPARTTIME"));
  146. map.put("LINEMANAGER", rs.getString("LINEMANAGER"));
  147. map.put("LINEMANAGERNAME", rs.getString("LINEMANAGERNAME"));
  148. if (rs.getString("StartTime") != null && !("").equals(rs.getString("StartTime"))) {
  149. map.put("StartTime", rs.getString("StartTime").substring(0, 10));
  150. } else {
  151. map.put("StartTime", null);
  152. }
  153. if (rs.getString("EndTime") != null && !("").equals(rs.getString("EndTime"))) {
  154. map.put("EndTime", rs.getString("EndTime").substring(0, 10));
  155. } else {
  156. map.put("EndTime", null);
  157. }
  158. if (rs.getString("HireDate") != null && !("").equals(rs.getString("HireDate"))) {
  159. map.put("HireDate", rs.getString("HireDate").substring(0, 10));
  160. } else {
  161. map.put("HireDate", null);
  162. }
  163. map.put("ProbationPeriod", rs.getString("ProbationPeriod"));
  164. map.put("ProbationPeriodUnit", rs.getString("ProbationPeriodUnit"));
  165. if (rs.getString("ProbationEndDate") != null && !("").equals(rs.getString("ProbationEndDate"))) {
  166. map.put("ProbationEndDate", rs.getString("ProbationEndDate").substring(0, 10));
  167. } else {
  168. map.put("ProbationEndDate", null);
  169. }
  170. map.put("WorkPhone", rs.getString("WorkPhone"));
  171. map.put("CellPhone", rs.getString("CellPhone"));
  172. map.put("PRIMARYEMAIL", rs.getString("PRIMARYEMAIL"));
  173. map.put("Email", rs.getString("Email"));
  174. map.put("Nationality", rs.getString("Nationality"));
  175. // 日期只要取年月日
  176. if (rs.getString("WORKPERMITISSUEDATE") != null && !("").equals(rs.getString("WORKPERMITISSUEDATE"))) {
  177. map.put("WORKPERMITISSUEDATE", rs.getString("WORKPERMITISSUEDATE").substring(0, 10));
  178. } else {
  179. map.put("WORKPERMITISSUEDATE", null);
  180. }
  181. if (rs.getString("WORKPERMITEXPIRATIONDATE") != null
  182. && !("").equals(rs.getString("WORKPERMITEXPIRATIONDATE"))) {
  183. map.put("WORKPERMITEXPIRATIONDATE", rs.getString("WORKPERMITEXPIRATIONDATE").substring(0, 10));
  184. } else {
  185. map.put("WORKPERMITEXPIRATIONDATE", null);
  186. }
  187. if (rs.getString("RESIDENCEPERMITISSUEDATE") != null
  188. && !("").equals(rs.getString("RESIDENCEPERMITISSUEDATE"))) {
  189. map.put("RESIDENCEPERMITISSUEDATE", rs.getString("RESIDENCEPERMITISSUEDATE").substring(0, 10));
  190. } else {
  191. map.put("RESIDENCEPERMITISSUEDATE", null);
  192. }
  193. if (rs.getString("RESIDENCEPERMITEXPIRATIONDATE") != null
  194. && !("").equals(rs.getString("RESIDENCEPERMITEXPIRATIONDATE"))) {
  195. map.put("RESIDENCEPERMITEXPIRATIONDATE",
  196. rs.getString("RESIDENCEPERMITEXPIRATIONDATE").substring(0, 10));
  197. } else {
  198. map.put("RESIDENCEPERMITEXPIRATIONDATE", null);
  199. }
  200. map.put("IDCARDNOORPASSPORTNO", rs.getString("IDCARDNOORPASSPORTNO"));
  201. if (rs.getString("IDCARDCOMMENCINGDATE") != null
  202. && !("").equals(rs.getString("IDCARDCOMMENCINGDATE"))) {
  203. map.put("IDCARDCOMMENCINGDATE", rs.getString("IDCARDCOMMENCINGDATE").substring(0, 10));
  204. } else {
  205. map.put("IDCARDCOMMENCINGDATE", null);
  206. }
  207. if (rs.getString("IDCARDEXPIREDDATE") != null && !("").equals(rs.getString("IDCARDEXPIREDDATE"))) {
  208. map.put("IDCARDEXPIREDDATE", rs.getString("IDCARDEXPIREDDATE").substring(0, 10));
  209. } else {
  210. map.put("IDCARDEXPIREDDATE", null);
  211. }
  212. map.put("FIDCardAddress", rs.getString("FIDCardAddress"));
  213. map.put("CURRENTADDRESS", rs.getString("CURRENTADDRESS"));
  214. map.put("Sex", rs.getString("Sex"));
  215. if (rs.getString("Birthdate") != null && !("").equals(rs.getString("Birthdate"))) {
  216. map.put("Birthdate", rs.getString("Birthdate").substring(0, 10));
  217. } else {
  218. map.put("Birthdate", null);
  219. }
  220. map.put("Ethnicity", rs.getString("Ethnicity"));
  221. map.put("Hukoutype", rs.getString("Hukoutype"));
  222. if (rs.getString("HOUSEHOLDREGISTEREDDATE") != null
  223. && !("").equals(rs.getString("HOUSEHOLDREGISTEREDDATE"))) {
  224. map.put("HouseholdRegistereddate", rs.getString("HOUSEHOLDREGISTEREDDATE").substring(0, 10));
  225. } else {
  226. map.put("HouseholdRegistereddate", null);
  227. }
  228. // map.put("HouseholdRegistereddate", rs.getString("HouseholdRegistereddate"));
  229. map.put("Nativeplace", rs.getString("Nativeplace"));
  230. map.put("POLITICASTATUS", rs.getString("POLITICASTATUS"));
  231. map.put("Maritalstatus", rs.getString("Maritalstatus"));
  232. map.put("Zipcode", rs.getString("Zipcode"));
  233. map.put("GRADUATEDSCHOOLOFHIGHESTACADEMICDEGREE",
  234. rs.getString("GRADUATEDSCHOOLOFHIGHESTACADEMICDEGREE"));
  235. map.put("HIGHESTACADEMICDEGREE", rs.getString("HIGHESTACADEMICDEGREE"));
  236. map.put("HIGHESTQUALIFICATIONOFFULLTIMEEDUCATION",
  237. rs.getString("HIGHESTQUALIFICATIONOFFULLTIMEEDUCATION"));
  238. map.put("MAJOROFFULLTIMEEDUCATION", rs.getString("MAJOROFFULLTIMEEDUCATION"));
  239. if (rs.getString("GRADUATEDDATE") != null && !("").equals(rs.getString("GRADUATEDDATE"))) {
  240. map.put("GRADUATEDDATE", rs.getString("GRADUATEDDATE").substring(0, 10));
  241. } else {
  242. map.put("GRADUATEDDATE", null);
  243. }
  244. map.put("GRADUATESCHOOLOFHIGHESTDEGREEOFPARTTIMEEDUCATION",
  245. rs.getString("GRADUATESCHOOLOFHIGHESTDEGREEOFPARTTIMEEDUCATION"));
  246. map.put("HIGHESTDEGREEOFPARTTIMEEDUCATION", rs.getString("HIGHESTDEGREEOFPARTTIMEEDUCATION"));
  247. map.put("HIGHESTQUALIFICATIONOFPARTTIMEEDUCATION",
  248. rs.getString("HIGHESTQUALIFICATIONOFPARTTIMEEDUCATION"));
  249. map.put("MAJOROFPARTTIMEEDUCATION", rs.getString("MAJOROFPARTTIMEEDUCATION"));
  250. map.put("EMERGENCYCONTACT", rs.getString("EMERGENCYCONTACT"));
  251. map.put("TELEPHONEOFEMERGENCY", rs.getString("TELEPHONEOFEMERGENCY"));
  252. map.put("RELATIONSHIP", rs.getString("RELATIONSHIP"));
  253. if (rs.getString("TERMINATIONDATE") != null && !("").equals(rs.getString("TERMINATIONDATE"))) {
  254. map.put("TERMINATIONDATE", rs.getString("TERMINATIONDATE").substring(0, 10));
  255. } else {
  256. map.put("TERMINATIONDATE", null);
  257. }
  258. map.put("TERMINATIONREASON", rs.getString("TERMINATIONREASON"));
  259. maplist.add(map);
  260. }
  261. }
  262. this.totalCount = num;
  263. Map<String, Object> gridDataMap = new LinkedHashMap<String, Object>();
  264. if (this.totalCount % rows == 0) {
  265. gridDataMap.put("total", this.totalCount / rows);
  266. } else {
  267. gridDataMap.put("total", this.totalCount / rows + 1);
  268. }
  269. gridDataMap.put("page", page);
  270. gridDataMap.put("records", this.totalCount);
  271. gridDataMap.put("rows", maplist);
  272. JSONUtils.writeJson(response, gridDataMap);
  273. }
  274. public ArrayList<String> getcolNamesAction() throws SHRWebException {
  275. ArrayList<String> list = new ArrayList<String>();
  276. list.add("No.序号");
  277. list.add("Person Number 工号");
  278. list.add("Last Name 姓");
  279. list.add("Middle Name 中间名");
  280. list.add("First Name 名");
  281. list.add("Local Name 本地名称");
  282. list.add("Display Name 展示名称");
  283. list.add("Department 部门");
  284. list.add("Dept. 部门简称");
  285. list.add("Job 职务");
  286. list.add("Level(L1-L15)");
  287. list.add("Position 职位");
  288. list.add("Position Code");
  289. list.add("Work Category 员工类别");
  290. list.add("Person Type 人员类型");
  291. list.add("Full Time or Part Time 全职或兼职");
  292. list.add("Line Manager 直线经理 (工号)");
  293. list.add("Line Manager 直线经理 (姓名)");
  294. list.add("Start Time");
  295. list.add("End Time");
  296. list.add("Hire Date 入职日期");
  297. list.add("Probation Period 试用期");
  298. list.add("Probation Period Unit 试用期单位");
  299. list.add("Probation End Date 试用期结束日期");
  300. list.add("Work Phone 工作电话");
  301. list.add("Cell Phone 手机");
  302. list.add("Email (Primary)工作邮箱");
  303. list.add("Email 邮箱");
  304. list.add("Nationality 国籍");
  305. list.add("Work Permit Issue Date 工作许可签发日期");
  306. list.add("Work Permit Expiration Date 工作许可失效日期");
  307. list.add("Residence Permit Issue Date 居住许可签发日期");
  308. list.add("Residence Permit Expiration Date 居住许可失效日期");
  309. list.add("ID card no. or Passport no. 身份证号/护照号");
  310. list.add("ID card commencing date 身份证开始日期");
  311. list.add("ID card expired date 身份证结束日期");
  312. list.add("ID card address 身份证地址");
  313. list.add("Current address 现在通讯地址");
  314. list.add("Sex 性别");
  315. list.add("Birth date 出生日期");
  316. list.add("Ethnicity 民族");
  317. list.add("Hukou type 户籍类型");
  318. list.add("Household Registered date 户口登记日期");
  319. list.add("Native place 籍贯");
  320. list.add("Political status 政治面貌");
  321. list.add("Marital status 婚姻状况");
  322. list.add("Zip code 邮政编码");
  323. list.add("Graduated School of Highest Academic Degree (full-time) 全日制最高学历毕业院校");
  324. list.add("Highest Academic Degree (full-time) 全日制最高学历");
  325. list.add("Highest Qualification of Full-time Education 全日制最高学历所获学位");
  326. list.add("Major of full time education 全日制最高学历所学专业");
  327. list.add("Graduated date 毕业日期");
  328. list.add("Graduate School of Highest Degree of Part-time Education 非全日制最高学历毕业院校");
  329. list.add("Highest Degree of Part-time Education 非全日制最高学历");
  330. list.add("Highest Qualification of Part-time education 非全日制最高学历所获学位");
  331. list.add("Major of Part-time education 非全日制最高学历所学专业");
  332. list.add("emergency contact 紧急联系人姓名");
  333. list.add("telephone of emergency contact 紧急联系人电话");
  334. list.add("relationship 所属关系");
  335. list.add("Termination Date 离职日期");
  336. list.add("Termination Reason 离职原因");
  337. return list;
  338. }
  339. public List<Map<String, Object>> getcolModelAction() {
  340. List<Map<String, Object>> modelColList = new ArrayList<Map<String, Object>>();
  341. modelColList.add(this.buildColModelMap("No", "No.序号", 40));
  342. modelColList.add(this.buildColModelMap("PERSONNUMBER", "Person Number 工号", 70));
  343. modelColList.add(this.buildColModelMap("LASTNAME", "Last Name 姓", 70));
  344. modelColList.add(this.buildColModelMap("MiddleName", "Middle Name 中间名", 70));
  345. modelColList.add(this.buildColModelMap("FirstName", "First Name 名", 70));
  346. modelColList.add(this.buildColModelMap("LocalName", "Local Name 本地名称", 70));
  347. modelColList.add(this.buildColModelMap("DisplayName", "Display Name 展示名称", 70));
  348. modelColList.add(this.buildColModelMap("Department", "Department 部门", 70));
  349. modelColList.add(this.buildColModelMap("Dept", "Dept. 部门简称", 70));
  350. modelColList.add(this.buildColModelMap("Job", "Job 职务", 70));
  351. modelColList.add(this.buildColModelMap("Level", "Level(L1-L15)", 70));
  352. modelColList.add(this.buildColModelMap("Position", "Position 职位", 70));
  353. modelColList.add(this.buildColModelMap("PositionCode", "position Code", 70));
  354. modelColList.add(this.buildColModelMap("WorkCategory", "Work Category 员工类别", 70));
  355. modelColList.add(this.buildColModelMap("PersonType", "Person Type 人员类型", 70));
  356. modelColList.add(this.buildColModelMap("FULLTIMEORPARTTIME", "Full Time or Part Time 全职或兼职", 50));
  357. modelColList.add(this.buildColModelMap("LINEMANAGER", "Line Manager 直线经理 (工号)", 50));
  358. modelColList.add(this.buildColModelMap("LINEMANAGERNAME", "Line Manager 直线经理 (姓名)", 50));
  359. modelColList.add(this.buildColModelMap("StartTime", "Start Time ", 50));
  360. modelColList.add(this.buildColModelMap("EndTime", "End Time", 50));
  361. modelColList.add(this.buildColModelMap("HireDate", "Hire Date 入职日期", 50));
  362. modelColList.add(this.buildColModelMap("ProbationPeriod", "Probation Period 试用期", 50));
  363. modelColList.add(this.buildColModelMap("ProbationPeriodUnit", "Probation Period Unit 试用期单位", 50));
  364. modelColList.add(this.buildColModelMap("ProbationEndDate", "Probation End Date 试用期结束日期", 50));
  365. modelColList.add(this.buildColModelMap("WorkPhone", "Work Phone 工作电话", 50));
  366. modelColList.add(this.buildColModelMap("CellPhone", "Cell Phone 手机", 50));
  367. modelColList.add(this.buildColModelMap("PRIMARYEMAIL", "Email (Primary) 工作邮箱", 120));
  368. modelColList.add(this.buildColModelMap("Email", "Email 邮箱", 50));
  369. modelColList.add(this.buildColModelMap("Nationality", "Nationality 国籍", 50));
  370. modelColList.add(this.buildColModelMap("WORKPERMITISSUEDATE", "Work Permit Issue Date 工作许可签发日期", 120));
  371. modelColList.add(this.buildColModelMap("WORKPERMITEXPIRATIONDATE", "Work Permit Expiration Date 工作许可失效日期", 120));
  372. modelColList.add(this.buildColModelMap("RESIDENCEPERMITISSUEDATE", "Residence Permit Issue Date 居住许可签发日期", 120));
  373. modelColList
  374. .add(this.buildColModelMap("RESIDENCEPERMITEXPIRATIONDATE", "Residence Permit Expiration Date 居住许可失效日期", 120));
  375. modelColList.add(this.buildColModelMap("IDCARDNOORPASSPORTNO", "ID card no. or Passport no. 身份证号/护照号", 120));
  376. modelColList.add(this.buildColModelMap("IDCARDCOMMENCINGDATE", "ID card commencing date 身份证开始日期", 120));
  377. modelColList.add(this.buildColModelMap("IDCARDEXPIREDDATE", "ID card expired date 身份证结束日期", 120));
  378. modelColList.add(this.buildColModelMap("FIDCardAddress", "ID card address 身份证地址", 120));
  379. modelColList.add(this.buildColModelMap("CURRENTADDRESS", "Current address 现在通讯地址", 120));
  380. modelColList.add(this.buildColModelMap("Sex", "Sex 性别", 50));
  381. modelColList.add(this.buildColModelMap("Birthdate", "Birth date 出生日期", 100));
  382. modelColList.add(this.buildColModelMap("Ethnicity", "Ethnicity 民族", 50));
  383. modelColList.add(this.buildColModelMap("Hukoutype", "Hukou type 户籍类型", 50));
  384. modelColList.add(this.buildColModelMap("HouseholdRegistereddate", "Household Registered date 户口登记日期", 50));
  385. modelColList.add(this.buildColModelMap("Nativeplace", "Native place 籍贯", 50));
  386. modelColList.add(this.buildColModelMap("POLITICASTATUS", "Political status 政治面貌", 50));
  387. modelColList.add(this.buildColModelMap("Maritalstatus", "Marital status 婚姻状况", 50));
  388. modelColList.add(this.buildColModelMap("Zipcode", "Zip code 邮政编码", 50));
  389. modelColList.add(this.buildColModelMap("GRADUATEDSCHOOLOFHIGHESTACADEMICDEGREE",
  390. "Graduated School of Highest Academic Degree (full-time) 全日制最高学历毕业院校", 200));
  391. modelColList.add(this.buildColModelMap("HIGHESTACADEMICDEGREE", "Highest Academic Degree (full-time) 全日制最高学历", 100));
  392. modelColList.add(this.buildColModelMap("HIGHESTQUALIFICATIONOFFULLTIMEEDUCATION",
  393. "Highest Qualification of Full-time Education 全日制最高学历所获学位", 200));
  394. modelColList.add(this.buildColModelMap("MAJOROFFULLTIMEEDUCATION", "Major of full time education 全日制最高学历所学专业", 120));
  395. modelColList.add(this.buildColModelMap("GRADUATEDDATE", "Graduated date 毕业日期", 50));
  396. modelColList.add(this.buildColModelMap("GRADUATESCHOOLOFHIGHESTDEGREEOFPARTTIMEEDUCATION",
  397. "Graduate School of Highest Degree of Part-time Education 非全日制最高学历毕业院校", 120));
  398. modelColList.add(this.buildColModelMap("HIGHESTDEGREEOFPARTTIMEEDUCATION",
  399. "Highest Degree of Part-time Education 非全日制最高学历", 120));
  400. modelColList.add(this.buildColModelMap("HIGHESTQUALIFICATIONOFPARTTIMEEDUCATION",
  401. "Highest Qualification of Part-time education 非全日制最高学历所获学位", 120));
  402. modelColList.add(this.buildColModelMap("MAJOROFPARTTIMEEDUCATION", "Major of Part-time education 非全日制最高学历所学专业", 50));
  403. modelColList.add(this.buildColModelMap("EMERGENCYCONTACT", "emergency contact 紧急联系人姓名", 50));
  404. modelColList.add(this.buildColModelMap("TELEPHONEOFEMERGENCY", "telephone of emergency contact 紧急联系人电话", 100));
  405. modelColList.add(this.buildColModelMap("RELATIONSHIP", "relationship 所属关系", 100));
  406. modelColList.add(this.buildColModelMap("TERMINATIONDATE", "Termination Date 离职日期", 100));
  407. modelColList.add(this.buildColModelMap("TERMINATIONREASON", "Termination Reason 离职原因", 100));
  408. return modelColList;
  409. }
  410. private Map<String, Object> buildColModelMap(String index, String label, int width) {
  411. return this.buildColModelMap(index, label, width, false, false, false);
  412. }
  413. private Map<String, Object> buildColModelMap(String index, String label, int width, boolean rowspan, boolean isKey,
  414. boolean isHedden) {
  415. Map<String, Object> gridIdMap = new LinkedHashMap<String, Object>();
  416. gridIdMap.put("index", index);
  417. gridIdMap.put("name", index);
  418. gridIdMap.put("label", label);
  419. gridIdMap.put("width", width);
  420. if (rowspan) {
  421. gridIdMap.put("rowspan", rowspan);
  422. }
  423. if (isKey) {
  424. gridIdMap.put("key", isKey);
  425. }
  426. if (isHedden) {
  427. gridIdMap.put("hidden", isHedden);
  428. }
  429. return gridIdMap;
  430. }
  431. public String getSql(String peronid, String personTypeId, String status, String employmentStartTime,
  432. String employmentEndTime, String resignationStartTime, String resignationEndTime, String deadline) {
  433. StringBuffer sql = new StringBuffer();
  434. sql.append(
  435. "SELECT a.fnumber as PersonNumber , a.CFSurname as LastName , a.CFMiddleNames as MiddleName , a.CFGivenName as FirstName , a.CFLocalName as LocalName ,");
  436. sql.append(" a.fname_l1 as DisplayName,c.fname_l1 as Department,c.fsimplename as Dept , e.fname_l1 as Job , f.Level , d.CFLongname_l1 as Position , d.fnumber as\r\n" +
  437. " PositionCode ,g.fname_l1 as WorkCategory , case when blx.fname_l1 is not null then blx.fname_l1 else lsx.fname_l1 end as PersonType,\r\n" +
  438. "case when qzjz.fname_l1 is not null then qzjz.fname_l1 else lsqzjz.fname_l1 end as FullTimeorPartTime , \r\n" +
  439. "j.fnumber as LineManager ,\r\n" +
  440. " j.fname_l2 as LineManagerName ,b.feffdt as StartTime , b.fleffdt as EndTime , k.FEnterDate as HireDate , k.FTryoutMonth as ProbationPeriod ,\r\n" +
  441. " 'months' as ProbationPeriodUnit , k.FPlanFormalDate as ProbationEndDate , l.FOfficePhone as WorkPhone , l.FMobile as CellPhone , l.FEmail as PrimaryEmail\r\n" +
  442. " , l.CFPrivateemail as Email , m.fname_l1 as Nationality ,v.FIssueDate as WorkPermitIssueDate, v.CFExpirationDate as WorkPermitExpirationDate,w.FIssueDate \r\n" +
  443. "as ResidencePermitIssueDate, w.CFExpirationDate as ResidencePermitExpirationDate,\r\n" +
  444. " case when a.FIDCardNO is not null then a.FIDCardNO when a.FPassportNO is not null then a.FPassportNO end as IDcardnoorPassportno, a.FIdCardBeginDate as IDcardcommencingdate,a.FIdCardEndDate as IDcardexpireddate,\r\n" +
  445. " a.FIDCardAddress,\r\n" +
  446. "l.FWORKPLACE as CurrentAddress , case when a.FGender = 1 then 'male' when a.FGender = 2 then 'female' else '' end as Sex , a.FBirthday as BirthDate ,\r\n" +
  447. "mz.FName_L1 as Ethnicity , hj.FName_L1 as HukouType , a.cfhrd as HouseholdRegisteredDate , a.FNativePlace_L2 as Nativeplace ,\r\n" +
  448. "zm.FName_L1 as PoliticaStatus , hy.FName_L1 as MaritalStatus , l.FPostalcode as Zipcode,\r\n" +
  449. "qrz.CFSchool as GraduatedSchoolofHighestAcademicDegree , qxl.FName_L1 as HighestAcademicDegree , qxw.FName_L1 as HighestQualificationOfFulltimeEducation ,\r\n" +
  450. " qrz.CFMajor as Majoroffulltimeeducation , qrz.CFGraduation as GraduatedDate ,\r\n" +
  451. "fqrz.CFSchool as GraduateSchoolofHighestDegreeofParttimeEducation ,\r\n" +
  452. " fqxl.FName_L1 as HighestDegreeofParttimeEducation , fqxw.FName_L1 as HighestQualificationofParttimeeducation , fqrz.CFMajor as MajorofParttimeeducation ,\r\n" +
  453. "l.FLinkName as emergencyContact , l.FLinkTelNum as telephoneofemergency , l.CFRelationship as relationship,\r\n" +
  454. " case when tui.fbizdate is not null then tui.fbizdate when depart.fbizdate is not null then depart.fbizdate else ygls.feffdt end as TerminationDate,\r\n" +
  455. "case when tt.FName_L1 is not null then tt.FName_L1 else a.CFReason end as TerminationReason\r\n" +
  456. " FROM t_bd_person a \r\n" +
  457. "left join ( SELECT * FROM T_HR_EMPORGRELATION where FASSIGNTYPE = 1 and FIsLatestInAday = 1 ) b on a.fid = b.FPERSONID\r\n" +
  458. "left join T_BD_HRFolk mz on mz.fid=a.FFOLKID\r\n" +
  459. "left join T_BD_HRPolitical zm on zm.fid=a.FPoliticalFaceID\r\n" +
  460. "left join T_BD_HRWed hy on hy.fid=a.FWedID\r\n" +
  461. "left join T_BD_Regpermresidence hj on hj.fid=a.FREGRESIDENCEID\r\n" +
  462. "left join t_org_admin c on b.FAdminOrgID = c.FID \r\n" +
  463. "left join t_org_position d on b.fpositionid = d.FID \r\n" +
  464. "left join t_org_job e on d.FJOBID = e.fid");
  465. sql.append(" left join ( SELECT a.FPERSONID ,b.FNAME_l1 as Level FROM T_HR_EmpPostRank a left join t_hr_jobgrade b on a.FJOBGRADEID = b.FID where a.feffdt<="+"'"+deadline+"'"+" and a.fleffdt >="+"'"+deadline+"' ) f on a.fid = f.FPERSONID");
  466. sql.append(" left join CT_MP_WorkerCategory g on b.CFWorkercategoryID = g.fid \r\n" +
  467. "left join CT_MP_Fullorpart h on a.CFFtorptID = h.fid\r\n" +
  468. "left join T_HR_EmployeeClassify i on a.CFPersontypeID = i.FID \r\n" +
  469. "left join t_bd_person j on b.CFLineManagerNameI = j.fid\r\n" +
  470. "left join (select * from T_HR_EmpLaborRelationHis where FIsLatestInAday = 1 ) k on a.fid = k.FPERSONID\r\n" +
  471. "left join T_HR_PersonContactMethod l on a.fid = l.FPERSONID \r\n" +
  472. "left join T_BD_Nationality m on a.FNationalityID = m.fid\r\n" +
  473. "left join CT_MP_Fullperson qrz on qrz.FPersonID=a.fid\r\n" +
  474. "left join T_BD_HRDiploma qxl on qrz.CFBackgroundID= qxl.fid\r\n" +
  475. "left join T_BD_HRDegree qxw on qxw.fid=qrz.CFDegreeID\r\n" +
  476. "left join CT_MP_Partperson fqrz on fqrz.FPersonID =a.fid\r\n" +
  477. "left join T_BD_HRDiploma fqxl on fqrz.CFBackgroundID= fqxl.fid\r\n" +
  478. "left join T_BD_HRDegree fqxw on fqxw.fid=fqrz.CFDegreeID\r\n" +
  479. "left join T_HR_BDEmployeeType p on k.FLABORRELATIONSTATEID=p.fid\r\n" +
  480. "left join (select a.FCredentialsTypeNO,a.fid,a.fpersonid from T_HR_PersonCredentialsType a left join T_HR_CredentialsType b on a.FCredentialsTypeID=b.fid where b.FNUMBER ='CN01' )r on a.fid=r.fpersonid\r\n" +
  481. "left join(SELECT a.fname_l1,c.fpersonid FROM T_HR_VariationReason a left join (\r\n" +
  482. "SELECT a.* FROM T_HR_ResignBizBillEntry a right join \r\n" +
  483. "(SELECT max(fbizdate)as fbizdate,fpersonid FROM T_HR_ResignBizBillEntry group by fpersonid)b on a.fpersonid=b.fpersonid and a.fbizdate=b.fbizdate ) c\r\n" +
  484. "on a.fid=c.FVariationReasonID \r\n" +
  485. " )tt on a.fid=tt.fpersonid\r\n" +
  486. "\r\n" +
  487. "\r\n" +
  488. "left join ( SELECT DATEADD(DAY, -1, max(a.feffdt)) as bizdate,a.fpersonid FROM T_HR_EmpOrgRelation a left join T_HR_BDEmployeeType b on a.FEmployeeType=b.fid where b.FinService in('2') group by a.fpersonid) lzrq on\r\n" +
  489. "a.fid=lzrq.fpersonid\r\n" +
  490. "\r\n" +
  491. "left join( SELECT a.CFExpirationDate,a.FCredentialsTypeNO,a.fpersonid ,a.FIssueDate FROM T_HR_PersonCredentialsType a \r\n" +
  492. "INNER join( select max(CFExpirationDate)CFExpirationDate,a.fpersonid from T_HR_PersonCredentialsType a left join T_HR_CredentialsType b on a.FCredentialsTypeID=b.fid where b.FNUMBER ='CWP' group by a.fpersonid \r\n" +
  493. ") b on a.fpersonid=b.fpersonid and a.CFExpirationDate =b.CFExpirationDate inner join T_HR_CredentialsType c on a.FCredentialsTypeID=c.fid where c.FNUMBER ='CWP'\r\n" +
  494. " )v on a.fid=v.FPersonID\r\n" +
  495. "\r\n" +
  496. "left join(SELECT a.CFExpirationDate,a.FCredentialsTypeNO,a.fpersonid ,a.FIssueDate FROM T_HR_PersonCredentialsType a \r\n" +
  497. "INNER join( select max(CFExpirationDate)CFExpirationDate,a.fpersonid from T_HR_PersonCredentialsType a left join T_HR_CredentialsType b on a.FCredentialsTypeID=b.fid where b.FNUMBER ='CFRP' group by a.fpersonid \r\n" +
  498. ") b on a.fpersonid=b.fpersonid and a.CFExpirationDate =b.CFExpirationDate inner join T_HR_CredentialsType c on a.FCredentialsTypeID=c.fid where c.FNUMBER ='CFRP'\r\n" +
  499. ")w on a.fid=w.FPersonID\r\n" +
  500. "left join (SELECT max(fbizdate)as fbizdate,FPERSONID FROM T_HR_RetireBizBillEntry where fbizdate is not null group by FPERSONID )tui on a.fid=tui.FPERSONID\r\n" +
  501. "left join(SELECT max(fbizdate)as fbizdate,fpersonid FROM T_HR_ResignBizBillEntry group by fpersonid)depart on a.fid=depart.fpersonid \r\n" +
  502. "left join(\r\n" +
  503. "SELECT DATEADD(DAY, -1, max(feffdt)) as feffdt,fpersonid FROM t_hr_emplaborrelationhis where flaborrelationstateid=(\r\n" +
  504. "SELECT fid FROM T_HR_BDEmployeeType where FNUMBER ='S09') group by fpersonid )ygls on a.fid=ygls.fpersonid");
  505. sql.append(" left join T_HR_EmployeeClassify blx on b.CFPersontypeID=blx.fid\r\n" +
  506. "left join (SELECT * FROM T_BD_PersonHis where FEFFDT<="+"'"+deadline+"'"+" and FLEFFDT >="+"'"+deadline+"')ryls on ryls.FHistoryRelateID=a.fid\r\n" +
  507. "left join T_HR_EmployeeClassify lsx on lsx.fid=ryls.CFPersontypeID "
  508. + "left join CT_MP_Fullorpart qzjz on b.CFFtorptID=qzjz.fid\r\n" +
  509. " left join CT_MP_Fullorpart lsqzjz on lsqzjz.fid= ryls.CFFtorptID");
  510. // 传了多个人员需要拆开拼接sql
  511. StringBuffer personsql = new StringBuffer();
  512. String[] personidArry = new String[0];
  513. if (!peronid.isEmpty()) {
  514. personidArry = peronid.split(",");
  515. }
  516. // 员工类别
  517. StringBuffer typesql = new StringBuffer();
  518. String[] typeArry = new String[0];
  519. // 状态的sql
  520. StringBuffer statussql = new StringBuffer();
  521. statussql.append(" and p.FINSERVICE = ");
  522. statussql.append("'");
  523. statussql.append(status);
  524. statussql.append("'");
  525. // 入职时间段的sql
  526. StringBuffer empostartsql = new StringBuffer();
  527. empostartsql.append(" and k.FEnterDate >= ");
  528. empostartsql.append("'");
  529. empostartsql.append(employmentStartTime);
  530. empostartsql.append("'");
  531. StringBuffer empoendsql = new StringBuffer();
  532. empoendsql.append(" and k.FEnterDate <= ");
  533. empoendsql.append("'");
  534. empoendsql.append(employmentEndTime);
  535. empoendsql.append("'");
  536. // 离职时间段的sql
  537. StringBuffer resstartsql = new StringBuffer();
  538. resstartsql.append(" and a.CFDimissiondate >= ");
  539. resstartsql.append("'");
  540. resstartsql.append(resignationStartTime);
  541. resstartsql.append("'");
  542. StringBuffer resendsql = new StringBuffer();
  543. // resendsql.append(" and t.FBizTime <= ");
  544. resendsql.append(" and a.CFDimissiondate <= ");
  545. resendsql.append("'");
  546. resendsql.append(resignationEndTime);
  547. resendsql.append("'");
  548. // 截止时间段的sql // 如果状态是离职 截止时间就和离职时间比较 如果是在职就和在职时间比较
  549. StringBuffer deadlinesql = new StringBuffer();
  550. deadlinesql.append(" and b.fleffdt >= ");
  551. deadlinesql.append("'");
  552. deadlinesql.append(deadline);
  553. deadlinesql.append("'");
  554. deadlinesql.append(" and b.feffdt <= ");
  555. deadlinesql.append("'");
  556. deadlinesql.append(deadline);
  557. deadlinesql.append("'");
  558. // 用工关系也开始结束时间也要和截止时间一样
  559. StringBuffer yggx = new StringBuffer();
  560. yggx.append(" and k.fleffdt >= ");
  561. yggx.append("'");
  562. yggx.append(deadline);
  563. yggx.append("'");
  564. yggx.append(" and k.feffdt <= ");
  565. yggx.append("'");
  566. yggx.append(deadline);
  567. yggx.append("'");
  568. if (!personTypeId.isEmpty()) {
  569. typeArry = personTypeId.split(",");
  570. }
  571. if (personidArry.length > 0) {
  572. personsql.append(" where a.fid in ");
  573. personsql.append("(");
  574. for (String pid : personidArry) {
  575. personsql.append("'");
  576. personsql.append(pid);
  577. personsql.append("'");
  578. personsql.append(",");
  579. }
  580. // 删除最后一个逗号
  581. personsql.deleteCharAt(personsql.length() - 1);
  582. personsql.append(")");
  583. sql.append(personsql);
  584. // 和员工类别拼接
  585. if (typeArry.length > 0) {
  586. typesql.append(" and g.fid in");
  587. typesql.append("(");
  588. for (String type : typeArry) {
  589. typesql.append("'");
  590. typesql.append(type);
  591. typesql.append("'");
  592. typesql.append(",");
  593. }
  594. // 删除最后一个逗号
  595. typesql.deleteCharAt(typesql.length() - 1);
  596. typesql.append(")");
  597. sql.append(typesql);
  598. }
  599. // 和状态拼接
  600. if (status != null && !status.equals("")) {
  601. sql.append(statussql);
  602. }
  603. // 和入职时间段拼接
  604. if (employmentStartTime != null && !employmentStartTime.equals("")) {
  605. sql.append(empostartsql);
  606. }
  607. if (employmentEndTime != null && !employmentEndTime.equals("")) {
  608. sql.append(empoendsql);
  609. }
  610. // 和离职时间段拼接
  611. if (resignationStartTime != null && !resignationStartTime.equals("")) {
  612. sql.append(resstartsql);
  613. }
  614. if (resignationEndTime != null && !resignationEndTime.equals("")) {
  615. sql.append(resendsql);
  616. }
  617. // 和截止时间拼接
  618. if (deadline != null && !deadline.equals("")) {
  619. sql.append(deadlinesql);
  620. sql.append(yggx);
  621. }
  622. } else if (typeArry.length > 0) {
  623. typesql.append(" where g.fid in ");
  624. typesql.append("(");
  625. for (String type : typeArry) {
  626. typesql.append("'");
  627. typesql.append(type);
  628. typesql.append("'");
  629. typesql.append(",");
  630. }
  631. // 删除最后一个逗号
  632. typesql.deleteCharAt(typesql.length() - 1);
  633. typesql.append(")");
  634. sql.append(typesql);
  635. // 和状态拼接
  636. if (status != null && !status.equals("")) {
  637. sql.append(statussql);
  638. //sql.append(statussql);
  639. }
  640. // 和入职时间段拼接
  641. if (employmentStartTime != null && !employmentStartTime.equals("")) {
  642. sql.append(empostartsql);
  643. }
  644. if (employmentEndTime != null && !employmentEndTime.equals("")) {
  645. sql.append(empoendsql);
  646. }
  647. // 和离职时间段拼接
  648. if (resignationStartTime != null && !resignationStartTime.equals("")) {
  649. sql.append(resstartsql);
  650. }
  651. if (resignationEndTime != null && !resignationEndTime.equals("")) {
  652. sql.append(resendsql);
  653. }
  654. // 和截止时间拼接
  655. if (deadline != null && !deadline.equals("")) {
  656. sql.append(deadlinesql);
  657. sql.append(yggx);
  658. }
  659. } else if (status != null && !status.equals("")) {
  660. sql.append(" where p.FINSERVICE =");
  661. sql.append("'");
  662. sql.append(status);
  663. sql.append("'");
  664. // 和入职时间段拼接
  665. if (employmentStartTime != null && !employmentStartTime.equals("")) {
  666. sql.append(empostartsql);
  667. }
  668. if (employmentEndTime != null && !employmentEndTime.equals("")) {
  669. sql.append(empoendsql);
  670. }
  671. // 和离职时间段拼接
  672. if (resignationStartTime != null && !resignationStartTime.equals("")) {
  673. sql.append(resstartsql);
  674. }
  675. if (resignationEndTime != null && !resignationEndTime.equals("")) {
  676. sql.append(resendsql);
  677. }
  678. // 和截止时间拼接
  679. if (deadline != null && !deadline.equals("")) {
  680. sql.append(deadlinesql);
  681. sql.append(yggx);
  682. }
  683. } else if (employmentStartTime != null && !employmentStartTime.equals("")) {
  684. sql.append(" where k.FEnterDate >= ");
  685. sql.append("'");
  686. sql.append(employmentStartTime);
  687. sql.append("'");
  688. sql.append(empoendsql);
  689. // 和截止时间拼接
  690. if (deadline != null && !deadline.equals("")) {
  691. sql.append(deadlinesql);
  692. sql.append(yggx);
  693. }
  694. } else if (resignationStartTime != null && !resignationStartTime.equals("")) {
  695. sql.append(" where a.CFDimissiondate >= ");
  696. sql.append("'");
  697. sql.append(resignationStartTime);
  698. sql.append("'");
  699. sql.append(resendsql);
  700. // 和截止时间拼接
  701. if (deadline != null && !deadline.equals("")) {
  702. sql.append(deadlinesql);
  703. sql.append(yggx);
  704. }
  705. } else if (deadline != null && !deadline.equals("")) {
  706. sql.append(" where b.fleffdt >= ");
  707. sql.append("'");
  708. sql.append(deadline);
  709. sql.append("'");
  710. sql.append(" and b.feffdt <= ");
  711. sql.append("'");
  712. sql.append(deadline);
  713. sql.append("'");
  714. sql.append(yggx);
  715. }
  716. System.out.print("长sql"+sql.toString());
  717. logger1.error("长长的sql" + sql);
  718. return sql.toString();
  719. }
  720. // 导出数据
  721. public String toExcelAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
  722. throws BOSException, SQLException, SHRWebException {
  723. // 获取过滤条件
  724. String fastFilterItems = request.getParameter("fastFilterItems");
  725. JSONObject tofastFilterItems = new JSONObject(fastFilterItems);
  726. //JSONObject tofastFilterItems = JSON.parseObject(fastFilterItems);
  727. // 获取人员
  728. JSONObject personJson = tofastFilterItems.getJSONObject("person");
  729. String personid = personJson.getString("values");
  730. // 获取人员类别
  731. JSONObject personTypeJson = tofastFilterItems.getJSONObject("personType");
  732. String personTypeId = personTypeJson.getString("values");
  733. // 获取状态
  734. JSONObject statusJson = tofastFilterItems.getJSONObject("status");
  735. String status = statusJson.getString("values");
  736. // 入职时间段
  737. JSONObject periodEmploymentJson = tofastFilterItems.getJSONObject("periodEmployment");
  738. String pervalues = periodEmploymentJson.getString("values");
  739. String startDate = null;
  740. String endDate = null;
  741. if (pervalues != null && !pervalues.equals("")) {
  742. JSONObject periodEmploymentValues = periodEmploymentJson.getJSONObject("values");
  743. startDate = periodEmploymentValues.getString("startDate");
  744. endDate = periodEmploymentValues.getString("endDate");
  745. }
  746. // 离职时间段
  747. JSONObject periodResignationJson = tofastFilterItems.getJSONObject("periodResignation");
  748. String resValues = periodResignationJson.getString("values");
  749. String resStartDate = null;
  750. String resEndDate = null;
  751. if (resValues != null && !resValues.equals("")) {
  752. JSONObject periodResignationValues = periodResignationJson.getJSONObject("values");
  753. resStartDate = periodResignationValues.getString("startDate");
  754. resEndDate = periodResignationValues.getString("endDate");
  755. }
  756. // 截止时间
  757. JSONObject deadlineJson = tofastFilterItems.getJSONObject("deadline");
  758. String deadValues = deadlineJson.getString("values");
  759. String dataeTime = null;
  760. if (deadValues != null && !deadValues.equals("")) {
  761. JSONObject deadVluesJson = deadlineJson.getJSONObject("values");
  762. dataeTime = deadVluesJson.getString("date");
  763. }
  764. // List<Map<String, Object>> maplist = new ArrayList<Map<String, Object>>();
  765. int num = 0;
  766. IRowSet rs = DbUtil.executeQuery(this.ctx,
  767. this.getSql(personid, personTypeId, status, startDate, endDate, resStartDate, resEndDate, dataeTime));
  768. LinkedHashMap<String, String> selectFieldsTypeMap = new LinkedHashMap<String, String>();
  769. String stringType = "String_@";
  770. String dateType = "Date_yyyy/MM/dd";
  771. String numberType = "Number_0_%s";
  772. selectFieldsTypeMap.put("No", numberType);
  773. selectFieldsTypeMap.put("PERSONNUMBER", numberType);
  774. selectFieldsTypeMap.put("LASTNAME", stringType);
  775. selectFieldsTypeMap.put("MiddleName", stringType);
  776. selectFieldsTypeMap.put("FirstName", stringType);
  777. selectFieldsTypeMap.put("LocalName", stringType);
  778. selectFieldsTypeMap.put("DisplayName", stringType);
  779. selectFieldsTypeMap.put("Department", stringType);
  780. selectFieldsTypeMap.put("Dept", stringType);
  781. selectFieldsTypeMap.put("Job", stringType);
  782. selectFieldsTypeMap.put("Level", stringType);
  783. selectFieldsTypeMap.put("Position", stringType);
  784. selectFieldsTypeMap.put("PositionCode", stringType);
  785. selectFieldsTypeMap.put("WorkCategory", stringType);
  786. selectFieldsTypeMap.put("PersonType", stringType);
  787. selectFieldsTypeMap.put("FULLTIMEORPARTTIME", stringType);
  788. selectFieldsTypeMap.put("LINEMANAGER", numberType);
  789. selectFieldsTypeMap.put("LINEMANAGERNAME", stringType);
  790. selectFieldsTypeMap.put("StartTime", dateType);
  791. selectFieldsTypeMap.put("EndTime", dateType);
  792. selectFieldsTypeMap.put("HireDate", dateType);
  793. selectFieldsTypeMap.put("ProbationPeriod", stringType);
  794. selectFieldsTypeMap.put("ProbationPeriodUnit", stringType);
  795. selectFieldsTypeMap.put("ProbationEndDate", dateType);
  796. selectFieldsTypeMap.put("WORKPHONE", stringType);
  797. selectFieldsTypeMap.put("CellPhone", stringType);
  798. selectFieldsTypeMap.put("PRIMARYEMAIL", stringType);
  799. selectFieldsTypeMap.put("Email", stringType);
  800. selectFieldsTypeMap.put("Nationality", stringType);
  801. selectFieldsTypeMap.put("WORKPERMITISSUEDATE", dateType);
  802. selectFieldsTypeMap.put("WORKPERMITEXPIRATIONDATE", dateType);
  803. selectFieldsTypeMap.put("RESIDENCEPERMITISSUEDATE", dateType);
  804. selectFieldsTypeMap.put("RESIDENCEPERMITEXPIRATIONDATE", dateType);
  805. selectFieldsTypeMap.put("IDCARDNOORPASSPORTNO", stringType);
  806. selectFieldsTypeMap.put("IDCARDCOMMENCINGDATE", dateType);
  807. selectFieldsTypeMap.put("IDCARDEXPIREDDATE", dateType);
  808. selectFieldsTypeMap.put("FIDCardAddress", stringType);
  809. selectFieldsTypeMap.put("CURRENTADDRESS", stringType);
  810. selectFieldsTypeMap.put("Sex", stringType);
  811. selectFieldsTypeMap.put("Birthdate", dateType);
  812. selectFieldsTypeMap.put("Ethnicity", stringType);
  813. selectFieldsTypeMap.put("Hukoutype", stringType);
  814. selectFieldsTypeMap.put("HouseholdRegistereddate", dateType);
  815. selectFieldsTypeMap.put("Nativeplace", stringType);
  816. selectFieldsTypeMap.put("POLITICASTATUS", stringType);
  817. selectFieldsTypeMap.put("Maritalstatus", stringType);
  818. selectFieldsTypeMap.put("Zipcode", stringType);
  819. selectFieldsTypeMap.put("GRADUATEDSCHOOLOFHIGHESTACADEMICDEGREE", stringType);
  820. selectFieldsTypeMap.put("HIGHESTACADEMICDEGREE", stringType);
  821. selectFieldsTypeMap.put("HIGHESTQUALIFICATIONOFFULLTIMEEDUCATION", stringType);
  822. selectFieldsTypeMap.put("MAJOROFFULLTIMEEDUCATION", stringType);
  823. selectFieldsTypeMap.put("GRADUATEDDATE", dateType);
  824. selectFieldsTypeMap.put("GRADUATESCHOOLOFHIGHESTDEGREEOFPARTTIMEEDUCATION", stringType);
  825. selectFieldsTypeMap.put("HIGHESTDEGREEOFPARTTIMEEDUCATION", stringType);
  826. selectFieldsTypeMap.put("HIGHESTQUALIFICATIONOFPARTTIMEEDUCATION", stringType);
  827. selectFieldsTypeMap.put("MAJOROFPARTTIMEEDUCATION", stringType);
  828. selectFieldsTypeMap.put("EMERGENCYCONTACT", stringType);
  829. selectFieldsTypeMap.put("TELEPHONEOFEMERGENCY", stringType);
  830. selectFieldsTypeMap.put("RELATIONSHIP", stringType);
  831. selectFieldsTypeMap.put("TERMINATIONDATE", dateType);
  832. selectFieldsTypeMap.put("TERMINATIONREASON", stringType);
  833. //列名要设置成中文+英文
  834. LinkedHashMap<String, String> selectChineseMap = new LinkedHashMap<String, String>();
  835. selectChineseMap.put("NO.序号", numberType);
  836. selectChineseMap.put("Person Number 工号", numberType);
  837. selectChineseMap.put("Last Name 姓", stringType);
  838. selectChineseMap.put("Middle Name 中间名", stringType);
  839. selectChineseMap.put("First Name 名", stringType);
  840. selectChineseMap.put("Local Name 本地名称", stringType);
  841. selectChineseMap.put("Display Name 展示名称", stringType);
  842. selectChineseMap.put("Department 部门", stringType);
  843. selectChineseMap.put("Dept. 部门简称", stringType);
  844. selectChineseMap.put("Job 职务", stringType);
  845. selectChineseMap.put("Level(L1-L15)", stringType);
  846. selectChineseMap.put("Position 职位", stringType);
  847. selectChineseMap.put("Position Code", stringType);
  848. selectChineseMap.put("Work Category 员工类别", stringType);
  849. selectChineseMap.put("Person Type 人员类型", stringType);
  850. selectChineseMap.put("Full Time or Part Time 全职或兼职", stringType);
  851. selectChineseMap.put("ine Manager 直线经理 (工号)", numberType);
  852. selectChineseMap.put("Line Manager 直线经理 (姓名)", stringType);
  853. selectChineseMap.put("Start Time", dateType);
  854. selectChineseMap.put("End Time", dateType);
  855. selectChineseMap.put("Hire Date 入职日期", dateType);
  856. selectChineseMap.put("Probation Period 试用期", stringType);
  857. selectChineseMap.put("Probation Period Unit 试用期单位", stringType);
  858. selectChineseMap.put("Probation End Date 试用期结束日期", dateType);
  859. selectChineseMap.put("Work Phone 工作电话", stringType);
  860. selectChineseMap.put("Cell Phone 手机", stringType);
  861. selectChineseMap.put("Email (Primary)工作邮箱", stringType);
  862. selectChineseMap.put("Email 邮箱", stringType);
  863. selectChineseMap.put("Nationality 国籍", stringType);
  864. selectChineseMap.put("Work Permit Issue Date 工作许可签发日期", dateType);
  865. selectChineseMap.put("Work Permit Expiration Date 工作许可失效日期", dateType);
  866. selectChineseMap.put("Residence Permit Issue Date 居住许可签发日期", dateType);
  867. selectChineseMap.put("Residence Permit Expiration Date 居住许可失效日期", dateType);
  868. selectChineseMap.put("ID card no. or Passport no. 身份证号/护照号", stringType);
  869. selectChineseMap.put("ID card commencing date 身份证开始日期", dateType);
  870. selectChineseMap.put("ID card expired date 身份证结束日期", dateType);
  871. selectChineseMap.put("ID card address 身份证地址", stringType);
  872. selectChineseMap.put("Current address 现在通讯地址", stringType);
  873. selectChineseMap.put("Sex 性别", stringType);
  874. selectChineseMap.put("Birth date 出生日期", dateType);
  875. selectChineseMap.put("Ethnicity 民族", stringType);
  876. selectChineseMap.put("Hukou type 户籍类型", stringType);
  877. selectChineseMap.put("Household Registered date 户口登记日期", dateType);
  878. selectChineseMap.put("Native place 籍贯", stringType);
  879. selectChineseMap.put("Political status 政治面貌", stringType);
  880. selectChineseMap.put("Marital status 婚姻状况", stringType);
  881. selectChineseMap.put("Zip code 邮政编码", stringType);
  882. selectChineseMap.put("Graduated School of Highest Academic Degree (full-time) 全日制最高学历毕业院校", stringType);
  883. selectChineseMap.put("Highest Academic Degree (full-time) 全日制最高学历", stringType);
  884. selectChineseMap.put("Highest Qualification of Full-time Education 全日制最高学历所获学位", stringType);
  885. selectChineseMap.put("Major of full time education 全日制最高学历所学专业", stringType);
  886. selectChineseMap.put("Graduated date 毕业日期", dateType);
  887. selectChineseMap.put("Graduate School of Highest Degree of Part-time Education 非全日制最高学历毕业院校", stringType);
  888. selectChineseMap.put("Highest Degree of Part-time Education 非全日制最高学历", stringType);
  889. selectChineseMap.put("Highest Qualification of Part-time education 非全日制最高学历所获学位", stringType);
  890. selectChineseMap.put("Major of Part-time education 非全日制最高学历所学专业", stringType);
  891. selectChineseMap.put("emergency contact 紧急联系人姓名", stringType);
  892. selectChineseMap.put("telephone of emergency contact 紧急联系人电话", stringType);
  893. selectChineseMap.put("relationship 所属关系", stringType);
  894. selectChineseMap.put("Termination Date 离职日期", dateType);
  895. selectChineseMap.put("Termination Reason 离职原因", stringType);
  896. PersonRosterListHandler.exportData(response, rs, "EmployeeListReport.xlsx", selectFieldsTypeMap,selectChineseMap);
  897. return null;
  898. }
  899. /**
  900. *
  901. * @param response
  902. * response
  903. * @param resource
  904. * 需要导出的数据源
  905. * @param fileName
  906. * 导出文件名称
  907. * @param selectFieldsTypeMap
  908. * 存放查询字段对应导出类型和导出样式 key selectField 导出字段 value
  909. * fieldType_cellStyleMap key 导出查询字段 value 导出类型_导出样式 导出样式 key
  910. * DateType 日期格式 value "yyyy-mm-dd" key NumberType 数字 value '0.0_
  911. * '->保留一位小数 '0_ '->整数 key StringType 文本 value @
  912. * @throws SQLException
  913. */
  914. public static void exportData(HttpServletResponse response, Object resource, String fileName,
  915. LinkedHashMap<String, String> selectFieldsTypeMap,LinkedHashMap<String, String> selectChineseMap) throws SQLException {
  916. // 创建新的Excel 工作簿
  917. // Excel2003版本(包含2003)以前使用HSSFWorkbook类,扩展名为.xls
  918. // Excel2007版本(包含2007)以后使用XSSFWorkbook类,扩展名为.xlsx
  919. XSSFWorkbook workBook = new XSSFWorkbook();
  920. // 在Excel工作簿中创建新的工作表,名为"Sheet1"
  921. XSSFSheet sheet = workBook.createSheet("Sheet1");
  922. DataFormat format = workBook.createDataFormat();
  923. // 设置数字格式为整数,不保留小数 (_ )空格是必须要切勿格式
  924. if (resource != null) {
  925. if (resource instanceof IRowSet) {
  926. IRowSet rs = (IRowSet) resource;
  927. // 列数
  928. int numColumns = selectFieldsTypeMap.entrySet().size();
  929. // 创建多行多列的数据
  930. int i = 0;
  931. // 创建标题
  932. XSSFRow titleRow = sheet.createRow(i);
  933. // 列名
  934. List<String> keyList = selectFieldsTypeMap.keySet().stream().collect(Collectors.toList());
  935. List<String> chineseList = selectChineseMap.keySet().stream().collect(Collectors.toList());
  936. // 创建字体样式
  937. XSSFFont font = workBook.createFont();
  938. font.setFontName("宋体"); // 设置字体为 Arial
  939. font.setFontHeightInPoints((short) 11); // 设置字体大小为 12 点
  940. font.setColor(IndexedColors.BLACK.getIndex()); // 设置字体颜色为黑色
  941. font.setBold(true);
  942. // 创建一个新的单元格样式,并将字体样式应用于该样式
  943. CellStyle cellStyle = workBook.createCellStyle();
  944. cellStyle.setFont(font);
  945. if (i == 0) {
  946. for (int j = 0; j < numColumns; j++) {
  947. // 创建列
  948. XSSFCell cell = titleRow.createCell(j);
  949. //cell.setCellValue(keyList.get(j));
  950. cell.setCellValue(chineseList.get(j));
  951. // 调整列宽
  952. sheet.setColumnWidth(j+1, 6000);
  953. // 应用字体样式
  954. titleRow.getCell(j).setCellStyle(cellStyle);
  955. }
  956. }
  957. i++;
  958. // 序列号
  959. int sertize=0;
  960. // 创建数据
  961. while (rs.next()) {
  962. sertize++;
  963. try {
  964. XSSFRow dateRow = sheet.createRow(i);
  965. for (int j = 0; j < numColumns; j++) {
  966. // 创建列
  967. XSSFCell cell = dateRow.createCell(j);
  968. // 由于开发与测试环境的数据库类型与不一致 导致无法从数据库表读取相关字段类型判断 且有相关计算字段
  969. // 所以采用参数判断
  970. String column = keyList.get(j);
  971. String fieldTypeAndcellStyleType = selectFieldsTypeMap.get(column);
  972. int indexOf = fieldTypeAndcellStyleType.indexOf("_");
  973. // 字段属性类型
  974. String fieldType = fieldTypeAndcellStyleType.substring(0, indexOf);
  975. // 样式类型
  976. String cellStyleType = fieldTypeAndcellStyleType.substring(indexOf + 1,
  977. fieldTypeAndcellStyleType.length());
  978. //如果是序号
  979. if("No".equals(column)) {
  980. cell.setCellValue(sertize);
  981. continue;
  982. }
  983. // 不设置格式
  984. cell.setCellValue(rs.getString(column));
  985. if ("Date".equals(fieldType)) {
  986. // 日期
  987. // cell.setCellValue(rs.getString(column));
  988. Date date = rs.getDate(column);
  989. cell.setCellValue(date);
  990. XSSFCellStyle stylee = workBook.createCellStyle();
  991. stylee.setDataFormat(format.getFormat(cellStyleType));
  992. cell.setCellStyle(stylee);
  993. // cell.setCellValue(rs.getString(column));
  994. } else if ("Number".equals(fieldType)) {
  995. // 数值 (小数和整数)
  996. String value = rs.getString(column);
  997. cell.setCellValue(value);
  998. if (value != null && !("").equals(value)) {
  999. XSSFCellStyle style = workBook.createCellStyle();
  1000. style.setDataFormat(format.getFormat(String.format(cellStyleType, " ")));
  1001. cell.setCellStyle(style);
  1002. if (cellStyleType.contains(".")) {
  1003. // 小数
  1004. cell.setCellValue(Double.parseDouble(value));
  1005. } else {
  1006. cell.setCellValue(Integer.parseInt(value));
  1007. }
  1008. }
  1009. } else if ("String".equals(fieldType)) {
  1010. // 文本类型
  1011. if (rs.getString(column) != null && !("").equals(rs.getString(column))) {
  1012. // style.setDataFormat(format.getFormat(cellStyleType));
  1013. // cell.setCellStyle(style);
  1014. cell.setCellValue(rs.getString(column));
  1015. }
  1016. }
  1017. }
  1018. i++;
  1019. } catch (Exception e) {
  1020. System.out.println();
  1021. logger1.info("Excel file was created Error!" + e.getMessage());
  1022. }
  1023. }
  1024. try {
  1025. setResponseHeader(response, fileName);
  1026. OutputStream os = response.getOutputStream();
  1027. workBook.write(os);
  1028. workBook.close();
  1029. os.flush();
  1030. os.close();
  1031. logger1.info("Excel file was created successfully!");
  1032. } catch (IOException e) {
  1033. logger1.info("Error while writing to file " + e.getMessage());
  1034. e.printStackTrace();
  1035. }
  1036. }
  1037. }
  1038. }
  1039. private static Logger logger = Logger.getLogger("com.kingdee.shr.customer.gtiit.rpt.PersonRosterListHandler");
  1040. public static void setResponseHeader(HttpServletResponse response, String fileName) {
  1041. try {
  1042. try {
  1043. fileName = URLEncoder.encode(fileName, "UTF-8");
  1044. } catch (UnsupportedEncodingException e) {
  1045. e.printStackTrace();
  1046. }
  1047. response.setContentType("application/octet-stream;charset=UTF-8");
  1048. response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
  1049. response.addHeader("Pargam", "no-cache");
  1050. response.addHeader("Cache-Control", "no-cache");
  1051. } catch (Exception ex) {
  1052. ex.printStackTrace();
  1053. }
  1054. }
  1055. }