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.querydsl.jpa.impl.JPAQueryFactory;
import com.worker.domain.entity.CpGojiPrt; import com.worker.domain.entity.CpGojiPrt;
import com.worker.domain.entity.CpSetinfo;
import com.worker.domain.entity.EpostRgstNmbr; import com.worker.domain.entity.EpostRgstNmbr;
import com.worker.domain.entity.EpostSenderDetail; import com.worker.domain.entity.EpostSenderDetail;
import com.worker.domain.repo.cp.CpEPostRgstNmbr; import com.worker.domain.repo.cp.CpEPostRgstNmbr;
@ -24,6 +25,7 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@ -176,7 +178,12 @@ public class EPostSendService {
} }
// 택스트파일 생성 // 택스트파일 생성
try { 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) { } catch (Exception e) {
log.error("ZIP 파일 생성 실패 : " + e.getMessage()); log.error("ZIP 파일 생성 실패 : " + e.getMessage());
} }

@ -443,11 +443,23 @@ public class DbPolling {
//이미지 파일명을 mmCode + abcd 를 붙여 변환한다. //이미지 파일명을 mmCode + abcd 를 붙여 변환한다.
private void changeImgFileNmToMmcode(List<SinmungoDto.SinmungoXml> eachList, int index, String mmcode) { private void changeImgFileNmToMmcode(List<SinmungoDto.SinmungoXml> eachList, int index, String mmcode) {
for(int i = 0; i < eachList.get(index).getImgParsers().size(); i++ ) { var xml = eachList.get(index);
char suffix = (char) ('A' + i); // A, B, C, D ... if (xml == null || xml.getImgParsers() == null) return;
if(eachList.get(index).getImgParsers().get(i).getFileType() == 1) {
eachList.get(index).getImgParsers().get(i).setFileName(mmcode+suffix+".jpg"); var imgs = xml.getImgParsers();
} else eachList.get(index).getImgParsers().get(i).setFileName(mmcode+suffix+"Z.mp4");
// 최대 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; package com.worker.util.textFileMacker;
import com.worker.domain.entity.CpSetinfo;
import com.worker.scheduler.epost.dto.EPostDto; import com.worker.scheduler.epost.dto.EPostDto;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; 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.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Component @Component
@Slf4j @Slf4j
@ -14,15 +23,30 @@ public class TextMaker {
String s(String v){ return v==null? "": v.replace("|",""); } String s(String v){ return v==null? "": v.replace("|",""); }
String t(String v){ return v==null? "": v.replace("\r","").replace("\n","\\n").replace("|",""); } String t(String v){ return v==null? "": v.replace("\r","").replace("\n","\\n").replace("|",""); }
public void generateTextFile(List<EPostDto.SendTarget.Target> cpSendEpostTargets, public void generateTextFile(List<EPostDto.SendTarget.Target> sendTargets, CpSetinfo setInfo) {
List<EPostDto.SendTarget.Target> epSendEpostTargets,
List<EPostDto.SendTarget.Target> cpSendEgojiTargets,
List<EPostDto.SendTarget.Target> epSendEgojiTargets
) {
// 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