jjh 1 year ago
commit afd63db048

@ -12,7 +12,7 @@ import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class FTPUtil {
public static boolean fileDown(remoteSystemInfo rs, String remoteWorkPath, String downloadRoot) {
public static boolean fileDown(RemoteSystemInfo rs, String remoteWorkPath, String downloadRoot) {
FTPClient client = null;
try {

@ -5,7 +5,7 @@ import lombok.Setter;
@Getter
@Setter
public class remoteSystemInfo {
public class RemoteSystemInfo {
String ip;
String id;
String pw;

@ -0,0 +1,13 @@
package cokr.xit.fims.crdn.parsing;
import java.nio.file.Path;
import java.util.List;
import java.util.stream.Stream;
import cokr.xit.foundation.data.DataObject;
public interface EquipmentEnterprise {
public List<DataObject> parsing(Stream<Path> fileList);
}

@ -0,0 +1,79 @@
package cokr.xit.fims.crdn.parsing;
import java.io.File;
import java.nio.file.Path;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.stream.Stream;
import org.apache.commons.io.FilenameUtils;
import cokr.xit.foundation.data.DataObject;
public class Ino implements EquipmentEnterprise {
@Override
public List<DataObject> parsing(Stream<Path> fileList) {
List<DataObject> dataObjectList = new ArrayList<>();
fileList.forEach(item -> {
DataObject dataObject = new DataObject();
File file = item.toFile();
String filePath = file.getPath();
dataObject.put("FILE_PATH", filePath);
String fileName = file.getName();
dataObject.put("FILE_NAME", fileName);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd / HH:mm:ss");
dataObject.put("TIMESTAMP", sdf.format(new Date(file.lastModified())));
dataObject.put("FILE_SIZE", file.length()+" byte");
String extension = FilenameUtils.getExtension(fileName);
dataObject.put("EXTENSION", extension);
String[] fileNameSplit = FilenameUtils.removeExtension(fileName).split(Matcher.quoteReplacement("_"));
dataObject.put("DEVICE_ID", fileNameSplit[0]);
dataObject.put("CRDN_YMD_TM", fileNameSplit[1]);
dataObject.put("VHRNO", fileNameSplit[2]);
dataObject.put("PHOTO_CNT", fileNameSplit[3]);
String photoSeq = fileNameSplit[4];
if(photoSeq.equals("1")) photoSeq = "입차사진";
else if(photoSeq.equals("2")) photoSeq = "주차사진";
else if(photoSeq.equals("3")) photoSeq = "위반사진";
else if(photoSeq.equals("4")) photoSeq = "출차사진";
dataObject.put("PHOTO_SEQ", photoSeq);
dataObject.put("LOCATION_X", fileNameSplit[5]);
dataObject.put("LOCATION_Y", fileNameSplit[6]);
String inputSe = fileNameSplit[7];
if(inputSe.equals("S")) inputSe = "정상등록자료";
else if(inputSe.equals("E")) inputSe = "삭제자료";
dataObject.put("INPUT_SE", inputSe);
dataObject.put("CRDN_PLC", fileNameSplit[8]);
dataObject.put("CRDN_ADDRESS", fileNameSplit[9]);
dataObject.put("CRDN_STDG_NM", fileNameSplit[10]);
if(fileNameSplit.length >= 12) {
String crdnCn = fileNameSplit[11];
if(crdnCn.equals("00")) crdnCn = "사용안함";
else if(crdnCn.equals("01")) crdnCn = "일반차량(전기차)";
else if(crdnCn.equals("02")) crdnCn = "장기주차(전기차)";
dataObject.put("CRDN_CN", crdnCn);
}
dataObjectList.add(dataObject);
});
return dataObjectList;
}
}

@ -0,0 +1,16 @@
package cokr.xit.fims.crdn.parsing;
import java.nio.file.Path;
import java.util.List;
import java.util.stream.Stream;
import cokr.xit.foundation.data.DataObject;
public class Knl implements EquipmentEnterprise {
@Override
public List<DataObject> parsing(Stream<Path> fileList) {
return null;
}
}

@ -3,19 +3,17 @@ package cokr.xit.fims.crdn.web;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.stream.Stream;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.FilenameUtils;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
@ -27,6 +25,9 @@ import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.CrdnQuery;
import cokr.xit.fims.crdn.dao.CrdnInstMapper;
import cokr.xit.fims.crdn.dao.GlobalStngMapper;
import cokr.xit.fims.crdn.parsing.EquipmentEnterprise;
import cokr.xit.fims.crdn.parsing.Ino;
import cokr.xit.fims.crdn.parsing.Knl;
import cokr.xit.fims.crdn.service.CrdnService;
import cokr.xit.fims.crdn.service.CrdnStngService;
import cokr.xit.foundation.data.DataObject;
@ -103,87 +104,65 @@ public class Crdn05Controller extends ApplicationController {
ModelAndView mav = new ModelAndView("jsonView");
String entType = hReq.getParameter("entType");
EquipmentEnterprise enterprise = null;
switch(entType){
case "이노": enterprise = new Ino(); break;
case "knl": enterprise = new Knl(); break;
//case "": enterprise = new (); break;
//case "": enterprise = new (); break;
//case "": enterprise = new (); break;
}
Stream<Path> fileList = null;
List<DataObject> dataObjectList = new ArrayList<>();
String downloadRoot = "";
String downloadRoot = ""; //ftp나 usb에서 다운받는 파일 경로
if(entType.equals("이노")) {
if(entType.equals("이노") || entType.equals("knl")) {
//ftp G클라우드
try {
//TODO : FTP접속정보 설정
if(entType.equals("이노")) {
//RemoteSystemInfo rs = new RemoteSystemInfo();
//rs.setIp("211.119.124.9");
//rs.setId("xituser");
//rs.setPw("xituser!@");
//rs.setOsType("linux");
//String remoteWorkPath = File.separator + "applications"
// + File.separator + "tempForFTPTest"
// + File.separator + "ino"
// + File.separator;
downloadRoot = "files"+File.separator+"tempForIno";
}
if(entType.equals("knl")) {
//TODO : FTP접속 및 다운로드
downloadRoot = "files"+File.separator+"tempForKnl";
}
//boolean result = FTPUtil.fileDown(rs, remoteWorkPath, downloadRoot);
} catch (Exception e) {
e.printStackTrace();
}
try {
Files.walk(Paths.get(downloadRoot))
.filter(Files::isRegularFile)
.forEach(item -> {
DataObject dataObject = new DataObject();
File file = item.toFile();
String filePath = file.getPath();
dataObject.put("FILE_PATH", filePath);
String fileName = file.getName();
dataObject.put("FILE_NAME", fileName);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd / HH:mm:ss");
dataObject.put("TIMESTAMP", sdf.format(new Date(file.lastModified())));
dataObject.put("FILE_SIZE", file.length()+" byte");
String extension = FilenameUtils.getExtension(fileName);
dataObject.put("EXTENSION", extension);
String[] fileNameSplit = FilenameUtils.removeExtension(fileName).split(Matcher.quoteReplacement("_"));
dataObject.put("DEVICE_ID", fileNameSplit[0]);
dataObject.put("CRDN_YMD_TM", fileNameSplit[1]);
dataObject.put("VHRNO", fileNameSplit[2]);
dataObject.put("PHOTO_CNT", fileNameSplit[3]);
String photoSeq = fileNameSplit[4];
if(photoSeq.equals("1")) photoSeq = "입차사진";
else if(photoSeq.equals("2")) photoSeq = "주차사진";
else if(photoSeq.equals("3")) photoSeq = "위반사진";
else if(photoSeq.equals("4")) photoSeq = "출차사진";
dataObject.put("PHOTO_SEQ", photoSeq);
dataObject.put("LOCATION_X", fileNameSplit[5]);
dataObject.put("LOCATION_Y", fileNameSplit[6]);
String inputSe = fileNameSplit[7];
if(inputSe.equals("S")) inputSe = "정상등록자료";
else if(inputSe.equals("E")) inputSe = "삭제자료";
dataObject.put("INPUT_SE", inputSe);
dataObject.put("CRDN_PLC", fileNameSplit[8]);
dataObject.put("CRDN_ADDRESS", fileNameSplit[9]);
dataObject.put("CRDN_STDG_NM", fileNameSplit[10]);
if(fileNameSplit.length >= 12) {
String crdnCn = fileNameSplit[11];
if(crdnCn.equals("00")) crdnCn = "사용안함";
else if(crdnCn.equals("01")) crdnCn = "일반차량(전기차)";
else if(crdnCn.equals("02")) crdnCn = "장기주차(전기차)";
dataObject.put("CRDN_CN", crdnCn);
}
dataObjectList.add(dataObject);
});
try {
//폴더는 제외하고 파일만 필터링
fileList = Files.walk(Paths.get(downloadRoot)).filter(Files::isRegularFile);
} catch (IOException e) {
e.printStackTrace();
}
dataObjectList = enterprise.parsing(fileList);
mav = setCollectionInfo(mav, dataObjectList, "");
}
return mav;
}

@ -8,7 +8,7 @@
<div class="row g-1">
<div class="col-md-4">
<label for="taskSeCd--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">과태료업무</label>
class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">과태료업무</label>
<select id="taskSeCd--${pageName}" name="taskSeCd" class="form-select" disabled>
<c:forEach items="${FIM054List}" var="item">
<option value="${item.code}"
@ -19,7 +19,7 @@
</div>
<div class="col-md-4">
<label for="entType--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">장비업체</label>
class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">장비업체</label>
<select id="entType--${pageName}" name="entType" class="form-select">
<option value="">선택하세요</option>
<option value="KNL">KNL</option>
@ -29,40 +29,35 @@
<option value="하이테콤">하이테콤</option>
</select>
</div>
<div class="col-md-4">
<c:if test="${taskSeCd == 'PVS' or taskSeCd == 'BPV'}">
<div class="col-md-4">
<label for="cctvType--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">cctv 구분</label>
class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">cctv 구분</label>
<select id="cctvType--${pageName}" name="cctvType" class="form-select">
<option value="">선택</option>
<option value="고정형">고정형</option>
<option value="주행형">주행형</option>
<option value="버스장착형">버스장착형</option>
</select>
</c:if>
</div>
</c:if>
<div class="col-md-12">
<c:if test="${taskSeCd == 'PVS' or taskSeCd == 'BPV' or taskSeCd == '미세먼지'}">
<div class="col-md-4">
<label for="localFile--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">파일</label>
class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">파일</label>
<input type="file" id="localFile--${pageName}" name="localFile" />
</div>
</c:if>
</div>
<div class="row mt-4 justify-content-end mb-3">
<div class="col-md-6">
<div class="row justify-content-end">
<div class="col-sm-3">
<span class="justify-content-end float-end me-4">
<c:if test="${taskSeCd == 'ECA' or taskSeCd == 'DPV'}">
<button type="button" id="btnSearch--${pageName}" class="btn btn-primary">조회</button>
</c:if>
<c:if test="${taskSeCd == 'PVS' or taskSeCd == 'BPV' or taskSeCd == '미세먼지'}">
<button type="button" id="btnFileUpload--${pageName}" class="btn btn-primary">등록</button>
</c:if>
</span>
</div>
</div>
</div>
</div>
</form>
</div>

Loading…
Cancel
Save