diff --git a/src/main/java/cokr/xit/fims/RentSchedule.java b/src/main/java/cokr/xit/fims/RentSchedule.java new file mode 100644 index 00000000..3a104370 --- /dev/null +++ b/src/main/java/cokr/xit/fims/RentSchedule.java @@ -0,0 +1,43 @@ +package cokr.xit.fims; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; + +import cokr.xit.fims.nxrp.NisIndivQuery; +import cokr.xit.fims.nxrp.service.NisIndivService; +import cokr.xit.fims.nxrp.service.bean.NisIndivBean; +import cokr.xit.foundation.AbstractComponent; + +@Component +public class RentSchedule extends AbstractComponent { + + @Resource(name = "nisIndivService") + private NisIndivService nisIndivService; + @Resource(name = "nisIndivBean") + private NisIndivBean nisIndivBean; + + + + //@Scheduled(cron = "0 22 * * * *") + public void sendRun() { + + NisIndivQuery query = new NisIndivQuery(); + query.setSggCd("50110"); + query.setTaskSeCd("ECA"); + String zipPath = nisIndivBean.makeNisIndivJeju01(query, false); + if(zipPath != null && !zipPath.equals("")) { + nisIndivBean.send_DO_to_SI(zipPath); + } + + } + + //@Scheduled(cron = "0 9 * * * *") + public void receiveRun() { + + nisIndivBean.get_SI_to_DO(); + + nisIndivBean.applyNisIndivJeju02(); + + } +} diff --git a/src/main/java/cokr/xit/fims/base/service/bean/SseBean.java b/src/main/java/cokr/xit/fims/base/service/bean/SseBean.java index bc026424..c5e79850 100644 --- a/src/main/java/cokr/xit/fims/base/service/bean/SseBean.java +++ b/src/main/java/cokr/xit/fims/base/service/bean/SseBean.java @@ -110,13 +110,13 @@ public class SseBean extends AbstractBean { public void clearSseEmitter() { long now = System.currentTimeMillis() - ONE_HOUR; Iterator it = sseMap.keys().asIterator(); - System.out.println("size: "+sseMap.size()); + while (it.hasNext()) { String key = it.next(); - System.out.println("key: "+key); + SseEntity se = sseMap.get(key); if (now > se.getCreatedAt()) { - System.out.println("clear old ssemitter "+key+" : "+format.format(se.getCreatedAt())); + if (se.getEmitter() != null) { se.setEmitter(null); } diff --git a/src/main/java/cokr/xit/fims/cmmn/ftp/SFTPUtil.java b/src/main/java/cokr/xit/fims/cmmn/ftp/SFTPUtil.java index bb66898f..9ee7dc05 100644 --- a/src/main/java/cokr/xit/fims/cmmn/ftp/SFTPUtil.java +++ b/src/main/java/cokr/xit/fims/cmmn/ftp/SFTPUtil.java @@ -1,10 +1,15 @@ package cokr.xit.fims.cmmn.ftp; +import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.Vector; + +import org.apache.commons.io.FilenameUtils; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; +import com.jcraft.jsch.ChannelSftp.LsEntry; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; @@ -98,4 +103,36 @@ public class SFTPUtil { return true; } + + public void upload(String src) { + try { + String name = FilenameUtils.getName(src); + channelSftp.put(src,"./"+name); + (new File(src)).delete(); + } catch (SftpException e) { + e.printStackTrace(); + } + } + + public void downloadByFilenamePrefix(String prefix, String dest) { + File folder = new File(dest); + if(!folder.exists()) { + folder.mkdirs(); + } + try { + + Vector fileList = channelSftp.ls(channelSftp.pwd()); + for(LsEntry entry : fileList) { + + String name = entry.getFilename(); + if(name.startsWith(prefix)) { + channelSftp.get("./"+name, dest+"/"+name); + channelSftp.rm("./"+name); + } + } + + } catch (SftpException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/cokr/xit/fims/nxrp/Hirer.java b/src/main/java/cokr/xit/fims/nxrp/Hirer.java new file mode 100644 index 00000000..a35f1c3e --- /dev/null +++ b/src/main/java/cokr/xit/fims/nxrp/Hirer.java @@ -0,0 +1,30 @@ +package cokr.xit.fims.nxrp; + +import cokr.xit.foundation.AbstractEntity; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Hirer extends AbstractEntity { + private String lsctLinkTblNm; + private String rcptnYmd; + private String aprvId; + private String sggCd; + private String taskSeCd; + private String npaLinkRspnsNm; + private String omJno; + private String pyrNo; + private String lotnoRoadAddrSeCd; + private String zip; + private String roadNmCd; + private String addrUdgdYn; + private String bmno; + private String bsno; + private String addr; + private String daddr; + private String stdgCd; + private String dongCd; + + +} diff --git a/src/main/java/cokr/xit/fims/nxrp/NisIndivQuery.java b/src/main/java/cokr/xit/fims/nxrp/NisIndivQuery.java new file mode 100644 index 00000000..0ce52ce4 --- /dev/null +++ b/src/main/java/cokr/xit/fims/nxrp/NisIndivQuery.java @@ -0,0 +1,136 @@ +package cokr.xit.fims.nxrp; + +import cokr.xit.foundation.component.QueryRequest; + +/**과태료 대장 단속 정보 등록 정보 조회 요청 + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2024-02-16	JoJH 최초 작성
+ * ================================
+ * 
+ */ +public class NisIndivQuery extends QueryRequest { + + + private static final long serialVersionUID = 1L; + + private String sggCd; + private String taskSeCd; + private String lsctLinkTblNm; + + private String[] someIds; //테스트용 임시 변수 + private String someId; //테스트용 임시 변수 + + // ID + private String[] crdnIds; // 단속 Ids + private String crdnId; // 단속 ID + private String sndngDtlId; // 발송 상세 Id + // 연계 Key + private String linkTrgtCd; + private String linkMngKey; + // + private String sndngYmd; // 발송(TB_SNDNG)_발송 일자 + + public String getSggCd() { + return ifEmpty(sggCd, () -> null); + } + + public T setSggCd(String sggCd) { + this.sggCd = sggCd; + return self(); + } + + public String getTaskSeCd() { + return ifEmpty(taskSeCd, () -> null); + } + + public T setTaskSeCd(String taskSeCd) { + this.taskSeCd = taskSeCd; + return self(); + } + public String getLsctLinkTblNm() { + return ifEmpty(lsctLinkTblNm, () -> null); + } + + public T setLsctLinkTblNm(String lsctLinkTblNm) { + this.lsctLinkTblNm = lsctLinkTblNm; + return self(); + } + + + public String[] getCrdnIds() { + return ifEmpty(crdnIds, () -> null); + } + + public T setCrdnIds(String... crdnIds) { + this.crdnIds = crdnIds; + return self(); + } + + public String getCrdnId() { + return ifEmpty(crdnId, () -> null); + } + + public T setCrdnId(String crdnId) { + this.crdnId = crdnId; + return self(); + } + + public String getSndngDtlId() { + return ifEmpty(sndngDtlId, () -> null); + } + + public T setSndngDtlId(String sndngDtlId) { + this.sndngDtlId = sndngDtlId; + return self(); + } + + public String getLinkTrgtCd() { + return ifEmpty(linkTrgtCd, () -> null); + } + + public T setLinkTrgtCd(String linkTrgtCd) { + this.linkTrgtCd = linkTrgtCd; + return self(); + } + + public String getLinkMngKey() { + return ifEmpty(linkMngKey, () -> null); + } + + public T setLinkMngKey(String linkMngKey) { + this.linkMngKey = linkMngKey; + return self(); + } + + public String getSndngYmd() { + return ifEmpty(sndngYmd, () -> null); + } + + public T setSndngYmd(String sndngYmd) { + this.sndngYmd = sndngYmd; + return self(); + } + + + public String[] getSomeIds() { + return ifEmpty(someIds, () -> null); + } + + public T setSomeIds(String... someIds) { + this.someIds = someIds; + return self(); + } + + public String getSomeId() { + return ifEmpty(someId, () -> null); + } + + public T setSomeId(String someId) { + this.someId = someId; + return self(); + } +} diff --git a/src/main/java/cokr/xit/fims/nxrp/dao/NisIndivMapper.java b/src/main/java/cokr/xit/fims/nxrp/dao/NisIndivMapper.java new file mode 100644 index 00000000..a5fada4f --- /dev/null +++ b/src/main/java/cokr/xit/fims/nxrp/dao/NisIndivMapper.java @@ -0,0 +1,16 @@ +package cokr.xit.fims.nxrp.dao; +import java.util.List; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.fims.nxrp.NisIndivQuery; +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; + +@Mapper("nisIndivMapper") +public interface NisIndivMapper extends AbstractMapper { + + List selectLcnsNoLinkTarget(NisIndivQuery query); + + +} diff --git a/src/main/java/cokr/xit/fims/nxrp/service/NisIndivService.java b/src/main/java/cokr/xit/fims/nxrp/service/NisIndivService.java new file mode 100644 index 00000000..518a48d6 --- /dev/null +++ b/src/main/java/cokr/xit/fims/nxrp/service/NisIndivService.java @@ -0,0 +1,6 @@ +package cokr.xit.fims.nxrp.service; + +public interface NisIndivService { + + +} diff --git a/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivBean.java b/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivBean.java new file mode 100644 index 00000000..cc2957e9 --- /dev/null +++ b/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivBean.java @@ -0,0 +1,380 @@ +package cokr.xit.fims.nxrp.service.bean; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.FilenameFilter; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; + +import cokr.xit.base.code.service.bean.CodeBean; +import cokr.xit.base.file.ZIP; +import cokr.xit.base.file.service.bean.FileBean; +import cokr.xit.fims.cmmn.dao.StngMapper; +import cokr.xit.fims.cmmn.ftp.RemoteSystemInfo; +import cokr.xit.fims.cmmn.ftp.SFTPUtil; +import cokr.xit.fims.cmmn.service.bean.StngBean; +import cokr.xit.fims.mngt.dao.TaskMapper; +import cokr.xit.fims.nxrp.Hirer; +import cokr.xit.fims.nxrp.NisIndivQuery; +import cokr.xit.fims.nxrp.dao.NisIndivMapper; +import cokr.xit.fims.nxrp.support.OnlyTxtMaker; +import cokr.xit.fims.rent.dao.LsctAprvMapper; +import cokr.xit.foundation.component.AbstractBean; +import cokr.xit.foundation.data.DataObject; + +@Component("nisIndivBean") +public class NisIndivBean extends AbstractBean { + + @Resource(name="taskMapper") + private TaskMapper taskMapper; + + @Resource(name="nisIndivMapper") + private NisIndivMapper nisIndivMapper; + + @Resource(name="lsctAprvMapper") + private LsctAprvMapper lsctAprvMapper; + + /** 설정 정보 DAO */ + @Resource(name="stngMapper") + protected StngMapper stngMapper; + + /** 파일 정보 DAO */ + @Resource(name="fileBean") + protected FileBean fileBean; + + /** 코드 정보 DAO */ + @Resource(name="codeBean") + protected CodeBean codeBean; + + /** 설정 정보 DAO */ + @Resource(name="stngBean") + protected StngBean stngBean; + + public enum WORKING_UNIT { + DOWNLOAD_DIR, ZIP_PATH, TXT_PATH, TXT_LINE + } + + FilenameFilter zipFilter = new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + return (name.toUpperCase().endsWith(".ZIP")); + } + }; + + public String makeNisIndivJeju01(NisIndivQuery req, boolean randomData) { + + String sggCd = req.getSggCd(); + String taskSeCd = req.getTaskSeCd(); + String instDigit7 = "6510000"; + + + String deptCd = ""; + if(sggCd.equals("50110") && taskSeCd.equals("ECA")) { + deptCd = "6510245"; + } else if(sggCd.equals("50130") && taskSeCd.equals("ECA")) { + deptCd = "6520178"; + } + + String lsctLinkTblNm = "TB_LSCT_APRV_"+sggCd+"_"+taskSeCd; + req.setLsctLinkTblNm(lsctLinkTblNm); + + DataObject deptStng = stngMapper.selectDeptStng(deptCd); + String gujesi = deptStng.string("NXRP_RGN_SE_CD"); + + + List targets = null; + if(randomData) { + targets = this.makeRandomJeju01Targets(); + } else { + targets = nisIndivMapper.selectLcnsNoLinkTarget(req); + } + + + if(targets == null || targets.isEmpty()) { + return null; + } + + Iterator it = targets.iterator(); + while(it.hasNext()) { + DataObject item = it.next(); + if (item.string("OM_JNO").length() != 12) { + it.remove(); + } else { + item.set("DEPT_CD",deptCd); + } + } + + + OnlyTxtMaker linkFileMaker = new OnlyTxtMaker(instDigit7); + + if (!isEmpty(gujesi)) { + linkFileMaker.setGujesiStng(gujesi); + } + + LocalDateTime now = LocalDateTime.now(); + String ymd = now.format(DateTimeFormatter.ofPattern("yyyyMMdd")); + + + String workPath = "files/temp/sendLcns/"+sggCd+"/"+ymd; + File workFolder = new File(workPath); + if (workFolder.exists()) { + boolean del = false; + File[] lf = workFolder.listFiles(); + if (lf != null && lf.length > 0) { + for (File f : lf) { + del = f.delete(); + if (!del) + throw new RuntimeException("[F]파일삭제오류"); + } + } + del = workFolder.delete(); + if (!del) + throw new RuntimeException("[F]파일삭제오류"); + } + workFolder.mkdirs(); + + + for(DataObject one : targets) { + String[] items = linkFileMaker.extract(one,sggCd,taskSeCd).get(); + linkFileMaker.writeTextFileContents(workPath, items); + linkFileMaker.increaseInnerFileIndex(); + } + + File[] fileList = workFolder.listFiles(new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + return !(name.toUpperCase().endsWith(".ZIP")); + } + }); + String[] fileNameList = new String[fileList.length]; + for (int i = 0; i < fileList.length; i++) { + fileNameList[i] = fileList[i].getPath(); + } + + + String zipFilePath = workPath + "/" + linkFileMaker.getZipFileName(); + new ZIP().compress(zipFilePath, fileNameList); + + for (File file : fileList) { + if (!file.delete()) + throw new RuntimeException("[F]파일 삭제 중 오류가 발생하였습니다."); + } + + return zipFilePath; + } + + + + public void send_DO_to_SI(String zipPath) { + + SFTPUtil sftp = new SFTPUtil(); + RemoteSystemInfo rs = new RemoteSystemInfo(); + if(isLocal()) { + rs.setId("d_user"); + rs.setPw("1111"); + rs.setIp("211.119.124.122"); + rs.setPort("1922"); + rs.setWorkPath("StorkShareAgent_ECA_JEJU/files/SND/1741000NIS"); + } else { + rs.setId("d_user"); + rs.setPw("1111"); + rs.setIp("172.25.102.61"); + rs.setPort("1922"); + rs.setWorkPath("StorkShareAgent_ECA_JEJU/files/SND/1741000NIS"); + } + + rs.setOsType("windows"); + + + sftp.connect(rs); + + sftp.upload(zipPath); + sftp.disconnect(); + } + + public void get_SI_to_DO() { + + SFTPUtil sftp = new SFTPUtil(); + RemoteSystemInfo rs = new RemoteSystemInfo(); + if(isLocal()) { + rs.setId("d_user"); + rs.setPw("1111"); + rs.setIp("211.119.124.122"); + rs.setPort("1922"); + rs.setWorkPath("StorkShareAgent_ECA_JEJU/files/RCV/1741000NIS"); + } else { + rs.setId("d_user"); + rs.setPw("1111"); + rs.setIp("172.25.102.61"); + rs.setPort("1922"); + rs.setWorkPath("StorkShareAgent_ECA_JEJU/files/RCV/1741000NIS"); + } + rs.setOsType("windows"); + + + sftp.connect(rs); + sftp.downloadByFilenamePrefix("EBF_1741000NIS_Z000001LGE_2001","files/temp/receiveDriver"); + sftp.disconnect(); + } + + + public void applyNisIndivJeju02() { + List results = new ArrayList(); + getCarDriverInfoFromWorkingUnit(WORKING_UNIT.DOWNLOAD_DIR,"files/temp/receiveDriver",results); + for(Hirer result : results) { + updateDriverInfo(result); + } + + } + + public void getCarDriverInfoFromWorkingUnit(WORKING_UNIT pathType, String workingUnitString, List results) { + switch(pathType) { + case DOWNLOAD_DIR: + + List zips = new ArrayList<>(); + for(File file : new File(workingUnitString).listFiles(zipFilter)) { + + zips.add(file.getPath()); + } + + for(String zip : zips) { + getCarDriverInfoFromWorkingUnit(WORKING_UNIT.ZIP_PATH,zip,results); + } + break; + case ZIP_PATH: + + String zip = workingUnitString; + String unzip = workingUnitString.substring(0,zip.length()-4); + new ZIP().decompress(zip, unzip); + + List txts = new ArrayList<>(); + for(File file : new File(unzip).listFiles()) { + txts.add(file.getPath()); + } + + for(String txt : txts) { + getCarDriverInfoFromWorkingUnit(WORKING_UNIT.TXT_PATH,txt,results); + } + + new File(zip).delete(); + new File(unzip).delete(); + + break; + case TXT_PATH: + + File txtFile = new File(workingUnitString); + + List lines = new ArrayList<>(); + + try (BufferedReader reader = new BufferedReader(new FileReader(txtFile))) { + String line; + // 파일의 각 줄을 읽어와 화면에 출력합니다. + while ((line = reader.readLine()) != null) { + lines.add(line); + } + } catch (IOException e) { + // 파일이 존재하지 않거나 읽기 오류가 발생하면 예외를 처리합니다. + System.err.println("파일을 읽는 중 오류가 발생했습니다: " + e.getMessage()); + e.printStackTrace(); + return; + } + + for(String line : lines) { + if(line != null && !line.equals("")) { + getCarDriverInfoFromWorkingUnit(WORKING_UNIT.TXT_LINE,line,results); + } + } + + txtFile.delete(); + break; + case TXT_LINE: + + String[] items = workingUnitString.split("\\|",-1); + + Hirer driverVO = new Hirer(); + String srcSstKey = items[2-1]; + String sggCd = srcSstKey.substring(0,5); + String taskSeCd = srcSstKey.substring(5,8); + String aprvId = srcSstKey.substring(8); + + driverVO.setSggCd(sggCd); + driverVO.setTaskSeCd(taskSeCd); + driverVO.setAprvId(aprvId); + driverVO.setOmJno(items[5-1]); + driverVO.setLotnoRoadAddrSeCd(items[6-1]); + driverVO.setZip(items[7-1]); + driverVO.setRoadNmCd(items[8-1]); + driverVO.setAddrUdgdYn(items[9-1]); + driverVO.setBmno(items[10-1]); + driverVO.setBsno(items[11-1]); + driverVO.setAddr(items[12-1]); + driverVO.setDaddr(items[13-1]); + driverVO.setStdgCd(items[14-1]); + driverVO.setDongCd(items[15-1]); + + + results.add(driverVO); + + break; + } + } + + public List makeRandomJeju01Targets(){ + List result = new ArrayList<>(); + + DataObject tagets = new DataObject(); + + //APRV_ID + LocalDateTime now = LocalDateTime.now(); + String hms = now.format(DateTimeFormatter.ofPattern("HHmmss")); + tagets.put("APRV_ID", "9999"+hms); + + //랜덤 + tagets.put("VHRNO", shuffleAndGet(Arrays.asList("11가1111", "22가2222", "33가3333"))); + tagets.put("HIRER_NM", shuffleAndGet(Arrays.asList("최렌트", "김렌트", "박렌트"))); + tagets.put("OM_JNO", shuffleAndGet(Arrays.asList("123456123456", "654321654321", "123456654321"))); + tagets.put("RENT_ENT_NM", shuffleAndGet(Arrays.asList("롯데렌트카", "제주렌트카", "기타렌트카"))); + tagets.put("RENT_ENT_REG_NO", shuffleAndGet(Arrays.asList("1111112222222", "1111113333333", "1111114444444"))); + + //CTRT_BGNG_YMD,CTRT_END_YMD는 9월1일~9월16일 + tagets.put("CTRT_BGNG_YMD", "20250901"); + tagets.put("CTRT_END_YMD", "20250916"); + //CTRT_NO는 빈값 + tagets.put("CTRT_NO", ""); + result.add(tagets); + return result; + } + + public String shuffleAndGet(List list) { + Collections.shuffle(list); + return list.get(0); + } + + public boolean updateDriverInfo(Hirer driverInfo) { + + String table = "TB_LSCT_APRV_"+driverInfo.getSggCd()+"_"+driverInfo.getTaskSeCd(); + driverInfo.setLsctLinkTblNm(table); + + return lsctAprvMapper.updateDriverInfo(driverInfo) == 1 ? true : false; + } + + + public boolean isLocal() { + if(new File("C:/Users/XIT_LBJ").exists()) { + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivServiceBean.java b/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivServiceBean.java new file mode 100644 index 00000000..b1c14872 --- /dev/null +++ b/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivServiceBean.java @@ -0,0 +1,18 @@ +package cokr.xit.fims.nxrp.service.bean; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import cokr.xit.fims.nxrp.service.NisIndivService; +import cokr.xit.foundation.component.AbstractServiceBean; + +@Service("nisIndivService") +public class NisIndivServiceBean extends AbstractServiceBean implements NisIndivService { + + @Resource(name = "nisIndivBean") + private NisIndivBean nisIndivBean; + + + +} diff --git a/src/main/java/cokr/xit/fims/nxrp/support/LinkFileMaker.java b/src/main/java/cokr/xit/fims/nxrp/support/LinkFileMaker.java new file mode 100644 index 00000000..26edc78d --- /dev/null +++ b/src/main/java/cokr/xit/fims/nxrp/support/LinkFileMaker.java @@ -0,0 +1,28 @@ +package cokr.xit.fims.nxrp.support; + +import cokr.xit.applib.UnnamedItems; +import cokr.xit.foundation.AbstractComponent; +import cokr.xit.foundation.data.DataObject; + +public abstract class LinkFileMaker extends AbstractComponent { + + protected String ifId; + protected String zipFileName; + protected String gujesiStng; + + public void setGujesiStng(String gujesi) { + this.gujesiStng = gujesi; + } + + public String getIfId() { + return ifId; + } + + public String getZipFileName() { + return zipFileName; + } + + abstract public UnnamedItems extract(DataObject rentInfo,String sggCd, String taskSeCd); + + +} diff --git a/src/main/java/cokr/xit/fims/nxrp/support/OnlyTxtMaker.java b/src/main/java/cokr/xit/fims/nxrp/support/OnlyTxtMaker.java new file mode 100644 index 00000000..81270125 --- /dev/null +++ b/src/main/java/cokr/xit/fims/nxrp/support/OnlyTxtMaker.java @@ -0,0 +1,80 @@ +package cokr.xit.fims.nxrp.support; + +import java.io.File; +import java.io.FileWriter; +import java.text.SimpleDateFormat; +import java.util.Date; + +import cokr.xit.applib.UnnamedItems; +import cokr.xit.foundation.data.DataObject; + +public class OnlyTxtMaker extends LinkFileMaker { + + private String innerFilePrefix; + + private int innerFileIndex = 0; + + public OnlyTxtMaker(String instDigit7){ + String ifId = "EBF_Z000001LGE_1741000NIS_2001"; + String systemCode = "ECA"; + + this.ifId = ifId; + + SimpleDateFormat ymdhmsFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String currentTime = ymdhmsFormat.format(new Date()); + + zipFileName = ifId + "_" + currentTime + "@" + instDigit7 + systemCode + ".zip"; + + innerFilePrefix = ifId + "_" + currentTime + "_" + instDigit7 + "_"; + + } + + public String getTextFileName() { + return innerFilePrefix + innerFileIndex + ".txt"; + } + + public void increaseInnerFileIndex() { + innerFileIndex++; + }; + + + @Override + public UnnamedItems extract(DataObject rentInfo, String sggCd, String taskSeCd) { + UnnamedItems u = new UnnamedItems(); + u.setItemLength(10); + u.set(1, sggCd+taskSeCd+rentInfo.string("APRV_ID")); + u.set(2, rentInfo.string("DEPT_CD")); + u.set(3, rentInfo.string("RENT_ENT_NM")); + u.set(4, rentInfo.string("RENT_ENT_REG_NO")); + u.set(5, rentInfo.string("VHRNO")); + u.set(6, rentInfo.string("CTRT_NO")); + u.set(7, rentInfo.string("CTRT_BGNG_YMD")); + u.set(8, rentInfo.string("CTRT_END_YMD")); + u.set(9, rentInfo.string("HIRER_NM")); + u.set(10, rentInfo.string("OM_JNO")); + return u; + } + + public void writeTextFileContents(String workPath, String... contents) { + try { + File txtFile = new File(workPath + "/" + getTextFileName()); + if(!txtFile.createNewFile()) { + throw new RuntimeException("[F]파일 생성 오류"); + } + + FileWriter fileWriter = new FileWriter(txtFile); + + for(int i=0; i < contents.length; i++) { + if(i != 0) { + fileWriter.write("|"); + } + fileWriter.write(contents[i]); + } + fileWriter.close(); + } catch (Exception e) { + throw new RuntimeException("[F]"+e); + } + } + + +} diff --git a/src/main/java/cokr/xit/fims/nxrp/web/NxrpController.java b/src/main/java/cokr/xit/fims/nxrp/web/NxrpController.java new file mode 100644 index 00000000..7e7108e8 --- /dev/null +++ b/src/main/java/cokr/xit/fims/nxrp/web/NxrpController.java @@ -0,0 +1,98 @@ +package cokr.xit.fims.nxrp.web; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import cokr.xit.fims.nxrp.NisIndivQuery; +import cokr.xit.fims.nxrp.service.NisIndivService; +import cokr.xit.fims.nxrp.service.bean.NisIndivBean; +import cokr.xit.foundation.web.AbstractController; + +@Controller +@RequestMapping(name="차세대 세외수입 연계", value=NxrpController.CLASS_URL) +public class NxrpController extends AbstractController { + + public static final String CLASS_URL = "/intf/nxrp"; + + + @Resource(name = "nisIndivService") + private NisIndivService nisIndivService; + @Resource(name = "nisIndivBean") + private NisIndivBean nisIndivBean; + + //테스트 + @RequestMapping(name="계약정보", value="/sendIndivJeju01.do") + public ModelAndView sendNisIndivJeju01(NisIndivQuery req) { + + NisIndivQuery query = new NisIndivQuery(); + query.setSggCd("50110"); + query.setTaskSeCd("ECA"); + String zipPath = nisIndivBean.makeNisIndivJeju01(query,true); + + if(zipPath != null && !zipPath.equals("")) { + nisIndivBean.send_DO_to_SI(zipPath); + } + + return new ModelAndView("jsonView"); + } + + //테스트 계약정보만들기 + @RequestMapping(name="계약정보만들기", value="/makeJeju01.do") + public ModelAndView makeJeju01(NisIndivQuery req) { + + NisIndivQuery query = new NisIndivQuery(); + query.setSggCd("50110"); + query.setTaskSeCd("ECA"); + String zipPath = nisIndivBean.makeNisIndivJeju01(query,true); + + return new ModelAndView("jsonView"); + } + + //테스트 계약정보 보내기 + @RequestMapping(name="sendDoToSi", value="/sendDoToSi.do") + public ModelAndView sendDoToSi(NisIndivQuery req) { + + LocalDateTime now = LocalDateTime.now(); + String ymd = now.format(DateTimeFormatter.ofPattern("yyyyMMdd")); + + nisIndivBean.send_DO_to_SI("/files/temp/sendLcns/50110/"+ymd); + + return new ModelAndView("jsonView"); + } + + + //테스트 면허정보응답파일 가져오기 + @RequestMapping(name="getSiToDo", value="/getSiToDo.do") + public ModelAndView getSiToDo(NisIndivQuery req) { + + nisIndivBean.get_SI_to_DO(); + + return new ModelAndView("jsonView"); + } + //테스트 + @RequestMapping(name="면허정보 응답 적용", value="/lcnsRespUnzip.do") + public ModelAndView lcnsRespUnzip(NisIndivQuery req) { + + nisIndivBean.applyNisIndivJeju02(); + + return new ModelAndView("jsonView"); + } + + //테스트 + @RequestMapping(name="면허정보 응답", value="/receiveIndivJeju02.do") + public ModelAndView receiveNisIndivJeju02(NisIndivQuery req) { + nisIndivBean.get_SI_to_DO(); + + nisIndivBean.applyNisIndivJeju02(); + + return new ModelAndView("jsonView"); + } + + +} diff --git a/src/main/java/cokr/xit/fims/rent/dao/LsctAprvMapper.java b/src/main/java/cokr/xit/fims/rent/dao/LsctAprvMapper.java index f824bbfc..fb4b257a 100644 --- a/src/main/java/cokr/xit/fims/rent/dao/LsctAprvMapper.java +++ b/src/main/java/cokr/xit/fims/rent/dao/LsctAprvMapper.java @@ -4,11 +4,11 @@ import java.util.List; import org.egovframe.rte.psl.dataaccess.mapper.Mapper; -import cokr.xit.foundation.component.AbstractMapper; -import cokr.xit.foundation.data.DataObject; - +import cokr.xit.fims.nxrp.Hirer; import cokr.xit.fims.rent.LsctAprv; import cokr.xit.fims.rent.RentQuery; +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; /** 임대차계약 승인 대장 정보 DAO * @@ -81,4 +81,6 @@ public interface LsctAprvMapper extends AbstractMapper { */ int deleteLsctAprv(LsctAprv lsctAprv); + int updateDriverInfo(Hirer driverInfo); + } diff --git a/src/main/resources/sql/mapper/fims/nxrp/nisIndiv-mapper.xml b/src/main/resources/sql/mapper/fims/nxrp/nisIndiv-mapper.xml new file mode 100644 index 00000000..503f1fa9 --- /dev/null +++ b/src/main/resources/sql/mapper/fims/nxrp/nisIndiv-mapper.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/sql/mapper/fims/rent/lsctAprv-mapper.xml b/src/main/resources/sql/mapper/fims/rent/lsctAprv-mapper.xml index 14c5fe79..991dbba0 100644 --- a/src/main/resources/sql/mapper/fims/rent/lsctAprv-mapper.xml +++ b/src/main/resources/sql/mapper/fims/rent/lsctAprv-mapper.xml @@ -418,4 +418,19 @@ AND DEL_YN = 'N' + + UPDATE ${lsctLinkTblNm} + SET OM_JNO = #{omJno} + , HIRER_ZIP = #{zip} + , HIRER_ADDR = #{addr} + , HIRER_DTL_ADDR = #{daddr} + , ROAD_NM_CD = #{roadNmCd} + , UDGD_SE_CD = #{addrUdgdYn} + , BMNO = #{bmno} + , BSNO = #{bsno} + , STDG_CD = #{stdgCd} + WHERE APRV_ID = #{aprvId} + AND CHG_APRV_STTS_CD = 'RQ' + AND DEL_YN = 'N' +