feat: NICE CI accept 진행
parent
9df9cd0a24
commit
b0946c2201
@ -0,0 +1,29 @@
|
|||||||
|
package cokr.xit.ens.modules.nice.mapper;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.*;
|
||||||
|
|
||||||
|
import cokr.xit.ens.modules.nice.model.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* description :
|
||||||
|
* packageName : cokr.xit.ens.modules.nice.mapper
|
||||||
|
* fileName : INiceMapper
|
||||||
|
* author : limju
|
||||||
|
* date : 2024 9월 30
|
||||||
|
* ======================================================================
|
||||||
|
* 변경일 변경자 변경 내용
|
||||||
|
* ----------------------------------------------------------------------
|
||||||
|
* 2024 9월 30 limju 최초 생성
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface INiceCiMapper {
|
||||||
|
List<NiceCiDTO.InputXit> selectNiceCiAcceptTgts(final NiceCiDTO.InputXit inputXit);
|
||||||
|
List<NiceCiDTO.InputDataXit> selectNiceCiAcceptDatas(final NiceCiDTO.InputXit inputXit);
|
||||||
|
|
||||||
|
int saveBill(final NiceCiDTO.BillDTO bill);
|
||||||
|
}
|
@ -0,0 +1,198 @@
|
|||||||
|
package cokr.xit.ens.modules.nice.model;
|
||||||
|
|
||||||
|
import java.time.*;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
|
||||||
|
import cokr.xit.ens.biz.iup.code.*;
|
||||||
|
import cokr.xit.ens.core.jpa.support.*;
|
||||||
|
import cokr.xit.ens.modules.common.ctgy.intgrnbill.support.code.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.*;
|
||||||
|
import lombok.*;
|
||||||
|
import lombok.experimental.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* description :
|
||||||
|
* packageName : cokr.xit.ens.modules.nice.model
|
||||||
|
* fileName : NiceCiDTO
|
||||||
|
* author : limju
|
||||||
|
* date : 2024 9월 30
|
||||||
|
* ======================================================================
|
||||||
|
* 변경일 변경자 변경 내용
|
||||||
|
* ----------------------------------------------------------------------
|
||||||
|
* 2024 9월 30 limju 최초 생성
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
public class NiceCiDTO {
|
||||||
|
@Schema(name = "InputXit DTO", description = "InputXit DTO")
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@SuperBuilder
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
public static class InputXit {
|
||||||
|
/**
|
||||||
|
* 연계입수아이디
|
||||||
|
*/
|
||||||
|
private Long lnkInputId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 기관코드
|
||||||
|
*/
|
||||||
|
private String orgCd;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 안내장 코드
|
||||||
|
*/
|
||||||
|
private String jobCd;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 입수 건수
|
||||||
|
*/
|
||||||
|
private Long totCnt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 상태값
|
||||||
|
*/
|
||||||
|
@Enumerated(EnumType.STRING)
|
||||||
|
private IupPrcsCd prcsCd;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 에러메세지
|
||||||
|
*/
|
||||||
|
private String errMsg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 발송일시분
|
||||||
|
*/
|
||||||
|
private LocalDateTime runDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 조회마감일시
|
||||||
|
*/
|
||||||
|
private LocalDateTime expiresDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 발송구분
|
||||||
|
*/
|
||||||
|
@Enumerated(EnumType.STRING)
|
||||||
|
private IupSendTypeCd sendType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 접수일시
|
||||||
|
*/
|
||||||
|
private String rcptDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 결재마감일시
|
||||||
|
*/
|
||||||
|
private LocalDateTime payExpiresDt;
|
||||||
|
|
||||||
|
List<InputDataXit> inputDataXits = new ArrayList<>();
|
||||||
|
|
||||||
|
private String regId;
|
||||||
|
private LocalDateTime regDt;
|
||||||
|
private String updId;
|
||||||
|
private LocalDateTime updDt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Schema(name = "InputDataXit DTO", description = "InputDataXit DTO")
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@SuperBuilder
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
public static class InputDataXit {
|
||||||
|
private String dataId;
|
||||||
|
private Long lnkInputId;
|
||||||
|
|
||||||
|
private String birthday;
|
||||||
|
|
||||||
|
private String callCenterNo;
|
||||||
|
|
||||||
|
private String carNo;
|
||||||
|
|
||||||
|
private String gender;
|
||||||
|
|
||||||
|
private String linkedUuid;
|
||||||
|
|
||||||
|
private String moblphonNo;
|
||||||
|
|
||||||
|
private String msgData;
|
||||||
|
|
||||||
|
@Lob
|
||||||
|
private String msgDtlData;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String payStatusCd;
|
||||||
|
|
||||||
|
private String payUrl;
|
||||||
|
|
||||||
|
private String sid;
|
||||||
|
|
||||||
|
private String regId;
|
||||||
|
private LocalDateTime regDt;
|
||||||
|
private String updId;
|
||||||
|
private LocalDateTime updDt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Schema(name = "BillDTO DTO", description = "BillDTO DTO")
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@SuperBuilder
|
||||||
|
public static class BillDTO {
|
||||||
|
private Long billId;
|
||||||
|
|
||||||
|
private String billUid;
|
||||||
|
|
||||||
|
private String billerUserKey;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 청구서 타입
|
||||||
|
*/
|
||||||
|
@Enumerated(EnumType.STRING)
|
||||||
|
private BillSeCd billSeCd;
|
||||||
|
|
||||||
|
private String orgCd;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 납부결제여부
|
||||||
|
*/
|
||||||
|
@Convert(converter = BooleanToYnConverter.class)
|
||||||
|
private Boolean paidAt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 지불유형
|
||||||
|
*/
|
||||||
|
@Enumerated(EnumType.STRING)
|
||||||
|
private PaidTypeCd paidType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 납부(결제) 날짜 - 14자리
|
||||||
|
*/
|
||||||
|
private String paidDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 납부(결제) 취소 날짜 - 14자리
|
||||||
|
*/
|
||||||
|
private String paidCancelDt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 카카오 청구서
|
||||||
|
*/
|
||||||
|
@Lob
|
||||||
|
private String docBillKko;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 네이버 청구서
|
||||||
|
*/
|
||||||
|
@Lob
|
||||||
|
private String docBillNv;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,107 @@
|
|||||||
|
package cokr.xit.ens.modules.nice.service;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.stereotype.*;
|
||||||
|
import org.springframework.transaction.annotation.*;
|
||||||
|
|
||||||
|
import cokr.xit.ens.biz.iup.code.*;
|
||||||
|
import cokr.xit.ens.core.aop.*;
|
||||||
|
import cokr.xit.ens.core.utils.*;
|
||||||
|
import cokr.xit.ens.modules.common.code.*;
|
||||||
|
import cokr.xit.ens.modules.common.ctgy.sys.mng.service.*;
|
||||||
|
import cokr.xit.ens.modules.nice.mapper.*;
|
||||||
|
import cokr.xit.ens.modules.nice.model.*;
|
||||||
|
import cokr.xit.ens.modules.nice.service.support.*;
|
||||||
|
import lombok.*;
|
||||||
|
import lombok.extern.slf4j.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* description :
|
||||||
|
* packageName : cokr.xit.ens.modules.nice.service
|
||||||
|
* fileName : NiceCiService
|
||||||
|
* author : limju
|
||||||
|
* date : 2024 9월 27
|
||||||
|
* ======================================================================
|
||||||
|
* 변경일 변경자 변경 내용
|
||||||
|
* ----------------------------------------------------------------------
|
||||||
|
* 2024 9월 27 limju 최초 생성
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class NiceCiAcceptService {
|
||||||
|
@Value("${contract.niceCi.orgId}")
|
||||||
|
private String ORG_ID;
|
||||||
|
|
||||||
|
@Value("${contract.niceCi.clientId}")
|
||||||
|
private String CLIENT_ID;
|
||||||
|
|
||||||
|
private final KeySequenceService keySequenceService;
|
||||||
|
private final NiceCiApiService niceCiApiService;
|
||||||
|
|
||||||
|
private final INiceCiMapper niceCiMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* -- 1. 대상 조회
|
||||||
|
* SELECT *
|
||||||
|
* FROM tb_input_xit tix
|
||||||
|
* JOIN tb_input_data_xit tidx
|
||||||
|
* ON tix.lnk_input_id=tidx.lnk_input_id
|
||||||
|
* WHERE 1=1
|
||||||
|
* -- AND tix.send_type='NI'
|
||||||
|
* AND tix.prcs_cd='TGRG'
|
||||||
|
*
|
||||||
|
* -- 2. bill 생성
|
||||||
|
* -- 3. 카카오 청구서 생성
|
||||||
|
* -- 4. tb_input_data_xit 테이블 pay_url 에 청구서 URL UPDATE
|
||||||
|
* -- 5. tb_input_xit 테이블 prcs_cd='GRUC' / 실패 시 prcs_cd='TGRF'
|
||||||
|
* @return
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||||
|
public EnsResponseVO<?> accept(){
|
||||||
|
NiceCiDTO.InputXit inputXit = NiceCiDTO.InputXit.builder()
|
||||||
|
.sendType(IupSendTypeCd.NI)
|
||||||
|
.prcsCd(IupPrcsCd.TGRG)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
final List<NiceCiDTO.InputXit> list = niceCiMapper.selectNiceCiAcceptTgts(inputXit);
|
||||||
|
|
||||||
|
list.forEach(niceCiMapper::selectNiceCiAcceptDatas);
|
||||||
|
|
||||||
|
final String prefixBillUid = PostSeCd.intgrnNoti.getCode() + "-" + IdGenerator.getCurrentTimeSec();
|
||||||
|
|
||||||
|
List<NiceCiDTO.BillDTO> bills = new ArrayList<>();
|
||||||
|
for(NiceCiDTO.InputXit d : list){
|
||||||
|
List<NiceCiDTO.InputDataXit> inputDataXits = niceCiMapper.selectNiceCiAcceptDatas(d);
|
||||||
|
|
||||||
|
// bill
|
||||||
|
bills.add(
|
||||||
|
NiceCiDTO.BillDTO.builder()
|
||||||
|
//.billId(keySequenceService.getKeySequence("bill_id"))
|
||||||
|
.billUid(IdGenerator.getShortUUID(prefixBillUid))
|
||||||
|
//.billerUserKey(document.getXit_property().getBill_acpt_data().getBillerUserKey())
|
||||||
|
//.billSeCd(document.getXit_property().getBill_acpt_data().getBillSe())
|
||||||
|
//.orgMng(OrgMng.builder().orgCd(reqDTO.getOrg_cd()).build())
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
bills.forEach(b -> {
|
||||||
|
b.setBillId(keySequenceService.getKeySequence("bill_id"));
|
||||||
|
niceCiMapper.saveBill(b);
|
||||||
|
});
|
||||||
|
|
||||||
|
return EnsResponseVO.okBuilder()
|
||||||
|
//.resultInfo(niceCiMapper.selectAcceptTgts(null))
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
<?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.ens.modules.nice.mapper.INiceCiMapper">
|
||||||
|
<!-- =================================================================================== -->
|
||||||
|
<!-- ================================ accept =========================================== -->
|
||||||
|
<!-- =================================================================================== -->
|
||||||
|
|
||||||
|
<select id="selectNiceCiAcceptTgts" parameterType="cokr.xit.ens.modules.nice.model.NiceCiDTO$InputXit" resultType="cokr.xit.ens.modules.nice.model.NiceCiDTO$InputXit">
|
||||||
|
/** iup-niceci-mapper|selectNiceCiAcceptTgts-NICE CI 발송 대상 조회|julim */
|
||||||
|
SELECT lnk_input_id
|
||||||
|
, err_msg
|
||||||
|
, expires_dt
|
||||||
|
, org_cd
|
||||||
|
, pay_expires_dt
|
||||||
|
, prcs_cd
|
||||||
|
, rcpt_dt
|
||||||
|
, run_dt
|
||||||
|
, send_type
|
||||||
|
, tot_cnt
|
||||||
|
, job_cd
|
||||||
|
, reg_dt
|
||||||
|
, reg_id
|
||||||
|
, upd_dt
|
||||||
|
, upd_id
|
||||||
|
FROM tb_input_xit
|
||||||
|
-- WHERE send_type='NI'
|
||||||
|
-- AND prcs_cd='TGRG';
|
||||||
|
where ORG_CD = '0005'
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectNiceCiAcceptDatas" parameterType="cokr.xit.ens.modules.nice.model.NiceCiDTO$InputXit" resultType="cokr.xit.ens.modules.nice.model.NiceCiDTO$InputDataXit">
|
||||||
|
/** iup-niceci-mapper|selectNiceCiAcceptDatas-NICE CI 발송 대상 조회|julim */
|
||||||
|
SELECT data_id
|
||||||
|
, birthday
|
||||||
|
, call_center_no
|
||||||
|
, car_no
|
||||||
|
, gender
|
||||||
|
, linked_uuid
|
||||||
|
, moblphon_no
|
||||||
|
, msg_data
|
||||||
|
, msg_dtl_data
|
||||||
|
, name
|
||||||
|
, pay_status_cd
|
||||||
|
, pay_url
|
||||||
|
, sid
|
||||||
|
, lnk_input_id
|
||||||
|
, reg_dt
|
||||||
|
, reg_id
|
||||||
|
, upd_dt
|
||||||
|
, upd_id
|
||||||
|
FROM tb_input_data_xit
|
||||||
|
WHERE lnk_input_id = #{lnkInputId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<insert id="saveBill" parameterType="cokr.xit.ens.modules.nice.model.NiceCiDTO$BillDTO">
|
||||||
|
/** iup-niceci-mapper|saveBill-NICE CI 청구서 생성|julim */
|
||||||
|
INSERT INTO ens_bill (
|
||||||
|
bill_id,
|
||||||
|
bill_uid,
|
||||||
|
bill_se_cd,
|
||||||
|
-- doc_bill_kko,
|
||||||
|
-- doc_bill_nv,
|
||||||
|
org_cd,
|
||||||
|
biller_user_key,
|
||||||
|
-- paid_at,
|
||||||
|
-- paid_cancel_dt,
|
||||||
|
-- paid_dt,
|
||||||
|
-- paid_type,
|
||||||
|
regist_dt
|
||||||
|
) VALUES (
|
||||||
|
#{billId},
|
||||||
|
#{billUid},
|
||||||
|
#{billSeCd},
|
||||||
|
#{orgCd},
|
||||||
|
#{billerUserKey},
|
||||||
|
sysdate
|
||||||
|
) )
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
</mapper>
|
Loading…
Reference in New Issue