인스던트 신청 기능 확장

This commit is contained in:
nhj 2025-12-18 19:49:16 +09:00
parent 5133584f4c
commit c2928d95d1
18 changed files with 1261 additions and 41 deletions

View File

@ -1938,6 +1938,24 @@ public class EgovConfigAppIdGen
.build(); .build();
} }
/** 서비스데스크 인스던트ID Generation Config
* @return
*/
@Bean(destroyMethod = "destroy")
public EgovTableIdGnrServiceImpl egovReqIncientIdGnrService()
{
return new EgovIdGnrBuilder().setDataSource(egovDataSource)
.setEgovIdGnrStrategyImpl(new EgovIdGnrStrategyImpl())
.setBlockSize(10)
.setTable("COMTECOPSEQ")
.setTableName("INCI_REQ_ID")
.setPreFix("INC_REQ_")
.setCipers(6)
.setFillChar('0')
.build();
}

View File

@ -74,6 +74,9 @@ public class ResourceManagerController
log.info("strRole [{}]" , strRole); log.info("strRole [{}]" , strRole);
log.info("순서 [{}]" , strRole.indexOf("ROLE_ADMIN")); log.info("순서 [{}]" , strRole.indexOf("ROLE_ADMIN"));
// 2025.12.08 나혁제 그룹 null인 영우 빈값으로 처리
if(strGrpId == null) strGrpId = "X";
// 본사그룹 혹은 관리자 아닌경우 해당그룹자산만 조회 가능 // 본사그룹 혹은 관리자 아닌경우 해당그룹자산만 조회 가능
if(!strGrpId.equals("GROUP_00000000000000") && strRole.indexOf("ROLE_ADMIN")<0) if(!strGrpId.equals("GROUP_00000000000000") && strRole.indexOf("ROLE_ADMIN")<0)
{ {

View File

@ -621,6 +621,39 @@ public class ReportOtherController
return ResultData.ok(resBody); return ResultData.ok(resBody);
} }
/**
* 월별 보고서 만족도 현황 조회
* @author urp 인프라본부 나혁제
* 작성일 : 2025.12.09
*/
@ResponseBody
@RequestMapping(value="/srm/getReportStsfdgRate.do")
public ResponseEntity<ResultData> getReportStsfdgRate( @RequestBody LinkedHashMap<String, Object> requestMap
, HttpServletRequest request
, HttpServletResponse response
) throws Exception
{
log.info("\n\n\n\n\n");
log.info(">>>>>>>>>>>>>>>>>>>>>>>>> /srm/getReportStsfdgRate.do <<<<<<<<<<<<<<<<<<<<<<<<<");
log.info("getRequestURI [{}]", request.getRequestURI() );
log.info("입력값 확인 requestMap [{}]", requestMap.toString() );
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>();
String strSearchMon = (String)requestMap.get("strSearchMon");
log.info("strSearchMon [{}]", strSearchMon );
// 월별 보고서 현황 조회
List<LinkedHashMap<String, Object>> resultList = reportOtherService.getReportStsfdgRate(strSearchMon);
resBody.put("resultList", resultList );
log.info("<<<<<<<<<<<<<<<<<<<<<<<<< /srm/getReportStsfdgRate.do >>>>>>>>>>>>>>>>>>>>>>>>>");
return ResultData.ok(resBody);
}

View File

@ -270,7 +270,7 @@ public class SvcDeskController
) throws Exception ) throws Exception
{ {
log.info("\n\n\n\n\n"); log.info("\n\n\n\n\n");
log.info(">>>>>>>>>>>>>>>>>>>>>>>>> /rem/addForm.do <<<<<<<<<<<<<<<<<<<<<<<<<"); log.info(">>>>>>>>>>>>>>>>>>>>>>>>> /srm/addIncident.do <<<<<<<<<<<<<<<<<<<<<<<<<");
log.info("getRequestURI [{}]", request.getRequestURI() ); log.info("getRequestURI [{}]", request.getRequestURI() );
log.info("입력값 확인 requestMap [{}]", requestMap.toString() ); log.info("입력값 확인 requestMap [{}]", requestMap.toString() );
@ -299,7 +299,7 @@ public class SvcDeskController
resBody.put("inIncidentSeq" , -1 ); resBody.put("inIncidentSeq" , -1 );
} }
log.info("<<<<<<<<<<<<<<<<<<<<<<<<< /rem/addForm.do >>>>>>>>>>>>>>>>>>>>>>>>>"); log.info("<<<<<<<<<<<<<<<<<<<<<<<<< /srm/addIncident.do >>>>>>>>>>>>>>>>>>>>>>>>>");
return ResultData.ok(resBody); return ResultData.ok(resBody);
} }
@ -654,6 +654,74 @@ public class SvcDeskController
return ResultData.ok(resBody); return ResultData.ok(resBody);
} }
/**
* 월별 SR 처리준수율 조회
* @author urp 인프라본부 나혁제
* 작성일 : 2025.12.09
*/
@ResponseBody
@RequestMapping(value="/srm/getSrProPromiseRate.do")
public ResponseEntity<ResultData> getSrProPromiseRate( @RequestBody LinkedHashMap<String, Object> requestMap
, HttpServletRequest request
, HttpServletResponse response
) throws Exception
{
log.info("\n\n\n\n\n");
log.info(">>>>>>>>>>>>>>>>>>>>>>>>> /srm/getSrProPromiseRate.do <<<<<<<<<<<<<<<<<<<<<<<<<");
log.info("getRequestURI [{}]", request.getRequestURI() );
log.info("입력값 확인 requestMap [{}]", requestMap.toString() );
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>();
String strSearchMon = (String)requestMap.get("strSearchMon");
log.info("strSearchMon [{}]", strSearchMon );
// 월별 SR 처리준수율 조회
List<LinkedHashMap<String, Object>> resultList = svcDeskService.getSrProPromiseRate(strSearchMon);
resBody.put("resultList", resultList );
log.info("<<<<<<<<<<<<<<<<<<<<<<<<< /srm/getSrProPromiseRate.do >>>>>>>>>>>>>>>>>>>>>>>>>");
return ResultData.ok(resBody);
}
/**
* 월별 SR 만족율 조회
* @author urp 인프라본부 나혁제
* 작성일 : 2025.12.09
*/
@ResponseBody
@RequestMapping(value="/srm/getSrStsfdgRate.do")
public ResponseEntity<ResultData> getSrStsfdgRate( @RequestBody LinkedHashMap<String, Object> requestMap
, HttpServletRequest request
, HttpServletResponse response
) throws Exception
{
log.info("\n\n\n\n\n");
log.info(">>>>>>>>>>>>>>>>>>>>>>>>> /srm/getSrStsfgdRate.do <<<<<<<<<<<<<<<<<<<<<<<<<");
log.info("getRequestURI [{}]", request.getRequestURI() );
log.info("입력값 확인 requestMap [{}]", requestMap.toString() );
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>();
String strSearchMon = (String)requestMap.get("strSearchMon");
log.info("strSearchMon [{}]", strSearchMon );
// 월별 SR 만족율 조회
List<LinkedHashMap<String, Object>> resultList = svcDeskService.getSrStsfdgRate(strSearchMon);
resBody.put("resultList", resultList );
log.info("<<<<<<<<<<<<<<<<<<<<<<<<< /srm/getSrStsfgdRate.do >>>>>>>>>>>>>>>>>>>>>>>>>");
return ResultData.ok(resBody);
}

View File

@ -0,0 +1,366 @@
package com.urpsys.itmsapi.srm.controller;
import java.util.LinkedHashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.urpsys.baseapi.common.util.CommonUtil;
import com.urpsys.baseapi.common.util.ResultData;
import com.urpsys.baseapi.domain.TokenInfo;
import com.urpsys.itmsapi.bbs.service.ArticleCommentService;
import com.urpsys.itmsapi.rem.service.AdminServiceService;
import com.urpsys.itmsapi.srm.service.SvcDeskReqService;
import com.urpsys.itmsapi.srm.service.SvcDeskService;
import lombok.extern.slf4j.Slf4j;
/**
* 서비스데스크을 처리하는 API Controller 클래스
* @author URP 인프라본부 나혁제
* @since 2025.12.15
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ---------- -------- ---------------------------
* 2025.12.15 나혁제 최초 생성
*
* </pre>
*/
@Slf4j
@RestController
public class SvcDeskReqController
{
@Autowired
SvcDeskReqService svcDeskReqService; // 서비스데스크 관리 서비스
@Autowired
AdminServiceService adminServiceService; // 서비스정보 관리 서비스
@Autowired
ArticleCommentService articleCommentService; // 2025.04.01 나혁제 댓글 정보
/**
* 서비스데스크 신청 목록 조회
* @author urp 인프라본부 나혁제
* 작성일 : 2025.12.15
*/
@ResponseBody
@RequestMapping(value="/srm/searchReqIncident.do")
public ResponseEntity<ResultData> searchReqIncident( @RequestBody LinkedHashMap<String, Object> requestMap
, HttpServletRequest request
, HttpServletResponse response
) throws Exception
{
log.info("\n\n\n\n\n");
log.info(">>>>>>>>>>>>>>>>>>>>>>>>> /srm/searchReqIncident.do <<<<<<<<<<<<<<<<<<<<<<<<<");
log.info("getRequestURI [{}]", request.getRequestURI() );
log.info("입력값 확인 requestMap [{}]", requestMap.toString() );
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>();
// 토큰정보 획득
TokenInfo tokenInfo = CommonUtil.getAccessTokenInfo(request);
log.info("tokenInfo [{}]", tokenInfo.toString() );
log.info("tokenInfo [{}]", tokenInfo.getAuthorities() );
requestMap.put("reqUser", tokenInfo.getStrESNTL_ID());
// requestMap.put("reqUser", "0");
// 서비스데스크 조회
List<LinkedHashMap<String, Object>> resultList = svcDeskReqService.searchReqIncident(requestMap);
// count 조회
int totCnt = svcDeskReqService.searchReqIncidentCnt(requestMap);
resBody.put("resultList", resultList );
resBody.put("totCnt" , totCnt );
log.info("<<<<<<<<<<<<<<<<<<<<<<<<< /srm/searchReqIncident.do >>>>>>>>>>>>>>>>>>>>>>>>>");
return ResultData.ok(resBody);
}
/**
* 서비스데스크 인스던트 정보 상세조회
* @author urp 인프라본부 나혁제
* 작성일 : 2025.02.13
*/
@ResponseBody
@RequestMapping(value="/srm/getReqIncidentBySeq.do")
public ResponseEntity<ResultData> getReqIncidentBySeq ( @RequestBody LinkedHashMap<String, Object> requestMap
, HttpServletRequest request
, HttpServletResponse response
) throws Exception
{
log.info("\n\n\n\n\n");
log.info(">>>>>>>>>>>>>>>>>>>>>>>>> /srm/getReqIncidentBySeq.do <<<<<<<<<<<<<<<<<<<<<<<<<");
log.info("getRequestURI [{}]", request.getRequestURI() );
log.info("입력값 확인 requestMap [{}]", requestMap.toString() );
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>();
// 토큰정보 획득
TokenInfo tokenInfo = CommonUtil.getAccessTokenInfo(request);
String vcReqIncidentNum = (String)requestMap.get("vcReqIncidentNum");
// 인스턴트 정보 상세조회
LinkedHashMap<String, Object> resultReqIncident = svcDeskReqService.getReqIncidentBySeq(vcReqIncidentNum);
String strRole = tokenInfo.getAuthorities();
String sessUserSeq = tokenInfo.getUniqId();
String inIncidentSeq = CommonUtil.nvl(resultReqIncident.get("inIncidentSeq"));
String inReqUser = CommonUtil.nvl(resultReqIncident.get("inReqUser"));
String vcCompleted = CommonUtil.nvl(resultReqIncident.get("vcCompleted"));
// 수정권한
String strChangeYn = "N";
if(inIncidentSeq.equals("") && inReqUser.equals(sessUserSeq))
{
strChangeYn="Y";
}
// 처리만족도 권한
String strCompletedYn = "N";
if( vcCompleted.equals("처리완료") && inReqUser.equals(sessUserSeq))
{
strCompletedYn="Y";
}
resBody.put("strChangeYn" , strChangeYn ); // String
resBody.put("strCompletedYn" , strCompletedYn ); // int
resBody.put("resultReqIncident" , resultReqIncident ); // Map 기본정보
log.info("<<<<<<<<<<<<<<<<<<<<<<<<< /srm/getReqIncidentBySeq.do >>>>>>>>>>>>>>>>>>>>>>>>>");
return ResultData.ok(resBody);
}
/**
* 서비스데스크 인스던트 신청 등록
* @author urp 인프라본부 나혁제
* 작성일 : 2025.02.13
*/
@ResponseBody
@RequestMapping(value="/srm/addReqIncident.do")
public ResponseEntity<ResultData> addReqIncident( @RequestBody LinkedHashMap<String, Object> requestMap
, HttpServletRequest request
, HttpServletResponse response
) throws Exception
{
log.info("\n\n\n\n\n");
log.info(">>>>>>>>>>>>>>>>>>>>>>>>> /srm/addReqIncident.do <<<<<<<<<<<<<<<<<<<<<<<<<");
log.info("getRequestURI [{}]", request.getRequestURI() );
log.info("입력값 확인 requestMap [{}]", requestMap.toString() );
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>();
LinkedHashMap<String, Object> incidentReqVoMap = (LinkedHashMap<String, Object>)requestMap.get("incidentReqVo" ); // 인스던트 기본정보
List<LinkedHashMap<String, Object>> fileList = (List<LinkedHashMap<String, Object>>)requestMap.get("fileList" ); // 인스던트 첨부파일
// 서비스 인스던트 신청 등록
LinkedHashMap<String, Object> returnMap = svcDeskReqService.addReqIncident(incidentReqVoMap, fileList);
int iSucc = (int)returnMap.get("iSucc");
if(iSucc > 0)
{
resBody.put("resultCd" , "0" );
resBody.put("resultMsg" , "정상적으로 등록되었습니다." );
resBody.put("inIncidentSeq" , returnMap.get("inIncidentSeq") );
}
else
{
resBody.put("resultCd" , "-1" );
resBody.put("resultMsg" , "서비스 등록중 오류가 발생 하였습니다." );
resBody.put("inIncidentSeq" , -1 );
}
log.info("<<<<<<<<<<<<<<<<<<<<<<<<< /srm/addReqIncident.do >>>>>>>>>>>>>>>>>>>>>>>>>");
return ResultData.ok(resBody);
}
/**
* 서비스데스크 인스던트 신청 변경
* @author urp 인프라본부 나혁제
* 작성일 : 2025.12.17
*/
@ResponseBody
@RequestMapping(value="/srm/updateReqIncident.do")
public ResponseEntity<ResultData> updateReqIncident( @RequestBody LinkedHashMap<String, Object> requestMap
, HttpServletRequest request
, HttpServletResponse response
) throws Exception
{
log.info("\n\n\n\n\n");
log.info(">>>>>>>>>>>>>>>>>>>>>>>>> /srm/updateReqIncident.do <<<<<<<<<<<<<<<<<<<<<<<<<");
log.info("getRequestURI [{}]", request.getRequestURI() );
log.info("입력값 확인 requestMap [{}]", requestMap.toString() );
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>();
LinkedHashMap<String, Object> incidentReqVoMap = (LinkedHashMap<String, Object>)requestMap.get("incidentReqVo" ); // 인스던트 정보
List<LinkedHashMap<String, Object>> fileList = (List<LinkedHashMap<String, Object>>)requestMap.get("fileList" ); // 인스던트 첨부파일 정보
// 서비스데스크 인스던트 정보 변경
int iSucc = svcDeskReqService.updateReqIncident(incidentReqVoMap, fileList);
if(iSucc > 0)
{
resBody.put("resultCd" , "0" );
resBody.put("resultMsg", "정상적으로 수정되었습니다." );
}
else
{
resBody.put("resultCd" , "-1" );
resBody.put("resultMsg", "인스던트 신청정보 수정중 오류가 발생 하였습니다." );
}
log.info("<<<<<<<<<<<<<<<<<<<<<<<<< /srm/updateReqIncident.do >>>>>>>>>>>>>>>>>>>>>>>>>");
return ResultData.ok(resBody);
}
/**
* 서비스데스크 인스던트 신청정보 삭제처리
* @author URP 인프라본부 나혁제
* 작성일 : 2025.12.18
*/
@ResponseBody
@RequestMapping(value="/srm/deleteReqIncident.do")
public ResponseEntity<ResultData> deleteReqIncident( @RequestBody LinkedHashMap<String, Object> requestMap
, HttpServletRequest request
, HttpServletResponse response
) throws Exception
{
log.info("\n\n\n\n\n");
log.info(">>>>>>>>>>>>>>>>>>>>>>>>> /srm/deleteReqIncident.do <<<<<<<<<<<<<<<<<<<<<<<<<");
log.info("getRequestURI [{}]", request.getRequestURI() );
log.info("입력값 확인 requestMap [{}]", requestMap.toString() );
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>();
LinkedHashMap<String, Object> incidentReqVoMap = (LinkedHashMap<String, Object>)requestMap.get("incidentReqVo" ); // 인스던트 신청 정보
String vcReqIncidentNum = CommonUtil.nvl(incidentReqVoMap.get("vcReqIncidentNum") );
// 서비스데스크 인스던트 정보 삭제
int iSucc = svcDeskReqService.deleteReqIncident(vcReqIncidentNum);
if(iSucc > 0)
{
resBody.put("resultCd" , "0" );
resBody.put("resultMsg", "정상적으로 삭제되었습니다." );
}
else
{
resBody.put("resultCd" , "-1" );
resBody.put("resultMsg", "인스던트 신청정보 삭제중 오류가 발생 하였습니다." );
}
log.info("<<<<<<<<<<<<<<<<<<<<<<<<< /srm/deleteReqIncident.do >>>>>>>>>>>>>>>>>>>>>>>>>");
return ResultData.ok(resBody);
}
/**
* 인스던트 신청정보 반려 처리
* @author URP 인프라본부 나혁제
* 작성일 : 2025.12.18
*/
@ResponseBody
@RequestMapping(value="/srm/rejectReqIncident.do")
public ResponseEntity<ResultData> rejectReqIncident( @RequestBody LinkedHashMap<String, Object> requestMap
, HttpServletRequest request
, HttpServletResponse response
) throws Exception
{
log.info("\n\n\n\n\n");
log.info(">>>>>>>>>>>>>>>>>>>>>>>>> /srm/rejectReqIncident.do <<<<<<<<<<<<<<<<<<<<<<<<<");
log.info("getRequestURI [{}]", request.getRequestURI() );
log.info("입력값 확인 requestMap [{}]", requestMap.toString() );
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>();
// 서비스데스크 인스던트 승인
int iSucc = svcDeskReqService.updateReqStatusIncident( (String)requestMap.get("vcReqIncidentNum")
, "2"
, (String)requestMap.get("reqRptRejTxComment")
);
if(iSucc > 0)
{
resBody.put("resultCd" , "0" );
resBody.put("resultMsg", "정상적으로 반려 되었습니다." );
}
else
{
resBody.put("resultCd" , "-1" );
resBody.put("resultMsg", "인스던트 신청정보 반려중 오류가 발생 하였습니다." );
}
log.info("<<<<<<<<<<<<<<<<<<<<<<<<< /srm/rejectReqIncident.do >>>>>>>>>>>>>>>>>>>>>>>>>");
return ResultData.ok(resBody);
}
}

View File

@ -114,7 +114,7 @@ public interface ReportOtherDao
// 2025.11.14 나혁제 월별 보고서 현황 // 2025.11.14 나혁제 월별 보고서 현황
public List<LinkedHashMap<String, Object>> getReportMonStatus(String strSearchMon) throws Exception; public List<LinkedHashMap<String, Object>> getReportMonStatus(String strSearchMon) throws Exception;
// 2025.12.09 나혁제 월별 보고서 만족율 현황
public List<LinkedHashMap<String, Object>> getReportStsfdgRate(String strSearchMon) throws Exception;
} }

View File

@ -112,7 +112,11 @@ public interface SvcDeskDao
// 2025.11.13 나혁제 월별 SR 현황 // 2025.11.13 나혁제 월별 SR 현황
public List<LinkedHashMap<String, Object>> getIncidentMonStatus(String strSearchMon) throws Exception; public List<LinkedHashMap<String, Object>> getIncidentMonStatus(String strSearchMon) throws Exception;
// 2025.12.09 나혁제 월별 SR 처리준수율
public List<LinkedHashMap<String, Object>> getSrProPromiseRate(String strSearchMon) throws Exception;
// 2025.12.09 나혁제 월별 SR 만족율
public List<LinkedHashMap<String, Object>> getSrStsfdgRate(String strSearchMon) throws Exception;

View File

@ -0,0 +1,56 @@
package com.urpsys.itmsapi.srm.dao;
import java.util.LinkedHashMap;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
/**
* 서비스 데스크 신청 관리에 대한 DAO 클래스를 정의
*
* @author URP 인프라본부 나혁제
* @since 2025.12.15
* @version 1.0.0
* @see
*
* <pre>
*
* << 개정이력(Modification information) >>
*
* 수정일 수정자 수정내용
* ----------- --------- ------------------------
* 2025.12.15 나혁제 최초작성
*
* </pre>
*/
@Mapper
@Repository
public interface SvcDeskReqDao
{
// 서비스데스크신청 목록 조회
public List<LinkedHashMap<String, Object>> searchReqIncident(LinkedHashMap<String, Object> inMap) throws Exception;
// 서비스데스크신청 목록 건수 조회
public int searchReqIncidentCnt(LinkedHashMap<String, Object> inMap) throws Exception;
// 서비스데스크 인스던트 신청정보 상세조회
public LinkedHashMap<String, Object> getReqIncidentBySeq(String inStr) throws Exception;
// 서비스데스크 인스던트 신청 등록처리
public int addReqIncident(LinkedHashMap<String, Object> inMap) throws Exception;
// 서비스데스크 인스던트 신청 변경처리
public int updateReqIncident(LinkedHashMap<String, Object> inMap) throws Exception;
// 서비스데스크 인스던트 신청 삭제처리
public int deleteReqIncident(String strIn) throws Exception;
// 서비스데스크 인스던트 신청 진행상태변경
public int updateReqStatusIncident(LinkedHashMap<String, Object> inMap) throws Exception;
}

View File

@ -314,7 +314,12 @@ public class ReportOtherService
{ {
return reportOtherDao.getReportMonStatus(strSearchMon); return reportOtherDao.getReportMonStatus(strSearchMon);
} }
// 2025.12.09 나혁제 월별 보고서 만족율 현황
public List<LinkedHashMap<String, Object>> getReportStsfdgRate(String strSearchMon) throws Exception
{
return reportOtherDao.getReportStsfdgRate(strSearchMon);
}

View File

@ -0,0 +1,158 @@
package com.urpsys.itmsapi.srm.service;
import java.util.LinkedHashMap;
import java.util.List;
import javax.annotation.Resource;
import org.egovframe.rte.fdl.idgnr.EgovIdGnrService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.urpsys.baseapi.common.util.CommonUtil;
import com.urpsys.itmsapi.cmm.service.FileManageService;
import com.urpsys.itmsapi.srm.dao.SvcDeskReqDao;
import lombok.extern.slf4j.Slf4j;
/**
* 서비스데스크 신청 정보에 관한 비즈니스 구현 클래스를 정의
*
* @author URP 인프라본부 나혁제
* @since 2025.12.15
* @version 1.0.0
* @see
*
* <pre>
*
* << 개정이력(Modification information) >>
*
* 수정일 수정자 수정내용
* ----------- --------- ------------------------
* 2025.12.15 나혁제 최초작성
*
* </pre>
*/
@Slf4j
@Service
@Transactional
public class SvcDeskReqService
{
@Autowired
SvcDeskReqDao svcDeskReqDao;
@Autowired
FileManageService fileManageService; // 파일처리
/** 인스턴스ID 추출 */
@Resource(name="egovReqIncientIdGnrService")
private EgovIdGnrService egovReqIncientIdGnrService;
// 서비스데스크 목록 조회
public List<LinkedHashMap<String, Object>> searchReqIncident(LinkedHashMap<String, Object> inMap) throws Exception
{
return svcDeskReqDao.searchReqIncident(inMap);
}
// 서비스데스크 목록 조회 건수
public int searchReqIncidentCnt(LinkedHashMap<String, Object> inMap) throws Exception
{
return svcDeskReqDao.searchReqIncidentCnt(inMap);
}
// 서비스데스크 인스던트 정보 상세조회
public LinkedHashMap<String, Object> getReqIncidentBySeq(String inStr) throws Exception
{
return svcDeskReqDao.getReqIncidentBySeq(inStr);
}
// 서비스데스크 인스던트 신청 등록처리
public LinkedHashMap<String, Object> addReqIncident( LinkedHashMap<String, Object> incidentReqMap
, List<LinkedHashMap<String, Object>> fileList
) throws Exception
{
String strReqIncidentNum = generateReqIncidentId();
incidentReqMap.put("vcReqIncidentNum", strReqIncidentNum);
LinkedHashMap<String, Object> returnMap = new LinkedHashMap<String, Object>();
int iSucc = svcDeskReqDao.addReqIncident(incidentReqMap);
// 파일정보저장
if( fileList != null
&& fileList.size()>0)
{
fileManageService.insertFileInfs(fileList);
}
returnMap.put("vcReqIncidentNum" , incidentReqMap.get("vcReqIncidentNum"));
returnMap.put("iSucc" , iSucc );
return returnMap;
}
// 서비스데스크 인스던트 변경처리
public int updateReqIncident( LinkedHashMap<String, Object> incidentMap
, List<LinkedHashMap<String, Object>> fileList
) throws Exception
{
int iSucc = svcDeskReqDao.updateReqIncident(incidentMap);
// 파일정보저장
if( fileList != null && fileList.size()>0)
{
if(incidentMap.get("atchFileInUpGb").equals("U"))
{
// 상세 정보만 입력
fileManageService.updateFileInfs(fileList);
}
else
{
// 마스터+상세 정보 입력 처리
fileManageService.insertFileInfs(fileList);
}
}
return iSucc;
}
// 서비스데스크 인스던트 신청 삭제처리
public int deleteReqIncident(String strIn) throws Exception
{
int iSucc = svcDeskReqDao.deleteReqIncident(strIn);
return iSucc;
}
public int updateReqStatusIncident( String strReqIncidentNum
, String strReqStatus
, String strRptRejTxComment) throws Exception
{
LinkedHashMap<String, Object> inMap = new LinkedHashMap<String, Object>();
inMap.put("vcReqIncidentNum" , strReqIncidentNum);
inMap.put("inReqStatus" , strReqStatus );
inMap.put("reqRptRejTxComment" , strRptRejTxComment );
return svcDeskReqDao.updateReqStatusIncident(inMap);
}
private String generateReqIncidentId() throws Exception
{
String strIncidentId = CommonUtil.getKST("YY-MMdd-") + egovReqIncientIdGnrService.getNextStringId();
return strIncidentId;
}
}

View File

@ -1,5 +1,6 @@
package com.urpsys.itmsapi.srm.service; package com.urpsys.itmsapi.srm.service;
import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
@ -47,13 +48,18 @@ public class SvcDeskService
HomeService homeService; HomeService homeService;
@Autowired @Autowired
FileManageService fileManageService; // 파일처리 FileManageService fileManageService; // 2025.12.17 나혁제 파일처리
@Autowired
SvcDeskReqService svcDeskReqService; // 2025.12.17 나혁제 인스던트 신청 정보
/** 인스턴스ID 추출 */ /** 인스턴스ID 추출 */
@Resource(name="egovIncientIdGnrService") @Resource(name="egovIncientIdGnrService")
private EgovIdGnrService egovIncientIdGnrService; private EgovIdGnrService egovIncientIdGnrService;
/** fileID 추출 */
@Resource(name = "egovFileIdGnrService")
private EgovIdGnrService egovFileIdGnrService;
// 서비스데스크 목록 조회 // 서비스데스크 목록 조회
@ -146,11 +152,82 @@ public class SvcDeskService
} }
} }
boolean bReceiptFile = false;
// 파일정보저장 // 파일정보저장
if( fileList != null if( fileList != null
&& fileList.size()>0) && fileList.size()>0)
{ {
fileManageService.insertFileInfs(fileList); fileManageService.insertFileInfs(fileList);
bReceiptFile=true;
}
LinkedHashMap<String, Object> inMap = new LinkedHashMap<String, Object>();
// 2025.12.17 나혁제 신청파일이 있는경우 새로 새성
if(!incidentMap.get("reqAtchFileId").equals(""))
{
inMap = new LinkedHashMap<String, Object>();
inMap.put("atchFileId", incidentMap.get("reqAtchFileId"));
// 신청시 파일 정보을 추출
List<LinkedHashMap<String, Object>> reqFileList = fileManageService.selectFileInfs(inMap);
String strNewAtchFileId = "";
// 접수시 파일정보가 있는경우 저장
if(bReceiptFile)
{
strNewAtchFileId = (String)fileList.get(0).get("atchFileId");
}
// 접수시 파일정보가 없는경우 file ID 새롭게 부여
else
{
strNewAtchFileId = egovFileIdGnrService.getNextStringId();
}
if (reqFileList != null )
{
List<LinkedHashMap<String, Object>> reqInFileList = new ArrayList();
for(int i=0; i < reqFileList.size(); i++)
{
LinkedHashMap<String, Object> fileMap = reqFileList.get(i);
fileMap.put("atchFileId", strNewAtchFileId);
if(bReceiptFile)
{
fileMap.put("fileSn", fileManageService.getMaxFileSN(fileList.get(0)));
}
else
{
fileMap.put("fileSn", i);
}
reqInFileList.add(fileMap);
}
// 접수시 파일이 있는경우 update
if(reqFileList.size()>0)
{
if(bReceiptFile)
{
fileManageService.updateFileInfs(reqInFileList);
}
else
{
fileManageService.insertFileInfs(reqInFileList);
}
}
}
}
// 2025.12.17 나혁제 신청정보가 았는경우 진행상태 갱신
if(!incidentMap.get("vcReqIncidentNum").equals(""))
{
svcDeskReqService.updateReqStatusIncident( (String)incidentMap.get("vcReqIncidentNum")
, "0"
, (String)incidentMap.get("reqRptRejTxComment") );
} }
// 승인요청 처리 // 승인요청 처리
@ -241,6 +318,16 @@ public class SvcDeskService
// 인스던트 삭제처리 // 인스던트 삭제처리
public int deleteIncident(int inInt) throws Exception public int deleteIncident(int inInt) throws Exception
{ {
LinkedHashMap<String, Object> incidentMap = svcDeskDao.getIncidentBySeq(inInt);
// 2025.12.17 나혁제 신청정보가 았는경우 진행상태 갱신
if(!incidentMap.get("vcReqIncidentNum").equals(""))
{
svcDeskReqService.updateReqStatusIncident( (String)incidentMap.get("vcReqIncidentNum")
, "-1"
, "" );
}
// 인스던트 기본 삭제 // 인스던트 기본 삭제
int iSucc = svcDeskDao.deleteIncident(inInt); int iSucc = svcDeskDao.deleteIncident(inInt);
@ -259,13 +346,40 @@ public class SvcDeskService
// 서비스데스크 인스던트 승인요청 // 서비스데스크 인스던트 승인요청
public int procApprovalIncident(LinkedHashMap<String, Object> inMap) throws Exception public int procApprovalIncident(LinkedHashMap<String, Object> inMap) throws Exception
{ {
return svcDeskDao.procApprovalIncident(inMap); int iSucc = svcDeskDao.procApprovalIncident(inMap);
// 2025.12.17 나혁제 신청정보가 았는경우 진행상태 갱신
String strIncidentSeq = inMap.get("inIncidentSeq")+"";
int inIncidentSeq = CommonUtil.stoi(strIncidentSeq);
LinkedHashMap<String, Object> incidentMap = svcDeskDao.getIncidentBySeq(inIncidentSeq);
if(incidentMap.get("vcReqIncidentNum") !=null && !incidentMap.get("vcReqIncidentNum").equals(""))
{
// 진행중
svcDeskReqService.updateReqStatusIncident( (String)incidentMap.get("vcReqIncidentNum")
, "1"
, "" );
}
return iSucc;
} }
// 인스던트 처리완료 처리 // 인스던트 처리완료 처리
public int completedIncident(LinkedHashMap<String, Object> inMap) throws Exception public int completedIncident(LinkedHashMap<String, Object> inMap) throws Exception
{ {
return svcDeskDao.completedIncident(inMap); int iSucc = svcDeskDao.completedIncident(inMap);
// 2025.12.17 나혁제 신청정보가 았는경우 진행상태 갱신
int inIncidentSeq = CommonUtil.stoi((String)inMap.get("inIncidentSeq"));
LinkedHashMap<String, Object> incidentMap = svcDeskDao.getIncidentBySeq(inIncidentSeq);
if(incidentMap.get("vcReqIncidentNum") !=null && !incidentMap.get("vcReqIncidentNum").equals(""))
{
// 처리완료
svcDeskReqService.updateReqStatusIncident( (String)incidentMap.get("vcReqIncidentNum")
, "3"
, "" );
}
return iSucc;
} }
// 인스던트 승인처리 // 인스던트 승인처리
@ -277,7 +391,20 @@ public class SvcDeskService
// 인스던트 반려처리 // 인스던트 반려처리
public int rejectIncident(LinkedHashMap<String, Object> inMap) throws Exception public int rejectIncident(LinkedHashMap<String, Object> inMap) throws Exception
{ {
return svcDeskDao.rejectIncident(inMap); int iSucc = svcDeskDao.rejectIncident(inMap);
// 2025.12.17 나혁제 신청정보가 았는경우 진행상태 갱신
int inIncidentSeq = CommonUtil.stoi((String)inMap.get("inIncidentSeq"));
LinkedHashMap<String, Object> incidentMap = svcDeskDao.getIncidentBySeq(inIncidentSeq);
if(incidentMap.get("vcReqIncidentNum") !=null && !incidentMap.get("vcReqIncidentNum").equals(""))
{
// 반려처리
svcDeskReqService.updateReqStatusIncident( (String)incidentMap.get("vcReqIncidentNum")
, "2"
, "" );
}
return iSucc;
} }
@ -294,6 +421,20 @@ public class SvcDeskService
{ {
return svcDeskDao.getIncidentMonStatus(strSearchMon); return svcDeskDao.getIncidentMonStatus(strSearchMon);
} }
// 2025.12.09 나혁제 월별 SR 처리준수율
public List<LinkedHashMap<String, Object>> getSrProPromiseRate(String strSearchMon) throws Exception
{
return svcDeskDao.getSrProPromiseRate(strSearchMon);
}
// 2025.12.09 나혁제 월별 SR 만족율
public List<LinkedHashMap<String, Object>> getSrStsfdgRate(String strSearchMon) throws Exception
{
return svcDeskDao.getSrStsfdgRate(strSearchMon);
}

View File

@ -46,8 +46,8 @@ public class PrsnlPortletManageController
/** /**
* 개인화메뉴 목록을 조회한다. * 개인화메뉴 목록을 조회한다.
* @author 정보기술연구소 권오 * @author urp 인프라본부 나혁
* 작성일 : 2022.12.19 * 작성일 : 2025.03.06
*/ */
@RequestMapping(value = "/sys/selectPortletManageList.do") @RequestMapping(value = "/sys/selectPortletManageList.do")
@ResponseBody @ResponseBody
@ -79,8 +79,8 @@ public class PrsnlPortletManageController
/** /**
* 개인화메뉴를 등록한다. * 개인화메뉴를 등록한다.
* @author 정보기술연구소 권오 * @author urp 인프라본부 나혁
* 작성일 : 2022.12.19 * 작성일 : 2025.03.06
*/ */
@RequestMapping(value = "/sys/insertPrsnlPortlet.do") @RequestMapping(value = "/sys/insertPrsnlPortlet.do")
@ResponseBody @ResponseBody
@ -108,8 +108,8 @@ public class PrsnlPortletManageController
/** /**
* 개인화메뉴 정보를 조회한다. * 개인화메뉴 정보를 조회한다.
* @author 정보기술연구소 권오 * @author urp 인프라본부 나혁
* 작성일 : 2022.12.19 * 작성일 : 2025.03.06
*/ */
@RequestMapping(value = "/sys/inqirePrsnlPortlet.do") @RequestMapping(value = "/sys/inqirePrsnlPortlet.do")
@ResponseBody @ResponseBody
@ -137,8 +137,8 @@ public class PrsnlPortletManageController
/** /**
* 개인화메뉴 정보를 수정한다. * 개인화메뉴 정보를 수정한다.
* @author 정보기술연구소 권오 * @author urp 인프라본부 나혁
* 작성일 : 2022.12.19 * 작성일 : 2025.03.06
*/ */
@RequestMapping(value = "/sys/updatePrsnlPortlet.do") @RequestMapping(value = "/sys/updatePrsnlPortlet.do")
@ResponseBody @ResponseBody
@ -166,8 +166,8 @@ public class PrsnlPortletManageController
/** /**
* 개인화메뉴 정보를 삭제한다. * 개인화메뉴 정보를 삭제한다.
* @author 정보기술연구소 권오 * @author urp 인프라본부 나혁
* 작성일 : 2022.12.19 * 작성일 : 2025.03.06
*/ */
@RequestMapping(value = "/sys/deletePrsnlPortlet.do") @RequestMapping(value = "/sys/deletePrsnlPortlet.do")
@ResponseBody @ResponseBody
@ -195,8 +195,8 @@ public class PrsnlPortletManageController
/** /**
* 개인화메뉴 정보를 멀티 삭제한다. * 개인화메뉴 정보를 멀티 삭제한다.
* @author 정보기술연구소 권오 * @author urp 인프라본부 나혁
* 작성일 : 2022.12.19 * 작성일 : 2025.03.06
*/ */
@RequestMapping(value = "/sys/deletePrsnlPortletMulti.do") @RequestMapping(value = "/sys/deletePrsnlPortletMulti.do")
@ResponseBody @ResponseBody
@ -223,4 +223,42 @@ public class PrsnlPortletManageController
return ResultData.ok(resBody); return ResultData.ok(resBody);
} }
/**
* 개인화메뉴 정보를 멀티 상태변경 처리한다.
* @author urp 인프라본부 나혁제
* 작성일 : 2025.12.08
*/
@RequestMapping(value = "/sys/updateStatusPrsnlPortletMulti.do")
@ResponseBody
public ResponseEntity<ResultData> updateStatusPrsnlPortletMulti(@RequestBody LinkedHashMap<String, Object> requestMap
, HttpServletRequest request
, HttpServletResponse response) throws Exception
{
log.info("\n\n\n\n\n");
log.info(">>>>>>>>>>>>>>>>>>>>>>>>> /sys/updateStatusPrsnlPortletMulti.do <<<<<<<<<<<<<<<<<<<<<<<<<");
log.info("getRequestURI [{}]", request.getRequestURI());
log.info("입력값 확인 requestMap [{}]", requestMap.toString());
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>();
String checkedPrsnlIdForDel = (String) requestMap.get("checkedPrsnlIdForDel");
String checkUseAts = (String) requestMap.get("checkUseAts");
int iResult = prsnlPortletManageService.updateStatusPrsnlPortletMulti(checkedPrsnlIdForDel, checkUseAts);
resBody.put("iResult", iResult);
log.info("<<<<<<<<<<<<<<<<<<<<<<<<< /sys/updateStatusPrsnlPortletMulti.do >>>>>>>>>>>>>>>>>>>>>>>>>");
return ResultData.ok(resBody);
}
} }

View File

@ -48,5 +48,8 @@ public interface PrsnlPortletManageDao
/** 개인화메뉴 삭제 */ /** 개인화메뉴 삭제 */
int deletePrsnlPortlet(LinkedHashMap<String, Object> requestMap); int deletePrsnlPortlet(LinkedHashMap<String, Object> requestMap);
/** 개인화메뉴 상태변경 */
int updateStatusPrsnlPortlet(LinkedHashMap<String, Object> requestMap);
} }

View File

@ -106,5 +106,28 @@ public class PrsnlPortletManageService
return iProcResult; return iProcResult;
} }
/** 2025.12.08 나혁제 */
/** 개인화메뉴 멀티 상태변경 */
public int updateStatusPrsnlPortletMulti(String checkedPrsnlIdForDel, String checkUseAts)
{
LinkedHashMap<String, Object> inMap = new LinkedHashMap<String, Object>();
String[] srUupdPrsnlId = checkedPrsnlIdForDel.split(",");
String[] srUseAt = checkUseAts.split(",");
int iProcResult = 0;
for (int i=0; i<srUupdPrsnlId.length ; i++)
{
inMap.put("prsnlId", srUupdPrsnlId[i]);
inMap.put("useAt" , srUseAt[i]);
iProcResult += prsnlPortletManageDAO.updateStatusPrsnlPortlet(inMap);
}
return iProcResult;
}
} }

View File

@ -690,8 +690,28 @@
</select> </select>
<!-- 2025.12.09 나혁제 월별 보고서 만족율 데이터 -->
<select id="getReportStsfdgRate" parameterType="String" resultType="java.util.LinkedHashMap">
/* ReportOtherDao.getReportStsfdgRate */
SELECT VC_STSFDG AS category
, COUNT(1) AS value
FROM (
SELECT CASE WHEN B.STSFDG_CD = '1' THEN '매우불만족'
WHEN B.STSFDG_CD = '2' THEN '불만족'
WHEN B.STSFDG_CD = '3' THEN '보통'
WHEN B.STSFDG_CD = '4' THEN '만족'
WHEN B.STSFDG_CD = '5' THEN '매우만족'
END VC_STSFDG
FROM CM_REPORT A
, CM_REPORT_APPROVAL B
WHERE 1=1
AND DATE_FORMAT(A.DT_LAST_UPDATE, '%Y-%m') = #{inSearchMon}
AND A.IN_REPORT_SEQ = B.IN_REPORT_SEQ
AND B.STSFDG_CD IS NOT NULL
) SUB
GROUP BY VC_STSFDG
</select>

View File

@ -41,6 +41,7 @@
<if test="edate != null and edate!=''"><![CDATA[ AND A.IN_RECEIPT_TIMESTAMP <= UNIX_TIMESTAMP("${edate}")]]></if> <if test="edate != null and edate!=''"><![CDATA[ AND A.IN_RECEIPT_TIMESTAMP <= UNIX_TIMESTAMP("${edate}")]]></if>
</sql> </sql>
<!-- 2025.12.18 나혁제 VC_REQ_INCIDENT_NUM 신청번호 추가 -->
<resultMap type="java.util.LinkedHashMap" id="incident"> <resultMap type="java.util.LinkedHashMap" id="incident">
<result property="inIncidentSeq" column="IN_INCIDENT_SEQ"/> <result property="inIncidentSeq" column="IN_INCIDENT_SEQ"/>
<result property="inIncidentStatus" column="IN_INCIDENT_STATUS"/> <result property="inIncidentStatus" column="IN_INCIDENT_STATUS"/>
@ -73,6 +74,7 @@
<result property="vcRequestUser" column="VC_REQUEST_USER"/> <result property="vcRequestUser" column="VC_REQUEST_USER"/>
<result property="dtServiceStartDatetime" column="DT_SERVICE_START_DATETIME"/> <result property="dtServiceStartDatetime" column="DT_SERVICE_START_DATETIME"/>
<result property="atchFileId" column="ATCH_FILE_ID"/> <result property="atchFileId" column="ATCH_FILE_ID"/>
<result property="vcReqIncidentNum" column="VC_REQ_INCIDENT_NUM"/>
</resultMap> </resultMap>
<resultMap type="java.util.LinkedHashMap" id="selectVo"> <resultMap type="java.util.LinkedHashMap" id="selectVo">
@ -157,6 +159,7 @@
, A.VC_REQ_APPROVAL_USER , A.VC_REQ_APPROVAL_USER
, A.IN_DIFFICULTY , A.IN_DIFFICULTY
, A.IN_SATISFACTION , A.IN_SATISFACTION
, A.VC_REQ_INCIDENT_NUM
FROM CM_INCIDENT A FROM CM_INCIDENT A
, CM_SERVICE B , CM_SERVICE B
WHERE A.IN_SERVICE_CODE=B.IN_SERVICE_CODE WHERE A.IN_SERVICE_CODE=B.IN_SERVICE_CODE
@ -262,6 +265,7 @@
, A.IN_DIFFICULTY , A.IN_DIFFICULTY
, A.IN_SATISFACTION , A.IN_SATISFACTION
, A.ATCH_FILE_ID , A.ATCH_FILE_ID
, A.VC_REQ_INCIDENT_NUM
FROM CM_INCIDENT A FROM CM_INCIDENT A
, CM_SERVICE B , CM_SERVICE B
WHERE A.IN_SERVICE_CODE=B.IN_SERVICE_CODE WHERE A.IN_SERVICE_CODE=B.IN_SERVICE_CODE
@ -353,7 +357,7 @@
<!-- 2025.12.17 나혁제 신청정보 추가 VC_REQ_INCIDENT_NUM -->
<insert id="addIncident" parameterType="java.util.HashMap" useGeneratedKeys="true" keyProperty="inIncidentSeq"> <insert id="addIncident" parameterType="java.util.HashMap" useGeneratedKeys="true" keyProperty="inIncidentSeq">
/* SvcDeskDao.addIncident */ /* SvcDeskDao.addIncident */
INSERT INTO CM_INCIDENT INSERT INTO CM_INCIDENT
@ -377,6 +381,7 @@
, IN_REG_USER , IN_REG_USER
, VC_REG_USER , VC_REG_USER
, ATCH_FILE_ID , ATCH_FILE_ID
, VC_REQ_INCIDENT_NUM
) )
VALUES VALUES
( (
@ -399,6 +404,7 @@
, #{inRegUser} , #{inRegUser}
, "${vcRegUser}" , "${vcRegUser}"
, #{atchFileId} , #{atchFileId}
, #{vcReqIncidentNum}
) )
</insert> </insert>
@ -709,7 +715,49 @@
ORDER BY STATUS_1 ORDER BY STATUS_1
</select> </select>
<!-- 2025.12.09 나혁제 월별 SR 현황 데이터 -->
<select id="getSrProPromiseRate" parameterType="String" resultType="java.util.LinkedHashMap">
/* SvcDeskDao.getSrProPromiseRate */
<![CDATA[
SELECT DELAY_STATUS AS category
, COUNT(1) AS value
FROM (
SELECT CASE WHEN IN_COMPLETED = 0 THEN '미처리'
WHEN IN_COMPLETED = 1 AND DT_REQ_DATETIME > DT_COMPLETE_DATETIME THEN '준수'
WHEN IN_COMPLETED = 1 AND DT_REQ_DATETIME < DT_COMPLETE_DATETIME THEN ''
END AS DELAY_STATUS
, DT_REQ_DATETIME
, DT_COMPLETE_DATETIME
, VC_INCIDENT_NUM
FROM CM_INCIDENT A
WHERE DATE_FORMAT(DT_RECEIPT_DATETIME, '%Y-%m') = #{inSearchMon}
AND IN_INCIDENT_STATUS !='2'
) A
GROUP BY DELAY_STATUS
]]>
</select>
<!-- 2025.12.09 나혁제 월별 SR 만족율 데이터 -->
<select id="getSrStsfdgRate" parameterType="String" resultType="java.util.LinkedHashMap">
/* SvcDeskDao.getSrStsfgdRate */
SELECT VC_STSFDG AS category
, COUNT(1) AS value
FROM (
SELECT CASE WHEN B.STSFDG_CD = '1' THEN '매우불만족'
WHEN B.STSFDG_CD = '2' THEN '불만족'
WHEN B.STSFDG_CD = '3' THEN '보통'
WHEN B.STSFDG_CD = '4' THEN '만족'
WHEN B.STSFDG_CD = '5' THEN '매우만족'
END VC_STSFDG
FROM CM_INCIDENT A
, CM_INCIDENT_APPROVAL B
WHERE 1=1
AND DATE_FORMAT(A.DT_RECEIPT_DATETIME, '%Y-%m') = #{inSearchMon}
AND A.IN_INCIDENT_SEQ = B.IN_INCIDENT_SEQ
AND B.STSFDG_CD IS NOT NULL
) SUB
GROUP BY VC_STSFDG
</select>

View File

@ -0,0 +1,216 @@
<?xml version="1.0" encoding="UTF-8"?><!--Converted at: Wed May 11 15:49:39 KST 2016-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.urpsys.itmsapi.srm.dao.SvcDeskReqDao">
<sql id="paging">
<if test="recordCountPerPage != null and firstIndex != null">
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
</if>
</sql>
<resultMap type="java.util.LinkedHashMap" id="reqIncident">
<result column="VC_REQ_INCIDENT_NUM" property="vcReqIncidentNum" />
<result column="VC_INCIDENT_NUM" property="vcIncidentNum" />
<result column="VC_SERVICE_NAME" property="vcServiceName" />
<result column="IN_SERVICE_CODE" property="inServiceCode" />
<result column="VC_INCIDENT_TITLE" property="vcIncidentTitle" />
<result column="TX_INCIDENT_BODY" property="txIncidentBody" />
<result column="IN_REQ_USER" property="inReqUser" />
<result column="VC_REQ_USER" property="vcReqUser" />
<result column="IN_CHARGE_USER" property="inChargeUser" />
<result column="VC_CHARGE_USER" property="vcChargeUser" />
<result column="DT_REQ_DATETIME" property="dtReqDateTime" />
<result column="DT_COMPLETE_REQ_DATETIME" property="dtCompleteReqDateTime" />
<result column="ATCH_FILE_ID" property="atchFileId" />
<result column="VC_COMPLETED" property="vcCompleted" />
<result column="VC_INCIDENT_STATUS" property="vcIncodentStatus" />
<result column="IN_REQ_STATUS" property="inReqStatus" />
<result column="VC_REQ_STATUS" property="vcReqStatus" />
<result column="PROC_STSFDG" property="procStsfdg" />
<result column="PROC_OPIN" property="procOpin" />
<result column="RCVD_OPIN" property="rcvdOpin" />
<result column="VC_REG_USER" property="vcRegUser" />
<result column="DT_RECEIPT_DATETIME" property="dtReceiptDatetime" />
<result column="VC_DEV_USER" property="vcDevUser" />
<result column="DT_COMPLETE_DATETIME" property="dtCompleteDatetime" />
<result column="TX_COMPLETED_COMMENT" property="txCompletedComment" />
<result column="IN_INCIDENT_SEQ" property="inIncidentSeq" />
</resultMap>
<select id="searchReqIncident" parameterType="java.util.HashMap" resultMap="reqIncident">
/* SvcReqDeskDao.searchReqIncident */
SELECT A.VC_REQ_INCIDENT_NUM
, B.VC_INCIDENT_NUM
, C.VC_SERVICE_NAME
, A.IN_SERVICE_CODE
, C.VC_SERVICE_NAME
, A.VC_INCIDENT_TITLE
, A.TX_INCIDENT_BODY
, A.IN_REQ_USER
, A.VC_REQ_USER
, A.IN_CHARGE_USER
, A.VC_CHARGE_USER
, DATE_FORMAT(A.DT_REQ_DATETIME, '%Y-%m-%d %H:%i') AS DT_REQ_DATETIME
, DATE_FORMAT(A.DT_COMPLETE_REQ_DATETIME, '%Y-%m-%d %H:%i') AS DT_COMPLETE_REQ_DATETIME
, A.ATCH_FILE_ID
, IF( B.IN_COMPLETED=0, '처리중'
, IF(B.IN_COMPLETED=1 ,'처리완료', '미처리')) AS VC_COMPLETED
, IF( B.IN_INCIDENT_STATUS=0, "접수"
, IF(B.IN_INCIDENT_STATUS=1, "승인중"
, IF(B.IN_INCIDENT_STATUS=2, "반려"
, IF(B.IN_INCIDENT_STATUS=3, "승인완료"
, "")))) AS VC_INCIDENT_STATUS
, A.IN_REQ_STATUS
, IF( A.IN_REQ_STATUS=-1, "신청"
, IF(A.IN_REQ_STATUS=0, "접수"
, IF(A.IN_REQ_STATUS=1, "처리중"
, IF(A.IN_REQ_STATUS=2, "반려"
, IF(A.IN_REQ_STATUS=3, "처리완료"
, ""))))) AS VC_REQ_STATUS
, A.PROC_STSFDG
, A.PROC_OPIN
, A.RCVD_OPIN
FROM CM_INCIDENT_APL_INFO A
LEFT OUTER JOIN CM_INCIDENT B ON A.VC_REQ_INCIDENT_NUM = B.VC_REQ_INCIDENT_NUM
LEFT OUTER JOIN CM_SERVICE C ON A.IN_SERVICE_CODE = C.IN_SERVICE_CODE
<include refid="paging" />
</select>
<select id="searchReqIncidentCnt" parameterType="java.util.HashMap" resultType="int">
/* SvcReqDeskDao.searchReqIncidentCnt */
SELECT COUNT(1)
FROM CM_INCIDENT_APL_INFO A
</select>
<select id="getReqIncidentBySeq" parameterType="String" resultMap="reqIncident">
/* SvcDeskDao.getReqIncidentBySeq */
SELECT A.VC_REQ_INCIDENT_NUM
, B.VC_INCIDENT_NUM
, C.VC_SERVICE_NAME
, A.IN_SERVICE_CODE
, C.VC_SERVICE_NAME
, A.VC_INCIDENT_TITLE
, A.TX_INCIDENT_BODY
, A.IN_REQ_USER
, A.VC_REQ_USER
, A.IN_CHARGE_USER
, A.VC_CHARGE_USER
, DATE_FORMAT(A.DT_REQ_DATETIME, '%Y-%m-%d %H:%i') AS DT_REQ_DATETIME
, DATE_FORMAT(A.DT_COMPLETE_REQ_DATETIME, '%Y-%m-%d %H:%i') AS DT_COMPLETE_REQ_DATETIME
, A.ATCH_FILE_ID
, IF( B.IN_COMPLETED=0, '처리중'
, IF(B.IN_COMPLETED=1 ,'처리완료', '미처리')) AS VC_COMPLETED
, IF( B.IN_INCIDENT_STATUS=0, "접수"
, IF(B.IN_INCIDENT_STATUS=1, "승인중"
, IF(B.IN_INCIDENT_STATUS=2, "반려"
, IF(B.IN_INCIDENT_STATUS=3, "승인완료"
, "신청")))) AS VC_INCIDENT_STATUS
, B.VC_REG_USER
, DATE_FORMAT(B.DT_RECEIPT_DATETIME, '%Y-%m-%d %H:%i') AS DT_RECEIPT_DATETIME
, B.VC_DEV_USER
, DATE_FORMAT(B.DT_COMPLETE_DATETIME, '%Y-%m-%d %H:%i') AS DT_COMPLETE_DATETIME
, B.TX_COMPLETED_COMMENT
, B.IN_INCIDENT_SEQ
, A.IN_REQ_STATUS
, IF( A.IN_REQ_STATUS=-1, "신청"
, IF(A.IN_REQ_STATUS=0, "접수"
, IF(A.IN_REQ_STATUS=1, "처리중"
, IF(A.IN_REQ_STATUS=2, "반려"
, IF(A.IN_REQ_STATUS=3, "처리완료"
, ""))))) AS VC_REQ_STATUS
, A.PROC_STSFDG
, A.PROC_OPIN
, A.RCVD_OPIN
FROM CM_INCIDENT_APL_INFO A
LEFT OUTER JOIN CM_INCIDENT B ON A.VC_REQ_INCIDENT_NUM = B.VC_REQ_INCIDENT_NUM
LEFT OUTER JOIN CM_SERVICE C ON A.IN_SERVICE_CODE = C.IN_SERVICE_CODE
WHERE 1=1
AND A.VC_REQ_INCIDENT_NUM=#{value}
</select>
<insert id="addReqIncident" parameterType="java.util.HashMap" >
/* SvcReqDeskDao.addReqIncident */
INSERT INTO CM_INCIDENT_APL_INFO
(
VC_REQ_INCIDENT_NUM
, IN_SERVICE_CODE
, VC_INCIDENT_TITLE
, TX_INCIDENT_BODY
, IN_REQ_USER
, VC_REQ_USER
, IN_CHARGE_USER
, VC_CHARGE_USER
, DT_REQ_DATETIME
, DT_COMPLETE_REQ_DATETIME
, ATCH_FILE_ID
, IN_REQ_STATUS
)
VALUES
(
#{vcReqIncidentNum}
, #{inServiceCode}
, #{vcIncidentTitle}
, #{txIncidentBody}
, #{inReqUser}
, #{vcReqUser}
, #{inChargeUser}
, #{vcChargeUser}
, #{dtReqDateTime}
, #{dtCompleteReqDateTime}
, #{atchFileId}
, -1
)
</insert>
<update id="updateReqIncident" parameterType="java.util.HashMap">
/* SvcReqDeskDao.updateReqIncident */
UPDATE CM_INCIDENT_APL_INFO
SET
IN_SERVICE_CODE = #{inServiceCode}
, VC_INCIDENT_TITLE = #{vcIncidentTitle}
, TX_INCIDENT_BODY = #{txIncidentBody}
, IN_REQ_USER = #{inReqUser}
, VC_REQ_USER = #{vcReqUser}
, IN_CHARGE_USER = #{inChargeUser}
, VC_CHARGE_USER = #{vcChargeUser}
, DT_REQ_DATETIME = #{dtReqDateTime}
, DT_COMPLETE_REQ_DATETIME = #{dtCompleteReqDateTime}
, ATCH_FILE_ID = #{atchFileId}
WHERE VC_REQ_INCIDENT_NUM=#{vcReqIncidentNum}
</update>
<delete id="deleteReqIncident" parameterType="String">
DELETE FROM CM_INCIDENT_APL_INFO
WHERE VC_REQ_INCIDENT_NUM=#{value}
</delete>
<update id="updateReqStatusIncident" parameterType="java.util.HashMap">
/* SvcReqDeskDao.updateReqStatusIncident */
UPDATE CM_INCIDENT_APL_INFO
SET
IN_REQ_STATUS = #{inReqStatus}
<if test="reqRptRejTxComment !=null and reqRptRejTxComment !=''">
, RCVD_OPIN = #{reqRptRejTxComment}
</if>
WHERE VC_REQ_INCIDENT_NUM=#{vcReqIncidentNum}
</update>
</mapper>

View File

@ -7,19 +7,21 @@
<!-- 개인화메뉴 목록 조회 --> <!-- 개인화메뉴 목록 조회 -->
<select id="selectPrsnlPortletList" parameterType="java.util.LinkedHashMap" resultType="java.util.LinkedHashMap"> <select id="selectPrsnlPortletList" parameterType="java.util.LinkedHashMap" resultType="java.util.LinkedHashMap">
SELECT PORTLET_ID AS prsnlId /* PrsnlPortletManageDao.selectPrsnlPortletList */
, PORTLET_NM AS prsnlNm SELECT PORTLET_ID AS prsnlId
, PORTLET_KR_NM AS prsnlKoreanNm , PORTLET_NM AS prsnlNm
, PORTLET_URL AS url , PORTLET_KR_NM AS prsnlKoreanNm
, FRST_REGR_ID AS frstRegisterId , PORTLET_URL AS url
, FRST_REG_DTM AS frstRegisterPnttm , FRST_REGR_ID AS frstRegisterId
, LAST_UPDR_ID AS lastUpdusrId , FRST_REG_DTM AS frstRegisterPnttm
, LAST_UPD_DTM AS lastUpdusrPnttm , LAST_UPDR_ID AS lastUpdusrId
, PORTLET_WDTH_LENG AS portletWidth , LAST_UPD_DTM AS lastUpdusrPnttm
, PORTLET_HGHT_LENG AS portletHeight , PORTLET_WDTH_LENG AS portletWidth
, PORTLET_IMG_PATH AS portletImgPath , PORTLET_HGHT_LENG AS portletHeight
, PORTLET_IMG_NM AS portletImgNm , PORTLET_IMG_PATH AS portletImgPath
, PORTLET_IMG_ORGL_NM AS portletImgOriNm , PORTLET_IMG_NM AS portletImgNm
, PORTLET_IMG_ORGL_NM AS portletImgOriNm
, USE_AT AS useAt
FROM FROM
TB_PORTLET_MNG TB_PORTLET_MNG
<if test="searchWrd != null and searchWrd != ''"> <if test="searchWrd != null and searchWrd != ''">
@ -40,6 +42,7 @@
<!-- 개인화메뉴 목록 조회 Count --> <!-- 개인화메뉴 목록 조회 Count -->
<select id="selectPrsnlPortletListCnt" parameterType="java.util.LinkedHashMap" resultType="java.lang.Integer"> <select id="selectPrsnlPortletListCnt" parameterType="java.util.LinkedHashMap" resultType="java.lang.Integer">
/* PrsnlPortletManageDao.selectPrsnlPortletListCnt */
SELECT SELECT
COUNT(*) COUNT(*)
FROM FROM
@ -55,6 +58,7 @@
<!-- 개인화메뉴 상세조회 --> <!-- 개인화메뉴 상세조회 -->
<select id="selectPrsnlPortlet" parameterType="java.util.LinkedHashMap" resultType="java.util.LinkedHashMap"> <select id="selectPrsnlPortlet" parameterType="java.util.LinkedHashMap" resultType="java.util.LinkedHashMap">
/* PrsnlPortletManageDao.selectPrsnlPortlet */
SELECT PORTLET_ID AS prsnlId SELECT PORTLET_ID AS prsnlId
, PORTLET_NM AS prsnlNm , PORTLET_NM AS prsnlNm
, PORTLET_KR_NM AS prsnlKoreanNm , PORTLET_KR_NM AS prsnlKoreanNm
@ -78,6 +82,7 @@
<!-- 개인화메뉴 등록 --> <!-- 개인화메뉴 등록 -->
<insert id="insertPrsnlPortlet" parameterType="java.util.LinkedHashMap"> <insert id="insertPrsnlPortlet" parameterType="java.util.LinkedHashMap">
/* PrsnlPortletManageDao.insertPrsnlPortlet */
INSERT INTO INSERT INTO
TB_PORTLET_MNG TB_PORTLET_MNG
( (
@ -94,6 +99,7 @@
, PORTLET_IMG_PATH , PORTLET_IMG_PATH
, PORTLET_IMG_NM , PORTLET_IMG_NM
, PORTLET_IMG_ORGL_NM , PORTLET_IMG_ORGL_NM
, USE_AT
) )
VALUES VALUES
( (
@ -109,7 +115,8 @@
, #{portletHeight} , #{portletHeight}
, #{portletImgPath} , #{portletImgPath}
, #{portletImgNm} , #{portletImgNm}
, #{portletImgOriNm} , #{portletImgOriNm}
, 'Y'
) )
</insert> </insert>
@ -117,6 +124,7 @@
<!-- 개인화메뉴 수정 --> <!-- 개인화메뉴 수정 -->
<update id="updatePrsnlPortlet" parameterType="java.util.LinkedHashMap"> <update id="updatePrsnlPortlet" parameterType="java.util.LinkedHashMap">
/* PrsnlPortletManageDao.updatePrsnlPortlet */
UPDATE UPDATE
TB_PORTLET_MNG TB_PORTLET_MNG
SET SET
@ -139,11 +147,23 @@
<!-- 개인화메뉴 삭제 --> <!-- 개인화메뉴 삭제 -->
<delete id="deletePrsnlPortlet" parameterType="java.util.LinkedHashMap"> <delete id="deletePrsnlPortlet" parameterType="java.util.LinkedHashMap">
/* PrsnlPortletManageDao.deletePrsnlPortlet */
DELETE FROM DELETE FROM
TB_PORTLET_MNG TB_PORTLET_MNG
WHERE WHERE
PORTLET_ID = #{prsnlId} PORTLET_ID = #{prsnlId}
</delete> </delete>
<!-- 2025.12.08 나혁제 개인화메뉴 상태변경처리 -->
<delete id="updateStatusPrsnlPortlet" parameterType="java.util.LinkedHashMap">
/* PrsnlPortletManageDao.updateStatusPrsnlPortlet */
UPDATE TB_PORTLET_MNG
SET USE_AT = #{useAt}
WHERE PORTLET_ID = #{prsnlId}
</delete>
</mapper> </mapper>