1. 임대차계약서 수기 등록 api 추가

2. 세외수입연계파일 검증계 전송api(테스트용) 추가
main
이범준 2 months ago
parent 9587d4b0e5
commit 50f9c1e972

@ -0,0 +1,16 @@
package cokr.xit.fims.appl.dao;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.rent.LsctAprv;
import cokr.xit.foundation.component.AbstractMapper;
@Mapper("applMapper")
public interface ApplMapper extends AbstractMapper {
int countRequestedLsctAprv(LsctAprv lsctAprv);
int updateInProgress(Crdn crdn);
}

@ -0,0 +1,231 @@
package cokr.xit.fims.appl.service.bean;
import java.text.SimpleDateFormat;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import cokr.xit.base.file.service.bean.FileBean;
import cokr.xit.fims.appl.dao.ApplMapper;
import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.levy.dao.LevyMapper;
import cokr.xit.fims.payer.service.bean.PayerBean;
import cokr.xit.fims.rent.LsctAprv;
import cokr.xit.fims.rent.dao.FinSysFtpMapper;
import cokr.xit.fims.rent.dao.LsctAprvMapper;
import cokr.xit.fims.rent.dao.LsctMapper;
import cokr.xit.fims.rent.dao.LsctMpngMapper;
import cokr.xit.fims.rent.dao.RentEntMapper;
import cokr.xit.foundation.component.AbstractBean;
@Component("applBean")
public class ApplBean extends AbstractBean {
/** 임대차계약 대장 정보 DAO */
@Resource(name = "applMapper")
private ApplMapper applMapper;
/** 임대차계약 대장 정보 DAO */
@Resource(name = "lsctMpngMapper")
private LsctMpngMapper lsctMpngMapper;
/** 임대차계약 승인 대장 정보 DAO */
@Resource(name = "lsctAprvMapper")
private LsctAprvMapper lsctAprvMapper;
/** 임대 기업 대장 정보 DAO */
@Resource(name = "rentEntMapper")
private RentEntMapper rentEntMapper;
/** 임대차계약 정보 정보 DAO */
@Resource(name = "lsctMapper")
private LsctMapper lsctMapper;
/** 파일 정보 Bean */
@Resource(name = "fileBean")
private FileBean fileBean;
/** 납부자 대장 정보 Bean */
@Resource(name = "payerBean")
private PayerBean payerBean;
/** 부과 대장 정보 DAO */
@Resource(name = "levyMapper")
private LevyMapper levyMapper;
@Resource(name = "finSysFtpMapper")
private FinSysFtpMapper finSysFtpMapper;
public int countRequestedLsctAprv(LsctAprv lsctAprv) {
return applMapper.countRequestedLsctAprv(lsctAprv);
}
public String createLsctAprv(LsctAprv lsctAprv) {
// 변수 선언
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
String sggCd = ifEmpty(lsctAprv.getSggCd(), ()->"");
String taskSeCd = ifEmpty(lsctAprv.getTaskSeCd(), ()->"");
if (sggCd.equals("")) {
rtnMsg = "[F] 시군구 코드 파라미터가 없습니다.(sggCd)";
return rtnMsg;
}
if (taskSeCd.equals("")) {
rtnMsg = "[F] 업무 구분 코드 파라미터가 없습니다.(taskSeCd)";
return rtnMsg;
}
// 연계 테이블명
if (sggCd.equals("50110") && taskSeCd.equals("ECA")) {
lsctAprv.setLsctLinkTblNm("TB_LSCT_APRV_50110_ECA");
} else if (sggCd.equals("50130") && taskSeCd.equals("ECA")) {
lsctAprv.setLsctLinkTblNm("TB_LSCT_APRV_50130_ECA");
} else {
rtnMsg = "[F] 작업 중 연계시스템이 확인되지 않았습니다.";
return rtnMsg;
}
String rentEntNm = ifEmpty(lsctAprv.getRentEntNm(), ()->"");
if (rentEntNm.equals("")) {
rtnMsg = "[F] 임대기업명 파라미터가 없습니다.(rentEntNm)";
return rtnMsg;
}
String rentEntRegNo = ifEmpty(lsctAprv.getRentEntRegNo(), ()->"");
rentEntRegNo = rentEntRegNo.replace("-", "");
if (rentEntRegNo.equals("")) {
rtnMsg = "[F] 임대기업등록번호 파라미터가 없습니다.(rentEntRegNo)";
return rtnMsg;
}
String vhrno = ifEmpty(lsctAprv.getVhrno(), ()->"");
if (vhrno.equals("")) {
rtnMsg = "[F] 차량번호 파라미터가 없습니다.(vhrno)";
return rtnMsg;
}
String hirerNm = ifEmpty(lsctAprv.getHirerNm(), ()->"");
if (hirerNm.equals("")) {
rtnMsg = "[F] 임차인명 파라미터가 없습니다.(hirerNm)";
return rtnMsg;
}
String omJno = ifEmpty(lsctAprv.getOmJno(), ()->"");
omJno = omJno.replace("-", "");
omJno = omJno.replace(" ", "");
if (omJno.equals("")) {
rtnMsg = "[F] 면허번호 파라미터가 없습니다.(omJno)";
return rtnMsg;
}
if (!CmmnUtil.isNumeric(omJno)) {
rtnMsg = "[F] 면허번호는 숫자만 입력 가능합니다.(omJno)";
return rtnMsg;
}
if (omJno.length() != 12) {
rtnMsg = "[F] 면허번호 자릿수는 12자리이여야 합니다.(omJno)";
return rtnMsg;
}
String crdnYmd = ifEmpty(lsctAprv.getCrdnYmd(), ()->"");
crdnYmd = crdnYmd.replace("-","");
if (crdnYmd.equals("")) {
rtnMsg = "[F] 단속일자 파라미터가 없습니다.(crdnYmd)";
return rtnMsg;
}
SimpleDateFormat sdf_ymd = new SimpleDateFormat("yyyyMMdd");
sdf_ymd.setLenient(false);
boolean ymdErr = false;
try {
sdf_ymd.parse(crdnYmd);
} catch (Exception e) {
ymdErr = true;
}
if (ymdErr) {
rtnMsg = "[F] 단속일자가 년월일 형식이 아닙니다.(crdnYmd)";
return rtnMsg;
}
String crdnTm = ifEmpty(lsctAprv.getCrdnTm(), ()->"");
crdnTm = crdnTm.replace(":","");
if (crdnTm.equals("")) {
rtnMsg = "[F] 단속시간 파라미터가 없습니다.(crdnTm)";
return rtnMsg;
}
SimpleDateFormat sdf_hms = new SimpleDateFormat("HHmmss");
sdf_hms.setLenient(false);
boolean hmsErr = false;
try {
sdf_hms.parse(crdnTm);
} catch (Exception e) {
hmsErr = true;
}
if (hmsErr) {
rtnMsg = "[F] 단속시간이 시분초 형식이 아닙니다.(crdnTm)";
return rtnMsg;
}
String ctrtBgngYmd = ifEmpty(lsctAprv.getCtrtBgngYmd(), ()->"");
ctrtBgngYmd = ctrtBgngYmd.replace("-","");
if (!ctrtBgngYmd.equals("")) {
try {
sdf_ymd.parse(ctrtBgngYmd);
} catch (Exception e) {
ymdErr = true;
}
if (ymdErr) {
rtnMsg = "[F] 계약시작일자가 년월일 형식이 아닙니다.(ctrtBgngYmd)";
return rtnMsg;
}
}
String ctrtEndYmd = ifEmpty(lsctAprv.getCtrtEndYmd(), ()->"");
ctrtEndYmd = ctrtEndYmd.replace("-","");
if (!ctrtEndYmd.equals("")) {
try {
sdf_ymd.parse(ctrtEndYmd);
} catch (Exception e) {
ymdErr = true;
}
if (ymdErr) {
rtnMsg = "[F] 계약종료일자가 년월일 형식이 아닙니다.(ctrtEndYmd)";
return rtnMsg;
}
}
lsctAprv.setHirerSeCd("01"); // 임차인 구분 코드
lsctAprv.setNxrpCrdnLinkYn("N"); // 세외수입 단속 연계 여부
lsctAprv.setAtchFileCnt(0); // 첨부 파일 수
lsctAprv.setLsctMpngId("9999999999");
// 현재 날짜 구하기
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String dmndDateTime = dateFormat.format(System.currentTimeMillis());
lsctAprv.setDmndYmd(dmndDateTime.substring(0, 8)); // 요청 일자
lsctAprv.setDmndTm(dmndDateTime.substring(8, 14)); // 요청 시각
lsctAprv.setChgAprvSttsCd("RQ"); // 변경 승인 상태
// 임대차계약 승인 대장(TB_LSCT_APRV)을 등록한다.
rtnNocs = lsctAprvMapper.insertLsctAprv(lsctAprv);
if (rtnNocs < 1) {
throw new RuntimeException("[F] 임대차계약 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 대장의 임차인수기등록 여부를 변경한다.
Crdn crdn = new Crdn();
crdn.setMmCode(lsctAprv.getMmCode());
crdn.setSggCd(lsctAprv.getSggCd());
crdn.setTaskSeCd(lsctAprv.getTaskSeCd());
applMapper.updateInProgress(crdn);
return "[S] 임대차계약 등록 작업이 정상 처리 되었습니다.";
}
}

@ -0,0 +1,93 @@
package cokr.xit.fims.appl.web;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import cokr.xit.applib.AppCmmnUtil;
import cokr.xit.fims.appl.service.bean.ApplBean;
import cokr.xit.fims.rent.LsctAprv;
import cokr.xit.foundation.web.AbstractController;
@Controller
@RequestMapping(name="응용프로그램 연계", value=ApplController.CLASS_URL)
public class ApplController extends AbstractController {
public static final String CLASS_URL = "/intf/appl";
@Resource(name = "applBean")
private ApplBean applBean;
@RequestMapping(name = "임대차계약정보 수기 등록", value="/createLeaseContractApproval.do")
public ModelAndView createLeaseContractApproval(HttpServletRequest hreq, @RequestBody LsctAprv lsctAprv) {
boolean saved = false;
String rtnMsg = "";
// 클라이언트 IP 확인
String remoteAddr = AppCmmnUtil.getClientIpAddr(hreq);
lsctAprv.setChgDmndIp(remoteAddr); // 변경 요청 IP
String sggCd = ifEmpty(lsctAprv.getSggCd(), ()->"");
String taskSeCd = ifEmpty(lsctAprv.getTaskSeCd(), ()->"");
if (sggCd.equals("")) {
rtnMsg = "[F] 시군구 코드 파라미터가 없습니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
if (taskSeCd.equals("")) {
rtnMsg = "[F] 업무 구분 코드 파라미터가 없습니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
// 연계 테이블명
if (sggCd.equals("50110") && taskSeCd.equals("ECA")) {
lsctAprv.setLsctLinkTblNm("TB_LSCT_APRV_50110_ECA");
} else if (sggCd.equals("50130") && taskSeCd.equals("ECA")) {
lsctAprv.setLsctLinkTblNm("TB_LSCT_APRV_50130_ECA");
} else {
rtnMsg = "[F] 작업 중 연계시스템이 확인되지 않았습니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
String mmCode = ifEmpty(lsctAprv.getMmCode(), ()->"");
if (mmCode.equals("")) {
rtnMsg = "[F] mmCode 파라미터가 없습니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
int existRq = applBean.countRequestedLsctAprv(lsctAprv);
if(existRq > 0) {
rtnMsg = "[F] 임대차계약서가 이미 등록되어 있습니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
rtnMsg = applBean.createLsctAprv(lsctAprv); // 등록
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
}

@ -211,6 +211,27 @@ public class NisIndivBean extends AbstractBean {
sftp.disconnect();
}
public void send_DO_to_SI_geomjung(String zipPath) {
SFTPUtil sftp = new SFTPUtil();
RemoteSystemInfo rs = new RemoteSystemInfo();
rs.setId("d_user");
rs.setPw("1111");
rs.setIp("172.25.102.61");
rs.setPort("1922");
rs.setWorkPath("StorkShareAgent_ECA_JEJU_dev/files/SND/1741000NIS");
rs.setOsType("windows");
sftp.connect(rs);
sftp.upload(zipPath);
sftp.disconnect();
}
public void get_SI_to_DO() {
SFTPUtil sftp = new SFTPUtil();

@ -5,9 +5,13 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
@ -21,6 +25,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import cokr.xit.base.file.ZIP;
import cokr.xit.fims.nxrp.Hirer;
import cokr.xit.fims.nxrp.NisIndivQuery;
import cokr.xit.fims.nxrp.service.NisIndivService;
@ -308,7 +313,36 @@ public class NxrpController extends AbstractController {
return new ModelAndView("jsonView");
}
@RequestMapping(name="검증계로 파일 보내기", value="/sendGeomjung.do")
public ModelAndView sendGeomjung(HttpServletRequest hreq) throws IOException {
String geomjungTestFolder = "files/temp/sendLcnsGeomjung";
File originalTxt = new File(geomjungTestFolder+"/test.txt");
SimpleDateFormat ymdhmsFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String currentTime = ymdhmsFormat.format(new Date());
String newName = "EBF_Z000001LGE_1741000NIS_2001_"+currentTime+"@6510000ECA";
String newTxtName = newName+".txt";
String newZipName = newName+".zip";
File newTxtFile = new File(geomjungTestFolder + "/" + newTxtName);
Files.copy(originalTxt.toPath(), newTxtFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
String zipFilePath = geomjungTestFolder + "/" + newZipName;
new ZIP().compress(zipFilePath, newTxtFile.getPath());
newTxtFile.delete();
nisIndivBean.send_DO_to_SI_geomjung(zipFilePath);
return new ModelAndView("jsonView");
}

@ -31,6 +31,10 @@ public class LsctAprv extends AbstractEntity {
*
*/
private String sggCd;
/**
*
*/
private String taskSeCd;
/**
*

@ -18,6 +18,7 @@ import cokr.xit.base.file.service.FileQuery;
import cokr.xit.base.file.service.bean.FileBean;
import cokr.xit.base.file.web.FileInfoFactory;
import cokr.xit.fims.FimsConf;
import cokr.xit.fims.appl.dao.ApplMapper;
import cokr.xit.fims.base.FimsUser;
import cokr.xit.fims.cmmn.ftp.RemoteSystemInfo;
import cokr.xit.fims.cmmn.ftp.SFTPUtil;
@ -51,6 +52,9 @@ import cokr.xit.foundation.data.DataObject;
@Component("lsctMpngBean")
public class LsctMpngBean extends AbstractBean {
@Resource(name = "applMapper")
private ApplMapper applMapper;
/** 임대차계약 대장 정보 DAO */
@Resource(name = "lsctMpngMapper")
private LsctMpngMapper lsctMpngMapper;

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.fims.appl.dao.ApplMapper">
<select id="countRequestedLsctAprv" parameterType="cokr.xit.fims.rent.LsctAprv" resultType="int">
SELECT COUNT(*)
FROM TB_LSCT_MPNG LM
LEFT OUTER JOIN TB_LSCT L ON (LM.LSCT_ID = L.LSCT_ID)
LEFT OUTER JOIN TB_RENT_ENT RE ON (LM.ENT_ID = RE.ENT_ID)
LEFT OUTER JOIN TB_CRDN C ON (LM.CRDN_ID = C.CRDN_ID)
WHERE LM.DEL_YN = 'N'
AND LM.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
AND LM.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
AND LM.DMND_YN = 'Y' <!-- 요청 여부 -->
AND LM.CHG_APRV_STTS_CD = 'RQ' <!-- 변경 승인 상태 -->
AND C.CRDN_STTS_CD BETWEEN '11' AND '45'
AND LM.LSCT_MPNG_ID != '9999999999'
AND C.MM_CODE = #{mmCode}
</select>
<update id="updateInProgress" parameterType="cokr.xit.fims.crdn.Crdn">
UPDATE TB_CRDN
SET IN_PROGRESS = 'Y'
WHERE DEL_YN = 'N'
AND MM_CODE = #{mmCode}
AND SGG_CD = #{sggCd}
AND TASK_SE_CD = #{taskSeCd}
</update>
</mapper>

@ -666,7 +666,8 @@
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, LM.LSCT_MPNG_ID <!-- 임대차계약 매핑 ID -->
, (CASE WHEN LM.LSCT_MPNG_ID IS NOT NULL AND LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'RQ' THEN '승인요청(요청중)'
, (CASE WHEN C.IN_PROGRESS = 'Y' THEN '담당자처리'
WHEN LM.LSCT_MPNG_ID IS NOT NULL AND LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'RQ' THEN '승인요청(요청중)'
WHEN LM.LSCT_MPNG_ID IS NOT NULL AND LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'RT' THEN '승인요청(요청취소)'
WHEN LM.LSCT_MPNG_ID IS NOT NULL AND LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'AP' THEN '승인요청(승인)'
WHEN LM.LSCT_MPNG_ID IS NOT NULL AND LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'UA' THEN '승인요청(미승인)'
@ -734,10 +735,12 @@
<when test='trgtSttsNm == "대상"'>
AND C.CRDN_STTS_CD BETWEEN '11' AND '45'
AND LM.LSCT_MPNG_ID IS NULL
AND C.IN_PROGRESS = 'N'
</when>
<when test='trgtSttsNm == "계약서등록"'>
AND LM.LSCT_MPNG_ID IS NOT NULL
AND LM.DMND_YN = 'N'
AND C.IN_PROGRESS = 'N'
</when>
<when test='trgtSttsNm == "승인요청"'>
AND LM.LSCT_MPNG_ID IS NOT NULL
@ -746,6 +749,10 @@
<when test='trgtSttsNm == "기타"'>
AND C.CRDN_STTS_CD NOT BETWEEN '11' AND '45'
AND LM.LSCT_MPNG_ID IS NULL
AND C.IN_PROGRESS = 'N'
</when>
<when test='trgtSttsNm == "담당자처리"'>
AND C.IN_PROGRESS = 'Y'
</when>
<otherwise>
</otherwise>
@ -829,7 +836,8 @@
, LM.MDFCN_DT <!-- 수정 일시 -->
, LM.MDFR <!-- 수정자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LM.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, (CASE WHEN LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'AP' THEN '승인'
, (CASE WHEN C.IN_PROGRESS = 'Y' THEN '담당자처리'
WHEN LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'AP' THEN '승인'
WHEN LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'UA' THEN '미승인'
WHEN LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'RQ' AND C.CRDN_STTS_CD BETWEEN '11' AND '45' THEN '요청중'
WHEN LM.DMND_YN = 'N' AND LM.CHG_APRV_STTS_CD = 'RT' AND C.CRDN_STTS_CD BETWEEN '11' AND '45' THEN '요청취소'
@ -932,28 +940,37 @@
<when test='trgtSttsNm == "승인"'>
AND LM.DMND_YN = 'Y' <!-- 요청 여부 -->
AND LM.CHG_APRV_STTS_CD = 'AP' <!-- 변경 승인 상태 -->
AND C.IN_PROGRESS = 'N'
</when>
<when test='trgtSttsNm == "미승인"'>
AND LM.DMND_YN = 'Y' <!-- 요청 여부 -->
AND LM.CHG_APRV_STTS_CD = 'UA' <!-- 변경 승인 상태 -->
AND C.IN_PROGRESS = 'N'
</when>
<when test='trgtSttsNm == "요청중"'>
AND LM.DMND_YN = 'Y' <!-- 요청 여부 -->
AND LM.CHG_APRV_STTS_CD = 'RQ' <!-- 변경 승인 상태 -->
AND C.CRDN_STTS_CD BETWEEN '11' AND '45'
AND C.IN_PROGRESS = 'N'
</when>
<when test='trgtSttsNm == "요청취소"'>
AND LM.DMND_YN = 'N' <!-- 요청 여부 -->
AND LM.CHG_APRV_STTS_CD = 'RT' <!-- 변경 승인 상태 -->
AND C.CRDN_STTS_CD BETWEEN '11' AND '45'
AND C.IN_PROGRESS = 'N'
</when>
<when test='trgtSttsNm == "대상"'>
AND LM.DMND_YN = 'N' <!-- 요청 여부 -->
AND LM.CHG_APRV_STTS_CD IS NULL <!-- 변경 승인 상태 -->
AND C.CRDN_STTS_CD BETWEEN '11' AND '45'
AND C.IN_PROGRESS = 'N'
</when>
<when test='trgtSttsNm == "담당자처리"'>
AND C.IN_PROGRESS = 'Y'
</when>
<otherwise>
AND C.CRDN_STTS_CD NOT BETWEEN '11' AND '45'
AND C.IN_PROGRESS = 'N'
</otherwise>
</choose>
</if>

Loading…
Cancel
Save