a493ac78b787af1973b5dd075cd0ea7355ccdeac.svn-base 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. /**
  2. *
  3. */
  4. package com.kingdee.shr.customer.gtiit.rpt;
  5. import java.io.IOException;
  6. import java.io.OutputStream;
  7. import java.io.UnsupportedEncodingException;
  8. import java.net.URLEncoder;
  9. import java.sql.Date;
  10. import java.sql.SQLException;
  11. import java.util.ArrayList;
  12. import java.util.HashMap;
  13. import java.util.LinkedHashMap;
  14. import java.util.List;
  15. import java.util.Map;
  16. import java.util.stream.Collectors;
  17. import javax.servlet.http.HttpServletRequest;
  18. import javax.servlet.http.HttpServletResponse;
  19. import org.apache.poi.ss.usermodel.DataFormat;
  20. import org.apache.poi.xssf.usermodel.XSSFCell;
  21. import org.apache.poi.xssf.usermodel.XSSFCellStyle;
  22. import org.apache.poi.xssf.usermodel.XSSFRow;
  23. import org.apache.poi.xssf.usermodel.XSSFSheet;
  24. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  25. import org.json.JSONObject;
  26. import org.springframework.ui.ModelMap;
  27. import com.cloudera.impala.jdbc4.internal.apache.log4j.Logger;
  28. import com.kingdee.bos.BOSException;
  29. import com.kingdee.bos.Context;
  30. import com.kingdee.eas.util.app.DbUtil;
  31. import com.kingdee.jdbc.rowset.IRowSet;
  32. import com.kingdee.shr.base.syssetting.context.SHRContext;
  33. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  34. import com.kingdee.shr.base.syssetting.web.handler.ListHandler;
  35. import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
  36. import com.kingdee.shr.customer.gtiit.util.ExportAllUtils;
  37. /**
  38. * @author ISSUSER 护照邮箱报表
  39. */
  40. public class PassportsListHandler extends ListHandler {
  41. Context ctx = SHRContext.getInstance().getContext();
  42. private static Logger logger1 = Logger.getLogger("com.kingdee.shr.customer.gtiit.rpt.PassportsListHandler");
  43. private int totalCount;
  44. public String getGridColModelAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
  45. throws SHRWebException, BOSException, SQLException {
  46. List<String> colNames = this.getcolNamesAction();
  47. List<Map<String, Object>> colModel = this.getcolModelAction();
  48. LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();
  49. map.put("colNames", colNames);
  50. map.put("colModel", colModel);
  51. JSONUtils.writeJson(response, map);
  52. return null;
  53. }
  54. public void getGridDataAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
  55. throws BOSException, SQLException, SHRWebException {
  56. int rows = Integer.parseInt(request.getParameter("rows"));
  57. int page = Integer.parseInt(request.getParameter("page"));
  58. // 获取过滤条件
  59. String fastFilterItems = request.getParameter("fastFilterItems");
  60. JSONObject tofastFilterItems = new JSONObject(fastFilterItems);
  61. // 获取人员
  62. JSONObject personJson = tofastFilterItems.getJSONObject("person");
  63. String personid = personJson.getString("values");
  64. JSONObject statusJson = tofastFilterItems.getJSONObject("status");
  65. String status = statusJson.getString("values");
  66. IRowSet rs = DbUtil.executeQuery(this.ctx, this.getSql(personid, status));
  67. List<Map<String, Object>> maplist = new ArrayList<Map<String, Object>>();
  68. int num = 0;
  69. while (rs.next()) {
  70. ++num;
  71. if (num >= rows * (page - 1) + 1 && num <= rows * page) {
  72. Map<String, Object> map = new HashMap<String, Object>();
  73. map.put("FName_L1", rs.getString("FName_L1"));
  74. map.put("FCredentialsTypeNO", rs.getString("FCredentialsTypeNO"));
  75. map.put("FEmail", rs.getString("FEmail"));
  76. map.put("CFPrivateemail", rs.getString("CFPrivateemail"));
  77. map.put("Person Number", rs.getString("FNumber"));
  78. maplist.add(map);
  79. }
  80. }
  81. this.totalCount = num;
  82. Map<String, Object> gridDataMap = new LinkedHashMap<String, Object>();
  83. if (this.totalCount % rows == 0) {
  84. gridDataMap.put("total", this.totalCount / rows);
  85. } else {
  86. gridDataMap.put("total", this.totalCount / rows + 1);
  87. }
  88. gridDataMap.put("page", page);
  89. gridDataMap.put("records", this.totalCount);
  90. gridDataMap.put("rows", maplist);
  91. JSONUtils.writeJson(response, gridDataMap);
  92. }
  93. public ArrayList<String> getcolNamesAction() throws SHRWebException {
  94. ArrayList<String> list = new ArrayList<String>();
  95. list.add("Display Name");
  96. list.add("Passport Number");
  97. list.add("Work Email");
  98. list.add("Private Email");
  99. list.add("Person Number");
  100. return list;
  101. }
  102. public List<Map<String, Object>> getcolModelAction() {
  103. List<Map<String, Object>> modelColList = new ArrayList<Map<String, Object>>();
  104. modelColList.add(this.buildColModelMap("FName_L1", "Display Name", 70));
  105. modelColList.add(this.buildColModelMap("FCredentialsTypeNO", "Passport Number", 70));
  106. modelColList.add(this.buildColModelMap("FEmail", "Work Email", 70));
  107. modelColList.add(this.buildColModelMap("CFPrivateemail", "Private Email", 70));
  108. modelColList.add(this.buildColModelMap("Person Number", "Person Number", 70));
  109. return modelColList;
  110. }
  111. private Map<String, Object> buildColModelMap(String index, String label, int width) {
  112. return this.buildColModelMap(index, label, width, false, false, false);
  113. }
  114. private Map<String, Object> buildColModelMap(String index, String label, int width, boolean rowspan, boolean isKey,
  115. boolean isHedden) {
  116. Map<String, Object> gridIdMap = new LinkedHashMap<String, Object>();
  117. gridIdMap.put("index", index);
  118. gridIdMap.put("name", index);
  119. gridIdMap.put("label", label);
  120. gridIdMap.put("width", width);
  121. if (rowspan) {
  122. gridIdMap.put("rowspan", rowspan);
  123. }
  124. if (isKey) {
  125. gridIdMap.put("key", isKey);
  126. }
  127. if (isHedden) {
  128. gridIdMap.put("hidden", isHedden);
  129. }
  130. return gridIdMap;
  131. }
  132. public String getSql(String peronid, String status) {
  133. StringBuffer sql = new StringBuffer();
  134. sql.append("\r\n" +
  135. "\r\n" +
  136. "\r\n" +
  137. "select a.FCredentialsTypeNO, c.FName_L1,d.FEmail,d.CFPrivateemail, c.FNumber from T_HR_PersonCredentialsType a left join T_HR_CredentialsType b on a.FCredentialsTypeID=b.fid left join T_BD_Person c \r\n" +
  138. " on a.FPERSONID =c.fid \r\n" +
  139. " left join T_HR_PersonContactMethod d on d.FPERSONID =c.fid left join (select * from T_HR_EmpLaborRelationHis where FIsLatestInAday = 1 ) k on c.fid = k.FPERSONID\r\n" +
  140. "left join T_HR_BDEmployeeType p on k.FLABORRELATIONSTATEID=p.fid where k.FEndDateTime>='2199-01-01' and b.FNumber='OT001' ");
  141. // 传了多个人员需要拆开拼接sql
  142. StringBuffer personsql = new StringBuffer();
  143. String[] personidArry = new String[0];
  144. if (!peronid.isEmpty()) {
  145. personidArry = peronid.split(",");
  146. }
  147. // 状态的sql
  148. StringBuffer statussql = new StringBuffer();
  149. statussql.append(" and p.FINSERVICE = ");
  150. statussql.append("'");
  151. statussql.append(status);
  152. statussql.append("'");
  153. if (personidArry.length > 0) {
  154. personsql.append(" and c.fid in ");
  155. personsql.append("(");
  156. for (String pid : personidArry) {
  157. personsql.append("'");
  158. personsql.append(pid);
  159. personsql.append("'");
  160. personsql.append(",");
  161. }
  162. // 删除最后一个逗号
  163. personsql.deleteCharAt(personsql.length() - 1);
  164. personsql.append(")");
  165. sql.append(personsql);
  166. // 和状态拼接
  167. if (status != null && !status.equals("")) {
  168. sql.append(statussql);
  169. }
  170. } else if (status != null && !status.equals("")) {
  171. sql.append(statussql);
  172. } else {
  173. sql.append(" and p.FINSERVICE in ('1','2') ");
  174. }
  175. System.out.println("这个sql是:" + sql.toString());
  176. return sql.toString();
  177. }
  178. // 导出
  179. // 导出数据
  180. public String toExcelAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
  181. throws BOSException, SQLException, SHRWebException {
  182. // 获取过滤条件
  183. String fastFilterItems = request.getParameter("fastFilterItems");
  184. JSONObject tofastFilterItems = new JSONObject(fastFilterItems);
  185. // 获取人员
  186. JSONObject personJson = tofastFilterItems.getJSONObject("person");
  187. String personid = personJson.getString("values");
  188. String newperonid = personid.replace(" ", "+"); // 传过来id+可能是空格需要转
  189. JSONObject statusJson = tofastFilterItems.getJSONObject("status");
  190. String status = statusJson.getString("values");
  191. IRowSet rs = DbUtil.executeQuery(this.ctx, this.getSql(newperonid, status));
  192. LinkedHashMap<String, String> selectFieldsTypeMap = new LinkedHashMap<String, String>();
  193. String stringType = "String_@";
  194. // String dateType = "Date_yyyy/MM/dd";
  195. // String numberType = "Number_0_%s";
  196. selectFieldsTypeMap.put("FName_L1", stringType);
  197. selectFieldsTypeMap.put("FCredentialsTypeNO", stringType);
  198. selectFieldsTypeMap.put("FEmail", stringType);
  199. selectFieldsTypeMap.put("CFPrivateemail", stringType);
  200. selectFieldsTypeMap.put("FNumber", stringType);
  201. //ArrayList<String> list = this.getcolNamesAction();
  202. // LinkedHashMap<String,String> fieldsTypeMap = new LinkedHashMap<String, String>();
  203. // fieldsTypeMap.put("Display Name", stringType);
  204. // fieldsTypeMap.put("Passport Number", stringType);
  205. // fieldsTypeMap.put("Work Email", stringType);
  206. // fieldsTypeMap.put("Private Email", stringType);
  207. ArrayList<String> list = this.getcolNamesAction();
  208. ExportAllUtils.exportData(response, rs, "PassportsNumberList.xlsx", selectFieldsTypeMap,list);
  209. return null;
  210. }
  211. }