refactor: iup 모듈외 제거
parent
f41e66e7cb
commit
ad66abf3df
@ -1,40 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.code;
|
||||
|
||||
import cokr.xit.ens.core.code.CodeMapperType;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 주정차웹 전자고지 발송처리상태 코드
|
||||
*/
|
||||
public enum SndngProcessSttusCd implements CodeMapperType {
|
||||
|
||||
accept("접수")
|
||||
, acptok("접수성공")
|
||||
, acptfail("접수실패")
|
||||
|
||||
, ensmake("제작")
|
||||
, ensstart("전송시작")
|
||||
, ensok("전송성공")
|
||||
, ensfail("전송실패")
|
||||
, ensopen("열람중")
|
||||
, ensclose("조회기간마감")
|
||||
;
|
||||
|
||||
private final String code;
|
||||
private final String codeNm;
|
||||
SndngProcessSttusCd(String codeNm) {
|
||||
this.code = this.name();
|
||||
this.codeNm = codeNm;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCodeNm() {
|
||||
return this.codeNm;
|
||||
}
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.code;
|
||||
|
||||
import cokr.xit.ens.core.code.CodeMapperType;
|
||||
|
||||
|
||||
/**
|
||||
* 주정차웹 전자고지 발송결과상태 코드
|
||||
*/
|
||||
public enum SndngResultSttusCd implements CodeMapperType {
|
||||
|
||||
UNKNOWN("알수없음")
|
||||
|
||||
, REG("등록")
|
||||
, MAKING("제작")
|
||||
|
||||
, ACPT_OK("접수요청성공")
|
||||
, ACPT_FAIL("접수실패")
|
||||
, ACPT_CMPLT("접수완료")
|
||||
|
||||
|
||||
, UNIDENTIFIED_USER("비회원")
|
||||
, FORBIDDEN("수신거부")
|
||||
, INVALID_VALUE("파라미터 오류")
|
||||
, INTERNAL_ERROR("API 서버 내부 오류")
|
||||
, INVALID_REQUEST("유효하지 않은 요청")
|
||||
, FORBIDDEN_USER("허용되지 않은 사용자")
|
||||
|
||||
, FAIL("전송실패")
|
||||
, SENT("송신")
|
||||
, RECEIVED("수신")
|
||||
, READ("열람")
|
||||
, EXPIRED("만료")
|
||||
;
|
||||
|
||||
private final String code;
|
||||
private final String codeNm;
|
||||
|
||||
SndngResultSttusCd(String codeNm) {
|
||||
this.code = this.name();
|
||||
this.codeNm = codeNm;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCodeNm() {
|
||||
return this.codeNm;
|
||||
}
|
||||
|
||||
|
||||
public static SndngResultSttusCd valueOfEnum(String statCd) {
|
||||
if (statCd == null)
|
||||
return SndngResultSttusCd.UNKNOWN;
|
||||
|
||||
SndngResultSttusCd sndngResultSttusCd = null;
|
||||
try {
|
||||
sndngResultSttusCd = SndngResultSttusCd.valueOf(statCd);
|
||||
} catch (IllegalArgumentException e) {
|
||||
sndngResultSttusCd = SndngResultSttusCd.UNKNOWN;
|
||||
}
|
||||
return sndngResultSttusCd;
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.code;
|
||||
|
||||
import cokr.xit.ens.core.code.CodeMapperType;
|
||||
|
||||
|
||||
/**
|
||||
* 주정차웹 전자고지 발송구분 코드
|
||||
*/
|
||||
public enum SndngSeCd implements CodeMapperType {
|
||||
|
||||
UNKNOWN("알수없음")
|
||||
,intgrnNoti("통합 전자고지")
|
||||
,kkoMydoc("카카오페이 내문서함(인증톡)")
|
||||
,kkoAlimtalk("카카오페이 알림톡")
|
||||
,nvSigntalk("네이버 고지서(인증톡)")
|
||||
,ktSigntalk("KT 인증톡")
|
||||
,ktGibis("KT 인증톡(지비스)");
|
||||
;
|
||||
|
||||
private final String code;
|
||||
private final String codeNm;
|
||||
SndngSeCd(String codeNm) {
|
||||
this.code = this.name();
|
||||
this.codeNm = codeNm;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCodeNm() {
|
||||
return this.codeNm;
|
||||
}
|
||||
|
||||
public static SndngSeCd valueOfEnum(String statCd) {
|
||||
if (statCd == null)
|
||||
return SndngSeCd.UNKNOWN;
|
||||
|
||||
SndngSeCd SndngSeCd = null;
|
||||
try {
|
||||
SndngSeCd = SndngSeCd.valueOf(statCd);
|
||||
} catch (IllegalArgumentException e) {
|
||||
SndngSeCd = SndngSeCd.UNKNOWN;
|
||||
}
|
||||
return SndngSeCd;
|
||||
}
|
||||
}
|
@ -1,130 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.init;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository.TcaNhtTmplatManageRepository;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository.TcaRlaybsnmManageRepository;
|
||||
import cokr.xit.ens.core.init.InitJpaRunner;
|
||||
import cokr.xit.ens.modules.common.code.PostSeCd;
|
||||
import cokr.xit.ens.modules.common.ctgy.sys.mng.model.OrgMngDTO;
|
||||
import cokr.xit.ens.modules.ktsigntalk.common.code.MTypeCd;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
* 주정차웹-천안
|
||||
*/
|
||||
//TODO: 데이터초기화 목적으로 사용. ex) 최초 배포 시
|
||||
//@Component
|
||||
@Transactional
|
||||
@Profile({"prod-traffic-cheonan", "local-test"})
|
||||
public class TrafficCaJpaRunner extends InitJpaRunner {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
|
||||
// @Value("${contract.custom.dng.nice.dici.rest.client-id}")
|
||||
// private String DNG_NICE_CD_CLIENT_ID;
|
||||
// @Value("${contract.custom.dng.nice.dici.rest.client-secret}")
|
||||
// private String DNG_NICE_CD_CLIENT_SECRET;
|
||||
// @Value("${contract.custom.dng.kakao.pay.mydoc.access-token}")
|
||||
// private String DNG_KKO_MD_ACCESS_TOKEN;
|
||||
// @Value("${contract.custom.dng.kakao.pay.mydoc.contract-uuid}")
|
||||
// private String DNG_KKO_MD_CONTRACT_UUID;
|
||||
//
|
||||
// @Value("${contract.custom.sbg.nice.dici.rest.client-id}")
|
||||
// private String SBG_NICE_CD_CLIENT_ID;
|
||||
// @Value("${contract.custom.sbg.nice.dici.rest.client-secret}")
|
||||
// private String SBG_NICE_CD_CLIENT_SECRET;
|
||||
// @Value("${contract.custom.sbg.kakao.pay.mydoc.access-token}")
|
||||
// private String SBG_KKO_MD_ACCESS_TOKEN;
|
||||
// @Value("${contract.custom.sbg.kakao.pay.mydoc.contract-uuid}")
|
||||
// private String SBG_KKO_MD_CONTRACT_UUID;
|
||||
|
||||
@Autowired
|
||||
private TcaRlaybsnmManageRepository tcaRlaybsnmManageRepository;
|
||||
@Autowired
|
||||
private TcaNhtTmplatManageRepository tcaNhtTmplatManageRepository;
|
||||
|
||||
@Override
|
||||
protected List<OrgMngDTO> createOrgMngDTO() {
|
||||
// List<OrgMngDTO> list = new ArrayList<>();
|
||||
// list.add(createOrgMngDTO("TCA01", "", "천안-동남구", "N", null, null, DNG_NICE_CD_CLIENT_ID, DNG_NICE_CD_CLIENT_SECRET, DNG_KKO_MD_ACCESS_TOKEN, DNG_KKO_MD_CONTRACT_UUID));
|
||||
// list.add(createOrgMngDTO("TCA02", "", "천안-서북구", "N", null, null, SBG_NICE_CD_CLIENT_ID, SBG_NICE_CD_CLIENT_SECRET, SBG_KKO_MD_ACCESS_TOKEN, SBG_KKO_MD_CONTRACT_UUID));
|
||||
// return list;
|
||||
return tcaRlaybsnmManageRepository.findAll().stream()
|
||||
.map(entity -> OrgMngDTO.builder()
|
||||
.orgCd(entity.getSignguCode())
|
||||
.orgNm(entity.getSignguNm())
|
||||
|
||||
.kkoMdAccessToken(entity.getKakaoAccessToken())
|
||||
.kkoMdContractUuid(entity.getKakaoContractUuid())
|
||||
|
||||
.kkoBpCsignYn("N")
|
||||
// .kkoBpBillerCode(KKO_BP_BILLER_CODE)
|
||||
// .kkoBpAuthorization(KKO_BP_AUTHORIZATION)
|
||||
// .kkoBpCsignPrepayApi(kkoBpPrepayApi)
|
||||
// .kkoBpCsignPayResultApi(kkoBpPayResultApi)
|
||||
|
||||
// .kkoAtBsid(KKO_AT_BSID)
|
||||
// .kkoAtPasswd(KKO_AT_PASSWD)
|
||||
// .kkoAtSenderKey(KKO_AT_SENDER_KEY)
|
||||
|
||||
.niceCdSiteCode(null)
|
||||
.niceCdSitePw(entity.getNiceSiteCode())
|
||||
.niceCdClientId(entity.getNiceClientId())
|
||||
.niceCdClientSercet(entity.getNiceClientSecret())
|
||||
|
||||
// .nvStXNaverClientId(NV_ST_X_NAVER_CLIENT_ID)
|
||||
// .nvStXNaverClientSecret(NV_ST_X_NAVER_CLIENT_SECRET)
|
||||
// .nvStOrgId(nvOrgId)
|
||||
|
||||
// .ktStAccessToken(null)
|
||||
// .ktStServiceCd(null)
|
||||
// .ktStServiceKey(null)
|
||||
.ktStClientId(entity.getKtClientId())
|
||||
.ktStClientSecret(entity.getKtClientSecret())
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Map<String, Object>> createTmpltMngDTO() {
|
||||
// List<Map<String, Object>> list = new ArrayList<>();
|
||||
// list.add(mapper.convertValue(createTmpltMngIntgrn(PostSeCd.kkoMydoc, PostSeCd.ktGibis, null, "TCA01", "TCA0001", "주정차단속-천안-동남구", "[천안-동남구] 소유차량(#{CAR_NO})의 주정차과태료", "Y"
|
||||
// , null
|
||||
// , createTmpltMngKkoMydoc(null, null, null, null, null, "044-211-3377", "문의처", "Y", "Y", "Y")
|
||||
// , null
|
||||
// , null
|
||||
// , createTmpltMngKtGibis(null, null, null, null, null, "MC001", MTypeCd.mms, 1, "044-211-3377", "044-211-3377", "Y", "Y", "Y")
|
||||
// )
|
||||
// , Map.class));
|
||||
// list.add(mapper.convertValue(createTmpltMngIntgrn(PostSeCd.kkoMydoc, PostSeCd.ktGibis, null, "TCA02", "TCA0001", "주정차단속-천안-서북구", "[천안-서북구] 소유차량(#{CAR_NO})의 주정차과태료", "Y"
|
||||
// , null
|
||||
// , createTmpltMngKkoMydoc(null, null, null, null, null, "044-211-3377", "문의처", "Y", "Y", "Y")
|
||||
// , null
|
||||
// , null
|
||||
// , createTmpltMngKtGibis(null, null, null, null, null, "MC001", MTypeCd.mms, 1, "044-211-3377", "044-211-3377", "Y", "Y", "Y")
|
||||
// )
|
||||
// , Map.class));
|
||||
// return list;
|
||||
|
||||
|
||||
return tcaNhtTmplatManageRepository.findAll().stream()
|
||||
.map(entity -> createTmpltMngIntgrn(PostSeCd.kkoMydoc, PostSeCd.ktGibis, null, entity.getSignguCode(), entity.getNhtTmplatId(), entity.getNhtSj(), entity.getNhtCn(), "Y"
|
||||
, null
|
||||
, createTmpltMngKkoMydoc(null, null, null, null, null, entity.getCstmrCnterTlphonNo(), entity.getCstmrCnterNm() == null ? "문의처" : entity.getCstmrCnterNm(), "Y", "Y", "Y")
|
||||
, null
|
||||
, null
|
||||
, createTmpltMngKtGibis(null, null, null, null, null, "?????", MTypeCd.mms, "2", 1, entity.getCstmrCnterTlphonNo(), entity.getCstmrCnterTlphonNo(), "Y", "Y", "Y")
|
||||
))
|
||||
.map(tmpltMngIntgrnDTO -> (Map<String, Object>) mapper.convertValue(tmpltMngIntgrnDTO, Map.class))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,70 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.code.SndngProcessSttusCd;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded.FieldCreate;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded.FieldUpdate;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* 전자고지 발송
|
||||
*/
|
||||
@Getter
|
||||
@ToString
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity
|
||||
@Table(name = "tb_elctrn_ntic_sndng")
|
||||
public class TcaElctrnNticSndng {
|
||||
|
||||
@Id
|
||||
@Column(name = "elctrn_ntic_sndng_id", length = 20)
|
||||
private String elctrnNticSndngId;
|
||||
|
||||
@Column(name = "signgu_code", length = 5)
|
||||
private String signguCode;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "nht_tmplat_id")
|
||||
private TcaNhtTmplatManage tcaNhtTmplatManage;
|
||||
|
||||
@Column(name = "sndng_ty_code", length = 5)
|
||||
private String sndngTyCode;
|
||||
|
||||
@Column(name = "sndng_co", length = 10)
|
||||
private Integer sndngCo;
|
||||
|
||||
@Column(name = "sndng_process_sttus", length = 2)
|
||||
@Setter
|
||||
@Enumerated(EnumType.STRING)
|
||||
private SndngProcessSttusCd sndngProcessSttus;
|
||||
|
||||
@Column(name = "sndng_dt", length = 14)
|
||||
private String sndngDt;
|
||||
|
||||
@Column(name = "clos_dt", length = 14)
|
||||
private String closDt;
|
||||
|
||||
@Embedded
|
||||
private FieldCreate create;
|
||||
|
||||
@Embedded
|
||||
@Setter
|
||||
private FieldUpdate update;
|
||||
|
||||
@Column(name = "error_cn", length = 1000)
|
||||
@Setter
|
||||
private String errorCn;
|
||||
|
||||
@Lob
|
||||
@Setter
|
||||
@Column(name = "error_dtls")
|
||||
private String errorDtls;
|
||||
|
||||
|
||||
@Column(name = "ffnlg_code", length = 2)
|
||||
private String ffnlgCode;
|
||||
|
||||
}
|
@ -1,82 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded.FieldCreate;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded.FieldUpdate;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import org.hibernate.annotations.DynamicUpdate;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* 전자고지 발송상세
|
||||
*/
|
||||
@Getter
|
||||
@ToString
|
||||
@Builder
|
||||
@DynamicUpdate
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity
|
||||
@Table(name = "tb_elctrn_ntic_sndng_detail", schema = "", catalog = "", indexes = {
|
||||
@Index(name = "idx_tca_ens_detail_01", columnList = "main_code"),
|
||||
// @Index(name = "idx_tca_ens_detail_02", columnList = "external_document_uuid"),
|
||||
})
|
||||
public class TcaElctrnNticSndngDetail {
|
||||
|
||||
|
||||
@Id
|
||||
@Column(name = "elctrn_ntic_sndng_detail_id", length = 20)
|
||||
private String elctrnNticSndngDetailId;
|
||||
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "elctrn_ntic_sndng_id")
|
||||
private TcaElctrnNticSndng elctrnNticSndng;
|
||||
|
||||
|
||||
@Column(name = "signgu_code", length = 5)
|
||||
private String signguCode;
|
||||
|
||||
|
||||
@Column(name = "main_code", length = 20)
|
||||
private String mainCode;
|
||||
|
||||
|
||||
@Column(name = "ihidnum", length = 100, updatable = false)
|
||||
private String ihidnum;
|
||||
|
||||
|
||||
// @Lob
|
||||
// @Column(name = "cn_detail")
|
||||
// private String cnDetail;
|
||||
|
||||
|
||||
@Lob
|
||||
@Column(name = "tmplt_msg_data")
|
||||
private String tmpltMsgData;
|
||||
|
||||
|
||||
@Lob
|
||||
@Column(name = "mobile_page_cn")
|
||||
private String mobilePageCn;
|
||||
|
||||
@Embedded
|
||||
private FieldCreate create;
|
||||
|
||||
@Embedded
|
||||
private FieldUpdate update;
|
||||
|
||||
|
||||
@Column(name = "external_document_uuid", length = 40)
|
||||
@Setter
|
||||
private String externalDocumentUuid;
|
||||
|
||||
|
||||
|
||||
@Column(name = "ffnlg_code", length = 2)
|
||||
private String ffnlgCode;
|
||||
|
||||
@Column(name = "use_instt_idntfc_id")
|
||||
private Integer useInsttIdntfcId;
|
||||
}
|
@ -1,65 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.code.SndngResultSttusCd;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.code.SndngSeCd;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded.FieldCreate;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import org.hibernate.annotations.UpdateTimestamp;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 전자고지 발송결과
|
||||
*/
|
||||
@Getter
|
||||
@ToString
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity
|
||||
@Table(name = "tb_elctrn_ntic_sndng_result")
|
||||
public class TcaElctrnNticSndngResult {
|
||||
|
||||
|
||||
|
||||
@Id
|
||||
@Column(name = "elctrn_ntic_sndng_detail_id", length = 20)
|
||||
private String elctrnNticSndngDetailId;
|
||||
|
||||
|
||||
@Column(name = "sndng_result_sttus", length = 20)
|
||||
@Enumerated(EnumType.STRING)
|
||||
private SndngResultSttusCd sndngResultSttus;
|
||||
|
||||
|
||||
@Column(name = "requst_dt", length = 14)
|
||||
private String requstDt;
|
||||
|
||||
|
||||
@Column(name = "inqire_dt", length = 14)
|
||||
private String inqireDt;
|
||||
|
||||
|
||||
@Column(name = "readng_dt", length = 14)
|
||||
private String readngDt;
|
||||
|
||||
|
||||
@Column(name = "error_cn", length = 1000)
|
||||
private String errorCn;
|
||||
|
||||
@Embedded
|
||||
private FieldCreate create;
|
||||
|
||||
|
||||
@UpdateTimestamp
|
||||
@Column(name = "last_updt_dt", nullable = true)
|
||||
private LocalDateTime lastUpdtDt;
|
||||
|
||||
|
||||
|
||||
@Column(name = "sndng_se", length = 10)
|
||||
@Enumerated(EnumType.STRING)
|
||||
private SndngSeCd sndngSe;
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded.FieldCreate;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded.FieldUpdate;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* 전자고지 템플릿관리
|
||||
*/
|
||||
@Getter
|
||||
@ToString
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity
|
||||
@Table(name = "tb_nht_tmplat_manage")
|
||||
public class TcaNhtTmplatManage {
|
||||
|
||||
|
||||
@Id
|
||||
@Column(name = "nht_tmplat_id", length = 5)
|
||||
private String nhtTmplatId;
|
||||
|
||||
|
||||
@Column(name = "signgu_code", length = 5)
|
||||
private String signguCode;
|
||||
|
||||
|
||||
@Column(name = "sndng_ty_code", length = 1)
|
||||
private String sndngTyCode;
|
||||
|
||||
|
||||
@Column(name = "nht_nm", length = 1000)
|
||||
private String nhtNm;
|
||||
|
||||
|
||||
@Column(name = "nht_sj", length = 1000)
|
||||
private String nhtSj;
|
||||
|
||||
@Column(name = "nhtCn", length = 4000)
|
||||
private String nhtCn;
|
||||
|
||||
|
||||
@Column(name = "cstmr_cnter_nm", length = 100)
|
||||
private String cstmrCnterNm;
|
||||
|
||||
|
||||
@Column(name = "cstmr_cnter_tlphon_no", length = 14)
|
||||
private String cstmrCnterTlphonNo;
|
||||
|
||||
|
||||
@Column(name = "redirect_url", length = 255)
|
||||
private String redirectUrl;
|
||||
|
||||
|
||||
@Column(name = "use_at", length = 1)
|
||||
private String useAt;
|
||||
|
||||
@Embedded
|
||||
private FieldCreate create;
|
||||
|
||||
@Embedded
|
||||
private FieldUpdate update;
|
||||
|
||||
|
||||
}
|
@ -1,70 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded.FieldCreate;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded.FieldUpdate;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* 전자고지 기관관리
|
||||
*/
|
||||
@Getter
|
||||
@ToString
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity
|
||||
@Table(name = "tb_rlaybsnm_manage")
|
||||
public class TcaRlaybsnmManage {
|
||||
|
||||
|
||||
@Id
|
||||
@Column(name = "signgu_code", length = 5)
|
||||
private String signguCode;
|
||||
|
||||
|
||||
@Column(name = "ffnlg_code")
|
||||
private String ffnlgCode;
|
||||
|
||||
|
||||
@Column(name = "signgu_nm")
|
||||
private String signguNm;
|
||||
|
||||
|
||||
@Column(name = "kakao_access_token")
|
||||
private String kakaoAccessToken;
|
||||
|
||||
|
||||
@Column(name = "kakao_contract_uuid")
|
||||
private String kakaoContractUuid;
|
||||
|
||||
|
||||
@Column(name = "nice_site_code")
|
||||
private String niceSiteCode;
|
||||
|
||||
|
||||
@Column(name = "nice_client_id")
|
||||
private String niceClientId;
|
||||
|
||||
|
||||
@Column(name = "nice_client_secret")
|
||||
private String niceClientSecret;
|
||||
|
||||
|
||||
@Column(name = "kt_client_id")
|
||||
private String ktClientId;
|
||||
|
||||
|
||||
@Column(name = "kt_client_secret")
|
||||
private String ktClientSecret;
|
||||
|
||||
@Embedded
|
||||
private FieldCreate create;
|
||||
|
||||
@Embedded
|
||||
private FieldUpdate update;
|
||||
|
||||
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embeddable;
|
||||
import javax.persistence.PrePersist;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
||||
@Embeddable
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public class FieldCreate {
|
||||
|
||||
// @CreationTimestamp
|
||||
// @Temporal(TemporalType.TIMESTAMP)
|
||||
@Column(name = "regist_dt")
|
||||
private LocalDateTime registDt;
|
||||
@Column(name = "register", length = 50)
|
||||
private String register;
|
||||
|
||||
|
||||
@PrePersist
|
||||
public void preUpdate() {
|
||||
this.registDt = LocalDateTime.now();
|
||||
}
|
||||
|
||||
|
||||
@Builder(builderMethodName = "builder")
|
||||
public FieldCreate(String register, LocalDateTime registDt) {
|
||||
this.register = register;
|
||||
this.registDt = registDt;
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embeddable;
|
||||
import javax.persistence.PreUpdate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Embeddable
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public class FieldUpdate {
|
||||
|
||||
// @UpdateTimestamp
|
||||
// @Temporal(TemporalType.TIMESTAMP)
|
||||
@Column(name = "updt_dt")
|
||||
private LocalDateTime updtDt;
|
||||
@Column(name = "updusr", length = 50)
|
||||
private String updusr;
|
||||
|
||||
@PreUpdate
|
||||
public void preUpdate() {
|
||||
this.updtDt = LocalDateTime.now();
|
||||
}
|
||||
|
||||
@Builder(builderMethodName = "builder")
|
||||
public FieldUpdate(String updusr, LocalDateTime updtDt) {
|
||||
this.updusr = updusr;
|
||||
this.updtDt = updtDt;
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndngDetail;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
public interface TcaElctrnNticSndngDetailRepository extends JpaRepository<TcaElctrnNticSndngDetail, String>, TcaElctrnNticSndngDetailRepositoryCustom {
|
||||
|
||||
Optional<TcaElctrnNticSndngDetail> findByExternalDocumentUuid(String externalDocumentUuid);
|
||||
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndng;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndngDetail;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface TcaElctrnNticSndngDetailRepositoryCustom {
|
||||
|
||||
|
||||
List<TcaElctrnNticSndngDetail> findAllDecByElctrnNticSndng(TcaElctrnNticSndng elctrnNticSndng);
|
||||
|
||||
|
||||
List<TcaElctrnNticSndngDetail> findAllFetchByElctrnNticSndngId(String elctrnNticSndngId);
|
||||
|
||||
Optional<Long> findLastSendMastIdByElctrnNticSndngId(String elctrnNticSndngId);
|
||||
|
||||
String findIhidnumDecByElctrnNticSndngDetailId(String elctrnNticSndngDetailId);
|
||||
}
|
@ -1,86 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndng;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndngDetail;
|
||||
import com.querydsl.core.types.Projections;
|
||||
import com.querydsl.core.types.dsl.Expressions;
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.QTcaElctrnNticSndng.tcaElctrnNticSndng;
|
||||
import static cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.QTcaElctrnNticSndngDetail.tcaElctrnNticSndngDetail;
|
||||
import static cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.QTcaNhtTmplatManage.tcaNhtTmplatManage;
|
||||
import static cokr.xit.ens.modules.common.ctgy.intgrnnoti.domain.QIntgrnSendDetail.intgrnSendDetail;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class TcaElctrnNticSndngDetailRepositoryImpl implements TcaElctrnNticSndngDetailRepositoryCustom {
|
||||
|
||||
private final JPAQueryFactory query;
|
||||
|
||||
@Override
|
||||
public List<TcaElctrnNticSndngDetail> findAllDecByElctrnNticSndng(TcaElctrnNticSndng elctrnNticSndng) {
|
||||
|
||||
return query.select(Projections.fields(TcaElctrnNticSndngDetail.class
|
||||
, tcaElctrnNticSndngDetail.elctrnNticSndngDetailId
|
||||
, tcaElctrnNticSndngDetail.elctrnNticSndng
|
||||
, tcaElctrnNticSndngDetail.signguCode
|
||||
, tcaElctrnNticSndngDetail.mainCode
|
||||
, Expressions.stringTemplate("ECL_DECRYPT({0})", tcaElctrnNticSndngDetail.ihidnum).as("ihidnum")
|
||||
, tcaElctrnNticSndngDetail.tmpltMsgData
|
||||
, tcaElctrnNticSndngDetail.mobilePageCn
|
||||
, tcaElctrnNticSndngDetail.create
|
||||
, tcaElctrnNticSndngDetail.update
|
||||
, tcaElctrnNticSndngDetail.externalDocumentUuid
|
||||
, tcaElctrnNticSndngDetail.ffnlgCode
|
||||
, tcaElctrnNticSndngDetail.useInsttIdntfcId
|
||||
))
|
||||
.from(tcaElctrnNticSndngDetail)
|
||||
.where(tcaElctrnNticSndngDetail.elctrnNticSndng.eq(elctrnNticSndng))
|
||||
.fetch();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<TcaElctrnNticSndngDetail> findAllFetchByElctrnNticSndngId(String elctrnNticSndngId) {
|
||||
return query.selectFrom(tcaElctrnNticSndngDetail)
|
||||
.innerJoin(tcaElctrnNticSndngDetail.elctrnNticSndng, tcaElctrnNticSndng)
|
||||
.fetchJoin()
|
||||
.innerJoin(tcaElctrnNticSndng.tcaNhtTmplatManage, tcaNhtTmplatManage)
|
||||
.fetchJoin()
|
||||
.where(tcaElctrnNticSndngDetail.elctrnNticSndng.elctrnNticSndngId.eq(elctrnNticSndngId))
|
||||
.fetch();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Optional<Long> findLastSendMastIdByElctrnNticSndngId(String elctrnNticSndngId) {
|
||||
return Optional.ofNullable(query.select(intgrnSendDetail.intgrnSendMast.intSendMastId)
|
||||
.from(intgrnSendDetail)
|
||||
// .where(intgrnSendDetail.linkedUuid.in(findExternalDocumentUuidsByLnkInputId(elctrnNticSndngId)))
|
||||
.innerJoin(tcaElctrnNticSndngDetail).on(intgrnSendDetail.linkedUuid.eq(tcaElctrnNticSndngDetail.externalDocumentUuid))
|
||||
.where(tcaElctrnNticSndngDetail.elctrnNticSndng.elctrnNticSndngId.eq(elctrnNticSndngId))
|
||||
.groupBy(intgrnSendDetail.intgrnSendMast.intSendMastId)
|
||||
.orderBy(intgrnSendDetail.intgrnSendMast.intSendMastId.desc())
|
||||
.fetchFirst());
|
||||
}
|
||||
|
||||
private List<String> findExternalDocumentUuidsByLnkInputId(String elctrnNticSndngId) {
|
||||
return query.select(tcaElctrnNticSndngDetail.externalDocumentUuid)
|
||||
.from(tcaElctrnNticSndngDetail)
|
||||
.where(tcaElctrnNticSndngDetail.elctrnNticSndng.elctrnNticSndngId.eq(elctrnNticSndngId))
|
||||
.fetch();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String findIhidnumDecByElctrnNticSndngDetailId(String tcaElctrnNticSndngDetailId) {
|
||||
return query.select(Expressions.stringTemplate("ECL_DECRYPT({0})", tcaElctrnNticSndngDetail.ihidnum).as("ihidnum"))
|
||||
.from(tcaElctrnNticSndngDetail)
|
||||
.where(tcaElctrnNticSndngDetail.elctrnNticSndngDetailId.eq(tcaElctrnNticSndngDetailId))
|
||||
.fetchOne();
|
||||
}
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.code.SndngProcessSttusCd;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndng;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface TcaElctrnNticSndngRepository extends JpaRepository<TcaElctrnNticSndng, String> {
|
||||
|
||||
|
||||
List<TcaElctrnNticSndng> findAllBySndngProcessSttus(SndngProcessSttusCd sndngProcessSttus);
|
||||
|
||||
List<TcaElctrnNticSndng> findAllBySndngProcessSttusIn(List<SndngProcessSttusCd> sndngProcessSttuss);
|
||||
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndngResult;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface TcaElctrnNticSndngResultRepository extends JpaRepository<TcaElctrnNticSndngResult, String>, TcaElctrnNticSndngResultRepositoryCustom {
|
||||
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndngResult;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface TcaElctrnNticSndngResultRepositoryCustom {
|
||||
|
||||
|
||||
void modifyByElctrnNticSndngResults(List<TcaElctrnNticSndngResult> tcaElctrnNticSndngResults);
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndngResult;
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import static cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.QTcaElctrnNticSndngResult.tcaElctrnNticSndngResult;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class TcaElctrnNticSndngResultRepositoryImpl implements TcaElctrnNticSndngResultRepositoryCustom {
|
||||
|
||||
private final JPAQueryFactory query;
|
||||
|
||||
@Override
|
||||
public void modifyByElctrnNticSndngResults(List<TcaElctrnNticSndngResult> tcaElctrnNticSndngResults) {
|
||||
tcaElctrnNticSndngResults.forEach(data ->
|
||||
query.update(tcaElctrnNticSndngResult)
|
||||
.set(tcaElctrnNticSndngResult.sndngSe, data.getSndngSe())
|
||||
.set(tcaElctrnNticSndngResult.sndngResultSttus, data.getSndngResultSttus())
|
||||
.set(tcaElctrnNticSndngResult.requstDt, data.getRequstDt())
|
||||
.set(tcaElctrnNticSndngResult.inqireDt, data.getInqireDt())
|
||||
.set(tcaElctrnNticSndngResult.readngDt, data.getReadngDt())
|
||||
.set(tcaElctrnNticSndngResult.errorCn, data.getErrorCn())
|
||||
// .set(tcaElctrnNticSndngResult.create, FieldCreate.builder().build())
|
||||
.set(tcaElctrnNticSndngResult.lastUpdtDt, LocalDateTime.now())
|
||||
.where(tcaElctrnNticSndngResult.elctrnNticSndngDetailId.eq(data.getElctrnNticSndngDetailId()))
|
||||
.execute()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaNhtTmplatManage;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface TcaNhtTmplatManageRepository extends JpaRepository<TcaNhtTmplatManage, String> {
|
||||
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaRlaybsnmManage;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface TcaRlaybsnmManageRepository extends JpaRepository<TcaRlaybsnmManage, String> {
|
||||
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.model;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@Schema(name = "TrafficCaSigntalkReqDTO")
|
||||
public class TrafficCaSigntalkReqDTO {
|
||||
|
||||
@Schema(required = true, title = "전자 고지 발송 Id", example = " ")
|
||||
private String elctrnNticSndngId;
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.presentation;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.model.TrafficCaSigntalkReqDTO;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.service.TrafficCaSigntalkService;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
@Tag(name = "TrafficCaSigntalkController")
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequiredArgsConstructor
|
||||
public class TrafficCaSigntalkController {
|
||||
|
||||
private final TrafficCaSigntalkService trafficCaSigntalkService;
|
||||
|
||||
@Operation(summary = "접수")
|
||||
@PostMapping(value = "/traffic/ca/signtalk/accept", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<EnsResponseVO> accept(@RequestBody TrafficCaSigntalkReqDTO reqDTO) {
|
||||
EnsResponseVO responseVO = trafficCaSigntalkService.accept(reqDTO.getElctrnNticSndngId());
|
||||
return new ResponseEntity<EnsResponseVO>(responseVO, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Operation(summary = "제작")
|
||||
@PutMapping(value = "/traffic/ca/signtalk/re/make", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<EnsResponseVO> reMake(@RequestBody TrafficCaSigntalkReqDTO reqDTO) {
|
||||
EnsResponseVO responseVO = trafficCaSigntalkService.reMake(reqDTO.getElctrnNticSndngId());
|
||||
return new ResponseEntity<EnsResponseVO>(responseVO, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Operation(summary = "전송")
|
||||
@PutMapping(value = "/traffic/ca/signtalk/re/send", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<EnsResponseVO> reSend(@RequestBody TrafficCaSigntalkReqDTO reqDTO) {
|
||||
EnsResponseVO responseVO = trafficCaSigntalkService.reSend(reqDTO.getElctrnNticSndngId());
|
||||
return new ResponseEntity<EnsResponseVO>(responseVO, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Operation(summary = "전송결과가져오기")
|
||||
@PostMapping(value = "/traffic/ca/signtalk/fetch", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<EnsResponseVO> fetch(@RequestBody TrafficCaSigntalkReqDTO reqDTO) {
|
||||
EnsResponseVO responseVO = trafficCaSigntalkService.fetch(reqDTO.getElctrnNticSndngId());
|
||||
return new ResponseEntity<EnsResponseVO>(responseVO, HttpStatus.OK);
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.sched;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.service.TrafficCaSigntalkService;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile("prod-traffic-cheonan")
|
||||
@RequiredArgsConstructor
|
||||
public class TrafficCaSigntalkScheduler {
|
||||
|
||||
private final TrafficCaSigntalkService trafficCaSigntalkService;
|
||||
|
||||
/**
|
||||
* 인증톡 접수
|
||||
* -. 인증톡 전송을 위해 TRAFFIC에 등록된 기초데이터를 ENS에 이관 등록 한다.
|
||||
*/
|
||||
@Scheduled(cron = "0 */1 7-22 * * *")
|
||||
public void accepted(){
|
||||
EnsResponseVO responseVO = trafficCaSigntalkService.acceptAll();
|
||||
log.info("=======================================================");
|
||||
log.info("[TRAFFIC] 인증톡 접수처리 결과");
|
||||
log.info(responseVO.toString());
|
||||
log.info("=======================================================");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 결과 가져오기
|
||||
* -. 전송이 완료된 인증톡 전송결과(성공/실패)를 ENS -> TRAFFIC 로 가져와 DB에 저장한다.
|
||||
*/
|
||||
@Scheduled(cron = "0 */15 7-22 * * *")
|
||||
public void fetched(){
|
||||
EnsResponseVO responseVO = trafficCaSigntalkService.fetchAll();
|
||||
|
||||
log.info("=======================================================");
|
||||
log.info("[TRAFFIC] 인증톡 요청문서정보 Fetch 결과");
|
||||
log.info(responseVO.toString());
|
||||
log.info("=======================================================");
|
||||
}
|
||||
}
|
@ -1,169 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.service;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.code.SndngProcessSttusCd;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndng;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository.TcaElctrnNticSndngRepository;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.service.support.TrafficCaSigntalkAcceptor;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.service.support.TrafficCaSigntalkFetcher;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.service.support.TrafficCaSigntalkMaker;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.service.support.TrafficCaSigntalkSender;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import cokr.xit.ens.core.exception.EnsException;
|
||||
import cokr.xit.ens.core.exception.code.EnsErrCd;
|
||||
import cokr.xit.ens.core.utils.CmmnUtil;
|
||||
import cokr.xit.ens.modules.common.ctgy.intgrnnoti.service.event.IntgrnNotiSendReserveEvent;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Transactional
|
||||
public class TrafficCaSigntalkService {
|
||||
|
||||
private final TcaElctrnNticSndngRepository tcaElctrnNticSndngRepository;
|
||||
|
||||
private final TrafficCaSigntalkAcceptor trafficCaSigntalkAcceptor;
|
||||
private final TrafficCaSigntalkMaker trafficCaSigntalkMaker;
|
||||
private final TrafficCaSigntalkSender trafficCaSigntalkSender;
|
||||
private final TrafficCaSigntalkFetcher trafficCaSigntalkFetcher;
|
||||
|
||||
private final ApplicationEventPublisher applicationEventPublisher;
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 접수(TRAFFIC -> ENS)
|
||||
*/
|
||||
public EnsResponseVO accept(String elctrnNticSndngId) {
|
||||
|
||||
try {
|
||||
|
||||
TcaElctrnNticSndng elctrnNticSndng = tcaElctrnNticSndngRepository.findById(elctrnNticSndngId)
|
||||
.orElseThrow(() -> new EnsException(EnsErrCd.ACPT404, "일치하는 자료가 없습니다."));
|
||||
if (!SndngProcessSttusCd.accept.equals(elctrnNticSndng.getSndngProcessSttus()))
|
||||
throw new EnsException(EnsErrCd.ACPT405, String.format("\"%s(%s)\" 상태가 아닙니다.", SndngProcessSttusCd.accept.getCodeNm(), SndngProcessSttusCd.accept));
|
||||
|
||||
return this.accept(Arrays.asList(elctrnNticSndng)).getResultInfo().get(0);
|
||||
} catch (EnsException e) {
|
||||
return EnsResponseVO.errBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(e.getMessage())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 인증톡 접수(TRAFFIC -> ENS)
|
||||
*/
|
||||
public EnsResponseVO<List<EnsResponseVO>> acceptAll() {
|
||||
try {
|
||||
|
||||
List<TcaElctrnNticSndng> tcaElctrnNticSndngs = tcaElctrnNticSndngRepository.findAllBySndngProcessSttus(SndngProcessSttusCd.accept);
|
||||
if (CmmnUtil.isEmpty(tcaElctrnNticSndngs))
|
||||
throw new EnsException(EnsErrCd.ACPT404, String.format("\"%s(%s)\" 상태의 자료가 없습니다.", SndngProcessSttusCd.accept.getCodeNm(), SndngProcessSttusCd.accept));
|
||||
|
||||
return this.accept(tcaElctrnNticSndngs);
|
||||
} catch (EnsException e) {
|
||||
return EnsResponseVO.<List<EnsResponseVO>>errBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(e.getMessage())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
private EnsResponseVO<List<EnsResponseVO>> accept(List<TcaElctrnNticSndng> tcaElctrnNticSndngs) {
|
||||
EnsResponseVO responseVO = trafficCaSigntalkAcceptor.statReady(tcaElctrnNticSndngs.stream()
|
||||
.map(row -> row.getElctrnNticSndngId())
|
||||
.collect(Collectors.toList()));
|
||||
if (!EnsErrCd.OK.equals(responseVO.getErrCode()))
|
||||
return responseVO;
|
||||
|
||||
List<EnsResponseVO> resultInfo = tcaElctrnNticSndngs.stream()
|
||||
.map(row -> trafficCaSigntalkAcceptor.execute(row.getElctrnNticSndngId()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
List<Long> sendMastIds = resultInfo.stream()
|
||||
.filter(ensResponseVO -> EnsErrCd.OK.equals(ensResponseVO.getErrCode()))
|
||||
.map(ensResponseVO -> (Long) ((Map<String, Object>) ensResponseVO.getResultInfo()).get("intSendMastId"))
|
||||
.collect(Collectors.toList());
|
||||
IntgrnNotiSendReserveEvent event = IntgrnNotiSendReserveEvent.builder()
|
||||
.sendMastIds(sendMastIds)
|
||||
.callback(() -> this.fetch(tcaElctrnNticSndngs))
|
||||
.build();
|
||||
applicationEventPublisher.publishEvent(event);
|
||||
|
||||
return EnsResponseVO.<List<EnsResponseVO>>okBuilder().resultInfo(resultInfo).build();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 제작 재요청
|
||||
*
|
||||
* @param elctrnNticSndngId
|
||||
* @return
|
||||
*/
|
||||
public EnsResponseVO reMake(String elctrnNticSndngId) {
|
||||
return trafficCaSigntalkMaker.execute(elctrnNticSndngId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 전송 재요청
|
||||
*
|
||||
* @param elctrnNticSndngId
|
||||
* @return
|
||||
*/
|
||||
public EnsResponseVO reSend(String elctrnNticSndngId) {
|
||||
return trafficCaSigntalkSender.execute(elctrnNticSndngId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 전송(성공/실패) 결과 가져오기
|
||||
*/
|
||||
public EnsResponseVO fetch(String elctrnNticSndngId) {
|
||||
TcaElctrnNticSndng elctrnNticSndng = null;
|
||||
try {
|
||||
elctrnNticSndng = tcaElctrnNticSndngRepository.findById(elctrnNticSndngId)
|
||||
.orElseThrow(() -> new EnsException(EnsErrCd.ERR404, String.format("[ elctrnNticSndngId %s ]와 일치하는 자료가 없습니다.", elctrnNticSndngId)));
|
||||
} catch (EnsException e) {
|
||||
return EnsResponseVO.errBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(e.getMessage())
|
||||
.build();
|
||||
}
|
||||
|
||||
return this.fetch(Arrays.asList(elctrnNticSndng));
|
||||
}
|
||||
|
||||
/**
|
||||
* 인증톡 전송(성공/실패) 결과 모두 가져오기
|
||||
*/
|
||||
public EnsResponseVO fetchAll() {
|
||||
List<TcaElctrnNticSndng> tcaElctrnNticSndngs = tcaElctrnNticSndngRepository.findAllBySndngProcessSttusIn(Arrays.asList(SndngProcessSttusCd.acptok, SndngProcessSttusCd.ensmake, SndngProcessSttusCd.ensstart, SndngProcessSttusCd.ensok, SndngProcessSttusCd.ensopen));
|
||||
|
||||
return this.fetch(tcaElctrnNticSndngs);
|
||||
}
|
||||
|
||||
private EnsResponseVO fetch(List<TcaElctrnNticSndng> tcaElctrnNticSndngs) {
|
||||
|
||||
return EnsResponseVO.okBuilder()
|
||||
.resultInfo(
|
||||
tcaElctrnNticSndngs.stream()
|
||||
.map(row -> trafficCaSigntalkFetcher.execute(row.getElctrnNticSndngId()))
|
||||
.collect(Collectors.toList())
|
||||
)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,247 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.service.support;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.code.SndngProcessSttusCd;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndng;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndngDetail;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded.FieldUpdate;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository.TcaElctrnNticSndngDetailRepository;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository.TcaElctrnNticSndngRepository;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.service.support.accept.AcptDocKkoMd;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.service.support.accept.AcptDocKtGbs;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import cokr.xit.ens.core.exception.EnsException;
|
||||
import cokr.xit.ens.core.exception.code.EnsErrCd;
|
||||
import cokr.xit.ens.core.utils.Checks;
|
||||
import cokr.xit.ens.core.utils.CmmnUtil;
|
||||
import cokr.xit.ens.core.utils.MapDeserailizer;
|
||||
import cokr.xit.ens.modules.common.biztmplt.EnsPhaseProcSupport;
|
||||
import cokr.xit.ens.modules.common.code.VenderCd;
|
||||
import cokr.xit.ens.core.model.EnsBillAcptReqDTO;
|
||||
import cokr.xit.ens.modules.common.ctgy.intgrnnoti.model.IntgrnNotiAcceptReqDTO;
|
||||
import cokr.xit.ens.modules.common.ctgy.intgrnnoti.model.config.AcptData;
|
||||
import cokr.xit.ens.modules.common.ctgy.intgrnnoti.model.config.Document;
|
||||
import cokr.xit.ens.modules.common.ctgy.intgrnnoti.model.config.Receiver;
|
||||
import cokr.xit.ens.modules.common.ctgy.intgrnnoti.model.config.XitProperty;
|
||||
import cokr.xit.ens.modules.common.ctgy.intgrnnoti.service.IntgrnNotiService;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.bytebuddy.utility.RandomString;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class TrafficCaSigntalkAcceptor implements EnsPhaseProcSupport<EnsResponseVO, String> {
|
||||
|
||||
private final TcaElctrnNticSndngRepository tcaElctrnNticSndngRepository;
|
||||
private final TcaElctrnNticSndngDetailRepository elctrnNticSndngDetailRepository;
|
||||
|
||||
private final IntgrnNotiService intgrnNotiService;
|
||||
|
||||
private Gson gson = new GsonBuilder().registerTypeAdapter(Map.class, new MapDeserailizer()).serializeNulls().create();
|
||||
|
||||
|
||||
@Value("${xit.mblpage.postse.intgrn.url}")
|
||||
private String MBLPAGE_URL;
|
||||
@Value("${xit.mblpage.postse.intgrn.path}")
|
||||
private String MBLPAGE_PATH;
|
||||
|
||||
/**
|
||||
* Accept 준비
|
||||
*
|
||||
* @param elctrnNticSndngIds
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statReady(List<String> elctrnNticSndngIds) {
|
||||
try {
|
||||
AtomicInteger index = new AtomicInteger();
|
||||
String prefixExternalDocumentUuid = String.format("B-%s%s", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")), RandomString.make(5));
|
||||
elctrnNticSndngIds.stream()
|
||||
.map(elctrnNticSndngId -> tcaElctrnNticSndngRepository.findById(elctrnNticSndngId).get())
|
||||
.map(elctrnNticSndng -> elctrnNticSndngDetailRepository.findAllDecByElctrnNticSndng(elctrnNticSndng))
|
||||
.forEach(list -> {
|
||||
list.stream()
|
||||
.forEach(row -> {
|
||||
row.setExternalDocumentUuid(String.format("%s%09d", prefixExternalDocumentUuid, index.getAndIncrement() + 1));
|
||||
});
|
||||
elctrnNticSndngDetailRepository.saveAll(list);
|
||||
|
||||
}
|
||||
|
||||
);
|
||||
return EnsResponseVO.okBuilder().build();
|
||||
} catch (Exception e) {
|
||||
return EnsResponseVO.errBuilder()
|
||||
.errCode(EnsErrCd.ACPT500)
|
||||
.errMsg(String.format("문서식별번호(외부) 생성에 실패 했습니다. %s", e.getMessage()))
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statBegin(String elctrnNticSndngId) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 전자고지 접수
|
||||
*/
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO execute(String elctrnNticSndngId) {
|
||||
Map<String, Object> resultInfo = new HashMap<>();
|
||||
resultInfo.put("elctrnNticSndngId", elctrnNticSndngId);
|
||||
|
||||
EnsResponseVO responseVO = null;
|
||||
TcaElctrnNticSndng elctrnNticSndng = null;
|
||||
try {
|
||||
elctrnNticSndng = tcaElctrnNticSndngRepository.findById(elctrnNticSndngId)
|
||||
.orElseThrow(() -> new EnsException(EnsErrCd.ACPT404, String.format("일치하는 TB_ELCTRN_NTIC_SNDNG 데이터가 없습니다. [ elctrnNticSndngId %s ]", elctrnNticSndngId)));
|
||||
|
||||
IntgrnNotiAcceptReqDTO reqDTO = this.convertTbInputDataToAcceptReqDTO(elctrnNticSndngDetailRepository.findAllFetchByElctrnNticSndngId(elctrnNticSndng.getElctrnNticSndngId()));
|
||||
|
||||
EnsResponseVO reqResp = intgrnNotiService.accept(reqDTO);
|
||||
|
||||
|
||||
if (EnsErrCd.OK.equals(reqResp.getErrCode())) {
|
||||
resultInfo.put("intSendMastId", (Long) ((Map<String, Object>) reqResp.getResultInfo()).get("intSendMastId"));
|
||||
responseVO = EnsResponseVO.okBuilder().resultInfo(resultInfo).build();
|
||||
} else {
|
||||
responseVO = EnsResponseVO.errRsltBuilder()
|
||||
.errCode(reqResp.getErrCode())
|
||||
.errMsg(reqResp.getErrMsg())
|
||||
.resultInfo(reqResp.getResultInfo())
|
||||
.build();
|
||||
}
|
||||
} catch (EnsException e) {
|
||||
responseVO = EnsResponseVO.errRsltBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(String.format("인증톡 \"접수\" 처리 실패. [%s] %s", e.getErrCd().getCode(), e.getMessage()))
|
||||
.resultInfo(resultInfo)
|
||||
.build();
|
||||
|
||||
} catch (Exception e) {
|
||||
responseVO = EnsResponseVO.errRsltBuilder()
|
||||
.errCode(EnsErrCd.ACPT500)
|
||||
.errMsg(String.format("인증톡 \"접수\" 처리 실패. %s", e.getMessage()))
|
||||
.resultInfo(resultInfo)
|
||||
.build();
|
||||
|
||||
} finally {
|
||||
if (EnsErrCd.OK.equals(responseVO.getErrCode())) {
|
||||
elctrnNticSndng.setUpdate(FieldUpdate.builder()
|
||||
.updusr("ENS_SYS")
|
||||
.updtDt(LocalDateTime.now())
|
||||
.build());
|
||||
elctrnNticSndng.setSndngProcessSttus(SndngProcessSttusCd.acptok);
|
||||
elctrnNticSndng.setErrorCn(null);
|
||||
} else {
|
||||
elctrnNticSndng.setUpdate(FieldUpdate.builder()
|
||||
.updusr("ENS_SYS")
|
||||
.updtDt(LocalDateTime.now())
|
||||
.build());
|
||||
elctrnNticSndng.setSndngProcessSttus(SndngProcessSttusCd.acptfail);
|
||||
elctrnNticSndng.setErrorCn(responseVO.getErrMsg());
|
||||
if (responseVO.getResultInfo() != null && (responseVO.getResultInfo() instanceof List || responseVO.getResultInfo() instanceof Map))
|
||||
elctrnNticSndng.setErrorDtls(gson.toJson(responseVO.getResultInfo()));
|
||||
}
|
||||
}
|
||||
|
||||
return responseVO;
|
||||
}
|
||||
|
||||
|
||||
private IntgrnNotiAcceptReqDTO convertTbInputDataToAcceptReqDTO(List<TcaElctrnNticSndngDetail> list) {
|
||||
|
||||
return IntgrnNotiAcceptReqDTO.builder()
|
||||
.vender(VenderCd.none.getCode())
|
||||
.org_cd(list.get(0).getElctrnNticSndng().getSignguCode())
|
||||
.tmplt_cd(list.get(0).getElctrnNticSndng().getTcaNhtTmplatManage().getNhtTmplatId())
|
||||
.post_bundle_title(
|
||||
String.format("%s(%s건)-%s"
|
||||
, list.get(0).getElctrnNticSndng().getTcaNhtTmplatManage().getNhtNm()
|
||||
, list.get(0).getElctrnNticSndng().getSndngCo()
|
||||
, LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))
|
||||
)
|
||||
)
|
||||
.send_dt(list.get(0).getElctrnNticSndng().getSndngDt())
|
||||
.close_dt(list.get(0).getElctrnNticSndng().getClosDt())
|
||||
.documents(
|
||||
list.stream()
|
||||
.map(row -> this.createDocument(row))
|
||||
.collect(Collectors.toList())
|
||||
)
|
||||
.build();
|
||||
}
|
||||
|
||||
private Document createDocument(TcaElctrnNticSndngDetail data) throws EnsException {
|
||||
|
||||
String jid = elctrnNticSndngDetailRepository.findIhidnumDecByElctrnNticSndngDetailId(data.getElctrnNticSndngDetailId());
|
||||
jid = Checks.isCheckJid(jid) ? jid : "1111111111111";
|
||||
|
||||
Map<String, String> tmpltMsgData = null;
|
||||
if (!CmmnUtil.isEmpty(data.getTmpltMsgData()))
|
||||
try {
|
||||
tmpltMsgData = gson.fromJson(data.getTmpltMsgData(), Map.class);
|
||||
} catch (Exception e) {
|
||||
throw new EnsException(EnsErrCd.ACPT411, "템플릿메시지데이터의 값은 JSON 포맷만 가능 합니다.");
|
||||
}
|
||||
|
||||
return Document.builder()
|
||||
.linked_uuid(data.getExternalDocumentUuid())
|
||||
.receiver(Receiver.builder()
|
||||
.ci(null)
|
||||
// .jid(data.getIhidnum())
|
||||
.jid(jid)
|
||||
.mblphon_no(null)
|
||||
.build())
|
||||
.acpt_data(AcptData.builder()
|
||||
.kko_md(new AcptDocKkoMd(data, MBLPAGE_URL + MBLPAGE_PATH).createDocument())
|
||||
.kko_at(null)
|
||||
.nv_st(null)
|
||||
.kt_gbs(new AcptDocKtGbs(data, MBLPAGE_URL + MBLPAGE_PATH).createDocument())
|
||||
.build())
|
||||
.xit_property(XitProperty.builder()
|
||||
.bill_acpt_data(this.createBillAcptData(data))
|
||||
.tmplt_msg_data(tmpltMsgData)
|
||||
.mbl_page_data(this.createDetails(data))
|
||||
.build())
|
||||
.build();
|
||||
}
|
||||
|
||||
private EnsBillAcptReqDTO createBillAcptData(TcaElctrnNticSndngDetail data) {
|
||||
return null;
|
||||
}
|
||||
|
||||
private Map<String, List<Map<String, Object>>> createDetails(TcaElctrnNticSndngDetail data) {
|
||||
try {
|
||||
Map<String, List<Map<String, Object>>> m = gson.fromJson(data.getMobilePageCn(), Map.class);
|
||||
return m;
|
||||
} catch (Exception e) {
|
||||
log.error("\"mobilePageCn\" Json Parse 실패. {}", data.getMobilePageCn());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,179 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.service.support;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.code.SndngProcessSttusCd;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.code.SndngResultSttusCd;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.code.SndngSeCd;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndng;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndngDetail;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndngResult;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded.FieldCreate;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.embeded.FieldUpdate;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository.TcaElctrnNticSndngDetailRepository;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository.TcaElctrnNticSndngRepository;
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository.TcaElctrnNticSndngResultRepository;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import cokr.xit.ens.core.exception.EnsException;
|
||||
import cokr.xit.ens.core.exception.code.EnsErrCd;
|
||||
import cokr.xit.ens.core.utils.CmmnUtil;
|
||||
import cokr.xit.ens.modules.common.biztmplt.EnsPhaseProcSupport;
|
||||
import cokr.xit.ens.modules.common.ctgy.intgrnnoti.model.IntgrnDetailStatVO;
|
||||
import cokr.xit.ens.modules.common.ctgy.intgrnnoti.model.IntgrnNotiRsltRespDTO;
|
||||
import cokr.xit.ens.modules.common.ctgy.intgrnnoti.service.IntgrnNotiService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class TrafficCaSigntalkFetcher implements EnsPhaseProcSupport<EnsResponseVO, String> {
|
||||
|
||||
private final TcaElctrnNticSndngRepository tcaElctrnNticSndngRepository;
|
||||
private final TcaElctrnNticSndngDetailRepository elctrnNticSndngDetailRepository;
|
||||
|
||||
private final TcaElctrnNticSndngResultRepository tcaElctrnNticSndngResultRepository;
|
||||
|
||||
private final IntgrnNotiService intgrnNotiService;
|
||||
|
||||
|
||||
/**
|
||||
* Fetch 준비
|
||||
*
|
||||
* @param elctrnNticSndngIds
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statReady(List<String> elctrnNticSndngIds) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statBegin(String elctrnNticSndngId) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 발송(성공/실패) 자료에 대한 결과 가져오기
|
||||
*
|
||||
* @param elctrnNticSndngId
|
||||
*/
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO execute(String elctrnNticSndngId) {
|
||||
EnsResponseVO responseVO = null;
|
||||
Map<String, Object> resultInfo = new HashMap<>();
|
||||
resultInfo.put("elctrnNticSndngId", elctrnNticSndngId);
|
||||
|
||||
IntgrnNotiRsltRespDTO respDTO = null;
|
||||
try {
|
||||
Long intSendMastId = elctrnNticSndngDetailRepository.findLastSendMastIdByElctrnNticSndngId(elctrnNticSndngId)
|
||||
.orElseThrow(() -> new EnsException(EnsErrCd.RSLT404, "일치하는 ENS 접수자료가 없습니다."));
|
||||
resultInfo.put("intSendMastId", intSendMastId);
|
||||
|
||||
|
||||
EnsResponseVO apiRespVO = intgrnNotiService.sendResultProvide(intSendMastId);
|
||||
respDTO = (IntgrnNotiRsltRespDTO) apiRespVO.getResultInfo();
|
||||
|
||||
|
||||
List<TcaElctrnNticSndngResult> tcaElctrnNticSndngResults = respDTO.getDocuments().stream()
|
||||
.map(row -> {
|
||||
return TcaElctrnNticSndngResult.builder()
|
||||
.sndngSe(SndngSeCd.valueOfEnum(row.getCurPostSe().getCode()))
|
||||
.elctrnNticSndngDetailId(elctrnNticSndngDetailRepository.findByExternalDocumentUuid(row.getLinkedUuid())
|
||||
.orElse(new TcaElctrnNticSndngDetail())
|
||||
.getElctrnNticSndngDetailId())
|
||||
.sndngResultSttus(this.sndngResultSttus(row))
|
||||
.requstDt(row.getDocSentDt())
|
||||
.inqireDt(row.getDocReceivedDt())
|
||||
.readngDt(row.getDocReadFrstDt())
|
||||
.errorCn(CmmnUtil.isEmpty(row.getErrorMessage()) ? null : row.getErrorMessage())
|
||||
.create(FieldCreate.builder()
|
||||
.register("ENS_SYS")
|
||||
.registDt(LocalDateTime.now())
|
||||
.build())
|
||||
.build();
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
if (tcaElctrnNticSndngResultRepository.findById(tcaElctrnNticSndngResults.get(0).getElctrnNticSndngDetailId()).isPresent())
|
||||
tcaElctrnNticSndngResultRepository.modifyByElctrnNticSndngResults(tcaElctrnNticSndngResults);
|
||||
else
|
||||
tcaElctrnNticSndngResultRepository.saveAll(tcaElctrnNticSndngResults);
|
||||
|
||||
responseVO = EnsResponseVO.okBuilder().resultInfo(resultInfo).build();
|
||||
} catch (EnsException e) {
|
||||
responseVO = EnsResponseVO.errBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(e.getMessage())
|
||||
.build();
|
||||
} catch (Exception e) {
|
||||
responseVO = EnsResponseVO.errBuilder()
|
||||
.errCode(EnsErrCd.RSLT999)
|
||||
.errMsg(String.format("[elctrnNticSndngId %s]에 대한 전송결과 FETCH 처리 실패. %s", elctrnNticSndngId, e.getMessage()))
|
||||
.build();
|
||||
} finally {
|
||||
TcaElctrnNticSndng elctrnNticSndng = tcaElctrnNticSndngRepository.findById(elctrnNticSndngId).orElseThrow(() -> new EnsException(EnsErrCd.RSLT404, "일치하는 tbInputXit 자료가 없습니다."));
|
||||
if (EnsErrCd.OK.equals(responseVO.getErrCode())) {
|
||||
elctrnNticSndng.setUpdate(FieldUpdate.builder()
|
||||
.updusr("ENS_SYS")
|
||||
.updtDt(LocalDateTime.now())
|
||||
.build());
|
||||
elctrnNticSndng.setSndngProcessSttus(this.sndngProcessSttus(respDTO, elctrnNticSndng.getSndngProcessSttus()));
|
||||
elctrnNticSndng.setErrorCn(null);
|
||||
} else {
|
||||
elctrnNticSndng.setUpdate(FieldUpdate.builder()
|
||||
.updusr("ENS_SYS")
|
||||
.updtDt(LocalDateTime.now())
|
||||
.build());
|
||||
elctrnNticSndng.setSndngProcessSttus(SndngProcessSttusCd.ensfail);
|
||||
elctrnNticSndng.setErrorCn(responseVO.getErrMsg());
|
||||
}
|
||||
}
|
||||
|
||||
return responseVO;
|
||||
}
|
||||
|
||||
private SndngProcessSttusCd sndngProcessSttus(IntgrnNotiRsltRespDTO respDTO, SndngProcessSttusCd sndngProcessSttus) {
|
||||
switch (respDTO.getStatCd()) {
|
||||
case accept:
|
||||
return sndngProcessSttus;
|
||||
case makefail:
|
||||
case sendfail:
|
||||
return SndngProcessSttusCd.ensfail;
|
||||
case makerdy:
|
||||
case making:
|
||||
case makeok:
|
||||
return SndngProcessSttusCd.ensmake;
|
||||
case sendrdy:
|
||||
case sending:
|
||||
return SndngProcessSttusCd.ensstart;
|
||||
case sendok:
|
||||
case sendcmplt:
|
||||
return SndngProcessSttusCd.ensok;
|
||||
case open:
|
||||
return SndngProcessSttusCd.ensopen;
|
||||
case close:
|
||||
return SndngProcessSttusCd.ensclose;
|
||||
default:
|
||||
return sndngProcessSttus;
|
||||
}
|
||||
}
|
||||
|
||||
private SndngResultSttusCd sndngResultSttus(IntgrnDetailStatVO row) {
|
||||
return SndngResultSttusCd.valueOfEnum(row.getCurStatCd().getIntgrnDtlStatCd().getCode());
|
||||
}
|
||||
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.service.support;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository.TcaElctrnNticSndngDetailRepository;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import cokr.xit.ens.core.exception.EnsException;
|
||||
import cokr.xit.ens.core.exception.code.EnsErrCd;
|
||||
import cokr.xit.ens.modules.common.biztmplt.EnsPhaseProcSupport;
|
||||
import cokr.xit.ens.modules.common.ctgy.intgrnnoti.service.IntgrnNotiService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class TrafficCaSigntalkMaker implements EnsPhaseProcSupport<EnsResponseVO, String> {
|
||||
|
||||
private final TcaElctrnNticSndngDetailRepository elctrnNticSndngDetailRepository;
|
||||
|
||||
private final IntgrnNotiService intgrnNotiService;
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statReady(List<String> elctrnNticSndngIds) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statBegin(String elctrnNticSndngId) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 전자고지 제작
|
||||
*/
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO execute(String elctrnNticSndngId) {
|
||||
EnsResponseVO responseVO = null;
|
||||
try {
|
||||
Long intSendMastId = elctrnNticSndngDetailRepository.findLastSendMastIdByElctrnNticSndngId(elctrnNticSndngId)
|
||||
.orElseThrow(() -> new EnsException(EnsErrCd.MAKE404, "일치하는 ENS 접수자료가 없습니다."));
|
||||
|
||||
responseVO = intgrnNotiService.remake(intSendMastId);
|
||||
} catch (EnsException e) {
|
||||
responseVO = EnsResponseVO.errBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(e.getMessage())
|
||||
.build();
|
||||
}
|
||||
return responseVO;
|
||||
}
|
||||
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.service.support;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.repository.TcaElctrnNticSndngDetailRepository;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import cokr.xit.ens.core.exception.EnsException;
|
||||
import cokr.xit.ens.core.exception.code.EnsErrCd;
|
||||
import cokr.xit.ens.modules.common.biztmplt.EnsPhaseProcSupport;
|
||||
import cokr.xit.ens.modules.common.ctgy.intgrnnoti.service.IntgrnNotiService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class TrafficCaSigntalkSender implements EnsPhaseProcSupport<EnsResponseVO, String> {
|
||||
|
||||
private final TcaElctrnNticSndngDetailRepository elctrnNticSndngDetailRepository;
|
||||
|
||||
private final IntgrnNotiService intgrnNotiService;
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statReady(List<String> elctrnNticSndngIds) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statBegin(String elctrnNticSndngId) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 전자고지 전송요청
|
||||
*/
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO execute(String elctrnNticSndngId) {
|
||||
EnsResponseVO responseVO = null;
|
||||
try {
|
||||
Long intSendMastId = elctrnNticSndngDetailRepository.findLastSendMastIdByElctrnNticSndngId(elctrnNticSndngId)
|
||||
.orElseThrow(() -> new EnsException(EnsErrCd.SEND404, "일치하는 ENS 접수자료가 없습니다."));
|
||||
|
||||
responseVO = intgrnNotiService.sendBulk(intSendMastId);
|
||||
} catch (EnsException e) {
|
||||
responseVO = EnsResponseVO.errBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(e.getMessage())
|
||||
.build();
|
||||
}
|
||||
return responseVO;
|
||||
}
|
||||
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.service.support.accept;
|
||||
|
||||
public interface Accept<T> {
|
||||
T createDocument();
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.service.support.accept;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndngDetail;
|
||||
import cokr.xit.ens.core.utils.DateUtil;
|
||||
import cokr.xit.ens.modules.kkomydoc.model.config.DocumentConfKkoMd;
|
||||
import cokr.xit.ens.modules.kkomydoc.model.config.Property;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class AcptDocKkoMd implements Accept<DocumentConfKkoMd> {
|
||||
|
||||
private final TcaElctrnNticSndngDetail tcaElctrnNticSndngDetail;
|
||||
private final String redirectUrl;
|
||||
|
||||
@Override
|
||||
public DocumentConfKkoMd createDocument() {
|
||||
return DocumentConfKkoMd.builder()
|
||||
.hash(null)
|
||||
.common_categories(Arrays.asList("NOTICE"))
|
||||
.read_expired_at(DateUtil.dateToAbsTimeSec(tcaElctrnNticSndngDetail.getElctrnNticSndng().getClosDt()))
|
||||
// .read_expired_sec()
|
||||
.property(this.createProperty())
|
||||
.bridge(null)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
private Property createProperty() {
|
||||
return Property.builder()
|
||||
.link(this.redirectUrl)
|
||||
.payload(null)
|
||||
.message(null)
|
||||
.cs_name(null)
|
||||
.cs_number(null)
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.cheonan.signtalk.service.support.accept;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.cheonan.signtalk.domain.TcaElctrnNticSndngDetail;
|
||||
import cokr.xit.ens.modules.ktsigntalk.gibis.model.config.DocumentConfKtGbs;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class AcptDocKtGbs implements Accept<DocumentConfKtGbs> {
|
||||
|
||||
private final TcaElctrnNticSndngDetail tcaElctrnNticSndngDetail;
|
||||
private final String redirectUrl;
|
||||
|
||||
@Override
|
||||
public DocumentConfKtGbs createDocument() {
|
||||
return DocumentConfKtGbs.builder()
|
||||
.hash(null)
|
||||
.srcSeq(null)
|
||||
.mmsDtlCnts(null)
|
||||
// .mmsTitle()
|
||||
.rcsDtlCnts(null)
|
||||
.url(redirectUrl)
|
||||
.mdn(null)
|
||||
.build();
|
||||
|
||||
}
|
||||
}
|
@ -1,125 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.init;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository.NhtTmplatManageRepository;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import cokr.xit.ens.modules.common.ctgy.sys.mng.model.OrgMngDTO;
|
||||
import cokr.xit.ens.modules.common.ctgy.sys.mng.service.OrgMngService;
|
||||
import cokr.xit.ens.modules.common.ctgy.sys.mng.service.TmpltMngService;
|
||||
import cokr.xit.ens.modules.kkomydoc.model.TmpltMngKkoMydocDTO;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
* 주정차웹-춘천
|
||||
*/
|
||||
@Component
|
||||
@Transactional
|
||||
@Profile({"prod-traffic"})
|
||||
public class TrafficCcJpaRunner implements ApplicationRunner {
|
||||
|
||||
@Autowired
|
||||
private OrgMngService orgMngService;
|
||||
@Autowired
|
||||
private TmpltMngService tmpltMngService;
|
||||
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
@Value("${contract.kakao.pay.mydoc.access-token}")
|
||||
private String KKO_MD_ACCESS_TOKEN = "b40d3c623d1011ecbceae6cf4630da62";
|
||||
@Value("${contract.kakao.pay.mydoc.contract-uuid}")
|
||||
private String KKO_MD_CONTRACT_UUID = "CON-b4126c833d1011ecbceae6cf4630da62";
|
||||
private String KKO_BP_BILLER_CODE = null;
|
||||
private String KKO_BP_AUTHORIZATION = null;
|
||||
private String KKO_AT_BSID = null;
|
||||
private String KKO_AT_PASSWD = null;
|
||||
private String KKO_AT_SENDER_KEY = null;
|
||||
@Value("${contract.nice.dici.socket.site-code}")
|
||||
private final String NICE_CD_SITE_CODE = "EQ00";
|
||||
@Value("${contract.nice.dici.socket.site-pw}")
|
||||
private String NICE_CD_SITE_PW = "76646885";
|
||||
private String NV_ST_X_NAVER_CLIENT_ID = null;
|
||||
private String NV_ST_X_NAVER_CLIENT_SECRET = null;
|
||||
|
||||
@Autowired
|
||||
private NhtTmplatManageRepository nhtTmplatManageRepository;
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) throws Exception {
|
||||
List<EnsResponseVO> orgMngResult = createOrgMngDTO().stream().map(dto -> orgMngService.add(dto)).collect(Collectors.toList());
|
||||
List<EnsResponseVO> tmpltMngResult = createTmpltMngDTO().stream().map(map -> tmpltMngService.add(map, (String) map.get("dtype"))).collect(Collectors.toList());
|
||||
System.out.println("============================================================================================================");
|
||||
System.out.println("======== Initailize Information [OrgMng & TmpltMng] :: active profiles - " + System.getProperty("spring.profiles.active") + " ========");
|
||||
System.out.println(orgMngResult.toString());
|
||||
System.out.println(tmpltMngResult.toString());
|
||||
System.out.println("============================================================================================================");
|
||||
|
||||
}
|
||||
|
||||
|
||||
private List<OrgMngDTO> createOrgMngDTO() {
|
||||
List<OrgMngDTO> list = nhtTmplatManageRepository.findAll()
|
||||
.stream()
|
||||
.map(data -> createOrgMngDTO(data.getSignguCode(), "주정차웹CC-" + data.getSignguCode()))
|
||||
.collect(Collectors.toList());
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
private List<Map<String, Object>> createTmpltMngDTO() {
|
||||
List<Map<String, Object>> list = nhtTmplatManageRepository.findAll()
|
||||
.stream()
|
||||
.map(data -> createTmpltMngKkoMydoc(data.getSignguCode(), data.getNhtTmplatId(), data.getNhtSj(), data.getNhtCn(), "Y", data.getCstmrCnterTlphonNo(), data.getCstmrCnterNm(), "Y", "Y", "Y"))
|
||||
.collect(Collectors.toList());
|
||||
return list;
|
||||
}
|
||||
|
||||
final private OrgMngDTO createOrgMngDTO(String orgCd, String orgNm) {
|
||||
return OrgMngDTO.builder()
|
||||
.orgCd(orgCd)
|
||||
.orgNm(orgNm)
|
||||
.kkoMdAccessToken(KKO_MD_ACCESS_TOKEN)
|
||||
.kkoMdContractUuid(KKO_MD_CONTRACT_UUID)
|
||||
.kkoBpBillerCode(KKO_BP_BILLER_CODE)
|
||||
.kkoBpAuthorization(KKO_BP_AUTHORIZATION)
|
||||
.kkoBpCsignYn("N")
|
||||
.kkoBpPrepayApi(null)
|
||||
.kkoBpPayResultApi(null)
|
||||
.kkoAtBsid(KKO_AT_BSID)
|
||||
.kkoAtPasswd(KKO_AT_PASSWD)
|
||||
.kkoAtSenderKey(KKO_AT_SENDER_KEY)
|
||||
.niceCdSiteCode(NICE_CD_SITE_CODE)
|
||||
.niceCdSitePw(NICE_CD_SITE_PW)
|
||||
.nvStXNaverClientId(NV_ST_X_NAVER_CLIENT_ID)
|
||||
.nvStXNaverClientSecret(NV_ST_X_NAVER_CLIENT_SECRET)
|
||||
.nvStOrgId(null)
|
||||
.build();
|
||||
}
|
||||
|
||||
final private Map<String, Object> createTmpltMngKkoMydoc(String orgCd, String tmpltCd, String title, String message, String useYn, String csNumber, String csName, String ciTransUseYn, String tmpltMsgUseYn, String tmpltCsInfoUseYn) {
|
||||
return mapper.convertValue(TmpltMngKkoMydocDTO.builder()
|
||||
.dtype("kkomd")
|
||||
.orgCd(orgCd)
|
||||
.tmpltCd(tmpltCd)
|
||||
.title(title)
|
||||
.message(message)
|
||||
.useYn(useYn == null ? "Y" : useYn)
|
||||
.csNumber(csNumber)
|
||||
.csName(csName)
|
||||
.ciTransUseYn(ciTransUseYn)
|
||||
.tmpltMsgUseYn(tmpltMsgUseYn)
|
||||
.tmpltCsInfoUseYn(tmpltCsInfoUseYn)
|
||||
.build(), Map.class);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,73 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.embeded.FieldCreate;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.embeded.FieldUpdate;
|
||||
import lombok.*;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* <ul>
|
||||
* <li>업무 그룹명: 전자고지발송 테이블</li>
|
||||
* <li>설 명: </li>
|
||||
* <li>작성일: 2021. 12. 22. 오후 5:44:32
|
||||
* </ul>
|
||||
*
|
||||
* @author 박민규
|
||||
*/
|
||||
@Getter
|
||||
@ToString
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity
|
||||
@Table(name = "tb_elctrn_ntic_sndng")
|
||||
@Profile("prod-traffic")
|
||||
public class ElctrnNticSndng {
|
||||
|
||||
|
||||
@Id
|
||||
@Column(name = "elctrn_ntic_sndng_id", length = 20)
|
||||
private String elctrnNticSndngId;
|
||||
|
||||
@Column(name = "signgu_code", length = 5)
|
||||
private String signguCode;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "nht_tmplat_id")
|
||||
private NhtTmplatManage nhtTmplatManage;
|
||||
|
||||
@Column(name = "sndng_ty_code", length = 5)
|
||||
private String sndngTyCode;
|
||||
|
||||
@Column(name = "sndng_co", length = 10)
|
||||
private Integer sndngCo;
|
||||
|
||||
@Column(name = "sndng_process_sttus", length = 2)
|
||||
@Setter
|
||||
private String sndngProcessSttus;
|
||||
|
||||
@Column(name = "sndng_dt", length = 14)
|
||||
private String sndngDt;
|
||||
|
||||
@Column(name = "clos_dt", length = 14)
|
||||
private String closDt;
|
||||
|
||||
@Embedded
|
||||
private FieldCreate create;
|
||||
|
||||
@Embedded
|
||||
@Setter
|
||||
private FieldUpdate update;
|
||||
|
||||
@Column(name = "error_cn", length = 1000)
|
||||
@Setter
|
||||
private String errorCn;
|
||||
@Lob
|
||||
@Setter
|
||||
@Column(name = "error_dtls")
|
||||
private String errorDtls;
|
||||
|
||||
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.embeded.FieldCreate;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.embeded.FieldUpdate;
|
||||
import lombok.*;
|
||||
import org.hibernate.annotations.DynamicUpdate;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* <ul>
|
||||
* <li>업무 그룹명: 전자고지발송상세 테이블</li>
|
||||
* <li>설 명: </li>
|
||||
* <li>작성일: 2021. 12. 22. 오후 5:45:01
|
||||
* </ul>
|
||||
*
|
||||
* @author mk1126sj
|
||||
*/
|
||||
@Getter
|
||||
@ToString
|
||||
@Builder
|
||||
@DynamicUpdate
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity
|
||||
@Table(name = "tb_elctrn_ntic_sndng_detail", schema = "", catalog = "", indexes = {
|
||||
@Index(name = "idx_tcc_ens_detail_01", columnList = "external_document_uuid")
|
||||
})
|
||||
@Profile("prod-traffic")
|
||||
public class ElctrnNticSndngDetail {
|
||||
|
||||
|
||||
@Id
|
||||
@Column(name = "elctrn_ntic_sndng_detail_id", length = 20)
|
||||
private String elctrnNticSndngDetailId;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "elctrn_ntic_sndng_id")
|
||||
private ElctrnNticSndng elctrnNticSndng;
|
||||
|
||||
@Column(name = "signgu_code", length = 5, columnDefinition = "char")
|
||||
private String signguCode;
|
||||
|
||||
@Column(name = "main_code", length = 20)
|
||||
private String mainCode;
|
||||
|
||||
@Column(name = "ihidnum", length = 100, updatable = false)
|
||||
private String ihidnum;
|
||||
|
||||
@Lob
|
||||
@Column(name = "cn_detail")
|
||||
private String cnDetail;
|
||||
|
||||
@Lob
|
||||
@Column(name = "mobile_page_cn")
|
||||
private String mobilePageCn;
|
||||
|
||||
@Embedded
|
||||
private FieldCreate create;
|
||||
|
||||
@Embedded
|
||||
private FieldUpdate update;
|
||||
|
||||
@Column(name = "external_document_uuid", length = 40)
|
||||
@Setter
|
||||
private String externalDocumentUuid;
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.embeded.FieldCreate;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import org.hibernate.annotations.UpdateTimestamp;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <ul>
|
||||
* <li>업무 그룹명: 전자고지발송결과 테이블</li>
|
||||
* <li>설 명: </li>
|
||||
* <li>작성일: 2021. 12. 22. 오후 5:45:14
|
||||
* </ul>
|
||||
*
|
||||
* @author mk1126sj
|
||||
*/
|
||||
@Getter
|
||||
@ToString
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity
|
||||
@Table(name = "tb_elctrn_ntic_sndng_result")
|
||||
@Profile("prod-traffic")
|
||||
public class ElctrnNticSndngResult {
|
||||
|
||||
|
||||
@Id
|
||||
@Column(name = "elctrn_ntic_sndng_detail_id", length = 20)
|
||||
private String elctrnNticSndngDetailId;
|
||||
@Column(name = "sndng_result_code", length = 4)
|
||||
private String sndngResultCode;
|
||||
@Column(name = "requst_dt", length = 14)
|
||||
private String requstDt;
|
||||
@Column(name = "inqire_dt", length = 14)
|
||||
private String inqireDt;
|
||||
@Column(name = "readng_dt", length = 14)
|
||||
private String readngDt;
|
||||
@Column(name = "error_cn", length = 1000)
|
||||
private String errorCn;
|
||||
@Embedded
|
||||
private FieldCreate create;
|
||||
|
||||
|
||||
@UpdateTimestamp
|
||||
@Column(name = "last_updt_dt", nullable = true)
|
||||
private LocalDateTime lastUpdtDt;
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.embeded.FieldCreate;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.embeded.FieldUpdate;
|
||||
import lombok.*;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* <ul>
|
||||
* <li>업무 그룹명: 고지서템플릿관리 테이블</li>
|
||||
* <li>설 명: </li>
|
||||
* <li>작성일: 2021. 12. 22. 오후 5:44:32
|
||||
* </ul>
|
||||
*
|
||||
* @author 박민규
|
||||
*/
|
||||
@Getter
|
||||
@ToString
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity
|
||||
@Table(name = "tb_nht_tmplat_manage")
|
||||
@Profile("prod-traffic")
|
||||
public class NhtTmplatManage {
|
||||
|
||||
|
||||
@Id
|
||||
@Column(name = "nht_tmplat_id", length = 5)
|
||||
private String nhtTmplatId;
|
||||
|
||||
@Column(name = "signgu_code", columnDefinition = "char(5)")
|
||||
private String signguCode;
|
||||
|
||||
@Column(name = "sndng_ty_code", length = 1)
|
||||
private String sndngTyCode;
|
||||
|
||||
@Column(name = "nht_nm", length = 1000)
|
||||
private String nhtNm;
|
||||
|
||||
@Column(name = "nht_sj", length = 1000)
|
||||
private String nhtSj;
|
||||
|
||||
@Column(name = "nhtCn", length = 4000)
|
||||
private String nhtCn;
|
||||
|
||||
@Column(name = "cstmr_cnter_nm", length = 100)
|
||||
private String cstmrCnterNm;
|
||||
|
||||
@Column(name = "cstmr_cnter_tlphon_no", length = 14)
|
||||
private String cstmrCnterTlphonNo;
|
||||
|
||||
@Column(name = "redirect_url", length = 255)
|
||||
private String redirectUrl;
|
||||
|
||||
@Column(name = "use_at", length = 1)
|
||||
private String useAt;
|
||||
|
||||
@Embedded
|
||||
private FieldCreate create;
|
||||
|
||||
@Embedded
|
||||
private FieldUpdate update;
|
||||
|
||||
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.embeded;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embeddable;
|
||||
import javax.persistence.PrePersist;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
||||
@Embeddable
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public class FieldCreate {
|
||||
|
||||
// @CreationTimestamp
|
||||
// @Temporal(TemporalType.TIMESTAMP)
|
||||
@Column(name = "regist_dt")
|
||||
private LocalDateTime registDt;
|
||||
@Column(name = "register", length = 50)
|
||||
private String register;
|
||||
|
||||
|
||||
@PrePersist
|
||||
public void preUpdate() {
|
||||
this.registDt = LocalDateTime.now();
|
||||
}
|
||||
|
||||
|
||||
@Builder(builderMethodName = "builder")
|
||||
public FieldCreate(String register, LocalDateTime registDt) {
|
||||
this.register = register;
|
||||
this.registDt = registDt;
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.embeded;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embeddable;
|
||||
import javax.persistence.PreUpdate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Embeddable
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public class FieldUpdate {
|
||||
|
||||
// @UpdateTimestamp
|
||||
// @Temporal(TemporalType.TIMESTAMP)
|
||||
@Column(name = "updt_dt")
|
||||
private LocalDateTime updtDt;
|
||||
@Column(name = "updusr", length = 50)
|
||||
private String updusr;
|
||||
|
||||
@PreUpdate
|
||||
public void preUpdate() {
|
||||
this.updtDt = LocalDateTime.now();
|
||||
}
|
||||
|
||||
@Builder(builderMethodName = "builder")
|
||||
public FieldUpdate(String updusr, LocalDateTime updtDt) {
|
||||
this.updusr = updusr;
|
||||
this.updtDt = updtDt;
|
||||
}
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndngDetail;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface ElctrnNticSndngDetailRepository extends JpaRepository<ElctrnNticSndngDetail, String>, ElctrnNticSndngDetailRepositoryCustom {
|
||||
|
||||
Optional<ElctrnNticSndngDetail> findByExternalDocumentUuid(String externalDocumentUuid);
|
||||
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndng;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndngDetail;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface ElctrnNticSndngDetailRepositoryCustom {
|
||||
|
||||
|
||||
List<ElctrnNticSndngDetail> findAllDecByElctrnNticSndng(ElctrnNticSndng elctrnNticSndng);
|
||||
|
||||
|
||||
List<ElctrnNticSndngDetail> findAllFetchByElctrnNticSndngId(String elctrnNticSndngId);
|
||||
|
||||
Optional<Long> findLastSendMastIdByElctrnNticSndngId(String elctrnNticSndngId);
|
||||
|
||||
String findIhidnumDecByElctrnNticSndngDetailId(String elctrnNticSndngDetailId);
|
||||
}
|
@ -1,83 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndng;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndngDetail;
|
||||
import com.querydsl.core.types.Projections;
|
||||
import com.querydsl.core.types.dsl.Expressions;
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.QElctrnNticSndng.elctrnNticSndng;
|
||||
import static cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.QElctrnNticSndngDetail.elctrnNticSndngDetail;
|
||||
import static cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.QNhtTmplatManage.nhtTmplatManage;
|
||||
import static cokr.xit.ens.modules.kkomydoc.domain.QSendDetailKkoMydoc.sendDetailKkoMydoc;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class ElctrnNticSndngDetailRepositoryImpl implements ElctrnNticSndngDetailRepositoryCustom {
|
||||
|
||||
private final JPAQueryFactory query;
|
||||
|
||||
@Override
|
||||
public List<ElctrnNticSndngDetail> findAllDecByElctrnNticSndng(ElctrnNticSndng elctrnNticSndng) {
|
||||
|
||||
return query.select(Projections.fields(ElctrnNticSndngDetail.class
|
||||
, elctrnNticSndngDetail.elctrnNticSndngDetailId
|
||||
, elctrnNticSndngDetail.elctrnNticSndng
|
||||
, elctrnNticSndngDetail.signguCode
|
||||
, elctrnNticSndngDetail.mainCode
|
||||
, Expressions.stringTemplate("ECL_DECRYPT({0})", elctrnNticSndngDetail.ihidnum).as("ihidnum")
|
||||
, elctrnNticSndngDetail.cnDetail
|
||||
, elctrnNticSndngDetail.mobilePageCn
|
||||
, elctrnNticSndngDetail.create
|
||||
, elctrnNticSndngDetail.update
|
||||
, elctrnNticSndngDetail.externalDocumentUuid))
|
||||
.from(elctrnNticSndngDetail)
|
||||
.where(elctrnNticSndngDetail.elctrnNticSndng.eq(elctrnNticSndng))
|
||||
.fetch();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<ElctrnNticSndngDetail> findAllFetchByElctrnNticSndngId(String elctrnNticSndngId) {
|
||||
return query.selectFrom(elctrnNticSndngDetail)
|
||||
.innerJoin(elctrnNticSndngDetail.elctrnNticSndng, elctrnNticSndng)
|
||||
.fetchJoin()
|
||||
.innerJoin(elctrnNticSndng.nhtTmplatManage, nhtTmplatManage)
|
||||
.fetchJoin()
|
||||
.where(elctrnNticSndngDetail.elctrnNticSndng.elctrnNticSndngId.eq(elctrnNticSndngId))
|
||||
.fetch();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Optional<Long> findLastSendMastIdByElctrnNticSndngId(String elctrnNticSndngId) {
|
||||
return Optional.ofNullable(query.select(sendDetailKkoMydoc.sendMast.sendMastId)
|
||||
.from(sendDetailKkoMydoc)
|
||||
// .where(sendDetailKkoMydoc.propExternalDocumentUuid.in(findExternalDocumentUuidsByLnkInputId(elctrnNticSndngId)))
|
||||
.innerJoin(elctrnNticSndngDetail).on(sendDetailKkoMydoc.propExternalDocumentUuid.eq(elctrnNticSndngDetail.externalDocumentUuid))
|
||||
.where(elctrnNticSndngDetail.elctrnNticSndng.elctrnNticSndngId.eq(elctrnNticSndngId))
|
||||
.groupBy(sendDetailKkoMydoc.sendMast.sendMastId)
|
||||
.orderBy(sendDetailKkoMydoc.sendMast.sendMastId.desc())
|
||||
.fetchFirst());
|
||||
}
|
||||
|
||||
private List<String> findExternalDocumentUuidsByLnkInputId(String elctrnNticSndngId) {
|
||||
return query.select(elctrnNticSndngDetail.externalDocumentUuid)
|
||||
.from(elctrnNticSndngDetail)
|
||||
.where(elctrnNticSndngDetail.elctrnNticSndng.elctrnNticSndngId.eq(elctrnNticSndngId))
|
||||
.fetch();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String findIhidnumDecByElctrnNticSndngDetailId(String elctrnNticSndngDetailId) {
|
||||
return query.select(Expressions.stringTemplate("ECL_DECRYPT({0})", elctrnNticSndngDetail.ihidnum).as("ihidnum"))
|
||||
.from(elctrnNticSndngDetail)
|
||||
.where(elctrnNticSndngDetail.elctrnNticSndngDetailId.eq(elctrnNticSndngDetailId))
|
||||
.fetchOne();
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndng;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ElctrnNticSndngRepository extends JpaRepository<ElctrnNticSndng, String> {
|
||||
|
||||
|
||||
List<ElctrnNticSndng> findAllBySndngProcessSttus(String sndngProcessSttus);
|
||||
|
||||
List<ElctrnNticSndng> findAllBySndngProcessSttusIn(List<String> sndngProcessSttuss);
|
||||
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndngResult;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface ElctrnNticSndngResultRepository extends JpaRepository<ElctrnNticSndngResult, String>, ElctrnNticSndngResultRepositoryCustom {
|
||||
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndngResult;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ElctrnNticSndngResultRepositoryCustom {
|
||||
|
||||
|
||||
|
||||
|
||||
void modifyByElctrnNticSndngResults(List<ElctrnNticSndngResult> elctrnNticSndngResults);
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndngResult;
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import static cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.QElctrnNticSndngResult.elctrnNticSndngResult;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class ElctrnNticSndngResultRepositoryImpl implements ElctrnNticSndngResultRepositoryCustom {
|
||||
|
||||
private final JPAQueryFactory query;
|
||||
|
||||
@Override
|
||||
public void modifyByElctrnNticSndngResults(List<ElctrnNticSndngResult> elctrnNticSndngResults) {
|
||||
elctrnNticSndngResults.forEach(data ->
|
||||
query.update(elctrnNticSndngResult)
|
||||
.set(elctrnNticSndngResult.sndngResultCode, data.getSndngResultCode())
|
||||
.set(elctrnNticSndngResult.requstDt, data.getRequstDt())
|
||||
.set(elctrnNticSndngResult.inqireDt, data.getInqireDt())
|
||||
.set(elctrnNticSndngResult.readngDt, data.getReadngDt())
|
||||
.set(elctrnNticSndngResult.errorCn, data.getErrorCn())
|
||||
// .set(elctrnNticSndngResult.create, FieldCreate.builder().build())
|
||||
.set(elctrnNticSndngResult.lastUpdtDt, LocalDateTime.now())
|
||||
.where(elctrnNticSndngResult.elctrnNticSndngDetailId.eq(data.getElctrnNticSndngDetailId()))
|
||||
.execute()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.NhtTmplatManage;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
|
||||
public interface NhtTmplatManageRepository extends JpaRepository<NhtTmplatManage, String> {
|
||||
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
//package cokr.xit.ens.biz.traffic.chuncheon.mydoc.v1.mq;
|
||||
//
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//import org.springframework.kafka.core.KafkaTemplate;
|
||||
//import org.springframework.stereotype.Component;
|
||||
//
|
||||
//import lombok.extern.slf4j.Slf4j;
|
||||
//
|
||||
//@Slf4j
|
||||
//@Component
|
||||
//public class UserElctrnNticProducer {
|
||||
//
|
||||
// @Autowired
|
||||
// private KafkaTemplate<String, String> kafkaTemplate;
|
||||
//
|
||||
//
|
||||
// public void pubBulkSend(String message) {
|
||||
// final String topicName = "kkomydoc-send-bulk";
|
||||
//
|
||||
// log.info(String.format("[%s] pub message : %s", topicName, message));
|
||||
//
|
||||
// this.kafkaTemplate.send(topicName, message);
|
||||
// }
|
||||
//
|
||||
// public void pubBulkStatus(String message) {
|
||||
// final String topicName = "kkomydoc-status-bulk";
|
||||
//
|
||||
// log.info(String.format("[%s] pub message : %s", topicName, message));
|
||||
//
|
||||
// this.kafkaTemplate.send(topicName, message);
|
||||
// }
|
||||
//}
|
@ -1,55 +0,0 @@
|
||||
//package cokr.xit.ens.biz.traffic.chuncheon.mydoc.v1.sched;
|
||||
//
|
||||
//import cokr.xit.ens.biz.traffic.chuncheon.mydoc.v1.service.UserElctrnNticService;
|
||||
//import lombok.extern.slf4j.Slf4j;
|
||||
//import org.springframework.context.annotation.Profile;
|
||||
//import org.springframework.scheduling.annotation.Scheduled;
|
||||
//import org.springframework.stereotype.Component;
|
||||
//
|
||||
//import javax.annotation.Resource;
|
||||
//
|
||||
//@Slf4j
|
||||
//@Component
|
||||
////@Profile("!local")
|
||||
//@Profile("prod-traffic")
|
||||
//public class TrafficKkoMydocScheduler {
|
||||
//
|
||||
// @Resource
|
||||
// private UserElctrnNticService service;
|
||||
//
|
||||
// /**
|
||||
// * 인증톡 전송요청
|
||||
// */
|
||||
// @Scheduled(cron = "0 */1 * * * *")
|
||||
// public void runSend() {
|
||||
// log.info("[Schduler]KkoMydoc \"send\" run...");
|
||||
// service.send();
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 인증톡 전송결과 갱신
|
||||
// */
|
||||
// @Scheduled(cron = "0 */3 * * * *")
|
||||
// public void runResult() {
|
||||
// log.info("[Schduler]KkoMydoc \"result\" run...");
|
||||
// service.result();
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 인증톡 상태 갱신
|
||||
// */
|
||||
// @Scheduled(cron = "0 0 */1 * * *")
|
||||
// public void runStatus() {
|
||||
// log.info("[Schduler]KkoMydoc \"status\" run...");
|
||||
// service.status();
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 인증톡 상태 가져오기
|
||||
// */
|
||||
// @Scheduled(cron = "0 */30 * * * *")
|
||||
// public void runFetchStatus() {
|
||||
// log.info("[Schduler]KkoMydoc \"fetchStatus\" run...");
|
||||
// service.fetchStatus();
|
||||
// }
|
||||
//}
|
@ -1,296 +0,0 @@
|
||||
//package cokr.xit.ens.biz.traffic.chuncheon.mydoc.v1.service;
|
||||
//
|
||||
//import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndng;
|
||||
//import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndngDetail;
|
||||
//import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndngResult;
|
||||
//import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository.ElctrnNticSndngDetailRepository;
|
||||
//import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository.ElctrnNticSndngRepository;
|
||||
//import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository.ElctrnNticSndngResultRepository;
|
||||
//import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository.NhtTmplatManageRepository;
|
||||
//import cokr.xit.ens.biz.traffic.chuncheon.mydoc.v1.mq.UserElctrnNticProducer;
|
||||
//import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
//import cokr.xit.ens.core.exception.EnsException;
|
||||
//import cokr.xit.ens.core.exception.code.EnsErrCd;
|
||||
//import cokr.xit.ens.core.utils.CmmnUtil;
|
||||
//import cokr.xit.ens.core.utils.crypto.SHA256;
|
||||
//import cokr.xit.ens.modules.kkomydoc.v1.domain.repository.SendDetailKkoMydocRepository;
|
||||
//import cokr.xit.ens.modules.kkomydoc.v1.model.BulkSendReqDTO;
|
||||
//import cokr.xit.ens.modules.kkomydoc.v1.model.child.Document;
|
||||
//import cokr.xit.ens.modules.kkomydoc.v1.model.child.NotiDocument;
|
||||
//import cokr.xit.ens.modules.kkomydoc.v1.model.child.Property;
|
||||
//import cokr.xit.ens.modules.kkomydoc.v1.model.child.Receiver;
|
||||
//import cokr.xit.ens.modules.nicedici.service.NiceDiCiService;
|
||||
//import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
//import lombok.RequiredArgsConstructor;
|
||||
//import lombok.extern.slf4j.Slf4j;
|
||||
//import net.bytebuddy.utility.RandomString;
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//import org.springframework.beans.factory.annotation.Value;
|
||||
//import org.springframework.stereotype.Service;
|
||||
//import org.springframework.transaction.annotation.Transactional;
|
||||
//import org.springframework.util.StringUtils;
|
||||
//
|
||||
//import java.text.SimpleDateFormat;
|
||||
//import java.util.*;
|
||||
//
|
||||
//@Slf4j
|
||||
//@Service
|
||||
//@RequiredArgsConstructor
|
||||
//public class UserElctrnNticService {
|
||||
// private final ElctrnNticSndngRepository elctrnNticSndngRepository;
|
||||
// private final ElctrnNticSndngDetailRepository elctrnNticSndngDetailRepository;
|
||||
// private final ElctrnNticSndngResultRepository elctrnNticSndngResultRepository;
|
||||
// private final NhtTmplatManageRepository nhtTmplatManageRepository;
|
||||
// private final SendDetailKkoMydocRepository sendDetailKkoMydocRepository;
|
||||
// private final NiceDiCiService nicedDiCiService;
|
||||
//
|
||||
//
|
||||
// @Autowired
|
||||
// private UserElctrnNticProducer userElctrnNticProducer;
|
||||
//
|
||||
// @Value("${contract.nice.dici.socket.site-code}")
|
||||
// private String SITE_CODE;
|
||||
// @Value("${contract.nice.dici.socket.site-pw}")
|
||||
// private String SITE_PW;
|
||||
// @Value("${contract.kakao.pay.mydoc.access-token}")
|
||||
// private String ACCESS_TOKEN;
|
||||
// @Value("${contract.kakao.pay.mydoc.contract-uuid}")
|
||||
// private String CONTRACT_UUID;
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * 발송
|
||||
// */
|
||||
// @Transactional
|
||||
// public void send() {
|
||||
//
|
||||
// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm");
|
||||
// String yyyyMMddHHmm = dateFormat.format(new Date());
|
||||
// String beginSndngDt = String.format("%s00", yyyyMMddHHmm);
|
||||
// String endSndngDt = String.format("%s59", yyyyMMddHHmm);
|
||||
// this.send(beginSndngDt, endSndngDt);
|
||||
// }
|
||||
// /**
|
||||
// * 발송
|
||||
// */
|
||||
// @Transactional
|
||||
// public void send(String beginSndngDt, String endSndngDt) {
|
||||
//
|
||||
// List<ElctrnNticSndng> list = elctrnNticSndngRepository.findAllBySndngProcessSttusAndSndngDtBetween("01", beginSndngDt, endSndngDt);
|
||||
// for(ElctrnNticSndng row : list) {
|
||||
// List<ElctrnNticSndngDetail> detailList = elctrnNticSndngDetailRepository.findAllDecByElctrnNticSndng(row);
|
||||
//
|
||||
// List<String> jsonStrList = new ArrayList<>();
|
||||
// try {
|
||||
// jsonStrList = makeMessage(row, detailList);
|
||||
// } catch (Exception e) {
|
||||
// row.setSndngProcessSttus("99");
|
||||
// row.setErrorCn(e.getMessage());
|
||||
// elctrnNticSndngRepository.save(row);
|
||||
// continue;
|
||||
// }
|
||||
//
|
||||
// for(String jsonStr : jsonStrList) {
|
||||
// Map<String, String> m = new HashMap<>();
|
||||
// m.put("accessToken", ACCESS_TOKEN);
|
||||
// m.put("contractUuid", CONTRACT_UUID);
|
||||
// m.put("jsonStr", jsonStr);
|
||||
// userElctrnNticProducer.pubBulkSend(CmmnUtil.toJsonString(m));
|
||||
// }
|
||||
//
|
||||
//
|
||||
// elctrnNticSndngDetailRepository.saveAll(detailList);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * 메시지포맷 작성
|
||||
// */
|
||||
// @SuppressWarnings("deprecation")
|
||||
// private List<String> makeMessage(ElctrnNticSndng sndng, List<ElctrnNticSndngDetail> sndngDetails) throws EnsException {
|
||||
// List<String> jsonStrList = new ArrayList<>();
|
||||
//
|
||||
// List<Document> documents = new ArrayList<>();
|
||||
// List<NotiDocument> notidocuments = new ArrayList<>();
|
||||
// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
|
||||
// String prefixExternalDocumentUuid = String.format("B-%s%s", simpleDateFormat.format(new Date()), RandomString.make(5));
|
||||
// int seq = 0;
|
||||
// for(ElctrnNticSndngDetail row : sndngDetails) {
|
||||
//
|
||||
// String siteCode = SITE_CODE;
|
||||
// String sitePw = SITE_PW;
|
||||
// String payload = row.getMainCode();
|
||||
// String hash = null;
|
||||
// try {
|
||||
// if(StringUtils.isEmpty(row.getCnDetail()))
|
||||
// hash = SHA256.encrypt(row.getMainCode());
|
||||
// else
|
||||
// hash = SHA256.encrypt(row.getCnDetail());
|
||||
//// } catch (NoSuchAlgorithmException e) {
|
||||
// } catch (Exception e) {
|
||||
// log.error(String.format("Hash 값 생성에 실패 하였습니다. [%s]. ", row.getCnDetail()), e);
|
||||
// }
|
||||
//
|
||||
// EnsResponseVO ensResponseVO = nicedDiCiService.ci(siteCode, sitePw, row.getIhidnum());
|
||||
// String ci = ((Map<String, String>)ensResponseVO.getResultInfo()).get("ci");
|
||||
// Document document = new Document();
|
||||
// document.setTitle(sndng.getNhtTmplatManage().getNhtSj());
|
||||
// document.setCommon_categories(new String[] {"NOTICE"});
|
||||
// document.setHash(hash);
|
||||
// Receiver receiver = new Receiver();
|
||||
// if(ci==null) {
|
||||
// receiver.setPhone_number(null);
|
||||
// receiver.setName(null);
|
||||
// receiver.setBirthday(null);
|
||||
// receiver.setIs_required_verify_name(true);
|
||||
// }else {
|
||||
// receiver.setCi(ci);
|
||||
// }
|
||||
// document.setReceiver(receiver);
|
||||
// Property property = new Property();
|
||||
// String externalDocumentUuid = String.format("%s%09d", prefixExternalDocumentUuid, ++seq);
|
||||
// row.setLinkedUuid(externalDocumentUuid);
|
||||
// property.setLink(sndng.getNhtTmplatManage().getRedirectUrl());
|
||||
// property.setPayload(payload);
|
||||
// property.setMessage(sndng.getNhtTmplatManage().getNhtCn());
|
||||
// property.setCs_number(sndng.getNhtTmplatManage().getCstmrCnterTlphonNo());
|
||||
// property.setCs_name(StringUtils.isEmpty(sndng.getNhtTmplatManage().getCstmrCnterNm())?"문의처":sndng.getNhtTmplatManage().getCstmrCnterNm());
|
||||
// property.setExternal_document_uuid(externalDocumentUuid);
|
||||
// document.setProperty(property);
|
||||
// documents.add(document);
|
||||
//
|
||||
//
|
||||
//
|
||||
// if(!StringUtils.isEmpty(row.getElctrnNticSndng())) {
|
||||
// if(!StringUtils.isEmpty(row.getMobilePageCn()))
|
||||
// try {
|
||||
//
|
||||
//// NotiDocument notiDocument = (NotiDocument) CmmnUtil.jsonStringtoObj(NotiDocument.class, row.getMobilePageCn());
|
||||
// ObjectMapper mapper = new ObjectMapper();
|
||||
// NotiDocument notiDocument = mapper.readValue(row.getMobilePageCn(), NotiDocument.class);
|
||||
// notiDocument.setPayload``(payload);
|
||||
// notidocuments.add(notiDocument);
|
||||
// } catch (Exception e) {
|
||||
// // log.error(String.format("고지정보 변환에 실패 했습니다. [%s]", row.getMobilePageCn()), e);
|
||||
// throw new EnsException(EnsErrCd.ERR405, String.format("고지정보 변환에 실패 했습니다. [%s]. %s", row.getMobilePageCn(), e.getMessage()));
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// if(documents.size()==100) {
|
||||
// BulkSendReqDTO bulkSendReqDTO = new BulkSendReqDTO();
|
||||
// bulkSendReqDTO.setDocuments(documents);
|
||||
// bulkSendReqDTO.setNotidocuments(notidocuments);
|
||||
// jsonStrList.add(CmmnUtil.toJsonString(bulkSendReqDTO));
|
||||
// documents = new ArrayList<>();
|
||||
// notidocuments = new ArrayList<>();
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// BulkSendReqDTO bulkSendReqDTO = new BulkSendReqDTO();
|
||||
// bulkSendReqDTO.setDocuments(documents);
|
||||
// bulkSendReqDTO.setNotidocuments(notidocuments);
|
||||
// jsonStrList.add(CmmnUtil.toJsonString(bulkSendReqDTO));
|
||||
//
|
||||
//
|
||||
//
|
||||
// return jsonStrList;
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * 발송결과 업데이트
|
||||
// */
|
||||
// @Transactional
|
||||
// public void result() {
|
||||
//
|
||||
// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm");
|
||||
// Calendar cal = Calendar.getInstance();
|
||||
// Date date = new Date();
|
||||
// cal.setTime(date);
|
||||
// cal.add(Calendar.MINUTE, -3);
|
||||
// String beginSndngDt = String.format("%s00", dateFormat.format(cal.getTime()));
|
||||
// cal.setTime(date);
|
||||
// cal.add(Calendar.MINUTE, -1);
|
||||
// String endSndngDt = String.format("%s59", dateFormat.format(new Date()));
|
||||
//
|
||||
// this.result(beginSndngDt, endSndngDt);
|
||||
// }
|
||||
// /**
|
||||
// * 발송결과 업데이트
|
||||
// */
|
||||
// @SuppressWarnings("deprecation")
|
||||
// @Transactional
|
||||
// public void result(String beginSndngDt, String endSndngDt) {
|
||||
// List<ElctrnNticSndng> list = elctrnNticSndngRepository.findAllBySndngProcessSttusAndSndngDtBetween("01", beginSndngDt, endSndngDt);
|
||||
//
|
||||
//
|
||||
// for(ElctrnNticSndng row : list) {
|
||||
// List<ElctrnNticSndngResult> sndngResultList = elctrnNticSndngResultRepository.findAllByElctrnNticSndngId(row.getElctrnNticSndngId());
|
||||
// elctrnNticSndngResultRepository.saveAll(sndngResultList);
|
||||
// row.setSndngProcessSttus("99");
|
||||
// for(ElctrnNticSndngResult sndngResult : sndngResultList) {
|
||||
// if(StringUtils.isEmpty(sndngResult.getErrorCn())) {
|
||||
// row.setSndngProcessSttus("02");
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// elctrnNticSndngRepository.save(row);
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// *
|
||||
// * 메소드 설명: 상태변경
|
||||
// * @author: mk1126sj
|
||||
// * @date: 2021. 12. 29.
|
||||
// */
|
||||
// @Transactional
|
||||
// public void status() {
|
||||
//
|
||||
// List<ElctrnNticSndng> list = elctrnNticSndngRepository.findAllBySndngProcessSttus("02");
|
||||
//
|
||||
// for(ElctrnNticSndng row : list) {
|
||||
// List<String> externalDocumentUuidList = elctrnNticSndngDetailRepository.findExternalDocumentUuidByElctrnNticSndng(row);
|
||||
//
|
||||
// Map<String, Object> m = new HashMap<>();
|
||||
// m.put("accessToken", ACCESS_TOKEN);
|
||||
// m.put("contractUuid", CONTRACT_UUID);
|
||||
// m.put("externalDocumentUuidList", externalDocumentUuidList);
|
||||
// userElctrnNticProducer.pubBulkStatus(CmmnUtil.toJsonString(m));
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// *
|
||||
// * 메소드 설명: 발송마스터 및 발송상세 상태정보 fetch
|
||||
// * void 요청처리 후 응답객체
|
||||
// * @author: mk1126sj
|
||||
// * @date: 2021. 12. 29.
|
||||
// */
|
||||
// public void fetchStatus() {
|
||||
//
|
||||
// List<ElctrnNticSndng> list = elctrnNticSndngRepository.findAllBySndngProcessSttus("02");
|
||||
//
|
||||
// for(ElctrnNticSndng row : list) {
|
||||
// elctrnNticSndngResultRepository.saveFetchStatus(row);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//}
|
@ -1,12 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.model;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@Schema(name = "TrafficCcMydocReqDTO")
|
||||
public class TrafficCcMydocReqDTO {
|
||||
|
||||
@Schema(required = true, title = "전자 고지 발송 Id", example = " ")
|
||||
private String elctrnNticSndngId;
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.presentation;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.model.TrafficCcMydocReqDTO;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.service.TrafficCcMydocService;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
@Tag(name = "TrafficCcSigntalkController")
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequiredArgsConstructor
|
||||
public class TrafficCcMydocController {
|
||||
|
||||
private final TrafficCcMydocService trafficCcMydocService;
|
||||
|
||||
@Operation(summary = "접수")
|
||||
@PostMapping(value = "/traffic/cc/mydoc/accept", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<EnsResponseVO> accept(@RequestBody TrafficCcMydocReqDTO reqDTO){
|
||||
EnsResponseVO responseVO = trafficCcMydocService.accept(reqDTO.getElctrnNticSndngId());
|
||||
return new ResponseEntity<EnsResponseVO>(responseVO, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Operation(summary = "제작")
|
||||
@PutMapping(value = "/traffic/cc/mydoc/re/make", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<EnsResponseVO> reMake(@RequestBody TrafficCcMydocReqDTO reqDTO){
|
||||
EnsResponseVO responseVO = trafficCcMydocService.reMake(reqDTO.getElctrnNticSndngId());
|
||||
return new ResponseEntity<EnsResponseVO>(responseVO, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Operation(summary = "전송")
|
||||
@PutMapping(value = "/traffic/cc/mydoc/re/send", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<EnsResponseVO> reSend(@RequestBody TrafficCcMydocReqDTO reqDTO){
|
||||
EnsResponseVO responseVO = trafficCcMydocService.reSend(reqDTO.getElctrnNticSndngId());
|
||||
return new ResponseEntity<EnsResponseVO>(responseVO, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Operation(summary = "전송결과가져오기")
|
||||
@PostMapping(value = "/traffic/cc/mydoc/fetch", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<EnsResponseVO> fetch(@RequestBody TrafficCcMydocReqDTO reqDTO){
|
||||
EnsResponseVO responseVO = trafficCcMydocService.fetch(reqDTO.getElctrnNticSndngId());
|
||||
return new ResponseEntity<EnsResponseVO>(responseVO, HttpStatus.OK);
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.sched;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.service.TrafficCcMydocService;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile("prod-traffic")
|
||||
@RequiredArgsConstructor
|
||||
public class TrafficCcMydocScheduler {
|
||||
|
||||
private final TrafficCcMydocService trafficCcMydocService;
|
||||
|
||||
/**
|
||||
* 인증톡 접수
|
||||
* -. 인증톡 전송을 위해 TRAFFIC에 등록된 기초데이터를 ENS에 이관 등록 한다.
|
||||
*/
|
||||
@Scheduled(cron = "0 */1 7-22 * * *")
|
||||
public void accepted(){
|
||||
EnsResponseVO responseVO = trafficCcMydocService.acceptAll();
|
||||
log.info("=======================================================");
|
||||
log.info("[TRAFFIC] 인증톡 접수처리 결과");
|
||||
log.info(responseVO.toString());
|
||||
log.info("=======================================================");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 결과 가져오기
|
||||
* -. 전송이 완료된 인증톡 전송결과(성공/실패)를 ENS -> TRAFFIC 로 가져와 DB에 저장한다.
|
||||
*/
|
||||
@Scheduled(cron = "0 */15 7-22 * * *")
|
||||
public void fetched(){
|
||||
EnsResponseVO responseVO = trafficCcMydocService.fetchAll();
|
||||
|
||||
log.info("=======================================================");
|
||||
log.info("[TRAFFIC] 인증톡 요청문서정보 Fetch 결과");
|
||||
log.info(responseVO.toString());
|
||||
log.info("=======================================================");
|
||||
}
|
||||
}
|
@ -1,167 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.service;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndng;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository.ElctrnNticSndngRepository;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.service.support.TrafficCcMydocAcceptor;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.service.support.TrafficCcMydocFetcher;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.service.support.TrafficCcMydocMaker;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.service.support.TrafficCcMydocSender;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import cokr.xit.ens.core.exception.EnsException;
|
||||
import cokr.xit.ens.core.exception.code.EnsErrCd;
|
||||
import cokr.xit.ens.core.utils.CmmnUtil;
|
||||
import cokr.xit.ens.modules.kkomydoc.service.event.KkoMydocSendReserveEvent;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Transactional
|
||||
public class TrafficCcMydocService {
|
||||
|
||||
private final ElctrnNticSndngRepository elctrnNticSndngRepository;
|
||||
|
||||
private final TrafficCcMydocAcceptor trafficCcMydocAcceptor;
|
||||
private final TrafficCcMydocMaker trafficCcMydocMaker;
|
||||
private final TrafficCcMydocSender trafficCcMydocSender;
|
||||
private final TrafficCcMydocFetcher trafficCcMydocFetcher;
|
||||
|
||||
private final ApplicationEventPublisher applicationEventPublisher;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 접수(TRAFFIC -> ENS)
|
||||
*/
|
||||
public EnsResponseVO accept(String elctrnNticSndngId){
|
||||
|
||||
try {
|
||||
|
||||
ElctrnNticSndng elctrnNticSndng = elctrnNticSndngRepository.findById(elctrnNticSndngId)
|
||||
.orElseThrow(()->new EnsException(EnsErrCd.ACPT404, "일치하는 자료가 없거나 \"요청(01)\" 상태가 아닙니다."));
|
||||
|
||||
return this.accept(Arrays.asList(elctrnNticSndng)).getResultInfo().get(0);
|
||||
} catch (EnsException e){
|
||||
return EnsResponseVO.errBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(e.getMessage())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 인증톡 접수(TRAFFIC -> ENS)
|
||||
*/
|
||||
public EnsResponseVO<List<EnsResponseVO>> acceptAll(){
|
||||
try {
|
||||
|
||||
List<ElctrnNticSndng> elctrnNticSndngs = elctrnNticSndngRepository.findAllBySndngProcessSttus("01");
|
||||
if(CmmnUtil.isEmpty(elctrnNticSndngs))
|
||||
throw new EnsException(EnsErrCd.ACPT404, "\"요청(01)\" 상태의 자료가 없습니다.");
|
||||
|
||||
return this.accept(elctrnNticSndngs);
|
||||
} catch (EnsException e){
|
||||
return EnsResponseVO.<List<EnsResponseVO>>errBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(e.getMessage())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
private EnsResponseVO<List<EnsResponseVO>> accept(List<ElctrnNticSndng> elctrnNticSndngs){
|
||||
EnsResponseVO responseVO = trafficCcMydocAcceptor.statReady(elctrnNticSndngs.stream()
|
||||
.map(row -> row.getElctrnNticSndngId())
|
||||
.collect(Collectors.toList()));
|
||||
if(!EnsErrCd.OK.equals(responseVO.getErrCode()))
|
||||
return responseVO;
|
||||
|
||||
List<EnsResponseVO> resultInfo = elctrnNticSndngs.stream()
|
||||
.map(row -> trafficCcMydocAcceptor.execute(row.getElctrnNticSndngId()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
List<Long> sendMastIds = resultInfo.stream()
|
||||
.filter(ensResponseVO -> EnsErrCd.OK.equals(ensResponseVO.getErrCode()))
|
||||
.map(ensResponseVO -> (Long)((Map<String, Object>)ensResponseVO.getResultInfo()).get("sendMastId"))
|
||||
.collect(Collectors.toList());
|
||||
KkoMydocSendReserveEvent event = KkoMydocSendReserveEvent.builder()
|
||||
.sendMastIds(sendMastIds)
|
||||
.callback(() -> this.fetch(elctrnNticSndngs))
|
||||
.build();
|
||||
applicationEventPublisher.publishEvent(event);
|
||||
|
||||
return EnsResponseVO.<List<EnsResponseVO>>okBuilder().resultInfo(resultInfo).build();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 제작 재요청
|
||||
* @param elctrnNticSndngId
|
||||
* @return
|
||||
*/
|
||||
public EnsResponseVO reMake(String elctrnNticSndngId){
|
||||
return trafficCcMydocMaker.execute(elctrnNticSndngId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 전송 재요청
|
||||
* @param elctrnNticSndngId
|
||||
* @return
|
||||
*/
|
||||
public EnsResponseVO reSend(String elctrnNticSndngId){
|
||||
return trafficCcMydocSender.execute(elctrnNticSndngId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 전송(성공/실패) 결과 가져오기
|
||||
*/
|
||||
public EnsResponseVO fetch(String elctrnNticSndngId){
|
||||
ElctrnNticSndng elctrnNticSndng = null;
|
||||
try {
|
||||
elctrnNticSndng = elctrnNticSndngRepository.findById(elctrnNticSndngId)
|
||||
.orElseThrow(() -> new EnsException(EnsErrCd.ERR404, String.format("[ elctrnNticSndngId %s ]와 일치하는 자료가 없습니다.", elctrnNticSndngId)));
|
||||
} catch (EnsException e) {
|
||||
return EnsResponseVO.errBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(e.getMessage())
|
||||
.build();
|
||||
}
|
||||
|
||||
return this.fetch(Arrays.asList(elctrnNticSndng));
|
||||
}
|
||||
|
||||
/**
|
||||
* 인증톡 전송(성공/실패) 결과 모두 가져오기
|
||||
*/
|
||||
public EnsResponseVO fetchAll(){
|
||||
List<ElctrnNticSndng> elctrnNticSndngs = elctrnNticSndngRepository.findAllBySndngProcessSttusIn(Arrays.asList("02", "08"));
|
||||
|
||||
return this.fetch(elctrnNticSndngs);
|
||||
}
|
||||
|
||||
private EnsResponseVO fetch(List<ElctrnNticSndng> elctrnNticSndngs){
|
||||
|
||||
return EnsResponseVO.okBuilder()
|
||||
.resultInfo(
|
||||
elctrnNticSndngs.stream()
|
||||
.map(row -> trafficCcMydocFetcher.execute(row.getElctrnNticSndngId()))
|
||||
.collect(Collectors.toList()
|
||||
)
|
||||
)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,245 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.service.support;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndng;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndngDetail;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.embeded.FieldUpdate;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository.ElctrnNticSndngDetailRepository;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository.ElctrnNticSndngRepository;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import cokr.xit.ens.core.exception.EnsException;
|
||||
import cokr.xit.ens.core.exception.code.EnsErrCd;
|
||||
import cokr.xit.ens.core.utils.Checks;
|
||||
import cokr.xit.ens.core.utils.DateUtil;
|
||||
import cokr.xit.ens.core.utils.MapDeserailizer;
|
||||
import cokr.xit.ens.modules.common.biztmplt.EnsPhaseProcSupport;
|
||||
import cokr.xit.ens.modules.common.code.VenderCd;
|
||||
import cokr.xit.ens.modules.kkomydoc.model.KkoMydocAcceptReqDTO;
|
||||
import cokr.xit.ens.modules.kkomydoc.model.config.Document;
|
||||
import cokr.xit.ens.modules.kkomydoc.model.config.Property;
|
||||
import cokr.xit.ens.modules.kkomydoc.model.config.Receiver;
|
||||
import cokr.xit.ens.modules.kkomydoc.model.config.XitProperty;
|
||||
import cokr.xit.ens.modules.kkomydoc.service.KkoMydocService;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.bytebuddy.utility.RandomString;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class TrafficCcMydocAcceptor implements EnsPhaseProcSupport<EnsResponseVO, String> {
|
||||
|
||||
private final ElctrnNticSndngRepository elctrnNticSndngRepository;
|
||||
private final ElctrnNticSndngDetailRepository elctrnNticSndngDetailRepository;
|
||||
|
||||
private final KkoMydocService kkoMydocService;
|
||||
|
||||
private Gson gson = new GsonBuilder().registerTypeAdapter(Map.class, new MapDeserailizer()).serializeNulls().create();
|
||||
|
||||
/**
|
||||
* Accept 준비
|
||||
*
|
||||
* @param elctrnNticSndngIds
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statReady(List<String> elctrnNticSndngIds) {
|
||||
try {
|
||||
AtomicInteger index = new AtomicInteger();
|
||||
String prefixExternalDocumentUuid = String.format("B-%s%s", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")), RandomString.make(5));
|
||||
elctrnNticSndngIds.stream()
|
||||
.map(elctrnNticSndngId -> elctrnNticSndngRepository.findById(elctrnNticSndngId).get())
|
||||
.map(elctrnNticSndng -> elctrnNticSndngDetailRepository.findAllDecByElctrnNticSndng(elctrnNticSndng))
|
||||
.forEach(list -> {
|
||||
list.stream()
|
||||
.forEach(row -> {
|
||||
row.setExternalDocumentUuid(String.format("%s%09d", prefixExternalDocumentUuid, index.getAndIncrement() + 1));
|
||||
});
|
||||
elctrnNticSndngDetailRepository.saveAll(list);
|
||||
|
||||
}
|
||||
|
||||
);
|
||||
return EnsResponseVO.okBuilder().build();
|
||||
} catch (Exception e) {
|
||||
return EnsResponseVO.errBuilder()
|
||||
.errCode(EnsErrCd.ACPT500)
|
||||
.errMsg(String.format("문서식별번호(외부) 생성에 실패 했습니다. %s", e.getMessage()))
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statBegin(String elctrnNticSndngId) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 전자고지 접수
|
||||
*/
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO execute(String elctrnNticSndngId) {
|
||||
Map<String, Object> resultInfo = new HashMap<>();
|
||||
resultInfo.put("elctrnNticSndngId", elctrnNticSndngId);
|
||||
|
||||
EnsResponseVO responseVO = null;
|
||||
ElctrnNticSndng elctrnNticSndng = null;
|
||||
try {
|
||||
elctrnNticSndng = elctrnNticSndngRepository.findById(elctrnNticSndngId)
|
||||
.orElseThrow(() -> new EnsException(EnsErrCd.ACPT404, String.format("일치하는 TB_ELCTRN_NTIC_SNDNG 데이터가 없습니다. [ elctrnNticSndngId %s ]", elctrnNticSndngId)));
|
||||
|
||||
KkoMydocAcceptReqDTO reqDTO = this.convertTbInputDataToAcceptReqDTO(elctrnNticSndngDetailRepository.findAllFetchByElctrnNticSndngId(elctrnNticSndng.getElctrnNticSndngId()));
|
||||
|
||||
EnsResponseVO reqResp = kkoMydocService.accept(reqDTO);
|
||||
|
||||
|
||||
if (EnsErrCd.OK.equals(reqResp.getErrCode())) {
|
||||
resultInfo.put("sendMastId", (Long) ((Map<String, Object>) reqResp.getResultInfo()).get("sendMastId"));
|
||||
responseVO = EnsResponseVO.okBuilder().resultInfo(resultInfo).build();
|
||||
} else {
|
||||
responseVO = EnsResponseVO.errRsltBuilder()
|
||||
.errCode(reqResp.getErrCode())
|
||||
.errMsg(reqResp.getErrMsg())
|
||||
.resultInfo(reqResp.getResultInfo())
|
||||
.build();
|
||||
}
|
||||
} catch (EnsException e) {
|
||||
responseVO = EnsResponseVO.errRsltBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(String.format("인증톡 \"접수\" 처리 실패. [%s] %s", e.getErrCd().getCode(), e.getMessage()))
|
||||
.resultInfo(resultInfo)
|
||||
.build();
|
||||
|
||||
} catch (Exception e) {
|
||||
responseVO = EnsResponseVO.errRsltBuilder()
|
||||
.errCode(EnsErrCd.ACPT500)
|
||||
.errMsg(String.format("인증톡 \"접수\" 처리 실패. %s", e.getMessage()))
|
||||
.resultInfo(resultInfo)
|
||||
.build();
|
||||
|
||||
} finally {
|
||||
if (EnsErrCd.OK.equals(responseVO.getErrCode())) {
|
||||
elctrnNticSndng.setUpdate(FieldUpdate.builder()
|
||||
.updusr("ENS_SYS")
|
||||
.updtDt(LocalDateTime.now())
|
||||
.build());
|
||||
elctrnNticSndng.setSndngProcessSttus("02");
|
||||
elctrnNticSndng.setErrorCn(null);
|
||||
} else {
|
||||
elctrnNticSndng.setUpdate(FieldUpdate.builder()
|
||||
.updusr("ENS_SYS")
|
||||
.updtDt(LocalDateTime.now())
|
||||
.build());
|
||||
elctrnNticSndng.setSndngProcessSttus("99");
|
||||
elctrnNticSndng.setErrorCn(responseVO.getErrMsg());
|
||||
if (responseVO.getResultInfo() != null && (responseVO.getResultInfo() instanceof List || responseVO.getResultInfo() instanceof Map))
|
||||
elctrnNticSndng.setErrorDtls(gson.toJson(responseVO.getResultInfo()));
|
||||
}
|
||||
}
|
||||
|
||||
return responseVO;
|
||||
}
|
||||
|
||||
|
||||
private KkoMydocAcceptReqDTO convertTbInputDataToAcceptReqDTO(List<ElctrnNticSndngDetail> list) {
|
||||
|
||||
return KkoMydocAcceptReqDTO.builder()
|
||||
.vender(VenderCd.intech.getCode())
|
||||
.org_cd(list.get(0).getElctrnNticSndng().getSignguCode())
|
||||
.tmplt_cd(list.get(0).getElctrnNticSndng().getNhtTmplatManage().getNhtTmplatId())
|
||||
.post_bundle_title(
|
||||
String.format("%s(%s건)-%s"
|
||||
, list.get(0).getElctrnNticSndng().getNhtTmplatManage().getNhtNm()
|
||||
, list.get(0).getElctrnNticSndng().getSndngCo()
|
||||
, LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))
|
||||
)
|
||||
)
|
||||
.send_dt(list.get(0).getElctrnNticSndng().getSndngDt())
|
||||
.close_dt(list.get(0).getElctrnNticSndng().getClosDt())
|
||||
.documents(
|
||||
list.stream()
|
||||
.map(row -> createDocument(row))
|
||||
.collect(Collectors.toList())
|
||||
)
|
||||
.build();
|
||||
}
|
||||
|
||||
private Document createDocument(ElctrnNticSndngDetail data) throws EnsException {
|
||||
|
||||
return Document.builder()
|
||||
.external_document_uuid(data.getExternalDocumentUuid())
|
||||
.hash(null)
|
||||
.common_categories(Arrays.asList("NOTICE"))
|
||||
.read_expired_at(DateUtil.dateToAbsTimeSec(data.getElctrnNticSndng().getClosDt()))
|
||||
// .read_expired_sec()
|
||||
.receiver(this.createReceiver(data))
|
||||
.property(this.createProperty(data))
|
||||
.bridge(null)
|
||||
.xit_property(this.createXitProperty(data))
|
||||
.build();
|
||||
}
|
||||
|
||||
private Receiver createReceiver(ElctrnNticSndngDetail data) {
|
||||
return Receiver.builder()
|
||||
.ci(null)
|
||||
.phone_number(null)
|
||||
.name(null)
|
||||
.birthday(null)
|
||||
.is_required_verify_name(null)
|
||||
.build();
|
||||
}
|
||||
|
||||
private Property createProperty(ElctrnNticSndngDetail data) {
|
||||
return Property.builder()
|
||||
.link(data.getElctrnNticSndng().getNhtTmplatManage().getRedirectUrl())
|
||||
.payload(null)
|
||||
// .external_document_uuid(data.getExternalDocumentUuid())
|
||||
.build();
|
||||
}
|
||||
|
||||
private XitProperty createXitProperty(ElctrnNticSndngDetail data) {
|
||||
Map<String, List<Map<String, Object>>> mobilePage = new HashMap<>();
|
||||
mobilePage.put("details", this.createDetails(data));
|
||||
|
||||
String jid = elctrnNticSndngDetailRepository.findIhidnumDecByElctrnNticSndngDetailId(data.getElctrnNticSndngDetailId());
|
||||
return XitProperty.builder()
|
||||
.mbl_page_data(mobilePage)
|
||||
// .ci_trans_use_yn("Y")
|
||||
// .jid(data.getIhidnum())
|
||||
.jid(Checks.isCheckJid(jid) ? jid : "1111111111111")
|
||||
.tmplt_msg_data(null)
|
||||
.build();
|
||||
}
|
||||
|
||||
private List<Map<String, Object>> createDetails(ElctrnNticSndngDetail data) {
|
||||
try {
|
||||
Map<String, List<Map<String, Object>>> m = gson.fromJson(data.getMobilePageCn(), Map.class);
|
||||
return m.get("details");
|
||||
} catch (Exception e) {
|
||||
log.error("\"mobilePageCn\" Json Parse 실패. {}", data.getMobilePageCn());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,213 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.service.support;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndng;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndngDetail;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.ElctrnNticSndngResult;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.embeded.FieldCreate;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.embeded.FieldUpdate;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository.ElctrnNticSndngDetailRepository;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository.ElctrnNticSndngRepository;
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository.ElctrnNticSndngResultRepository;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import cokr.xit.ens.core.exception.EnsException;
|
||||
import cokr.xit.ens.core.exception.code.EnsErrCd;
|
||||
import cokr.xit.ens.core.utils.CmmnUtil;
|
||||
import cokr.xit.ens.modules.common.biztmplt.EnsPhaseProcSupport;
|
||||
import cokr.xit.ens.modules.kkomydoc.model.KkoMydocRsltRespDTO;
|
||||
import cokr.xit.ens.modules.kkomydoc.model.config.KkoMydocStat;
|
||||
import cokr.xit.ens.modules.kkomydoc.service.KkoMydocService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class TrafficCcMydocFetcher implements EnsPhaseProcSupport<EnsResponseVO, String> {
|
||||
|
||||
private final ElctrnNticSndngRepository elctrnNticSndngRepository;
|
||||
private final ElctrnNticSndngDetailRepository elctrnNticSndngDetailRepository;
|
||||
|
||||
private final ElctrnNticSndngResultRepository elctrnNticSndngResultRepository;
|
||||
|
||||
private final KkoMydocService kkoMydocService;
|
||||
|
||||
|
||||
/**
|
||||
* Fetch 준비
|
||||
*
|
||||
* @param elctrnNticSndngIds
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statReady(List<String> elctrnNticSndngIds) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statBegin(String elctrnNticSndngId) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 발송(성공/실패) 자료에 대한 결과 가져오기
|
||||
*
|
||||
* @param elctrnNticSndngId
|
||||
*/
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO execute(String elctrnNticSndngId) {
|
||||
EnsResponseVO responseVO = null;
|
||||
Map<String, Object> resultInfo = new HashMap<>();
|
||||
resultInfo.put("elctrnNticSndngId", elctrnNticSndngId);
|
||||
|
||||
KkoMydocRsltRespDTO respDTO = null;
|
||||
try {
|
||||
Long sendMastId = elctrnNticSndngDetailRepository.findLastSendMastIdByElctrnNticSndngId(elctrnNticSndngId)
|
||||
.orElseThrow(() -> new EnsException(EnsErrCd.RSLT404, "일치하는 ENS 접수자료가 없습니다."));
|
||||
resultInfo.put("sendMastId", sendMastId);
|
||||
|
||||
|
||||
EnsResponseVO apiRespVO = kkoMydocService.sendResultProvide(sendMastId);
|
||||
respDTO = (KkoMydocRsltRespDTO) apiRespVO.getResultInfo();
|
||||
|
||||
|
||||
// elctrnNticSndngResultRepository.saveAll(respDTO.getDocuments().stream()
|
||||
// .map(row -> {
|
||||
// return ElctrnNticSndngResult.builder()
|
||||
// .elctrnNticSndngDetailId(elctrnNticSndngDetailRepository.findByExternalDocumentUuid(row.getExternalDocumentUuid())
|
||||
// .orElse(new ElctrnNticSndngDetail())
|
||||
// .getElctrnNticSndngDetailId())
|
||||
// .sndngResultCode(this.sndngResultCode(row))
|
||||
// .requstDt(row.getKkoDocSentDt())
|
||||
// .inqireDt(row.getKkoDocReceivedDt())
|
||||
// .readngDt(row.getKkoDocReadFrstDt())
|
||||
// .errorCn(CmmnUtil.isEmpty(row.getErrorMessage()) ? null : row.getErrorMessage())
|
||||
// .create(FieldCreate.builder()
|
||||
// .REGISTER("ENS_SYS")
|
||||
// .REGIST_DT(LocalDateTime.now())
|
||||
// .build())
|
||||
// .build();
|
||||
// })
|
||||
// .collect(Collectors.toList())
|
||||
// );
|
||||
List<ElctrnNticSndngResult> elctrnNticSndngResults = respDTO.getDocuments().stream()
|
||||
.map(row -> {
|
||||
return ElctrnNticSndngResult.builder()
|
||||
.elctrnNticSndngDetailId(elctrnNticSndngDetailRepository.findByExternalDocumentUuid(row.getExternalDocumentUuid())
|
||||
.orElse(new ElctrnNticSndngDetail())
|
||||
.getElctrnNticSndngDetailId())
|
||||
.sndngResultCode(this.sndngResultCode(row))
|
||||
.requstDt(row.getKkoDocSentDt())
|
||||
.inqireDt(row.getKkoDocReceivedDt())
|
||||
.readngDt(row.getKkoDocReadFrstDt())
|
||||
.errorCn(CmmnUtil.isEmpty(row.getErrorMessage()) ? null : row.getErrorMessage())
|
||||
.create(FieldCreate.builder()
|
||||
.register("ENS_SYS")
|
||||
.registDt(LocalDateTime.now())
|
||||
.build())
|
||||
.build();
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
if (elctrnNticSndngResultRepository.findById(elctrnNticSndngResults.get(0).getElctrnNticSndngDetailId()).isPresent())
|
||||
elctrnNticSndngResultRepository.modifyByElctrnNticSndngResults(elctrnNticSndngResults);
|
||||
else
|
||||
elctrnNticSndngResultRepository.saveAll(elctrnNticSndngResults);
|
||||
|
||||
responseVO = EnsResponseVO.okBuilder().resultInfo(resultInfo).build();
|
||||
} catch (EnsException e) {
|
||||
responseVO = EnsResponseVO.errBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(e.getMessage())
|
||||
.build();
|
||||
} catch (Exception e) {
|
||||
responseVO = EnsResponseVO.errBuilder()
|
||||
.errCode(EnsErrCd.RSLT999)
|
||||
.errMsg(String.format("[elctrnNticSndngId %s]에 대한 전송결과 FETCH 처리 실패. %s", elctrnNticSndngId, e.getMessage()))
|
||||
.build();
|
||||
} finally {
|
||||
ElctrnNticSndng elctrnNticSndng = elctrnNticSndngRepository.findById(elctrnNticSndngId).orElseThrow(() -> new EnsException(EnsErrCd.RSLT404, "일치하는 tbInputXit 자료가 없습니다."));
|
||||
if (EnsErrCd.OK.equals(responseVO.getErrCode())) {
|
||||
elctrnNticSndng.setUpdate(FieldUpdate.builder()
|
||||
.updusr("ENS_SYS")
|
||||
.updtDt(LocalDateTime.now())
|
||||
.build());
|
||||
elctrnNticSndng.setSndngProcessSttus(this.sndngProcessSttus(respDTO, elctrnNticSndng.getSndngProcessSttus()));
|
||||
elctrnNticSndng.setErrorCn(null);
|
||||
} else {
|
||||
elctrnNticSndng.setUpdate(FieldUpdate.builder()
|
||||
.updusr("ENS_SYS")
|
||||
.updtDt(LocalDateTime.now())
|
||||
.build());
|
||||
elctrnNticSndng.setSndngProcessSttus("99");
|
||||
elctrnNticSndng.setErrorCn(responseVO.getErrMsg());
|
||||
}
|
||||
}
|
||||
|
||||
return responseVO;
|
||||
}
|
||||
|
||||
private String sndngProcessSttus(KkoMydocRsltRespDTO respDTO, String sndngProcessSttus) {
|
||||
|
||||
switch (respDTO.getStatCd()) {
|
||||
case makefail:
|
||||
case sendfail:
|
||||
return "99";
|
||||
case sendok:
|
||||
case sendcmplt:
|
||||
return "02";
|
||||
case open:
|
||||
return "08";
|
||||
case close:
|
||||
return "09";
|
||||
default:
|
||||
return sndngProcessSttus;
|
||||
}
|
||||
}
|
||||
|
||||
private String sndngResultCode(KkoMydocStat row) {
|
||||
|
||||
|
||||
String sndngResultCode = null;
|
||||
try {
|
||||
switch (row.getKkoDocStat()) {
|
||||
case SENT:
|
||||
case RECEIVED:
|
||||
case EXPIRED:
|
||||
sndngResultCode = "1";
|
||||
break;
|
||||
case READ:
|
||||
sndngResultCode = "2";
|
||||
break;
|
||||
case UNIDENTIFIED_USER:
|
||||
case FORBIDDEN:
|
||||
case INVALID_VALUE:
|
||||
case INTERNAL_ERROR:
|
||||
case INVALID_REQUEST:
|
||||
case INTERNAL_SENT_ERR:
|
||||
sndngResultCode = "3";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.info("IupSendSttusCd와 일치하는 값 없음. [ dataId {} KkoDocStat {} ]", row.getExternalDocumentUuid(), row.getKkoDocStat());
|
||||
}
|
||||
return sndngResultCode;
|
||||
}
|
||||
|
||||
}
|
@ -1,65 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.service.support;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository.ElctrnNticSndngDetailRepository;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import cokr.xit.ens.core.exception.EnsException;
|
||||
import cokr.xit.ens.core.exception.code.EnsErrCd;
|
||||
import cokr.xit.ens.modules.common.biztmplt.EnsPhaseProcSupport;
|
||||
import cokr.xit.ens.modules.kkomydoc.service.KkoMydocService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class TrafficCcMydocMaker implements EnsPhaseProcSupport<EnsResponseVO, String> {
|
||||
|
||||
private final ElctrnNticSndngDetailRepository elctrnNticSndngDetailRepository;
|
||||
|
||||
private final KkoMydocService kkoMydocService;
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statReady(List<String> elctrnNticSndngIds) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statBegin(String elctrnNticSndngId) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 전자고지 제작
|
||||
*/
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO execute(String elctrnNticSndngId){
|
||||
EnsResponseVO responseVO = null;
|
||||
try {
|
||||
Long sendMastId = elctrnNticSndngDetailRepository.findLastSendMastIdByElctrnNticSndngId(elctrnNticSndngId)
|
||||
.orElseThrow(() -> new EnsException(EnsErrCd.MAKE404, "일치하는 ENS 접수자료가 없습니다."));
|
||||
|
||||
responseVO = kkoMydocService.remake(sendMastId);
|
||||
} catch (EnsException e){
|
||||
responseVO = EnsResponseVO.errBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(e.getMessage())
|
||||
.build();
|
||||
}
|
||||
return responseVO;
|
||||
}
|
||||
|
||||
}
|
@ -1,65 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.service.support;
|
||||
|
||||
import cokr.xit.ens.biz.traffic.chuncheon.mydoc.domain.repository.ElctrnNticSndngDetailRepository;
|
||||
import cokr.xit.ens.core.aop.EnsResponseVO;
|
||||
import cokr.xit.ens.core.exception.EnsException;
|
||||
import cokr.xit.ens.core.exception.code.EnsErrCd;
|
||||
import cokr.xit.ens.modules.common.biztmplt.EnsPhaseProcSupport;
|
||||
import cokr.xit.ens.modules.kkomydoc.service.KkoMydocService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class TrafficCcMydocSender implements EnsPhaseProcSupport<EnsResponseVO, String> {
|
||||
|
||||
private final ElctrnNticSndngDetailRepository elctrnNticSndngDetailRepository;
|
||||
|
||||
private final KkoMydocService kkoMydocService;
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statReady(List<String> elctrnNticSndngIds) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO statBegin(String elctrnNticSndngId) {
|
||||
log.info("no process");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 인증톡 전자고지 전송요청
|
||||
*/
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public EnsResponseVO execute(String elctrnNticSndngId){
|
||||
EnsResponseVO responseVO = null;
|
||||
try {
|
||||
Long sendMastId = elctrnNticSndngDetailRepository.findLastSendMastIdByElctrnNticSndngId(elctrnNticSndngId)
|
||||
.orElseThrow(() -> new EnsException(EnsErrCd.SEND404, "일치하는 ENS 접수자료가 없습니다."));
|
||||
|
||||
responseVO = kkoMydocService.sendBulk(sendMastId);
|
||||
} catch (EnsException e){
|
||||
responseVO = EnsResponseVO.errBuilder()
|
||||
.errCode(e.getErrCd())
|
||||
.errMsg(e.getMessage())
|
||||
.build();
|
||||
}
|
||||
return responseVO;
|
||||
}
|
||||
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
server:
|
||||
port: 18090 #port
|
||||
|
||||
|
||||
|
||||
spring:
|
||||
config:
|
||||
activate:
|
||||
on-profile: local-maria
|
||||
sql:
|
||||
init:
|
||||
mode: always
|
||||
platform: mysql
|
||||
# schema-locations: classpath:/db/test/schema.sql
|
||||
# data-locations: classpath:/db/test/data.sql
|
||||
datasource:
|
||||
driver-class-name: org.mariadb.jdbc.Driver
|
||||
url: jdbc:mariadb://211.119.124.117:53306/ens?rewriteBatchedStatements=true&profileSQL=true&logger=Slf4JLogger&maxQuerySizeToLog=999999
|
||||
username: ens
|
||||
password: xit5811807
|
||||
hikari:
|
||||
driver-class-name: ${spring.datasource.driver-class-name}
|
||||
jdbc-url: ${spring.datasource.url}
|
||||
username: ${spring.datasource.username}
|
||||
password: ${spring.datasource.password}
|
||||
jpa:
|
||||
# database-platform: org.hibernate.dialect.MariaDB103Dialect
|
||||
database-platform: cokr.xit.ens.core.jpa.dialect.MariaDB103DialectCustom
|
||||
hibernate:
|
||||
# create / create-drop / update / validate / none
|
||||
ddl-auto: update
|
||||
|
||||
|
||||
h2:
|
||||
console:
|
||||
enabled: true
|
||||
path: /h2-console
|
||||
|
||||
|
||||
|
||||
xit:
|
||||
mblpage:
|
||||
payinf:
|
||||
host: http://localhost:8080/ens-middleware
|
||||
|
||||
|
@ -1,98 +0,0 @@
|
||||
server:
|
||||
port: 18090 #port
|
||||
servlet:
|
||||
context-path: /goji
|
||||
|
||||
|
||||
|
||||
spring:
|
||||
config:
|
||||
activate:
|
||||
on-profile: prod-traffic-cheonan
|
||||
|
||||
|
||||
|
||||
sql:
|
||||
init:
|
||||
mode: always
|
||||
platform: oracle
|
||||
datasource:
|
||||
driver-class-name: oracle.jdbc.OracleDriver
|
||||
url: jdbc:oracle:thin:@108.1.143.28:11521:ora11g
|
||||
username: xit_traffic
|
||||
password: traffic5
|
||||
hikari:
|
||||
connection-test-query: SELECT 1 FROM DUAL
|
||||
transaction-isolation: TRANSACTION_READ_COMMITTED
|
||||
hikari:
|
||||
driver-class-name: ${spring.datasource.driver-class-name}
|
||||
jdbc-url: ${spring.datasource.url}
|
||||
username: ${spring.datasource.username}
|
||||
password: ${spring.datasource.password}
|
||||
jpa:
|
||||
database-platform: cokr.xit.ens.core.dialect.Oracle10gDialectCustom
|
||||
show-sql: false
|
||||
hibernate:
|
||||
ddl-auto: none
|
||||
open-in-view: true
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
xit:
|
||||
app:
|
||||
url: https://parking.cheonan.go.kr
|
||||
ctx: /goji
|
||||
mblpage:
|
||||
intgrn:
|
||||
url: ${xit.app.url}${xit.app.ctx}
|
||||
path: /intgrn/noti/page/prnt
|
||||
swagger:
|
||||
conf:
|
||||
api:
|
||||
url: ${xit.app.url}${xit.app.ctx}
|
||||
version: '@project.version@'
|
||||
|
||||
|
||||
contract:
|
||||
kakao:
|
||||
pay:
|
||||
mydoc:
|
||||
host: http://parking.cheonan.go.kr
|
||||
api:
|
||||
send: /pxy/kkost/v1/documents
|
||||
token: /pxy/kkost/v1/tokens
|
||||
readcompleted: /pxy/kkost/v1/documents/change
|
||||
status: /pxy/kkost/v1/documents/status
|
||||
bulksend: /pxy/kkost/v1/documents/bulk
|
||||
bulksend-batch-unit: 100
|
||||
bulkstatus: /pxy/kkost/v1/documents/bulk/status
|
||||
nice:
|
||||
dici:
|
||||
type: rest
|
||||
rest:
|
||||
host: http://parking.cheonan.go.kr
|
||||
api:
|
||||
generate-token: /pxy/niceci/digital/niceid/oauth/oauth/token
|
||||
revoke-token: /pxy/niceci/digital/niceid/oauth/oauth/token/revokeById
|
||||
publickey: /pxy/niceci/digital/niceid/api/v1.0/common/crypto/publickey
|
||||
symmetrickey: /pxy/niceci/digital/niceid/api/v1.0/common/crypto/symmetrickey
|
||||
ci: /pxy/niceci/digital/niceid/cert/v1.0/ipin/addinfo/ci
|
||||
kt:
|
||||
signtalk:
|
||||
gibis:
|
||||
host: http://108.1.143.27:8071
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
decorator:
|
||||
datasource:
|
||||
p6spy:
|
||||
enable-logging: false #p6spy logging 활성화 여부
|
@ -1,69 +0,0 @@
|
||||
server:
|
||||
port: 18090 #port
|
||||
|
||||
|
||||
spring:
|
||||
config:
|
||||
activate:
|
||||
on-profile: prod-traffic
|
||||
|
||||
|
||||
|
||||
sql:
|
||||
init:
|
||||
mode: always
|
||||
platform: mysql
|
||||
datasource:
|
||||
driver-class-name: org.mariadb.jdbc.Driver
|
||||
url: "jdbc:mariadb://152.99.141.30:60001/xplatform?rewriteBatchedStatements=true&profileSQL=true&logger=Slf4JLogger&maxQuerySizeToLog=999999"
|
||||
username: root
|
||||
password: xit5811807
|
||||
hikari:
|
||||
connection-test-query: SELECT 1 FROM DUAL
|
||||
transaction-isolation: TRANSACTION_READ_COMMITTED
|
||||
hikari:
|
||||
driver-class-name: ${spring.datasource.driver-class-name}
|
||||
jdbc-url: ${spring.datasource.url}
|
||||
username: ${spring.datasource.username}
|
||||
password: ${spring.datasource.password}
|
||||
jpa:
|
||||
database-platform: cokr.xit.ens.core.jpa.dialect.MariaDB103DialectCustom
|
||||
hibernate:
|
||||
ddl-auto: none
|
||||
open-in-view: true
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
contract:
|
||||
kakao:
|
||||
pay:
|
||||
mydoc:
|
||||
host: https://docs-gw.kakaopay.com
|
||||
access-token: b40d3c623d1011ecbceae6cf4630da62
|
||||
contract-uuid: CON-b4126c833d1011ecbceae6cf4630da62
|
||||
nice:
|
||||
dici:
|
||||
type: socket
|
||||
socket:
|
||||
site-code: EQ00
|
||||
site-pw: 76646885
|
||||
deposit:
|
||||
token: sha5120e6d1bdf446185e836fd61aa4c645ab0ff4161a4a5919f5d31ea4c2c5ca800bbb5d31f7fbbff2350ebb350f29b5e3ae8cd4a451789823532b8455e7929e578ee
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
decorator:
|
||||
datasource:
|
||||
p6spy:
|
||||
enable-logging: false
|
@ -1,146 +0,0 @@
|
||||
package cokr.xit;
|
||||
|
||||
import cokr.xit.ens.core.utils.DateUtil;
|
||||
import cokr.xit.ens.core.utils.crypto.Crypto;
|
||||
import cokr.xit.ens.core.utils.crypto.SHA256;
|
||||
import cokr.xit.ens.modules.common.ctgy.nicedici.support.rest.model.NiceCiRespDTO;
|
||||
import cokr.xit.ens.modules.common.ctgy.nicedici.support.rest.model.conf.DataBodyGenerateTokenResp;
|
||||
import cokr.xit.ens.modules.common.ctgy.nicedici.support.rest.model.conf.DataBodySymkeyResp;
|
||||
import cokr.xit.ens.core.utils.crypto.AES256;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.google.gson.Gson;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
public class TempTest {
|
||||
|
||||
@Test
|
||||
public void t() throws NoSuchAlgorithmException {
|
||||
List<String> jids = Arrays.asList("861128-1018410", "8611281234567", "9311281234567", "1211281234567", "1111281234567", "3211281234567");
|
||||
jids.forEach(s -> {
|
||||
AES256 aes = new AES256(Crypto.AES256.getKey());
|
||||
String encStr = aes.encrypt(s);
|
||||
String decStr = aes.decrypt(encStr);
|
||||
System.out.println("AES256 enc:::" + encStr);
|
||||
System.out.println("AES256 dec:::" + decStr);
|
||||
});
|
||||
String enc = SHA256.encrypt("8611281018410");
|
||||
System.out.println("SHA256 enc:::" + enc);
|
||||
System.out.println("688787d8ff144c502c7f5cffaafe2cc588d86079f9de88304c26b0cb99ce91c6".length());
|
||||
|
||||
// Collections.singletonList(Collections.singletonMap())
|
||||
// new Gson().
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
Gson gson = new Gson();
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
String json = "{ \"access_token\": \"a12341234\"}";
|
||||
|
||||
try {
|
||||
DataBodyGenerateTokenResp dto = gson.fromJson(json, DataBodyGenerateTokenResp.class);
|
||||
DataBodyGenerateTokenResp dto2 = mapper.readValue(json, DataBodyGenerateTokenResp.class);
|
||||
System.out.println("=========================================");
|
||||
System.out.println("dto " + dto.toString());
|
||||
System.out.println("dto2 " + dto2.toString());
|
||||
|
||||
Map<String, String> m = gson.fromJson(json, Map.class);
|
||||
DataBodyGenerateTokenResp dto3 = mapper.convertValue(m, DataBodyGenerateTokenResp.class);
|
||||
System.out.println("dto3 " + dto3.toString());
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test2() throws ParseException {
|
||||
System.out.println(DateUtil.daysByFromBetweenTo(new SimpleDateFormat("yyyyMMdd").parse("20220403"), new Date()));
|
||||
System.out.println(DateUtil.absTimeSecToDate(1576983012, "yyyyMMdd"));
|
||||
int curSec = (int) (new SimpleDateFormat("yyyyMMdd").parse("20220503").getTime() / 1000);
|
||||
System.out.println(DateUtil.daysByFromBetweenTo(1576983012, curSec));
|
||||
System.out.println(1576983012 + curSec);
|
||||
System.out.println((1576983012 / 24 / 60 / 60));
|
||||
// System.out.println(new Date().getTime());
|
||||
|
||||
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTimeInMillis((1576983012 * 1000L) + (curSec * 1000L));
|
||||
Date date = calendar.getTime();
|
||||
System.out.println(new SimpleDateFormat("yyyyMMdd").format(date));
|
||||
System.out.println(DateUtil.relTimeSecToDate(1576983012, "yyyyMMdd"));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test3() {
|
||||
System.out.println(randomAlphaWord(30));
|
||||
System.out.println(randomAlphaWord(16));
|
||||
System.out.println(randomAlphaWord(2));
|
||||
}
|
||||
|
||||
public static String randomAlphaWord(int wordLength) {
|
||||
Random r = new Random();
|
||||
|
||||
StringBuilder sb = new StringBuilder(wordLength);
|
||||
for (int i = 0; i < wordLength; i++) {
|
||||
char tmp = (char) ('a' + r.nextInt('z' - 'a'));
|
||||
sb.append(tmp);
|
||||
|
||||
}
|
||||
return sb.toString();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test4() {
|
||||
|
||||
final ObjectMapper mapper = new ObjectMapper()
|
||||
// .disable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)
|
||||
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
|
||||
|
||||
|
||||
// Map<String, String> dataHeader = new HashMap<>();
|
||||
// dataHeader.put("GW_RSLT_CD", "abcd");
|
||||
// dataHeader.put("GW_RSLT_MSG", "aaaaa");
|
||||
// Map<String, String> dataBody = new HashMap<>();
|
||||
// dataBody.put("rsp_cd", "1234");
|
||||
// dataBody.put("res_msg", "hahahah");
|
||||
// Map<String, Object> mParam = new HashMap<>();
|
||||
// mParam.put("dataHeader", dataHeader);
|
||||
//// mParam.put("dataBody", dataBody);
|
||||
// mParam.put("dataBody", "");
|
||||
//// mParam.put("dataBody", null);
|
||||
//
|
||||
//
|
||||
//
|
||||
try {
|
||||
// String jsonStr = mapper.writeValueAsString(mParam);
|
||||
//// System.out.println(jsonStr);
|
||||
//// jsonStr = jsonStr.replaceAll("\"\"", "null");
|
||||
//// System.out.println(jsonStr);
|
||||
//
|
||||
// NiceCiRespDTO<DataBodyCiResp> respDTO = mapper.readValue(jsonStr, NiceCiRespDTO.class);
|
||||
//// NiceCiRespDTO<DataBodyCiResp> respDTO = mapper.readValue(jsonStr, new TypeReference<NiceCiRespDTO<DataBodyCiResp>>(){});
|
||||
//// NiceCiRespDTO<DataBodyCiResp> respDTO = mapper.readValue(jsonStr, mapper.getTypeFactory().constructType(DataBodyCiResp.class));
|
||||
// System.out.println(respDTO.toString());
|
||||
|
||||
String strRespBody = "{ \"dataHeader\": { \"CNTY_CD\": \"ko\", \"GW_RSLT_CD\": \"1200\", \"GW_RSLT_MSG\": \"오류 없음\" }, \"dataBody\": { \"rsp_cd\": \"P000\", \"result_cd\": \"0000\", \"symkey_stat_info\": \"{\\\"cur_symkey_version\\\":\\\"20220506A6834B1B-1288-IPCD-965C-8C9B30558CCF\\\",\\\"cur_valid_dtim\\\":\\\"20221106180509\\\"}\" }}";
|
||||
strRespBody = strRespBody.replace("\\", "").replace("\"{", "{").replace("}\"", "}");
|
||||
NiceCiRespDTO<DataBodySymkeyResp> result = mapper.readValue(strRespBody, new TypeReference<NiceCiRespDTO<DataBodySymkeyResp>>() {
|
||||
});
|
||||
System.out.println(result);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,183 +0,0 @@
|
||||
//package cokr.xit.ens.biz.iup.service;
|
||||
//
|
||||
//import cokr.xit.ens.core.exception.EnsException;
|
||||
//import cokr.xit.ens.core.exception.code.EnsErrCd;
|
||||
//import cokr.xit.ens.modules.common.code.PostSeCd;
|
||||
//import cokr.xit.ens.modules.common.code.StatCd;
|
||||
//import cokr.xit.ens.modules.common.code.VenderCd;
|
||||
//import cokr.xit.ens.modules.common.domain.SendMast;
|
||||
//import cokr.xit.ens.modules.common.domain.repository.SendMastRepository;
|
||||
//import cokr.xit.ens.modules.kkoalimtalk.domain.SendDetailKkoAlimtalk;
|
||||
//import cokr.xit.ens.modules.kkoalimtalk.domain.repository.SendDetailKkoAlimtalkRepository;
|
||||
//import cokr.xit.ens.modules.common.ctgy.bill.kko.domain.KkoBillMast;
|
||||
//import cokr.xit.ens.modules.common.ctgy.bill.kko.domain.repository.KkoBillMastRepository;
|
||||
//import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
//import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
//import org.junit.jupiter.api.Test;
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//import org.springframework.boot.test.context.SpringBootTest;
|
||||
//
|
||||
//import java.time.LocalDateTime;
|
||||
//import java.util.*;
|
||||
//
|
||||
//@SpringBootTest
|
||||
//class IupAlimtalkEnsAcceptorTest {
|
||||
//
|
||||
// @Autowired
|
||||
// private SendMastRepository sendMastRepository;
|
||||
// @Autowired
|
||||
// private KkoBillMastRepository kkoBillMastRepository;
|
||||
// @Autowired
|
||||
// private SendDetailKkoAlimtalkRepository sendDetailKkoAlimtalkRepository;
|
||||
//
|
||||
//
|
||||
// final String ORG_CD = "123";
|
||||
// final String TMPLT_CD = "IUP_001";
|
||||
//
|
||||
// @Test
|
||||
// void alimtalk() {
|
||||
//
|
||||
// SendMast sendMast = this.makeSendMast(10);
|
||||
// List<SendDetailKkoAlimtalk> sendDetails = Arrays.asList(
|
||||
// convertTbInputDataToSendDetailKkoAlimtalk("data-1",sendMast),
|
||||
// convertTbInputDataToSendDetailKkoAlimtalk("data-2", sendMast),
|
||||
// convertTbInputDataToSendDetailKkoAlimtalk("data-3", sendMast),
|
||||
// convertTbInputDataToSendDetailKkoAlimtalk("data-4", sendMast),
|
||||
// convertTbInputDataToSendDetailKkoAlimtalk("data-5", sendMast),
|
||||
// convertTbInputDataToSendDetailKkoAlimtalk("data-6", sendMast),
|
||||
// convertTbInputDataToSendDetailKkoAlimtalk("data-7", sendMast),
|
||||
// convertTbInputDataToSendDetailKkoAlimtalk("data-8", sendMast),
|
||||
// convertTbInputDataToSendDetailKkoAlimtalk("data-9", sendMast),
|
||||
// convertTbInputDataToSendDetailKkoAlimtalk("data-10", sendMast),
|
||||
// convertTbInputDataToSendDetailKkoAlimtalk("data-11", sendMast),
|
||||
// convertTbInputDataToSendDetailKkoAlimtalk("data-12", sendMast)
|
||||
// );
|
||||
//
|
||||
//
|
||||
// sendMastRepository.save(sendMast);
|
||||
// sendDetails.stream().forEach(row -> kkoBillMastRepository.save(row.getKkoBillMast()));
|
||||
// List<SendDetailKkoAlimtalk> result = sendDetailKkoAlimtalkRepository.saveAll(sendDetails);
|
||||
//// System.out.println(result.toString());
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * 발송마스터
|
||||
// * @param sendCnt
|
||||
// * @return
|
||||
// */
|
||||
// private SendMast makeSendMast(int sendCnt){
|
||||
//
|
||||
// return SendMast.builder()
|
||||
// .vender(VenderCd.biztalk)
|
||||
// .postSe(PostSeCd.kkoAlimtalk)
|
||||
// .orgCd(ORG_CD)
|
||||
// .tmpltCd(TMPLT_CD)
|
||||
// .postBundleTitle("")
|
||||
//// .acceptDt()
|
||||
// .statCd(StatCd.accept)
|
||||
// .sendDt(LocalDateTime.now())
|
||||
// .sendCnt(sendCnt)
|
||||
// .readCnt(0)
|
||||
// .closeDt(LocalDateTime.now())
|
||||
// .build();
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 카카오청구서 마스터
|
||||
// * @param dataId
|
||||
// * @return
|
||||
// */
|
||||
// private KkoBillMast makeKkoBillMast(String dataId){
|
||||
//
|
||||
// ObjectMapper mapper = new ObjectMapper();
|
||||
//
|
||||
//
|
||||
// Map<String, Object> mParameters = new HashMap<String, Object>();
|
||||
// mParameters.put("orgCd", ORG_CD);
|
||||
// mParameters.put("tmpltCd", TMPLT_CD);
|
||||
// String parameters = null;
|
||||
// try {
|
||||
// parameters = mapper.writeValueAsString(parameters);
|
||||
// } catch (JsonProcessingException e) {
|
||||
// throw new EnsException(EnsErrCd.ACPT511, "청구서 parameters 데이터 변환 실패");
|
||||
// }
|
||||
// Map<String, Object> mCutomUrl = new HashMap<String, Object>();
|
||||
// mCutomUrl.put("notice_url", "http://localhost/kakao/notice");
|
||||
// mCutomUrl.put("prepay_url", "http://localhost/kakao/prepay");
|
||||
// mCutomUrl.put("pay_result_url", "http://localhost/kakao/pay-result");
|
||||
// String customUrl = null;
|
||||
// try {
|
||||
// customUrl = mapper.writeValueAsString(mCutomUrl);
|
||||
// } catch (JsonProcessingException e) {
|
||||
// throw new EnsException(EnsErrCd.ACPT511, "청구서 customUrl 데이터 변환 실패");
|
||||
// }
|
||||
// return KkoBillMast.builder()
|
||||
// .billerUserKey(dataId)
|
||||
// .billedYearMonth(null)
|
||||
// .ordinal(null)
|
||||
// .billerNoticeKey(null)
|
||||
// .expireAt(String.format("%s235959", "20220221"))
|
||||
// .parameters(parameters)
|
||||
// .customUrl(customUrl)
|
||||
// .build();
|
||||
//
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 데이터변환( InputData => SendDetailKkoAlimtalk )
|
||||
// * @param dataId
|
||||
// * @param sendMast
|
||||
// * @return
|
||||
// */
|
||||
// private SendDetailKkoAlimtalk convertTbInputDataToSendDetailKkoAlimtalk(String dataId, SendMast sendMast) {
|
||||
// ObjectMapper mapper = new ObjectMapper();
|
||||
//
|
||||
// KkoBillMast kkobillMast = this.makeKkoBillMast(dataId);
|
||||
//
|
||||
// Map<String, Object> button = new HashMap<>();
|
||||
// button.put("name", "납부하기");
|
||||
// button.put("type", "WL");
|
||||
// button.put("url_mobile", "#{billlink_url}");
|
||||
// button.put("url_pc", "#{billlink_url}");
|
||||
// ArrayList<Map<String, Object>> buttons = new ArrayList<>();
|
||||
// buttons.add(button);
|
||||
// Map<String, Object> mAttach = new HashMap<>();
|
||||
// mAttach.put("button", buttons);
|
||||
// String attach = null;
|
||||
// try {
|
||||
// attach = mapper.writeValueAsString(mAttach);
|
||||
// } catch (JsonProcessingException e) {
|
||||
// throw new EnsException(EnsErrCd.ACPT511, "청구서 attach 데이터 변환 실패");
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// return SendDetailKkoAlimtalk.builder()
|
||||
// .sendMast(sendMast)
|
||||
// .msgIdx(dataId)
|
||||
// .countryCode("82")
|
||||
// .recipient(null)
|
||||
// .senderKey("SENDER_KEY")
|
||||
// .appUserId(null)
|
||||
// .orgCode(null)
|
||||
// .message("NONasfasdf")
|
||||
// .tmpltCode(TMPLT_CD)
|
||||
// .title(null)
|
||||
// .resMethod("PUSH")
|
||||
// .attach(attach)
|
||||
// .supplement(null)
|
||||
// .messageType("AT")
|
||||
// .useFailback(null)
|
||||
// .mmsAttach("N")
|
||||
// .kkoBillMast(kkobillMast)
|
||||
// .mkName("data.getName()")
|
||||
// .mkBirthday("data.getBirthday()")
|
||||
// .mkSid("data.getSid()")
|
||||
// .mkGender("data.getGender()")
|
||||
// .mkTmpltMsgJsonData("data.getMsgData()")
|
||||
// .mkMblJsonData("data.getMsgDtlData()")
|
||||
// .mkPayBillJsonData(null)
|
||||
// .build();
|
||||
// }
|
||||
//}
|
@ -1,39 +0,0 @@
|
||||
package cokr.xit.ens.biz.traffic.chuncheon.mydoc.v2.service;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
|
||||
@SpringBootTest
|
||||
@ExtendWith(SpringExtension.class)
|
||||
class TrafficCcMydocServiceTest {
|
||||
@Autowired
|
||||
private TrafficCcMydocService trafficCcMydocService;
|
||||
|
||||
|
||||
@Test
|
||||
void accept() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void acceptAll() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void reMake() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void reSend() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void fetch() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void fetchAll() {
|
||||
}
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
//package cokr.xit.modules.post.domains.sign.domain;
|
||||
//
|
||||
//import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
//
|
||||
//import org.junit.jupiter.api.Test;
|
||||
//import org.junit.jupiter.api.extension.ExtendWith;
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
|
||||
//import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
//
|
||||
//import cokr.xit.modules.domain.SendMast;
|
||||
//
|
||||
//@ExtendWith(SpringExtension.class)
|
||||
//@DataJpaTest
|
||||
//class KakaoSignTalkSendInfoRepositoryTest {
|
||||
//
|
||||
// @Autowired
|
||||
// private KakaoSignTalkSendInfoRepository kakaoSignTalkSendInfoRepository;
|
||||
//
|
||||
// @Test
|
||||
// void testFindByTxId() {
|
||||
// String txId = "abcdefg123456";
|
||||
//
|
||||
// final KakaoSignTalkSendInfo param = KakaoSignTalkSendInfo.builder()
|
||||
// .sendMast(SendMast.builder().vender("kt").build())
|
||||
// .phone_no("01012341234")
|
||||
// .name("test")
|
||||
// .birthday("021025")
|
||||
// .expires_in(86400)
|
||||
// .call_center_no("070-1234-1234")
|
||||
// .title("test")
|
||||
// .publish_certified_electronic_doc("N")
|
||||
// .redirect_url("http://xxx.xxx.com")
|
||||
// .result("N")
|
||||
// .txId(txId)
|
||||
// .build();
|
||||
//
|
||||
// final KakaoSignTalkSendInfo vo = kakaoSignTalkSendInfoRepository.save(param);
|
||||
//
|
||||
// assertEquals(txId, vo.getTxId());
|
||||
// }
|
||||
//
|
||||
//// @Test
|
||||
//// void testFindBySendMast() {
|
||||
//// fail("Not yet implemented");
|
||||
//// }
|
||||
////
|
||||
//// @Test
|
||||
//// void testBatchUpdateByResult() {
|
||||
//// fail("Not yet implemented");
|
||||
//// }
|
||||
//
|
||||
//}
|
@ -1,43 +0,0 @@
|
||||
package cokr.xit.problems;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class FindDuplicateNumber {
|
||||
|
||||
@Test
|
||||
public void main(){
|
||||
int[] nums = {1,3,4,2,2};
|
||||
System.out.println(String.format("{1,3,4,2,2} in duplicate number => %s", findDuplicate(nums)));
|
||||
|
||||
nums = new int[]{3,1,3,4,2};
|
||||
System.out.println(String.format("{3,1,3,4,2} in duplicate number => %s", findDuplicate(nums)));
|
||||
|
||||
nums = new int[]{1,1};
|
||||
System.out.println(String.format("{1,1} in duplicate number => %s", findDuplicate(nums)));
|
||||
|
||||
nums = new int[]{1,1,2};
|
||||
System.out.println(String.format("{1,1,2} in duplicate number => %s", findDuplicate(nums)));
|
||||
|
||||
nums = new int[]{4,1,2,3,4};
|
||||
System.out.println(String.format("{4,1,2,3,4} in duplicate number => %s", findDuplicate(nums)));
|
||||
|
||||
}
|
||||
|
||||
private int findDuplicate(int[] nums) {
|
||||
|
||||
int slow = nums[0], fast = nums[nums[0]];
|
||||
while (slow != fast) {
|
||||
slow = nums[slow];
|
||||
fast = nums[nums[fast]];
|
||||
}
|
||||
|
||||
|
||||
int index = 0;
|
||||
while (slow != index) {
|
||||
index = nums[index];
|
||||
slow = nums[slow];
|
||||
}
|
||||
|
||||
return index;
|
||||
}
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
package cokr.xit.problems;
|
||||
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class Permutation {
|
||||
|
||||
|
||||
@Test
|
||||
public void main() {
|
||||
int n = 3;
|
||||
int[] arr = {1, 2, 3};
|
||||
int[] output = new int[n];
|
||||
boolean[] visited = new boolean[n];
|
||||
|
||||
perm(arr, output, visited, 0, n, 3);
|
||||
System.out.println();
|
||||
permutation(arr, 0, n, 3);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void perm(int[] arr, int[] output, boolean[] visited, int depth, int n, int r) {
|
||||
if (depth == r) {
|
||||
print(output, r);
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
if (visited[i] != true) {
|
||||
visited[i] = true;
|
||||
output[depth] = arr[i];
|
||||
perm(arr, output, visited, depth + 1, n, r);
|
||||
visited[i] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void permutation(int[] arr, int depth, int n, int r) {
|
||||
if (depth == r) {
|
||||
print(arr, r);
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = depth; i < n; i++) {
|
||||
swap(arr, depth, i);
|
||||
permutation(arr, depth + 1, n, r);
|
||||
swap(arr, depth, i);
|
||||
}
|
||||
}
|
||||
|
||||
private void swap(int[] arr, int depth, int i) {
|
||||
int temp = arr[depth];
|
||||
arr[depth] = arr[i];
|
||||
arr[i] = temp;
|
||||
}
|
||||
|
||||
|
||||
private void print(int[] arr, int r) {
|
||||
for (int i = 0; i < r; i++)
|
||||
System.out.print(arr[i] + " ");
|
||||
System.out.println();
|
||||
}
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
package cokr.xit.problems;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
class Solution {
|
||||
|
||||
|
||||
@Test
|
||||
public void main(){
|
||||
int[] progresses = new int[0];
|
||||
int[] speeds = new int[0];
|
||||
|
||||
|
||||
progresses = new int[]{93,30,55};
|
||||
speeds = new int[]{1,30,5};
|
||||
solution(progresses, speeds);
|
||||
|
||||
|
||||
progresses = new int[]{95,91,95,95, 1};
|
||||
speeds = new int[]{4,2,3,4,20};
|
||||
solution(progresses, speeds);
|
||||
|
||||
}
|
||||
|
||||
public int[] solution(int[] progresses, int[] speeds) {
|
||||
int[] answer = {};
|
||||
|
||||
|
||||
int[] endDays = new int[progresses.length];
|
||||
List<Integer> releases = new ArrayList<>();
|
||||
for(int i=0; i<progresses.length; i++){
|
||||
int day = (100-progresses[i])/speeds[i];
|
||||
day += (100-progresses[i])%speeds[i]>0?1:0;
|
||||
endDays[i] = day;
|
||||
}
|
||||
|
||||
check(releases, endDays, endDays[0], 1, 1, false);
|
||||
answer = releases.stream().mapToInt(value -> value).toArray();
|
||||
|
||||
return answer;
|
||||
}
|
||||
|
||||
|
||||
private void check(List<Integer> release, int[] endDays, int endDay, int idx, int cnt, boolean isRangeEnd){
|
||||
if(isRangeEnd){
|
||||
release.add(cnt);
|
||||
cnt = 1;
|
||||
}
|
||||
if(endDays.length == idx){
|
||||
release.add(cnt);
|
||||
return;
|
||||
}
|
||||
|
||||
if(endDays[idx] <= endDay){
|
||||
check(release, endDays, endDay, ++idx, ++cnt, false);
|
||||
}else{
|
||||
check(release, endDays, endDays[idx], ++idx, cnt, true);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,104 +0,0 @@
|
||||
package cokr.xit.problems;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
class Solution1 {
|
||||
|
||||
|
||||
@Test
|
||||
public void main(){
|
||||
String path = null;
|
||||
|
||||
path = "EEESEEEEEENNNN";
|
||||
solution(path);
|
||||
// System.out.println(solution(path));
|
||||
path = "SSSSSSWWWNNNNNN";
|
||||
solution(path);
|
||||
// System.out.println(solution(path));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public String[] solution(String path){
|
||||
String[] answer = {};
|
||||
|
||||
Map<String,Map<String, String>> mDirection = createLeftRigthByDirection();
|
||||
|
||||
List<Map<String, Object>> infos = new ArrayList<>();
|
||||
Map<String, Object> info = new HashMap<>();
|
||||
|
||||
|
||||
String curD = null;
|
||||
int m = 0;
|
||||
for(int i=0; i<path.length(); i++) {
|
||||
String chngD = path.substring(i, i + 1);
|
||||
if(i==0) curD = chngD;
|
||||
else{
|
||||
if(curD.equals(chngD)){
|
||||
m++;
|
||||
}else{
|
||||
info.put("meter", m+1);
|
||||
info.put("direction", mDirection.get(curD).get(chngD));
|
||||
info.put("time", i+1);
|
||||
infos.add(info);
|
||||
curD = chngD;
|
||||
m = 0;
|
||||
info = new HashMap<>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
String msgTmplt = "Time %d: Go straight %dm and turn %s";
|
||||
|
||||
|
||||
List<String> messages = new ArrayList<>();
|
||||
for(int i=0; i<infos.size(); i++){
|
||||
Map<String, Object> inf = infos.get(i);
|
||||
int x = (int) inf.get("time");
|
||||
int y = (int) inf.get("meter");
|
||||
String direction = (String) inf.get("direction");
|
||||
if(i==0 && y <= 5)
|
||||
messages.add(String.format(msgTmplt, 0, (y*100), direction));
|
||||
else
|
||||
if(y > 5)
|
||||
messages.add(String.format(msgTmplt, x-5, 500, direction));
|
||||
else
|
||||
messages.add(String.format(msgTmplt, x-1, (y*100), direction));
|
||||
}
|
||||
System.out.println(messages.toString());
|
||||
answer = new String[messages.size()];
|
||||
for(int i=0; i<answer.length; i++)
|
||||
answer[i] = messages.get(i);
|
||||
// answer = massages.toArray();
|
||||
return answer;
|
||||
}
|
||||
|
||||
private Map<String, Map<String, String>> createLeftRigthByDirection(){
|
||||
|
||||
Map<String,String> lrE = new HashMap<>();
|
||||
lrE.put("N", "left");
|
||||
lrE.put("S", "right");
|
||||
Map<String,String> lrW = new HashMap<>();
|
||||
lrW.put("S", "left");
|
||||
lrW.put("N", "right");
|
||||
Map<String,String> lrS = new HashMap<>();
|
||||
lrS.put("E", "left");
|
||||
lrS.put("W", "right");
|
||||
Map<String,String> lrN = new HashMap<>();
|
||||
lrN.put("W", "left");
|
||||
lrN.put("E", "right");
|
||||
Map<String,Map<String, String>> mDirection = new HashMap<>();
|
||||
mDirection.put("E", lrE);
|
||||
mDirection.put("W", lrW);
|
||||
mDirection.put("S", lrS);
|
||||
mDirection.put("N", lrN);
|
||||
return mDirection;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,58 +0,0 @@
|
||||
package cokr.xit.problems;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
class Solution2 {
|
||||
|
||||
|
||||
@Test
|
||||
public void main(){
|
||||
|
||||
String call = null;
|
||||
|
||||
|
||||
|
||||
call = "abcabcdefabc";
|
||||
System.out.println(solution(call));
|
||||
|
||||
call = "abxdeydeabz";
|
||||
System.out.println(solution(call));
|
||||
|
||||
call = "abcabca";
|
||||
System.out.println(solution(call));
|
||||
|
||||
call = "ABCabcA";
|
||||
System.out.println(solution(call));
|
||||
}
|
||||
|
||||
private String solution(String call){
|
||||
String answer = "";
|
||||
|
||||
|
||||
|
||||
Map<String, Integer> map = new HashMap();
|
||||
for(int i=0; i<call.length(); i++){
|
||||
String ch = call.substring(i, i+1);
|
||||
map.put(ch.toLowerCase(), map.getOrDefault(ch.toLowerCase(), 0)+1);
|
||||
}
|
||||
|
||||
String maxCntKey = Collections.max(map.entrySet(), Comparator.comparingInt(Map.Entry::getValue)).getKey();
|
||||
int maxCnt = map.get(maxCntKey);
|
||||
|
||||
Iterator<String> it = map.keySet().iterator();
|
||||
while(it.hasNext()){
|
||||
String key = it.next();
|
||||
int value = map.get(key);
|
||||
if(maxCnt == value){
|
||||
call = call.replace(key, "").replaceAll(key.toUpperCase(), "");
|
||||
}
|
||||
}
|
||||
|
||||
return call;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
package cokr.xit.problems;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
public class Sort {
|
||||
@Test
|
||||
public void fncSortInteger(){
|
||||
int[] nums = {21,31,19,4,16};
|
||||
|
||||
System.out.println("==================================");
|
||||
System.out.println("index 2 부터 정렬");
|
||||
System.out.println("==================================");
|
||||
Arrays.sort(nums, 2, nums.length);
|
||||
Arrays.stream(nums).asLongStream()
|
||||
.forEach(System.out::println);
|
||||
|
||||
|
||||
System.out.println("==================================");
|
||||
System.out.println("index 0 부터 정렬");
|
||||
System.out.println("==================================");
|
||||
Arrays.sort(nums);
|
||||
Arrays.stream(nums).asLongStream()
|
||||
.forEach(System.out::println);
|
||||
|
||||
|
||||
System.out.println("==================================");
|
||||
System.out.println("내림차순(desc) 정렬");
|
||||
System.out.println("==================================");
|
||||
Integer[] nums2 = {4,2,1,5,3};
|
||||
Arrays.sort(nums2, Collections.reverseOrder());
|
||||
Arrays.stream(nums2)
|
||||
.forEach(System.out::println);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fncSortString(){
|
||||
String[] strs = {"efg","dab","bff","abc",};
|
||||
|
||||
System.out.println("==================================");
|
||||
System.out.println("index 2 부터 정렬");
|
||||
System.out.println("==================================");
|
||||
Arrays.sort(strs, 2, strs.length);
|
||||
Arrays.asList(strs).stream()
|
||||
.forEach(System.out::println);
|
||||
|
||||
|
||||
System.out.println("==================================");
|
||||
System.out.println("index 0 부터 정렬");
|
||||
System.out.println("==================================");
|
||||
// Arrays.sort(strs);
|
||||
Arrays.asList(strs).stream()
|
||||
.sorted()
|
||||
.forEach(System.out::println);
|
||||
|
||||
|
||||
System.out.println("==================================");
|
||||
System.out.println("내림차순(desc) 정렬");
|
||||
System.out.println("==================================");
|
||||
Arrays.sort(strs, Collections.reverseOrder());
|
||||
Arrays.asList(strs).stream()
|
||||
.forEach(System.out::println);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue