Compare commits

...

2 Commits

Author SHA1 Message Date
강석 최 6f00dd6927 Merge branch 'master' of http://118.219.150.34:50501/DBNT/FAISP
# Conflicts:
#	src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/FishingBoatRepository.java
2022-11-04 18:57:14 +09:00
강석 최 2e7a070f02 외국어선정보 페이지 작업중. 2022-11-04 18:51:58 +09:00
22 changed files with 390 additions and 136 deletions

View File

@ -59,6 +59,14 @@ public class BaseController {
return mav;
}
@GetMapping("/selectBoxOptions")
public ModelAndView codeMgtPage(String categoryCd, String selectedCd) {
ModelAndView mav = new ModelAndView("common/selectBox/options");
mav.addObject("codeList", codeMgtService.selectCodeMgtList(categoryCd));
mav.addObject("selectedCd", selectedCd);
return mav;
}
public void setSession(@AuthenticationPrincipal UserInfo loginUser, HttpSession session){
loginUser.setDownOrganCdList(organConfigService.selectDownOrganListWhereUserOgCd(loginUser.getOgCd()));
loginUser.setUpOrganCdList(organConfigService.selectUpOrganListWhereUserOgCd(loginUser.getOgCd()));

View File

@ -24,7 +24,7 @@ public class ModalController {
@GetMapping("/menuModal")
public ModelAndView menuModalPage(@AuthenticationPrincipal UserInfo loginUser, MenuMgt menuMgt){
ModelAndView mav = new ModelAndView("commonModal/menuModal");
ModelAndView mav = new ModelAndView("common/modal/menuModal");
menuMgt.setUserSeq(loginUser.getUserSeq());
menuMgt.setQueryInfo();
mav.addObject("menuMgtList", menuMgtService.selectMenuMgtListToAccessAuth(menuMgt));
@ -36,7 +36,7 @@ public class ModalController {
@GetMapping("/userModal")
public ModelAndView userMoadlPage(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo){
ModelAndView mav = new ModelAndView("commonModal/userModal");
ModelAndView mav = new ModelAndView("common/modal/userModal");
userInfo.setQueryInfo();
if(userInfo.getUserStatus() == null || userInfo.getUserStatus().equals("")) {
userInfo.setUserStatus("USC003");

View File

@ -77,6 +77,7 @@ public class SecurityConfig{
"/dashboard",
"/myInfo/**",
"/modal/**",
"/selectBoxOptions",
"/publicBoard/**",
"/faRpt/**",
"/ivsgt/**",

View File

@ -1,7 +1,6 @@
package com.dbnt.faisp.config;
import org.apache.catalina.connector.Connector;
import org.apache.coyote.ajp.AbstractAjpProtocol;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;

View File

@ -47,8 +47,8 @@ public class CrackdownStatusController {
for (CrackdownStatus cds:crackdownStatusList) {
cds.setViolationList(violationRepository.findByFbKey(cds.getFbKey()));
cds.setProcessResult(processResultRepository.findByCdsKey(cds.getCdsKey()));
cds.setFishingBoat(fishingBoatRepository.findByCdsKey(cds.getCdsKey()));
cds.setProcessResult(processResultRepository.findByCdsKey(cds.getCdsKey()).orElse(null));
cds.setFishingBoat(fishingBoatRepository.findByCdsKey(cds.getCdsKey()).orElse(null));
cds.setSailorList(sailorRepository.findByFbKey(cds.getFbKey()));
}
@ -63,8 +63,8 @@ public class CrackdownStatusController {
public ModelAndView crackdownStatusViewModal(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatus crackdownStatus){
ModelAndView mav = new ModelAndView("faStatistics/crackdownStatus/crackdownStatusViewModal");
crackdownStatus = crackdownStatusService.selectCrackdownStatus(crackdownStatus.getCdsKey());
crackdownStatus.setFishingBoat(fishingBoatRepository.findByCdsKey(crackdownStatus.getCdsKey()));
crackdownStatus.setProcessResult(processResultRepository.findByCdsKey(crackdownStatus.getCdsKey()));
crackdownStatus.setFishingBoat(fishingBoatRepository.findByCdsKey(crackdownStatus.getCdsKey()).orElse(null));
crackdownStatus.setProcessResult(processResultRepository.findByCdsKey(crackdownStatus.getCdsKey()).orElse(null));
crackdownStatus.setViolationList(violationRepository.findByFbKey(crackdownStatus.getFishingBoat().getFbKey()));
crackdownStatus.setSailorList(sailorRepository.findByFbKey(crackdownStatus.getFishingBoat().getFbKey()));
@ -80,8 +80,8 @@ public class CrackdownStatusController {
ModelAndView mav = new ModelAndView("faStatistics/crackdownStatus/crackdownStatusEditModal");
if(crackdownStatus.getCdsKey()!=null){
crackdownStatus = crackdownStatusService.selectCrackdownStatus(crackdownStatus.getCdsKey());
crackdownStatus.setFishingBoat(fishingBoatRepository.findByCdsKey(crackdownStatus.getCdsKey()));
crackdownStatus.setProcessResult(processResultRepository.findByCdsKey(crackdownStatus.getCdsKey()));
crackdownStatus.setFishingBoat(fishingBoatRepository.findByCdsKey(crackdownStatus.getCdsKey()).orElse(null));
crackdownStatus.setProcessResult(processResultRepository.findByCdsKey(crackdownStatus.getCdsKey()).orElse(null));
crackdownStatus.setViolationList(violationRepository.findByFbKey(crackdownStatus.getFishingBoat().getFbKey()));
crackdownStatus.setSailorList(sailorRepository.findByFbKey(crackdownStatus.getFishingBoat().getFbKey()));
}else{

View File

@ -8,6 +8,7 @@ import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.ProcessResult;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.CrackdownStatusRepository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.FishingBoatRepository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.ViolationRepository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.FishingBoatService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.ProcessResultService;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor;
@ -27,10 +28,7 @@ import java.util.List;
public class FishingBoatController {
private final AuthMgtService authMgtService;
private final ProcessResultService processResultService;
private final ViolationRepository violationRepository;
private final CrackdownStatusRepository crackdownStatusRepository;
private final FishingBoatRepository fishingBoatRepository;
private final FishingBoatService fishingBoatService;
private final CodeMgtService codeMgtService;
@RequestMapping("/fishingBoat")
@ -62,11 +60,11 @@ public class FishingBoatController {
@GetMapping("/fishingBoatViewModal")
public ModelAndView fishingBoatViewModal(@AuthenticationPrincipal UserInfo loginUser, ProcessResult processResult){
ModelAndView mav = new ModelAndView("faStatistics/processResult/processResultViewModal");
processResult = processResultService.selectProcessResult(processResult.getPrKey());
processResult.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(processResult.getCdsKey()));
processResult.setFbKey(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).getFbKey());
processResult.setBoatNameKr(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).getBoatNameKr());
processResult.setViolationList(violationRepository.findByFbKey(processResult.getFbKey()));
// processResult = processResultService.selectProcessResult(processResult.getPrKey());
// processResult.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(processResult.getCdsKey()));
// processResult.setFbKey(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).getFbKey());
// processResult.setBoatNameKr(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).getBoatNameKr());
// processResult.setViolationList(violationRepository.findByFbKey(processResult.getFbKey()));
mav.addObject("processResult", processResult);
mav.addObject("userSeq",loginUser.getUserSeq());
@ -76,21 +74,19 @@ public class FishingBoatController {
}
@GetMapping("/fishingBoatEditModal")
public ModelAndView fishingBoatEditModal(@AuthenticationPrincipal UserInfo loginUser, FishingBoat fishingBoat){
public ModelAndView fishingBoatEditModal(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatus crackdownStatus){
ModelAndView mav = new ModelAndView("faStatistics/fishingBoat/fishingBoatEditModal");
if(fishingBoat.getFbKey()!=null && fishingBoat.getCdsKey()!=null){
/*processResult = processResultService.selectProcessResult(processResult.getPrKey());
processResult.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(processResult.getCdsKey()));
processResult.setFbKey(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).getFbKey());
processResult.setBoatNameKr(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).getBoatNameKr());
processResult.setViolationList(violationRepository.findByFbKey(processResult.getFbKey()));*/
if(crackdownStatus.getCdsKey()!=null){
crackdownStatus = fishingBoatService.selectCrackdownStatus(crackdownStatus.getCdsKey());
}else{
fishingBoat.setWrtOrgan(loginUser.getOgCd());
fishingBoat.setWrtPart(loginUser.getOfcCd());
fishingBoat.setWrtUserSeq(loginUser.getUserSeq());
fishingBoat.setWrtUserNm(loginUser.getUserNm());
fishingBoat.setWrtUserGrd(loginUser.getTitleCd());
fishingBoat.setWrtDt(LocalDateTime.now());
crackdownStatus.setFishingBoat(new FishingBoat());
crackdownStatus.setProcessResult(new ProcessResult());
crackdownStatus.setWrtOrgan(loginUser.getOgCd());
crackdownStatus.setWrtPart(loginUser.getOfcCd());
crackdownStatus.setWrtUserSeq(loginUser.getUserSeq());
crackdownStatus.setWrtUserNm(loginUser.getUserNm());
crackdownStatus.setWrtUserGrd(loginUser.getTitleCd());
crackdownStatus.setWrtDt(LocalDateTime.now());
}
mav.addObject("ataList", codeMgtService.selectCodeMgtList("ATA"));
mav.addObject("cpoList", codeMgtService.selectCodeMgtList("CPO"));
@ -99,7 +95,7 @@ public class FishingBoatController {
mav.addObject("bmList", codeMgtService.selectCodeMgtList("BM"));
mav.addObject("prList", codeMgtService.selectCodeMgtList("PR"));
mav.addObject("bdtList", codeMgtService.selectCodeMgtList("BDT"));
mav.addObject("fishingBoat", fishingBoat);
mav.addObject("crackdownStatus", crackdownStatus);
return mav;
}

View File

@ -44,8 +44,8 @@ public class ProcessResultController {
List<ProcessResult> processResultList = processResultService.selectProcessResultList(processResult);
for (ProcessResult pr:processResultList) {
pr.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(pr.getCdsKey()));
pr.setFishingBoat(fishingBoatRepository.findByCdsKey(pr.getCdsKey()));
pr.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(pr.getCdsKey()).orElse(null));
pr.setFishingBoat(fishingBoatRepository.findByCdsKey(pr.getCdsKey()).orElse(null));
pr.setViolationList(violationRepository.findByFbKey(pr.getFishingBoat().getFbKey()));
}
@ -60,9 +60,9 @@ public class ProcessResultController {
public ModelAndView processResultViewModal(@AuthenticationPrincipal UserInfo loginUser, ProcessResult processResult){
ModelAndView mav = new ModelAndView("faStatistics/processResult/processResultViewModal");
processResult = processResultService.selectProcessResult(processResult.getPrKey());
processResult.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(processResult.getCdsKey()));
processResult.setFbKey(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).getFbKey());
processResult.setBoatNameKr(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).getBoatNameKr());
processResult.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(processResult.getCdsKey()).orElse(null));
processResult.setFbKey(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).orElse(null).getFbKey());
processResult.setBoatNameKr(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).orElse(null).getBoatNameKr());
processResult.setViolationList(violationRepository.findByFbKey(processResult.getFbKey()));
mav.addObject("processResult", processResult);
@ -77,9 +77,9 @@ public class ProcessResultController {
ModelAndView mav = new ModelAndView("faStatistics/processResult/processResultEditModal");
if(processResult.getPrKey()!=null){
processResult = processResultService.selectProcessResult(processResult.getPrKey());
processResult.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(processResult.getCdsKey()));
processResult.setFbKey(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).getFbKey());
processResult.setBoatNameKr(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).getBoatNameKr());
processResult.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(processResult.getCdsKey()).orElse(null));
processResult.setFbKey(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).orElse(null).getFbKey());
processResult.setBoatNameKr(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).orElse(null).getBoatNameKr());
processResult.setViolationList(violationRepository.findByFbKey(processResult.getFbKey()));
}else{
processResult.setWrtOrgan(loginUser.getOgCd());

View File

@ -43,8 +43,8 @@ public class SailorController {
List<Sailor> sailorList = sailorService.selectSailorList(sailor);
for (Sailor s:sailorList) {
s.setFishingBoat(fishingBoatRepository.findByFbKey(s.getFbKey()));
s.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(s.getFishingBoat().getCdsKey()));
s.setFishingBoat(fishingBoatRepository.findByFbKey(s.getFbKey()).orElse(null));
s.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(s.getFishingBoat().getCdsKey()).orElse(null));
s.setViolationList(violationRepository.findByFbKey(s.getFishingBoat().getFbKey()));
}
@ -57,8 +57,8 @@ public class SailorController {
public ModelAndView sailorViewModal(@AuthenticationPrincipal UserInfo loginUser, Sailor sailor){
ModelAndView mav = new ModelAndView("faStatistics/sailor/sailorViewModal");
sailor = sailorService.selectSailor(sailor.getSailorKey());
sailor.setFishingBoat(fishingBoatRepository.findByFbKey(sailor.getFbKey()));
sailor.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(sailor.getFishingBoat().getCdsKey()));
sailor.setFishingBoat(fishingBoatRepository.findByFbKey(sailor.getFbKey()).orElse(null));
sailor.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(sailor.getFishingBoat().getCdsKey()).orElse(null));
sailor.setViolationList(violationRepository.findByFbKey(sailor.getFishingBoat().getFbKey()));
mav.addObject("sailor", sailor);
@ -82,7 +82,7 @@ public class SailorController {
ModelAndView mav = new ModelAndView("faStatistics/sailor/sailorHistoryDetail");
sailorVersion = sailorService.selectSailorVersion(sailorVersion.getVersionNo());
sailorVersion.setFishingBoat(fishingBoatRepository.findByFbKey(7));
sailorVersion.setFishingBoat(fishingBoatRepository.findByFbKey(7).orElse(null));
mav.addObject("sailorVersion", sailorVersion);
return mav;
@ -92,8 +92,8 @@ public class SailorController {
public ModelAndView sailorEditModal(@AuthenticationPrincipal UserInfo loginUser, Sailor sailor){
ModelAndView mav = new ModelAndView("faStatistics/sailor/sailorEditModal");
sailor = sailorService.selectSailor(sailor.getSailorKey());
sailor.setFishingBoat(fishingBoatRepository.findByFbKey(sailor.getFbKey()));
sailor.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(sailor.getFishingBoat().getCdsKey()));
sailor.setFishingBoat(fishingBoatRepository.findByFbKey(sailor.getFbKey()).orElse(null));
sailor.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(sailor.getFishingBoat().getCdsKey()).orElse(null));
sailor.setViolationList(violationRepository.findByFbKey(sailor.getFishingBoat().getFbKey()));
mav.addObject("sailor", sailor);

View File

@ -34,6 +34,8 @@ public class FishingBoat extends BaseModel {
private String permitNum;
@Column(name = "nationality")
private String nationality;
@Column(name = "sailor_cnt")
private Integer sailorCnt;
@Column(name = "ton_cnt")
private Integer tonCnt;
@Column(name = "fishery_type")
@ -46,6 +48,8 @@ public class FishingBoat extends BaseModel {
private String boatNnySi;
@Column(name = "offense_type")
private String offenseType;
@Column(name = "offense_weight")
private Double offenseWeight;
@Column(name = "offense_quantity")
private Integer offenseQuantity;
@Column(name = "offense_amount")

View File

@ -3,6 +3,8 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.CrackdownStatus;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface CrackdownStatusRepository extends JpaRepository<CrackdownStatus, Integer> {
CrackdownStatus findByCdsKey(Integer cdsKey);
Optional<CrackdownStatus> findByCdsKey(Integer cdsKey);
}

View File

@ -3,7 +3,11 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface FishingBoatRepository extends JpaRepository<FishingBoat, Integer> {
FishingBoat findByCdsKey(Integer cdsKey);
FishingBoat findByFbKey(Integer fbKey);
Optional<FishingBoat> findByCdsKey(Integer cdsKey);
Optional<FishingBoat> findByFbKey(Integer fbKey);
}

View File

@ -3,7 +3,9 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.ProcessResult;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface ProcessResultRepository extends JpaRepository<ProcessResult, Integer> {
ProcessResult findByCdsKey(Integer cdsKey);
ProcessResult findByPrKey(Integer prKey);
Optional<ProcessResult> findByCdsKey(Integer cdsKey);
Optional<ProcessResult> findByPrKey(Integer prKey);
}

View File

@ -0,0 +1,102 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.service;
import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.CrackdownStatusMapper;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.*;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@RequiredArgsConstructor
public class FishingBoatService extends BaseService {
private final CrackdownStatusMapper crackdownStatusMapper;
private final CrackdownStatusRepository crackdownStatusRepository;
private final FishingBoatRepository fishingBoatRepository;
private final ViolationRepository violationRepository;
private final ProcessResultRepository processResultRepository;
private final SailorRepository sailorRepository;
public CrackdownStatus selectCrackdownStatus(Integer cdsKey) {
CrackdownStatus crackdownStatus = crackdownStatusRepository.findById(cdsKey).orElse(null);
crackdownStatus.setFishingBoat(fishingBoatRepository.findByCdsKey(cdsKey).orElse(new FishingBoat()));
crackdownStatus.setProcessResult(processResultRepository.findByCdsKey(cdsKey).orElse(new ProcessResult()));
if(crackdownStatus.getFishingBoat()!=null){
crackdownStatus.setViolationList(violationRepository.findByFbKey(crackdownStatus.getFishingBoat().getFbKey()));
crackdownStatus.setSailorList(sailorRepository.findByFbKey(crackdownStatus.getFishingBoat().getFbKey()));
for(Sailor sailor: crackdownStatus.getSailorList()){
//첨부파일 ...?
}
}
return crackdownStatus;
}
@Transactional
public Integer saveCrackdownStatus(CrackdownStatus crackdownStatus) {
if (crackdownStatus.getViolationDeleteKeyList() != null) {
violationRepository.deleteAllByIdInQuery(crackdownStatus.getViolationDeleteKeyList());
}
if (crackdownStatus.getSailorDeleteKeyList() != null) {
sailorRepository.deleteAllByIdInQuery(crackdownStatus.getSailorDeleteKeyList());
}
if (crackdownStatus.getCrackdownBoatEtc() != null) {
crackdownStatus.setCrackdownBoat(crackdownStatus.getCrackdownBoatEtc());
}
if (crackdownStatus.getCrackdownPoliceEtc() != null) {
crackdownStatus.setCrackdownPolice(crackdownStatus.getCrackdownPoliceEtc());
}
Integer cdsKey = crackdownStatusRepository.save(crackdownStatus).getCdsKey();
if (crackdownStatus.getFishingBoat() != null) {
if (crackdownStatus.getFishingBoat().getBoatMaterialEtc() != null) {
crackdownStatus.getFishingBoat().setBoatMaterial(crackdownStatus.getFishingBoat().getBoatMaterialEtc());
}
if (crackdownStatus.getFishingBoat().getFisheryTypeEtc() != null) {
crackdownStatus.getFishingBoat().setFisheryType(crackdownStatus.getFishingBoat().getFisheryTypeEtc());
}
crackdownStatus.getFishingBoat().setCdsKey(cdsKey);
Integer fbKey = fishingBoatRepository.save(crackdownStatus.getFishingBoat()).getFbKey();
crackdownStatus.getFishingBoat().setFbKey(fbKey);
}
if (crackdownStatus.getProcessResult() != null) {
if (crackdownStatus.getProcessResult().getProcessStatusEtc() != null) {
crackdownStatus.getProcessResult().setProcessStatus(crackdownStatus.getProcessResult().getProcessStatusEtc());
}
crackdownStatus.getProcessResult().setCdsKey(cdsKey);
Integer prKey = processResultRepository.save(crackdownStatus.getProcessResult()).getPrKey();
crackdownStatus.getProcessResult().setPrKey(prKey);
}
/*if (internationalCrimeArrest.getDeleteSpiKeyList() != null) {
suspectPersonInfoRepository.deleteAllByIdInQuery(internationalCrimeArrest.getDeleteSpiKeyList());
}*/
if (crackdownStatus.getViolationList() != null) {
for(Violation violation: crackdownStatus.getViolationList()){
if (violation.getViolationEtc() != null) {
violation.setViolation(violation.getViolationEtc());
}
violation.setFbKey(crackdownStatus.getFishingBoat().getFbKey());
}
violationRepository.saveAll(crackdownStatus.getViolationList());
}
if (crackdownStatus.getSailorList() != null) {
for(Sailor sailor: crackdownStatus.getSailorList()){
sailor.setFbKey(crackdownStatus.getFishingBoat().getFbKey());
}
sailorRepository.saveAll(crackdownStatus.getSailorList());
}
return cdsKey;
}
}

View File

@ -50,7 +50,7 @@ public class ProcessResultService extends BaseService {
processResult.setExecutionDetail(processResult.getExecutionDetailEtc());
}
ProcessResult existingProcessResult = processResultRepository.findByPrKey(processResult.getPrKey());
ProcessResult existingProcessResult = processResultRepository.findByPrKey(processResult.getPrKey()).orElse(null);
Utils.copyNonNullProperties(processResult, existingProcessResult);
Integer prKey = processResultRepository.save(existingProcessResult).getPrKey();
@ -59,13 +59,13 @@ public class ProcessResultService extends BaseService {
processResult.getCrackdownStatus().setCrackdownPolice(processResult.getCrackdownStatus().getCrackdownPoliceEtc());
}
CrackdownStatus existingCrackdownStatus = crackdownStatusRepository.findByCdsKey(processResult.getCdsKey());
CrackdownStatus existingCrackdownStatus = crackdownStatusRepository.findByCdsKey(processResult.getCdsKey()).orElse(null);
Utils.copyNonNullProperties(processResult, existingCrackdownStatus);
processResult.setCrackdownStatus(crackdownStatusRepository.save(existingCrackdownStatus));
}
if (processResult.getFishingBoat() != null) {
FishingBoat existingFishingBoat = fishingBoatRepository.findByCdsKey(processResult.getCdsKey());
FishingBoat existingFishingBoat = fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).orElse(null);
Utils.copyNonNullProperties(processResult, existingFishingBoat);
fishingBoatRepository.save(existingFishingBoat);
}

View File

@ -65,13 +65,13 @@ public class SailorService extends BaseService {
sailor.getCrackdownStatus().setCrackdownPolice(sailor.getCrackdownStatus().getCrackdownPoliceEtc());
}
CrackdownStatus existingCrackdownStatus = crackdownStatusRepository.findByCdsKey(sailor.getCrackdownStatus().getCdsKey());
CrackdownStatus existingCrackdownStatus = crackdownStatusRepository.findByCdsKey(sailor.getCrackdownStatus().getCdsKey()).orElse(null);
Utils.copyNonNullProperties(sailor, existingCrackdownStatus);
sailor.setCrackdownStatus(crackdownStatusRepository.save(existingCrackdownStatus));
}
if (sailor.getFishingBoat() != null) {
FishingBoat existingFishingBoat = fishingBoatRepository.findByCdsKey(sailor.getCrackdownStatus().getCdsKey());
FishingBoat existingFishingBoat = fishingBoatRepository.findByCdsKey(sailor.getCrackdownStatus().getCdsKey()).orElse(null);
Utils.copyNonNullProperties(sailor, existingFishingBoat);
fishingBoatRepository.save(existingFishingBoat);
}

View File

@ -0,0 +1,38 @@
tomcat.ajp.protocol=AJP/1.3
#file upload
spring.servlet.multipart.location=/uploadFiles
spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=500MB
#thymeleaf
spring.thymeleaf.prefix=classpath:templates/
spring.thymeleaf.check-template-location=true
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML
#Datasource Configuration
spring.sql.init.encoding=utf-8
#maximum-pool-size: CPU core count
spring.datasource.hikari.maximum-pool-size=4
#postgresql
spring.datasource-main.driverClassName=org.postgresql.Driver
spring.datasource-main.url=jdbc:postgresql://118.219.150.34:50503/faisp
spring.datasource-main.username=dbnt0031
spring.datasource-main.password=dbnt0928!
#oracle
spring.datasource-kwms.driverClassName=oracle.jdbc.driver.OracleDriver
spring.datasource-kwms.jdbcUrl=jdbc:oracle:thin:@118.219.150.34:51521:kwms
spring.datasource-kwms.username=kwms
spring.datasource-kwms.password=dbnt0928
#jpa
spring.jpa.show-sql=false
spring.jpa.generate-ddl=false
spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
# MyBatis
mybatis.mapper-locations: mybatisMapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.type-aliases-package=com.dbnt.faisp.main.**.model
logging.level.com.atoz_develop.mybatissample.repository=TRACE

View File

@ -17,7 +17,7 @@ spring.sql.init.encoding=utf-8
spring.datasource.hikari.maximum-pool-size=4
#postgresql
spring.datasource-main.driverClassName=org.postgresql.Driver
spring.datasource-main.url=jdbc:postgresql://118.219.150.34:50503/faisp
spring.datasource-main.jdbcUrl=jdbc:postgresql://118.219.150.34:50503/faisp
spring.datasource-main.username=dbnt0031
spring.datasource-main.password=dbnt0928!
#oracle

View File

@ -1,11 +1,48 @@
$(document).on('click', '#getFishingBoatEditModalBtn', function (){
getFishingBoatEditModal(null, null);
})
$(document).on('change', '#crackdownPolice', function (){
getCrackdownBoatOption(this.value);
})
$(document).on('change', '.boatNameKr', function (){
$(".boatNameKr").val(this.value);
})
$(document).on('change', '#equalCaptain', function (){
if(this.checked){
$.each($("#captainDiv :input"), function (idx, input){
$("#shipOwnerDiv").find("[name='"+input.name+"']").val(input.value)
})
}else{
$("#shipOwnerDiv :input").val("");
}
})
$(document).on('change', '#captainDiv :input', function (){
if($("#equalCaptain").prop("checked")){
$("#shipOwnerDiv").find("[name='"+this.name+"']").val(this.value)
}
})
$(document).on('click', '#sailorAddBtn', function (){
$("#sailorRestrictionDiv").append(
'<div class="col-4">\n' +
' <div class="input-group w-auto">\n' +
' <select class="form-select form-select-sm isRestriction" id="normalSailorRestriction">\n' +
' <option value="">선택</option>\n' +
' <option value="O">O</option>\n' +
' <option value="X">X</option>\n' +
' </select>\n' +
' <input type="text" class="form-control form-control-sm" id="normalSailor" placeholder="이름">\n' +
' <button type="button" class="btn btn-sm btn-outline-secondary opacity-50 sailorRemoveBtn">\n' +
' <i class="bi bi-dash-square text-danger"></i>\n' +
' </button>\n' +
' </div>\n' +
'</div>'
)
})
function getFishingBoatEditModal(fbKey, cdsKey){
function getFishingBoatEditModal(cdsKey){
$.ajax({
url: '/faStatistics/fishingBoatEditModal',
data: {fbKey: fbKey, cdsKey: cdsKey},
data: {cdsKey: cdsKey},
type: 'GET',
dataType:"html",
success: function(html){
@ -21,10 +58,31 @@ function getFishingBoatEditModal(fbKey, cdsKey){
lang:'kr',
step:20
});
const crackdownPolice = $("#crackdownPolice").val()
if(crackdownPolice){
getCrackdownBoatOption(crackdownPolice)
}
$("#fishingBoatEditModal").modal('show');
},
error:function(){
}
});
}
function getCrackdownBoatOption(categoryCd){
$.ajax({
url: '/selectBoxOptions',
data: {categoryCd: categoryCd, selectedCd: $("#crackdownBoat").attr("data-boatcode")},
type: 'GET',
dataType:"html",
success: function(html){
const crackdownBoat = $("#crackdownBoat");
crackdownBoat.empty().append(html);
crackdownBoat.removeAttr("disabled");
},
error:function(){
}
});
}

View File

@ -0,0 +1,7 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<option value="">선택</option>
<th:block th:each="code:${codeList}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq selectedCd}"></option>
</th:block>
</html>

View File

@ -1,21 +1,20 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header">
<h5 class="modal-title" id="fishingBoatEditModalLabel" th:text="${fishingBoat.fbKey eq null?'외국어선정보 작성':'외국어선정보 수정'}"></h5>
<h5 class="modal-title" id="fishingBoatEditModalLabel" th:text="${crackdownStatus.cdsKey eq null?'외국어선정보 작성':'외국어선정보 수정'}"></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form action="#" method="post" id="fishingBoatEditForm">
<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="fbKey" th:value="${fishingBoat.fbKey}">
<input type="hidden" name="cdsKey" th:value="${fishingBoat.cdsKey}">
<input type="hidden" name="saveYn" id="saveYn" th:value="${fishingBoat.saveYn}">
<input type="hidden" name="wrtOrgan" th:value="${fishingBoat.wrtOrgan}">
<input type="hidden" name="wrtPart" th:value="${fishingBoat.wrtPart}">
<input type="hidden" name="wrtUserSeq" th:value="${fishingBoat.wrtUserSeq}">
<input type="hidden" name="wrtUserNm" th:value="${fishingBoat.wrtUserNm}">
<input type="hidden" name="wrtUserGrd" th:value="${fishingBoat.wrtUserGrd}">
<input type="hidden" name="cdsKey" th:value="${crackdownStatus.cdsKey}">
<input type="hidden" name="saveYn" id="saveYn" th:value="${crackdownStatus.fishingBoat.saveYn}">
<input type="hidden" name="wrtOrgan" th:value="${crackdownStatus.wrtOrgan}">
<input type="hidden" name="wrtPart" th:value="${crackdownStatus.wrtPart}">
<input type="hidden" name="wrtUserSeq" th:value="${crackdownStatus.wrtUserSeq}">
<input type="hidden" name="wrtUserNm" th:value="${crackdownStatus.wrtUserNm}">
<input type="hidden" name="wrtUserGrd" th:value="${crackdownStatus.wrtUserGrd}">
<ul class="nav nav-tabs" id="userTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="baseInfoTab" data-bs-toggle="tab" data-bs-target="#baseInfoTabPanel" type="button" role="tab" aria-controls="baseInfoTabPanel" aria-selected="true">기본정보</button>
@ -35,11 +34,11 @@
<div class="mb-3 row">
<label for="boatNameKr" class="col-sm-1 col-form-label col-form-label-sm text-center">선명</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm boatNameKr" id="boatNameKr" name="boatNameKr" placeholder="한글">
<input type="text" class="form-control form-control-sm boatNameKr" id="boatNameKr" name="boatNameKr" placeholder="한글" th:value="${crackdownStatus.fishingBoat.boatNameKr}">
</div>
<label for="caseNum" class="col-sm-1 col-form-label col-form-label-sm text-center">사건번호</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="caseNum" name="caseNum">
<input type="text" class="form-control form-control-sm" id="caseNum" name="caseNum" th:value="${crackdownStatus.caseNum}">
</div>
</div>
<div class="mb-3 row">
@ -48,26 +47,26 @@
<select class="form-select form-select-sm" id="caseAgency" name="caseAgency">
<option value="">선택</option>
<th:block th:each="code:${ataList}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${crackdownStatus.caseAgency}"></option>
</th:block>
</select>
</div>
<label for="casePoliceOfficer" class="col-sm-1 col-form-label col-form-label-sm text-center fs-13">사건담당경찰관</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="casePoliceOfficer" name="casePoliceOfficer">
<input type="text" class="form-control form-control-sm" id="casePoliceOfficer" name="casePoliceOfficer" th:value="${crackdownStatus.casePoliceOfficer}">
</div>
<label for="crackdownPolice" class="col-sm-1 col-form-label col-form-label-sm text-center">단속경찰서</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="crackdownPolice" id="crackdownPolice">
<option value="">선택</option>
<th:block th:each="code:${cpoList}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${crackdownStatus.crackdownPolice}"></option>
</th:block>
</select>
</div>
<label for="crackdownBoat" class="col-sm-1 col-form-label col-form-label-sm text-center">단속함정</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="crackdownBoat" id="crackdownBoat" disabled>
<select class="form-select form-select-sm" name="crackdownBoat" id="crackdownBoat" th:data-boatcode="${crackdownStatus.crackdownBoat}" disabled>
<option value="">단속경찰서를 선택해주세요.</option>
</select>
</div>
@ -75,14 +74,14 @@
<div class="mb-3 row">
<label for="napoDt" class="col-sm-1 col-form-label col-form-label-sm text-center">나포일시</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm dateSelector" id="napoDt" name="napoDt">
<input type="text" class="form-control form-control-sm dateSelector" id="napoDt" name="napoDt" placeholder="0000-00-00" th:value="${crackdownStatus.napoDt}">
</div>
<label for="napoSeaPointLon" class="col-sm-1 col-form-label col-form-label-sm text-center">나포장소</label>
<div class="col-sm-5">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm w-25" id="napoSeaPointLon" name="napoSeaPointLon" placeholder="00 . 00 . 00N">
<input type="text" class="form-control form-control-sm w-25" id="napoSeaPointLat" name="napoSeaPointLat" placeholder="000-00.00E">
<input type="text" class="form-control form-control-sm w-50" id="napoSeaPointDetail" name="napoSeaPointDetail" placeholder="00도 00방 00해리, 어업협정선 내측 00해리">
<input type="text" class="form-control form-control-sm w-25" id="napoSeaPointLon" name="napoSeaPointLon" placeholder="00 . 00 . 00N" th:value="${crackdownStatus.napoSeaPointLon}">
<input type="text" class="form-control form-control-sm w-25" id="napoSeaPointLat" name="napoSeaPointLat" placeholder="000-00.00E" th:value="${crackdownStatus.napoSeaPointLat}">
<input type="text" class="form-control form-control-sm w-50" id="napoSeaPointDetail" name="napoSeaPointDetail" placeholder="00도 00방 00해리, 어업협정선 내측 00해리" th:value="${crackdownStatus.napoSeaPointDetail}">
</div>
</div>
<label for="fieldIvsgt" class="col-sm-1 col-form-label col-form-label-sm text-center">압송/현장조사</label>
@ -114,7 +113,7 @@
<div class="mb-3 row">
<label for="birthdate" class="col-sm-2 col-form-label col-form-label-sm text-center">생년월일</label>
<div class="col-sm-4">
<input type="text" class="form-control form-control-sm dateSelector" id="birthdate" name="birthdate">
<input type="text" class="form-control form-control-sm dateSelector" id="birthdate" name="birthdate" placeholder="0000-00-00">
</div>
<label for="sailorContact" class="col-sm-2 col-form-label col-form-label-sm text-center">연락처</label>
<div class="col-sm-4">
@ -178,7 +177,7 @@
<div class="mb-3 row">
<label for="birthdate2" class="col-sm-2 col-form-label col-form-label-sm text-center">생년월일</label>
<div class="col-sm-4">
<input type="text" class="form-control form-control-sm dateSelector" id="birthdate2" name="birthdate">
<input type="text" class="form-control form-control-sm dateSelector" id="birthdate2" name="birthdate" placeholder="0000-00-00">
</div>
<label for="sailorContact2" class="col-sm-2 col-form-label col-form-label-sm text-center">연락처</label>
<div class="col-sm-4">
@ -205,8 +204,8 @@
<label for="boatNameCn" class="col-sm-1 col-form-label col-form-label-sm text-center">선명</label>
<div class="col-sm-4">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm boatNameKr" name="boatNameKr" placeholder="한글">
<input type="text" class="form-control form-control-sm" id="boatNameCn" name="boatNameCn" placeholder="중문">
<input type="text" class="form-control form-control-sm boatNameKr" placeholder="한글" th:value="${crackdownStatus.fishingBoat.boatNameKr}">
<input type="text" class="form-control form-control-sm" id="boatNameCn" name="boatNameCn" placeholder="중문" th:value="${crackdownStatus.fishingBoat.boatNameCn}">
</div>
</div>
<div class="col-sm-1"></div>
@ -223,19 +222,19 @@
<div class="mb-3 row">
<label for="permitNum" class="col-sm-1 col-form-label col-form-label-sm text-center">허가번호</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="permitNum" name="permitNum">
<input type="text" class="form-control form-control-sm" id="permitNum" name="permitNum" th:value="${crackdownStatus.fishingBoat.permitNum}">
</div>
<label for="nationality" class="col-sm-1 col-form-label col-form-label-sm text-center">국적</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="nationality" name="nationality">
<input type="text" class="form-control form-control-sm" id="nationality" name="nationality" th:value="${crackdownStatus.fishingBoat.nationality}">
</div>
<label for="sailorCnt" class="col-sm-1 col-form-label col-form-label-sm text-center">승선원</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="sailorCnt" name="sailorCnt">
<input type="text" class="form-control form-control-sm" id="sailorCnt" name="sailorCnt" placeholder="0인" th:value="${crackdownStatus.fishingBoat.sailorCnt}">
</div>
<label for="tonCnt" class="col-sm-1 col-form-label col-form-label-sm text-center">톤수</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="tonCnt" name="tonCnt">
<input type="text" class="form-control form-control-sm" id="tonCnt" name="tonCnt" placeholder="000.00t" th:value="${crackdownStatus.fishingBoat.tonCnt}">
</div>
</div>
<div class="mb-3 row">
@ -244,7 +243,7 @@
<select class="form-select form-select-sm" id="fisheryType" name="fisheryType">
<option value="">선택</option>
<th:block th:each="code:${ftList}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${crackdownStatus.fishingBoat.fisheryType}"></option>
</th:block>
</select>
</div>
@ -253,15 +252,15 @@
<select class="form-select form-select-sm" id="boatMaterial" name="boatMaterial">
<option value="">선택</option>
<th:block th:each="code:${bmList}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${crackdownStatus.fishingBoat.boatMaterial}"></option>
</th:block>
</select>
</div>
<label for="boatNnySung" class="col-sm-1 col-form-label col-form-label-sm text-center">선적지</label>
<div class="col-sm-2">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm" id="boatNnySung" name="boatNnySung" placeholder="성">
<input type="text" class="form-control form-control-sm" id="boatNnySi" name="boatNnySi" placeholder="시">
<input type="text" class="form-control form-control-sm" id="boatNnySung" name="boatNnySung" placeholder="성" th:value="${crackdownStatus.fishingBoat.boatNnySung}">
<input type="text" class="form-control form-control-sm" id="boatNnySi" name="boatNnySi" placeholder="시" th:value="${crackdownStatus.fishingBoat.boatNnySi}">
</div>
</div>
</div>
@ -269,50 +268,50 @@
<label for="offenseType" class="col-sm-1 col-form-label col-form-label-sm text-center">범칙물</label>
<div class="col-sm-3">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm" id="offenseType" name="offenseType">
<input type="text" class="form-control form-control-sm" id="offenseQty" name="offenseQty" placeholder="kg">
<input type="text" class="form-control form-control-sm" id="offenseType" name="offenseType" placeholder="직접입력" th:value="${crackdownStatus.fishingBoat.offenseType}">
<input type="text" class="form-control form-control-sm" id="offenseWeight" name="offenseWeight" placeholder="000kg" th:value="${crackdownStatus.fishingBoat.offenseWeight}">
</div>
</div>
<div class="col-sm-2"></div>
<label for="offenseQuantity" class="col-sm-1 col-form-label col-form-label-sm text-center">범칙물 위판량</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="offenseQuantity" name="offenseQuantity">
<input type="text" class="form-control form-control-sm" id="offenseQuantity" name="offenseQuantity" placeholder="000kg" th:value="${crackdownStatus.fishingBoat.offenseQuantity}">
</div>
<label for="offenseAmount" class="col-sm-1 col-form-label col-form-label-sm text-center fs-11">범칙물 위판금액</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="offenseAmount" name="offenseAmount">
<input type="text" class="form-control form-control-sm" id="offenseAmount" name="offenseAmount" placeholder="0원" th:value="${crackdownStatus.fishingBoat.offenseAmount}">
</div>
</div>
<div class="mb-3 row">
<label for="offenseIllegalWasteQuantity" class="col-sm-1 col-form-label col-form-label-sm text-center">범칙물 폐기량</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="offenseIllegalWasteQuantity" name="offenseIllegalWasteQuantity">
<input type="text" class="form-control form-control-sm" id="offenseIllegalWasteQuantity" name="offenseIllegalWasteQuantity" placeholder="000kg" th:value="${crackdownStatus.fishingBoat.offenseIllegalWasteQuantity}">
</div>
<label for="damboUnpaidAmount" class="col-sm-1 col-form-label col-form-label-sm text-center">담보금 미납액</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="damboUnpaidAmount" name="damboUnpaidAmount">
<input type="text" class="form-control form-control-sm" id="damboUnpaidAmount" name="damboUnpaidAmount" placeholder="0원" th:value="${crackdownStatus.fishingBoat.damboUnpaidAmount}">
</div>
<label for="damboPayment" class="col-sm-1 col-form-label col-form-label-sm text-center">담보금 납부액</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="damboPayment" name="damboPayment">
<input type="text" class="form-control form-control-sm" id="damboPayment" name="damboPayment" placeholder="0원" th:value="${crackdownStatus.fishingBoat.damboPayment}">
</div>
<label for="paymentPaymentDt" class="col-sm-1 col-form-label col-form-label-sm text-center fs-11">담보금 납부일시</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="paymentPaymentDt" name="paymentPaymentDt">
<input type="text" class="form-control form-control-sm" id="paymentPaymentDt" name="paymentPaymentDt" placeholder="0000-00-00" th:value="${crackdownStatus.fishingBoat.paymentPaymentDt}">
</div>
</div>
<div class="mb-3 row">
<label for="confiscationFrame" class="col-sm-1 col-form-label col-form-label-sm text-center">압수어구</label>
<div class="col-sm-4">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm" id="confiscationFrame" name="confiscationFrame" placeholder="틀">
<input type="text" class="form-control form-control-sm" id="confiscationWidth" name="confiscationWidth" placeholder="폭">
<input type="text" class="form-control form-control-sm" id="confiscationJo" name="confiscationJo" placeholder="조">
<input type="text" class="form-control form-control-sm" id="confiscationGae" name="confiscationGae" placeholder="개">
<input type="text" class="form-control form-control-sm" id="confiscationFrame" name="confiscationFrame" placeholder="틀" th:value="${crackdownStatus.fishingBoat.confiscationFrame}">
<input type="text" class="form-control form-control-sm" id="confiscationWidth" name="confiscationWidth" placeholder="폭" th:value="${crackdownStatus.fishingBoat.confiscationWidth}">
<input type="text" class="form-control form-control-sm" id="confiscationJo" name="confiscationJo" placeholder="조" th:value="${crackdownStatus.fishingBoat.confiscationJo}">
<input type="text" class="form-control form-control-sm" id="confiscationGae" name="confiscationGae" placeholder="개" th:value="${crackdownStatus.fishingBoat.confiscationGae}">
</div>
</div>
<div class="col-sm-3">
<input type="text" class="form-control form-control-sm" id="confiscationEtc" name="confiscationEtc" placeholder="기타">
<input type="text" class="form-control form-control-sm" id="confiscationEtc" name="confiscationEtc" placeholder="기타" th:value="${crackdownStatus.fishingBoat.confiscationEtc}">
</div>
</div>
</div>
@ -323,23 +322,23 @@
<select class="form-select form-select-sm" id="processStatus" name="processStatus">
<option value="">선택</option>
<th:block th:each="code:${prList}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${crackdownStatus.processResult.processStatus}"></option>
</th:block>
</select>
</div>
<label for="pressurizedTimeTakenDate" class="col-sm-1 col-form-label col-form-label-sm text-center">압송소요시간</label>
<div class="col-sm-2">
<div class="input-group w-auto">
<input type="number" class="form-control form-control-sm pressurizedTimeTaken" id="pressurizedTimeTakenDate" placeholder="일">
<input type="text" class="form-control form-control-sm pressurizedTimeTaken timeSelector" id="pressurizedTimeTakenTime" placeholder="00:00">
<input type="number" class="form-control form-control-sm pressurizedTimeTaken" id="pressurizedTimeTakenDate" placeholder="일" th:value="${crackdownStatus.processResult.pressurizedTimeTaken}">
<input type="text" class="form-control form-control-sm pressurizedTimeTaken timeSelector" id="pressurizedTimeTakenTime" placeholder="00:00" th:value="${crackdownStatus.processResult.pressurizedTimeTaken}">
</div>
<input type="hidden" name="pressurizedTimeTaken" id="pressurizedTimeTaken">
</div>
<label for="warrantReqTakeDate" class="col-sm-1 col-form-label col-form-label-sm text-center fs-11">영장청구 소요시간</label>
<div class="col-sm-2">
<div class="input-group w-auto">
<input type="number" class="form-control form-control-sm warrantReqTake" id="warrantReqTakeDate" placeholder="일">
<input type="text" class="form-control form-control-sm warrantReqTake timeSelector" id="warrantReqTakeTime" placeholder="00:00">
<input type="number" class="form-control form-control-sm warrantReqTake" id="warrantReqTakeDate" placeholder="일" th:value="${crackdownStatus.processResult.warrantReqTakeTime}">
<input type="text" class="form-control form-control-sm warrantReqTake timeSelector" id="warrantReqTakeTime" placeholder="00:00" th:value="${crackdownStatus.processResult.warrantReqTakeTime}">
</div>
<input type="hidden" name="warrantReqTakeTime" id="warrantReqTake">
</div>
@ -347,50 +346,50 @@
<div class="col-sm-2">
<select class="form-select form-select-sm" id="isIvsgtStop" name="isIvsgtStop">
<option value="">선택</option>
<option value="O">선택</option>
<option value="X">선택</option>
<option value="O">O</option>
<option value="X">X</option>
</select>
</div>
</div>
<div class="mb-3 row">
<label for="evictionDt" class="col-sm-1 col-form-label col-form-label-sm text-center">퇴거일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm dateSelector" id="evictionDt" name="evictionDt">
<input type="text" class="form-control form-control-sm dateSelector" id="evictionDt" name="evictionDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.evictionDt}">
</div>
<label for="directHandoverDt" class="col-sm-1 col-form-label col-form-label-sm text-center">직접인계일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm dateTimeSelector" id="directHandoverDt" name="directHandoverDt">
<input type="text" class="form-control form-control-sm dateTimeSelector" id="directHandoverDt" name="directHandoverDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.directHandoverDt}">
</div>
<label for="handoverSeaPointLon" class="col-sm-1 col-form-label col-form-label-sm text-center">인계 해점</label>
<div class="col-sm-4">
<div class="input-group w-auto">
<input type="text" class="form-control form-control-sm" id="handoverSeaPointLon" name="handoverSeaPointLon" placeholder="00-00.00N">
<input type="text" class="form-control form-control-sm" id="handoverSeaPointLat" name="handoverSeaPointLat" placeholder="000-00.00E">
<input type="text" class="form-control form-control-sm" id="handoverSeaPointLon" name="handoverSeaPointLon" placeholder="00-00.00N" th:value="${crackdownStatus.processResult.handoverSeaPointLon}">
<input type="text" class="form-control form-control-sm" id="handoverSeaPointLat" name="handoverSeaPointLat" placeholder="000-00.00E" th:value="${crackdownStatus.processResult.handoverSeaPointLat}">
</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>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="handoverBoat" name="handoverBoat">
<input type="text" class="form-control form-control-sm" id="handoverBoat" name="handoverBoat" th:value="${crackdownStatus.processResult.handoverBoat}">
</div>
<label for="middleTakeoverBoat" class="col-sm-1 col-form-label col-form-label-sm text-center">중측 인수함정</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="middleTakeoverBoat" name="middleTakeoverBoat">
<input type="text" class="form-control form-control-sm" id="middleTakeoverBoat" name="middleTakeoverBoat" th:value="${crackdownStatus.processResult.middleTakeoverBoat}">
</div>
</div>
<hr>
<div class="mb-3 row">
<!--<div class="mb-3 row">
<label for="materialDamageDiv" class="col-sm-1 col-form-label col-form-label-sm text-center">물적피해</label>
<div class="col-sm-10 border p-2" id="materialDamageDiv">
<div class="row mb-1">
<label for="materialDamageCnt" class="col-sm-1 col-form-label col-form-label-sm text-center">발생건수</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="materialDamageCnt" name="materialDamageCnt">
<input type="text" class="form-control form-control-sm" id="materialDamageCnt" name="materialDamageCnt" placeholder="0건">
</div>
<label for="materialDamageAmount" class="col-sm-1 col-form-label col-form-label-sm text-center">피해액</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="materialDamageAmount" name="materialDamageAmount">
<input type="text" class="form-control form-control-sm" id="materialDamageAmount" name="materialDamageAmount" placeholder="0원">
</div>
</div>
<div class="row">
@ -407,15 +406,15 @@
<div class="row mb-1">
<label for="obstrExspdCnt" class="col-sm-1 col-form-label col-form-label-sm text-center">발생건수</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="obstrExspdCnt" name="obstrExspdCnt">
<input type="text" class="form-control form-control-sm" id="obstrExspdCnt" name="obstrExspdCnt" placeholder="0건">
</div>
<label for="personDamageCnt" class="col-sm-1 col-form-label col-form-label-sm text-center">피해인원</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="personDamageCnt" name="personDamageCnt">
<input type="text" class="form-control form-control-sm" id="personDamageCnt" name="personDamageCnt" placeholder="0인">
</div>
<label for="personDamageAmount" class="col-sm-1 col-form-label col-form-label-sm text-center">피해액</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="personDamageAmount" name="personDamageAmount">
<input type="text" class="form-control form-control-sm" id="personDamageAmount" name="personDamageAmount" placeholder="0원">
</div>
</div>
<div class="row">
@ -426,25 +425,25 @@
</div>
</div>
</div>
<hr>
<hr>-->
<div class="mb-3 row">
<label for="consignmentStartDt" class="col-sm-1 col-form-label col-form-label-sm text-center">위탁시작일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm dateSelector" id="consignmentStartDt" name="consignmentStartDt">
<input type="text" class="form-control form-control-sm dateSelector" id="consignmentStartDt" name="consignmentStartDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.consignmentStartDt}">
</div>
<label for="consignmentEndDt" class="col-sm-1 col-form-label col-form-label-sm text-center">위탁종료일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm dateSelector" id="consignmentEndDt" name="consignmentEndDt">
<input type="text" class="form-control form-control-sm dateSelector" id="consignmentEndDt" name="consignmentEndDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.consignmentEndDt}">
</div>
<label for="confiscationDt" class="col-sm-1 col-form-label col-form-label-sm text-center">몰수확정일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm dateSelector" id="confiscationDt" name="confiscationDt">
<input type="text" class="form-control form-control-sm dateSelector" id="confiscationDt" name="confiscationDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.confiscationDt}">
</div>
</div>
<div class="mb-3 row">
<label for="boatDisposalDt" class="col-sm-1 col-form-label col-form-label-sm text-center">폐선일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="boatDisposalDt" name="boatDisposalDt">
<input type="text" class="form-control form-control-sm dateSelector" id="boatDisposalDt" name="boatDisposalDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.boatDisposalDt}">
</div>
<label for="boatDisposalType" class="col-sm-1 col-form-label col-form-label-sm text-center">폐선종류</label>
<div class="col-sm-2">
@ -457,7 +456,7 @@
</div>
<label for="returnDt" class="col-sm-1 col-form-label col-form-label-sm text-center">환부일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="returnDt" name="returnDt">
<input type="text" class="form-control form-control-sm dateSelector" id="returnDt" name="returnDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.returnDt}">
</div>
</div>
<div class="mb-3 row">
@ -485,15 +484,49 @@
<option value="X">X</option>
</select>
</div>
<label for="sailorRestriction" class="col-sm-1 col-form-label col-form-label-sm text-center">선원구속</label>
</div>
<div class="mb-3 row">
<label for="normalSailorRestriction" class="col-sm-1 col-form-label col-form-label-sm text-center">
선원구속
<i class="bi bi-plus-square text-primary" id="sailorAddBtn"></i>
</label>
<div class="col-sm-10 row" id="sailorRestrictionDiv">
<div class="col-4">
<div class="input-group w-auto">
<select class="form-select form-select-sm isRestriction" id="normalSailorRestriction">
<option value="">선택</option>
<option value="O">O</option>
<option value="X">X</option>
</select>
<input type="text" class="form-control form-control-sm" id="normalSailor" placeholder="이름">
<button type="button" class="btn btn-sm btn-outline-secondary opacity-50 sailorRemoveBtn">
<i class="bi bi-dash-square text-danger"></i>
</button>
</div>
</div>
</div>
</div>
<div class="mb-3 row">
<label for="exileCnt" class="col-sm-1 col-form-label col-form-label-sm text-center">추방인원</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="exileCnt" name="exileCnt" placeholder="00명" th:value="${crackdownStatus.processResult.exileCnt}">
</div>
<label for="exileDt" class="col-sm-1 col-form-label col-form-label-sm text-center">추방일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm dateSelector" id="exileDt" name="exileDt" placeholder="0000-00-00" th:value="${crackdownStatus.processResult.exileDt}">
</div>
<label for="flight" class="col-sm-1 col-form-label col-form-label-sm text-center">항공편</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="flight" name="flight" th:value="${crackdownStatus.processResult.flight}">
</div>
</div>
<div class="row mb-3">
<label for="immigrationOfficeName" class="col-sm-1 col-form-label col-form-label-sm text-center">출입국 담당자</label>
<div class="col-sm-4">
<div class="input-group w-auto">
<select class="form-select form-select-sm" id="sailorRestriction">
<option value="">선택</option>
<option value="O">O</option>
<option value="X">X</option>
</select>
<input type="text" class="form-control form-control-sm" id="sailorRestrictionCnt" name="sailorRestrictionCnt" placeholder="인원수">
<input type="text" class="form-control form-control-sm" id="immigrationOfficeName" name="immigrationOfficeName" placeholder="사무소명" th:value="${crackdownStatus.processResult.immigrationOfficeName}">
<input type="text" class="form-control form-control-sm" id="immigrationOfficeOfficerName" name="immigrationOfficeOfficerName" placeholder="이름" th:value="${crackdownStatus.processResult.immigrationOfficeOfficerName}">
<input type="text" class="form-control form-control-sm" id="immigrationOfficeOfficerContact" name="immigrationOfficeOfficerContact" placeholder="연락처" th:value="${crackdownStatus.processResult.immigrationOfficeOfficerContact}">
</div>
</div>
</div>