FlucInBizBillHrManEditExtendHandler.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. package com.kingdee.eas.custom.wamke.web;
  2. import java.sql.SQLException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  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.log4j.Logger;
  10. import org.apache.log4j.Priority;
  11. import org.springframework.ui.ModelMap;
  12. import com.kingdee.bos.BOSException;
  13. import com.kingdee.bos.Context;
  14. import com.kingdee.eas.custom.wamke.syncdata.dto.MobileAttachDto;
  15. import com.kingdee.eas.custom.wamke.syncdata.web.MobileEntryBillExtendEditHandler;
  16. import com.kingdee.eas.framework.CoreBaseInfo;
  17. import com.kingdee.eas.hr.affair.FlucInBizBillInfo;
  18. import com.kingdee.eas.util.app.DbUtil;
  19. import com.kingdee.jdbc.rowset.IRowSet;
  20. import com.kingdee.shr.affair.web.handler.hrman.FlucInBizBillHrManEditHandler;
  21. import com.kingdee.shr.base.syssetting.context.SHRContext;
  22. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  23. public class FlucInBizBillHrManEditExtendHandler extends
  24. FlucInBizBillHrManEditHandler {
  25. /**
  26. * 跨公司调入单提交生效
  27. */
  28. @Override
  29. public void submitEffectAction(HttpServletRequest request,
  30. HttpServletResponse response, ModelMap modelMap)
  31. throws SHRWebException {
  32. super.submitEffectAction(request, response, modelMap);
  33. CoreBaseInfo model = (CoreBaseInfo) request.getAttribute("dynamic_model");
  34. //提交之后,判断是否为万净公司下的组织,再根据岗位更新工种
  35. FlucInBizBillInfo billInfo = (FlucInBizBillInfo) model;
  36. try{
  37. adjustWorkType(billInfo.getId().toString());
  38. }
  39. catch(Exception e){
  40. logInfo("执行更新工种时发生了异常");
  41. e.printStackTrace();
  42. }
  43. }
  44. // @Override
  45. // protected void afterSubmit(HttpServletRequest request,
  46. // HttpServletResponse response, CoreBaseInfo model)
  47. // throws SHRWebException {
  48. //
  49. // super.afterSubmit(request, response, model);
  50. //
  51. // //提交之后,判断是否为万净公司下的组织,再根据岗位更新工种
  52. // FlucInBizBillInfo billInfo = (FlucInBizBillInfo) model;
  53. // adjustWorkType(billInfo.getId().toString());
  54. // }
  55. /**
  56. * 根据跨公司调动单ID进行员工新工种信息
  57. * @param id
  58. */
  59. private void adjustWorkType(String id){
  60. Map<String,String> info = isWjCompany(id,true);
  61. if(info.get("pass").equals("true")){
  62. String posId = info.get("posId");
  63. String personId = info.get("personId");
  64. String workId = getWorkCategoryIdByPosId(posId);
  65. if(null==workId){
  66. return;
  67. }
  68. updatePersonWorkType(personId,workId);
  69. }
  70. }
  71. /**
  72. * 根据岗位ID获取对应匹配的工种ID
  73. * @param posId
  74. * @return
  75. */
  76. private String getWorkCategoryIdByPosId(String posId){
  77. try{
  78. String sql = " SELECT work_category_id fROM T_ORG_Position a "
  79. + " INNER JOIN CT_WK_work_category_setting b ON(a.FName_l2 COLLATE Chinese_PRC_CI_AS = b.position_name) "
  80. + " WHERE a.FID= '"+posId+"' ";
  81. logInfo("根据岗位ID获取对应匹配的工种IDsql:"+sql);
  82. Context ctx = SHRContext.getInstance().getContext();
  83. IRowSet rowSet = DbUtil.executeQuery(ctx, sql);
  84. while(rowSet.next()){
  85. return rowSet.getString("work_category_id");
  86. }
  87. }
  88. catch(Exception e){
  89. logInfo("根据岗位ID获取对应匹配的工种ID时发生异常:"+e.getMessage());
  90. e.printStackTrace();
  91. return null;
  92. }
  93. return null;
  94. }
  95. /**
  96. * 根据岗位更新对应人员的工种
  97. * @param personId
  98. * @param personId
  99. * @param workId
  100. */
  101. private void updatePersonWorkType(String personId, String workId){
  102. try{
  103. Context ctx = SHRContext.getInstance().getContext();
  104. //更新人员表
  105. String sql = "UPDATE T_BD_Person SET CFWORKCATEGORYID = '"+workId+"' WHERE FID = '"+personId+"'";
  106. logInfo("根据岗位更新对应人员表的工种sql:"+sql);
  107. DbUtil.execute(ctx, sql);
  108. //更新人员历史表
  109. sql = "UPDATE T_BD_PersonHis SET CFWORKCATEGORYID = '"+workId+"' "
  110. +" WHERE FNumber = ( SELECT TOP 1 FNumber FROM T_BD_Person WHERE FID = '"+personId+"' ) AND FLEFFDT >='2199-12-31'";
  111. logInfo("根据岗位更新对应人员历史表的工种sql:"+sql);
  112. DbUtil.execute(ctx, sql);
  113. }
  114. catch(Exception e){
  115. logInfo("根据岗位更新对应人员表的工种字段发生异常:"+e.getMessage());
  116. e.printStackTrace();
  117. }
  118. }
  119. /**
  120. * 判断是否为万净公司下的人员
  121. * @param id
  122. * @param isSubmitEffect 是否提交生效
  123. * @return
  124. */
  125. private Map<String,String> isWjCompany(String id, boolean isSubmitEffect) {
  126. Map<String,String> result = new HashMap<String,String>();
  127. result.put("pass","false");
  128. try{
  129. String sql = "SELECT TOP 1 FADMINORGID, FPersonId, FPositionId, FBIZDATE FROM T_HR_FlucInBizBillEntry WHERE FBILLID = '"+id+"' ";
  130. logInfo("执行跨公司调入单据数据sql:"+sql);
  131. Context ctx = SHRContext.getInstance().getContext();
  132. IRowSet rowSet = DbUtil.executeQuery(ctx, sql);
  133. String adminId = null, posId = null, personId = null;
  134. Date bizDate = null;
  135. while (rowSet.next()) {
  136. adminId = rowSet.getString("FADMINORGID");
  137. posId = rowSet.getString("FPositionId");
  138. personId = rowSet.getString("FPersonId");
  139. bizDate = rowSet.getDate("FBIZDATE");
  140. result.put("adminId",adminId);
  141. result.put("posId",posId);
  142. result.put("personId",personId);
  143. break;
  144. }
  145. if(adminId==null || adminId == ""){
  146. result.put("pass","false");
  147. return result;
  148. }
  149. //如果为提交生效,则需要判断日期
  150. if(isSubmitEffect){
  151. //如果生效时间<=当前日期,则执行,否则直接返回(由定时器扫描再去变更)
  152. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  153. String bizDateStr = sdf.format(bizDate);
  154. String currentDate = sdf.format(new Date());
  155. if(bizDateStr.compareTo(currentDate)>0){
  156. result.put("pass","false");
  157. return result;
  158. }
  159. }
  160. sql = "SELECT TOP 1 FID FROM T_ORG_ADmin WHERE FId = '"+adminId+"' AND FLONGNUMBER LIKE '01!WKWY!50952375!%";
  161. logInfo("执行查询是否为万净公司sql:"+sql);
  162. IRowSet rowSetWj = DbUtil.executeQuery(ctx, sql);
  163. while(rowSetWj.next()){
  164. if(rowSetWj.getString("FID") != null && rowSetWj.getString("FID") != ""){
  165. result.put("pass","true");
  166. }
  167. else{
  168. result.put("pass","false");
  169. }
  170. break;
  171. }
  172. return result;
  173. }
  174. catch(Exception e ){
  175. logInfo("判 断是否为万净公司数据时发生了异常:"+e.getMessage());
  176. e.printStackTrace();
  177. return result;
  178. }
  179. }
  180. private static Logger logger = Logger.getLogger(FlucInBizBillHrManEditExtendHandler.class);
  181. private void logInfo(String msg) {
  182. System.out.println(msg);
  183. logger.log(Priority.INFO, msg);
  184. }
  185. }