TargetsOrgTaskOSFService.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. package com.kingdee.eas.hr.perf.osf;
  2. import com.google.common.collect.Maps;
  3. import com.google.common.collect.Sets;
  4. import com.kingdee.bos.BOSException;
  5. import com.kingdee.bos.Context;
  6. import com.kingdee.bos.bsf.service.app.IHRMsfService;
  7. import com.kingdee.bos.rabbitmq.guava.Lists;
  8. import com.kingdee.bos.util.BOSUuid;
  9. import com.kingdee.eas.base.message.MessageCategoryFactory;
  10. import com.kingdee.eas.base.message.MessageCenterFactory;
  11. import com.kingdee.eas.common.EASBizException;
  12. import com.kingdee.eas.util.app.ContextUtil;
  13. import com.kingdee.eas.util.app.DbUtil;
  14. import com.kingdee.jdbc.rowset.IRowSet;
  15. import com.kingdee.shr.base.syssetting.service.MessageServiceUtil;
  16. import org.apache.log4j.Logger;
  17. import java.sql.*;
  18. import java.util.*;
  19. import java.util.Date;
  20. public class TargetsOrgTaskOSFService implements IHRMsfService {
  21. private static final Logger logger = Logger.getLogger(TargetsOrgTaskOSFService.class);
  22. @Override
  23. public Object process(Context context, Map<String, Object> map) throws EASBizException, BOSException {
  24. try {
  25. String itypeId = (String) map.get("itypeId");
  26. String id = BOSUuid.create("630FB566").toString();
  27. String creatar = ContextUtil.getCurrentUserInfo(context).getId().toString();
  28. StringBuilder selSql = new StringBuilder();
  29. selSql.append(" select intoDesc,evalStandard,FUSESTATES,FREFSTATES,itypeId, ");
  30. selSql.append(" FEFFDT,FSHRBASICITEMID,FUSEPOLICY,FISSYSPRESET,FSTATE, ");
  31. selSql.append(" rownum as nums,FHRORGUNITID,itName,itNumber,FCREATORID, ");
  32. selSql.append(" FCREATETIME,FLASTUPDATEUSERID,FLASTUPDATETIME,FCONTROLUNITID,fid, ");
  33. selSql.append(" qualiOrRation,unit,scoringFormula,rejection,evalStandard1, ");
  34. selSql.append(" FRANGE,adminId,FSIMPLENAME ");
  35. selSql.append(" from ( ");
  36. selSql.append(" select it.FINDECATORDESC \"intoDesc\",it.FEVALSTANDARD \"evalStandard\",'0' FUSESTATES,'0' FREFSTATES,isnull(it.FIndecatorType,'" + itypeId + "') \"itypeId\", ");
  37. selSql.append(" sysdate FEFFDT,'jpoAAAGCqGuTc4ee' FSHRBASICITEMID,'100' FUSEPOLICY,'0' FISSYSPRESET,'1' FSTATE, ");
  38. selSql.append(" '00000000-0000-0000-0000-000000000000CCE7AED4' FHRORGUNITID, it.FNAME_L2 \"itName\",isnull(it.FNUMBER,(it.FNAME_L2)) \"itNumber\", '" + creatar + "' FCREATORID, ");
  39. selSql.append(" sysdate FCREATETIME, '" + creatar + "' FLASTUPDATEUSERID,sysdate FLASTUPDATETIME,'00000000-0000-0000-0000-000000000000CCE7AED4' FCONTROLUNITID,newbosid('630FB561') fid, ");
  40. selSql.append(" it.FQualiOrRation \"qualiOrRation\",it.FUNIT \"unit\",it.FSCORINGFORMULA \"scoringFormula\",it.FREJECTION \"rejection\",it.FEVALSTANDARD \"evalStandard1\", ");
  41. selSql.append(" '1' FRANGE,peo.FADMINORGUNITID adminId,'" + id + "' FSIMPLENAME");
  42. selSql.append(" from T_EVA_PerfEvaObject peo ");
  43. selSql.append(" left join T_EVA_IndicatorTarget it on it.FEvaObjID= peo.fid ");
  44. selSql.append(" left join t_org_admin org on org.fid= peo.FADMINORGUNITID ");
  45. selSql.append(" where peo.FISORG=1 and peo.FPERSONALGOALSTATUS='3' and peo.FUNITGOALSSTATUS=1 and it.fid is not null ");
  46. // selSql.append(" and (it.FNAME_L2||isnull(it.FNUMBER,(it.FNAME_L2))||org.fid) ");
  47. // selSql.append(" not in (select t1.fName_l2||isnull(t1.FNUMBER,(t1.FNAME_L2)||t2.fid) ");
  48. // selSql.append(" from T_PEF_PerfIndecator t1 left join t_org_admin t2 on t1.FADMINORGUNIT=t2.fid) ");
  49. selSql.append(" group by it.FINDECATORDESC ,it.FEVALSTANDARD ,isnull(it.FIndecatorType,'" + itypeId + "'), ");
  50. selSql.append(" it.FNAME_L2,isnull(it.FNUMBER,(it.FNAME_L2)),it.FQualiOrRation,it.FUNIT, ");
  51. selSql.append(" it.FSCORINGFORMULA,it.FREJECTION,it.FEVALSTANDARD,peo.FADMINORGUNITID ) t1 ");
  52. IRowSet rs = DbUtil.executeQuery(context, selSql.toString());
  53. Map<String, Map<String, Object>> mapMap = Maps.newHashMap();
  54. Map<String, Map<String, Object>> perfIndecator = Maps.newHashMap();
  55. //进行相同指标合并
  56. while (rs.next()) {
  57. Map<String, Object> perfMap = Maps.newLinkedHashMap();
  58. perfMap.put("FINDECATORDESC_L2", rs.getString("intoDesc"));
  59. perfMap.put("FEVALSTANDARD", rs.getString("evalStandard"));
  60. perfMap.put("FUSESTATES", rs.getString("FUSESTATES"));
  61. perfMap.put("FREFSTATES", rs.getString("FREFSTATES"));
  62. perfMap.put("FINDECATORTYPEID", rs.getString("itypeId"));
  63. perfMap.put("FEFFDT", rs.getDate("FEFFDT"));
  64. perfMap.put("FSHRBASICITEMID", rs.getString("FSHRBASICITEMID"));
  65. perfMap.put("FUSEPOLICY", rs.getString("FUSEPOLICY"));
  66. perfMap.put("FISSYSPRESET", rs.getString("FISSYSPRESET"));
  67. perfMap.put("FSTATE", rs.getString("FSTATE"));
  68. perfMap.put("FINDEX", rs.getString("nums"));
  69. perfMap.put("FHRORGUNITID", rs.getString("FHRORGUNITID"));
  70. perfMap.put("FNAME_L2", rs.getString("itName"));
  71. perfMap.put("FNUMBER", rs.getString("itNumber"));
  72. perfMap.put("FCREATORID", rs.getString("FCREATORID"));
  73. perfMap.put("FCREATETIME", rs.getDate("FCREATETIME"));
  74. perfMap.put("FLASTUPDATEUSERID", rs.getString("FLASTUPDATEUSERID"));
  75. perfMap.put("FLASTUPDATETIME", rs.getDate("FLASTUPDATETIME"));
  76. perfMap.put("FCONTROLUNITID", rs.getString("FCONTROLUNITID"));
  77. perfMap.put("FID", rs.getString("fid"));
  78. perfMap.put("FQUALIORRATION", rs.getString("qualiOrRation"));
  79. perfMap.put("FUNIT", rs.getString("unit"));
  80. perfMap.put("FSCORINGFORMULAID", rs.getString("scoringFormula"));
  81. perfMap.put("FREJECTION", rs.getString("rejection"));
  82. perfMap.put("FEVALSTANDARD_L2", rs.getString("evalStandard1"));
  83. perfMap.put("FRANGE", rs.getString("FRANGE"));
  84. perfMap.put("FADMINORGUNIT", rs.getString("adminId"));
  85. perfMap.put("FSIMPLENAME", rs.getString("FSIMPLENAME"));
  86. String adminId = rs.getString("adminId");
  87. String key = rs.getString("itName") + rs.getString("itNumber");
  88. Map<String, Object> perfMap1 = perfIndecator.get(key);
  89. if(null!=perfMap1) {
  90. Set<String> perfSet = (Set<String>) perfMap1.get("perfSet");
  91. if (null == perfSet) {
  92. perfSet = Sets.newHashSet();
  93. perfSet.add(adminId);
  94. } else {
  95. perfSet.add(adminId);
  96. }
  97. perfMap.put("perfSet", perfSet);
  98. }else {
  99. Set<String> perfSet = Sets.newHashSet();
  100. perfSet.add(adminId);
  101. perfMap.put("perfSet", perfSet);
  102. }
  103. perfIndecator.put(key, perfMap);
  104. String fid = (String) perfMap.get("FID");
  105. String FADMINORGUNIT = (String) perfMap.get("FADMINORGUNIT");
  106. String key2 = (fid + FADMINORGUNIT);
  107. Map<String, Object> orgMap = Maps.newHashMap();
  108. orgMap.put("FPERFINDECATORID", fid);
  109. orgMap.put("FADMINORGUNIT", FADMINORGUNIT);
  110. orgMap.put("key", key);
  111. mapMap.put(key2, orgMap);
  112. }
  113. //进行组织合并
  114. for(Map.Entry<String, Map<String, Object>> mapEntry : perfIndecator.entrySet()) {
  115. String perfKey = mapEntry.getKey();
  116. Map<String, Object> perfMap = mapEntry.getValue();
  117. Set<String> perfSet = (Set<String>) perfMap.get("perfSet");
  118. for (Map.Entry<String, Map<String, Object>> entry : mapMap.entrySet()){
  119. Map<String, Object> orgMap = entry.getValue();
  120. String orgKey = (String) orgMap.get("key");
  121. String FADMINORGUNIT= (String) orgMap.get("FADMINORGUNIT");
  122. if(perfKey.equals(orgKey)&&perfSet.contains(FADMINORGUNIT)){
  123. orgMap.put("FPERFINDECATORID",perfMap.get("FID"));
  124. }
  125. }
  126. }
  127. //插入指标库
  128. for (Map.Entry<String, Map<String, Object>> entry : perfIndecator.entrySet()) {
  129. String key = entry.getKey();
  130. Map<String, Object> perfMap = entry.getValue();
  131. Set<String> perfSet = (Set<String>) perfMap.get("perfSet");
  132. perfMap.remove("perfSet");
  133. StringBuilder sql = new StringBuilder();
  134. sql.append(" select t1.fid ");
  135. sql.append(" from T_PEF_PerfIndecator t1 where t1.fName_l2||isnull(t1.FNUMBER,(t1.FNAME_L2))='"+key+"' ");
  136. IRowSet rsqy = DbUtil.executeQuery(context, sql.toString());
  137. if (!rsqy.next()){
  138. StringBuilder insertSql = new StringBuilder();
  139. insertSql.append(" insert into T_PEF_PerfIndecator ( ");
  140. insertSql.append(" FINDECATORDESC_L2,FEVALSTANDARD,FUSESTATES,FREFSTATES,FINDECATORTYPEID, ");
  141. insertSql.append(" FEFFDT,FSHRBASICITEMID,FUSEPOLICY,FISSYSPRESET,FSTATE, ");
  142. insertSql.append(" FINDEX,FHRORGUNITID,FNAME_L2,FNUMBER,FCREATORID, ");
  143. insertSql.append(" FCREATETIME,FLASTUPDATEUSERID,FLASTUPDATETIME,FCONTROLUNITID,FID, ");
  144. insertSql.append(" FQUALIORRATION,FUNIT,FSCORINGFORMULAID,FREJECTION,FEVALSTANDARD_L2, ");
  145. insertSql.append(" FRANGE,FADMINORGUNIT,FSIMPLENAME ");
  146. insertSql.append(" ) values ( ");
  147. insertSql.append(" ?,?,?,?,?,");
  148. insertSql.append(" ?,?,?,?,?,");
  149. insertSql.append(" ?,?,?,?,?,");
  150. insertSql.append(" ?,?,?,?,?,");
  151. insertSql.append(" ?,?,?,?,?,");
  152. insertSql.append(" ?,?,? )");
  153. DbUtil.execute(context, insertSql.toString(), (perfMap.values().toArray()));
  154. }else{
  155. String fid = rsqy.getString("fid");
  156. for (Map.Entry<String, Map<String, Object>> entryMap : mapMap.entrySet()){
  157. Map<String, Object> orgMap = entryMap.getValue();
  158. String orgKey = (String) orgMap.get("key");
  159. String FADMINORGUNIT= (String) orgMap.get("FADMINORGUNIT");
  160. if(key.equals(orgKey)&&perfSet.contains(FADMINORGUNIT)){
  161. orgMap.put("FPERFINDECATORID",fid);
  162. }
  163. }
  164. }
  165. }
  166. //插入指标库的组织范围
  167. for (Map.Entry<String, Map<String, Object>> entry : mapMap.entrySet()) {
  168. //String key = entry.getKey();
  169. Map<String, Object> orgMap = entry.getValue();
  170. String FPERFINDECATORID = (String) orgMap.get("FPERFINDECATORID");
  171. String FADMINORGUNIT = (String) orgMap.get("FADMINORGUNIT");
  172. String key = FPERFINDECATORID+FADMINORGUNIT;
  173. StringBuilder sql = new StringBuilder();
  174. sql.append(" select (FPERFINDECATORID || FADMINID) as ad_orId,fid from T_EVA_IndecatorAdminUseRange where FPERFINDECATORID=?");
  175. IRowSet rsqy = DbUtil.executeQuery(context, sql.toString(), new Object[]{FPERFINDECATORID});
  176. List<String> list1 = Lists.newArrayList();
  177. while (rsqy.next()) {
  178. String ad_orId = rsqy.getString("ad_orId");
  179. list1.add(ad_orId);
  180. }
  181. if (!list1.contains(key)) {
  182. StringBuilder insertRangeSql = new StringBuilder();
  183. insertRangeSql.append(" insert into T_EVA_IndecatorAdminUseRange( ");
  184. insertRangeSql.append(" FPERFINDECATORID, FADMINID, FISALLOWDOWN, FLASTUPDATEUSERID, FLASTUPDATETIME, FID ");
  185. insertRangeSql.append(" ) values(?,?,'1',?,sysdate,newbosid('81B38884'));");
  186. // insertRangeSql.append(" select fid, FADMINORGUNIT, '1', ?, sysdate, newbosid('81B38884') ");
  187. // insertRangeSql.append(" from T_PEF_PerfIndecator where FSIMPLENAME=? ");
  188. // insertRangeSql.append(" and ((fid || FADMINORGUNIT) not in(select FPERFINDECATORID || FADMINID from T_EVA_IndecatorAdminUseRange)) ");
  189. DbUtil.execute(context, insertRangeSql.toString(), new Object[]{FPERFINDECATORID, FADMINORGUNIT, creatar});
  190. }
  191. }
  192. } catch (Exception e) {
  193. logger.error(e.getMessage(), e);
  194. this.setErrorMessage(map, e.getMessage(), e.getMessage());
  195. return "err";
  196. }
  197. return "ok";
  198. }
  199. @Override
  200. public void setErrorMessage(Map<String, Object> param, String bizCode, String errorMsg) {
  201. IHRMsfService.super.setErrorMessage(param, "500", errorMsg);
  202. }
  203. }