feat : 계도 발송대상, 계도현황 페이지 추가

kurt/kurt
Kurt92 3 days ago
parent 670f86f55b
commit 5fa4b73ddd

@ -0,0 +1,51 @@
package go.kr.project.biz.post.guide.sendTarget.controller;
import egovframework.constant.TilesConstants;
import egovframework.util.ApiResponseUtil;
import go.kr.project.biz.post.guide.sendTarget.dto.GuideSendTargetDto;
import go.kr.project.biz.post.guide.sendTarget.service.GuideSendTargetService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
@Controller
@RequiredArgsConstructor
public class GuideSendTargetController {
private final GuideSendTargetService guideSendTargetService;
/**
* / > >
* @return
*/
@GetMapping("post/guide/sendTarget/guideSendTarget.do")
public String guideSendTargetView() {
return "biz/post/guide/sendTarget/guideSendTarget" + TilesConstants.BASE;
}
@PostMapping("/post/guide/sendTarget/sendTargetList.ajax")
public ResponseEntity<?> getGuideSendTargetListAjax(@ModelAttribute GuideSendTargetDto.Request.Search dto) {
// 총 게시물 수 조회
int totalCount = 0;
dto.setTotalCount(totalCount);
// 페이징 처리를 위한 설정
dto.setPagingYn("N");
// 리스트 조회
List<GuideSendTargetDto.Response.GuideSendTargetFlat> result = guideSendTargetService.findPreNoticeSendTarget(dto);
return ApiResponseUtil.successWithGrid(result, dto);
}
}

@ -0,0 +1,69 @@
package go.kr.project.biz.post.guide.sendTarget.dto;
import go.kr.project.domain.entity.CpAnswer;
import go.kr.project.domain.entity.CpMain;
import go.kr.project.domain.entity.CpOwner;
import go.kr.project.system.common.model.PagingVO;
import go.kr.project.vo.CpAnswerVO;
import go.kr.project.vo.CpMainVO;
import go.kr.project.vo.CpOwnerVO;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
public class GuideSendTargetDto {
public static class Request {
@Getter
@Setter
public static class Search extends PagingVO {
private String mmSggcode;
private String searchLawgb;
}
}
public static class Response {
@Getter
@Setter
public static class GuideSendTargetEntities {
private CpMain cpMain;
private CpAnswer cpAnswer;
private CpOwner cpOwner;
private String vlId;
}
@Getter
@Setter
@Builder
public static class GuideSendTarget {
private CpMainVO cpMain;
private CpAnswerVO cpAnswer;
private CpOwnerVO cpOwner;
private String vlId;
}
@Getter
@Setter
@Builder
public static class GuideSendTargetFlat {
private String mmDlgb;
private String asBbsNo;
private String asJsdate;
private String mmSgnm;
private String mmSgtel;
private String vlId;
private String mmDate;
private String mmCarno;
private String omName;
private String omNogb;
private String omJno;
private String mmSgpos;
private String mmCode;
}
}
}

@ -0,0 +1,57 @@
package go.kr.project.biz.post.guide.sendTarget.repository;
import com.querydsl.core.types.Projections;
import com.querydsl.jpa.impl.JPAQueryFactory;
import go.kr.project.biz.post.guide.sendTarget.dto.GuideSendTargetDto;
import go.kr.project.vo.code.MmStateEnum;
import lombok.RequiredArgsConstructor;
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.QCpMain.cpMain;
import static go.kr.project.domain.entity.QCpOwner.cpOwner;
import static go.kr.project.domain.entity.QCpUser.cpUser;
import static go.kr.project.domain.entity.QCpViolation.cpViolation;
@Repository
@RequiredArgsConstructor
public class GuideSendTargetQueryDslRepository {
private final JPAQueryFactory queryFactory;
public List<GuideSendTargetDto.Response.GuideSendTargetEntities> findGuideSendTarget(GuideSendTargetDto.Request.Search dto) {
List<GuideSendTargetDto.Response.GuideSendTargetEntities> result = queryFactory
.select(
Projections.fields(
GuideSendTargetDto.Response.GuideSendTargetEntities.class,
cpMain,
cpAnswer,
cpOwner,
cpViolation.vlId
)
)
.from(cpMain)
.leftJoin(cpAnswer).on(cpMain.mmCode.eq(cpAnswer.asMmcode))
.leftJoin(cpInstruct).on(cpMain.mmCode.eq(cpInstruct.itMmcode))
.leftJoin(cpOwner).on(cpMain.mmOmcode.eq(cpOwner.omCode))
.innerJoin(cpViolation).on(
cpMain.mmLawgb.eq(cpViolation.id.vlCode),
cpMain.mmSggcode.eq(cpViolation.id.vlSggcode))
.where(
cpMain.mmState.eq(MmStateEnum.GUIDANCE.getCode()),
cpMain.mmLawgb.eq(dto.getSearchLawgb())
)
.orderBy(cpMain.mmCarno.asc(), cpMain.mmDate.asc(), cpMain.mmTime.asc())
.fetch();
return result;
}
}

@ -0,0 +1,9 @@
package go.kr.project.biz.post.guide.sendTarget.service;
import go.kr.project.biz.post.guide.sendTarget.dto.GuideSendTargetDto;
import java.util.List;
public interface GuideSendTargetService {
List<GuideSendTargetDto.Response.GuideSendTargetFlat> findPreNoticeSendTarget(GuideSendTargetDto.Request.Search dto);
}

@ -0,0 +1,57 @@
package go.kr.project.biz.post.guide.sendTarget.service.impl;
import go.kr.project.biz.post.guide.sendTarget.dto.GuideSendTargetDto;
import go.kr.project.biz.post.guide.sendTarget.repository.GuideSendTargetQueryDslRepository;
import go.kr.project.biz.post.guide.sendTarget.service.GuideSendTargetService;
import go.kr.project.vo.CpAnswerVO;
import go.kr.project.vo.CpMainVO;
import go.kr.project.vo.CpOwnerVO;
import go.kr.project.vo.code.MmDlgbEnum;
import go.kr.project.vo.mapper.EntityVoMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class GuideSendTargetServiceImpl implements GuideSendTargetService {
private final EntityVoMapper mapper;
private final GuideSendTargetQueryDslRepository guideSendTargetQueryDslRepository;
@Override
public List<GuideSendTargetDto.Response.GuideSendTargetFlat> findPreNoticeSendTarget(GuideSendTargetDto.Request.Search dto) {
List<GuideSendTargetDto.Response.GuideSendTargetEntities> list = guideSendTargetQueryDslRepository.findGuideSendTarget(dto);
List<GuideSendTargetDto.Response.GuideSendTargetFlat> result =
list.stream()
.map(e -> {
CpMainVO cpMainVO = mapper.toCpMainVO(e.getCpMain());
CpAnswerVO cpAnswerVO = mapper.toCpAnswerVO(e.getCpAnswer());
CpOwnerVO cpOwnerVO = mapper.toCpOwnerVO(e.getCpOwner());
return GuideSendTargetDto.Response.GuideSendTargetFlat.builder()
// 평탄화 필드
.mmDlgb(MmDlgbEnum.getDescByCode(cpMainVO.getMmDlgb()))
.asBbsNo(cpMainVO.getMmBdcode())
.asJsdate(cpAnswerVO.getAsJsdate())
.mmSgnm(cpMainVO.getMmSgnm())
.mmSgtel(cpMainVO.getMmSgtel())
.vlId(e.getVlId())
.mmDate(cpMainVO.getMmDate())
.mmCarno(cpMainVO.getMmCarno())
.omName(cpOwnerVO.getOmName())
.omNogb(cpOwnerVO.getOmNOGb())
.omJno(cpOwnerVO.getOmJno())
.mmSgpos(cpMainVO.getMmSgpos())
.mmCode(cpMainVO.getMmCode())
.build();
})
.collect(Collectors.toList());
return result;
}
}

@ -0,0 +1,37 @@
package go.kr.project.biz.post.preNotice.status.dto;
import go.kr.project.system.common.model.PagingVO;
import lombok.Getter;
import lombok.Setter;
public class PreNoticeStatusDto {
public static class Request {
@Getter
@Setter
public static class Search extends PagingVO {
private String mmSggcode;
}
}
public static class Response {
@Getter
@Setter
public static class DailyStatus {
}
}
}

@ -0,0 +1,16 @@
<%--
Created by IntelliJ IDEA.
User: kurt
Date: 2025. 12. 12.
Time: 오후 3:56
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
</body>
</html>
Loading…
Cancel
Save