HRUtils.java 27 KB

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