feat : send xml 생성 매핑중

master
Kurt92 6 months ago
parent dfdf78268c
commit ca814fe480

@ -123,6 +123,14 @@ public class SinmungoDto {
}
@Data
@Builder
public static class UserInfos{
private List<CpUser> cpUsers;
private List<CpUser> epUsers;
}
}

@ -1,21 +1,39 @@
package com.worker.scheduler.smg.service;
import com.worker.domain.entity.CpAnswer;
import com.worker.domain.entity.CpUser;
import com.worker.domain.repo.cp.CpAnswerRepository;
import com.worker.domain.repo.cp.CpUserRepository;
import com.worker.domain.repo.ep.EpAnswerRepository;
import com.worker.domain.repo.ep.EpUserRepository;
import com.worker.dto.SinmungoDto;
import com.worker.dto.UserInfoDto;
import com.worker.util.common.commEnum.StateEnum;
import com.worker.util.fileMaker.XmlMacker;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
@RequiredArgsConstructor
@Slf4j
public class XmlSend {
private final XmlMacker xmlMacker;
private final CpAnswerRepository cpAnswerRepository;
private final EpAnswerRepository epAnswerRepository;
private final CpUserRepository cpUserRepository;
private final EpUserRepository epUserRepository;
// 실행 대상 답변 찾기
public SinmungoDto.Send.Answers findAnswersByStatus(String status) {
@ -29,21 +47,94 @@ public class XmlSend {
//send 디렉토리에 xml 생성
public void send(SinmungoDto.SetInfo setInfo, SinmungoDto.Send.Answers answers) {
// answers 에서 as_reuser 추출
List<String> reuser;
// 추출한 reuser에서 user정보 조회
//
// List<Integer> reuser = Stream.concat(
// Optional.ofNullable(answers.getCpAnswer()).orElse(List.of()).stream(),
// Optional.ofNullable(answers.getEpAnswer()).orElse(List.of()).stream()
// )
// .map(CpAnswer::getAsReuser)
// .filter(Objects::nonNull)
// .collect(Collectors.toList());
// 대상 답변의 reuser를 순회하며 userInfo를 조회
// List<Optional<CpUser>> CpUserInfos = answers.getCpAnswer().stream()
// .map(user -> cpUserRepository.findById(Long.valueOf(user.getAsReuser())))
// .collect(Collectors.toList());
// List<Optional<CpUser>> EpUserInfos = answers.getEpAnswer().stream()
// .map(user -> epUserRepository.findById(Long.valueOf(user.getAsReuser())))
// .collect(Collectors.toList());
// 유저 정보
SinmungoDto.Send.UserInfos userInfos = findUserInfos(answers);
//
log.info(userInfos.toString());
log.info(userInfos.toString());
// main테이블 조회
// mm_state 별로 im_civil_abstract_l 값 업데이트
//awsers 만큼
// 위에서 조회한 정보들 조합해서 xml 생성
//String 으로 xml 만들고 그거 파라미터로 파일생성하는 매서드로 가져가
answers.getCpAnswer().forEach(cpAnswer ->
userInfos.getCpUsers().stream()
.filter(user -> Objects.equals(user.getUmCode(), cpAnswer.getAsReuser()))
.findFirst()
.ifPresent(user -> {
try {
xmlMacker.writeEsbAnswerXml(cpAnswer, user);
} catch (IOException e) {
throw new RuntimeException(e);
}
})
);
answers.getEpAnswer().forEach(epAnswer ->
userInfos.getEpUsers().stream()
.findFirst()
.filter(user -> Objects.equals(user.getUmCode(), epAnswer.getAsReuser()))
.ifPresent(user -> {
try {
xmlMacker.writeEsbAnswerXml(epAnswer, user);
} catch (IOException e) {
throw new RuntimeException(e);
}
})
);
}
// answers 리스트에서 reuser를 통해 유저정보를 추출한다.
private SinmungoDto.Send.UserInfos findUserInfos(SinmungoDto.Send.Answers answers) {
return SinmungoDto.Send.UserInfos.builder()
.cpUsers(
answers.getCpAnswer().stream()
.map(user -> cpUserRepository.findById(Long.valueOf(user.getAsReuser())))
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.collectingAndThen(
Collectors.toMap(CpUser::getUmCode, Function.identity(), (a, b) -> a),
m -> new ArrayList<>(m.values())
))
)
.epUsers(
answers.getEpAnswer().stream()
.map(user -> epUserRepository.findById(Long.valueOf(user.getAsReuser())))
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.collectingAndThen(
Collectors.toMap(CpUser::getUmCode, Function.identity(), (a, b) -> a),
m -> new ArrayList<>(m.values())
))
)
.build();
}

@ -1,5 +1,7 @@
package com.worker.util.fileMaker;
import com.worker.domain.entity.CpAnswer;
import com.worker.domain.entity.CpUser;
import com.worker.dto.SinmungoDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@ -15,46 +17,50 @@ public class XmlMacker {
// 답변처리 xml
public void writeEsbAnswerXml(SinmungoDto.SinmungoXml xmlDto, Path sendDir) throws IOException {
// String xml =
// "<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n" +
// "<dmndinfo>\n" +
// " <interface_seq_n>" + xmlDto.getInterface_seq_n() + "</interface_seq_n>\n" +
// " <sys_gubun_c>" + xmlDto.getSys_gubun_c() + "</sys_gubun_c>\n" +
// " <anc_code_v>" + xmlDto.getAnc_code_v() + "</anc_code_v>\n" +
// " <peti_gubun_c>" + "180" + "</peti_gubun_c>\n" +
// " <peti_anc_code_v>" + xmlDto.getPeti_anc_code_v() + "</peti_anc_code_v>\n" +
// " <peti_no_c>" + xmlDto.getPeti_no_c() + "</peti_no_c>\n" +
// " <civil_no_c>" + xmlDto.getCivil_no_c() + "</civil_no_c>\n" +
// " <civil_gist_v>" + xmlDto.getCivil_gist_v() + "</civil_gist_v>\n" +
// " <civil_abstract_l>" + xmlDto.getCivil_abstract_l() + "</civil_abstract_l>\n" +
// " <pcd_dept_v>" + xmlDto.getPcd_dept_v() + "</pcd_dept_v>\n" +
// " <pcd_dept_nm_v>" + xmlDto.getPcd_dept_nm_v() + "</pcd_dept_nm_v>\n" +
// " <duty_id_v>" + xmlDto.getDuty_id_v() + "</duty_id_v>\n" +
// " <pcd_email_v>" + xmlDto.getPcd_email_v() + "</pcd_email_v>\n" +
// " <pcd_tel_v>" + xmlDto.getPcd_tel_v() + "</pcd_tel_v>\n" +
// " <pcd_rst_cont_l>" + xmlDto.getPcd_rst_cont_l() + "</pcd_rst_cont_l>\n" +
// " <do_reg_d>" + xmlDto.getDo_reg_d() + "</do_reg_d>\n" +
// " <pcd_rst_cont_attach_yn_c>" + "N" + "</pcd_rst_cont_attach_yn_c>\n" +
// " <pcd_anc_code_v>" + xmlDto.getPcd_anc_code_v() + "</pcd_anc_code_v>\n" +
// " <reg_d>" + xmlDto.getReg_d() + "</reg_d>\n" +
// " <send_yn_c>" + "2" + "</send_yn_c>\n" +
// " <send_d>" + xmlDto.getSend_d() + "</send_d>\n" +
// " <apply_d>" + xmlDto.getApply_d() + "</apply_d>\n" +
// " <apply_gubun_c>" + "Y" + "</apply_gubun_c>\n" +
// " <pcd_gubun_v>" + "" + "</pcd_gubun_v>\n" +
// " <pcd_gubun2_v>" + "" + "</pcd_gubun2_v>\n" +
// " <pcd_gubun3_v>" + "" + "</pcd_gubun3_v>\n" +
// " <ifid>" + "" + "</ifid>\n" +
// " <srcorgcd>" + xmlDto.getSrcorgcd() + "</srcorgcd>\n" +
// " <tgtorgcd>" + "" + "</tgtorgcd>\n" +
// "</dmndinfo>\n";
//
public String writeEsbAnswerXml(CpAnswer answers, CpUser userInfo) throws IOException {
String xml =
"<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n" +
"<dmndinfo>\n" +
" <interface_seq_n>" + "랜덤으로 시퀀스 만드는데 랜덤으로 만들어도 됨?????" + "</interface_seq_n>\n" +
" <sys_gubun_c>" + answers.getAsSysGubunC() + "</sys_gubun_c>\n" +
" <anc_code_v>" + answers.getAsState() + "</anc_code_v>\n" +
" <peti_gubun_c>" + "180" + "</peti_gubun_c>\n" +
" <peti_anc_code_v>" + answers.getAsPetiAncCodeV() + "</peti_anc_code_v>\n" +
" <peti_no_c>" + answers.getAsJsno() + "</peti_no_c>\n" +
" <civil_no_c>" + answers.getAsJsnoM() + "</civil_no_c>\n" +
" <civil_gist_v>" + "이거 무슨 위반인지 로직" + "</civil_gist_v>\n" +
" <civil_abstract_l>" + "mm_state 과태료 상태" + "</civil_abstract_l>\n" +
" <pcd_dept_v>" + "SG_DEPCODE??" + "</pcd_dept_v>\n" +
" <pcd_dept_nm_v>" + "SG_SGGNAME" + "</pcd_dept_nm_v>\n" +
" <duty_id_v>" + userInfo.getUmName() + "</duty_id_v>\n" +
" <pcd_email_v>" + userInfo.getUmEmail() + "</pcd_email_v>\n" +
" <pcd_tel_v>" + userInfo.getUmTelno() + "</pcd_tel_v>\n" +
" <pcd_rst_cont_l>" + answers.getAsText() + "</pcd_rst_cont_l>\n" +
" <do_reg_d>" + "현재시간 yyyymmddhhmmss" + "</do_reg_d>\n" +
" <pcd_rst_cont_attach_yn_c>" + "N" + "</pcd_rst_cont_attach_yn_c>\n" +
" <pcd_anc_code_v>" + "SG_DEPCODE??" + "</pcd_anc_code_v>\n" +
" <reg_d>" + "현재시간 yyyymmddhhmmss" + "</reg_d>\n" +
" <send_yn_c>" + "2" + "</send_yn_c>\n" +
" <send_d>" + "현재시간 yyyymmddhhmmss" + "</send_d>\n" +
" <apply_d>" + "현재시간 yyyymmddhhmmss" + "</apply_d>\n" +
" <apply_gubun_c>" + "Y" + "</apply_gubun_c>\n" +
" <pcd_gubun_v>" + "" + "</pcd_gubun_v>\n" +
" <pcd_gubun2_v>" + "" + "</pcd_gubun2_v>\n" +
" <pcd_gubun3_v>" + "" + "</pcd_gubun3_v>\n" +
" <ifid>" + "" + "</ifid>\n" +
" <srcorgcd>" + "상위기간 코드 -> setInfo 에서 가져옴" + "</srcorgcd>\n" +
" <tgtorgcd>" + "" + "</tgtorgcd>\n" +
"</dmndinfo>\n";
// String fileName = "EPOUGB$" + xmlDto.interface_seq_n() + ".xml";
// Path filePath = sendDir.resolve(fileName);
//
// // 저장 (EUCKR 인코딩)
// Files.write(filePath, xml.getBytes(Charset.forName("EUC-KR")));
return xml;
}
// 회수처리 xml (cp 상에선 서손처리)
@ -62,4 +68,6 @@ public class XmlMacker {
}
// send 디렉토리로 파일저장
}

Loading…
Cancel
Save