fix: 견적서 저장/조회 버그 수정 및 여러 차수 작성 기능 추가

- 견적현황 undefined 문제 해결 (EST_STATUS 필드 추가)
- 견적서 목록 팝업 대문자 키 이름 강제
- 견적서 데이터 로드 엔드포인트 추가 (getEstimateTemplateDataByObjId)
- 한 영업번호에 여러 견적서 작성 가능하도록 수정
- PostgreSQL 타입 캐스팅 에러 수정
- 품목 저장 시 서브쿼리 다중 행 에러 수정
This commit is contained in:
2025-10-16 10:27:23 +09:00
parent b0383d3479
commit 81f071cc34
6 changed files with 794 additions and 164 deletions

View File

@@ -1774,13 +1774,20 @@ public class ContractMgmtController {
@RequestMapping("/contractMgmt/estimateTemplate1.do")
public String estimateTemplate1(HttpSession session, HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
String objId = CommonUtils.checkNull(paramMap.get("objId"));
String templateObjId = CommonUtils.checkNull(paramMap.get("templateObjId"));
try{
Map estimate = null;
List<Map> items = new ArrayList<Map>();
if(!"".equals(objId) && !"-1".equals(objId)){
// 기존 견적서 데이터 조회
// templateObjId가 있으면 기존 견적서 조회 (견적현황에서 클릭한 경우)
if(!"".equals(templateObjId) && !"-1".equals(templateObjId)){
paramMap.put("templateObjId", templateObjId);
estimate = contractMgmtService.getEstimateTemplateByObjId(paramMap);
items = contractMgmtService.getEstimateTemplateItemsByTemplateObjId(paramMap);
}
// objId만 있으면 CONTRACT 정보로 견적서 신규 작성
else if(!"".equals(objId) && !"-1".equals(objId)){
estimate = contractMgmtService.getEstimateTemplateInfo(paramMap);
items = contractMgmtService.getEstimateTemplateItems(paramMap);
}
@@ -1805,12 +1812,20 @@ public class ContractMgmtController {
@RequestMapping("/contractMgmt/estimateTemplate2.do")
public String estimateTemplate2(HttpSession session, HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
String objId = CommonUtils.checkNull(paramMap.get("objId"));
String templateObjId = CommonUtils.checkNull(paramMap.get("templateObjId"));
try{
Map estimate = null;
List<Map> items = new ArrayList<Map>();
if(!"".equals(objId) && !"-1".equals(objId)){
// templateObjId가 있으면 기존 견적서 조회 (견적현황에서 클릭한 경우)
if(!"".equals(templateObjId) && !"-1".equals(templateObjId)){
paramMap.put("templateObjId", templateObjId);
estimate = contractMgmtService.getEstimateTemplateByObjId(paramMap);
items = contractMgmtService.getEstimateTemplateItemsByTemplateObjId(paramMap);
}
// objId만 있으면 CONTRACT 정보로 견적서 신규 작성
else if(!"".equals(objId) && !"-1".equals(objId)){
// 기존 견적서 데이터 조회
estimate = contractMgmtService.getEstimateTemplateInfo(paramMap);
items = contractMgmtService.getEstimateTemplateItems(paramMap);
@@ -1854,6 +1869,43 @@ public class ContractMgmtController {
return resultMap;
}
/**
* 견적서 목록 조회 (AJAX)
*/
@ResponseBody
@RequestMapping(value="/contractMgmt/getEstimateTemplateList.do", method=RequestMethod.POST)
public Map getEstimateTemplateList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
return contractMgmtService.getEstimateTemplateList(request, paramMap);
}
/**
* 견적서 템플릿 데이터 조회 (OBJID로) (AJAX)
*/
@ResponseBody
@RequestMapping(value="/contractMgmt/getEstimateTemplateDataByObjId.do", method=RequestMethod.POST)
public Map getEstimateTemplateDataByObjId(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map resultMap = new HashMap();
try {
// 템플릿 기본 정보 조회
Map template = contractMgmtService.getEstimateTemplateByObjId(paramMap);
// 템플릿 품목 조회
List<Map> items = contractMgmtService.getEstimateTemplateItemsByTemplateObjId(paramMap);
resultMap.put("result", "success");
resultMap.put("template", template);
resultMap.put("items", items);
} catch (Exception e) {
e.printStackTrace();
resultMap.put("result", "error");
resultMap.put("message", e.getMessage());
}
return resultMap;
}
/**
* 견적서 저장 (AJAX)
* @param request