feat : MapStruct 매퍼 하나로 통합. QueryDsl 매서드 내에서 변환하여 리턴하도록 로직 구성

pull/11/head
Kurt92 1 month ago
parent e9bb45f7e0
commit 1c3a4aac93

@ -36,7 +36,7 @@ public class TotalInfoController {
@ResponseBody
public ResponseEntity<?> findTotalInfo(@PathVariable String mmCode) {
TotalInfoDto.Response.TotalInfo result = totalInfoService.findTotalInfo(mmCode);
TotalInfoDto.Response.TotalInfoResult result = totalInfoService.findTotalInfo(mmCode);
return ApiResponseUtil.success(result);

@ -1,9 +1,11 @@
package go.kr.project.biz.totalInfo.model;
import go.kr.project.domain.entity.*;
import go.kr.project.vo.*;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Column;
public class TotalInfoDto {
@ -29,75 +31,33 @@ public class TotalInfoDto {
@Getter
@Setter
public static class TotalInfo {
//CP_MAIN
private String mmCode;
private String mmSggcode;
private String mmDlgb;
private String mmIngb;
private String mmDate;
private String mmTime;
private String mmLawgb;
private String mmSgnm;
private String mmSgtel;
private String mmSgcont;
private String mmSgpos;
private String mmBdcode;
private String mmGpsX;
private String mmGpsY;
private String mmTrac;
private String mmSno;
private Integer mmImagecnt;
private String mmImagegb;
private String mmCarno;
private String mmVhmno;
private String mmCargb;
private String mmCarkind;
private String mmOmcode;
private String mmSdate;
private String mmEdate;
private Integer mmKeum1;
private Integer mmKeum2;
private Integer mmSukeum;
private Integer mmMinusKeum;
private Integer mmAddKeum;
private String mmRecall;
private Integer mmInuser;
private String mmIndt;
private String mmState;
private String mmStateDt;
private String mmCarcheck;
private String mmPrecode;
private String mmEtc;
private String mmVideofilenm;
private String mmSafezone;
private String mmViorcnt;
private String mmTime2;
private String mmCarname;
private String mmCarcolor;
private String mmCarfuel;
private String mmTransmitSgg;
private String mmTransmitTeam;
//CP_ANSWER
//CP_OWNER
//CP_INSTRUCT
//CP_INSTRUCT_ANSWER
//CP_VIOLATION
public static class TotalInfoResultEntities {
private CpMain cpMain;
private CpAnswer cpAnswer;
private CpOwner cpOwner;
private CpInstruct cpInstruct;
private CpInstructAnswer cpInstructAnswer;
private CpViolation cpViolation;
}
@Getter
@Setter
@Builder
public static class TotalInfoResult {
private CpMainVO cpMain;
private CpAnswerVO cpAnswer;
private CpOwnerVO cpOwner;
private CpInstructVO cpInstruct;
private CpInstructAnswerVO cpInstructAnswer;
private CpViolationVO cpViolation;
}
}
}

@ -2,15 +2,18 @@ package go.kr.project.biz.totalInfo.repository;
import com.querydsl.core.types.Projections;
import com.querydsl.jpa.impl.JPAQueryFactory;
import go.kr.project.biz.minwon.init.dto.SampleDto;
import go.kr.project.biz.totalInfo.model.TotalInfoDto;
import go.kr.project.vo.mapper.EntityVoMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
import java.util.List;
import static go.kr.project.domain.entity.QCpAnswer.cpAnswer;
import static go.kr.project.domain.entity.QCpInstruct.cpInstruct;
import static go.kr.project.domain.entity.QCpInstructAnswer.cpInstructAnswer;
import static go.kr.project.domain.entity.QCpMain.cpMain;
import static go.kr.project.domain.entity.QCpOwner.cpOwner;
import static go.kr.project.domain.entity.QCpViolation.cpViolation;
@Repository
@RequiredArgsConstructor
@ -18,73 +21,56 @@ import static go.kr.project.domain.entity.QCpMain.cpMain;
public class TotalInfoQueryDslRepository {
private final JPAQueryFactory queryFactory;
private final EntityVoMapper mapper;
public TotalInfoDto.Response.TotalInfoResult findTotalInfo(String mmCode) {
public TotalInfoDto.Response.TotalInfo findTotalInfo(String mmCode) {
String jobGroup = "";
//해당 QueryDsl문법이 어렵다면, sql문을 ChatGpt에 붙여넣고 QueryDsl로 바꿔달라고 하면 바꿔준다.
//읽어보고 맞다면 붙여넣으면 된다.
TotalInfoDto.Response.TotalInfo result = queryFactory
TotalInfoDto.Response.TotalInfoResultEntities result = queryFactory
.select(
Projections.fields(
TotalInfoDto.Response.TotalInfo.class,
cpMain.mmCode,
cpMain.mmSggcode,
cpMain.mmDlgb,
cpMain.mmIngb,
cpMain.mmDate,
cpMain.mmTime,
cpMain.mmLawgb,
cpMain.mmSgnm,
cpMain.mmSgtel,
cpMain.mmSgcont,
cpMain.mmSgpos,
cpMain.mmBdcode,
cpMain.mmGpsX,
cpMain.mmGpsY,
cpMain.mmTrac,
cpMain.mmSno,
cpMain.mmImagecnt,
cpMain.mmImagegb,
cpMain.mmCarno,
cpMain.mmVhmno,
cpMain.mmCargb,
cpMain.mmCarkind,
cpMain.mmOmcode,
cpMain.mmSdate,
cpMain.mmEdate,
cpMain.mmKeum1,
cpMain.mmKeum2,
cpMain.mmSukeum,
cpMain.mmMinusKeum,
cpMain.mmAddKeum,
cpMain.mmRecall,
cpMain.mmInuser,
cpMain.mmIndt,
cpMain.mmState,
cpMain.mmStateDt,
cpMain.mmCarcheck,
cpMain.mmPrecode,
cpMain.mmEtc,
cpMain.mmVideofilenm,
cpMain.mmSafezone,
cpMain.mmViorcnt,
cpMain.mmTime2,
cpMain.mmCarname,
cpMain.mmCarcolor,
cpMain.mmCarfuel,
cpMain.mmTransmitSgg,
cpMain.mmTransmitTeam
TotalInfoDto.Response.TotalInfoResultEntities.class,
cpMain,
cpAnswer,
cpOwner,
cpInstruct,
cpInstructAnswer,
cpViolation
)
)
.from(cpMain)
.leftJoin(cpAnswer).on(cpAnswer.asMmcode.eq(cpMain.mmCode))
.leftJoin(cpOwner).on(cpOwner.omCode.eq(cpMain.mmOmcode))
.leftJoin(cpInstruct).on(cpInstruct.itMmcode.eq(cpMain.mmCode))
.leftJoin(cpInstructAnswer).on(
cpInstructAnswer.id.iaSggcode.eq(cpInstruct.itSggcode),
cpInstructAnswer.id.iaCode.eq(cpInstruct.itCause)
)
.leftJoin(cpViolation).on(
cpViolation.id.vlSggcode.eq(cpMain.mmSggcode),
cpViolation.id.vlCode.eq(cpMain.mmLawgb),
cpViolation.id.vlJobgroup.eq(jobGroup)
)
.where(
cpMain.mmCode.eq(mmCode)
)
.fetchOne();
if (result == null) return null;
return result;
return TotalInfoDto.Response.TotalInfoResult.builder()
.cpMain(mapper.toCpMainVO(result.getCpMain()))
.cpAnswer(mapper.toCpAnswerVO(result.getCpAnswer()))
.cpOwner(mapper.toCpOwnerVO(result.getCpOwner()))
.cpInstruct(mapper.toCpInstructVO(result.getCpInstruct()))
.cpInstructAnswer(mapper.toCpInstructAnswerVO(result.getCpInstructAnswer()))
.cpViolation(mapper.toCpViolationVO(result.getCpViolation()))
.build();
}
}

@ -4,6 +4,6 @@ import go.kr.project.biz.totalInfo.model.TotalInfoDto;
public interface TotalInfoService {
TotalInfoDto.Response.TotalInfo findTotalInfo(String mmCode);
TotalInfoDto.Response.TotalInfoResult findTotalInfo(String mmCode);
}

@ -15,7 +15,7 @@ public class TotalInfoServiceImpl implements TotalInfoService {
private final TotalInfoQueryDslRepository totalInfoQueryDslRepository;
@Override
public TotalInfoDto.Response.TotalInfo findTotalInfo(String mmCode) {
public TotalInfoDto.Response.TotalInfoResult findTotalInfo(String mmCode) {
return totalInfoQueryDslRepository.findTotalInfo(mmCode);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpAnswer;
import go.kr.project.vo.CpAnswerVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpAnswerMapper {
CpAnswerVO toVo(CpAnswer entity);
CpAnswer toEntity(CpAnswerVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpBdong;
import go.kr.project.vo.CpBdongVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpBdongMapper {
CpBdongVO toVo(CpBdong entity);
CpBdong toEntity(CpBdongVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpCancel;
import go.kr.project.vo.CpCancelVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpCancelMapper {
CpCancelVO toVo(CpCancel entity);
CpCancel toEntity(CpCancelVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpGojiPrt;
import go.kr.project.vo.CpGojiPrtVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpGojiPrtMapper {
CpGojiPrtVO toVo(CpGojiPrt entity);
CpGojiPrt toEntity(CpGojiPrtVO vo);
}

@ -1,11 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpGojiSendHist;
import go.kr.project.vo.CpGojiSendHistVO;
public interface CpGojiSendHistMapper {
CpGojiSendHistVO toVo(CpGojiSendHist entity);
CpGojiSendHist toEntity(CpGojiSendHistVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpGojit;
import go.kr.project.vo.CpGojitVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpGojitMapper {
CpGojitVO toVo(CpGojit entity);
CpGojit toEntity(CpGojitVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpImagesize;
import go.kr.project.vo.CpImagesizeVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpImagesizeMapper {
CpImagesizeVO toVo(CpImagesize entity);
CpImagesize toEntity(CpImagesizeVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpInstructAnswer;
import go.kr.project.vo.CpInstructAnswerVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpInstructAnswerMapper {
CpInstructAnswerVO toVo(CpInstructAnswer entity);
CpInstructAnswer toEntity(CpInstructAnswerVO vo);
}

@ -1,14 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpInstruct;
import go.kr.project.vo.CpInstructVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpInstructMapper {
CpInstructVO toVo(CpInstruct entity);
CpInstruct toEntity(CpInstructVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpMainEtc1;
import go.kr.project.vo.CpMainEtc1VO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpMainEtc1Mapper {
CpMainEtc1VO toVo(CpMainEtc1 entity);
CpMainEtc1 toEntity(CpMainEtc1VO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpMain;
import go.kr.project.vo.CpMainVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpMainMapper {
CpMainVO toVo(CpMain entity);
CpMain toEntity(CpMainVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpMatch;
import go.kr.project.vo.CpMatchVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpMatchMapper {
CpMatchVO toVo(CpMatch entity);
CpMatch toEntity(CpMatchVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpOwner;
import go.kr.project.vo.CpOwnerVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpOwnerMapper {
CpOwnerVO toVo(CpOwner entity);
CpOwner toEntity(CpOwnerVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpSeallOne;
import go.kr.project.vo.CpSeallOneVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpSeallOneMapper {
CpSeallOneVO toVo(CpSeallOne entity);
CpSeallOne toEntity(CpSeallOneVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpSetinfo;
import go.kr.project.vo.CpSetinfoVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpSetinfoMapper {
CpSetinfoVO toVo(CpSetinfo entity);
CpSetinfo toEntity(CpSetinfoVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpSgg;
import go.kr.project.vo.CpSggVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpSggMapper {
CpSggVO toVo(CpSgg entity);
CpSgg toEntity(CpSggVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpUser;
import go.kr.project.vo.CpUserVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpUserMapper {
CpUserVO toVo(CpUser entity);
CpUser toEntity(CpUserVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.CpViolation;
import go.kr.project.vo.CpViolationVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CpViolationMapper {
CpViolationVO toVo(CpViolation entity);
CpViolation toEntity(CpViolationVO vo);
}

@ -0,0 +1,96 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.*;
import go.kr.project.vo.*;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface EntityVoMapper {
//:todo 멀티 pk 관련 작업 해야됨. 엔티티 id키로 되어있는거
// ===== CP 계열 =====
CpAnswerVO toCpAnswerVO(CpAnswer entity);
CpAnswer toCpAnswer(CpAnswerVO vo);
CpBdongVO toCpBdongVO(CpBdong entity);
CpBdong toCpBdong(CpBdongVO vo);
CpCancelVO toCpCancelVO(CpCancel entity);
CpCancel toCpCancel(CpCancelVO vo);
CpGojiPrtVO toCpGojiPrtVO(CpGojiPrt entity);
CpGojiPrt toCpGojiPrt(CpGojiPrtVO vo);
CpGojiSendHistVO toCpGojiSendHistVO(CpGojiSendHist entity);
CpGojiSendHist toCpGojiSendHist(CpGojiSendHistVO vo);
CpGojitVO toCpGojitVO(CpGojit entity);
CpGojit toCpGojit(CpGojitVO vo);
CpImagesizeVO toCpImagesizeVO(CpImagesize entity);
CpImagesize toCpImagesize(CpImagesizeVO vo);
CpInstructVO toCpInstructVO(CpInstruct entity);
CpInstruct toCpInstruct(CpInstructVO vo);
CpInstructAnswerVO toCpInstructAnswerVO(CpInstructAnswer entity);
CpInstructAnswer toCpInstructAnswer(CpInstructAnswerVO vo);
CpMainVO toCpMainVO(CpMain entity);
CpMain toCpMain(CpMainVO vo);
CpMainEtc1VO toCpMainEtc1VO(CpMainEtc1 entity);
CpMainEtc1 toCpMainEtc1(CpMainEtc1VO vo);
CpMatchVO toCpMatchVO(CpMatch entity);
CpMatch toCpMatch(CpMatchVO vo);
CpOwnerVO toCpOwnerVO(CpOwner entity);
CpOwner toCpOwner(CpOwnerVO vo);
CpSeallOneVO toCpSeallOneVO(CpSeallOne entity);
CpSeallOne toCpSeallOne(CpSeallOneVO vo);
CpSetinfoVO toCpSetinfoVO(CpSetinfo entity);
CpSetinfo toCpSetinfo(CpSetinfoVO vo);
CpSggVO toCpSggVO(CpSgg entity);
CpSgg toCpSgg(CpSggVO vo);
CpUserVO toCpUserVO(CpUser entity);
CpUser toCpUser(CpUserVO vo);
CpViolationVO toCpViolationVO(CpViolation entity);
CpViolation toCpViolation(CpViolationVO vo);
// ===== EPOST 계열 =====
EpostDelivResultVO toEpostDelivResultVO(EpostDelivResult entity);
EpostDelivResult toEpostDelivResult(EpostDelivResultVO vo);
EpostMakeResultVO toEpostMakeResultVO(EpostMakeResult entity);
EpostMakeResult toEpostMakeResult(EpostMakeResultVO vo);
// EpostRecptResultVO toEpostRecptResultVO(EpostRecptResult entity);
// EpostRecptResult toEpostRecptResult(EpostRecptResultVO vo);
EpostRgstNmbrVO toEpostRgstNmbrVO(EpostRgstNmbr entity);
EpostRgstNmbr toEpostRgstNmbr(EpostRgstNmbrVO vo);
EpostSenderDetailVO toEpostSenderDetailVO(EpostSenderDetail entity);
EpostSenderDetail toEpostSenderDetail(EpostSenderDetailVO vo);
EpostSenderRegVO toEpostSenderRegVO(EpostSenderReg entity);
EpostSenderReg toEpostSenderReg(EpostSenderRegVO vo);
// ===== TB_CNTC 계열 =====
TbCntcSndngDetailVO toTbCntcSndngDetailVO(TbCntcSndngDetail entity);
TbCntcSndngDetail toTbCntcSndngDetail(TbCntcSndngDetailVO vo);
TbCntcSndngResultVO toTbCntcSndngResultVO(TbCntcSndngResult entity);
TbCntcSndngResult toTbCntcSndngResult(TbCntcSndngResultVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.EpostDelivResult;
import go.kr.project.vo.EpostDelivResultVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface EpostDelivResultMapper {
EpostDelivResultVO toVo(EpostDelivResult entity);
EpostDelivResult toEntity(EpostDelivResultVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.EpostMakeResult;
import go.kr.project.vo.EpostMakeResultVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface EpostMakeResultMapper {
EpostMakeResultVO toVo(EpostMakeResult entity);
EpostMakeResult toEntity(EpostMakeResultVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.EpostRgstNmbr;
import go.kr.project.vo.EpostRgstNmbrVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface EpostRgstNmbrMapper {
EpostRgstNmbrVO toVo(EpostRgstNmbr entity);
EpostRgstNmbr toEntity(EpostRgstNmbrVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.EpostSenderDetail;
import go.kr.project.vo.EpostSenderDetailVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface EpostSenderDetailMapper {
EpostSenderDetailVO toVo(EpostSenderDetail entity);
EpostSenderDetail toEntity(EpostSenderDetailVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.EpostSenderReg;
import go.kr.project.vo.EpostSenderRegVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface EpostSenderRegMapper {
EpostSenderRegVO toVo(EpostSenderReg entity);
EpostSenderReg toEntity(EpostSenderRegVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.TbCntcSndngDetail;
import go.kr.project.vo.TbCntcSndngDetailVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface TbCntcSndngDetailMapper {
TbCntcSndngDetailVO toVo(TbCntcSndngDetail entity);
TbCntcSndngDetail toEntity(TbCntcSndngDetailVO vo);
}

@ -1,13 +0,0 @@
package go.kr.project.vo.mapper;
import go.kr.project.domain.entity.TbCntcSndngResult;
import go.kr.project.vo.TbCntcSndngResultVO;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface TbCntcSndngResultMapper {
TbCntcSndngResultVO toVo(TbCntcSndngResult entity);
TbCntcSndngResult toEntity(TbCntcSndngResultVO vo);
}
Loading…
Cancel
Save