장비견적서 템플릿 수정, pdf 변환 메일 발송

This commit is contained in:
2025-11-11 14:05:06 +09:00
parent a9836b599b
commit 7ae57f9719
6 changed files with 1674 additions and 312 deletions

View File

@@ -1950,22 +1950,56 @@ public class ContractMgmtController {
try{
Map estimate = null;
List<Map> items = new ArrayList<Map>();
Map<String, String> code_map = new HashMap<String, String>();
// templateObjId가 있으면 기존 견적서 조회 (견적현황에서 클릭한 경우)
if(!"".equals(templateObjId) && !"-1".equals(templateObjId)){
paramMap.put("templateObjId", templateObjId);
estimate = contractMgmtService.getEstimateTemplateByObjId(paramMap);
items = contractMgmtService.getEstimateTemplateItemsByTemplateObjId(paramMap);
// Map 키를 대문자로 변환
if(estimate != null) {
estimate = CommonUtils.toUpperCaseMapKey(estimate);
}
if(items != null && items.size() > 0) {
items = CommonUtils.keyChangeUpperList((ArrayList)items);
}
}
// objId만 있으면 CONTRACT 정보로 견적서 신규 작성
else if(!"".equals(objId) && !"-1".equals(objId)){
// 기존 견적서 데이터 조회
// 계약 정보 조회
estimate = contractMgmtService.getEstimateTemplateInfo(paramMap);
items = contractMgmtService.getEstimateTemplateItems(paramMap);
// 계약 품목 조회 (CONTRACT_ITEM에서)
paramMap.put("contractObjId", objId);
items = contractMgmtService.getContractItems(paramMap);
// Map 키를 대문자로 변환
if(estimate != null) {
estimate = CommonUtils.toUpperCaseMapKey(estimate);
}
if(items != null && items.size() > 0) {
items = CommonUtils.keyChangeUpperList((ArrayList)items);
}
}
request.setAttribute("estimate", estimate);
request.setAttribute("items", items);
// 고객사 코드맵 추가
String customer_cd = "";
if(estimate != null) {
// templateObjId가 있으면 RECIPIENT 사용 (저장된 견적서)
if(!"".equals(templateObjId) && !"-1".equals(templateObjId)) {
if(estimate.get("RECIPIENT") != null) {
customer_cd = CommonUtils.nullToEmpty((String)estimate.get("RECIPIENT"));
}
}
// 신규 작성이면 CUSTOMER_OBJID 사용
else if(estimate.get("CUSTOMER_OBJID") != null) {
customer_cd = CommonUtils.nullToEmpty((String)estimate.get("CUSTOMER_OBJID"));
}
}
code_map.put("customer_cd", commonService.bizMakeOptionList("", customer_cd, "common.getsupplyselect"));
request.setAttribute("estimate", estimate);
request.setAttribute("items", items);
request.setAttribute("code_map", code_map);
} catch (Exception e) {
e.printStackTrace();
@@ -2040,7 +2074,7 @@ public class ContractMgmtController {
}
/**
* 견적서 저장 (AJAX)
* 일반 견적서 저장 (AJAX) - Template 1
* @param request
* @param paramMap
* @return
@@ -2055,7 +2089,7 @@ public class ContractMgmtController {
paramMap.put("userId", person.getUserId());
// 합계 정보 로그 (디버깅용)
System.out.println("견적서 저장 - 합계: " + paramMap.get("total_amount") + ", 원화환산: " + paramMap.get("total_amount_krw"));
System.out.println("일반 견적서 저장 - 합계: " + paramMap.get("total_amount") + ", 원화환산: " + paramMap.get("total_amount_krw"));
contractMgmtService.saveEstimateTemplate(request, paramMap);
@@ -2070,6 +2104,36 @@ public class ContractMgmtController {
return resultMap;
}
/**
* 장비 견적서 저장 (AJAX) - Template 2
* @param request
* @param paramMap
* @return
*/
@ResponseBody
@RequestMapping(value="/contractMgmt/saveEstimate2.do", method=RequestMethod.POST)
public Map saveEstimate2(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map resultMap = new HashMap();
try {
PersonBean person = (PersonBean)request.getSession().getAttribute(Constants.PERSON_BEAN);
paramMap.put("userId", person.getUserId());
System.out.println("장비 견적서 저장");
contractMgmtService.saveEstimateTemplate2(request, paramMap);
resultMap.put("result", "success");
} catch (Exception e) {
e.printStackTrace();
resultMap.put("result", "error");
resultMap.put("message", e.getMessage());
}
return resultMap;
}
/**
* PDF 청크 업로드 (AJAX)
* @param request