HRUtils.java 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708
  1. package com.kingdee.eas.custom.ot.util;
  2. import com.kingdee.bos.BOSException;
  3. import com.kingdee.bos.Context;
  4. import com.kingdee.bos.dao.IObjectPK;
  5. import com.kingdee.bos.dao.IObjectValue;
  6. import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
  7. import com.kingdee.bos.dao.query.SQLExecutorFactory;
  8. import com.kingdee.bos.metadata.IMetaDataLoader;
  9. import com.kingdee.bos.metadata.MetaDataLoaderFactory;
  10. import com.kingdee.bos.metadata.entity.EntityViewInfo;
  11. import com.kingdee.bos.metadata.entity.FilterInfo;
  12. import com.kingdee.bos.metadata.entity.FilterItemInfo;
  13. import com.kingdee.bos.metadata.entity.SelectorItemCollection;
  14. import com.kingdee.bos.metadata.entity.SelectorItemInfo;
  15. import com.kingdee.bos.metadata.management.LanguageCollection;
  16. import com.kingdee.bos.metadata.management.SolutionInfo;
  17. import com.kingdee.bos.metadata.query.util.CompareType;
  18. import com.kingdee.bos.util.BOSUuid;
  19. import com.kingdee.bos.waf.ctx.WafContext;
  20. import com.kingdee.bos.waf.resource.Resources;
  21. import com.kingdee.eas.base.codingrule.CodingRuleManagerFactory;
  22. import com.kingdee.eas.base.codingrule.ICodingRuleManager;
  23. import com.kingdee.eas.base.param.util.ParamManager;
  24. import com.kingdee.eas.base.permission.IPermission;
  25. import com.kingdee.eas.base.permission.PermissionFactory;
  26. import com.kingdee.eas.base.permission.UserInfo;
  27. import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
  28. import com.kingdee.eas.basedata.org.CompanyOrgUnitInfo;
  29. import com.kingdee.eas.basedata.org.HROrgUnitInfo;
  30. import com.kingdee.eas.basedata.org.IOrgUnitRelation;
  31. import com.kingdee.eas.basedata.org.OrgUnitCollection;
  32. import com.kingdee.eas.basedata.org.OrgUnitRelationFactory;
  33. import com.kingdee.eas.basedata.person.IPerson;
  34. import com.kingdee.eas.basedata.person.PersonFactory;
  35. import com.kingdee.eas.basedata.person.PersonInfo;
  36. import com.kingdee.eas.common.EASBizException;
  37. import com.kingdee.eas.hr.emp.IPersonContactMethod;
  38. import com.kingdee.eas.hr.emp.IPersonDegree;
  39. import com.kingdee.eas.hr.emp.IPersonPosition;
  40. import com.kingdee.eas.hr.emp.PersonContactMethodFactory;
  41. import com.kingdee.eas.hr.emp.PersonContactMethodInfo;
  42. import com.kingdee.eas.hr.emp.PersonDegreeFactory;
  43. import com.kingdee.eas.hr.emp.PersonDegreeInfo;
  44. import com.kingdee.eas.hr.emp.PersonPositionFactory;
  45. import com.kingdee.eas.hr.emp.PersonPositionInfo;
  46. import com.kingdee.eas.util.app.ContextUtil;
  47. import com.kingdee.eas.util.app.DbUtil;
  48. import com.kingdee.jdbc.rowset.IRowSet;
  49. import com.kingdee.util.TypeConversionUtils;
  50. import com.kingdee.util.UuidException;
  51. import java.sql.SQLException;
  52. import java.text.SimpleDateFormat;
  53. import java.util.Calendar;
  54. import java.util.GregorianCalendar;
  55. import java.util.HashSet;
  56. import java.util.Iterator;
  57. import java.util.List;
  58. import java.util.Locale;
  59. import javax.faces.application.FacesMessage;
  60. import javax.faces.component.UIComponent;
  61. import javax.faces.context.FacesContext;
  62. import org.apache.log4j.Logger;
  63. import org.operamasks.faces.component.form.impl.UIField;
  64. import org.operamasks.faces.component.grid.impl.UIDataGrid;
  65. /**
  66. * 组织部门工具类
  67. * @author lhbj
  68. */
  69. public class HRUtils {
  70. protected static Logger logger = Logger.getLogger("com.kingdee.eas.hr.base.web.util.HRUtils");
  71. public static PersonPositionInfo getPersonPosition(PersonInfo person) {
  72. new PersonPositionInfo();
  73. try {
  74. SelectorItemCollection sic = new SelectorItemCollection();
  75. sic.add(new SelectorItemInfo("*"));
  76. sic.add(new SelectorItemInfo("enrollSource.name"));
  77. sic.add(new SelectorItemInfo("personDep.name"));
  78. sic.add(new SelectorItemInfo("primaryPosition.name"));
  79. sic.add(new SelectorItemInfo("jobLevel.name"));
  80. sic.add(new SelectorItemInfo("primaryPosition.adminOrgUnit.name"));
  81. IPersonPosition bill = PersonPositionFactory.getRemoteInstance();
  82. IObjectPK[] pks = bill.getPKList("where person.id='" + person.getId() + "'");
  83. if (pks.length > 0) {
  84. PersonPositionInfo info = bill.getPersonPositionInfo(pks[0], sic);
  85. return info;
  86. } else {
  87. return null;
  88. }
  89. } catch (BOSException e) {
  90. logger.error("", e);
  91. return null;
  92. } catch (EASBizException e) {
  93. logger.error("", e);
  94. return null;
  95. }
  96. }
  97. public static PersonContactMethodInfo getPersonContactMethod(PersonInfo person) {
  98. new PersonContactMethodInfo();
  99. try {
  100. IPersonContactMethod bill = PersonContactMethodFactory.getRemoteInstance();
  101. IObjectPK[] pks = bill.getPKList("where person.id='" + person.getId() + "'");
  102. if (pks.length > 0) {
  103. PersonContactMethodInfo info = bill.getPersonContactMethodInfo(pks[0]);
  104. return info;
  105. } else {
  106. return null;
  107. }
  108. } catch (BOSException e) {
  109. logger.error("", e);
  110. return null;
  111. } catch (EASBizException e) {
  112. logger.error("", e);
  113. return null;
  114. }
  115. }
  116. public static PersonDegreeInfo getPersonDegree(PersonInfo person) {
  117. new PersonDegreeInfo();
  118. try {
  119. SelectorItemCollection sic = new SelectorItemCollection();
  120. sic.add(new SelectorItemInfo("*"));
  121. sic.add(new SelectorItemInfo("diploma.name"));
  122. sic.add(new SelectorItemInfo("bwGraSchool.name"));
  123. sic.add(new SelectorItemInfo("bwMajor.name"));
  124. IPersonDegree bill = PersonDegreeFactory.getRemoteInstance();
  125. IObjectPK[] pks = bill.getPKList("where person.id='" + person.getId() + "' and isHighest =1 ");
  126. if (pks.length > 0) {
  127. PersonDegreeInfo info = bill.getPersonDegreeInfo(pks[0], sic);
  128. return info;
  129. } else {
  130. return null;
  131. }
  132. } catch (BOSException e) {
  133. logger.error("", e);
  134. return null;
  135. } catch (EASBizException e) {
  136. logger.error("", e);
  137. return null;
  138. }
  139. }
  140. public static PersonInfo getPerson(PersonInfo person) {
  141. new PersonInfo();
  142. try {
  143. SelectorItemCollection sic = new SelectorItemCollection();
  144. sic.add(new SelectorItemInfo("*"));
  145. sic.add(new SelectorItemInfo("politicalFace.name"));
  146. IPerson bill = PersonFactory.getRemoteInstance();
  147. IObjectPK[] pks = bill.getPKList("where id='" + person.getId() + "'");
  148. if (pks.length > 0) {
  149. PersonInfo info = bill.getPersonInfo(pks[0], sic);
  150. return info;
  151. } else {
  152. return null;
  153. }
  154. } catch (BOSException e) {
  155. logger.error("", e);
  156. return null;
  157. } catch (EASBizException e) {
  158. logger.error("", e);
  159. return null;
  160. }
  161. }
  162. public static String getAutoCode(Context ctx ,IObjectValue objValue) {
  163. String NumberCode = "";
  164. try {
  165. CompanyOrgUnitInfo company = ContextUtil.getCurrentFIUnit(ctx);
  166. if (company != null) {
  167. String companyId = company.getId().toString();
  168. ICodingRuleManager codeRuleMgr = null;
  169. codeRuleMgr = CodingRuleManagerFactory.getRemoteInstance();
  170. if (codeRuleMgr.isExist(objValue, companyId)) {
  171. if (codeRuleMgr.isUseIntermitNumber(objValue, companyId)) {
  172. NumberCode = codeRuleMgr.readNumber(objValue, companyId);
  173. } else {
  174. NumberCode = codeRuleMgr.getNumber(objValue, companyId);
  175. }
  176. }
  177. }
  178. } catch (EASBizException e) {
  179. logger.error("", e);
  180. } catch (BOSException e) {
  181. logger.error("", e);
  182. } catch (UuidException e) {
  183. logger.error("", e);
  184. }
  185. return NumberCode;
  186. }
  187. public static Boolean checkHasPermission(Context ctx ,String permission) {
  188. Boolean hasPermission = false;
  189. try {
  190. IPermission perm = PermissionFactory.getLocalInstance(ctx);
  191. UserInfo person = ContextUtil.getCurrentUserInfo(ctx);
  192. if (person != null) {
  193. IObjectPK userPK = new ObjectUuidPK(person.getId());
  194. IObjectPK orgPK = new ObjectUuidPK(ContextUtil.getCurrentHRUnit(ctx).getId());
  195. hasPermission = perm.hasFunctionPermission(userPK, orgPK, permission);
  196. return hasPermission;
  197. } else {
  198. return false;
  199. }
  200. } catch (BOSException var7) {
  201. return false;
  202. } catch (EASBizException var8) {
  203. return false;
  204. }
  205. }
  206. public static boolean isCodeRuleEnable(Context ctx ,IObjectValue objValue) {
  207. try {
  208. CompanyOrgUnitInfo company = ContextUtil.getCurrentFIUnit(ctx);
  209. if (company != null) {
  210. String companyId = company.getId().toString();
  211. ICodingRuleManager codeRuleMgr = null;
  212. codeRuleMgr = CodingRuleManagerFactory.getRemoteInstance();
  213. return codeRuleMgr.isExist(objValue, companyId);
  214. }
  215. } catch (EASBizException e) {
  216. logger.error("", e);
  217. } catch (BOSException e) {
  218. logger.error("", e);
  219. } catch (UuidException e) {
  220. logger.error("", e);
  221. }
  222. return false;
  223. }
  224. public static void lockComponentApprovedAmount(List componentList) {
  225. Iterator ite = componentList.iterator();
  226. UIComponent component = null;
  227. while (ite.hasNext()) {
  228. component = (UIComponent) ite.next();
  229. if (component instanceof UIField) {
  230. ((UIField) component).setDisabled(true);
  231. } else if (component.getChildCount() > 0) {
  232. lockComponentApprovedAmount(component.getChildren());
  233. }
  234. }
  235. }
  236. public static FilterInfo getUserHROrg(Context ctx,String orgUnitColumnName) {
  237. String userID = ContextUtil.getCurrentUserInfo(ctx).getId().toString();
  238. StringBuffer sql = new StringBuffer();
  239. sql.append("Select FOrgID From T_PM_OrgRange ").append("Where FUserID='").append(userID).append("' And FType='10' ");
  240. FilterInfo filter = new FilterInfo();
  241. FilterItemInfo item = new FilterItemInfo(orgUnitColumnName, sql.toString(), CompareType.INNER);
  242. filter.getFilterItems().add(item);
  243. return filter;
  244. }
  245. public static UserInfo getCurrentUser(Context ctx ) {
  246. return ContextUtil.getCurrentUserInfo(ctx);
  247. }
  248. public static CompanyOrgUnitInfo getCurrentCompany(Context ctx ) {
  249. CompanyOrgUnitInfo company = ContextUtil.getCurrentFIUnit(ctx);
  250. return company;
  251. }
  252. public static HROrgUnitInfo getCurrentHROrgUnit(Context ctx ) {
  253. HROrgUnitInfo info = ContextUtil.getCurrentHRUnit(ctx);
  254. return info;
  255. }
  256. public static AdminOrgUnitInfo getCurrentAdminOrgUnit(Context ctx ) {
  257. AdminOrgUnitInfo info = ContextUtil.getCurrentAdminUnit(ctx);
  258. return info;
  259. }
  260. public static FilterInfo getCurrentCUFilter(Context ctx ) {
  261. FilterInfo filter = new FilterInfo();
  262. if (ContextUtil.getCurrentCtrlUnit(ctx) == null) {
  263. return filter;
  264. } else {
  265. filter.getFilterItems().add(new FilterItemInfo("CU.id", ContextUtil.getCurrentCtrlUnit(ctx).getId().toString(), CompareType.EQUALS));
  266. return filter;
  267. }
  268. }
  269. public static EntityViewInfo getCurrentCUEntityViewInfo(Context ctx ) {
  270. EntityViewInfo viewInfo = new EntityViewInfo();
  271. viewInfo.setFilter(getCurrentCUFilter(ctx));
  272. return viewInfo;
  273. }
  274. public static FilterInfo getCurrentHRFilter(Context ctx ,String hrOrgUnitId) {
  275. FilterInfo filter = new FilterInfo();
  276. if (getCurrentHROrgUnit(ctx) != null) {
  277. filter.getFilterItems().add(new FilterItemInfo(hrOrgUnitId, getCurrentHROrgUnit(ctx).getId().toString()));
  278. }
  279. return filter;
  280. }
  281. public static AdminOrgUnitInfo getUserOrgInfo(Context ctx,String personId) throws EASBizException, BOSException, UuidException {
  282. AdminOrgUnitInfo orgUnitInfo = null;
  283. if (personId != null && !"".equalsIgnoreCase(personId)) {
  284. orgUnitInfo = PersonFactory.getLocalInstance(ctx).getPrimaryAdminOrgUnit(BOSUuid.read(personId));
  285. }
  286. return orgUnitInfo;
  287. }
  288. public static FilterInfo getHRAndAdminRangeFilterInfo(Context ctx,String hrColumnName, String orgUnitColumnName) {
  289. String hrOrgUnitID = ContextUtil.getCurrentHRUnit(ctx).getId().toString();
  290. return getHRAndAdminRangeFilterInfo(ctx,hrColumnName, orgUnitColumnName, hrOrgUnitID);
  291. }
  292. public static FilterInfo getHRAndAdminRangeFilterInfo(Context ctx,String hrColumnName, String orgUnitColumnName, String hrOrgUnitId) {
  293. FilterInfo filter = getAdminRangeFilterInfo(ctx,orgUnitColumnName, hrOrgUnitId);
  294. FilterItemInfo item = new FilterItemInfo(hrColumnName, hrOrgUnitId);
  295. filter.getFilterItems().add(item);
  296. return filter;
  297. }
  298. public static FilterInfo getHRAndAdminRangeFilterInfo(Context ctx,String orgUnitColumnName) {
  299. BOSUuid hrOrgUnitId = ContextUtil.getCurrentHRUnit(ctx).getId();
  300. if (!ContextUtil.getCurrentHRUnit(ctx).isIsBizUnit()) {
  301. try {
  302. hrOrgUnitId = getUserOrgInfo(ctx,ContextUtil.getCurrentUserInfo(ctx).getPerson().getId().toString()).getId();
  303. } catch (EASBizException e) {
  304. logger.error("", e);
  305. } catch (BOSException e) {
  306. logger.error("", e);
  307. } catch (UuidException e) {
  308. logger.error("", e);
  309. }
  310. }
  311. return getAdminRangeFilterInfo(ctx,orgUnitColumnName, hrOrgUnitId.toString());
  312. }
  313. public static FilterInfo getAdminRangeFilterInfo(Context ctx,String orgUnitColumnName, String hrOrgUnitId) {
  314. String userID = ContextUtil.getCurrentUserInfo(ctx).getId().toString();
  315. StringBuffer sql = new StringBuffer();
  316. sql.append("SELECT FFromUnitID FROM T_ORG_UnitRelation WHERE FToUnitID = ");
  317. sql.append("'");
  318. sql.append(hrOrgUnitId);
  319. sql.append("'");
  320. sql.append(" AND ");
  321. sql.append(" FTypeRelationID = ");
  322. sql.append("'00000000-0000-0000-0000-0000000000100FE9F8B5'");
  323. sql.append(" AND ");
  324. sql.append("FFromUnitID IN (");
  325. sql.append("SELECT FOrgID FROM T_PM_OrgRange WHERE FUserID = ");
  326. sql.append("'");
  327. sql.append(userID);
  328. sql.append("'");
  329. sql.append(" AND ");
  330. sql.append("FType = ");
  331. sql.append(20);
  332. sql.append(")");
  333. FilterInfo filter = new FilterInfo();
  334. FilterItemInfo item = new FilterItemInfo(orgUnitColumnName, sql.toString(), CompareType.INNER);
  335. filter.getFilterItems().add(item);
  336. return filter;
  337. }
  338. public static FilterInfo getAdminRangeFilterInfo(Context ctx,String orgUnitColumnName) {
  339. String hrOrgUnitID = ContextUtil.getCurrentHRUnit(ctx).getId().toString();
  340. return getAdminRangeFilterInfo(ctx,orgUnitColumnName, hrOrgUnitID);
  341. }
  342. public static String getHRAndAdminRangePersonSQL(String hrOrgUnitID, String userID) {
  343. StringBuffer sql = new StringBuffer();
  344. sql.append("SELECT PERSON.FID FROM T_BD_PERSON AS PERSON");
  345. sql.append(" INNER JOIN T_HR_PERSONPOSITION AS PP ON PP.FPERSONID = PERSON.FID");
  346. sql.append(" INNER JOIN T_ORG_UNITRELATION AS REL ON REL.FFROMUNITID = PP.FPERSONDEP");
  347. sql.append(" INNER JOIN T_PM_ORGRANGE AS RANGE ON RANGE.FORGID = REL.FFROMUNITID");
  348. sql.append(" WHERE ");
  349. sql.append(" REL.FTOUNITID = ");
  350. sql.append("'");
  351. sql.append(hrOrgUnitID);
  352. sql.append("'");
  353. sql.append(" AND ");
  354. sql.append(" REL.FTYPERELATIONID = ");
  355. sql.append("'");
  356. sql.append("00000000-0000-0000-0000-0000000000100FE9F8B5");
  357. sql.append("'");
  358. sql.append(" AND ");
  359. sql.append(" RANGE.FUSERID = ");
  360. sql.append("'");
  361. sql.append(userID);
  362. sql.append("'");
  363. sql.append(" AND ");
  364. sql.append(" RANGE.FTYPE = ");
  365. sql.append(20);
  366. return sql.toString();
  367. }
  368. public static FilterInfo getHRAndAdminRangePersonFilterInfo(Context ctx ,String hrColumnName, String personColumnName) {
  369. String userID = ContextUtil.getCurrentUserInfo(ctx).getId().toString();
  370. String hrOrgUnitID = ContextUtil.getCurrentHRUnit(ctx).getId().toString();
  371. FilterInfo filterInfo = new FilterInfo();
  372. String sql = getHRAndAdminRangePersonSQL(hrOrgUnitID, userID);
  373. filterInfo.getFilterItems().add(new FilterItemInfo(personColumnName, sql, CompareType.INNER));
  374. filterInfo.getFilterItems().add(new FilterItemInfo(hrColumnName, hrOrgUnitID));
  375. return filterInfo;
  376. }
  377. public static String getHRAndAdminRangePersonSQL_All(String hrOrgUnitID, String userID) {
  378. StringBuffer sql = new StringBuffer();
  379. sql.append("SELECT PERSON.FID FROM T_BD_PERSON AS PERSON");
  380. sql.append(" INNER JOIN T_ORG_POSITIONMEMBER AS PM ON PM.FPERSONID = PERSON.FID");
  381. sql.append(" INNER JOIN T_ORG_POSITION AS Position ON PM.FPOSITIONID = Position.FID");
  382. sql.append(" INNER JOIN T_ORG_UNITRELATION AS REL ON REL.FFROMUNITID = Position.FAdminOrgUnitID");
  383. sql.append(" INNER JOIN T_PM_ORGRANGE AS RANGE ON RANGE.FORGID = REL.FFROMUNITID");
  384. sql.append(" WHERE ");
  385. sql.append(" REL.FTOUNITID = ");
  386. sql.append("'");
  387. sql.append(hrOrgUnitID);
  388. sql.append("'");
  389. sql.append(" AND ");
  390. sql.append(" REL.FTYPERELATIONID = ");
  391. sql.append("'");
  392. sql.append("00000000-0000-0000-0000-0000000000100FE9F8B5");
  393. sql.append("'");
  394. sql.append(" AND ");
  395. sql.append(" RANGE.FUSERID = ");
  396. sql.append("'");
  397. sql.append(userID);
  398. sql.append("'");
  399. sql.append(" AND ");
  400. sql.append(" RANGE.FTYPE = ");
  401. sql.append(20);
  402. return sql.toString();
  403. }
  404. public static FilterInfo getHRAndAdminRangePersonFilterInfo_All(Context ctx ,String hrColumnName, String personColumnName) {
  405. String userID = ContextUtil.getCurrentUserInfo(ctx).getId().toString();
  406. String hrOrgUnitID = ContextUtil.getCurrentHRUnit(ctx).getId().toString();
  407. FilterInfo filterInfo = new FilterInfo();
  408. String sql = getHRAndAdminRangePersonSQL_All(hrOrgUnitID, userID);
  409. filterInfo.getFilterItems().add(new FilterItemInfo(personColumnName, sql, CompareType.INNER));
  410. filterInfo.getFilterItems().add(new FilterItemInfo(hrColumnName, hrOrgUnitID));
  411. return filterInfo;
  412. }
  413. public static String getHRAndAdminRangePersonSQL(Context ctx ) {
  414. String userID = ContextUtil.getCurrentUserInfo(ctx).getId().toString();
  415. String hrOrgUnitID = ContextUtil.getCurrentHRUnit(ctx).getId().toString();
  416. String sql = getHRAndAdminRangePersonSQL_All(hrOrgUnitID, userID);
  417. return sql;
  418. }
  419. public static HROrgUnitInfo getHROrgUnitInfo(Context ctx,BOSUuid souId) throws EASBizException, BOSException {
  420. if (souId == null) {
  421. return null;
  422. } else {
  423. IOrgUnitRelation iUnitRel = OrgUnitRelationFactory.getLocalInstance(ctx);
  424. HROrgUnitInfo ret = (HROrgUnitInfo) iUnitRel.getDefaultToUnit(souId.toString(), 0, 16);
  425. if (ret == null) {
  426. OrgUnitCollection orgCol = iUnitRel.getToUnit(souId.toString(), 0, 16);
  427. ret = (HROrgUnitInfo) orgCol.get(0);
  428. }
  429. return ret;
  430. }
  431. }
  432. private static String getCurrentDate() {
  433. new GregorianCalendar();
  434. Calendar cal = new GregorianCalendar();
  435. SimpleDateFormat sFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  436. return "{ts'" + sFormat.format(((Calendar) cal).getTime()) + "'}";
  437. }
  438. public static FilterInfo isPersonInAffairProcessOrInPool(String person) {
  439. String currDate = getCurrentDate();
  440. StringBuffer oql = new StringBuffer("select fpersonid ");
  441. oql.append("from t_hr_hraffairbiz ");
  442. oql.append(" where ");
  443. oql.append(" (fbillState = ");
  444. oql.append(0);
  445. oql.append(" or fbillState = ");
  446. oql.append(1);
  447. oql.append(" or fbillState = ");
  448. oql.append(2);
  449. oql.append(" or (fbillState = ");
  450. oql.append(3);
  451. oql.append(" and fentryBizDate >= ");
  452. oql.append(currDate);
  453. oql.append(" )");
  454. oql.append(" and fpersonid is not null) ");
  455. FilterInfo filter = new FilterInfo();
  456. FilterItemInfo item = new FilterItemInfo(person, oql.toString(), CompareType.NOTINNER);
  457. filter.getFilterItems().add(item);
  458. StringBuffer sql = new StringBuffer("select fpersonid ");
  459. sql.append("from t_hr_EmployeePool");
  460. FilterItemInfo item2 = new FilterItemInfo(person, sql.toString(), CompareType.NOTINNER);
  461. filter.getFilterItems().add(item2);
  462. return filter;
  463. }
  464. public static String getOrgFilter(Context ctx,String param) {
  465. String strFilterInfo = "";
  466. if (param != null && "adminOrgUnit".equals(param)) {
  467. FilterInfo fi = new FilterInfo();
  468. FilterInfo adminFilter = getHRAndAdminRangeFilterInfo(ctx,"id");
  469. if (adminFilter != null && !"null".equals(adminFilter)) {
  470. if (fi.getFilterItems().size() > 0) {
  471. try {
  472. fi.mergeFilter(adminFilter, "and");
  473. } catch (BOSException e) {
  474. logger.error("", e);
  475. }
  476. } else {
  477. fi = adminFilter;
  478. }
  479. }
  480. strFilterInfo = fi.toString();
  481. } else if (param != null && "hrOrgUnit".equals(param)) {
  482. FilterInfo fi = new FilterInfo();
  483. FilterInfo hrFilter = getUserHROrg(ctx,"id");
  484. if (hrFilter != null && !"null".equals(hrFilter)) {
  485. if (fi.getFilterItems().size() > 0) {
  486. try {
  487. fi.mergeFilter(hrFilter, "and");
  488. } catch (BOSException e) {
  489. logger.error("", e);
  490. }
  491. } else {
  492. fi = hrFilter;
  493. }
  494. }
  495. strFilterInfo = fi.toString();
  496. }
  497. return strFilterInfo;
  498. }
  499. public static boolean checkSelectRow(UIDataGrid grid) {
  500. if (grid.getSelections() != null && grid.getSelections().length > 0 && grid.getSelections()[0] != -1) {
  501. return true;
  502. } else {
  503. FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, Resources.getText("noRowSelected"), (String) null);
  504. FacesContext.getCurrentInstance().addMessage((String) null, message);
  505. return false;
  506. }
  507. }
  508. public static boolean getParamValue(Context ctx ,String id) throws EASBizException, BOSException {
  509. String hrOrgId = null;
  510. String paramValue = null;
  511. if (ContextUtil.getCurrentHRUnit(ctx) != null) {
  512. hrOrgId = ContextUtil.getCurrentHRUnit(ctx).getId().toString();
  513. paramValue = ParamManager.getParamValue((Context) null, new ObjectUuidPK(hrOrgId), id);
  514. return TypeConversionUtils.objToBoolean(paramValue);
  515. } else {
  516. return false;
  517. }
  518. }
  519. public static Locale getOriginalLocale(Locale easLocale) {
  520. SolutionInfo solution = null;
  521. IMetaDataLoader loader = MetaDataLoaderFactory.getRemoteMetaDataLoader();
  522. solution = loader.getSolution();
  523. if (solution != null) {
  524. LanguageCollection lc = solution.getLanguages();
  525. for (int i = 0; i < lc.size(); ++i) {
  526. if (lc.get(i).getLocale().equals(easLocale)) {
  527. return lc.get(i).getOriginalLocale();
  528. }
  529. }
  530. }
  531. return easLocale;
  532. }
  533. public static FilterItemInfo getAdminRangeFilterItemInfo(Context ctx, String orgID) {
  534. String sql = getAdminRangeSql(ctx);
  535. FilterItemInfo item = new FilterItemInfo(orgID, sql, CompareType.INNER);
  536. return item;
  537. }
  538. public static String getAdminRangeSql(Context ctx) {
  539. String userID = getCurrentUserId(ctx);
  540. StringBuffer sql = new StringBuffer();
  541. sql.append("SELECT FFromUnitID FROM T_ORG_UnitRelation WHERE FToUnitID in (");
  542. sql.append(getHRRangeByUserId(userID));
  543. sql.append(") AND FTypeRelationID = '00000000-0000-0000-0000-0000000000100FE9F8B5'");
  544. sql.append(" AND FFromUnitID IN (");
  545. sql.append("SELECT FOrgID FROM T_PM_OrgRange WHERE FUserID = ");
  546. sql.append("'");
  547. sql.append(userID);
  548. sql.append("'");
  549. sql.append(" AND FType = ");
  550. sql.append(20);
  551. sql.append(")");
  552. return sql.toString();
  553. }
  554. private static String getCurrentUserId(Context ctx) {
  555. String userID = null;
  556. if (ctx != null) {
  557. userID = ContextUtil.getCurrentUserInfo(ctx).getId().toString();
  558. } else {
  559. userID = ContextUtil.getCurrentUserInfo(WafContext.getInstance().getContext()).getId().toString();
  560. }
  561. return userID;
  562. }
  563. public static String getHRRangeByUserId(String userID) {
  564. StringBuffer sql = new StringBuffer();
  565. sql.append("select orgRange.forgId as forgId from T_PM_OrgRange orgRange inner join ");
  566. sql.append("T_ORG_HRO hro on orgRange.forgId = hro.fid ");
  567. sql.append("where orgRange.ftype = ");
  568. sql.append(10);
  569. sql.append(" and fuserid = '");
  570. sql.append(userID);
  571. sql.append("' ");
  572. return sql.toString();
  573. }
  574. public static FilterItemInfo getUserAdminRangeFilter(String queryColumn) {
  575. Context context = WafContext.getInstance().getContext();
  576. String userID = ContextUtil.getCurrentUserInfo(context).getId().toString();
  577. StringBuffer sql = new StringBuffer();
  578. sql.append("SELECT FOrgID FROM T_PM_OrgRange WHERE FUserID = ");
  579. sql.append("'");
  580. sql.append(userID);
  581. sql.append("'");
  582. sql.append(" AND ");
  583. sql.append("FType = ");
  584. sql.append(20);
  585. FilterItemInfo item = new FilterItemInfo(queryColumn, sql.toString(), CompareType.INNER);
  586. return item;
  587. }
  588. public static HashSet<String> getHRRange(Context ctx) throws BOSException, EASBizException {
  589. String userID = getCurrentUserId(ctx);
  590. String sql = getHRRangeByUserId(userID);
  591. HashSet<String> set = new HashSet();
  592. IRowSet rows = null;
  593. if (ctx != null) {
  594. rows = DbUtil.executeQuery(ctx, sql.toString());
  595. } else {
  596. rows = SQLExecutorFactory.getRemoteInstance(sql).executeSQL();
  597. }
  598. if (rows != null) {
  599. try {
  600. while (rows.next()) {
  601. set.add(rows.getString("forgId"));
  602. }
  603. } catch (SQLException e) {
  604. throw new BOSException(e);
  605. }
  606. }
  607. return set;
  608. }
  609. public static String appendServiceId(String url) {
  610. StringBuffer sb = new StringBuffer(url);
  611. if (url.indexOf("&") == -1) {
  612. sb.append("?");
  613. } else {
  614. sb.append("&");
  615. }
  616. sb.append("ISERVICE_ServiceID=");
  617. sb.append(WafContext.getInstance().getRequest().getParameter("ISERVICE_ServiceID"));
  618. return sb.toString();
  619. }
  620. }