5b29671f475caa31ffa0d076492e14ed6f1e3537.svn-base 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. package com.kingdee.shr.compensation.web.handler;
  2. import java.sql.SQLException;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.HashSet;
  6. import java.util.List;
  7. import java.util.Map;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. import org.apache.log4j.Logger;
  11. import org.springframework.ui.ModelMap;
  12. import com.kingdee.bos.BOSException;
  13. import com.kingdee.bos.Context;
  14. import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
  15. import com.kingdee.eas.base.permission.UserInfo;
  16. import com.kingdee.eas.common.EASBizException;
  17. import com.kingdee.eas.util.app.ContextUtil;
  18. import com.kingdee.eas.util.app.DbUtil;
  19. import com.kingdee.jdbc.rowset.IRowSet;
  20. import com.kingdee.shr.base.syssetting.context.SHRContext;
  21. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  22. import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
  23. import com.kingdee.shr.compensation.CalSchemeFactory;
  24. import com.kingdee.shr.compensation.CalSchemeInfo;
  25. import com.kingdee.shr.compensation.CmpSchemePersonFacadeFactory;
  26. import com.kingdee.shr.compensation.CmpSchemePersonHasFacadeFactory;
  27. import com.kingdee.shr.compensation.app.taxCal.TaxCalInitFacadeFactory;
  28. import com.kingdee.shr.compensation.request.ParseRequestHelper;
  29. import com.kingdee.shr.compensation.util.CmpStrUtil;
  30. import com.kingdee.util.StringUtils;
  31. /**
  32. * 核算向导--核算员工拓展
  33. * @author dengzhouhong
  34. * 202403
  35. */
  36. public class CmpPersonHasDynamicListHandlerExt extends CmpPersonHasDynamicListHandler{
  37. private Logger logger = Logger.getLogger(CmpPersonHasDynamicListHandlerExt.class);
  38. /**
  39. * 批量添加员工
  40. * @param request
  41. * @param response
  42. * @param modelMap
  43. * @return
  44. * @throws SHRWebException
  45. */
  46. public String immediateAddPersonAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException, BOSException, EASBizException {
  47. logger.error("into immediateAddPersonAction...");
  48. Map<String, Object> res = new HashMap();
  49. Context ctx = SHRContext.getInstance().getContext();
  50. String permItemId = ParseRequestHelper.getRequestPermItemId(request);
  51. String scalid = ParseRequestHelper.getParameterByRequest(request, "cmpschemeid").toString();
  52. logger.error("into immediateAddPersonAction...permItemId:"+permItemId+";scalid="+scalid);
  53. CalSchemeInfo calScheme = CalSchemeFactory.getRemoteInstance().getCalSchemeInfo(new ObjectUuidPK(scalid));
  54. int calschemeYear = calScheme.getPeriodYear();
  55. int calschemeMonth = calScheme.getPeriodMonth(); //核算月份
  56. String year = calschemeYear+"";
  57. String mouth = "";
  58. if(calschemeMonth < 10){
  59. mouth = "0"+calschemeMonth;
  60. }else {
  61. mouth = calschemeMonth+"";
  62. }
  63. int time = 2;
  64. time = calScheme.getCalTime();
  65. String isDel = (String)ParseRequestHelper.getParameterByRequest(request,"isDel");
  66. //将已有核算员工清空
  67. if(StringUtils.equals("1",isDel)){
  68. String hasCmpSql = "select fid from T_HR_SCmpCalTable where FCALSCHEMEID ='$1' and FPERIODYEAR = $2 and FPERIODMONTH = $3 ";
  69. hasCmpSql = hasCmpSql.replace("$1",scalid);
  70. hasCmpSql = hasCmpSql.replace("$2",year);
  71. hasCmpSql = hasCmpSql.replace("$3",calschemeMonth+"");
  72. IRowSet hasPersonData = DbUtil.executeQuery(ctx,hasCmpSql);
  73. if(hasPersonData!=null && hasPersonData.size() > 0){
  74. try {
  75. StringBuffer ids = new StringBuffer("");
  76. while(hasPersonData.next()) {
  77. String hasPersonId = hasPersonData.getObject("fid").toString();
  78. ids.append("'"+hasPersonId+"',");
  79. }
  80. String idStr =ids.substring(0,ids.length()-1);
  81. Map<String, Object> delTaxCalMap = (Map) TaxCalInitFacadeFactory.getLocalInstance(ctx).deleteTaxCalPerson(idStr);
  82. HashSet<String> succListSet = (HashSet<String>)delTaxCalMap.get("succList");
  83. List<String> succList = new ArrayList<String>(succListSet);
  84. //List<String> succList = (List)delTaxCalMap.get("succList");
  85. // 获取当前的用户
  86. UserInfo currentUserInfo = ContextUtil.getCurrentUserInfo(ctx);
  87. // 获取当前登录的人员ID
  88. String personId = "";
  89. if (currentUserInfo.getPerson() != null) {
  90. personId = currentUserInfo.getPerson().getId().toString();
  91. }
  92. if (succList.size() > 0) {
  93. CmpSchemePersonHasFacadeFactory.getLocalInstance(ctx).delete(permItemId, CmpStrUtil.convertListToString(succList), scalid,false,ctx.getCaller().toString());
  94. }
  95. } catch (SQLException e) {
  96. throw new BOSException(e.getMessage());
  97. }
  98. }
  99. /*if(hasPersonData!=null){
  100. try {
  101. while(hasPersonData.next()) {
  102. String hasPersonId = hasPersonData.getObject("fid").toString();
  103. Map<String, Object> delTaxCalMap = (Map) TaxCalInitFacadeFactory.getLocalInstance(ctx).deleteTaxCalPerson("'"+hasPersonId+"'");
  104. List<String> succList = (List)delTaxCalMap.get("succList");
  105. if (succList.size() > 0) {
  106. CmpSchemePersonHasFacadeFactory.getLocalInstance(ctx).delete(permItemId, CmpStrUtil.convertListToString(succList), scalid);
  107. }
  108. }
  109. } catch (SQLException e) {
  110. throw new BOSException(e.getMessage());
  111. }
  112. }*/
  113. }
  114. //执行存储过程,整理需要添加的员工数据
  115. //oracle 写法
  116. //String proSql = "/*dialect*/begin pp_jl_getsalarylist ('$1','$2',$3,'$4'); end ;";
  117. String proSql = "/*dialect*/call pp_jl_getsalarylist ('$1','$2',$3,'$4');";
  118. //sqlserver 写法
  119. // String proSql = "exec pp_jl_getsalarylist '$1','$2',$3,'$4'";
  120. proSql = proSql.replace("$1",year);
  121. proSql = proSql.replace("$2",mouth);
  122. proSql = proSql.replace("$3",time+"");
  123. proSql = proSql.replace("$4",scalid);
  124. logger.error("into immediateAddPersonAction...proSql:"+proSql);
  125. DbUtil.execute(ctx,proSql);
  126. logger.error("into immediateAddPersonAction,after ...proSql:"+proSql);
  127. //将整理的数据,插入核算员工列表
  128. IRowSet personData = getPersonData(ctx,year,mouth,time,scalid);
  129. List<Map> dataList = new ArrayList();
  130. if(personData!=null){
  131. try {
  132. while(personData.next()) {
  133. Map<String,Object> personMap = new HashMap();
  134. personMap.put("person.id", personData.getObject("fpersonid"));
  135. personMap.put("person.number", personData.getObject("fempnumber"));
  136. personMap.put("person.name", personData.getObject("fempname"));
  137. personMap.put("emptype.id", personData.getObject("empType"));
  138. personMap.put("job.id", null);
  139. personMap.put("position.id", personData.getObject("fpositionid"));
  140. personMap.put("emporgrelation.id", personData.getObject("emporgrelation"));
  141. personMap.put("adminorgunit.id", personData.getObject("fadminorgid"));
  142. personMap.put("adminorgunit.longnumber", personData.getObject("adminNumber"));
  143. personMap.put("cmpemporelation.id", personData.getObject("cmpemporelation"));
  144. personMap.put("cmpemporelation.leffectdate", personData.getObject("cmpemporeleffedt"));
  145. personMap.put("cmpemporelation.usedefault", 1);
  146. dataList.add(personMap);
  147. }
  148. } catch (SQLException e) {
  149. throw new BOSException(e.getMessage());
  150. }
  151. }
  152. CmpSchemePersonFacadeFactory.getLocalInstance(ctx)
  153. .addPerson(permItemId, scalid, dataList);
  154. res.put("message", "执行成功");
  155. JSONUtils.SUCCESS(res);
  156. return null;
  157. }
  158. protected IRowSet getPersonData(Context ctx, String year, String month, int time, String scalid) throws BOSException{
  159. String sql = "select \n" +
  160. "empType,\n" +
  161. "emporgrelation,\n" +
  162. "adminNumber,\n" +
  163. "cmpemporelation,\n" +
  164. "cmpemporeleffedt,\n" +
  165. "fpersonid,\n" +
  166. "fempnumber,\n" +
  167. "fempname,\n" +
  168. "fadminorgid,\n" +
  169. "fpositionid,\n" +
  170. "fpositionname,\n" +
  171. "adminorgname,\n" +
  172. "displayname\n" +
  173. "from JL_gzmd_temp where pyear='$1' and pmonth='$2' and scalid='$3'";
  174. sql = sql.replace("$1",year);
  175. sql = sql.replace("$2",month);
  176. sql = sql.replace("$3",scalid);
  177. IRowSet result = null ;
  178. try {
  179. System.out.println("-------------------------需要核算的人sql-------------------");
  180. System.out.println(sql);
  181. result = DbUtil.executeQuery(ctx, sql);
  182. } catch (BOSException e) {
  183. throw new BOSException(e.getMessage());
  184. }
  185. return result;
  186. }
  187. }