TrainSubImportPlugin.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package nc.impl.hr.train;
  2. import java.util.ArrayList;
  3. import java.util.Date;
  4. import java.util.List;
  5. import java.util.Map;
  6. import org.apache.commons.lang3.StringUtils;
  7. import nc.bs.dao.BaseDAO;
  8. import nc.bs.pub.pa.PreAlertObject;
  9. import nc.bs.pub.pa.PreAlertReturnType;
  10. import nc.bs.pub.taskcenter.BgWorkingContext;
  11. import nc.bs.pub.taskcenter.IBackgroundWorkPlugin;
  12. import nc.bs.uap.lock.PKLock;
  13. import nc.jdbc.framework.processor.BeanListProcessor;
  14. import nc.jdbc.framework.processor.ColumnProcessor;
  15. import nc.vo.hi.psndoc.TrainVO;
  16. import nc.vo.pub.BusinessException;
  17. import nc.vo.pub.lang.UFBoolean;
  18. /**
  19. * 定时同步培训结果到人员培训信息子集中
  20. * @author chenzf
  21. * @date 2022-4-21 16:08:58
  22. */
  23. public class TrainSubImportPlugin implements IBackgroundWorkPlugin {
  24. @Override
  25. public PreAlertObject executeTask(BgWorkingContext arg0) throws BusinessException {
  26. PreAlertObject alertObj = new PreAlertObject();
  27. if(!PKLock.getInstance().addDynamicLock("TrainSubImportPlugin")) {
  28. alertObj.setReturnObj("任务执行中,请勿重复执行!");
  29. return alertObj;
  30. }
  31. List<TrainVO> recordList = new ArrayList();
  32. BaseDAO dao = new BaseDAO();
  33. Map map = arg0.getKeyMap();
  34. Date date = new Date();
  35. int dyear = date.getYear() + 1900;
  36. int qyear = date.getYear() + 1900;
  37. if(map.get("nums") != null && !"".equals(map.get("nums"))) {
  38. int nums = Integer.valueOf(arg0.getKeyMap().get("nums").toString());
  39. if(nums == 0) {
  40. qyear = 2019;
  41. } else {
  42. qyear = dyear - Integer.valueOf(map.get("nums").toString());
  43. }
  44. } else {
  45. }
  46. String sql =
  47. "select bd_psndoc.pk_psndoc,\n" +
  48. " bd_psndoc.pk_group,\n" +
  49. " hi_psnjob.pk_psnjob,\n" +
  50. " hi_psnjob.pk_psnorg,\n" +
  51. " hi_psnjob.pk_org,\n" +
  52. " hi_psndoc_train.pk_psndoc_sub,\n" +
  53. " hi_psndoc_train.lastflag,\n" +
  54. " hi_psndoc_train.recordnum,\n" +
  55. " '正气云学堂' || substr(cloud_onlineuserknowledge.actualStudyFinishDate,0,4) || '年度学习情况' act_name,\n" +
  56. " substr(cloud_onlineuserknowledge.actualStudyFinishDate,0,4) || '-01-01' begindate,\n" +
  57. " substr(cloud_onlineuserknowledge.actualStudyFinishDate,0,4) || '-12-31' enddate,\n" +
  58. " sum(nvl(actualStudyHours,0)) tra_time\n" +
  59. " from cloud_onlineuserknowledge\n" +
  60. " left join cloud_psndoc\n" +
  61. " on cloud_psndoc.id = cloud_onlineuserknowledge.userid\n" +
  62. " inner join bd_psndoc\n" +
  63. " on bd_psndoc.mobile = cloud_psndoc.mobile or bd_psndoc.mobile = cloud_psndoc.userName\n" +
  64. " inner join hi_psnorg\n" +
  65. " on hi_psnorg.pk_psndoc = bd_psndoc.pk_psndoc and hi_psnorg.indocflag = 'Y' and hi_psnorg.lastflag = 'Y'\n" +
  66. " and hi_psnorg.endflag = 'N'\n" +
  67. " inner join hi_psnjob\n" +
  68. " on hi_psnjob.pk_psndoc = bd_psndoc.pk_psndoc and hi_psnjob.lastflag = 'Y' and hi_psnjob.ismainjob = 'Y'\n" +
  69. " and hi_psnorg.pk_psnorg = hi_psnjob.pk_psnorg and hi_psnjob.endflag = 'N'\n" +
  70. " left join hi_psndoc_train\n" +
  71. " on hi_psndoc_train.pk_psndoc = hi_psndoc_train.pk_psndoc\n" +
  72. " and substr(cloud_onlineuserknowledge.actualStudyFinishDate,0,4) || '-01-01' = hi_psndoc_train.begindate\n" +
  73. " and substr(cloud_onlineuserknowledge.actualStudyFinishDate,0,4) || '-12-31' = hi_psndoc_train.enddate\n" +
  74. " where cloud_onlineuserknowledge.actualstudyfinishdate is not null and nvl(bd_psndoc.dr,0) = 0\n" +
  75. " and substr(cloud_onlineuserknowledge.actualStudyFinishDate,0,4) > '"+qyear+"' and substr(cloud_onlineuserknowledge.actualStudyFinishDate,0,4) <= '"+dyear+"'\n" +
  76. " group by bd_psndoc.pk_psndoc,\n" +
  77. " bd_psndoc.pk_group,\n" +
  78. " hi_psnjob.pk_psnjob,\n" +
  79. " hi_psnjob.pk_psnorg,\n" +
  80. " hi_psnjob.pk_org,\n" +
  81. " hi_psndoc_train.pk_psndoc_sub,\n" +
  82. " hi_psndoc_train.lastflag,\n" +
  83. " hi_psndoc_train.recordnum,\n" +
  84. " '正气云学堂' || substr(cloud_onlineuserknowledge.actualStudyFinishDate,0,4) || '年度学习情况',\n" +
  85. " substr(cloud_onlineuserknowledge.actualStudyFinishDate,0,4) || '-01-01',\n" +
  86. " substr(cloud_onlineuserknowledge.actualStudyFinishDate,0,4) || '-12-31'";
  87. List<TrainVO> list = (List<TrainVO>) dao.executeQuery(sql, new BeanListProcessor(TrainVO.class));
  88. //培训类别
  89. String defdocSql = "select pk_defdoc from bd_defdoc where code = '99' and pk_defdoclist = (select pk_defdoclist from bd_defdoclist where code = 'HR021_0xx')";
  90. String pk_defdoc = (String) dao.executeQuery(defdocSql, new ColumnProcessor());
  91. List<TrainVO> insertList = new ArrayList();//新增数据list
  92. List<TrainVO> updList = new ArrayList();//更新数据list
  93. if(list != null && list.size() > 0) {
  94. for(TrainVO vo : list) {
  95. vo.setTra_type(pk_defdoc);
  96. if(StringUtils.isBlank(vo.getPk_psndoc_sub())) {
  97. insertList.add(vo);
  98. vo.setRecordnum(0);
  99. vo.setLastflag(UFBoolean.TRUE);
  100. } else {
  101. updList.add(vo);
  102. }
  103. }
  104. }
  105. alertObj.setMsgTitle("");
  106. if(insertList.size() > 0) {
  107. String[] pks = dao.insertVOList(insertList);
  108. alertObj.setReturnObj(pks);
  109. alertObj.setMsgTitle("新增培训记录数据"+pks.length+"条数据");
  110. }
  111. if(updList.size() > 0) {
  112. dao.updateVOList(updList);
  113. alertObj.setMsgTitle(alertObj.getMsgTitle() + "更新培训记录数据"+updList.size()+"条数据");
  114. }
  115. alertObj.setReturnType(PreAlertReturnType.RETURNMESSAGE);
  116. return alertObj;
  117. }
  118. }