diff --git a/WebContent/WEB-INF/view/contractMgmt/estimateList_new.jsp b/WebContent/WEB-INF/view/contractMgmt/estimateList_new.jsp new file mode 100644 index 0000000..674994e --- /dev/null +++ b/WebContent/WEB-INF/view/contractMgmt/estimateList_new.jsp @@ -0,0 +1,591 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.pms.common.utils.*"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ page import="java.util.*" %> +<%@include file= "/init.jsp" %> +<% +PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); +String connector = person.getUserId(); + +%> + + + + + <%=Constants.SYSTEM_NAME%> + + + + + + + + +
+ + + + +
+
+
+
+

+ 영업관리_견적관리 +

+
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + ~ + + + + + ~ + +
+
+ + <%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %> +
+
+ + + \ No newline at end of file diff --git a/WebContent/WEB-INF/view/contractMgmt/estimateTemplate1.jsp b/WebContent/WEB-INF/view/contractMgmt/estimateTemplate1.jsp new file mode 100644 index 0000000..276ed87 --- /dev/null +++ b/WebContent/WEB-INF/view/contractMgmt/estimateTemplate1.jsp @@ -0,0 +1,552 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.pms.common.utils.*"%> +<%@ page import="java.util.*" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@include file= "/init.jsp" %> +<% +PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); +String userId = CommonUtils.checkNull(person.getUserId()); +String objId = CommonUtils.checkNull(request.getParameter("objId")); +%> + + + + +<%=Constants.SYSTEM_NAME%> - 견적서 양식1 + + + + +
+ +
견 적 서
+ + + + + + + + + + + + + + + + + + + + + + + + + +
시행일자 + + +
+ 회사 도장 + +
+
+ 담당자 : 영업부
+ 연락처 : +
+
수신처 + +
수신인 + +
견적번호 + +
+ + +
+ 견적을 요청해 주셔서 대단히 감사합니다.
+ 하기와 같이 견적서를 제출합니다. +
+ + +
+ 부가세 별도 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
번호
NO.
품 명
DESCRIPTION
규 격
SPECIFICATION
수량
Q'TY
단위
UNIT
단 가
UNIT
PRICE
금 액
AMOUNT
비고
1
2
+
<비고>
+ +
+ + +
+
<참조사항>
+
+
+
+
+
+ + + +
+ + +
+ + + + +
+ + + diff --git a/WebContent/WEB-INF/view/contractMgmt/estimateTemplate2.jsp b/WebContent/WEB-INF/view/contractMgmt/estimateTemplate2.jsp new file mode 100644 index 0000000..bd0cb1d --- /dev/null +++ b/WebContent/WEB-INF/view/contractMgmt/estimateTemplate2.jsp @@ -0,0 +1,718 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.pms.common.utils.*"%> +<%@ page import="java.util.*" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@include file= "/init.jsp" %> +<% +PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); +String userId = CommonUtils.checkNull(person.getUserId()); +String objId = CommonUtils.checkNull(request.getParameter("objId")); +%> + + + + +<%=Constants.SYSTEM_NAME%> - 장비 견적서 + + + + +
+ +
+
+
+ RPS
+ A division of Cimcherry +
+
+
+
견 적 서
+
+
+
RPS CO., LTD
+
대전광역시 유성구 국제과학로 10로 8
+
TEL: (042)602-3300, FAX: (042)672-3399
+
+
+ + +
+
+
+
시행일자 :
+
+ +
+
+
+
수신처 :
+
+ +
+
+
+
품  명 :
+
+ +
+
+
+
+ + +
+ 설비 Model : + + +
+ + + + + + + + + + + + + + +
NODESCRIPTIONSPECIFICATIONQ'TYUNIT PRICEAMOUNTREMARK
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
1초음파 CNC Machine
+
+
+
+
VAT 별도
+
+ + + + + + + + + + + + + + + + + + + + + + + +
2초음파 스캔용 오돔
Subtotal
+ + + + + + + + + + + + + + + + + + +
3전장
+ + + + + + + + + + + + + + + + + + +
4UTILITY
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Subtotal
5자동화
Subtotal
+ + + + + + + + + + + + + + + + + + + + + + + +
6Option
Subtotal
+ + + + + + + + + + + + + + + + + + + + + + + +
7Set up
Subtotal
+ + + + + + + + + + + + + + + + + + + + + + + +
8포장/운송
Subtotal
+ + +
+
    +
  • ■ 최종 견적가는 부가세 별도입니다.
  • +
  • ■ 장비 납기 : 발주 후 7개월
  • +
  • ■ 운송 조건 : -
  • +
  • ■ 결제 조건 : 계약금 : 30% / 잔금 : 70%
  • +
  • - 계약금 : 발주
  • +
  • - 잔금 : 검사 완료 후
  • +
  • ■ 특이사항 : 최종 장비 사양 확인 후 추가 변경 발생 시 견적 재산정 진행
  • +
  • ■ Warrenty Period: 1년(소모성 parts 제외)
  • +
  • ■ 주의 : RPS 등의의인 초음파 스캔용 임의 탈거 또는 세척시 보증 할 수 없음.
  • +
  • ■ 패킹 견적은 양산 20대 기준의 견적조건 운송 장비 전달 시 동일한 가격 적용 모로.
  • +
+
+ + + +
+ * RPS 견적서 - 문서번호: RPS-SE-사업부명 양식 제치부작성 적용본 등을은 결제안전버리 +
+
+ + +
+ + + +
+ + + diff --git a/WebContent/images/company_stamp.png b/WebContent/images/company_stamp.png new file mode 100644 index 0000000..bd7d53e Binary files /dev/null and b/WebContent/images/company_stamp.png differ diff --git a/database/estimate_template_tables.sql b/database/estimate_template_tables.sql new file mode 100644 index 0000000..140f6df --- /dev/null +++ b/database/estimate_template_tables.sql @@ -0,0 +1,86 @@ +-- 견적서 템플릿 테이블 생성 SQL + +-- 1. 견적서 템플릿 메인 테이블 +CREATE TABLE IF NOT EXISTS ESTIMATE_TEMPLATE ( + OBJID SERIAL PRIMARY KEY, + CONTRACT_OBJID NUMERIC NOT NULL, -- CONTRACT_MGMT 테이블의 OBJID 참조 + TEMPLATE_TYPE VARCHAR(10) NOT NULL, -- '1': 일반 견적서, '2': 장비 견적서 + + -- 일반 견적서 필드 (Template 1) + EXECUTOR VARCHAR(200), -- 시행일자 + RECIPIENT VARCHAR(200), -- 수신처 + ESTIMATE_NO VARCHAR(100), -- 견적번호 + CONTACT_PERSON VARCHAR(100), -- 수신인 + GREETING_TEXT TEXT, -- 인사말 + + -- 장비 견적서 필드 (Template 2) + MODEL_NAME VARCHAR(200), -- 설비 Model 품명 + MODEL_CODE VARCHAR(100), -- 설비 Model 코드 + EXECUTOR_DATE VARCHAR(50), -- 시행일자 + + -- 비고 필드 (공통) + NOTE1 VARCHAR(500), + NOTE2 VARCHAR(500), + NOTE3 VARCHAR(500), + NOTE4 VARCHAR(500), + + -- 카테고리 정보 (장비 견적서용, JSON 형태로 저장) + CATEGORIES_JSON TEXT, + + -- 시스템 필드 + WRITER VARCHAR(50), + REGDATE TIMESTAMP DEFAULT NOW(), + CHG_USER_ID VARCHAR(50), + CHGDATE TIMESTAMP DEFAULT NOW(), + + CONSTRAINT fk_estimate_contract FOREIGN KEY (CONTRACT_OBJID) + REFERENCES CONTRACT_MGMT(OBJID) ON DELETE CASCADE +); + +-- 인덱스 생성 +CREATE INDEX idx_estimate_contract ON ESTIMATE_TEMPLATE(CONTRACT_OBJID); +CREATE INDEX idx_estimate_type ON ESTIMATE_TEMPLATE(TEMPLATE_TYPE); + +-- 코멘트 추가 +COMMENT ON TABLE ESTIMATE_TEMPLATE IS '견적서 템플릿 정보'; +COMMENT ON COLUMN ESTIMATE_TEMPLATE.CONTRACT_OBJID IS '견적요청 OBJID (CONTRACT_MGMT 참조)'; +COMMENT ON COLUMN ESTIMATE_TEMPLATE.TEMPLATE_TYPE IS '템플릿 타입 (1:일반견적서, 2:장비견적서)'; + + +-- 2. 견적서 템플릿 품목 테이블 +CREATE TABLE IF NOT EXISTS ESTIMATE_TEMPLATE_ITEM ( + OBJID SERIAL PRIMARY KEY, + TEMPLATE_OBJID NUMERIC NOT NULL, -- ESTIMATE_TEMPLATE 테이블의 OBJID 참조 + SEQ INTEGER NOT NULL, -- 순번 + CATEGORY VARCHAR(100), -- 카테고리 (장비 견적서용) + DESCRIPTION VARCHAR(500), -- 품명 + SPECIFICATION TEXT, -- 규격/사양 + QUANTITY VARCHAR(50), -- 수량 + UNIT VARCHAR(50), -- 단위 + UNIT_PRICE NUMERIC(15,2), -- 단가 + AMOUNT NUMERIC(15,2), -- 금액 + NOTE VARCHAR(500), -- 비고 + REMARK VARCHAR(500), -- 특이사항 + + CONSTRAINT fk_item_template FOREIGN KEY (TEMPLATE_OBJID) + REFERENCES ESTIMATE_TEMPLATE(OBJID) ON DELETE CASCADE +); + +-- 인덱스 생성 +CREATE INDEX idx_item_template ON ESTIMATE_TEMPLATE_ITEM(TEMPLATE_OBJID); +CREATE INDEX idx_item_seq ON ESTIMATE_TEMPLATE_ITEM(TEMPLATE_OBJID, SEQ); + +-- 코멘트 추가 +COMMENT ON TABLE ESTIMATE_TEMPLATE_ITEM IS '견적서 템플릿 품목 정보'; +COMMENT ON COLUMN ESTIMATE_TEMPLATE_ITEM.TEMPLATE_OBJID IS '견적서 템플릿 OBJID'; +COMMENT ON COLUMN ESTIMATE_TEMPLATE_ITEM.SEQ IS '품목 순번'; +COMMENT ON COLUMN ESTIMATE_TEMPLATE_ITEM.CATEGORY IS '카테고리 (장비견적서: CNC Machine, UTILITY 등)'; + + +-- 3. CONTRACT_MGMT 테이블에 CATEGORIES_JSON 컬럼 추가 (이미 없는 경우) +-- ALTER TABLE ESTIMATE_TEMPLATE ADD COLUMN IF NOT EXISTS CATEGORIES_JSON TEXT; + +-- 샘플 데이터 조회 쿼리 +-- SELECT * FROM ESTIMATE_TEMPLATE WHERE CONTRACT_OBJID = 123; +-- SELECT * FROM ESTIMATE_TEMPLATE_ITEM WHERE TEMPLATE_OBJID = 456 ORDER BY SEQ; + diff --git a/src/com/pms/salesmgmt/controller/ContractMgmtController.java b/src/com/pms/salesmgmt/controller/ContractMgmtController.java index d0b5e04..3985450 100644 --- a/src/com/pms/salesmgmt/controller/ContractMgmtController.java +++ b/src/com/pms/salesmgmt/controller/ContractMgmtController.java @@ -1763,4 +1763,122 @@ public class ContractMgmtController { } return "/ajax/ajaxResult"; } + + /** + * 견적서 양식1 (일반 견적서) 팝업 + * @param session + * @param request + * @param paramMap + * @return + */ + @RequestMapping("/contractMgmt/estimateTemplate1.do") + public String estimateTemplate1(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){ + String objId = CommonUtils.checkNull(paramMap.get("objId")); + + try{ + Map estimate = null; + List items = new ArrayList(); + + if(!"".equals(objId) && !"-1".equals(objId)){ + // 기존 견적서 데이터 조회 + estimate = contractMgmtService.getEstimateTemplateInfo(paramMap); + items = contractMgmtService.getEstimateTemplateItems(paramMap); + } + + request.setAttribute("estimate", estimate); + request.setAttribute("items", items); + + } catch (Exception e) { + e.printStackTrace(); + } + + return "/contractMgmt/estimateTemplate1"; + } + + /** + * 견적서 양식2 (장비 견적서) 팝업 + * @param session + * @param request + * @param paramMap + * @return + */ + @RequestMapping("/contractMgmt/estimateTemplate2.do") + public String estimateTemplate2(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){ + String objId = CommonUtils.checkNull(paramMap.get("objId")); + + try{ + Map estimate = null; + List items = new ArrayList(); + + if(!"".equals(objId) && !"-1".equals(objId)){ + // 기존 견적서 데이터 조회 + estimate = contractMgmtService.getEstimateTemplateInfo(paramMap); + items = contractMgmtService.getEstimateTemplateItems(paramMap); + } + + request.setAttribute("estimate", estimate); + request.setAttribute("items", items); + + } catch (Exception e) { + e.printStackTrace(); + } + + return "/contractMgmt/estimateTemplate2"; + } + + /** + * 견적서 상세 정보 조회 (AJAX) + * @param request + * @param paramMap + * @return + */ + @ResponseBody + @RequestMapping(value="/contractMgmt/getEstimateDetail.do", method=RequestMethod.POST) + public Map getEstimateDetail(HttpServletRequest request, @RequestParam Map paramMap){ + Map resultMap = new HashMap(); + + try { + Map estimate = contractMgmtService.getEstimateTemplateInfo(paramMap); + List items = contractMgmtService.getEstimateTemplateItems(paramMap); + + resultMap.put("estimate", estimate); + resultMap.put("items", items); + resultMap.put("result", "success"); + + } catch (Exception e) { + e.printStackTrace(); + resultMap.put("result", "error"); + resultMap.put("message", e.getMessage()); + } + + return resultMap; + } + + /** + * 견적서 저장 (AJAX) + * @param request + * @param paramMap + * @return + */ + @ResponseBody + @RequestMapping(value="/contractMgmt/saveEstimate.do", method=RequestMethod.POST) + public Map saveEstimate(HttpServletRequest request, @RequestParam Map paramMap){ + Map resultMap = new HashMap(); + + try { + PersonBean person = (PersonBean)request.getSession().getAttribute(Constants.PERSON_BEAN); + paramMap.put("userId", person.getUserId()); + + contractMgmtService.saveEstimateTemplate(request, paramMap); + + resultMap.put("result", "success"); + + } catch (Exception e) { + e.printStackTrace(); + resultMap.put("result", "error"); + resultMap.put("message", e.getMessage()); + } + + return resultMap; + } } diff --git a/src/com/pms/salesmgmt/mapper/contractMgmt.xml b/src/com/pms/salesmgmt/mapper/contractMgmt.xml index 9a174a1..dc42832 100644 --- a/src/com/pms/salesmgmt/mapper/contractMgmt.xml +++ b/src/com/pms/salesmgmt/mapper/contractMgmt.xml @@ -3662,5 +3662,218 @@ ORDER BY ASM.SUPPLY_NAME --> FROM END_COUNT E, PROJECT_STATS P, ING_COUNT I, DELAY_COUNT D, HOLD_COUNT H, NOPLAN_COUNT N + + + + + + + + + + + + + + + INSERT INTO ESTIMATE_TEMPLATE ( + CONTRACT_OBJID, + TEMPLATE_TYPE, + EXECUTOR, + RECIPIENT, + ESTIMATE_NO, + CONTACT_PERSON, + GREETING_TEXT, + MODEL_NAME, + MODEL_CODE, + EXECUTOR_DATE, + NOTE1, + NOTE2, + NOTE3, + NOTE4, + WRITER, + REGDATE, + CHG_USER_ID, + CHGDATE + ) VALUES ( + #{objId}::NUMERIC, + #{template_type}, + #{executor}, + #{recipient}, + #{estimate_no}, + #{contact_person}, + #{greeting_text}, + #{model_name}, + #{model_code}, + #{executor_date}, + #{note1}, + #{note2}, + #{note3}, + #{note4}, + #{writer}, + NOW(), + #{chg_user_id}, + NOW() + ) + + + + + UPDATE ESTIMATE_TEMPLATE + SET + EXECUTOR = #{executor}, + RECIPIENT = #{recipient}, + ESTIMATE_NO = #{estimate_no}, + CONTACT_PERSON = #{contact_person}, + GREETING_TEXT = #{greeting_text}, + MODEL_NAME = #{model_name}, + MODEL_CODE = #{model_code}, + EXECUTOR_DATE = #{executor_date}, + NOTE1 = #{note1}, + NOTE2 = #{note2}, + NOTE3 = #{note3}, + NOTE4 = #{note4}, + CHG_USER_ID = #{chg_user_id}, + CHGDATE = NOW() + WHERE + CONTRACT_OBJID = #{objId}::NUMERIC + AND TEMPLATE_TYPE = #{template_type} + + + + + DELETE FROM ESTIMATE_TEMPLATE_ITEM + WHERE + TEMPLATE_OBJID IN ( + SELECT OBJID + FROM ESTIMATE_TEMPLATE + WHERE CONTRACT_OBJID = #{objId}::NUMERIC + ) + + + + + INSERT INTO ESTIMATE_TEMPLATE_ITEM ( + TEMPLATE_OBJID, + SEQ, + CATEGORY, + DESCRIPTION, + SPECIFICATION, + QUANTITY, + UNIT, + UNIT_PRICE, + AMOUNT, + NOTE, + REMARK + ) + SELECT + (SELECT OBJID FROM ESTIMATE_TEMPLATE WHERE CONTRACT_OBJID = #{objId}::NUMERIC AND TEMPLATE_TYPE = #{template_type}), + (json_array_elements(#{items_json}::json)->>'seq')::INTEGER, + json_array_elements(#{items_json}::json)->>'category', + json_array_elements(#{items_json}::json)->>'description', + json_array_elements(#{items_json}::json)->>'specification', + json_array_elements(#{items_json}::json)->>'quantity', + json_array_elements(#{items_json}::json)->>'unit', + (json_array_elements(#{items_json}::json)->>'unit_price')::NUMERIC, + (json_array_elements(#{items_json}::json)->>'amount')::NUMERIC, + json_array_elements(#{items_json}::json)->>'note', + json_array_elements(#{items_json}::json)->>'remark' + + + + + UPDATE ESTIMATE_TEMPLATE + SET + CATEGORIES_JSON = #{categories_json}, + CHG_USER_ID = #{chg_user_id}, + CHGDATE = NOW() + WHERE + CONTRACT_OBJID = #{objId}::NUMERIC + AND TEMPLATE_TYPE = #{template_type} + \ No newline at end of file diff --git a/src/com/pms/salesmgmt/service/ContractMgmtService.java b/src/com/pms/salesmgmt/service/ContractMgmtService.java index e683903..ea30f83 100644 --- a/src/com/pms/salesmgmt/service/ContractMgmtService.java +++ b/src/com/pms/salesmgmt/service/ContractMgmtService.java @@ -1208,4 +1208,135 @@ public class ContractMgmtService { return resultMap; } + + /** + * 견적서 템플릿 기본 정보 조회 + * @param paramMap + * @return + */ + public Map getEstimateTemplateInfo(Map paramMap){ + Map resultMap = new HashMap(); + SqlSession sqlSession = null; + + try{ + sqlSession = SqlMapConfig.getInstance().getSqlSession(false); + + String objId = CommonUtils.checkNull(paramMap.get("objId")); + String templateType = CommonUtils.checkNull(paramMap.get("template_type")); + + if(!"".equals(objId) && !"-1".equals(objId)){ + // 견적서 기본 정보 조회 (CONTRACT_MGMT 테이블에서) + resultMap = (Map) sqlSession.selectOne("contractMgmt.getEstimateTemplateInfo", paramMap); + + // 견적서 템플릿 정보 조회 (ESTIMATE_TEMPLATE 테이블에서, 있는 경우) + Map templateInfo = (Map) sqlSession.selectOne("contractMgmt.getEstimateTemplateData", paramMap); + if(templateInfo != null && !templateInfo.isEmpty()){ + resultMap.putAll(templateInfo); + } + } + + }catch(Exception e){ + e.printStackTrace(); + }finally{ + if(sqlSession != null) sqlSession.close(); + } + + return resultMap; + } + + /** + * 견적서 템플릿 품목 정보 조회 + * @param paramMap + * @return + */ + public List getEstimateTemplateItems(Map paramMap){ + List resultList = new ArrayList(); + SqlSession sqlSession = null; + + try{ + sqlSession = SqlMapConfig.getInstance().getSqlSession(false); + + String objId = CommonUtils.checkNull(paramMap.get("objId")); + + if(!"".equals(objId) && !"-1".equals(objId)){ + resultList = sqlSession.selectList("contractMgmt.getEstimateTemplateItems", paramMap); + } + + }catch(Exception e){ + e.printStackTrace(); + }finally{ + if(sqlSession != null) sqlSession.close(); + } + + return resultList; + } + + /** + * 견적서 템플릿 저장 + * @param request + * @param paramMap + * @return + */ + public Map saveEstimateTemplate(HttpServletRequest request, Map paramMap){ + Map resultMap = new HashMap(); + SqlSession sqlSession = null; + + try{ + sqlSession = SqlMapConfig.getInstance().getSqlSession(false); + + PersonBean person = (PersonBean)request.getSession().getAttribute(Constants.PERSON_BEAN); + String userId = person.getUserId(); + + String objId = CommonUtils.checkNull(paramMap.get("objId")); + String templateType = CommonUtils.checkNull(paramMap.get("template_type")); + String itemsJson = CommonUtils.checkNull(paramMap.get("items")); + String categoriesJson = CommonUtils.checkNull(paramMap.get("categories")); + + paramMap.put("writer", userId); + paramMap.put("chg_user_id", userId); + + // 견적서 템플릿 정보 저장/수정 + Map existingTemplate = (Map) sqlSession.selectOne("contractMgmt.getEstimateTemplateData", paramMap); + + if(existingTemplate != null && !existingTemplate.isEmpty()){ + // 기존 데이터 업데이트 + sqlSession.update("contractMgmt.updateEstimateTemplate", paramMap); + } else { + // 신규 데이터 삽입 + sqlSession.insert("contractMgmt.insertEstimateTemplate", paramMap); + } + + // 기존 품목 삭제 + sqlSession.delete("contractMgmt.deleteEstimateTemplateItems", paramMap); + + // 품목 정보 저장 + if(!"".equals(itemsJson)){ + // JSON 파싱 및 저장 로직 (실제 구현 시 JSON 라이브러리 사용) + // 여기서는 간단히 파라미터로 받은 데이터를 저장 + paramMap.put("items_json", itemsJson); + sqlSession.insert("contractMgmt.insertEstimateTemplateItems", paramMap); + } + + // 카테고리 정보 저장 (장비 견적서용) + if(!"".equals(categoriesJson)){ + paramMap.put("categories_json", categoriesJson); + sqlSession.update("contractMgmt.updateEstimateTemplateCategories", paramMap); + } + + sqlSession.commit(); + + resultMap.put("result", "success"); + resultMap.put("msg", Message.SAVE_SUCCESS); + + }catch(Exception e){ + if(sqlSession != null) sqlSession.rollback(); + resultMap.put("result", "error"); + resultMap.put("msg", Message.SAVE_FAILED); + e.printStackTrace(); + }finally{ + if(sqlSession != null) sqlSession.close(); + } + + return resultMap; + } }