feat : epost 사진 text파일 생성로직 완료

master
Kurt92 2 months ago
parent 0b5ab70e48
commit 4d0a16c5a4

@ -2,6 +2,7 @@ package com.worker.scheduler.epost.service;
import com.querydsl.jpa.impl.JPAQueryFactory;
import com.worker.domain.entity.CpGojiPrt;
import com.worker.domain.entity.CpSetinfo;
import com.worker.domain.entity.EpostRgstNmbr;
import com.worker.domain.entity.EpostSenderDetail;
import com.worker.domain.repo.cp.CpEPostRgstNmbr;
@ -24,6 +25,7 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
@RequiredArgsConstructor
@ -176,7 +178,12 @@ public class EPostSendService {
}
// 택스트파일 생성
try {
textMaker.generateTextFile(cpSendEpostTargets, epSendEpostTargets, cpSendEgojiTargets, epSendEgojiTargets);
List<EPostDto.SendTarget.Target> allTargets = Stream.of(cpSendEpostTargets, epSendEpostTargets, cpSendEgojiTargets, epSendEgojiTargets)
.flatMap(Collection::stream)
.collect(Collectors.toList());
if(setInfo.getCpSetinfo() != null) textMaker.generateTextFile(allTargets, setInfo.getCpSetinfo());
else textMaker.generateTextFile(allTargets, setInfo.getEpSetinfo());
} catch (Exception e) {
log.error("ZIP 파일 생성 실패 : " + e.getMessage());
}

@ -443,11 +443,23 @@ public class DbPolling {
//이미지 파일명을 mmCode + abcd 를 붙여 변환한다.
private void changeImgFileNmToMmcode(List<SinmungoDto.SinmungoXml> eachList, int index, String mmcode) {
for(int i = 0; i < eachList.get(index).getImgParsers().size(); i++ ) {
char suffix = (char) ('A' + i); // A, B, C, D ...
if(eachList.get(index).getImgParsers().get(i).getFileType() == 1) {
eachList.get(index).getImgParsers().get(i).setFileName(mmcode+suffix+".jpg");
} else eachList.get(index).getImgParsers().get(i).setFileName(mmcode+suffix+"Z.mp4");
var xml = eachList.get(index);
if (xml == null || xml.getImgParsers() == null) return;
var imgs = xml.getImgParsers();
// 최대 4개(k, l, m, n)만 처리
int limit = Math.min(imgs.size(), 4);
for (int i = 0; i < limit; i++) {
var img = imgs.get(i);
if (img == null) continue;
char suffix = (char) ('k' + i); // k, l, m, n
if (img.getFileType() == 1) {
img.setFileName(mmcode + suffix + ".jpg");
} else {
img.setFileName(mmcode + suffix + "Z.mp4");
}
}
}

@ -1,11 +1,20 @@
package com.worker.util.textFileMacker;
import com.worker.domain.entity.CpSetinfo;
import com.worker.scheduler.epost.dto.EPostDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Component
@Slf4j
@ -14,15 +23,30 @@ 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> cpSendEpostTargets,
List<EPostDto.SendTarget.Target> epSendEpostTargets,
List<EPostDto.SendTarget.Target> cpSendEgojiTargets,
List<EPostDto.SendTarget.Target> epSendEgojiTargets
) {
public void generateTextFile(List<EPostDto.SendTarget.Target> sendTargets, CpSetinfo setInfo) {
// cpSendTargets을
log.info(epSendEpostTargets.toString());
// 전체 타겟을 콘키별로 묶음.
Map<String, List<EPostDto.SendTarget.Target>> sendTargetGroupingByConkey = sendTargets.stream()
.collect(Collectors.groupingBy(EPostDto.SendTarget.Target::getConKey));
//key로 택스트파일 생성
sendTargetGroupingByConkey.forEach((conKey, targets) -> {
Path baseDir = Path.of(setInfo.getStrValue8());
Path out = baseDir.resolve(conKey + ".txt");
List<String> lines = new ArrayList<>(targets.size());
for(int i = 0; i < targets.size(); i++) {
EPostDto.SendTarget.Target target = targets.get(i);
lines.add(addLine(target, String.valueOf(i), String.valueOf(targets.size()), conKey));
}
try {
Files.write(out, lines, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
} catch (IOException e) {
throw new UncheckedIOException("파일 쓰기 실패: " + out, e);
}
});
log.info(sendTargetGroupingByConkey.toString());
}

Loading…
Cancel
Save