고지서 발송등록 수정

main
mjkhan21 2 months ago
parent 7a91e83511
commit 5d88969f3c

@ -14,6 +14,7 @@ import org.springframework.stereotype.Component;
import cokr.xit.base.user.service.bean.UserBean;
import cokr.xit.fims.FimsConf;
import cokr.xit.fims.cmmn.CrdnSttsHstry;
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.dao.CrdnInfoMapper;
@ -316,7 +317,8 @@ public class SnisBean extends ScheduledBean {
private void update(Ye22NoticeInfoDTO notice, SndngDtl sndngDtl) {
if (notice == null || sndngDtl == null) return;
boolean chenap = "체납".equals(notice.getBuStatusNm());
String status = notice.getBuStatusNm();
boolean chenap = "체납".equals(status);
sndngDtl.setSggCd(notice.getSiguCd()); // 시군구 코드
sndngDtl.setTaxNo(notice.getNapseNo()); // 납세번호
@ -335,8 +337,11 @@ public class SnisBean extends ScheduledBean {
sndngDtl.setDudtAftrAmt(null); // 납기후 금액
setBankAccounts(notice.accountGetters(), sndngDtl.bankAccountSetters()); // 은행 / 계좌번호
if (toInt(sndngDtl.getSndngDtlSttsCd()) < 2)
sndngDtl.setSndngDtlSttsCd("02"); // 발송 상태 코드(FIM050) 02:가상계좌취득
int sttsCd = toInt(sndngDtl.getSndngDtlSttsCd());
if (sttsCd < 2)
sndngDtl.setSndngDtlSttsCd("02"); // 발송 상태 코드(FIM050) 02:가상계좌취득
if ("완납".equals(status) && sttsCd != 9)
sndngDtl.setSndngDtlSttsCd("09"); // 발송 상태 코드(FIM050) 09:수납
}
private void update(List<Ye22NoticeInfoDTO> notices) {
@ -378,17 +383,36 @@ public class SnisBean extends ScheduledBean {
String statusCode = notice.getBuStatusCd(), // 과태료 상태
status = notice.getBuStatusNm(); // 상태이름
boolean paid = "완납".equals(status);
int rcvmtAmt = (int)notice.totalAmt();
log().debug("세외수입 연계키: {}, 상태: {}({})", linkMngKey, status, statusCode);
update(notice, levy); // 부과정보에 적용
levyMapper.updateLevy(levy);
// 사전부과 <- 상태: 부과, 구분: 신고
// 본부과 <- 상태: 부과, 구분: 수시분
if ("부과".equals(status)) {
// 상태 == 부과 && 구분 == 신고 -> 사전부과(23)
// 상태 == 부과 && 구분 == 수시분 -> 본부과(51)
String noticeStatus = "신고".equals(notice.getTaxGubunNm()) ? "23" : "51",
crdnStatus = crdn.getCrdnSttsCd();
switch (noticeStatus) {
case "23":
if (crdnStatus.compareTo(noticeStatus) < 0) // 현재상태가 사전부과보다 작을 경우
crdnStatus = noticeStatus;
break;
case "51":
if (crdnStatus.compareTo(noticeStatus) < 0) // 현재상태가 본부과보다 작을 경우
crdnStatus = noticeStatus;
break;
default: break;
}
if (!equals(crdnStatus, crdn.getCrdnSttsCd())) {
CrdnSttsHstry statusHistory = CrdnSttsHstry.create(crdnStatus, null, crdn);
crdnSttsHstryBean.create(statusHistory);
crdnSttsHstryBean.updateCrdn(statusHistory);
}
}
if (paid) {
if ("완납".equals(status)) {
Rcvmt rcvmt = Rcvmt.create(levy); // 수납등록
rcvmt.setRcvmtAmt(rcvmtAmt); // 수납금액
rcvmt.setRcvmtYmd(notice.getNapbuYmd()); // 수납일자

@ -262,13 +262,7 @@ public class RcvmtBean extends AbstractBean {
default -> "";
};
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(levyInfo.string("CRDN_ID")); // 단속 ID
crdnSttsHstry.setBfrSttsCd(levyInfo.string("CRDN_STTS_CD")); // 단속 상태 코드
crdnSttsHstry.setBfrSttsChgDt(levyInfo.string("CRDN_STTS_CHG_DT")); // 단소 상태 변경 일시
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); // 단속상태코드(FIM010)
crdnSttsHstry.setTaskDtlId(rcvmt.getRcvmtId()); // 수납 ID
CrdnSttsHstry crdnSttsHstry = CrdnSttsHstry.create(newCrdnSttsCd, rcvmt.getRcvmtId(), null, levyInfo);
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
if (!crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry))
throw new RuntimeException("수납 등록 중 단속 대장의 단속상태 수정에 실패하였습니다.");

@ -1,5 +1,7 @@
package cokr.xit.fims.sndb;
import java.util.List;
import cokr.xit.fims.cmmn.CmmnQuery;
/**
@ -13,7 +15,6 @@ import cokr.xit.fims.cmmn.CmmnQuery;
* </pre>
*/
public class SndbQuery extends CmmnQuery {
private static final long serialVersionUID = 1L;
// ID
@ -72,6 +73,7 @@ public class SndbQuery extends CmmnQuery {
private String sndngSeCdFrom; // 발송 구분 코드 시작
private String sndngSeCdTo; // 발송 구분 코드 종료
private String sndngDtlSttsCd; // 발송 상세 상태 코드
private List<String> sndngDtlSttsCds; // 발송 상세 상태 코드
private String rcpnRelNm1;
private String rcpnRelNm2;
private String rcpnRelNm3;
@ -535,6 +537,15 @@ public class SndbQuery extends CmmnQuery {
return self();
}
public List<String> getSndngDtlSttsCds() {
return ifEmpty(sndngDtlSttsCds, () -> null);
}
public <T extends SndbQuery> T setSndngDtlSttsCds(List<String> sndngDtlSttsCds) {
this.sndngDtlSttsCds = sndngDtlSttsCds;
return self();
}
public String getSndngDtlSttsCd() {
return ifEmpty(sndngDtlSttsCd, () -> null);
}

@ -18,6 +18,8 @@ import cokr.xit.foundation.data.DataObject;
* </pre>
*/
public interface SndngDtlService {
List<SndngDtl> getSndngDetails(SndbQuery req);
/** .
* @param req
* @return

@ -60,6 +60,10 @@ public class SndngDtlBean extends AbstractBean {
@Resource(name = "nisIndivBean")
private NisIndivBean nisIndivBean;
public List<SndngDtl> getSndngDetails(SndbQuery req) {
return sndngDtlMapper.selectSndngDetails(req);
}
/** .
* @param req
* @return
@ -145,11 +149,11 @@ public class SndngDtlBean extends AbstractBean {
public String getNxrpIndivA03List(SndngDtl sndngDtl) {
// 발송 상세 상태 코드(SNDNG_DTL_STTS_CD) 가 세외수입부과(01)인 자료만 처리
if ("01".equals(sndngDtl.getSndngDtlSttsCd())) {
NisIndivQuery nisIndivQuery = new NisIndivQuery();
nisIndivQuery.setCrdnId(sndngDtl.getCrdnId());
nisIndivQuery.setSndngDtlId(sndngDtl.getSndngDtlId());
String a03Msg = nisIndivBean.createNisIndivA03(nisIndivQuery);
String a03Msg = nisIndivBean.createNisIndivA03(
new NisIndivQuery()
.setCrdnId(sndngDtl.getCrdnId())
.setSndngDtlId(sndngDtl.getSndngDtlId())
);
try {
ObjectMapper mapper = new ObjectMapper();
JsonNode linkRst = mapper.readTree(a03Msg);

@ -36,6 +36,11 @@ public class SndngDtlServiceBean extends ScheduledServiceBean implements SndngDt
@Resource(name = "svbtcBean")
private SvbtcBean svbtcBean;
@Override
public List<SndngDtl> getSndngDetails(SndbQuery req) {
return sndngDtlBean.getSndngDetails(req);
}
@Override
public List<DataObject> getSndngDtlList(SndbQuery req) {
return sndngDtlBean.getSndngDtlList(req);

@ -2223,11 +2223,27 @@ public class Sndb01Controller extends ApplicationController {
@Task
@RequestMapping(name="세외수입 체납상세 세목정보 조회", value=METHOD_URL.getNonTaxReceiptSpecialB01List)
public ModelAndView getNonTaxReceiptSpecialB01List(SndbQuery req) {
ModelAndView mav = getNonTaxReceiptIndividualA03List(req);
if (Boolean.TRUE.equals(mav.getModel().get("saved"))) {
List<DataObject> dtlIds = sndngDtlService.getSndngTrgtDtlIds(req);
mav.addObject("tnocs", dtlIds.size());
}
boolean saved = false;
List<SndngDtl> sndngDtls = sndngDtlService.getSndngDetails(req.setSndngDtlSttsCds(List.of(
"04", "05", "06", "07", "08"
)));
String rtnMsg = sndngDtls.isEmpty() ? "[F] 자료를 찾지못했습니다." : "";
boolean lntris = "lntris".equals(TaskProcessor.get().getNtrisInterface(req.getTaskSeCd()));
for (SndngDtl sndngDtl: sndngDtls) {
rtnMsg = lntris ? sndngDtlService.getNxrpIndivA03List(sndngDtl) : sndngDtlService.updatePreNotice(sndngDtl);
saved = rtnMsg.contains("[S]");
}
ModelAndView mav = new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
if (saved) {
sndngDtls = sndngDtlService.getSndngDetails(req);
mav.addObject("tnocs", sndngDtls.size())
.addObject("gramt", sndngDtls.stream().mapToInt(SndngDtl::getLastAmt).sum());
}
return mav;
/*
boolean saved = false;

@ -108,7 +108,14 @@ SELECT *
<where>
<if test='sndngDtlIds != null'>AND SNDNG_DTL_ID IN (<foreach collection="sndngDtlIds" item="sndngDtlId" separator=",">#{sndngDtlId}</foreach>)</if>
<if test='crdnIds != null'>AND CRDN_ID IN (<foreach collection="crdnIds" item="crdnId" separator=",">#{crdnId}</foreach>)</if>
</where></select>
<if test='schLevyYmd != null'>AND LEVY_YMD = #{schLevyYmd}</if>
<if test='schFrstDudtYmd != null'> AND DUDT_YMD = #{schFrstDudtYmd}</if>
<if test='schFyr != null'> AND FYR = #{schFyr}</if>
<if test="sndngDtlSttsCds != null"> AND SNDNG_DTL_STTS_CD IN (<foreach collection="sndngDtlSttsCds" item="sttsCd" separator=",">#{sttsCd}</foreach>)</if>
AND DEL_YN = 'N'
</where>
ORDER BY SNDNG_DTL_ID
</select>
<select id="selectSndngDtlsToSync" parameterType="map" resultMap="sndngDtlRow">/* 서울 세외수입 연계대상 발송상세 객체 조회(sndngDtlMapper.selectSndngDtlsToSync) */
SELECT B.*

Loading…
Cancel
Save