전자결재 메뉴얼
(결재 요청 표준, 결재 목록 표준 참조)

 
결재 요청 JSP
결재 요청할 문서를 작성 후 결재 요청 팝업을 호출 합니다.

결재자 명에 이름을 입력 하면 사용자 정보가 자동으로 setting 됩니다.

나의 결재 경로 팝업. 결재 경로 이름을 선택 하면 결재 경로가 선택 됩니다.

새로운 결재 요청 화면을 만드는 경우 SOURCE<결재 요청 표준 참고> 

JSP
Hidden Field를 생성 합니다.
<w:hiddenField id="approvalFormData"/>
<w:hiddenField id="approvalGridData"/>

BUTTON(임시 저장과 결재 상신을 위한 정보를 입력 하는 팝업)
<w:button id="btn_select" text="저장" onClick="doSave('T')" cls="transaction" />
<w:button id="btn_approval" text="결재요청" onClick="doSave('P')" cls="transaction" />

<script>
function doSave(comp, approvalFlag) {
            if (checkValidate() === false) {
                  return;
            }

            setApproval(approvalFlag);
      }

function setApproval(approvalFlag) {
     $C('APPROVAL_FLAG').setValue(approvalFlag);
     if (approvalFlag === 'T') {
          getApproval(approvalFlag); // 임시 저장
     } else if (approvalFlag === 'P') {
          Popup.openApprovalRequestPopup(); // 결재 정보 작성하는 팝업 호출
     }
}

function getApproval(approvalFlag) {
     var data = new wise.data.DataObject();
     data.addComponentData('grid', 'SELECTED');
     data.addComponentData('form');
     dataProcessor.doQuery(baseUrl + '/doSave.wu', data, function(resData) {
     alert(resData.getMessage());
     if(opener === undefined){
          return;    
     }
     opener.doSelect();
     window.close();
     });
}

// 결재 정보 작성하는 팝업으로 결재 정보를 받는 부분. (function 이름 변경 하지 마세요.)
function approvalCallBack(approvalData) {
     $C('approvalFormData').setValue(approvalData.formData);
     $C('approvalGridData').setValue(approvalData.gridData);
}

// 결재 정보 작성하는 팝업으로 필요한 정보를 보내 줍니다. (function 이름 변경 하지 마세요.)
// 변경 하면 안되는 부분
// 변경 가능한 부분
function approvalDataToPopUp() {
     var approvalData = {};
     approvalData.subject = $C('SUBJECT').getValue();
     approvalData.oldApprovalFlag = '${param.proceedingFlag}';
     approvalData.approvalFlag = $C('APPROVAL_FLAG').getValue();
     approvalData.docNo = $C('TEST_NO').getValue();
     approvalData.houseCode = $C('HOUSE_CODE').getValue();
     return approvalData;
}
</script>

Controller
// 일반적인 저장 프로세스와 동일 합니다.
public BaseModelView sampleGridList2DoSave(HttpServletRequest req) throws Exception, ApprovalException {
     DataObject reqDataObj = new DataObject();
     DataObject respDataObj = new DataObject();

     bindDataObject(req, reqDataObj);
     Map<String, String> formData = reqDataObj.getDataForm("form").getDataFieldAsMap();
     List<DataGridRow> gridData = reqDataObj.getDataGrid("grid").getDataGridRows();

     String rtnMsg = sampleService.saveSampleGridList2(formData, gridData);
     respDataObj.setMessage(rtnMsg);
     respDataObj.setStatus("0000");

     return new BaseModelView(respDataObj);
}

Service
public String saveSampleGridList2(Map<String, String> formData, List<DataGridRow> gridData) throws Exception,
                  ApprovalException {
     String approvalFlag = formData.get("APPROVAL_FLAG");
     boolean isNew = WiseString.isEmpty(formData.get("TEST_NO"));
     formData.put("PROCEEDING_FLAG", approvalFlag);
     if (isNew) {
          formData.put("TEST_NO", docNumService.getDocNumber("TS")[0]);
          getDataDao().insert(getStatementId("insertSampleGridList2FormData"), formData);
     else {
          getDataDao().update(getStatementId("updateSampleGridList2FormData"), formData);
     }

     String testNo = formData.get("TEST_NO");
     for (DataGridRow dataGridRow : gridData) {
          String insertFlag = (String)dataGridRow.get("INSERT_FLAG");
          dataGridRow.put("TEST_NO", testNo);
          if (WiseString.equals(insertFlag, "I")) {
               getDataDao().insert(getStatementId("insertSampleGridList2GridData"), dataGridRow);
          else if (WiseString.equals(insertFlag, "U")) {
               getDataDao().insert(getStatementId("updateSampleGridList2GridData"), dataGridRow);
          else {
               throw new Exception("insert flag is incorrect");
          }

          System.out.println("branch of temporary save or approval process");
          System.out.println("branch flag is approval Flag.");
          System.out.println("approval flag: " + approvalFlag);

          // temporary save
          if (!WiseString.equals(approvalFlag, "P")) {
               return msg.getMessage("0015");
          }

          // 윗 부분 까지는 임시저장 입니다. 
          // 결재 상신을 하려면 아래 부분을 추가 해 주시면 됩니다.
          // 결재 상신 할 문서의 문서 번호와 문서 종류를 결재 서비스로 넘겨 줍니다.
          //    approval Service
          formData.put("APP_DOC_NO", formData.get("TEST_NO"));
          formData.put("DOC_TYPE", "TN");
          String strApprovalFormData = formData.get("approvalFormData");
          String strApprovalGridData = formData.get("approvalGridData");
          approvalService.doApprovalProcess(formData, strApprovalFormData, strApprovalGridData);
     }

     return msg.getMessage("0023");
}