PerfEvaluObjectService.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. package com.kingdee.eas.hr.perf.service;
  2. import com.kingdee.bos.BOSException;
  3. import com.kingdee.bos.Context;
  4. import com.kingdee.bos.bsf.service.app.IHRMsfService;
  5. import com.kingdee.bos.metadata.MetaDataLoaderFactory;
  6. import com.kingdee.bos.metadata.entity.*;
  7. import com.kingdee.bos.metadata.management.LanguageCollection;
  8. import com.kingdee.bos.metadata.management.SolutionInfo;
  9. import com.kingdee.bos.metadata.query.util.CompareType;
  10. import com.kingdee.bos.service.message.agent.MessageFactory;
  11. import com.kingdee.bos.service.message.agent.SenderAgent;
  12. import com.kingdee.bos.service.message.Message;
  13. import com.kingdee.eas.base.message.MsgBizType;
  14. import com.kingdee.eas.base.message.MsgPriority;
  15. import com.kingdee.eas.base.message.MsgSourceStatus;
  16. import com.kingdee.eas.base.message.MsgType;
  17. import com.kingdee.eas.base.permission.UserInfo;
  18. import com.kingdee.eas.common.EASBizException;
  19. import com.kingdee.eas.csinterface.biz.util.DBUtils;
  20. import com.kingdee.eas.util.app.ContextUtil;
  21. import com.kingdee.jdbc.rowset.IRowSet;
  22. import com.kingdee.shr.perfweb.app.base.evalplan.*;
  23. import com.kingdee.util.StringUtils;
  24. import org.apache.log4j.Logger;
  25. import java.sql.SQLException;
  26. import java.util.*;
  27. /**
  28. * @author qingwu
  29. * @date 2024/12/18
  30. * @apiNote
  31. */
  32. public class PerfEvaluObjectService implements IHRMsfService {
  33. private static Logger logger =
  34. Logger.getLogger(PerfEvaluObjectService.class);
  35. @Override
  36. public Object process(Context ctx, Map<String, Object> map) throws EASBizException, BOSException {
  37. //考核等級
  38. Set levelSet = new HashSet();
  39. levelSet.add("C");
  40. levelSet.add("D");
  41. Map evaResultSummaryMap = null;
  42. try {
  43. //考核结果
  44. IEvaResultSummary iEvaResultSummary = EvaResultSummaryFactory.getLocalInstance(ctx);
  45. //面谈
  46. IInterview iInterview = InterviewFactory.getLocalInstance(ctx);
  47. Map interviewMap = new HashMap();
  48. InterviewCollection interviewCollection = iInterview.getInterviewCollection();
  49. for (int i = 0; i < interviewCollection.size(); i++) {
  50. InterviewInfo interviewInfo = interviewCollection.get(i);
  51. String evaResultSummaryId = interviewInfo.getEvaResultSummary().getId().toString();
  52. interviewMap.put(evaResultSummaryId, interviewInfo);
  53. }
  54. //获取所有人的直接上级
  55. Map personOfParentMap = getPersonOfParentAll(ctx);
  56. //获取绩效考核等级为C/D的数据
  57. SelectorItemCollection sic = getSelectorItemCollection();
  58. FilterInfo filterInfo = new FilterInfo();
  59. FilterItemCollection filterItems = filterInfo.getFilterItems();
  60. filterItems.add(new FilterItemInfo("gradeLevel", levelSet, CompareType.INCLUDE));
  61. EntityViewInfo entityViewInfo = EntityViewInfo.getInstance(filterInfo, sic, null);
  62. EvaResultSummaryCollection evaResultSummaryCollection = iEvaResultSummary.getEvaResultSummaryCollection(entityViewInfo);
  63. //
  64. StringBuilder body = new StringBuilder();
  65. evaResultSummaryMap = new HashMap();
  66. for (int i = 0; i < evaResultSummaryCollection.size(); i++) {
  67. EvaResultSummaryInfo evaResultSummaryInfo = evaResultSummaryCollection.get(i);
  68. String id = evaResultSummaryInfo.getId().toString();
  69. String number = evaResultSummaryInfo.getNumber();
  70. String personId = evaResultSummaryInfo.getPerson().getId().toString();
  71. String personName = evaResultSummaryInfo.getPerson().getName();
  72. String gradeLevel = evaResultSummaryInfo.getGradeLevel().toString();
  73. if (!interviewMap.containsKey(id)) {
  74. evaResultSummaryMap.put(number, evaResultSummaryInfo);
  75. evaResultSummaryMap.put(personId, personOfParentMap.get(personId));
  76. body.append("员工:[").append(personName).append("]绩效为").append(gradeLevel).append(",您还未进行绩效面谈,请及时处理。").append("\n");
  77. }
  78. }
  79. sendMessage(ctx, body.toString());
  80. } catch (SQLException e) {
  81. e.printStackTrace();
  82. throw new RuntimeException(e);
  83. }
  84. return evaResultSummaryMap;
  85. }
  86. public void sendMessage(Context ctx, String body) {
  87. logger.error("start-----");
  88. UserInfo currentUserInfo = ContextUtil.getCurrentUserInfo(ctx);
  89. //以下是发送一个消息的核心片断,如果针对的是某组织批量发送,自己的需要取得组织的用户ID集合,然后构造receiver
  90. SenderAgent senderAgent = SenderAgent.getSenderAgent();
  91. Message message;
  92. Locale[] lcla = getContextLocales(ctx);//获取ctx的语言信息列表
  93. logger.error("lcla---" + lcla);
  94. Locale locale = null;
  95. message = MessageFactory.newMessage("kingdee.workflow");//生成一个消息对象
  96. for (int j = 0, m = lcla.length; j < m; j++) {
  97. //此处循环进行多语言消息的设置
  98. locale = lcla[j];
  99. message.setLocaleStringHeader("title", "绩效考核预警", locale);//设置消息标题
  100. message.setLocaleStringHeader("sender", "专员", locale);//设置发送人,属于文本,不是ID
  101. message.setLocaleStringHeader("body", body, locale);//设置消息体内容,根据具体业务自己设定
  102. message.setLocaleStringHeader("initiatorName", "专员", locale);
  103. }
  104. message.setIntHeader("type", MsgType.NOTICE_VALUE);//设置消息类型为通知
  105. message.setIntHeader("bizType", MsgBizType.FORWARN_VALUE);//业务类型设置为工作流
  106. message.setIntHeader("sourceStatus", MsgSourceStatus.EMPTY_VALUE);//设置任务状态,此处是通知消息,所以设置空
  107. message.setIntHeader("priority", MsgPriority.MIDDLE_VALUE);//设置消息优先级,自己根据需要设定相应的级别
  108. message.setStringHeader("databaseCenter", ctx.getAIS());//得到数据中心
  109. message.setStringHeader("solution", ctx.getSolution());//设置解决方案
  110. //设置接收者,后面那参数是用户ID,多个ID可用分号";"分割
  111. message.setStringHeader("receiver", currentUserInfo.getId().toString());
  112. logger.error("senderAgent.getState() -----" + senderAgent.getState());
  113. if (senderAgent.getState() == 1) {
  114. senderAgent.start();
  115. }
  116. senderAgent.sendMessage(message); //发送消息
  117. logger.error("end-----");
  118. }
  119. /**
  120. * 获取ctx的语言信息列表
  121. *
  122. * @param ctx
  123. * @return
  124. */
  125. public static Locale[] getContextLocales(Context ctx) {
  126. Locale[] locales = null;
  127. SolutionInfo solu = MetaDataLoaderFactory.getLocalMetaDataLoader(ctx)
  128. .getSolution();
  129. if (solu != null) {
  130. LanguageCollection langs = solu.getLanguages();
  131. if (langs != null) {
  132. locales = new Locale[langs.size()];
  133. for (int i = 0; i < langs.size(); i++) {
  134. locales[i] = langs.get(i).getLocale();
  135. }
  136. }
  137. }
  138. return locales;
  139. }
  140. /**
  141. * 获取所有人员的直接上级
  142. *
  143. * @param ctx
  144. * @return
  145. * @throws BOSException
  146. * @throws SQLException
  147. */
  148. public Map getPersonOfParentAll(Context ctx) throws BOSException, SQLException {
  149. StringBuilder sb = new StringBuilder();
  150. Map map = new HashMap();
  151. sb.append("select ").append("\n");
  152. sb.append("personParent.fnumber as personParentNumber , ").append("\n");
  153. sb.append("personParent.fid as personParentId , ").append("\n");
  154. sb.append("personParent.fname_l2 as personParentName , ").append("\n");
  155. sb.append("person.fnumber as personNumber , ").append("\n");
  156. sb.append("person.fid as personId , ").append("\n");
  157. sb.append("person.fname_l2 as personName ").append("\n");
  158. sb.append("from T_ORG_PositionMember positioonMenber").append("\n");
  159. sb.append(" left join T_ORG_Position position on position.fid = positioonMenber.FPositionID").append("\n");
  160. sb.append(" left join T_ORG_Position positionParent on position.fid = positionParent.FPARENTID").append("\n");
  161. sb.append(" left join T_HR_EmpOrgRelation empOrgRelation on empOrgRelation.FPOSITIONID = positionParent.fid").append("\n");
  162. sb.append(" left join t_Bd_person person on person.fid = empOrgRelation.FPERSONID and empOrgRelation.FIsSystem='1'").append("\n");
  163. sb.append(" left join t_Bd_person personParent on personParent.fid = positioonMenber.FPERSONID").append("\n");
  164. IRowSet iRowSet = DBUtils.executeQuery(ctx, sb.toString());
  165. while (iRowSet.next()) {
  166. map.put(iRowSet.getString("personId"), iRowSet.getString("personParentId"));
  167. }
  168. return map;
  169. }
  170. /**
  171. * 查询字段
  172. *
  173. * @return
  174. */
  175. public SelectorItemCollection getSelectorItemCollection() {
  176. SelectorItemCollection sic = new SelectorItemCollection();
  177. sic.add("gradeLevel");//考核等級
  178. sic.add("id");//考核等級
  179. sic.add("name");//员工名称
  180. sic.add("number");//员工编码
  181. sic.add("evaObj.id");//评估对象
  182. sic.add("evaObj.name");
  183. sic.add("evaObj.number");
  184. sic.add("evaPlan.id");//考核计划
  185. sic.add("evaPlan.name");
  186. sic.add("evaPlan.number");
  187. sic.add("period.id");//考核周期
  188. sic.add("period.name");
  189. sic.add("period.number");
  190. sic.add("period.id");//考核周期
  191. sic.add("period.name");
  192. sic.add("period.number");
  193. sic.add("person.id");//人员
  194. sic.add("person.name");
  195. sic.add("person.number");
  196. return sic;
  197. }
  198. //@Override
  199. //public Object process(Context context, Map<String, Object> map) throws EASBizException, BOSException {
  200. // String billId = (String) map.get("billId");
  201. // String day = (String) map.get("day");
  202. // Map result = new HashMap();
  203. // try {
  204. // addPerfEvaObject(context, billId == null ? "" : billId, day == null ? 0 : Integer.parseInt(day));
  205. // } catch (SHRWebException e) {
  206. // e.printStackTrace();
  207. // throw new RuntimeException(e);
  208. // }
  209. // //result.put("map", map);
  210. // result.put("code", "200");
  211. // result.put("msg", "操作成功");
  212. // return result;
  213. //}
  214. //
  215. ///**
  216. // * @param ctx
  217. // * @param employeeNumbers 用工关系编码 多个用逗号隔开
  218. // * @param day
  219. // * @throws BOSException
  220. // * @throws SHRWebException
  221. // * @throws EASBizException
  222. // */
  223. //public void addPerfEvaObject(Context ctx, String employeeNumbers, int day) throws BOSException, SHRWebException {
  224. // //人员
  225. // IPerson iPerson = PersonFactory.getLocalInstance(ctx);
  226. // //考核周期
  227. // IPerfPeriod iPerfPeriod = PerfPeriodFactory.getLocalInstance(ctx);
  228. // if (StringUtils.isEmpty(employeeNumbers)) {
  229. // employeeNumbers = "SY01,QY02,QY03,WB03,PQ03,LS01,SX01,FP01,WB01,QY01";
  230. // }
  231. // Set<String> employeeNumberset = AtsUtil.toSet(employeeNumbers);
  232. // //查询在职的所有人员
  233. // SelectorItemCollection sic = new SelectorItemCollection();
  234. // sic.add("id");
  235. // sic.add("name");
  236. // sic.add("number");
  237. // sic.add("employeeType.id");
  238. // sic.add("employeeType.name");
  239. // sic.add("employeeType.number");
  240. // FilterInfo filterInfo = new FilterInfo();
  241. // FilterItemCollection filterItems = filterInfo.getFilterItems();
  242. // filterItems.add(new FilterItemInfo("employeeType.number", employeeNumberset, CompareType.INCLUDE));
  243. // EntityViewInfo entityViewInfo = EntityViewInfo.getInstance(filterInfo, sic, null);
  244. // PersonCollection personCollection = iPerson.getPersonCollection(entityViewInfo);
  245. // logger.error("personCollection.size--" + personCollection.size());
  246. // Set personSet = new HashSet();
  247. // StringBuilder sb = new StringBuilder();
  248. // for (int i = 0; i < personCollection.size(); i++) {
  249. // PersonInfo personInfo = personCollection.get(i);
  250. // String personId = personInfo.getId().toString();
  251. // String personName = personInfo.getName();
  252. // personSet.add(personId);
  253. // sb.append(personName).append(",");
  254. // }
  255. // sb = deleteCharAt(sb);
  256. //
  257. // //绩效考核档案 获取绩效档案id建立员工考核计划
  258. // IPerfFile iPerfFile = PerfFileFactory.getLocalInstance(ctx);
  259. // FilterInfo perfFileFilterInfo = new FilterInfo();
  260. // perfFileFilterInfo.getFilterItems().add(new FilterItemInfo("person", personSet, CompareType.INCLUDE));
  261. // EntityViewInfo perfFileEntityViewInfo = EntityViewInfo.getInstance(perfFileFilterInfo, null, null);
  262. // PerfFileCollection perfFileCollection = iPerfFile.getPerfFileCollection(perfFileEntityViewInfo);
  263. // logger.error("perfFileCollection.size--" + perfFileCollection.size());
  264. // if (perfFileCollection.size() <= 0) {
  265. // throw new ShrWebBizException("[" + sb.toString() + "]这些人员还未生成员工绩效档案,请维护!");
  266. // }
  267. // //员工档案人员
  268. // Set perfFileSet = new HashSet();
  269. // for (int i = 0; i < perfFileCollection.size(); i++) {
  270. // PerfFileInfo perfFileInfo = perfFileCollection.get(i);
  271. // String perfFileId = perfFileInfo.getId().toString();
  272. // perfFileSet.add(perfFileId);
  273. // }
  274. // //获取当前年的考核周期
  275. // int year = Year.now().getValue();
  276. // PerfPeriodInfo perfPeriodInfo = null;
  277. // try {
  278. // perfPeriodInfo = iPerfPeriod.getPerfPeriodInfo("where timePeriod = '" + year + "' and name = '公司年度绩效目标_周期" + year + "年'");
  279. // } catch (EASBizException e) {
  280. // throw new RuntimeException("未查询到公司年度绩效目标_周期" + year + "年考核计划");
  281. // }
  282. // PerfPlanInfo perfPlan = perfPeriodInfo.getPerfPlan();
  283. // String planId = perfPlan.getId().toString();
  284. // String periodId = perfPeriodInfo.getId().toString();
  285. // checkPeriod(periodId);
  286. // String hrOrgUnit = "00000000-0000-0000-0000-000000000000CCE7AED4";
  287. // PerfPlanInfo info = null;
  288. // try {
  289. // info = PerfPlanFactory.getRemoteInstance().getPerfPlanInfo("where id = '" + planId + "'");
  290. // } catch (Exception var10) {
  291. // var10.printStackTrace();
  292. // throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.GETPERFPLANERR)).getMessage());
  293. // }
  294. // //通过考核周期获取评估对象
  295. // IPerfEvaObject iPerfEvaObject = PerfEvaObjectFactory.getLocalInstance(ctx);
  296. // PerfEvaObjectCollection perfEvaObjectCollection = iPerfEvaObject.getPerfEvaObjectCollection("where period = '" + planId + "'");
  297. // //评估对象里面的员工档案ID
  298. // Set perfEvaPerFileSet = new HashSet();
  299. // for (int i = 0; i < perfEvaObjectCollection.size(); i++) {
  300. // PerfEvaObjectInfo perfEvaObjectInfo = perfEvaObjectCollection.get(i);
  301. // PerfFileInfo perfFile = perfEvaObjectInfo.getPerfFile();
  302. // String perfFileId = perfFile.getId().toString();
  303. // perfEvaPerFileSet.add(perfFileId);
  304. // }
  305. // logger.error("perfFileSet--" + perfFileSet);
  306. // logger.error("perfEvaPerFileSet--" + perfEvaPerFileSet);
  307. // //对比去除考核计划已经存在的人员
  308. // perfFileSet.removeAll(perfEvaPerFileSet);
  309. // logger.error("perfFileSet--removeAll--" + perfFileSet);
  310. // //最后需要保存的员工绩效档案ID
  311. // StringJoiner jperfFileJiner = new StringJoiner(",");
  312. // for (Object perfFileId : perfFileSet) {
  313. // jperfFileJiner.add(perfFileId.toString());
  314. // }
  315. // PerfEvaObjectUtils perfEvaObjectUtils = new PerfEvaObjectUtils();
  316. // perfEvaObjectUtils.addFromPerfFile(ctx, jperfFileJiner.toString(), periodId, hrOrgUnit, info);
  317. //}
  318. //
  319. //public static void checkPeriod(String period) throws SHRWebException {
  320. // if (org.apache.commons.lang.StringUtils.isEmpty(period)) {
  321. // throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.PERFPERIODNOTEXIST)).getMessage());
  322. // } else {
  323. // PerfPeriodInfo info = null;
  324. //
  325. // try {
  326. // info = PerfPeriodFactory.getRemoteInstance().getPerfPeriodInfo("where id = '" + period + "'");
  327. // } catch (Exception var3) {
  328. // logger.error(var3.toString());
  329. // throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.GETPERIODDATAERR)).getMessage());
  330. // }
  331. //
  332. // if (info.getEvaPeriodStatus().getValue() == 100) {
  333. // throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.OPERATENOTALLOWEDASPERIODISEND)).getMessage());
  334. // }
  335. // }
  336. //}
  337. //
  338. //public void addPerfEvaObject(Context ctx, String billid, int day) throws BOSException, SHRWebException, EASBizException {
  339. // logger.error("addPerfEvaObject----");
  340. // StringBuilder perfFiles = new StringBuilder();//考勤档案id
  341. //
  342. // // 获取当前日期
  343. // LocalDate currentDate = LocalDate.now();
  344. // LocalDate threeDaysBefore = null;
  345. // if (day != 0) {
  346. // // 获取当前日期前三天的日期
  347. // threeDaysBefore = currentDate.minusDays(day);
  348. // } else {
  349. // threeDaysBefore = currentDate.minusDays(3);
  350. // }
  351. // logger.error("addPerfEvaObject----1");
  352. //
  353. // //入职单 获取最近入职人员 通过人员id去查询绩效档案id
  354. // IEmpEnrollBizBillEntry iEmpEnrollBizBillEntry = EmpEnrollBizBillEntryFactory.getLocalInstance(ctx);
  355. // SelectorItemCollection sic = new SelectorItemCollection();
  356. // sic.add("bizDate");
  357. // sic.add("empname");
  358. // sic.add("person.id");
  359. // sic.add("person.number");
  360. // sic.add("person.name");
  361. // FilterInfo empEnrollFilterInfo = new FilterInfo();
  362. // empEnrollFilterInfo.getFilterItems().add(new FilterItemInfo("bizDate", threeDaysBefore.toString(), CompareType.GREATER_EQUALS));
  363. // EntityViewInfo empEnrollEntityViewInfo = EntityViewInfo.getInstance(empEnrollFilterInfo, null, null);
  364. // EmpEnrollBizBillEntryCollection empEnrollBizBillEntryCollection = iEmpEnrollBizBillEntry.getEmpEnrollBizBillEntryCollection(empEnrollEntityViewInfo);
  365. // logger.error("addPerfEvaObject----2");
  366. // Set set = new HashSet();
  367. // StringBuilder sb = new StringBuilder();
  368. // for (int i = 0; i < empEnrollBizBillEntryCollection.size(); i++) {
  369. // EmpEnrollBizBillEntryInfo empEnrollBizBillEntryInfo = empEnrollBizBillEntryCollection.get(i);
  370. // String empName = empEnrollBizBillEntryInfo.getEmpName();
  371. // PersonInfo person = empEnrollBizBillEntryInfo.getPerson();
  372. // set.add(person.getId());
  373. // sb.append(empName).append(",");
  374. // }
  375. // logger.error("addPerfEvaObject----3");
  376. // sb = deleteCharAt(sb);
  377. // //绩效考核档案 获取绩效档案id建立员工考核计划
  378. // IPerfFile iPerfFile = PerfFileFactory.getLocalInstance(ctx);
  379. // FilterInfo perfFileFilterInfo = new FilterInfo();
  380. // perfFileFilterInfo.getFilterItems().add(new FilterItemInfo("person", set, CompareType.INCLUDE));
  381. // EntityViewInfo perfFileEntityViewInfo = EntityViewInfo.getInstance(perfFileFilterInfo, null, null);
  382. // PerfFileCollection perfFileCollection = iPerfFile.getPerfFileCollection(perfFileEntityViewInfo);
  383. // if (perfFileCollection.size() <= 0) {
  384. // throw new ShrWebBizException("[" + sb.toString() + "]这些人员还未生成员工绩效档案,请维护!");
  385. // }
  386. // if (!StringUtils.isEmpty(billid)) {
  387. // perfFiles.append(billid);
  388. // } else {
  389. // for (int i = 0; i < perfFileCollection.size(); i++) {
  390. // PerfFileInfo perfFileInfo = perfFileCollection.get(i);
  391. // perfFiles.append(perfFileInfo.getId().toString()).append(",");
  392. // }
  393. // perfFiles = deleteCharAt(perfFiles);
  394. // }
  395. // //考核周期 下面是执行添加操作
  396. // IPerfPeriod iPerfPeriod = PerfPeriodFactory.getLocalInstance(ctx);
  397. // //获取当前年
  398. // int year = Year.now().getValue();
  399. // PerfPeriodInfo perfPeriodInfo = iPerfPeriod.getPerfPeriodInfo("where timePeriod = '" + year + "' and name = '公司年度绩效目标_周期" + year + "年'");
  400. // PerfPlanInfo perfPlan = perfPeriodInfo.getPerfPlan();
  401. // String planId = perfPlan.getId().toString();
  402. // String periodId = perfPeriodInfo.getId().toString();
  403. // String addModel = "0";
  404. // String hrOrgUnit = "00000000-0000-0000-0000-000000000000CCE7AED4";
  405. // checkPeriod(periodId);
  406. // PerfPlanInfo info = null;
  407. // logger.error("addPerfEvaObject----4");
  408. // try {
  409. // info = PerfPlanFactory.getRemoteInstance().getPerfPlanInfo("where id = '" + planId + "'");
  410. // } catch (Exception var10) {
  411. // var10.printStackTrace();
  412. // logger.error(var10.toString());
  413. // throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.GETPERFPLANERR)).getMessage());
  414. // }
  415. // logger.error("addPerfEvaObject----5" + addModel);
  416. // if ("0".equals(addModel)) {
  417. // logger.error("addFromPerfFile----" + info.getId());
  418. // this.addFromPerfFile(ctx, perfFiles.toString(), periodId, hrOrgUnit, info);
  419. // }
  420. //}
  421. //
  422. public StringBuilder deleteCharAt(StringBuilder sb) {
  423. if (sb.length() > 0) {
  424. sb.deleteCharAt(sb.lastIndexOf(","));
  425. }
  426. return sb;
  427. }
  428. }