feat : 공통 구조 수정

1. 상태값 변경 하는 로직들 전체 통합중.
2. 코드값 조회 항목추가 (cpInstruct)
pull/34/head
Kurt92 3 days ago
parent 014b6f3af0
commit ab01a40b84

@ -3,12 +3,14 @@ package go.kr.project.biz.common.controller;
import go.kr.project.biz.common.dto.CommonDto; import go.kr.project.biz.common.dto.CommonDto;
import go.kr.project.biz.common.dto.WebClientCallDto; import go.kr.project.biz.common.dto.WebClientCallDto;
import go.kr.project.biz.common.service.CommonService; import go.kr.project.biz.common.service.CommonService;
import go.kr.project.biz.minwon.init.dto.MinwonInitDto;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.Map;
@Controller @Controller
@RequiredArgsConstructor @RequiredArgsConstructor
@ -20,7 +22,7 @@ public class CommonContorller {
* , , * , ,
*/ */
@GetMapping("/common/code/find.ajax") @GetMapping("/common/code/find.ajax")
public ResponseEntity<?> getCode(@ModelAttribute CommonDto.Request commonDto) { public ResponseEntity<?> getCode(@ModelAttribute CommonDto.Request.Code commonDto) {
CommonDto.Response.CodeResult result = commonService.findCode(commonDto); CommonDto.Response.CodeResult result = commonService.findCode(commonDto);
@ -41,13 +43,13 @@ public class CommonContorller {
/** /**
* *
*/ */
@PutMapping("/common/car/info/{mmCode}/update.ajax") // @PutMapping("/common/car/info/{mmCode}/update.ajax")
public ResponseEntity<?> updateCarInfo(@PathVariable String mmCode, @RequestBody WebClientCallDto.CarInfoResponse.CarInfoIfBody carInfoIfBody) { // public ResponseEntity<?> updateCarInfo(@PathVariable String mmCode, @RequestBody WebClientCallDto.CarInfoResponse.CarInfoIfBody carInfoIfBody) {
//
commonService.updateCarInfoFromCpMain(mmCode, carInfoIfBody); // commonService.updateCarInfoFromCpMain(mmCode, carInfoIfBody);
//
return ResponseEntity.ok("Success"); // return ResponseEntity.ok("Success");
} // }
@ -61,7 +63,19 @@ public class CommonContorller {
return ResponseEntity.ok(commonService.findCoverInfo(carNo)); return ResponseEntity.ok(commonService.findCoverInfo(carNo));
} }
/**
*
* */
@PutMapping("/common/update/{mmCode}/{state}/state.ajax")
public ResponseEntity<?> test(@PathVariable String mmCode,
@PathVariable String state,
@RequestBody Map<String, Object> req)
{
commonService.updateState(mmCode, state, req);
return ResponseEntity.ok("수정되었습니다");
}
} }

@ -2,6 +2,7 @@ package go.kr.project.biz.common.dto;
import go.kr.project.vo.CpBdongVO; import go.kr.project.vo.CpBdongVO;
import go.kr.project.vo.CpCancelAnswerVO; import go.kr.project.vo.CpCancelAnswerVO;
import go.kr.project.vo.CpInstructAnswerVO;
import go.kr.project.vo.CpViolationVO; import go.kr.project.vo.CpViolationVO;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
@ -11,13 +12,19 @@ import java.util.List;
public class CommonDto { public class CommonDto {
@Getter
@Setter
public static class Request { public static class Request {
private String sggCode; @Getter
private String jobGroup; @Setter
private String code; public static class Code {
private String sggCode;
private String jobGroup;
private String code;
}
} }
@ -37,6 +44,7 @@ public class CommonDto {
private List<CpViolationVO> cpViolation; private List<CpViolationVO> cpViolation;
private List<CpBdongVO> cpBdong; private List<CpBdongVO> cpBdong;
private List<CpCancelAnswerVO> cpCancelAnswer; private List<CpCancelAnswerVO> cpCancelAnswer;
private List<CpInstructAnswerVO> cpInstructAnswer;
} }

@ -7,6 +7,7 @@ import go.kr.project.biz.common.dto.WebClientCallDto;
import go.kr.project.domain.entity.CpOwner; import go.kr.project.domain.entity.CpOwner;
import go.kr.project.vo.CpBdongVO; import go.kr.project.vo.CpBdongVO;
import go.kr.project.vo.CpCancelAnswerVO; import go.kr.project.vo.CpCancelAnswerVO;
import go.kr.project.vo.CpInstructAnswerVO;
import go.kr.project.vo.CpViolationVO; import go.kr.project.vo.CpViolationVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@ -18,6 +19,7 @@ import java.util.List;
import static go.kr.project.domain.entity.QCpBdong.cpBdong; import static go.kr.project.domain.entity.QCpBdong.cpBdong;
import static go.kr.project.domain.entity.QCpCancelAnswer.cpCancelAnswer; import static go.kr.project.domain.entity.QCpCancelAnswer.cpCancelAnswer;
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.QCpMain.cpMain;
import static go.kr.project.domain.entity.QCpOwner.cpOwner; import static go.kr.project.domain.entity.QCpOwner.cpOwner;
import static go.kr.project.domain.entity.QCpSetinfo.cpSetinfo; import static go.kr.project.domain.entity.QCpSetinfo.cpSetinfo;
@ -31,7 +33,7 @@ public class CommonQueryDslRepository {
private final JPAQueryFactory queryFactory; private final JPAQueryFactory queryFactory;
public List<CpViolationVO> findViolationCode(CommonDto.Request commonDto) { public List<CpViolationVO> findViolationCode(CommonDto.Request.Code commonDto) {
commonDto.setSggCode("41590"); commonDto.setSggCode("41590");
commonDto.setJobGroup("1"); commonDto.setJobGroup("1");
@ -82,7 +84,7 @@ public class CommonQueryDslRepository {
return result; return result;
} }
public List<CpCancelAnswerVO> findCancelAnswerCode(CommonDto.Request commonDto) { public List<CpCancelAnswerVO> findCancelAnswerCode(CommonDto.Request.Code commonDto) {
commonDto.setSggCode("41590"); commonDto.setSggCode("41590");
@ -104,6 +106,25 @@ public class CommonQueryDslRepository {
return result; return result;
} }
public List<CpInstructAnswerVO> findInstructAnswer(CommonDto.Request.Code commonDto) {
commonDto.setSggCode("41590");
List<CpInstructAnswerVO> result = queryFactory
.select(
Projections.fields(
CpInstructAnswerVO.class,
cpInstructAnswer.id.iaSggcode,
cpInstructAnswer.id.iaCode,
cpInstructAnswer.iaId
)
)
.from(cpInstructAnswer)
.where(cpInstructAnswer.id.iaSggcode.eq(commonDto.getSggCode()))
.fetch();
return result;
}
/** CpMain 차적조회 결과 업데이트 */ /** CpMain 차적조회 결과 업데이트 */

@ -5,15 +5,17 @@ import go.kr.project.biz.common.dto.WebClientCallDto;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Map;
public interface CommonService { public interface CommonService {
CommonDto.Response.CodeResult findCode(CommonDto.Request commonDto); CommonDto.Response.CodeResult findCode(CommonDto.Request.Code commonDto);
WebClientCallDto.CarInfoResponse findCarInfo(String carNo, String mmDate); WebClientCallDto.CarInfoResponse findCarInfo(String carNo, String mmDate);
void updateCarInfoFromCpMain(String mmCode, WebClientCallDto.CarInfoResponse.CarInfoIfBody carInfoIfBody); // void updateCarInfoFromCpMain(String mmCode, WebClientCallDto.CarInfoResponse.CarInfoIfBody carInfoIfBody);
Boolean findCoverInfo(String carNo) throws Exception; Boolean findCoverInfo(String carNo) throws Exception;
void updateState(String reqMmCode, String reqState, Map<String, Object> req);
} }

@ -1,5 +1,7 @@
package go.kr.project.biz.common.service.impl; package go.kr.project.biz.common.service.impl;
import com.fasterxml.jackson.databind.ObjectMapper;
import egovframework.util.DtoConverter;
import go.kr.project.biz.common.dto.CommonDto; import go.kr.project.biz.common.dto.CommonDto;
import go.kr.project.biz.common.dto.WebClientCallDto; import go.kr.project.biz.common.dto.WebClientCallDto;
import go.kr.project.biz.common.repository.CommonQueryDslRepository; import go.kr.project.biz.common.repository.CommonQueryDslRepository;
@ -11,6 +13,7 @@ import go.kr.project.domain.entity.CpSetinfoId;
import go.kr.project.domain.repo.cp.CpMainhistRepository; import go.kr.project.domain.repo.cp.CpMainhistRepository;
import go.kr.project.domain.repo.cp.CpOwnerRepository; import go.kr.project.domain.repo.cp.CpOwnerRepository;
import go.kr.project.domain.repo.cp.CpSetinfoRepository; import go.kr.project.domain.repo.cp.CpSetinfoRepository;
import go.kr.project.vo.code.MmStateEnum;
import go.kr.project.vo.mapper.EntityVoMapper; import go.kr.project.vo.mapper.EntityVoMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -18,6 +21,7 @@ import org.springframework.stereotype.Service;
import javax.transaction.Transactional; import javax.transaction.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Map;
import java.util.Optional; import java.util.Optional;
@Service @Service
@ -25,21 +29,25 @@ import java.util.Optional;
public class CommonServiceImpl implements CommonService { public class CommonServiceImpl implements CommonService {
private final EntityVoMapper mapper; private final EntityVoMapper mapper;
private final WebClientCall webClientCall; private final DtoConverter dtoConverter;
private final WebClientCallService webClientCallService;
private final UpdateStateService updateStateService;
private final CpOwnerRepository cpOwnerRepository;
private final CpMainhistRepository cpMainhistRepository;
private final CommonQueryDslRepository commonQueryDslRepository; private final CommonQueryDslRepository commonQueryDslRepository;
private final CpSetinfoRepository cpSetinfoRepository; private final CpSetinfoRepository cpSetinfoRepository;
@Override @Override
public CommonDto.Response.CodeResult findCode(CommonDto.Request commonDto) { public CommonDto.Response.CodeResult findCode(CommonDto.Request.Code commonDto) {
// todo: 추후 코드값이 추가되서 너무 무거워지면 분리 예정.
return CommonDto.Response.CodeResult.builder() return CommonDto.Response.CodeResult.builder()
.cpViolation(commonQueryDslRepository.findViolationCode(commonDto)) .cpViolation(commonQueryDslRepository.findViolationCode(commonDto))
.cpBdong(commonQueryDslRepository.findBdongCode()) .cpBdong(commonQueryDslRepository.findBdongCode())
.cpCancelAnswer(commonQueryDslRepository.findCancelAnswerCode(commonDto)) .cpCancelAnswer(commonQueryDslRepository.findCancelAnswerCode(commonDto))
.cpInstructAnswer(commonQueryDslRepository.findInstructAnswer(commonDto))
.build(); .build();
} }
@ -51,45 +59,10 @@ public class CommonServiceImpl implements CommonService {
//게이트웨이가 아니라면 해당 변수에 null이 들어간다. //게이트웨이가 아니라면 해당 변수에 null이 들어간다.
String pairProjectIp = commonQueryDslRepository.pairProjectIp(); String pairProjectIp = commonQueryDslRepository.pairProjectIp();
return webClientCall.carInfoCall(mmCarno, mmDate, pairProjectIp); return webClientCallService.carInfoCall(mmCarno, mmDate, pairProjectIp);
} }
@Override
@Transactional
public void updateCarInfoFromCpMain(String mmCode, WebClientCallDto.CarInfoResponse.CarInfoIfBody carInfoIfBody) {
long maxOmCode = Long.parseLong(commonQueryDslRepository.findMaxOmCode());
// owner 인서트
CpOwner cpOwner = CpOwner.builder()
.omCode(String.valueOf(maxOmCode + 1))
// .omSggcode()
.omName(carInfoIfBody.getMberNm())
.omNo1(carInfoIfBody.getMberSeNo().substring(0,6))
.omJno(carInfoIfBody.getMberSeNo())
.omNOGb(carInfoIfBody.getMberSeCode())
.omJuso(carInfoIfBody.getUsgsrhldAdresFull())
.omBunji(carInfoIfBody.getOwnerLnbr())
.omZip(carInfoIfBody.getUseStrnghldBuldMainNo())
.omDoroCode(carInfoIfBody.getOwnerRoadNmCode())
.omBldPosition(carInfoIfBody.getUsgsrhldUndgrndBuldSeCode())
.omBldNo1(carInfoIfBody.getUseStrnghldBuldMainNo())
.omBldNo2(carInfoIfBody.getUseStrnghldBuldSubNo())
// .omBldAdmno()
.omIngb(carInfoIfBody.getErsrRegistSeCode())
.omIndt(carInfoIfBody.getTransrRegistDe())
.build();
cpOwnerRepository.save(cpOwner);
// main 업데이트
commonQueryDslRepository.updateCarinfoFromCpMain(mmCode, cpOwner, carInfoIfBody);
// main hist 인서트
StateChangeHistSaveToMainHist("21", mmCode);
}
/** 표지조회 */ /** 표지조회 */
@Override @Override
@ -99,41 +72,50 @@ public class CommonServiceImpl implements CommonService {
new CpSetinfoId("COVER_INFO_IP", "0", "0")) new CpSetinfoId("COVER_INFO_IP", "0", "0"))
.orElseThrow(() -> new Exception("표지조회 연계작업이 되어있지 않은 서버입니다.")); .orElseThrow(() -> new Exception("표지조회 연계작업이 되어있지 않은 서버입니다."));
return webClientCall.CoverInfoCall(cpSetinfo, carNo); return webClientCallService.CoverInfoCall(cpSetinfo, carNo);
} }
/** 상태 업데이트 */
@Override
public void updateState(String mmCode, String state, Map<String, Object> req) {
//Enum으로 변환
MmStateEnum stateEnum = MmStateEnum.fromCode(state);
switch(stateEnum) {
case VEHICLE_CHECKED:
updateStateService.updateCarInfoFromCpMain(mmCode, dtoConverter.toStrictDto(req, WebClientCallDto.CarInfoResponse.CarInfoIfBody.class));
break;
case DESTRUCTION_DOC:
break;
case GUIDANCE:
break;
case GUIDANCE_PROCESSED:
break;
case PRE_NOTICE:
break;
case IMPOSITION_CANCEL:
break;
case DEMAND:
break;
case DESTRUCTION_DOC_DELETE:
break;
case STATEMENT_DELETE:
break;
case DELETED:
break;
}
}
public void StateChangeHistSaveToMainHist(String mmState, String mmCode) {
Optional<CpMainhist> prevOpt = cpMainhistRepository.findTopByMhMmcodeOrderByMhIndtDesc(mmCode);
CpMainhist prevCpMainHist = prevOpt.orElse(null);
String mhStateOld = null;
String mhStateOldDt = null;
if (prevCpMainHist != null) {
mhStateOld = prevCpMainHist.getMhStateNew();
mhStateOldDt = prevCpMainHist.getMhIndt();
}
CpMainhist cpMainhist = CpMainhist.builder()
.mhMmcode(mmCode)
.mhStateOld(mhStateOld)
.mhStateOldDt(mhStateOldDt)
.mhStateNew(mmState)
.mhIndt(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")))
/** todo : 세션에 있는 inuser 세팅*/
// .mhInuser()
.build();
cpMainhistRepository.save(cpMainhist);
}
} }

@ -0,0 +1,95 @@
package go.kr.project.biz.common.service.impl;
import go.kr.project.biz.common.dto.WebClientCallDto;
import go.kr.project.biz.common.repository.CommonQueryDslRepository;
import go.kr.project.domain.entity.CpMainhist;
import go.kr.project.domain.entity.CpOwner;
import go.kr.project.domain.repo.cp.CpMainhistRepository;
import go.kr.project.domain.repo.cp.CpOwnerRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Optional;
@Service
@RequiredArgsConstructor
@Slf4j
public class UpdateStateService {
private final CommonQueryDslRepository commonQueryDslRepository;
private final CpOwnerRepository cpOwnerRepository;
private final CpMainhistRepository cpMainhistRepository;
@Transactional
public void updateCarInfoFromCpMain(String mmCode, WebClientCallDto.CarInfoResponse.CarInfoIfBody carInfoIfBody) {
long maxOmCode = Long.parseLong(commonQueryDslRepository.findMaxOmCode());
// owner 인서트
CpOwner cpOwner = CpOwner.builder()
.omCode(String.valueOf(maxOmCode + 1))
// .omSggcode()
.omName(carInfoIfBody.getMberNm())
.omNo1(carInfoIfBody.getMberSeNo().substring(0,6))
.omJno(carInfoIfBody.getMberSeNo())
.omNOGb(carInfoIfBody.getMberSeCode())
.omJuso(carInfoIfBody.getUsgsrhldAdresFull())
.omBunji(carInfoIfBody.getOwnerLnbr())
.omZip(carInfoIfBody.getUseStrnghldBuldMainNo())
.omDoroCode(carInfoIfBody.getOwnerRoadNmCode())
.omBldPosition(carInfoIfBody.getUsgsrhldUndgrndBuldSeCode())
.omBldNo1(carInfoIfBody.getUseStrnghldBuldMainNo())
.omBldNo2(carInfoIfBody.getUseStrnghldBuldSubNo())
// .omBldAdmno()
.omIngb(carInfoIfBody.getErsrRegistSeCode())
.omIndt(carInfoIfBody.getTransrRegistDe())
.build();
cpOwnerRepository.save(cpOwner);
// main 업데이트
commonQueryDslRepository.updateCarinfoFromCpMain(mmCode, cpOwner, carInfoIfBody);
// main hist 인서트
StateChangeHistSaveToMainHist("21", mmCode);
}
public void StateChangeHistSaveToMainHist(String mmState, String mmCode) {
Optional<CpMainhist> prevOpt = cpMainhistRepository.findTopByMhMmcodeOrderByMhIndtDesc(mmCode);
CpMainhist prevCpMainHist = prevOpt.orElse(null);
String mhStateOld = null;
String mhStateOldDt = null;
if (prevCpMainHist != null) {
mhStateOld = prevCpMainHist.getMhStateNew();
mhStateOldDt = prevCpMainHist.getMhIndt();
}
CpMainhist cpMainhist = CpMainhist.builder()
.mhMmcode(mmCode)
.mhStateOld(mhStateOld)
.mhStateOldDt(mhStateOldDt)
.mhStateNew(mmState)
.mhIndt(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")))
/** todo : 세션에 있는 inuser 세팅*/
// .mhInuser()
.build();
cpMainhistRepository.save(cpMainhist);
}
}

@ -10,14 +10,11 @@ import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.Optional;
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class WebClientCall { public class WebClientCallService {
private final Environment env; private final Environment env;
private final WebClient webClient; private final WebClient webClient;

@ -63,10 +63,6 @@ public class MinwonInitController {
return ApiResponseUtil.successWithGrid(result, dto); return ApiResponseUtil.successWithGrid(result, dto);
} }
@PostMapping("/postman/test")
public ResponseEntity<?> test(@RequestBody MinwonInitDto.Request.Test test) {
return ResponseEntity.ok(minwonInitService.insertSometing(test));
}
} }

@ -74,14 +74,7 @@ public class TotalInfoController {
} }
// @PostMapping("/total/info/{mmCode}/{state}/state.ajax")
// public ResponseEntity<?> updateMinwonState(@PathVariable String mmCode, @PathVariable String state) {
//
// totalInfoService.updateState(mmCode, state);
//
// return ApiResponseUtil.success("수정되었습니다.");
//
// }
} }

@ -324,12 +324,9 @@
<div class="btn-align"> <div class="btn-align">
<div class="align-left"> <div class="align-left">
<button type="button" class="btn btn-light" name="changeSt" id="non-target" value="81">미부과처리</button> <button type="button" class="btn btn-light" name="changeSt" id="non-target" value="81">미부과처리</button>
<button type="button" class="btn btn-light" name="changeSt" id="guide" value="">계도처리</button> <button type="button" class="btn btn-light" name="changeSt" id="guidance" value="">계도처리</button>
<button type="button" class="btn btn-light" name="changeSt" id="return" value="">회수처리</button> <button type="button" class="btn btn-light" name="changeSt" id="return" value="">회수처리</button>
<button type="button" class="btn btn-light" name="changeSt" id="copy" value="">자료복사</button> <button type="button" class="btn btn-light" name="changeSt" id="copy" value="">자료복사</button>
<button type="button" class="btn btn-light" id="delay">처리보류</button>
<button type="button" class="btn btn-light" id="init">되돌리기</button>
<button type="button" class="btn btn-light" id="lavyTarget">되돌리기</button>
</div> </div>
<div class="align-right"> <div class="align-right">
<button type="button" class="btn btn-light" id="save" value="21">저장</button> <button type="button" class="btn btn-light" id="save" value="21">저장</button>
@ -349,6 +346,7 @@
<jsp:include page="/WEB-INF/views/biz/totalInfo/totalInfo_photo_dialog.jsp" /> <jsp:include page="/WEB-INF/views/biz/totalInfo/totalInfo_photo_dialog.jsp" />
<jsp:include page="/WEB-INF/views/biz/dialog/destruction_doc_dialog.jsp" /> <jsp:include page="/WEB-INF/views/biz/dialog/destruction_doc_dialog.jsp" />
<jsp:include page="/WEB-INF/views/biz/dialog/guidance_dialog.jsp" />
</div> </div>
<!-- /Main body --> <!-- /Main body -->
@ -452,7 +450,9 @@
response.cpViolation.forEach((item) => { response.cpViolation.forEach((item) => {
$("#cpViolation").append('<option value="' +item.vlCode+'">' +item.vlId+ '</option>') $("#cpViolation").append('<option value="' +item.vlCode+'">' +item.vlId+ '</option>')
}) })
response.cpInstructAnswer.forEach((item) => {
$("#cpInstructAnswer").append('<option value="' +item.iaCode+'">' +item.iaId+ '</option>')
})
INIT_POP_API.search(); INIT_POP_API.search();
@ -564,7 +564,7 @@
console.log("!!!!!!!!!!!!!",CAR_INFO) console.log("!!!!!!!!!!!!!",CAR_INFO)
$.ajax({ $.ajax({
url: `/common/car/info/\${cursor}/update.ajax`, url: `/common/update/\${cursor}/21/update.ajax`,
type: "PUT", type: "PUT",
data: JSON.stringify(CAR_INFO[0]), data: JSON.stringify(CAR_INFO[0]),
contentType: "application/json", contentType: "application/json",
@ -631,10 +631,15 @@
$("#photoDialog").dialog("open"); $("#photoDialog").dialog("open");
}); });
/** 미부과처리 버튼 클릭 - 다이얼로그 오픈 */
$("#non-target").on("click", () => { $("#non-target").on("click", () => {
$("#destruction_doc_dialog").dialog("open"); $("#destruction_doc_dialog").dialog("open");
}) })
/** 계도처리 버튼 클릭 - 다이얼로그 오픈 */
$("#guidance").on("click", () => {
$("#guidance_dialog").dialog("open");
})
@ -653,7 +658,6 @@
return false; return false;
} }
// 오너 테이블 인서트 // 오너 테이블 인서트

@ -11,44 +11,43 @@
<div class="main_body"> <div class="main_body">
<div id="tabs" class="main_body"> <div id="tabs" class="main_body">
<ul> <div class="detail-card">
<li><a href="#tabs-a">위반정보</a></li> <div class="card-header">
<li><a href="#tabs-b">의견진술</a></li> <div class="title">개별 총정보</div>
<li><a href="#tabs-c">세부내역</a></li> <div class="actions">
<li><a href="#tabs-d">부과이후</a></li> <span class="pill">Double Click 민원원본보기</span>
<li><a href="#tabs-e">민원내역</a></li> <button type="button" class="close-btn">닫기 Esc</button>
</ul>
<div id="tabs-a">
<div class="detail-card">
<div class="card-header">
<div class="title">개별 총정보</div>
<div class="actions">
<span class="pill">Double Click 민원원본보기</span>
<button type="button" class="close-btn">닫기 Esc</button>
</div>
</div> </div>
</div>
<!-- 상단 네비/페이지 인디케이터 --> <ul>
<div class="card-toolbar"> <li><a href="#tabs-a">위반정보</a></li>
<%-- 부모창에서 받아오는 리스트 배열 --%> <li><a href="#tabs-b">의견진술</a></li>
<input type="hidden" id="mmCodes" /> <li><a href="#tabs-c">세부내역</a></li>
<%-- 부모창에서 받아오는 리스크 커서 --%> <li><a href="#tabs-d">부과이후</a></li>
<input type="hidden" id="cursor" /> <li><a href="#tabs-e">민원내역</a></li>
<%-- 개별총정보 상태값 --%> </ul>
<input type="hidden" id="infoState" value="init" />
<!-- 상단 네비/페이지 인디케이터 -->
<div class="page-indicator"> <div class="card-toolbar">
<span id="cursorCnt">0</span>of <span id="total">0</span> <%-- 부모창에서 받아오는 리스트 배열 --%>
</div> <input type="hidden" id="mmCodes"/>
<div class="nav-group"> <%-- 부모창에서 받아오는 리스크 커서 --%>
<button type="button" class="nav-btn" name="navigate" data-act="first" id="first">◀◀</button> <input type="hidden" id="cursor"/>
<button type="button" class="nav-btn" name="navigate" data-act="prev">◀</button> <%-- 개별총정보 상태값 --%>
<button type="button" class="nav-btn" name="navigate" data-act="next">▶</button> <input type="hidden" id="infoState" value="init"/>
<button type="button" class="nav-btn" name="navigate" data-act="last">▶▶</button>
</div> <div class="page-indicator">
<span id="cursorCnt">0</span>of <span id="total">0</span>
</div> </div>
<div class="nav-group">
<button type="button" class="nav-btn" name="navigate" data-act="first" id="first">◀◀</button>
<button type="button" class="nav-btn" name="navigate" data-act="prev">◀</button>
<button type="button" class="nav-btn" name="navigate" data-act="next">▶</button>
<button type="button" class="nav-btn" name="navigate" data-act="last">▶▶</button>
</div>
</div>
<div class="page-no-padding" id="tabs-a">
<div class="detail-body"> <div class="detail-body">
<!-- 좌측 정보 --> <!-- 좌측 정보 -->
<div class="left"> <div class="left">
@ -62,13 +61,15 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">등록구분</div> <div class="lbl">등록구분</div>
<div class="fld"> <div class="fld">
<input type="text" name="cpMain" data-field="mmDlgb" id="mmDlgb" value="" readonly> <input type="text" name="cpMain" data-field="mmDlgb" id="mmDlgb" value=""
readonly>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group">
<div class="lbl">자료출처</div> <div class="lbl">자료출처</div>
<div class="fld"> <div class="fld">
<input type="text" name="cpMain" data-field="mmIngb" id="mmIngb" value="" readonly> <input type="text" name="cpMain" data-field="mmIngb" id="mmIngb" value=""
readonly>
</div> </div>
</div> </div>
</div> </div>
@ -78,13 +79,15 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">위반일시</div> <div class="lbl">위반일시</div>
<div class="fld"> <div class="fld">
<input type="text" name="cpMain" data-field="mmDate" id="mmDate" value="" readonly> <input type="text" name="cpMain" data-field="mmDate" id="mmDate" value=""
readonly>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group">
<div class="lbl">위반내용</div> <div class="lbl">위반내용</div>
<div class="fld"> <div class="fld">
<input type="text" name="cpMain" data-field="mmLawgb" id="mmLawgb" value="" readonly> <input type="text" name="cpMain" data-field="mmLawgb" id="mmLawgb" value=""
readonly>
</div> </div>
</div> </div>
</div> </div>
@ -94,13 +97,15 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">신고자</div> <div class="lbl">신고자</div>
<div class="fld"> <div class="fld">
<input type="text" name="cpMain" data-field="mmSgnm" id="mmSgnm" value="" readonly> <input type="text" name="cpMain" data-field="mmSgnm" id="mmSgnm" value=""
readonly>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group">
<div class="lbl">연락처</div> <div class="lbl">연락처</div>
<div class="fld"> <div class="fld">
<input type="text" name="cpAnswer" data-field="asCell" id="asCell" value="" readonly> <input type="text" name="cpAnswer" data-field="asCell" id="asCell" value=""
readonly>
</div> </div>
</div> </div>
</div> </div>
@ -110,7 +115,8 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">담당자</div> <div class="lbl">담당자</div>
<div class="fld"> <div class="fld">
<input type="text" name="cpMain" data-field="mmSgtel" id="mmSgtel" value="" readonly> <input type="text" name="cpMain" data-field="mmSgtel" id="mmSgtel" value=""
readonly>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group">
@ -126,7 +132,8 @@
<div class="field-group full"> <div class="field-group full">
<div class="lbl">신고내용</div> <div class="lbl">신고내용</div>
<div class="fld"> <div class="fld">
<textarea name="cpMain" data-field="mmSgcont" id="mmSgcont" value="" readonly></textarea> <textarea name="cpMain" data-field="mmSgcont" id="mmSgcont" value=""
readonly></textarea>
</div> </div>
</div> </div>
</div> </div>
@ -142,7 +149,8 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">접수번호</div> <div class="lbl">접수번호</div>
<div class="fld"> <div class="fld">
<input type="text" name="cpAnswer" data-field="asJsno" id="asJsno" value="" readonly> <input type="text" name="cpAnswer" data-field="asJsno" id="asJsno" value=""
readonly>
</div> </div>
</div> </div>
</div> </div>
@ -152,13 +160,15 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">접수일자</div> <div class="lbl">접수일자</div>
<div class="fld"> <div class="fld">
<input type="text" name="cpAnswer" data-field="asJsdate" id="asJsdate" value="" readonly> <input type="text" name="cpAnswer" data-field="asJsdate" id="asJsdate" value=""
readonly>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group">
<div class="lbl">목록번호</div> <div class="lbl">목록번호</div>
<div class="fld"> <div class="fld">
<input type="text" name="cpAnswer" data-field="asBbsNo" id="asBbsNo" value="" readonly> <input type="text" name="cpAnswer" data-field="asBbsNo" id="asBbsNo" value=""
readonly>
</div> </div>
</div> </div>
</div> </div>
@ -179,13 +189,15 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">사진등록금액</div> <div class="lbl">사진등록금액</div>
<div class="fld"> <div class="fld">
<input type="text" name="cpMain" data-field="mmKeum1" id="mmKeum1" value="" readonly> <input type="text" name="cpMain" data-field="mmKeum1" id="mmKeum1" value=""
readonly>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group">
<div class="lbl">부과금액</div> <div class="lbl">부과금액</div>
<div class="fld"> <div class="fld">
<input type="text" name="cpMain" data-field="mmKeum2" id="mmKeum2" value="" readonly> <input type="text" name="cpMain" data-field="mmKeum2" id="mmKeum2" value=""
readonly>
</div> </div>
</div> </div>
</div> </div>
@ -195,7 +207,7 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">감액금액</div> <div class="lbl">감액금액</div>
<div class="fld"> <div class="fld">
<input type="text" data-field="" id="" value="" readonly> <input type="text" data-field="mmMinusKeum" id="mmMinusKeum" value="" readonly>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group">
@ -214,14 +226,21 @@
<input class="hl" data-field="" type="text" value="" readonly> <input class="hl" data-field="" type="text" value="" readonly>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group empty"></div>
</div>
<div class="form-row">
<div class="field-group full">
<div class="lbl">특기사항</div> <div class="lbl">특기사항</div>
<div class="fld"> <div class="fld">
<button type="button" class="btn btn-light" id="btnSpecial">특기사항 보기</button> <textarea name="cpMain" data-field="mmSgcont" id="mmSgcont" value=""
readonly></textarea>
<%-- <button type="button" class="btn btn-light" id="btnSpecial">특기사항 보기</button>--%>
</div> </div>
</div> </div>
</div> </div>
<!-- 구분선 --> <!-- 구분선 -->
<div class="bar"></div> <div class="bar"></div>
@ -230,13 +249,15 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">처리상태일시</div> <div class="lbl">처리상태일시</div>
<div class="fld"> <div class="fld">
<input type="text" name="cpAnswer" data-field="asStateDt" id="asStateDt" value="" readonly> <input type="text" name="cpAnswer" data-field="asStateDt" id="asStateDt"
value="" readonly>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group">
<div class="lbl">처리상태</div> <div class="lbl">처리상태</div>
<div class="fld"> <div class="fld">
<input type="text" class="hl" name="cpAnswer" data-field="asState" id="asState" value="" readonly> <input type="text" class="hl" name="cpAnswer" data-field="asState" id="asState"
value="" readonly>
</div> </div>
</div> </div>
</div> </div>
@ -246,13 +267,13 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">차량명</div> <div class="lbl">차량명</div>
<div class="fld"> <div class="fld">
<input type="text" data-field="" value="" readonly> <input type="text" data-field="mmCarname" id="mmCarname" value="" readonly>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group">
<div class="lbl">차량색상</div> <div class="lbl">차량색상</div>
<div class="fld"> <div class="fld">
<input type="text" data-field="" value="" readonly> <input type="text" data-field="mmCarcolor" id="mmCarcolor" value="" readonly>
</div> </div>
</div> </div>
</div> </div>
@ -262,7 +283,7 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">연료구분</div> <div class="lbl">연료구분</div>
<div class="fld"> <div class="fld">
<input type="text" data-field="" value="" readonly> <input type="text" data-field="" id="" value="" readonly>
</div> </div>
</div> </div>
<div class="field-group empty"></div> <div class="field-group empty"></div>
@ -279,13 +300,13 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">소유주</div> <div class="lbl">소유주</div>
<div class="fld"> <div class="fld">
<input type="text" data-field="" value="" readonly> <input type="text" data-field="omName" id="omName" value="" readonly>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group">
<div class="lbl">등록구분</div> <div class="lbl">등록구분</div>
<div class="fld"> <div class="fld">
<input type="text" data-field="" value="" readonly> <input type="text" data-field="omCode" id="omCode" value="" readonly>
</div> </div>
</div> </div>
</div> </div>
@ -295,13 +316,13 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">주민번호</div> <div class="lbl">주민번호</div>
<div class="fld"> <div class="fld">
<input type="text" data-field="" value="" readonly> <input type="text" data-field="omJno" id="omJno" value="" readonly>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group">
<div class="lbl">우편번호</div> <div class="lbl">우편번호</div>
<div class="fld"> <div class="fld">
<input type="text" data-field="" value="" readonly> <input type="text" data-field="omZip" id="omZip" value="" readonly>
</div> </div>
</div> </div>
</div> </div>
@ -311,7 +332,7 @@
<div class="field-group full"> <div class="field-group full">
<div class="lbl">주소</div> <div class="lbl">주소</div>
<div class="fld"> <div class="fld">
<input type="text" data-field="" value="" readonly> <input type="text" data-field="omJuso" id="omJuso" value="" readonly>
</div> </div>
</div> </div>
</div> </div>
@ -321,13 +342,13 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">번지</div> <div class="lbl">번지</div>
<div class="fld"> <div class="fld">
<input type="text" data-field="" value="" readonly> <input type="text" data-field="omBunji" id="omBunji" value="" readonly>
</div> </div>
</div> </div>
<div class="field-group"> <div class="field-group">
<div class="lbl">차대번호</div> <div class="lbl">차대번호</div>
<div class="fld"> <div class="fld">
<input type="text" data-field="" value="" readonly> <input type="text" data-field="mmVhmno" id="mmVhmno" value="" readonly>
</div> </div>
</div> </div>
</div> </div>
@ -337,7 +358,7 @@
<div class="field-group"> <div class="field-group">
<div class="lbl">도로코드</div> <div class="lbl">도로코드</div>
<div class="fld"> <div class="fld">
<input type="text" data-field="" value="" readonly> <input type="text" data-field="omDoroCode" id="omDoroCode" value="" readonly>
</div> </div>
</div> </div>
<div class="field-group empty"></div> <div class="field-group empty"></div>
@ -358,7 +379,8 @@
</div> </div>
<div class="preview" id="photoPreviewBox"> <div class="preview" id="photoPreviewBox">
<img id="photoPreview" src="${pageContext.request.contextPath}/static/img/sample-1.jpg" alt="미리보기"> <img id="photoPreview" src="${pageContext.request.contextPath}/static/img/sample-1.jpg"
alt="미리보기">
</div> </div>
</div> </div>
@ -384,36 +406,29 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<div id="photoEditSection" style="display:none;"> <div id="photoEditSection" style="display:none;">
<jsp:include page="/WEB-INF/views/biz/totalInfo/totalInfo_photo_dialog.jsp" /> <jsp:include page="/WEB-INF/views/biz/totalInfo/totalInfo_photo_dialog.jsp"/>
</div> </div>
<div id="tabs-b"> <div id="tabs-b">
의견진술 의견진술
</div> </div>
<div id="tabs-c"> <div id="tabs-c">
세부내역 세부내역
</div> </div>
<div id="tabs-d"> <div id="tabs-d">
부과이후 부과이후
</div> </div>
<div id="tabs-e"> <div id="tabs-e">
민원내역 민원내역
</div>
</div> </div>
</div> </div>
</div> </div>
<!-- /Main body -->
<%--<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>--%>
<%--<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js"></script>--%>
<script type="text/javascript"> <script type="text/javascript">
// const { cursor, mmCodes } = JSON.parse(localStorage.getItem("TOTAL_INFO_STATE")); // const { cursor, mmCodes } = JSON.parse(localStorage.getItem("TOTAL_INFO_STATE"));
//해당 객체는 팝업으로 인한 브라우저 전역선언이다.
//일반적으로 함수를 선언할땐 그냥 fnBiz로 선언하면 된다.
//window 전역을 그냥 복사하면 덮어씌워져서 난리남.
//sample.jsp 형태로 하면됨
window.TOTAL_INFO_POPUP_API = { window.TOTAL_INFO_POPUP_API = {
search: () => { search: () => {
console.log("Total Info Search!!!!") console.log("Total Info Search!!!!")
@ -421,8 +436,6 @@
const { cursor, mmCodes } = JSON.parse(localStorage.getItem("TOTAL_INFO_STATE")); const { cursor, mmCodes } = JSON.parse(localStorage.getItem("TOTAL_INFO_STATE"));
$.ajax({ $.ajax({
// PathVariable 형태로 url를 동적으로 쓰는방식이다.
// 해당 방식 이외에 그냥 쿼리스트링으로 넘기는 방법도 있다.
url: "/total/info/" + cursor + "/info.ajax", url: "/total/info/" + cursor + "/info.ajax",
type: "GET", type: "GET",
dataType: 'json', dataType: 'json',
@ -448,6 +461,17 @@
$("#asJsno").val(response.data.cpAnswer.asJsno); $("#asJsno").val(response.data.cpAnswer.asJsno);
$("#asJsdate").val(response.data.cpAnswer.asJsdate); $("#asJsdate").val(response.data.cpAnswer.asJsdate);
$("#mmCarname").val(response.data.cpMain.mmCarname);
$("#mmCarcolor").val(response.data.cpMain.mmCarcolor);
$("#omName").val(response.data.cpOwner.omName);
$("#omCode").val(response.data.cpOwner.omCode);
$("#omJno").val(response.data.cpOwner.omJno);
$("#omZip").val(response.data.cpOwner.omZip);
$("#omJuso").val(response.data.cpOwner.omJuso);
$("#omBunji").val(response.data.cpOwner.omBunji);
$("#mmVhmno").val(response.data.cpMain.mmVhmno);
$("#omDoroCode").val(response.data.cpOwner.omDoroCode);
$("#mmCode").text(response.data.cpMain.mmCode.substring(5).replace(/^(\d{4})(.*)$/, '$1-$2')) $("#mmCode").text(response.data.cpMain.mmCode.substring(5).replace(/^(\d{4})(.*)$/, '$1-$2'))

@ -1,5 +1,10 @@
/** totalInfo Start */ /** totalInfo Start */
/* 탭 패딩 제거 */
.page-no-padding {
padding: 0 !important;
}
/* 팝업 기본 스타일 */ /* 팝업 기본 스타일 */
.popup_wrap { .popup_wrap {
position: fixed; position: fixed;

Loading…
Cancel
Save