Compare commits

..

No commits in common. "be8083a7248600a3f8bc38ea383777343e7a7b6a" and "d332a0a3a4aa001a3da6fb36b2986839815fbdcf" have entirely different histories.

9 changed files with 31 additions and 90 deletions

View File

@ -16,7 +16,6 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@ -28,20 +27,28 @@ public class FishingBoatController {
private final CodeMgtService codeMgtService; private final CodeMgtService codeMgtService;
@RequestMapping("/fishingBoat") @RequestMapping("/fishingBoat")
public ModelAndView fishingBoat(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatus crackdownStatus) { public ModelAndView fishingBoat(@AuthenticationPrincipal UserInfo loginUser, FishingBoat fishingBoat) {
ModelAndView mav = new ModelAndView("faStatistics/fishingBoat/fishingBoatMgt"); ModelAndView mav = new ModelAndView("faStatistics/fishingBoat/fishingBoatMgt");
//메뉴권한 확인 //메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/fishingBoat").get(0).getAccessAuth(); String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/fishingBoat").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth); mav.addObject("accessAuth", accessAuth);
crackdownStatus.setQueryInfo(); fishingBoat.setQueryInfo();
List<CrackdownStatus> crackdownStatusList = fishingBoatService.selectCrackdownStatusList(crackdownStatus); /*List<ProcessResult> processResultList = processResultService.selectProcessResultList(fishingBoat);
mav.addObject("crackdownStatusList", crackdownStatusList); for (ProcessResult pr:processResultList) {
crackdownStatus.setContentCnt(fishingBoatService.selectCrackdownStatusListCnt(crackdownStatus)); pr.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(pr.getCdsKey()));
crackdownStatus.setPaginationInfo(); pr.setFishingBoat(fishingBoatRepository.findByCdsKey(pr.getCdsKey()));
mav.addObject("searchParams", crackdownStatus); pr.setViolationList(violationRepository.findByFbKey(pr.getFishingBoat().getFbKey()));
}
mav.addObject("processResultList", processResultList);
fishingBoat.setContentCnt(processResultService.selectProcessResultListCnt(fishingBoat));
*/
fishingBoat.setPaginationInfo();
mav.addObject("searchParams", fishingBoat);
return mav; return mav;
} }

View File

@ -3,8 +3,6 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.fishingBoat.ViolationVersion; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.fishingBoat.ViolationVersion;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface ViolationVersionRepository extends JpaRepository<ViolationVersion, ViolationVersion.ViolationVersionId> { public interface ViolationVersionRepository extends JpaRepository<ViolationVersion, ViolationVersion.ViolationVersionId> {
Optional<ViolationVersion> findTop1ByFbKeyOrderByVersionNoDesc(Integer fbKey);
} }

View File

@ -8,18 +8,15 @@ import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.C
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.fishingBoat.FishingBoatVersion; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.fishingBoat.FishingBoatVersion;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.fishingBoat.Violation; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.fishingBoat.Violation;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.fishingBoat.ViolationVersion;
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.model.processResult.ProcessResultVersion;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.SailorVersion;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*;
import com.fasterxml.jackson.databind.util.BeanUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Service @Service
@ -34,16 +31,8 @@ public class FishingBoatService extends BaseService {
private final ViolationRepository violationRepository; private final ViolationRepository violationRepository;
private final ViolationVersionRepository violationVersionRepository; private final ViolationVersionRepository violationVersionRepository;
private final ProcessResultRepository processResultRepository; private final ProcessResultRepository processResultRepository;
private final ProcessResultVersionRepository processResultVersionRepository;
private final SailorRepository sailorRepository; private final SailorRepository sailorRepository;
private final SailorVersionRepository sailorVersionRepository;
public List<CrackdownStatus> selectCrackdownStatusList(CrackdownStatus crackdownStatus){
return crackdownStatusMapper.selectCrackdownStatusList(crackdownStatus);
}
public Integer selectCrackdownStatusListCnt(CrackdownStatus crackdownStatus){
return crackdownStatusMapper.selectCrackdownStatusListCnt(crackdownStatus);
}
public CrackdownStatus selectCrackdownStatus(Integer cdsKey) { public CrackdownStatus selectCrackdownStatus(Integer cdsKey) {
CrackdownStatus crackdownStatus = crackdownStatusRepository.findById(cdsKey).orElse(null); CrackdownStatus crackdownStatus = crackdownStatusRepository.findById(cdsKey).orElse(null);
crackdownStatus.setFishingBoat(fishingBoatRepository.findByCdsKey(cdsKey).orElse(new FishingBoat())); crackdownStatus.setFishingBoat(fishingBoatRepository.findByCdsKey(cdsKey).orElse(new FishingBoat()));
@ -63,13 +52,10 @@ public class FishingBoatService extends BaseService {
Integer cdsKey, fbKey; Integer cdsKey, fbKey;
if (crackdownStatus.getCdsKey()==null || crackdownStatus.getCdsKey().equals(0)){ if (crackdownStatus.getCdsKey()==null || crackdownStatus.getCdsKey().equals(0)){
// 최초 등록시 단속현황, 처리현황, 선원정보를 같이 등록. // 최초 등록시 단속현황, 처리현황, 선원정보를 같이 등록.
// 단속현황, 단속현황버전 저장.
cdsKey = crackdownStatusRepository.save(crackdownStatus).getCdsKey(); cdsKey = crackdownStatusRepository.save(crackdownStatus).getCdsKey();
CrackdownStatusVersion crackdownStatusVersion = new CrackdownStatusVersion(); CrackdownStatusVersion crackdownStatusVersion = new CrackdownStatusVersion();
BeanUtils.copyProperties(crackdownStatus, crackdownStatusVersion); BeanUtils.copyProperties(crackdownStatus, crackdownStatusVersion);
crackdownStatusVersion.setVersionNo(1);
crackdownStatusVersionRepository.save(crackdownStatusVersion); crackdownStatusVersionRepository.save(crackdownStatusVersion);
// 어선정보, 어선정보버전 저장.
FishingBoat fishingBoat = crackdownStatus.getFishingBoat(); FishingBoat fishingBoat = crackdownStatus.getFishingBoat();
fishingBoat.setCdsKey(cdsKey); fishingBoat.setCdsKey(cdsKey);
fbKey = fishingBoatRepository.save(fishingBoat).getFbKey(); fbKey = fishingBoatRepository.save(fishingBoat).getFbKey();
@ -77,69 +63,28 @@ public class FishingBoatService extends BaseService {
BeanUtils.copyProperties(fishingBoat, fishingBoatVersion); BeanUtils.copyProperties(fishingBoat, fishingBoatVersion);
fishingBoatVersion.setVersionNo(1); fishingBoatVersion.setVersionNo(1);
fishingBoatVersionRepository.save(fishingBoatVersion); fishingBoatVersionRepository.save(fishingBoatVersion);
// 위반사항, 위반사항버전 저장.
List<Violation> violationList = crackdownStatus.getViolationList(); List<Violation> violationList = crackdownStatus.getViolationList();
List<ViolationVersion> violationVersionList = new ArrayList<>();
int i = 1; int i = 1;
for(Violation violation: violationList){ for(Violation violation: violationList){
violation.setViolationKey(i++); violation.setViolationKey(i++);
violation.setFbKey(fbKey); violation.setFbKey(fbKey);
ViolationVersion violationVersion = new ViolationVersion();
BeanUtils.copyProperties(violation, violationVersion);
violationVersion.setVersionNo(1);
violationVersionList.add(violationVersion);
} }
violationRepository.saveAll(violationList); violationRepository.saveAll(violationList);
violationVersionRepository.saveAll(violationVersionList);
// 처리현황, 처리현황버전 저장.
ProcessResult processResult = crackdownStatus.getProcessResult();
ProcessResultVersion processResultVersion = new ProcessResultVersion();
processResult.setCdsKey(cdsKey);
BeanUtils.copyProperties(processResult, processResultVersion);
processResultVersion.setVersionNo(1);
Integer prKey = processResultRepository.save(processResult).getPrKey();
processResultVersion.setPrKey(prKey);
processResultVersionRepository.save(processResultVersion);
// 선원정보, 선원정보버전 저장.
List<Sailor> sailorList = crackdownStatus.getSailorList(); List<Sailor> sailorList = crackdownStatus.getSailorList();
List<SailorVersion> sailorVersionList = new ArrayList<>();
i = 1; i = 1;
for(Sailor sailor: sailorList){ for(Sailor sailor: sailorList){
sailor.setSailorKey(i++); sailor.setSailorKey(i++);
sailor.setFbKey(fbKey); sailor.setFbKey(fbKey);
SailorVersion sailorVersion = new SailorVersion();
BeanUtils.copyProperties(sailor, sailorVersion);
sailorVersion.setVersionNo(1);
sailorVersionList.add(sailorVersion);
} }
sailorRepository.saveAll(sailorList); sailorRepository.saveAll(sailorList);
sailorVersionRepository.saveAll(sailorVersionList);
}else{ }else{
// 업데이트시에는 어선정보만 수정. // 업데이트시에는 어선정보만 수정.
cdsKey = crackdownStatus.getCdsKey(); cdsKey = crackdownStatus.getCdsKey();
FishingBoat fishingBoat = crackdownStatus.getFishingBoat(); FishingBoatVersion lastVersion = fishingBoatVersionRepository.findTop1ByFbKeyOrderByVersionNoDesc(crackdownStatus.getFishingBoat().getFbKey()).orElse(null);
int versionNo = lastVersion.getVersionNo();
FishingBoatVersion newInfo = new FishingBoatVersion(); FishingBoatVersion newInfo = new FishingBoatVersion();
BeanUtils.copyProperties(fishingBoat, newInfo);
FishingBoatVersion lastFishingBoatVersion = fishingBoatVersionRepository.findTop1ByFbKeyOrderByVersionNoDesc(crackdownStatus.getFishingBoat().getFbKey()).orElse(null); fbKey = fishingBoatRepository.save(crackdownStatus.getFishingBoat()).getFbKey();
newInfo.setVersionNo(lastFishingBoatVersion.getVersionNo()+1);
fishingBoatRepository.save(fishingBoat);
fishingBoatVersionRepository.save(newInfo);
// 위반사항
List<Violation> violationList = crackdownStatus.getViolationList();
List<ViolationVersion> violationVersionList = new ArrayList<>();
int i=1;
ViolationVersion lastViolationVersion = violationVersionRepository.findTop1ByFbKeyOrderByVersionNoDesc(fishingBoat.getFbKey()).orElse(null);
for(Violation violation: violationList){
violation.setViolationKey(i);
ViolationVersion violationVersion = new ViolationVersion();
BeanUtils.copyProperties(violation, violationVersion);
violationVersion.setVersionNo(lastViolationVersion.getVersionNo()+1);
violationVersionList.add(violationVersion);
}
violationRepository.saveAll(violationList);
violationVersionRepository.saveAll(violationVersionList);
} }
return cdsKey; return cdsKey;
} }

View File

@ -125,12 +125,11 @@ function getFishingBoatEditModal(cdsKey){
}); });
$(".dateTimeSelector").datetimepicker({ $(".dateTimeSelector").datetimepicker({
format:'Y-m-d H:i', format:'Y-m-d H:i',
lang:'kr', lang:'kr'
step:20
}); });
$(".timeSelector").datetimepicker({ $(".timeSelector").datetimepicker({
datepicker:false, datepicker:false,
format:'H시간i분', format:'H:i',
lang:'kr', lang:'kr',
step:20 step:20
}); });
@ -232,7 +231,7 @@ function saveFishingBoatInfo(saveYn){
success : function() { success : function() {
alert("저장되었습니다."); alert("저장되었습니다.");
contentFade("out"); contentFade("out");
location.reload(); // location.reload();
}, },
error : function(xhr, status) { error : function(xhr, status) {
alert("저장에 실패하였습니다."); alert("저장에 실패하였습니다.");

View File

@ -81,7 +81,7 @@ function getEditModal(publicKey, publicType){
dataType:"html", dataType:"html",
success: function(html){ success: function(html){
$("#editContent").empty().append(html) $("#editContent").empty().append(html)
/*$("#content").summernote({ $("#content").summernote({
lang:'ko-KR', lang:'ko-KR',
height: 350, height: 350,
disableDragAndDrop: true, disableDragAndDrop: true,
@ -92,7 +92,7 @@ function getEditModal(publicKey, publicType){
['para', ['ul', 'ol', 'paragraph']], ['para', ['ul', 'ol', 'paragraph']],
['table', ['table']] ['table', ['table']]
] ]
});*/ });
setUploadDiv(); setUploadDiv();
$("#editModal").modal('show'); $("#editModal").modal('show');
}, },

View File

@ -351,8 +351,6 @@
</div> </div>
<input type="hidden" class="processResultInfo" name="processResult.warrantReqTakeTime" id="warrantReqTake"> <input type="hidden" class="processResultInfo" name="processResult.warrantReqTakeTime" id="warrantReqTake">
</div> </div>
</div>
<div class="mb-3 row">
<label for="isIvsgtStop" class="col-sm-1 col-form-label col-form-label-sm text-center">수사중지 여부</label> <label for="isIvsgtStop" class="col-sm-1 col-form-label col-form-label-sm text-center">수사중지 여부</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm processResultInfo" id="isIvsgtStop" name="processResult.isIvsgtStop"> <select class="form-select form-select-sm processResultInfo" id="isIvsgtStop" name="processResult.isIvsgtStop">
@ -361,12 +359,12 @@
<option value="N">X</option> <option value="N">X</option>
</select> </select>
</div> </div>
</div>
<div class="mb-3 row">
<label for="evictionDt" class="col-sm-1 col-form-label col-form-label-sm text-center">퇴거일</label> <label for="evictionDt" class="col-sm-1 col-form-label col-form-label-sm text-center">퇴거일</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input type="text" class="form-control form-control-sm processResultInfo dateSelector" id="evictionDt" name="processResult.evictionDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.evictionDt}"> <input type="text" class="form-control form-control-sm processResultInfo dateSelector" id="evictionDt" name="processResult.evictionDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.evictionDt}">
</div> </div>
</div>
<div class="mb-3 row">
<label for="directHandoverDt" class="col-sm-1 col-form-label col-form-label-sm text-center">직접인계일</label> <label for="directHandoverDt" class="col-sm-1 col-form-label col-form-label-sm text-center">직접인계일</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input type="text" class="form-control form-control-sm processResultInfo dateSelector" id="directHandoverDt" name="processResult.directHandoverDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.directHandoverDt}"> <input type="text" class="form-control form-control-sm processResultInfo dateSelector" id="directHandoverDt" name="processResult.directHandoverDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.directHandoverDt}">
@ -378,6 +376,8 @@
<input type="text" class="form-control form-control-sm processResultInfo" id="handoverSeaPointLat" name="processResult.handoverSeaPointLat" placeholder="000-00.00E" th:value="${crackdownStatus.processResult.handoverSeaPointLat}"> <input type="text" class="form-control form-control-sm processResultInfo" id="handoverSeaPointLat" name="processResult.handoverSeaPointLat" placeholder="000-00.00E" th:value="${crackdownStatus.processResult.handoverSeaPointLat}">
</div> </div>
</div> </div>
</div>
<div class="mb-3 row">
<label for="handoverBoat" class="col-sm-1 col-form-label col-form-label-sm text-center">인계 함정</label> <label for="handoverBoat" class="col-sm-1 col-form-label col-form-label-sm text-center">인계 함정</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input type="text" class="form-control form-control-sm processResultInfo" id="handoverBoat" name="processResult.handoverBoat" th:value="${crackdownStatus.processResult.handoverBoat}"> <input type="text" class="form-control form-control-sm processResultInfo" id="handoverBoat" name="processResult.handoverBoat" th:value="${crackdownStatus.processResult.handoverBoat}">

View File

@ -125,7 +125,7 @@
<th></th> <th></th>
<th>나포일시</th> <th>나포일시</th>
<th>나포해점</th> <th>나포해점</th>
<th>사건담당기관</th> <th>사건담당<br>경찰서</th>
<th>단속경찰서</th> <th>단속경찰서</th>
<th>단속함정</th> <th>단속함정</th>
<th>선명</th> <th>선명</th>

View File

@ -5,7 +5,6 @@
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"> xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<title>해양경찰청 외사종합포털</title> <title>해양경찰청 외사종합포털</title>
<!--bootstrap--> <!--bootstrap-->
@ -35,9 +34,6 @@
<!--summernote--> <!--summernote-->
<script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/summernote-lite.min.js}"></script> <script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/summernote-lite.min.js}"></script>
<script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/lang/summernote-ko-KR.min.js}"></script> <script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/lang/summernote-ko-KR.min.js}"></script>
<!--namo cross editor-->
<script type="text/javascript" th:src="@{http://118.219.150.34:50571/Crosseditor/js/namo_scripteditor.js}"></script>
<!--sheetJs(excel)--> <!--sheetJs(excel)-->
<script type="text/javascript" th:src="@{/vendor/excel/FileSaver.min.js}"></script> <script type="text/javascript" th:src="@{/vendor/excel/FileSaver.min.js}"></script>
<script type="text/javascript" th:src="@{/vendor/excel/xlsx.full.min.js}"></script> <script type="text/javascript" th:src="@{/vendor/excel/xlsx.full.min.js}"></script>

View File

@ -43,10 +43,6 @@
<label for="content" class="col-sm-2 col-form-label text-center">내용</label> <label for="content" class="col-sm-2 col-form-label text-center">내용</label>
<div class="col-sm-10"> <div class="col-sm-10">
<textarea type='text' id="content" name='content' th:utext="${info.content}"></textarea> <textarea type='text' id="content" name='content' th:utext="${info.content}"></textarea>
<script type="text/javascript">
var CrossEditor = new NamoSE('content');
CrossEditor.EditorStart();
</script>
</div> </div>
</div> </div>
<div class="row mb-3"> <div class="row mb-3">