feat : epost 1차 완료, 개발하면서 테스트를 못돌렸음. 사이드 이팩트 많을것으로 예상됨.

todo : 통합 우편서버 sftp작업, 텍스트와 사진 zip파일 생성하는거 conkey단위로 나눠야함
master
Kurt92 3 months ago
parent 91b28e38cf
commit f4da3c50ea

@ -79,7 +79,7 @@ public class EpostSenderReg {
private String sendTime;
@Column(name = "RELORSECT_CD", length = 15)
private String relOrSectCd;
private String relorsectCd;
@Column(name = "RECEV_SENDER_ORG_CODE", length = 15)
private String recevSenderOrgCode;

@ -78,8 +78,8 @@ public class EPostDto {
public static class Target {
//epost_sender_result
private Long tgCode;
private String ConKey;
private String tgCode;
private String conKey;
//epost_sender_detail
@ -88,10 +88,118 @@ public class EPostDto {
//tb_cntc_sndng_result
private String sndngResultSttus;
// Header/공통
private String rceptId;
private String dataCd;
private String divKb;
private String dfPayYn;
private String rcptKb;
private String sealCd;
private String wordKb;
private Integer mailCnt;
private String envCd;
private String colorYn;
private String mmYn;
private String flexCd;
private Integer dmCnt;
private String sbFg;
private String apvlNb;
private String sendDate;
private String sendTime;
private String relorsectCd;
// Sender
private String recevSenderNm;
private String recevSenderZipcode;
private String recevSenderAddr;
private String recevSenderDetailAddr;
private String recevSenderOrgCode;
private String recevSenderDepartTel;
private String recevSenderDepartNm;
private String recevSenderFax;
private String recevSerderStaff; // 원문 오타
private String recevSenderEmail;
// Receiver/차주
private String recevCarOwnerNm;
private String recevCarOwnerZipcode;
private String recevCarOwnerAddr;
private String recevCarOwnerDetailaddr;
private String recevCarNumber;
private String recevCarOwnerSsn;
// 문서/고지 (일부만, 나머지도 동일 패턴으로 추가)
private String recevDivCd;
private String recevCode;
private String recevBar1d;
private String recevBar2d;
private String recevBillNumber;
private String recevDocCd1;
private String recevDocCd2;
private String recevDocCd3;
private String recevDocCd4;
private String recevDocCd5;
private String recevSubj1;
private String recevSubj2;
private String recevSubj3;
private String recevViolateDt;
private String recevViolateDong;
private String recevViolatePlace;
private String recevLaws;
private String recevPayNumber1;
private String recevPayNumber2;
private String recevOcr0;
private String recevOcr1;
private String recevOcr2;
private String recevOnlinePayNumber;
private String recevVaccountNumber;
private String recevVaccountNumber2;
private String recevVaccountNumber3;
private String recevVaccountNumber4;
private String recevVaccountNumber5;
private String recevVaccountNumber6;
private String recevVaccountNumber7;
private String recevVaccountNumber8;
private String recevVaccountNumber9;
private String recevVaccountNumber10;
private String recevVaccountNumber11;
private String recevFinePrice;
private String recevPayPrice;
private String recevPayDt;
private String recevPayInDate;
private String recevPayInPrice;
private String recevPayInAddPrice;
private String recevPayInDefaultPrice;
private String recevPayOutDate;
private String recevPayOutPrice;
private String recevPayOutAddPrice;
private String recevPayOutDefaultPrice;
// 인쇄/사진
private String recevPrintDt;
private String recevPrintYear;
private String recevPrintMonth;
private String recevPrintDay;
private String recevEvidenceNumber;
private String recevPhotoCnt;
private String recevPhotoFile1;
private String recevPhotoFile2;
private String recevPhotoFile3;
private String recevPhotoFile4;
// 텍스트
private String recevNoticeConts; // 개행→
}
}
@Getter
@Setter
@NoArgsConstructor

@ -38,11 +38,11 @@ public class EPostQueryDslRepository {
.select(
Projections.fields(
EPostDto.SendTarget.Key.class,
cpGojit.tgCode,
cpGojit.tgGb,
epostSenderReg.tgCode,
epostSenderReg.conKey,
epostSenderReg.postProcStt,
epostSenderReg.regYmd,
cpGojit.tgGb,
Expressions.as(Expressions.nullExpression(String.class), "tgPostYn"),
Expressions.as(Expressions.nullExpression(String.class), "tgUnitySndngMastrId")
)
@ -70,7 +70,25 @@ public class EPostQueryDslRepository {
epostSenderReg.tgCode,
epostSenderReg.conKey,
epostSenderDetail.rgstNmbr,
epostSenderDetail.recevSeq
epostSenderDetail.recevSeq,
epostSenderReg.rceptId,
epostSenderReg.dataCd,
epostSenderReg.divKb,
epostSenderReg.dfpayyn,
epostSenderReg.rcptKb,
epostSenderReg.sealCd,
epostSenderReg.wordKb,
epostSenderReg.mailCnt,
epostSenderReg.envCd,
epostSenderReg.colorYn,
epostSenderReg.mmYn,
epostSenderReg.flexCd,
epostSenderReg.dmCnt,
epostSenderReg.sbFg,
epostSenderReg.apvlNb,
epostSenderReg.sendDate,
epostSenderReg.sendTime,
epostSenderReg.relorsectCd
)
)
.from(epostSenderReg)

@ -9,7 +9,9 @@ import com.worker.domain.repo.ep.*;
import com.worker.scheduler.epost.dto.EPostDto;
import com.worker.scheduler.epost.repository.EPostQueryDslRepository;
import com.worker.util.common.CommonUtils;
import com.worker.util.textFileMacker.TextMaker;
import com.worker.util.zipFileMaker.ZipMaker;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -30,6 +32,7 @@ public class EPostService {
private final Environment env;
private final CommonUtils utils;
private final ZipMaker zipMaker;
private final TextMaker textMaker;
private final ObjectMapper objectMapper;
private final CpSetinfoRepository cpSetinfoRepository;
@ -68,6 +71,7 @@ public class EPostService {
private EpGojiPrtRepository epGojiPrtRepository;
@Transactional
public void findEPostSendTarget(EPostDto.SetInfo setInfo) {
List<EPostDto.SendTarget.Key> cpSendTargetKeys = new ArrayList<>();
@ -147,7 +151,7 @@ public class EPostService {
.filter(t -> Objects.equals(o.getConKey(), t.getConKey()))
.map(EPostDto.SendTarget.Target::getRecevSeq))
.filter(Objects::nonNull)
.distinct()
// .distinct()
.toList();
final List<EPostDto.SendTarget.Target> epTargets = Optional.ofNullable(epSendTargets).orElseGet(List::of);
@ -157,7 +161,7 @@ public class EPostService {
.filter(t -> Objects.equals(o.getConKey(), t.getConKey()))
.map(EPostDto.SendTarget.Target::getRecevSeq))
.filter(Objects::nonNull)
.distinct()
// .distinct()
.toList();
// mmcode로 이미지 파일 찾아서 zip생성
@ -183,9 +187,9 @@ public class EPostService {
if(!epSendEgojiTargets.isEmpty()) ePostQueryDslRepository.updateGojitPostYn(epQueryFactory, epSendEgojiTargets);
// 서울시는 통합 우편서버를 사용중임.
// 거기다가 ftp 로 텍스트 쏴줘야함.
// 그리고 파일 읽는것도 마찬가지
// 택스트파일 생성
textMaker.generateTextFile(cpSendTargets);
}

@ -1,4 +1,144 @@
package com.worker.util.textFileMacker;
import com.worker.scheduler.epost.dto.EPostDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
@Slf4j
public class TextMaker {
String s(String v){ return v==null? "": v.replace("|",""); }
String t(String v){ return v==null? "": v.replace("\r","").replace("\n","\\n").replace("|",""); }
public void generateTextFile(List<EPostDto.SendTarget.Target> cpSendTargets) {
// cpSendTargets
}
private String addLine(EPostDto.SendTarget.Target target, String seq, String recevCnt, String zipFileName) {
List<String> p = new ArrayList<>();
p.add(s(target.getRceptId()));
p.add(s(target.getDataCd()));
p.add(s(target.getDivKb()));
p.add(s(target.getDfPayYn()));
p.add(s(target.getRcptKb()));
p.add(s(target.getSealCd()));
p.add(s(target.getWordKb()));
p.add(s(target.getMailCnt().toString()));
p.add(recevCnt); //리스트에 로우 갯수
p.add(s(target.getEnvCd()));
p.add(s(target.getColorYn()));
p.add(s(target.getMmYn()));
p.add(s(target.getFlexCd()));
p.add(s(target.getDmCnt().toString()));
p.add(s(target.getSbFg()));
p.add(s(target.getApvlNb()));
p.add(s(target.getSendDate()));
p.add(s(target.getSendTime()));
p.add(s(target.getConKey()));
p.add(s(target.getRelorsectCd()));
p.add(s(target.getRgstNmbr()));
p.add(s(target.getRecevSenderNm()));
p.add(s(target.getRecevSenderZipcode()));
p.add(s(target.getRecevSenderAddr()));
p.add(s(target.getRecevSenderDetailAddr()));
p.add(s(target.getConKey())); // 중복 CON_KEY
p.add(seq); // 수취인 순번
p.add(s(target.getRecevCarOwnerNm()));
p.add(s(target.getRecevCarOwnerZipcode()));
p.add(s(target.getRecevCarOwnerAddr()));
p.add(s(target.getRecevCarOwnerDetailaddr()));
p.add(s(target.getRgstNmbr())); // RGST_NMBR 재등장
for(int i=0;i<11;i++) p.add("NULL"); // 고정 11개 NULL
// p.add(s(target.zipFileName()));
p.add(s(target.getRecevSenderOrgCode()));
p.add(s(target.getRecevSenderNm()));
p.add(s(target.getRecevSenderZipcode()));
p.add(s(target.getRecevSenderAddr()));
p.add(s(target.getRecevSenderDetailAddr()));
p.add(s(target.getRecevSenderDepartTel()));
p.add(s(target.getRecevSenderDepartNm()));
p.add(s(target.getRecevDivCd()));
p.add(s(target.getRecevSeq()));
p.add(s(target.getRecevCode()));
p.add(s(target.getRecevBar1d()));
p.add(s(target.getRecevBar2d()));
p.add(s(target.getRecevBillNumber()));
p.add(s(target.getRecevDocCd1()));
p.add(s(target.getRecevDocCd2()));
p.add(s(target.getRecevDocCd3()));
p.add(s(target.getRecevDocCd4()));
p.add(s(target.getRecevDocCd5()));
p.add(s(target.getRecevSubj1()));
p.add(s(target.getRecevSubj2()));
p.add(s(target.getRecevSubj3()));
p.add(s(target.getRecevViolateDt()));
p.add(s(target.getRecevViolateDong()));
p.add(s(target.getRecevViolatePlace()));
p.add(s(target.getRecevLaws()));
p.add(s(target.getRecevPayNumber1()));
p.add(s(target.getRecevPayNumber2()));
p.add(s(target.getRecevOcr0()));
p.add(s(target.getRecevOcr1()));
p.add(s(target.getRecevOcr2()));
p.add(s(target.getRecevOnlinePayNumber()));
p.add(s(target.getRecevVaccountNumber()));
p.add(s(target.getRecevFinePrice()));
p.add(s(target.getRecevPayPrice()));
p.add(s(target.getRecevPayDt()));
p.add(s(target.getRecevPayInDate()));
p.add(s(target.getRecevPayInPrice()));
p.add(s(target.getRecevPayInAddPrice()));
p.add(s(target.getRecevPayInDefaultPrice()));
p.add(s(target.getRecevPayOutDate()));
p.add(s(target.getRecevPayOutPrice()));
p.add(s(target.getRecevPayOutAddPrice()));
p.add(s(target.getRecevPayOutDefaultPrice()));
p.add(s(target.getRecevCarNumber()));
p.add(s(target.getRecevCarOwnerZipcode()));
p.add(s(target.getRecevCarOwnerAddr()));
p.add(s(target.getRecevCarOwnerDetailaddr()));
p.add(s(target.getRecevCarOwnerNm()));
p.add(s(target.getRecevCarOwnerSsn()));
p.add(s(target.getRecevPrintDt()));
p.add(s(target.getRecevPrintYear()));
p.add(s(target.getRecevPrintMonth()));
p.add(s(target.getRecevPrintDay()));
p.add(s(target.getRecevEvidenceNumber()));
p.add(s(target.getRecevPhotoCnt()));
p.add(s(target.getRecevPhotoFile1()));
p.add(s(target.getRecevPhotoFile2()));
p.add(s(target.getRecevPhotoFile3()));
p.add(s(target.getRecevPhotoFile4()));
p.add(s(""));
p.add(s(""));
p.add(s(""));
p.add(s(""));
p.add(s(""));
p.add(s(""));
p.add(s(target.getRecevSenderFax()));
p.add(s(target.getRecevSerderStaff()));
p.add(s(target.getRecevSenderEmail()));
p.add(s(target.getRecevVaccountNumber2()));
p.add(s(target.getRecevVaccountNumber3()));
p.add(s(target.getRecevVaccountNumber4()));
p.add(s(target.getRecevVaccountNumber5()));
p.add(s(target.getRecevVaccountNumber6()));
p.add(s(target.getRecevVaccountNumber7()));
p.add(s(target.getRecevVaccountNumber8()));
p.add(s(target.getRecevVaccountNumber9()));
p.add(s(target.getRecevVaccountNumber10()));
p.add(s(target.getRecevVaccountNumber11()));
// ... 이하 Sender/Doc/Print/Photo/Text/VAccounts 순으로 Delphi와 동일한 순서로 계속 추가 ...
return String.join("|", p) + "|";
}
}

Loading…
Cancel
Save