조민수 조민수 03-27
Merge remote-tracking branch 'origin/master'
@59d138216f636a78954b3ca7c431e38fbea40147
src/main/java/egovframework/let/itsm/sla/service/SlaAutItemVO.java
--- src/main/java/egovframework/let/itsm/sla/service/SlaAutItemVO.java
+++ src/main/java/egovframework/let/itsm/sla/service/SlaAutItemVO.java
@@ -23,8 +23,15 @@
 	
 	private List<String> slaItemIds ;  //'첨부파일 리스트
 	
+	private String atchFileIdDown = "";  //'파일ID',
 	
 	
+	public String getAtchFileIdDown() {
+		return atchFileIdDown;
+	}
+	public void setAtchFileIdDown(String atchFileIdDown) {
+		this.atchFileIdDown = atchFileIdDown;
+	}
 	public String getCmmCodeId() {
 		return cmmCodeId;
 	}
src/main/java/egovframework/let/itsm/sla/service/SlaMngService.java
--- src/main/java/egovframework/let/itsm/sla/service/SlaMngService.java
+++ src/main/java/egovframework/let/itsm/sla/service/SlaMngService.java
@@ -69,6 +69,9 @@
 	// SLA 파일 업로드 삭제
 	void deleteSlaAutitemInfo(String id)  throws Exception;
 
+	
+	void moveSlaitem(SlaAutItemVO slaAutItemVO) throws Exception;
+	
 	// 통계 - SLA
 	List<EgovMap> selectListSla(KPostStatsVO kPostStatsVO)  throws Exception;
 	
src/main/java/egovframework/let/itsm/sla/service/impl/SlaMngDAO.java
--- src/main/java/egovframework/let/itsm/sla/service/impl/SlaMngDAO.java
+++ src/main/java/egovframework/let/itsm/sla/service/impl/SlaMngDAO.java
@@ -97,7 +97,11 @@
 	public void deleteSlaAutItem(String slaItemId) throws Exception {
 		delete("slaMngDAO.deleteSlaAutItem", slaItemId);
 	}
-
+	
+	public void moveSlaitem(SlaAutItemVO slaAutItemVO) throws Exception{
+		update("slaMngDAO.moveSlaitem", slaAutItemVO);
+		
+	}
 
 	//통계 - SLA
 	@SuppressWarnings("unchecked")
src/main/java/egovframework/let/itsm/sla/service/impl/SlaMngServiceImpl.java
--- src/main/java/egovframework/let/itsm/sla/service/impl/SlaMngServiceImpl.java
+++ src/main/java/egovframework/let/itsm/sla/service/impl/SlaMngServiceImpl.java
@@ -9,14 +9,12 @@
 
 import egovframework.com.cmm.service.FileVO;
 import egovframework.com.cmm.service.impl.FileManageDAO;
-import egovframework.let.itsm.nis.service.NisMnglVO;
 import egovframework.let.itsm.sla.service.SlaAutItemVO;
 import egovframework.let.itsm.sla.service.SlaAutscitecVO;
 import egovframework.let.itsm.sla.service.SlaEvitVO;
 import egovframework.let.itsm.sla.service.SlaMngService;
 import egovframework.let.sts.com.KPostStatsVO;
 import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
-import egovframework.rte.fdl.cmmn.exception.FdlException;
 import egovframework.rte.fdl.idgnr.EgovIdGnrService;
 import egovframework.rte.psl.dataaccess.util.EgovMap;
 
@@ -126,10 +124,12 @@
 			   default:
 				   
 			}
-			
+			/*
+			 * 2026 03 12  수정요청
 			String slaEvitId =  idgenItsmSlaEvitId.getNextStringId();
 			slaEvitVO.setSlaEvitId(slaEvitId);
 			slaMngDAO.insertSlaEvalItemInfo(slaEvitVO);
+			*/
 		}
 	}
 	
@@ -163,12 +163,14 @@
 	@Override
 	public void updateSlaEvInfo(SlaEvitVO slaEvitVO) throws Exception {
 		
-		for(SlaEvitVO tempSlaEvitVO : slaEvitVO.getSlaEvitVOList()) {
 		
+		if(slaEvitVO.getSlaEvitVOList() != null) {
+			for(SlaEvitVO tempSlaEvitVO : slaEvitVO.getSlaEvitVOList()) {
+				
 //			slaMngDAO.updateSlaEvInfo(tempSlaEvitVO);
-			tempSlaEvitVO.setImsi(slaEvitVO.getImsi());
-			slaMngDAO.updateSlaEvalListInfo(tempSlaEvitVO);
-			
+				tempSlaEvitVO.setImsi(slaEvitVO.getImsi());
+				slaMngDAO.updateSlaEvalListInfo(tempSlaEvitVO);
+			}
 		}
 	}
 	
@@ -220,9 +222,15 @@
 		slaMngDAO.deleteSlaAutItem(id);
 	}
 	
+	@Override
+	public void moveSlaitem(SlaAutItemVO slaAutItemVO) throws Exception {
+		slaMngDAO.moveSlaitem(slaAutItemVO);
+	}
+	
 	//통계 - SLA
 	@Override
 	public List<EgovMap> selectListSla(KPostStatsVO kPostStatsVO) throws Exception {
 		return slaMngDAO.selectListSla(kPostStatsVO);
 	}
+
 }
src/main/java/egovframework/let/itsm/sla/web/SlaManageController.java
--- src/main/java/egovframework/let/itsm/sla/web/SlaManageController.java
+++ src/main/java/egovframework/let/itsm/sla/web/SlaManageController.java
@@ -1,9 +1,12 @@
 package egovframework.let.itsm.sla.web;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -27,6 +30,7 @@
 import egovframework.com.cmm.web.EgovFileDownloadController;
 import egovframework.let.itsm.audit.service.AuditItemVO;
 import egovframework.let.itsm.audit.service.AuditVO;
+import egovframework.let.itsm.bizCntrt.service.BizItemVO;
 import egovframework.let.itsm.company.service.CompanyFileVO;
 import egovframework.let.itsm.company.service.CompanyMngService;
 import egovframework.let.itsm.company.service.CompanyMngVO;
@@ -527,4 +531,32 @@
 		} 
 		return modelAndView;
 	}
+	@RequestMapping(value = "/uss/itsm/sla/SlaMngFileMoveAjax.do")
+	public ModelAndView SlaMngFileMoveAjax(@RequestParam Map<String, Object> commandMap
+			, SlaAutItemVO slaAutItemVO
+			, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+    	ModelAndView modelAndView = new ModelAndView();
+    	modelAndView.setViewName("jsonView");
+    	
+    	//파일ID를 리스트에 담기
+		List<String> atchFileIdList = new ArrayList<String>();
+		//split을 이용해 아이디를 각자 배열에 담기
+		String[] splitStr =slaAutItemVO.getAtchFileIdDown().split(",");
+		//리스트에 아이디 담기
+		for(int i=0; i<splitStr.length; i++) {
+			atchFileIdList.add(splitStr[i]);
+		}
+		
+		SlaAutItemVO updateSlaItemVO = new SlaAutItemVO();
+		for(String atchFileId : atchFileIdList) {
+			updateSlaItemVO.setAtchFileId(atchFileId);
+			updateSlaItemVO.setSlaAttfile1dep((String)commandMap.get("cmmCodeSelect"));
+			updateSlaItemVO.setSlaAttfile2dep((String)commandMap.get("cmmCodeSelect_detail"));
+			slaMngService.moveSlaitem(updateSlaItemVO);
+		}
+		modelAndView.addObject("result", "success");
+    	
+    	return modelAndView;
+	}
 }
src/main/resources/egovframework/sqlmap/let/sla/SlaManage_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/sla/SlaManage_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/sla/SlaManage_SQL_Mysql.xml
@@ -505,6 +505,13 @@
 			SLA_ITEM_ID  = #slaItemId#
  	</delete>
  	
+ 	<update id="slaMngDAO.moveSlaitem"  parameterClass="slaAutItemVO">
+      	UPDATE ITSM_SLA_AUTITEM
+		SET  
+            SLA_ATTFILE_1DEP = #slaAttfile1dep#, 
+            SLA_ATTFILE_2DEP = #slaAttfile2dep#
+        WHERE SLA_ATTCH_ID  = #atchFileId# 
+    </update>
  	
 	<!-- 통계 - SLA -->
 	<select id="slaMngDAO.selectListSla" parameterClass="kPostStatsVO" resultClass="egovMap">
src/main/webapp/WEB-INF/jsp/uss/itsm/bizCntrt/BizFileUpload.jsp
--- src/main/webapp/WEB-INF/jsp/uss/itsm/bizCntrt/BizFileUpload.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/itsm/bizCntrt/BizFileUpload.jsp
@@ -295,6 +295,7 @@
 	$('.upload_box_img').show();
     $('.upload_box_text').show();
     $('.uploaded_obj').hide();
+    close();
 }	
 
 </script>
src/main/webapp/WEB-INF/jsp/uss/itsm/company/CompanyMngListView.jsp
--- src/main/webapp/WEB-INF/jsp/uss/itsm/company/CompanyMngListView.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/itsm/company/CompanyMngListView.jsp
@@ -89,7 +89,7 @@
 	 					}
 	 					if($(this).attr('name') == 'companyPartnerCrnum'){
 	 						opener.document.getElementById("partnerCrnum").value = $.trim($(this).text());
-	 						opener.parent.bizCmpnyNoChg();
+	 						//opener.parent.bizCmpnyNoChg();
 	 					}
 	 					if($(this).attr('name') == 'companyPartnerMaster'){
 	 						opener.document.getElementById("partnerMaster").value = $.trim($(this).text());
src/main/webapp/WEB-INF/jsp/uss/itsm/sla/SlaMngFileUpload.jsp
--- src/main/webapp/WEB-INF/jsp/uss/itsm/sla/SlaMngFileUpload.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/itsm/sla/SlaMngFileUpload.jsp
@@ -292,6 +292,7 @@
 	$('.upload_box_img').show();
     $('.upload_box_text').show();
     $('.uploaded_obj').hide();
+    close();
 }	
 
 </script>
src/main/webapp/WEB-INF/jsp/uss/itsm/sla/SlaMngView.jsp
--- src/main/webapp/WEB-INF/jsp/uss/itsm/sla/SlaMngView.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/itsm/sla/SlaMngView.jsp
@@ -185,35 +185,8 @@
 		
 		
 		$("#cmmCodeSelect").change(function(){
-			var cmmCodeId = this.value; 
-			$.ajax({
-			    type: "POST",
-			    url: "/uss/itsm/sla/SlaMngSelectCmmCodeAjax.do",
-			    data:{  "cmmCodeId": cmmCodeId},
-			    dataType:'jsonp',
-			    cache: false,
-			    async: false,
-			    success: function (returnData, status) {
-			    	if(status == 'success'){
-			        	if(returnData.result == 'fail'){
-			        		alert("생성에 실패하였습니다.");
-			        	}else if(returnData.result == 'auth_fail'){
-			        		alert("세션이 종료되었습니다.");
-			        	}else if(returnData.result =='success'){
-			        		
-			        		var codeList = returnData.cmmDetailCodeList;
-			        		for(var i=0; i < codeList.length ; i++){
-			        			alert(codeList[i].code);
-			        		}
-			        	}
-			        }else{
-			        	alert("생성에 실패하였습니다.");
-			        }
-			    },
-			    error: function (e) {
-			        alert("생성에 실패하였습니다.");
-			    }
-			});
+			$('#cmmCodeSelect_detail').html($('#span_option_'+this.value).html().trim());
+			$("#cmmCodeSelect_detail").niceSelect('update'); 
 		});
 		
 		init_function();
@@ -413,12 +386,12 @@
 			$(object).css("background" , "url(/direct/img/remove_enroll_popup_file.png) no-repeat center center") ;
 			$(object).attr("buttontype" , "minus");
 			$('.ul_top_'+codeId).find('input[type=button]').css("background" , "url(/direct/img/remove_enroll_popup_file.png) no-repeat center center") ;
-			$('.ul_'+codeId).show();	
+			$('.ul_all_'+codeId).show();	
 		}else{
 			$(object).css("background" , "url(/direct/img/add_enroll_popup_file.png) no-repeat center center") ;
 			$(object).attr("buttontype" , "plus");
 			$('.ul_top_'+codeId).find('input[type=button]').css("background" , "url(/direct/img/add_enroll_popup_file.png) no-repeat center center") ;
-			$('.ul_'+codeId).hide();	
+			$('.ul_all_'+codeId).hide();	
 		}
 	}
 	
@@ -595,7 +568,7 @@
 	/* 첨부파일 상단 갯수 표시 */
 	function set_topfile_count(){
 		$('.th_top').each(function(){
-		   	$('#th_top_count_'+$(this).attr('value')).text($('.ul_'+$(this).attr('value')).length);
+			$('#th_top_count_'+$(this).attr('value')).text($('.ul_all_'+$(this).attr('value')).length);
 		});
 	}
 	/* 첨부파일 이미지 세팅 */
@@ -992,12 +965,21 @@
 		
 		
 		
-		
 		var trSize =$("#slaEvitList_tr > tr ").size();
+		// 260311 ITSM 수정요청 (시작)
+		/*
 		if(trSize <= 6){
 			alert("최소한의 평가지표 입니다.");
 			return;
 		}
+		*/
+		if(trSize <= 0){
+			alert("삭제할 평가지표가 없습니다.");
+			return;
+		}
+
+		
+		// 260311 ITSM 수정요청 (끝)
 		
 		var slaEvitId = $("#slaEvitList_tr:first > tr:first").attr('class');
 		
@@ -1027,6 +1009,70 @@
 		    }
 		});
 	}
+
+
+	function file_move(){
+		var checkbox_check = false;
+		$('input:checkbox[name="atchFileId"]').each(function(){
+			if($(this).is(":checked")){
+				checkbox_check = true;
+			}
+		});
+		if(!checkbox_check){
+			alert("선택된 항목이 없습니다.");
+			return false;
+		}
+		
+		if(!confirm("선택된 첨부파일이 이동처리 됩니다. 이동 처리하시겠습니까?")){	
+			return;
+		}
+		
+		//항목이동    		
+		var checkboxId = Array();
+		var checkboxCnt = 0;
+		var checkbox = $(".checkboxClass");
+		
+		for(i=0; i<checkbox.length; i++){
+			if(checkbox[i].checked == true){
+				checkboxId[checkboxCnt] = checkbox[i].value;
+				checkboxCnt++;
+			}}
+		var frm = document.writeForm;
+		frm.atchFileIdDown.value = checkboxId;
+		var data = new FormData(frm);
+		
+		$.ajax({
+		       type: "POST",
+		       url: "/uss/itsm/sla/SlaMngFileMoveAjax.do",
+		       async:false,
+		       data: data,
+		       dataType:'jsonp',
+		       processData: false,
+		       contentType: false,
+		       cache: false,
+		       
+		       timeout: 600000,
+		       success: function (returnData, status) {
+		           if(status == 'success'){
+			           	if(returnData.result == 'fail'){
+			           		alert("등록에 실패하였습니다.");
+			           	}else if(returnData.result == 'auth_fail'){
+			           		alert("세션이 종료되었습니다.");
+			           	}else if(returnData.result =='success'){
+							alert("등록되었습니다.");
+							self_reload();
+			           	}
+		           }else{
+		           	alert("등록에 실패하였습니다.");
+		           }
+		       },
+		       error: function (e) {
+		           console.log("ERROR : ", e);
+		           alert("등록에 실패하였습니다.");
+		       }
+		   });
+		
+	}	
 </script>
 </head>
 <body>
@@ -1052,7 +1098,7 @@
 		<input type="hidden" name="companyFileYN" id="companyFileYN" value="${companyFileYN}" />
 		<input type="hidden" name="slaCompanyId" value="" />
 		<input type="hidden" name="screenType" value="sla" />
-		
+		<input type="hidden" name="atchFileIdDown"/>
 		
     	<div class="enroll_popup" style="height:783px;">
 	       	<div class="enroll_popup_title">
@@ -1181,12 +1227,19 @@
 	                                <option value="${result.codeId}">${result.codeIdNm}</option>
                                 </c:forEach>
 							</select>
-							<select name="" id="" class="file_move_submenu">
-								<option value="">각 대메뉴의</option>
-								<option value="">하위메뉴들</option>
+							<select name="cmmCodeSelect_detail" id="cmmCodeSelect_detail" class="file_move_submenu">
+								<c:forEach var="codeResult" items="${cmmCodeList}" varStatus="status" end="0">
+			             		<c:forEach var="detailResult" items="${cmmDetailCodeList}" varStatus="status">
+			             			<c:if test="${codeResult.codeId eq detailResult.codeId}">
+			             				<option value="<c:out value='${detailResult.code}'/>"><c:out value='${detailResult.codeNm}'/></option>
+			             			</c:if>
+			             		</c:forEach>
+			             	</c:forEach>
 							</select>
-							<input type="button" class="file_move_btn" value="이동">
+							<input type="button" class="file_move_btn" value="이동" onclick="file_move(); return false;">
+							<!--  
 							<input type="button" class="file_move_reset_btn" value="되돌리기">
+							-->
 						</div>
 		            </div>
 		            <div class="enroll_input_file_list_wrap sla_file_wrap">
@@ -1216,18 +1269,18 @@
 		                                            <input type="checkbox" id="main_file_title_${detailResult.code}" onclick="all_check_li(this, '${detailResult.code}');">
 		                                            <label for="main_file_title_${detailResult.code}"></label>
 		                                            	${detailResult.codeNm}
-		                                            <input type="button" buttonType="plus" onclick="unfold(this , '${detailResult.codeId}'); return false;">
+		                                            <input type="button" buttonType="plus" onclick="unfold(this , '${detailResult.code}'); return false;">
 		                                            <c:forEach var="fileResult" items="${slaMngFileList}" varStatus="status">
 		                                            	<c:if test="${detailResult.codeId eq fileResult.slaAttfile1dep and detailResult.code eq fileResult.slaAttfile2dep}">
-		                                            		<ul class="ul_each_${fileResult.slaItemId} ul_${detailResult.codeId}" style="display:none;">
+		                                            		<ul class="ul_each_${fileResult.slaItemId} ul_all_${detailResult.codeId} ul_${detailResult.code}" style="display:none;">
 				                                                <li>
 				                                                    <input type="checkbox" name="atchFileId" value="${fileResult.atchFileId}" id="file_sort_each_${fileResult.slaItemId}" class="checkboxClass">
 				                                                    <label for="file_sort_each_${fileResult.slaItemId}"></label>
 				                                                    <img src="/direct/img/enroll_pdf_file.png" alt="">
 					                                                    <div class="eva_file_name">
-					                                                  	  	<a href="javascript:downItsmFile('<c:out value="${fileResult.atchFileId}"/>','0')">
 																				${fileResult.orignlFileNm}
-																			</a>
+					                                                  	  	<%-- <a href="javascript:downItsmFile('<c:out value="${fileResult.atchFileId}"/>','0')">
+																			</a> --%>
 					                                                    </div>
 				                                                    <img src="/direct/img/add_enroll_popup_delect.png" alt="" onclick="delete_item_file('${fileResult.slaItemId}' , 'ul_each_');">
 				                                                </li>
@@ -1311,12 +1364,12 @@
 											<c:forEach var="slaEvitListInfo" items="${slaEvitList}" varStatus="status">
 												<tr class="${slaEvitListInfo.slaEvitId}">
 													<%-- <td>
-														<input name="slaEvitVOList[${status.index}].slaEvitId" type="hidden" value="${slaEvitListInfo.slaEvitId}">
 														<input type="checkbox" value="${slaEvitListInfo.slaEvitId}" id="${slaEvitListInfo.slaEvitId}">
 														<label for="${slaEvitListInfo.slaEvitId}"></label>
 													</td> --%>
 													<td>
-													<c:out value="${table_index}"/>
+														<c:out value="${table_index}"/>
+														<input name="slaEvitVOList[${status.index}].slaEvitId" type="hidden" value="${slaEvitListInfo.slaEvitId}">
 													</td>
 													<td>
 														<input name="slaEvitVOList[${status.index}].slaEvitTiem" type="text" class="eva_item" value="${slaEvitListInfo.slaEvitTiem}"
@@ -1529,16 +1582,27 @@
 	        </div>
 	        
 	    </div>
+	    
+	    <!-- selectbox 미리만들기 -->
+<c:forEach var="codeResult" items="${cmmCodeList}" varStatus="status">
+	<span id="span_option_${codeResult.codeId}" style="display:none;">	
+		<c:forEach var="detailResult" items="${cmmDetailCodeList}" varStatus="status">
+			<c:if test="${codeResult.codeId eq detailResult.codeId}">
+				<option value="<c:out value='${detailResult.code}'/>"><c:out value='${detailResult.codeNm}'/></option>
+			</c:if>
+		</c:forEach>
+	</span>
+</c:forEach>
 	</form>
 	<table id="temp_sla_ev_table" style="display: none">
 		<tr>
 			<!-- <td>
-				<input id="slaEvitId" name="slaEvitVOList[].slaEvitId" type="hidden" value="">
 				<input type="checkbox" id="temp_checkbox" value="" >
 				<label id="temp_label" for=""></label>
 			</td> -->
 			<td>
 				<input name="slaEvitVOList[].slaEvitTiem" type="text" class="eva_item" value="">
+				<input id="slaEvitId" name="slaEvitVOList[].slaEvitId" type="hidden" value="">
 			</td>
 			<td>
 				<input name="slaEvitVOList[].slaEvitIndicators" type="text" class="eva_point" value="">
Add a comment
List