EmpEnrollBizBillHrManEditHandlerEx.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. package com.kingdee.shr.affair.web.handler.hrman;
  2. import java.io.UnsupportedEncodingException;
  3. import java.net.URLDecoder;
  4. import java.sql.SQLException;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import org.apache.commons.lang3.StringUtils;
  10. import org.springframework.ui.ModelMap;
  11. import com.kingdee.bos.BOSException;
  12. import com.kingdee.bos.Context;
  13. import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
  14. import com.kingdee.eas.common.EASBizException;
  15. import com.kingdee.eas.framework.CoreBaseInfo;
  16. import com.kingdee.eas.hr.affair.EmpEnrollBizBillEntryCollection;
  17. import com.kingdee.eas.hr.affair.EmpEnrollBizBillEntryInfo;
  18. import com.kingdee.eas.hr.affair.EmpEnrollBizBillFactory;
  19. import com.kingdee.eas.hr.affair.EmpEnrollBizBillInfo;
  20. import com.kingdee.eas.hr.base.HRBillStateEnum;
  21. import com.kingdee.eas.hr.base.HRBizDefineFactory;
  22. import com.kingdee.eas.hr.base.HRBizDefineInfo;
  23. import com.kingdee.eas.hr.base.util.HRUtilExtend;
  24. import com.kingdee.eas.util.app.DbUtil;
  25. import com.kingdee.jdbc.rowset.IRowSet;
  26. import com.kingdee.shr.affair.web.handler.util.EmployeeUtil;
  27. import com.kingdee.shr.base.syssetting.app.io.fileImport.ImportException;
  28. import com.kingdee.shr.base.syssetting.context.SHRContext;
  29. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  30. import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
  31. /**
  32. * 入职单Handler扩展
  33. * @author issuser
  34. *
  35. */
  36. public class EmpEnrollBizBillHrManEditHandlerEx extends EmpEnrollBizBillHrManEditHandler{
  37. @Override
  38. protected void beforeSave(HttpServletRequest request,
  39. HttpServletResponse response, CoreBaseInfo model)
  40. throws SHRWebException {
  41. super.beforeSave(request, response, model);
  42. EmpEnrollBizBillInfo billInfo = (EmpEnrollBizBillInfo) model;
  43. if (billInfo.getBillState() == null) {
  44. billInfo.setBillState(HRBillStateEnum.SAVED);
  45. }
  46. storefields(request, billInfo);
  47. }
  48. private CoreBaseInfo storefields(HttpServletRequest request,
  49. CoreBaseInfo model) throws SHRWebException {
  50. EmpEnrollBizBillInfo billInfo = (EmpEnrollBizBillInfo) model;
  51. if (billInfo.getId() == null) {
  52. billInfo.setIsMultiEntry(Boolean.TRUE.booleanValue());
  53. }
  54. EmpEnrollBizBillEntryInfo entryInfo = billInfo.getEntrys().get(0);
  55. if ((entryInfo.getPerson() != null)
  56. && (entryInfo.getPerson().getId() == null)) {
  57. entryInfo.setPerson(null);
  58. }
  59. entryInfo.setBill(billInfo);
  60. EmpEnrollBizBillEntryCollection entryColl = null;
  61. if (!(StringUtils.isEmpty(request.getParameter("multiEntryBillId")))) {
  62. try {
  63. String multiEntryBillId = URLDecoder.decode(request
  64. .getParameter("multiEntryBillId"), "utf-8");
  65. EmpEnrollBizBillInfo multiEntryBillInfo = EmpEnrollBizBillFactory
  66. .getRemoteInstance().getEmpEnrollBizBillInfo(
  67. new ObjectUuidPK(multiEntryBillId));
  68. billInfo.setId(multiEntryBillInfo.getId());
  69. billInfo.setAdminOrg(multiEntryBillInfo.getAdminOrg());
  70. billInfo.setApplier(multiEntryBillInfo.getApplier());
  71. billInfo.setIsMulti(Boolean.TRUE.booleanValue());
  72. entryInfo.setBill(multiEntryBillInfo);
  73. //判断是否再入职
  74. //变动操作
  75. String hrBizDefineId = multiEntryBillInfo.getString("hrBizDefine");
  76. Context ctx = SHRContext.getInstance().getContext();
  77. HRBizDefineInfo hrBizDefineInfo = HRBizDefineFactory.getLocalInstance(ctx).getHRBizDefineInfo(new ObjectUuidPK(hrBizDefineId));
  78. //不是再入职,重新获取员工编码
  79. if( !"SHR02".equals(hrBizDefineInfo.getNumber())) {
  80. //员工编码
  81. EmployeeUtil employeeUtil = new EmployeeUtil();
  82. int fnumber = employeeUtil.getFnumber();
  83. entryInfo.setEmpNumber(String.valueOf(fnumber));
  84. }
  85. entryColl = multiEntryBillInfo.getEntrys();
  86. entryColl.add(entryInfo);
  87. } catch (EASBizException e) {
  88. e.printStackTrace();
  89. throw new SHRWebException(e);
  90. } catch (BOSException e) {
  91. e.printStackTrace();
  92. throw new SHRWebException(e);
  93. } catch (UnsupportedEncodingException e) {
  94. e.printStackTrace();
  95. throw new SHRWebException(e);
  96. } catch (SQLException e) {
  97. e.printStackTrace();
  98. }
  99. } else {
  100. billInfo.setAdminOrg(entryInfo.getAdminOrg());
  101. billInfo.setIsMulti(Boolean.FALSE.booleanValue());
  102. entryColl = new EmpEnrollBizBillEntryCollection();
  103. entryColl.add(entryInfo);
  104. }
  105. try {
  106. HRUtilExtend.assableCell(entryInfo, "telNum");
  107. } catch (EASBizException e) {
  108. e.printStackTrace();
  109. throw new SHRWebException(e.getMessage());
  110. }
  111. billInfo.getEntrys().clear();
  112. billInfo.getEntrys().addCollection(entryColl);
  113. return billInfo;
  114. }
  115. @Override
  116. protected void verifyModel(HttpServletRequest request,
  117. HttpServletResponse response, CoreBaseInfo model)
  118. throws SHRWebException {
  119. EmpEnrollBizBillInfo billInfo = (EmpEnrollBizBillInfo) model;
  120. EmpEnrollBizBillEntryCollection coll = billInfo.getEntrys();
  121. try {
  122. //不是再入职,校验用户名、邮箱
  123. EmployeeUtil employeeUtil = new EmployeeUtil();
  124. if ((null != coll) && (coll.size() > 0)) {
  125. int i = 0;
  126. for (int size = coll.size(); i < size; ++i) {
  127. EmpEnrollBizBillEntryInfo info = coll.get(i);
  128. HRBizDefineInfo hrBizDefineInfo = info.getHrBizDefine();
  129. System.out.print("入职hrBizDefineInfo:"+hrBizDefineInfo.getNumber());
  130. if(!"SHR02".equals(hrBizDefineInfo.getNumber())) {
  131. String fid = billInfo.getString("id");
  132. //用户名唯一校验
  133. Boolean isUniqueCheck = employeeUtil.checkUserName(
  134. info.get("userName").toString(),fid,info.getEmpNumber());
  135. if( !isUniqueCheck){
  136. throw new ImportException("This user name :"+ info.get("userName") + ",already exists");
  137. }
  138. //邮箱唯一校验
  139. Boolean emailCheck = employeeUtil.checkEmail(info.get("email").toString(),fid,info.getEmpNumber());
  140. if( !emailCheck){
  141. throw new ImportException("The user mailbox already exists. Procedure !");
  142. }
  143. }
  144. }
  145. }
  146. } catch (BOSException e1) {
  147. e1.printStackTrace();
  148. } catch (SQLException e1) {
  149. e1.printStackTrace();
  150. }
  151. super.verifyModel(request, response, model);
  152. }
  153. /**
  154. * 获取预入职单的信息
  155. * @param request
  156. * @param response
  157. * @param modelMap
  158. * @throws SHRWebException
  159. */
  160. public void getEmpPreEntryDataAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException{
  161. Map<String, Object> map = new HashMap<String, Object>();
  162. String preEntryId = request.getParameter("billId");
  163. String sql = " select b.fid as personTypeId , b.fname_l1 as personTypeName, " +
  164. " c.fid as wcategoryId , c.fname_l1 as wcategoryName, " +
  165. " d.fid as ftorptId , d.fname_l1 as ftorptName, " +
  166. " e.fid as lmanagerId , e.fname_l1 as lmanagerName, " +
  167. " f.fid as rmethodId , f.fname_l1 as rmethodName, " +
  168. " g.fid as jobsId , g.fname_l1 as jobsName, " +
  169. " h.fid as academictitleId , h.fname_l1 as academictitleName, " +
  170. " j.fname_l1 jobName, k.fname_l1 credentTypeName, l.fname_l1 countryName, " +
  171. " j.fid jobId, k.fid credentTypeId, l.fid countryId " +
  172. " from t_hr_preentry a " +
  173. " left join T_HR_EmployeeClassify b on a.CFPersontypeID = b.fid " +
  174. " left join CT_MP_WorkerCategory c on a.CFWcategoryID = c.fid " +
  175. " left join CT_MP_Fullorpart d on a.CFFtorptID = d.fid " +
  176. " left join t_bd_person e on a.CFLmanagerID = e.fid " +
  177. " left join CT_MP_Ratepayingmethod f on a.CFRmethodId = f.fid " +
  178. " left join CT_HR_Job2 g on a.cfjobsId = g.fid " +
  179. " left join CT_MP_AcademicTitle h on a.cfacademictitleId = h.fid " +
  180. " left join T_HR_JobGrade j on a.CFJOBGRADEID = j.fid " +
  181. " left join T_HR_CredentialsType k on a.CFDOCUMENTTYPEID = k.fid " +
  182. " left join T_HR_CountryRegion l on a.cfcountryregionid = l.fid " +
  183. " where a.fid = '" + preEntryId + "'";
  184. Context ctx = SHRContext.getInstance().getContext();
  185. try {
  186. IRowSet rs = DbUtil.executeQuery(ctx, sql);
  187. while (rs.next()) {
  188. map.put("personTypeId",rs.getString("personTypeId"));
  189. map.put("personTypeName",rs.getString("personTypeName"));
  190. map.put("wcategoryId",rs.getString("wcategoryId"));
  191. map.put("wcategoryName",rs.getString("wcategoryName"));
  192. map.put("ftorptId",rs.getString("ftorptId"));
  193. map.put("ftorptName",rs.getString("ftorptName"));
  194. map.put("lmanagerId",rs.getString("lmanagerId"));
  195. map.put("lmanagerName",rs.getString("lmanagerName"));
  196. map.put("rmethodId",rs.getString("rmethodId"));
  197. map.put("rmethodName",rs.getString("rmethodName"));
  198. map.put("jobsId",rs.getString("jobsId"));
  199. map.put("jobsName",rs.getString("jobsName"));
  200. map.put("academictitleId",rs.getString("academictitleId"));
  201. map.put("academictitleName",rs.getString("academictitleName"));
  202. map.put("jobName",rs.getString("jobName"));
  203. map.put("credentTypeName",rs.getString("credentTypeName"));
  204. map.put("countryName",rs.getString("countryName"));
  205. map.put("jobId",rs.getString("jobId"));
  206. map.put("credentTypeId",rs.getString("credentTypeId"));
  207. map.put("countryId",rs.getString("countryId"));
  208. }
  209. } catch (SQLException e) {
  210. e.printStackTrace();
  211. } catch (BOSException e) {
  212. e.printStackTrace();
  213. }
  214. JSONUtils.writeJson(response, map);
  215. }
  216. /**
  217. * 新增单据获取编码
  218. * @param request
  219. * @param response
  220. * @param modelMap
  221. * @throws SHRWebException
  222. * @throws SQLException
  223. * @throws BOSException
  224. */
  225. public void getEmpNumberAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException, BOSException, SQLException{
  226. Map<String, Object> map = new HashMap<String, Object>();
  227. EmployeeUtil employeeUtil = new EmployeeUtil();
  228. int fnumber = employeeUtil.getFnumber();
  229. map.put("empNumber", fnumber);
  230. JSONUtils.writeJson(response, map);
  231. }
  232. /**
  233. * 根据身份证号获取人员名称相关信息
  234. * @param request
  235. * @param response
  236. * @param modelMap
  237. * @return
  238. * @throws SHRWebException
  239. */
  240. public String getPersonNameAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException{
  241. Context ctx = SHRContext.getInstance().getContext();
  242. String idEnitiy = request.getParameter("idEntity");
  243. String sql = "select cfsurname,cfmiddlenames,cfgivenname,cflocalname,cfusername from T_BD_Person where fpassportno = '"+idEnitiy+"' or fidcardno = '"+idEnitiy+"' order by flastupdatetime desc";
  244. try {
  245. IRowSet rs = DbUtil.executeQuery(ctx, sql);
  246. while (rs.next()) {
  247. //姓
  248. modelMap.put("surName", rs.getString("cfsurname"));
  249. //中间名
  250. modelMap.put("middleName", rs.getString("cfmiddlenames"));
  251. //名
  252. modelMap.put("givenName", rs.getString("cfgivenname"));
  253. //本地名称
  254. modelMap.put("localName", rs.getString("cflocalname"));
  255. //用户名
  256. modelMap.put("userName", rs.getString("cfusername"));
  257. JSONUtils.writeJson(response, modelMap);
  258. return null;
  259. }
  260. } catch (BOSException e) {
  261. e.printStackTrace();
  262. } catch (SQLException e) {
  263. e.printStackTrace();
  264. }
  265. modelMap.put("surName", "");
  266. modelMap.put("middleName", "");
  267. modelMap.put("givenName", "");
  268. modelMap.put("localName", "");
  269. modelMap.put("userName", "");
  270. return null;
  271. }
  272. }