8d87b171520e797e53044b284cb86685964c6a40.svn-base 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package com.kingdee.eas.custom.facade.IntelligentRules;
  2. import java.sql.SQLException;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import org.apache.commons.lang3.StringUtils;
  8. import org.apache.log4j.Logger;
  9. import com.kingdee.bos.BOSException;
  10. import com.kingdee.bos.Context;
  11. import com.kingdee.bos.dao.IObjectPK;
  12. import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
  13. import com.kingdee.eas.basedata.hraux.StateEnum;
  14. import com.kingdee.eas.common.EASBizException;
  15. import com.kingdee.eas.framework.CoreBaseCollection;
  16. import com.kingdee.eas.framework.CoreBaseInfo;
  17. import com.kingdee.eas.util.app.DbUtil;
  18. import com.kingdee.jdbc.rowset.IRowSet;
  19. import com.kingdee.shr.compensation.ExcuteSatate;
  20. import com.kingdee.shr.compensation.app.intelligent.CmpIntelRuleFactory;
  21. import com.kingdee.shr.compensation.app.intelligent.CmpIntelRuleInfo;
  22. import com.kingdee.shr.compensation.app.intelligent.ICmpIntelRule;
  23. import com.kingdee.shr.compensation.exception.CmpMatchException;
  24. import com.kingdee.shr.compensation.intelligent.execution.CmpIntelExecutor;
  25. import com.kingdee.shr.compensation.intelligent.util.CmpProgressHelper;
  26. public class IntelligentRulesFacadeControllerBean extends AbstractIntelligentRulesFacadeControllerBean
  27. {
  28. private static Logger logger =
  29. Logger.getLogger("com.kingdee.eas.custom.facade.IntelligentRules.IntelligentRulesFacadeControllerBean");
  30. @Override
  31. protected void _rules(Context ctx, String ruleNumber) throws BOSException, EASBizException {
  32. String number = "GTIIT001";
  33. if(StringUtils.isNotBlank(ruleNumber)) {
  34. number = ruleNumber;
  35. }
  36. logger.error("智能匹配规则编码:"+number);
  37. String sql = "select * from T_HR_SCmpIntelRule where fnumber = '"+number+"'";
  38. logger.error("查询智能匹配规则SQL:"+sql);
  39. IRowSet rowSet = DbUtil.executeQuery(ctx, sql);
  40. String ruleBillId = "";
  41. try {
  42. while(rowSet.next()) {
  43. ruleBillId = rowSet.getString("fid");
  44. }
  45. } catch (SQLException e) {
  46. e.printStackTrace();
  47. }
  48. logger.error("智能匹配规则ID:"+ruleBillId);
  49. if(StringUtils.isBlank(ruleBillId)) {
  50. return;
  51. }
  52. CoreBaseCollection colls = new CoreBaseCollection();
  53. try {
  54. //调用标准执行操作
  55. ICmpIntelRule cmpIntelRule = CmpIntelRuleFactory.getLocalInstance(ctx);
  56. CmpIntelRuleInfo ruleInfo = cmpIntelRule.getCmpIntelRuleInfo((IObjectPK)new ObjectUuidPK(ruleBillId));
  57. checkRuleStatus(ctx, ruleInfo);
  58. boolean debug = false;
  59. CmpProgressHelper progressHelper = CmpProgressHelper.getInstance();
  60. CmpIntelExecutor executor = new CmpIntelExecutor();
  61. executor.setCtx(ctx);
  62. executor.setProgressHelper(progressHelper);
  63. executor.setDebug(debug);
  64. List<String> ruleList = new ArrayList<>();
  65. ruleList.add(ruleBillId);
  66. Map<String, Object> param = new HashMap<>();
  67. param.put("ruleIds", ruleList);
  68. executor.execute(param);
  69. ruleInfo.setExcuteState(ExcuteSatate.finish);
  70. colls.add((CoreBaseInfo)ruleInfo);
  71. cmpIntelRule.save(colls);
  72. } catch (Exception e) {
  73. e.printStackTrace();
  74. }
  75. }
  76. private void checkRuleStatus(Context ctx, CmpIntelRuleInfo ruleInfo) throws BOSException, EASBizException {
  77. StateEnum state = ruleInfo.getState();
  78. ExcuteSatate excuteSatate = ruleInfo.getExcuteState();
  79. ICmpIntelRule cmpIntelRule = CmpIntelRuleFactory.getLocalInstance(ctx);
  80. if (StateEnum.DISABLE.equals(state)) {
  81. throw new BOSException(new CmpMatchException(CmpMatchException.RULENORUN));
  82. }
  83. if (ExcuteSatate.excuting.equals(excuteSatate)) {
  84. throw new BOSException(new CmpMatchException(CmpMatchException.EXCUTING, new Object[] { ruleInfo.getName() }));
  85. }
  86. ruleInfo.setExcuteState(ExcuteSatate.excuting);
  87. cmpIntelRule.save((CoreBaseInfo)ruleInfo);
  88. }
  89. }