수정이력 추가중

master
서예린 2023-01-12 23:09:48 +09:00
parent 72b9da084d
commit d7c5281d2b
6 changed files with 346 additions and 8 deletions

View File

@ -5,6 +5,7 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus;
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService; import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.asfCov.AsfCov; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.asfCov.AsfCov;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatusVersion;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.fishingBoat.FishingBoat; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.fishingBoat.FishingBoat;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResult; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResult;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.AsfCovService; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.AsfCovService;
@ -72,6 +73,25 @@ public class AsfCovController {
return mav; return mav;
} }
@GetMapping("/asfCovHistoryViewModal")
public ModelAndView asfCovHistoryViewModal(@AuthenticationPrincipal UserInfo loginUser, AsfCov asfCov){
ModelAndView mav = new ModelAndView("faStatistics/asfCov/asfCovHistoryViewModal");
asfCov = asfCovService.selectAsfCov(asfCov.getAsfCovKey());
mav.addObject("userSeq",loginUser.getUserSeq());
mav.addObject("asfCovList", asfCovService.selectAsfCovList(asfCov));
mav.addObject("asfCov", asfCov);
return mav;
}
@GetMapping("/asfCovHistoryDetail")
public ModelAndView asfCovHistoryDetail(@AuthenticationPrincipal UserInfo loginUser, AsfCov asfCov){
ModelAndView mav = new ModelAndView("faStatistics/asfCov/asfCovHistoryDetail");
asfCov = asfCovService.selectAsfCov(asfCov.getAsfCovKey());
mav.addObject("userSeq",loginUser.getUserSeq());
mav.addObject("asfCov", asfCov);
return mav;
}
@PostMapping("/saveContent") @PostMapping("/saveContent")
public Integer saveContent (AsfCov asfCov){ public Integer saveContent (AsfCov asfCov){
return asfCovService.saveContent(asfCov); return asfCovService.saveContent(asfCov);

View File

@ -3,6 +3,7 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.asfCov.AsfCov; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.asfCov.AsfCov;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatusVersion;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List; import java.util.List;
@ -11,7 +12,8 @@ import java.util.Optional;
public interface AsfCovRepository extends JpaRepository<AsfCov, Integer> { public interface AsfCovRepository extends JpaRepository<AsfCov, Integer> {
Optional<AsfCov> findByCdsKey(Integer cdsKey); Optional<AsfCov> findByCdsKey(Integer cdsKey);
Optional<AsfCov> findByAsfCovKey(Integer asfCovKey); Optional<AsfCov> findByAsfCovKey(Integer asfCovKey);
// void deleteByAsfCov(Integer asfCovKey); // void deleteByAsfCov(Integer asfCovKey);
AsfCov findByVersionNoAndAsfCovKey(Integer versionNo, Integer asfCovKey);
Optional<AsfCov> findTop1ByAsfCovKeyOrderByVersionNoDesc(Integer asfCovKey); Optional<AsfCov> findTop1ByAsfCovKeyOrderByVersionNoDesc(Integer asfCovKey);
Optional<AsfCov> findTop1ByOrderByAsfCovKeyDesc(); Optional<AsfCov> findTop1ByOrderByAsfCovKeyDesc();

View File

@ -4,6 +4,7 @@ import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.AsfCovMapper; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.AsfCovMapper;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.asfCov.AsfCov; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.asfCov.AsfCov;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatusVersion;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.fishingBoat.FishingBoat; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.fishingBoat.FishingBoat;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.AsfCovRepository; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.AsfCovRepository;
@ -53,6 +54,14 @@ public class AsfCovService extends BaseService {
return asfCov; return asfCov;
} }
// public List<CrackdownStatusVersion> selectCrackdownStatusVersionList(Integer asfCovKey) {
// return asfCovRepository.findByAsfCovKey(asfCovKey);
// }
//
// public CrackdownStatusVersion selectCrackdownStatusVersion(Integer versionNo, Integer asfCovKey) {
// return asfCovRepository.findByVersionNoAndAsfCovKey(versionNo, asfCovKey);
// }
@Transactional @Transactional
public Integer saveContent(AsfCov asfCov) { public Integer saveContent(AsfCov asfCov) {
if(asfCov.getAsfCovKey()==null){ if(asfCov.getAsfCovKey()==null){

View File

@ -173,13 +173,6 @@ function contentCheck(formId){
return flag; return flag;
} }
function commentFormReset(){
const commentForm = $("#commentForm");
commentForm[0].reset();
$("#childFormRemoveBtn").hide();
$("#parentComment").val('');
$("#commentFormHome").append(commentForm)
}
$(document).on('click', '#asfCovDownExcel', function (){ $(document).on('click', '#asfCovDownExcel', function (){
exportExcel('ASF 및 코로나19 관련 조치현황', 'asfCovTable'); exportExcel('ASF 및 코로나19 관련 조치현황', 'asfCovTable');
@ -230,6 +223,50 @@ $(document).on('change', '#searchFormPolice', function (){
} }
}) })
$(document).on('click', '.version-tr', function (){
$(this).find('input[name="versionNo"]').prop('checked', true);
const versionNo = $(this).find('input[name="versionNo"]').val();
const asfCovKey = $('#asfCovEditForm').find('input[name="cdsKey"]').val();
getHistoryDetail(versionNo, asfCovKey);
});
function getHistoryDetail(versionNo, asfCovKey){
$.ajax({
url: '/faStatistics/asfCovHistoryDetail',
data: {
versionNo : versionNo,
asfCovKe : asfCovKey
},
type: 'GET',
dataType:"html",
success: function(html){
$("#historyDetailDiv").empty().append(html);
},
error:function(e){
ajaxErrorAction(e);
}
});
}
$(document).on('click', '#history-tab', function (){
getHistoryViewModal($('#asfCovEditForm').find('input[name="asfCovKey"]').val());
});
function getHistoryViewModal(asfCovKey){
$.ajax({
url: '/faStatistics/asfCovHistoryViewModal',
data: {asfCovKey: asfCovKey},
type: 'GET',
dataType:"html",
success: function(html){
$("#asfCovViewModalContent").empty().append(html)
$("#asfCovViewModal").modal('show');
},
error:function(e){
ajaxErrorAction(e);
}
});
}

View File

@ -0,0 +1,69 @@
<!DOCTYPE html>
<html lang="en">
<div class="row mb-1">
나포정보
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">나포일시</label>
<div class="col-4">
<input class="form-control form-control-sm" name="napoDt" id="napoDt" th:value="${#temporals.format(asfCov.napoDt, 'yyyy-MM-dd HH:mm')}" readonly>
</div>
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">침범유형</label>
<div class="col-4">
<select class="form-select form-select-sm" name="invasionType" disabled>
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('IST')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq asfCov.invasionType}"></option>
</th:block>
</select>
</div>
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">사건담당 기관</label>
<div class="col-4">
<select class="form-select form-select-sm" name="caseAgency" disabled>
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('ATA')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq asfCov.caseAgency}"></option>
</th:block>
</select>
</div>
<label class="col-sm-2 col-form-label col-form-label-sm text-center">단속<br>경찰서</label>
<div class="col-4">
<select class="form-select form-select-sm" name="crackdownPolice" id="crackdownPolice" disabled>
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('CPO')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq asfCov.crackdownPolice}"></option>
</th:block>
<option value="etc">직접입력</option>
</select>
</div>
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">단속함정</label>
<div class="col-4">
<select class="form-select form-select-sm" name="crackdownBoat" id="crackdownBoat" disabled>
<option value="">선택</option>
<th:block th:each="num : ${#numbers.sequence(1,#lists.size(session.commonCode.get('CPO')))}">
<th:block th:if="${'CPO'+num == asfCov.crackdownPolice}" th:each="commonCode:${session.commonCode.get('CPO'+num)}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${asfCov.crackdownBoat eq commonCode.itemCd}"></option>
</th:block>
</th:block>
</select>
</div>
</div>
<!--<div class="row mb-1">-->
<!-- <label class="col-sm-2 col-form-label col-form-label-sm text-center">나포일시</label>-->
<!-- <div class="col-4">-->
<!-- <input class="form-control form-control-sm" name="fieldIvsgtNapoDt" id="fieldIvsgtNapoDt" th:value="${#temporals.format(asfCovList.fieldIvsgtNapoDt, 'yyyy-MM-dd HH:mm')}" readonly>-->
<!-- </div>-->
<!--</div>-->
</html>

View File

@ -0,0 +1,201 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header bg-dark">
<h5 class="modal-title text-white" id="processResultEditModalLabel">ASF 및 코로나19 관련 조치현황</h5>
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<!-- 탭 메뉴 -->
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link crackdownStatusTab" id="crackdownStatus-tab" data-bs-toggle="tab"
data-bs-target="#crackdownStatus" type="button" role="tab" aria-controls="crackdownStatus" data-crackdownStatus-type="crackdownStatus"
aria-selected="true">상세</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link crackdownStatusTab active" id="history-tab" data-bs-toggle="tab"
data-bs-target="#history" type="button" role="tab" data-history-type="history"
aria-controls="history">수정이력</button>
</li>
</ul>
<!-- 내용 -->
<div class="tab-content" style="overflow-y: scroll">
<div class="tab-pane fade show active" id="history" role="tabpanel" aria-labelledby="history-tab">
<div class="modal-body" id="cdsEditBody">
<form action="#" method="post" id="cdsEditForm">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<input type="hidden" name="cdsKey" th:value="${asfCov.cdsKey}">
<th:block th:if="${!#lists.isEmpty(asfCov)}">
<div class="row justify-content-start">
<div class="col-3">
<table class="table table-sm table-hover table-bordered" id="crackdownStatusVersionTable">
<thead>
<tr>
<th></th>
<th>작성인</th>
<th>작성/수정일</th>
</tr>
</thead>
<tbody class="table-group-divider">
<th:block th:each="asfCov:${asfCovList}">
<tr class="version-tr">
<td>
<input type="radio" name="versionNo" th:value="${asfCov.versionNo}">
</td>
<td th:text="${asfCov.wrtUserNm}"></td>
<td th:text="${#temporals.format(asfCov.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
</tr>
</th:block>
</tbody>
</table>
</div>
<div class="col-9">
<div id="historyDetailDiv">
<div class="row mb-1">
나포정보
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">나포일시</label>
<div class="col-4">
<input class="form-control form-control-sm" name="napoDt" id="napoDt" readonly>
</div>
<label class="col-sm-2 col-form-label col-form-label-sm text-center">NLL</label>
<div class="col-4">
<input class="form-control form-control-sm" name="nll" id="nll" readonly>
</div>
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">침범유형</label>
<div class="col-4">
<input class="form-control form-control-sm" name="invasionType" id="invasionType" readonly>
</div>
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">위반장소</label>
<div class="col-6">
<input class="form-control form-control-sm" placeholder="위도" name="napoSeaPointLat" readonly>
<input class="form-control form-control-sm" placeholder="경도" name="napoSeaPointLon" readonly>
<input class="form-control form-control-sm" placeholder="상세내용" name="napoSeaPointDetail" readonly>
</div>
</div>
<div class="row mb-1">
특수공무집행방해
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">발생건수</label>
<div class="col-4">
<input type="number" min="0" class="form-control form-control-sm" name="obstrExspdCnt" readonly>
</div>
<label class="col-sm-2 col-form-label col-form-label-sm text-center">피해인원</label>
<div class="col-4">
<input type="number" min="0" class="form-control form-control-sm" name="personDamageCnt" readonly>
</div>
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">피해액</label>
<div class="col-4">
<input type="number" min="0" class="form-control form-control-sm" name="personDamageAmount" readonly>
</div>
<label class="col-sm-2 col-form-label col-form-label-sm text-center">상세내용</label>
<div class="col-4">
<input class="form-control form-control-sm" name="personDamageDetail" readonly>
</div>
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">발생건수</label>
<div class="col-4">
<input type="number" min="0" class="form-control form-control-sm" name="materialDamageCnt" readonly>
</div>
<label class="col-sm-2 col-form-label col-form-label-sm text-center">피해액</label>
<div class="col-4">
<input type="number" min="0" class="form-control form-control-sm" name="materialDamageAmount" readonly>
</div>
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">상세내용</label>
<div class="col-4">
<input class="form-control form-control-sm" name="materialDamageDetail" readonly>
</div>
</div>
<div class="row mb-1">
검거기관
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">사건담당 기관</label>
<div class="col-4">
<input class="form-control form-control-sm" name="caseAgency" readonly>
</div>
<label class="col-sm-2 col-form-label col-form-label-sm text-center">단속<br>경찰서</label>
<div class="col-4">
<input class="form-control form-control-sm" name="crackdownPolice" readonly>
</div>
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">단속함정</label>
<div class="col-4">
<input class="form-control form-control-sm" name="crackdownBoat" readonly>
</div>
<label class="col-sm-2 col-form-label col-form-label-sm text-center">MMSI.NO</label>
<div class="col-4">
<input class="form-control form-control-sm" name="mmsi" readonly>
</div>
</div>
<div class="row mb-1">
현장조사
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">나포일시</label>
<div class="col-4">
<input class="form-control form-control-sm" name="fieldIvsgtNapoDt" id="fieldIvsgtNapoDt" readonly>
</div>
<label class="col-sm-2 col-form-label col-form-label-sm text-center">석방일시</label>
<div class="col-4">
<input class="form-control form-control-sm" name="fieldIvsgtReleaseDt" id="fieldIvsgtReleaseDt" readonly>
</div>
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">소요시간</label>
<div class="col-4">
<input class="form-control form-control-sm" name="fieldIvsgtTimeTaken" readonly>
</div>
</div>
<div class="row mb-1">
압송
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">압송시작</label>
<div class="col-4">
<input class="form-control form-control-sm" name="pressurizedStartDt" id="pressurizedStartDt" readonly>
</div>
<label class="col-sm-2 col-form-label col-form-label-sm text-center">압송종료</label>
<div class="col-4">
<input class="form-control form-control-sm" name="pressurizedEndDt" id="pressurizedEndDt" readonly>
</div>
</div>
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">영장청구<br>소요시간</label>
<div class="col-4">
<input class="form-control form-control-sm" name="warrantReqTakeTime" readonly>
</div>
<label class="col-sm-2 col-form-label col-form-label-sm text-center">거리</label>
<div class="col-4">
<input class="form-control form-control-sm" name="distance" readonly>
</div>
</div>
</div>
</div>
</div>
</th:block>
<th:block th:if="${#lists.isEmpty(asfCovList)}">
<div>수정이력이 없습니다.</div>
</th:block>
</form>
</div>
</div>
</div>
<div class="modal-footer bg-light">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
</div>
</html>