추가요구사항 반영

This commit is contained in:
urp 2025-09-19 14:44:51 +09:00
parent 608a3a7a1b
commit 1b3dda7812
15 changed files with 527 additions and 25 deletions

View File

@ -12,11 +12,7 @@
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/openJDK16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16/"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer">
<attributes>

View File

@ -97,6 +97,14 @@ dependencies
implementation group: 'commons-io', name: 'commons-io', version: '2.6'
// apache poi lib
// implementation 'org.apache.poi:poi-ooxml:5.3.0'
// apache poi lib
implementation 'org.apache.poi:poi:4.1.2'
implementation 'org.apache.poi:poi-ooxml:4.1.2'
implementation 'org.apache.poi:poi-scratchpad:4.1.2'
implementation 'org.apache.poi:poi-examples:4.1.2'
}

View File

@ -70,6 +70,13 @@ public class urpBaseJspApplication
System.out.println("############# keiti_prod Env ###################");
System.out.println("################################################");
}
// 2025.09.12 나혁제 킨텍스 추가
else if(activeProfile.equals("kintex_prod"))
{
System.out.println("################################################");
System.out.println("############# kintex_prod Env ##################");
System.out.println("################################################");
}
else
{
System.out.println("################################################");

View File

@ -1,7 +1,14 @@
package com.urpsys.itmsfront.rem.controller;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@ -13,10 +20,12 @@ import javax.servlet.http.HttpServletResponse;
import org.egovframe.rte.fdl.property.EgovPropertyService;
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.FileCopyUtils;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestBody;
@ -31,9 +40,11 @@ import org.springmodules.validation.commons.DefaultBeanValidator;
import com.urpsys.basefront.common.util.CommonUtil;
import com.urpsys.basefront.common.util.ConvertUtils;
import com.urpsys.basefront.common.util.RestApiCallUtil;
import com.urpsys.basefront.common.egov.util.EgovBrowserUtil;
import com.urpsys.basefront.common.egov.util.EgovDateUtil;
import com.urpsys.basefront.common.egov.util.EgovFileMngUtil;
import com.urpsys.basefront.common.egov.util.EgovStringUtil;
import com.urpsys.basefront.common.egov.util.EgovWebUtil;
import com.urpsys.basefront.common.service.CommonService;
import com.urpsys.basefront.domain.ComDefaultVO;
import com.urpsys.basefront.domain.FileVO;
@ -47,6 +58,11 @@ import com.urpsys.itmsfront.rem.domain.AssetVo;
import com.urpsys.itmsfront.rem.domain.InResourceManage;
import com.urpsys.itmsfront.rem.domain.ResourceManage;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import lombok.extern.slf4j.Slf4j;
@ -91,6 +107,8 @@ public class ResourceManagerController
@Autowired
private Environment env;
@Value("${custom.file_store}")
private String storePathString; // 파일저장 물리적주소
/**
* 자산 목록을 조회한다.
@ -118,6 +136,19 @@ public class ResourceManagerController
resourceManage.setLastIndex(paginationInfo.getLastRecordIndex());
resourceManage.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
String strCurDate = EgovDateUtil.getToday();
if(resourceManage.getSdateEos() == null || resourceManage.getSdateEos().equals(""))
{
resourceManage.setSdateEos(EgovDateUtil.formatDate(EgovDateUtil.formatDate(EgovDateUtil.addMonth(strCurDate, -12), "-"), "-"));
}
if(resourceManage.getEdateEos() == null || resourceManage.getEdateEos().equals(""))
{
resourceManage.setEdateEos(EgovDateUtil.formatDate("2999-12-31", "-"));
}
// Body Setting Start ---------------------------------
bodyMap = ConvertUtils.convertToMapAll(resourceManage);
// Body Setting End ---------------------------------
@ -175,6 +206,212 @@ public class ResourceManagerController
return "uritms-tiles2/rem/ResourceList";
}
/**
* 자산 목록을 조회한다.
* @author urp 인프라본부 나혁제
* 작성일 : 2025.01.31
*/
@RequestMapping("/rem/SelectResourceExecl.do")
public void SelectResourceExCel( @ModelAttribute("resourceManage") ResourceManage resourceManage
, ModelMap model
, HttpServletRequest request
, HttpServletResponse response ) throws Exception
{
log.info(">>>>>>>>>>>>>>> /rem/SelectResourceExecl.do <<<<<<<<<<<<<<<");
// api in/out map 정의
Map<String, Object> bodyMap = new LinkedHashMap();
Map<String, Object> returnMap = new LinkedHashMap();
// Body Setting Start ---------------------------------
bodyMap = ConvertUtils.convertToMapAll(resourceManage);
// Body Setting End ---------------------------------
// RestApi Call Start ---------------------------------
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/rem/searchAssetExcel.do");
// RestApi Call End ---------------------------------
// Return Data Setting Start --------------------------
List<Map<String, Object>> resultList = (List<Map<String, Object>>)returnMap.get("resultList");
// Return Data Setting End --------------------------
String strFileNm = "assetExcelSave"+CommonUtil.getKST("yyyyMMddHHmmss")+".xlsx";
String filePath = storePathString + "/" +strFileNm;
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("자산");
// 헤더 생성
Row headerRow = sheet.createRow(0);
headerRow.createCell(0 ).setCellValue("자산번호");
headerRow.createCell(1 ).setCellValue("대분류");
headerRow.createCell(2 ).setCellValue("중분류");
headerRow.createCell(3 ).setCellValue("소분류");
headerRow.createCell(4 ).setCellValue("자산명");
headerRow.createCell(5 ).setCellValue("도입일자");
headerRow.createCell(6 ).setCellValue("제조사");
headerRow.createCell(7 ).setCellValue("제품명");
headerRow.createCell(8 ).setCellValue("도입가격");
headerRow.createCell(9 ).setCellValue("자산상태");
headerRow.createCell(10).setCellValue("유지보수여부");
headerRow.createCell(11).setCellValue("유지보수요율");
headerRow.createCell(12).setCellValue("유지보수점검주기");
headerRow.createCell(13).setCellValue("유지보수시작일");
headerRow.createCell(14).setCellValue("유지보수종료일");
headerRow.createCell(15).setCellValue("버전");
headerRow.createCell(16).setCellValue("시리얼");
headerRow.createCell(17).setCellValue("호스트명");
headerRow.createCell(18).setCellValue("EOS일");
headerRow.createCell(19).setCellValue("용도");
headerRow.createCell(20).setCellValue("비고");
headerRow.createCell(21).setCellValue("IP");
headerRow.createCell(22).setCellValue("CPU");
headerRow.createCell(23).setCellValue("DISK");
headerRow.createCell(24).setCellValue("MEM");
headerRow.createCell(25).setCellValue("점검대상여부");
headerRow.createCell(26).setCellValue("업무명");
headerRow.createCell(27).setCellValue("무상유지보수시작일자");
headerRow.createCell(28).setCellValue("무상유지보수종료일자");
headerRow.createCell(29).setCellValue("라이센스종류");
headerRow.createCell(30).setCellValue("라이센스종료일자");
headerRow.createCell(31).setCellValue("EOL일자");
headerRow.createCell(32).setCellValue("포트정보");
headerRow.createCell(33).setCellValue("실사용자");
// 데이터 입력
int rowNum = 1;
for(Map<String, Object> vo: resultList )
{
Row row = sheet.createRow(rowNum++);
row.createCell(0 ).setCellValue(vo.get("vcAssetId" )==null ? "" : (String)vo.get("vcAssetId" ));
row.createCell(1 ).setCellValue(vo.get("vcCate1" )==null ? "" : (String)vo.get("vcCate1" ));
row.createCell(2 ).setCellValue(vo.get("vcCate2" )==null ? "" : (String)vo.get("vcCate2" ));
row.createCell(3 ).setCellValue(vo.get("vcCate3" )==null ? "" : (String)vo.get("vcCate3" ));
row.createCell(4 ).setCellValue(vo.get("vcAssetName" )==null ? "" : (String)vo.get("vcAssetName" ));
row.createCell(5 ).setCellValue(vo.get("dtPurchaseDatetime" )==null ? "" : (String)vo.get("dtPurchaseDatetime" ));
row.createCell(6 ).setCellValue(vo.get("vcVendor" )==null ? "" : (String)vo.get("vcVendor" ));
row.createCell(7 ).setCellValue(vo.get("vcModel" )==null ? "" : (String)vo.get("vcModel" ));
row.createCell(8 ).setCellValue(vo.get("inPrice" )==null ? 0 : (int)vo.get("inPrice" ));
row.createCell(9 ).setCellValue(vo.get("inAssetStatus" )==null ? "" : (String)vo.get("inAssetStatus" ));
row.createCell(10).setCellValue(vo.get("inMasTarget" )==null ? "" : (String)vo.get("inMasTarget" ));
row.createCell(11).setCellValue(vo.get("inMasRate" )==null ? 0 : (int)vo.get("inMasRate" ));
row.createCell(12).setCellValue(vo.get("vcMasCheckPeriod" )==null ? "" : (String)vo.get("vcMasCheckPeriod" ));
row.createCell(13).setCellValue(vo.get("dtMasStart" )==null ? "" : (String)vo.get("dtMasStart" ));
row.createCell(14).setCellValue(vo.get("dtMasFinish" )==null ? "" : (String)vo.get("dtMasFinish" ));
row.createCell(15).setCellValue(vo.get("vcVersion" )==null ? "" : (String)vo.get("vcVersion" ));
row.createCell(16).setCellValue(vo.get("vcAssetSerial" )==null ? "" : (String)vo.get("vcAssetSerial" ));
row.createCell(17).setCellValue(vo.get("vcHost" )==null ? "" : (String)vo.get("vcHost" ));
row.createCell(18).setCellValue(vo.get("dtEos" )==null ? "" : (String)vo.get("dtEos" ));
row.createCell(19).setCellValue(vo.get("txUsage" )==null ? "" : (String)vo.get("txUsage" ));
row.createCell(20).setCellValue(vo.get("txAssetDesc" )==null ? "" : (String)vo.get("txAssetDesc" ));
row.createCell(21).setCellValue(vo.get("vcIp" )==null ? "" : (String)vo.get("vcIp" ));
row.createCell(22).setCellValue(vo.get("vcDtlCpu" )==null ? "" : (String)vo.get("vcDtlCpu" ));
row.createCell(23).setCellValue(vo.get("vcDtlDisk" )==null ? "" : (String)vo.get("vcDtlDisk" ));
row.createCell(24).setCellValue(vo.get("vcDtlMem" )==null ? "" : (String)vo.get("vcDtlMem" ));
row.createCell(25).setCellValue(vo.get("vcChkTrgYn" )==null ? "" : (String)vo.get("vcChkTrgYn" ));
row.createCell(26).setCellValue(vo.get("vcTaskNm" )==null ? "" : (String)vo.get("vcTaskNm" ));
row.createCell(27).setCellValue(vo.get("vcNrwdMicnStrtDt" )==null ? "" : (String)vo.get("vcNrwdMicnStrtDt" ));
row.createCell(28).setCellValue(vo.get("vcNrwdMicnEndDt" )==null ? "" : (String)vo.get("vcNrwdMicnEndDt" ));
row.createCell(29).setCellValue(vo.get("vcLLicenseKnd" )==null ? "" : (String)vo.get("vcLLicenseKnd" ));
row.createCell(30).setCellValue(vo.get("dtLLicenseEnd" )==null ? "" : (String)vo.get("dtLLicenseEnd" ));
row.createCell(31).setCellValue(vo.get("dtEol" )==null ? "" : (String)vo.get("dtEol" ));
row.createCell(32).setCellValue(vo.get("inPortInfo" )==null ? 0 : (int)vo.get("inPortInfo" ));
row.createCell(33).setCellValue(vo.get("vcRealChargrNm" )==null ? "" : (String)vo.get("vcRealChargrNm" ));
/*
row.createCell(0 ).setCellValue((String)vo.get("vcAssetId" ));
row.createCell(1 ).setCellValue((String)vo.get("vcCate1" ));
row.createCell(3 ).setCellValue((String)vo.get("vcCate2" ));
row.createCell(4 ).setCellValue((String)vo.get("vcCate3" ));
row.createCell(5 ).setCellValue((String)vo.get("vcAssetName" ));
row.createCell(6 ).setCellValue((String)vo.get("dtPurchaseDatetime" ) );
row.createCell(7 ).setCellValue((String)vo.get("vcVendor") );
row.createCell(8 ).setCellValue((String)vo.get("vcModel") );
row.createCell(9 ).setCellValue((int)vo.get("inPrice") );
row.createCell(10).setCellValue((String)vo.get("inAssetStatus") );
row.createCell(11).setCellValue((String)vo.get("inMasTarget") );
row.createCell(12).setCellValue((int)vo.get("inMasRate") );
row.createCell(13).setCellValue((String)vo.get("vcMasCheckPeriod") );
row.createCell(14).setCellValue((String)vo.get("dtMasStart") );
row.createCell(15).setCellValue((String)vo.get("dtMasFinish") );
row.createCell(16).setCellValue((String)vo.get("vcVersion") );
row.createCell(17).setCellValue((String)vo.get("vcAssetSerial") );
row.createCell(18).setCellValue((String)vo.get("vcHost") );
row.createCell(19).setCellValue((String)vo.get("dtEos") );
row.createCell(20).setCellValue((String)vo.get("txUsage") );
row.createCell(21).setCellValue((String)vo.get("txAssetDesc") );
row.createCell(22).setCellValue((String)vo.get("vcIp") );
row.createCell(23).setCellValue((String)vo.get("vcDtlCpu") );
row.createCell(24).setCellValue((String)vo.get("vcDtlDisk") );
row.createCell(25).setCellValue((String)vo.get("vcDtlMem") );
row.createCell(26).setCellValue((String)vo.get("vcChkTrgYn") );
row.createCell(27).setCellValue((String)vo.get("vcTaskNm") );
row.createCell(28).setCellValue((String)vo.get("vcNrwdMicnStrtDt") );
row.createCell(29).setCellValue((String)vo.get("vcNrwdMicnEndDt") );
row.createCell(30).setCellValue((String)vo.get("vcLLicenseKnd") );
row.createCell(31).setCellValue((String)vo.get("dtLLicenseEnd") );
row.createCell(32).setCellValue((String)vo.get("dtEol") );
row.createCell(33).setCellValue((String)vo.get("inPortInfo") );
*/
}
// 너비 자동 조정
for (int i = 0; i < 4; i++)
{
sheet.autoSizeColumn(i);
}
// 파일 저장
try (FileOutputStream outputStream = new FileOutputStream(filePath))
{
workbook.write(outputStream);
}
// 파일 다운로드
File uFile = new File(filePath);
String mimetype = "application/x-msdownload";
String userAgent = request.getHeader("User-Agent");
HashMap<String, String> result = EgovBrowserUtil.getBrowser(userAgent);
if (!EgovBrowserUtil.MSIE.equals(result.get(EgovBrowserUtil.TYPEKEY)))
{
mimetype = "application/x-stuff";
}
String contentDisposition = EgovBrowserUtil.getDisposition(strFileNm, userAgent, "UTF-8");
response.setContentType(mimetype);
response.setHeader("Content-Disposition", contentDisposition);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try
{
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally
{
in.close();
out.close();
}
log.info("<<<<<<<<<<<<<<< /rem/SelectResourceExecl.do >>>>>>>>>>>>>>>");
}
/**
* 자산이력 목록을 조회한다.
* @author urp 인프라본부 나혁제

View File

@ -87,6 +87,10 @@ public class AssetVo extends ComDefaultVO
private String dtEol ;
private String inPortInfo ;
// 2025.09.12 나혁제 추가정보
private String vcRealChargrNm ; // 실사용자명
private String inRealChargr ; // 실사용자ID
public String getInAssetSeq() {
return inAssetSeq;
}
@ -423,6 +427,18 @@ public class AssetVo extends ComDefaultVO
public void setInPortInfo(String inPortInfo) {
this.inPortInfo = inPortInfo;
}
public String getVcRealChargrNm() {
return vcRealChargrNm;
}
public void setVcRealChargrNm(String vcRealChargrNm) {
this.vcRealChargrNm = vcRealChargrNm;
}
public String getInRealChargr() {
return inRealChargr;
}
public void setInRealChargr(String inRealChargr) {
this.inRealChargr = inRealChargr;
}

View File

@ -77,6 +77,12 @@ public class ResourceManage extends ComDefaultVO
private String assetId ;
private String assetStat ;
// 2025.09.11 나혁제 조회조건 추가
private String sdateEos ;
private String edateEos ;
// 2025.19.15 나혁제 조회조건 추가
private String hidEosCheckYn;
public int getInAssetSeq() {
return inAssetSeq;
}
@ -371,6 +377,24 @@ public class ResourceManage extends ComDefaultVO
public void setAssetStat(String assetStat) {
this.assetStat = assetStat;
}
public String getSdateEos() {
return sdateEos;
}
public void setSdateEos(String sdateEos) {
this.sdateEos = sdateEos;
}
public String getEdateEos() {
return edateEos;
}
public void setEdateEos(String edateEos) {
this.edateEos = edateEos;
}
public String getHidEosCheckYn() {
return hidEosCheckYn;
}
public void setHidEosCheckYn(String hidEosCheckYn) {
this.hidEosCheckYn = hidEosCheckYn;
}

View File

@ -0,0 +1,56 @@
# Service port
server:
port: 443
servlet:
session:
timeout: 120m
cookie:
name: BASEJSP_JSESSIONID
ssl:
enabled: true #Spring Security를 사용하는 경우 HTTPS 요청만 허용하도록 해주는 설정
key-store-type: PKCS12
key-store: classpath:sslkey/Wildcard.kintex.com_jks.jks
key-store-password: 83641234
# Service port
# server:
# port: 11020
# servlet:
# session:
# timeout: 120m
# cookie:
# name: BASEJSP_JSESSIONID
# JSP 설정
spring:
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
static-patn-pattern: /static/**
devtools:
livereload:
enabled: true
# custom 설정
custom:
path:
phy_svy: /app/itsm_data/svy/
loc_svy: /svy/image/
file_store: /app/itsm_data/itsm_file_upload
auth_server: http://localhost:11000
api_server: http://localhost:11010
# api_search_server: http://109.26.11.21:48381
api_search_server: http://10.2.11.37:48381
sendmail:
id: tW9kMpd3SiAnf3RQBOZapw==
password: Tkkj8p2PYfZ+AmpQMPLHF8ksj8vrtJouj6xczU8ShM8=
port: 587
host: smtp.gmail.com
sendEmail: hhjj0701@gmail.com
senderName: 나혁제
socketFactory-class: javax.net.ssl.SSLSocketFactory
supplier: gmail.com

View File

@ -1,4 +1,4 @@
# Service port
# Service port
server:
port: 11020
servlet:

Binary file not shown.

View File

@ -13,7 +13,7 @@ $.datepicker.setDefaults({
changeMonth: true, //월변경가능
changeYear: true, //년변경가능
minDate: '',
maxDate: '+800d',
maxDate: '+1825d',
yearSuffix: ''
});

View File

@ -279,6 +279,33 @@
// varFrom.submit();
}
//----------------------------------------
// 2025.09.12 나혁제
// 담당자 검색 팝업
// ----------------------------------------
function fn_User_Search( strTitle
, frmUniqId
, frmEmplNo
, frmEmplyrNm
, frmOrgnztNm
, multiUserSelectYn
)
{
var arrParam = new Array(6);
arrParam[0] = window;
arrParam[1] = strTitle;
arrParam[2] = frmUniqId;
arrParam[3] = frmEmplNo;
arrParam[4] = frmEmplyrNm;
arrParam[5] = frmOrgnztNm;
var strUrl = "/cmm/selectUserListPopup.do?multiUserSelectYn="+multiUserSelectYn;
window.showModalDialog( "<c:url value='"+strUrl+"' />"
, arrParam
, "dialogWidth:900px;dialogHeight:750px;resizable:yes;center:yes");
}
//----------------------------------------
// 서블릿 통신
// ----------------------------------------
@ -636,8 +663,15 @@
<td></td>
<th></th>
<th>실사용자</th>
<td>
<input type="text" name="vcRealChargrNm" id="vcRealChargrNm" value="${resultAsset.vcRealChargrNm}" style="width:80%;" />
<a href="<c:url value='/cmm/selectUserListPopup.do' />" target="_blank" title="새 창으로 이동" onclick="fn_User_Search('실사용자', 'inRealChargr', '', 'vcRealChargrNm', '', '');return false;">
<img src="<c:url value='/egov/images/egovframework/com/cmm/btn/btn_search.gif' />" alt="담당자 검색" title="담당자 검색">
</a>
<input type="hidden" name="inRealChargr" id="inRealChargr" value="${resultAsset.inRealChargr}" >
</td>
</tr>

View File

@ -166,6 +166,9 @@
<col style="width: 5%;" > <%-- 자산상태 --%>
<col style="width: 5%;" > <%-- 유지보수비율 --%>
<col style="width: 10%;" > <%-- 호스트명 --%>
<col style="width: 10%;" > <%-- 2025.09.12 나혁제 추가 Eos 일자 --%>
<col style="width: 10%;" > <%-- 2025.09.12 나혁제 추가 실사용자 --%>
</colgroup>
<thead>
<tr>
@ -179,6 +182,8 @@
<th>자산상태</th>
<th>유지보수비율</th>
<th>호스트명</th>
<th>EOS일자</th>
<th>실사용자</th>
</tr>
</thead>
<tbody class="ov">
@ -310,6 +315,30 @@
</td>
</c:if>
<!-- 2025.09.12 나혁제 dtEos Eos 일자 -->
<c:if test="${resource.dtEos == resourceList[status.index-1].dtEos}">
<td>
<c:out value="${resource.dtEos}"/>
</td>
</c:if>
<c:if test="${resource.dtEos ne resourceList[status.index-1].dtEos}">
<td style="color: red;font-weight: bold;">
<c:out value="${resource.dtEos}"/>
</td>
</c:if>
<!-- 2025.09.12 나혁제 vcRealChrgrNm 실사용자 -->
<c:if test="${resource.vcRealChrgrNm == resourceList[status.index-1].vcRealChrgrNm}">
<td>
<c:out value="${resource.vcRealChrgrNm}"/>
</td>
</c:if>
<c:if test="${resource.vcRealChrgrNm ne resourceList[status.index-1].vcRealChrgrNm}">
<td style="color: red;font-weight: bold;">
<c:out value="${resource.vcRealChrgrNm}"/>
</td>
</c:if>
</tr>
</c:forEach>

View File

@ -37,6 +37,8 @@
<script type="text/javascript" src="<c:url value='/egov/js/EgovMultiFiles.js'/>" ></script>
<script type="text/javascript" src="<c:url value="/validator.do"/>"></script>
<script type="text/javascript" src="<c:url value='/egov/js/showModalDialog.js'/>" ></script>
<validator:javascript formName="resourceManage" staticJavascript="false" xhtml="true" cdata="false"/>
<script type="text/javaScript" language="javascript">
@ -154,6 +156,33 @@
$('#vcGrpId').val(strGroupId);
}
//----------------------------------------
// 2025.09.12 나혁제
// 담당자 검색 팝업
// ----------------------------------------
function fn_User_Search( strTitle
, frmUniqId
, frmEmplNo
, frmEmplyrNm
, frmOrgnztNm
, multiUserSelectYn
)
{
var arrParam = new Array(6);
arrParam[0] = window;
arrParam[1] = strTitle;
arrParam[2] = frmUniqId;
arrParam[3] = frmEmplNo;
arrParam[4] = frmEmplyrNm;
arrParam[5] = frmOrgnztNm;
var strUrl = "/cmm/selectUserListPopup.do?multiUserSelectYn="+multiUserSelectYn;
window.showModalDialog( "<c:url value='"+strUrl+"' />"
, arrParam
, "dialogWidth:900px;dialogHeight:750px;resizable:yes;center:yes");
}
// 서블릿 통신
var proc =
{
@ -525,9 +554,15 @@
<th></th>
<td></td>
<th></th>
<th>실사용자</th>
<td>
<input type="text" name="vcRealChargrNm" id="vcRealChargrNm" value="" style="width:80%;" />
<a href="<c:url value='/cmm/selectUserListPopup.do' />" target="_blank" title="새 창으로 이동" onclick="fn_User_Search('실사용자', 'inRealChargr', '', 'vcRealChargrNm', '', '');return false;">
<img src="<c:url value='/egov/images/egovframework/com/cmm/btn/btn_search.gif' />" alt="담당자 검색" title="담당자 검색">
</a>
<input type="hidden" name="inRealChargr" id="inRealChargr" value="" >
</td>
</tr>

View File

@ -39,6 +39,9 @@
// ----------------------------------------
$(document).ready(function()
{
// 2025.09.11 나혁제 추가조건
$("#sdateEos, #edateEos").datepicker();
// 대분류 조건이 있는경우
if('${resourceManage.inCate1}' != '')
{
@ -74,6 +77,16 @@
// ----------------------------------------
function linkPage(pageIndex)
{
// 2025.09.15 나혁제 EOS 만료여부 추가
if($("#chkEosCheckYn").is(":checked"))
{
document.listForm.hidEosCheckYn.value = "1";
}
else
{
document.listForm.hidEosCheckYn.value = "0";
}
document.listForm.searchCondition.value = "1";
document.listForm.pageIndex.value = pageIndex;
document.listForm.action = "<c:url value='/rem/SelectResource.do'/>";
@ -152,6 +165,18 @@
document.listForm.submit();
}
//----------------------------------------
// 자산 목록 다운로드
// ----------------------------------------
function ExcelSave()
{
document.listForm.action = "<c:url value='/rem/SelectResourceExecl.do'/>";
document.listForm.submit();
}
//서블릿 통신
@ -299,14 +324,41 @@
</td>
</tr>
<tr>
<td>
<label>EOS 일자 &nbsp;</label>
<input type="text" class="btn_calendar" name="sdateEos" id="sdateEos"
maxlength="10" value="${resourceManage.sdateEos}" title="EOS일 시작일" readonly style="width:200px;" />
~
<input type="text" class="btn_calendar" name="edateEos" id="edateEos"
maxlength="10" value="${resourceManage.edateEos}" title="EOS일 종료" readonly style="width:200px" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<label class="checkbox_label">
<input type="checkbox" id="chkEosCheckYn" name="chkEosCheckYn" <c:if test="${resourceManage.hidEosCheckYn eq '1' }"> checked="checked" </c:if> > EOS 만료여부
<span class="checkbox_icon"></span>
</label>
</td>
</tr>
</tbody>
</table>
<div class="btnArea">
<button type="button" class="btn-search" onclick="fncSearchResourceList(); return false;" title="조회">조회</button>
</div>
</div>
<!--//검색 :e -->
<%--
<div class="searchArea single-row" style="border: 0;background: bottom;">
<div class="btnArea">
<button type="button" class="btn-search" onclick="fileDlgOpen(); return false;" style="height:40px;width:200px;" "title="">파일데이터 로딩</button>
</div>
</div>
--%>
<!-- tbl list : start -->
<div class="tbl_list" >
@ -314,16 +366,17 @@
<table class="table" summary="<spring:message code="common.summary.list" arguments="자산관리" />">
<caption>자산관리 <spring:message code="title.list" /></caption>
<colgroup>
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 7%;" > <!-- 대분류 -->
<col style="width: 7%;" > <!-- 중분류 -->
<col style="width: 8%;" > <!-- 소분류 -->
<col style="width: 10%;" > <!-- 자산번호 -->
<col style="width: *;" > <!-- 자산명 -->
<col style="width: 5%;" > <!-- 상태 -->
<col style="width: 10%;" > <!-- 호스트명 -->
<col style="width: 10%;" > <!-- 제조사 -->
<col style="width: 10%;" > <!-- 모델 -->
<col style="width: 8%;" > <!-- 유지보수대상 -->
<col style="width: 8%;" > <!-- EOS일자 -->
</colgroup>
<thead>
@ -338,6 +391,7 @@
<th>제조사</th>
<th>모델</th>
<th>유지보수대상</th>
<th>EOS일자</th>
</tr>
</thead>
<tbody class="ov">
@ -361,6 +415,8 @@
<td><c:out value="${resource.vcVendor}"/></td>
<td><c:out value="${resource.vcModel}"/></td>
<td><c:out value="${resource.inMasTarget}"/></td>
<td><c:out value="${resource.dtEos}"/></td>
</tr>
</c:forEach>
@ -380,8 +436,11 @@
<!-- main btn : start -->
<div class="btn_group">
<div>
<button type="button" class="btn-function" title="등록" onclick="fncAddResourceInsert(); return false;" ><spring:message code="button.create" /> <!-- 등록 -->
<div>
<button type="button" id="btnUpdate" class="btn-function" title="파일저장" onclick="ExcelSave(); return false;">
자산정보 파일저장
</button>
<button type="button" class="btn-function" title="등록" onclick="fncAddResourceInsert(); return false;" ><spring:message code="button.create" /> <!-- 등록 -->
</div>
</div>
@ -398,4 +457,5 @@
<input type="hidden" name="inAssetSeq" value="0" />
<input type="hidden" name="pageIndex" value="<c:out value='${resourceManage.pageIndex}'/>"/>
<input type="hidden" name="searchCondition" value="1"/>
<input type="hidden" name="hidEosCheckYn" value="${resourceManage.hidEosCheckYn}"/>
</form:form>

View File

@ -367,7 +367,7 @@
var vcDtlMem = $.trim(rows[i].MEM ) +"";
var vcChkTrgYn = $.trim(rows[i].점검대상여부 ) +"";
// 2025.09.01 나혀겢 자산 추가속성
// 2025.09.01 나혁제 자산 추가속성
var vcTaskNm = $.trim(rows[i].업무명 ) +"";
var vcNrwdMicnStrtDt = $.trim(rows[i].무상유지보수시작일자 ) +"";
var vcNrwdMicnEndDt = $.trim(rows[i].무상유지보수종료일자 ) +"";