Beispiel #1
0
  /**
   * <br>
   * [機 能] 稟議のスキップを行う <br>
   * [解 説] <br>
   * [備 考]
   *
   * @param paramMdl パラメータ情報
   * @param con コネクション
   * @param userSid セッションユーザSID
   * @throws Exception 実行例外
   */
  public void skipRingi(Rng030ParamModel paramMdl, Connection con, int userSid) throws Exception {
    log__.debug("START");

    int rngSid = paramMdl.getRngSid();
    UDate now = new UDate();

    RngChannelDao channelDao = new RngChannelDao(con);
    // 現在確認中のユーザを取得する
    int confirmUserSid = channelDao.getApprovalUser(rngSid);

    // 稟議経路情報の更新
    RngChannelModel channelMdl = __createChannelModel(paramMdl, userSid, now);
    channelMdl.setUsrSid(confirmUserSid);
    channelMdl.setRncComment(paramMdl.getRng030Comment());
    channelMdl.setRncStatus(RngConst.RNG_RNCSTATUS_NOSET);
    channelMdl.setRncChkdate(null);
    channelDao.updateChannel(channelMdl);

    // 次の承認者の稟議経路情報を更新する
    int nextUserSid = channelDao.getNextApproval(channelMdl, 1);
    if (nextUserSid > 0) {
      channelMdl.setUsrSid(nextUserSid);
      channelMdl.setRncStatus(RngConst.RNG_RNCSTATUS_CONFIRM);
      channelMdl.setRncRcvdate(now);
      channelMdl.setRncChkdate(null);
      channelDao.updateApprovalChannel(channelMdl);
    } else {
      // 次の承認者が存在しない場合、稟議を完了する
      RngRndataDao rngDao = new RngRndataDao(con);
      RngRndataModel rngData = new RngRndataModel();

      rngData.setRngSid(rngSid);
      rngData.setRngAuid(userSid);
      rngData.setRngAdate(now);
      rngData.setRngEuid(userSid);
      rngData.setRngEdate(now);
      rngDao.completeRingi(rngData, false);

      // 最終確認者の受信日を更新する
      channelDao.updateRcvdateForConfirmUser(rngData.getRngSid(), userSid, now);
    }

    log__.debug("End");
  }
Beispiel #2
0
  /**
   * <br>
   * [機 能] 稟議の差し戻しを行う <br>
   * [解 説] <br>
   * [備 考]
   *
   * @param paramMdl パラメータ情報
   * @param cntCon MlCountMtController
   * @param userSid セッションユーザSID
   * @param appRootPath アプリケーションのルートパス
   * @param tempDir テンポラリディレクトリ
   * @param pluginConfig プラグイン情報
   * @param smailPluginUseFlg ショートメールプラグイン有効フラグ
   * @param reqMdl リクエスト情報
   * @throws Exception 実行例外
   */
  public void reflectionRingi(
      Rng030ParamModel paramMdl,
      MlCountMtController cntCon,
      int userSid,
      String appRootPath,
      String tempDir,
      PluginConfig pluginConfig,
      boolean smailPluginUseFlg,
      RequestModel reqMdl)
      throws Exception {
    log__.debug("START");

    log__.debug("START");

    // 現在時刻
    UDate now = new UDate();

    int rngSid = paramMdl.getRngSid();

    // 稟議経路情報の更新
    RngChannelDao channelDao = new RngChannelDao(con__);
    RngChannelModel channelMdl = __createChannelModel(paramMdl, userSid, now);
    channelMdl.setRncComment(paramMdl.getRng030Comment());
    channelMdl.setRncStatus(RngConst.RNG_RNCSTATUS_DENIAL);
    channelMdl.setRncChkdate(now);
    channelDao.updateChannel(channelMdl);

    // 稟議添付情報の更新
    __updateRngBin(con__, cntCon, rngSid, userSid, appRootPath, tempDir, now);

    // 稟議を却下状態にする
    RngRndataDao rngDao = new RngRndataDao(con__);
    RngRndataModel rngData = __createRndataModel(paramMdl, userSid, now);
    rngData.setRngStatus(RngConst.RNG_STATUS_REJECT);
    rngDao.updateRingiStatus(rngData);

    // 次に確認するユーザの経路情報を更新
    int beforeUserSid = channelDao.getNextApproval(channelMdl, 0);
    channelMdl.setRncStatus(RngConst.RNG_RNCSTATUS_CONFIRM);
    channelMdl.setRncRcvdate(now);
    channelMdl.setRncChkdate(null);
    if (beforeUserSid > 0) {
      // 最初の承認者ではない場合、前の承認者の稟議経路情報を更新する
      channelMdl.setUsrSid(beforeUserSid);
      channelDao.updateApprovalChannel(channelMdl);
    } else {
      // 最初の承認者の場合、申請者の経路情報を更新する
      channelDao.updateApplicateChannel(channelMdl);
    }

    // リスナーに定義された稟議差し戻し時の処理を行う
    RngBiz rngBiz = new RngBiz(con__);
    RingiListenerModel listenerMdl =
        rngBiz.createListenerModel(
            con__, cntCon, rngSid, appRootPath, pluginConfig, smailPluginUseFlg);
    String url = rngBiz.createThreadUrlRef(reqMdl, rngData.getRngSid());
    // URLを設定
    listenerMdl.setRngUrl(url);

    if (!rngBiz.isCheckRngAconfSmlNot(con__)) {
      RngAconfModel rngAdmMdl = rngBiz.getRngAconf(con__);
      listenerMdl.setSmlNtf(rngAdmMdl.getRarSmlNtf());

      IRingiListener[] listenerList = rngBiz.getRingiListeners(pluginConfig);
      for (IRingiListener listener : listenerList) {
        listener.doReflectionRingi(listenerMdl, reqMdl);
      }
    }

    log__.debug("End");
  }
Beispiel #3
0
  /**
   * <br>
   * [機 能] 稟議の承認を行う <br>
   * [解 説] <br>
   * [備 考]
   *
   * @param paramMdl パラメータ情報
   * @param cntCon MlCountMtController
   * @param userSid セッションユーザSID
   * @param appRootPath アプリケーションのルートパス
   * @param tempDir テンポラリディレクトリ
   * @param pluginConfig プラグイン情報
   * @param smailPluginUseFlg ショートメールプラグイン有効フラグ
   * @param reqMdl リクエスト情報
   * @throws Exception 実行例外
   */
  public void approvalRingi(
      Rng030ParamModel paramMdl,
      MlCountMtController cntCon,
      int userSid,
      String appRootPath,
      String tempDir,
      PluginConfig pluginConfig,
      boolean smailPluginUseFlg,
      RequestModel reqMdl)
      throws Exception {
    log__.debug("START");

    // 現在時刻
    UDate now = new UDate();

    int rngSid = paramMdl.getRngSid();

    // 稟議経路情報の更新
    RngChannelDao channelDao = new RngChannelDao(con__);
    RngChannelModel channelMdl = __createChannelModel(paramMdl, userSid, now);
    channelMdl.setRncComment(paramMdl.getRng030Comment());
    channelMdl.setRncStatus(RngConst.RNG_RNCSTATUS_APPR);
    channelMdl.setRncChkdate(now);
    channelDao.updateChannel(channelMdl);

    // 稟議添付情報の更新
    __updateRngBin(con__, cntCon, rngSid, userSid, appRootPath, tempDir, now);

    // 通知リスナーの情報を取得
    RngBiz rngBiz = new RngBiz(con__);
    RingiListenerModel listenerMdl =
        rngBiz.createListenerModel(
            con__, cntCon, rngSid, appRootPath, pluginConfig, smailPluginUseFlg);

    IRingiListener[] listenerList = rngBiz.getRingiListeners(pluginConfig);

    int nextUserSid = channelDao.getNextApproval(channelMdl, 1);
    if (nextUserSid < 0) {
      // ログインユーザが最終承認者の場合、稟議を完了する
      RngRndataDao rngDao = new RngRndataDao(con__);
      RngRndataModel rngData = __createRndataModel(paramMdl, userSid, now);
      rngData.setRngStatus(RngConst.RNG_STATUS_SETTLED);
      rngData.setRngAdmcomment(null);
      rngDao.completeRingi(rngData, true);
      String url = rngBiz.createThreadUrl(reqMdl, rngData.getRngSid());
      // URLを設定
      listenerMdl.setRngUrl(url);

      // 最終確認者の受信日を更新する
      channelDao.updateRcvdateForConfirmUser(rngSid, userSid, now);

      if (!rngBiz.isCheckRngAconfSmlNot(con__)) {
        RngAconfModel rngAdmMdl = rngBiz.getRngAconf(con__);
        listenerMdl.setSmlNtf(rngAdmMdl.getRarSmlNtf());

        // 稟議承認(完了)通知を行う
        for (IRingiListener listener : listenerList) {
          listener.doApprovalCompleteRingi(listenerMdl, reqMdl);
        }
      }

    } else {
      // ログインユーザが最終承認者ではない場合、次の承認者の稟議経路情報を更新する
      channelMdl.setRncStatus(RngConst.RNG_RNCSTATUS_CONFIRM);
      channelMdl.setRncRcvdate(now);
      channelMdl.setRncChkdate(null);
      channelMdl.setUsrSid(nextUserSid);
      channelDao.updateApprovalChannel(channelMdl);

      // 稟議を申請中状態にする
      RngRndataDao rngDao = new RngRndataDao(con__);
      RngRndataModel rngData = __createRndataModel(paramMdl, userSid, now);
      rngData.setRngStatus(RngConst.RNG_STATUS_REQUEST);
      rngDao.updateRingiStatus(rngData);
      String url = rngBiz.createThreadUrl(reqMdl, rngData.getRngSid());
      // URLを設定
      listenerMdl.setRngUrl(url);

      if (!rngBiz.isCheckRngAconfSmlNot(con__)) {
        RngAconfModel rngAdmMdl = rngBiz.getRngAconf(con__);
        listenerMdl.setSmlNtf(rngAdmMdl.getRarSmlNtf());

        // 稟議承認通知を行う
        for (IRingiListener listener : listenerList) {
          listener.doApprovalRingi(listenerMdl, reqMdl);
        }
      }
    }

    log__.debug("End");
  }