국제범죄검거현황 화면구현

jiHyung 2022-10-19 18:01:15 +09:00
parent 3ca5daeff7
commit bb116154f0
13 changed files with 749 additions and 194 deletions

View File

@ -4,20 +4,14 @@ import com.dbnt.faisp.authMgt.service.AuthMgtService;
import com.dbnt.faisp.codeMgt.model.CodeMgt; import com.dbnt.faisp.codeMgt.model.CodeMgt;
import com.dbnt.faisp.codeMgt.service.CodeMgtService; import com.dbnt.faisp.codeMgt.service.CodeMgtService;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest; import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.SuspectPersonInfoRepository; import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.SuspectPersonInfoRepository;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.service.InternationalCrimeArrestService; import com.dbnt.faisp.faStatistics.internationalCrimeArrest.service.InternationalCrimeArrestService;
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.model.ArrestType;
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.model.BoardInvestigation;
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.model.RelatedReports;
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.service.BoardInvestigationService;
import com.dbnt.faisp.organMgt.model.OrganConfig; import com.dbnt.faisp.organMgt.model.OrganConfig;
import com.dbnt.faisp.organMgt.service.OrganConfigService; import com.dbnt.faisp.organMgt.service.OrganConfigService;
import com.dbnt.faisp.userInfo.model.UserInfo; import com.dbnt.faisp.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -35,7 +29,7 @@ public class InternationalCrimeArrestController {
private final SuspectPersonInfoRepository suspectPersonInfoRepository; private final SuspectPersonInfoRepository suspectPersonInfoRepository;
@GetMapping("/internationalCrimeArrest") @GetMapping("/internationalCrimeArrest")
public ModelAndView arrest(@AuthenticationPrincipal UserInfo loginUser,InternationalCrimeArrest internationalCrimeArrest) { public ModelAndView internationalCrimeArrest(@AuthenticationPrincipal UserInfo loginUser,InternationalCrimeArrest internationalCrimeArrest) {
ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrest"); ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrest");
//메뉴권한 확인 //메뉴권한 확인
@ -45,7 +39,13 @@ public class InternationalCrimeArrestController {
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList()); mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
internationalCrimeArrest.setQueryInfo(); internationalCrimeArrest.setQueryInfo();
mav.addObject("internationalCrimeArrestList", internationalCrimeArrestService.selectInternationalCrimeArrestList(internationalCrimeArrest)); List<InternationalCrimeArrest> internationalCrimeArrestList = internationalCrimeArrestService.selectInternationalCrimeArrestList(internationalCrimeArrest);
for (InternationalCrimeArrest ica:internationalCrimeArrestList) {
ica.setSuspectPersonInfoList(suspectPersonInfoRepository.findByIcaKey(ica.getIcaKey()));
}
mav.addObject("internationalCrimeArrestList", internationalCrimeArrestList);
internationalCrimeArrest.setContentCnt(internationalCrimeArrestService.selectInternationalCrimeArrestListCnt(internationalCrimeArrest)); internationalCrimeArrest.setContentCnt(internationalCrimeArrestService.selectInternationalCrimeArrestListCnt(internationalCrimeArrest));
internationalCrimeArrest.setPaginationInfo(); internationalCrimeArrest.setPaginationInfo();
mav.addObject("searchParams", internationalCrimeArrest); mav.addObject("searchParams", internationalCrimeArrest);
@ -53,7 +53,7 @@ public class InternationalCrimeArrestController {
} }
@GetMapping("/internationalCrimeArrest/internationalCrimeArrestEditModal") @GetMapping("/internationalCrimeArrest/internationalCrimeArrestEditModal")
public ModelAndView ivsgtEditModal(@AuthenticationPrincipal UserInfo loginUser, InternationalCrimeArrest internationalCrimeArrest){ public ModelAndView internationalCrimeArrestEditModal(@AuthenticationPrincipal UserInfo loginUser, InternationalCrimeArrest internationalCrimeArrest){
ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrestEditModal"); ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrestEditModal");
if(internationalCrimeArrest.getIcaKey()!=null){ if(internationalCrimeArrest.getIcaKey()!=null){
internationalCrimeArrest = internationalCrimeArrestService.selectInternationalCrimeArrest(internationalCrimeArrest.getIcaKey()); internationalCrimeArrest = internationalCrimeArrestService.selectInternationalCrimeArrest(internationalCrimeArrest.getIcaKey());
@ -69,11 +69,12 @@ public class InternationalCrimeArrestController {
} }
@GetMapping("/internationalCrimeArrest/internationalCrimeArrestViewModal") @GetMapping("/internationalCrimeArrest/internationalCrimeArrestViewModal")
public ModelAndView ivsgtViewModal(@AuthenticationPrincipal UserInfo loginUser, InternationalCrimeArrest internationalCrimeArrest){ public ModelAndView internationalCrimeArrestViewModal(@AuthenticationPrincipal UserInfo loginUser, InternationalCrimeArrest internationalCrimeArrest){
ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrestViewModal"); ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrestViewModal");
internationalCrimeArrest = internationalCrimeArrestService.selectInternationalCrimeArrest(internationalCrimeArrest.getIcaKey()); internationalCrimeArrest = internationalCrimeArrestService.selectInternationalCrimeArrest(internationalCrimeArrest.getIcaKey());
mav.addObject("internationalCrimeArrest", internationalCrimeArrest); mav.addObject("internationalCrimeArrest", internationalCrimeArrest);
mav.addObject("userSeq",loginUser.getUserSeq()); mav.addObject("userSeq",loginUser.getUserSeq());
mav.addObject("organConfigList", selectOrganList());
//메뉴권한 확인 //메뉴권한 확인
mav.addObject("accessAuth", authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/internationalCrimeArrest").get(0).getAccessAuth()); mav.addObject("accessAuth", authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/internationalCrimeArrest").get(0).getAccessAuth());
return mav; return mav;

View File

@ -1,7 +1,6 @@
package com.dbnt.faisp.faStatistics.internationalCrimeArrest.mapper; package com.dbnt.faisp.faStatistics.internationalCrimeArrest.mapper;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest; import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;
@ -10,5 +9,4 @@ import java.util.List;
public interface InternationalCrimeArrestMapper{ public interface InternationalCrimeArrestMapper{
List<InternationalCrimeArrest> selectInternationalCrimeArrestList(InternationalCrimeArrest internationalCrimeArrest); List<InternationalCrimeArrest> selectInternationalCrimeArrestList(InternationalCrimeArrest internationalCrimeArrest);
Integer selectInternationalCrimeArrestListCnt(InternationalCrimeArrest internationalCrimeArrest); Integer selectInternationalCrimeArrestListCnt(InternationalCrimeArrest internationalCrimeArrest);
List<SuspectPersonInfo> selectSuspectPersonInfoList(Integer icaKey);
} }

View File

@ -7,7 +7,6 @@ import lombok.Setter;
import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate; import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.RequestParam;
import javax.persistence.*; import javax.persistence.*;
import java.time.LocalDate; import java.time.LocalDate;
@ -76,6 +75,8 @@ public class InternationalCrimeArrest extends BaseModel {
private String destination; private String destination;
@Column(name = "content_status") @Column(name = "content_status")
private String contentStatus; private String contentStatus;
@Column(name = "crime_form")
private String crimeForm;
@Column(name = "wrt_organ") @Column(name = "wrt_organ")
private String wrtOrgan; private String wrtOrgan;
@Column(name = "wrt_user_seq") @Column(name = "wrt_user_seq")
@ -89,5 +90,13 @@ public class InternationalCrimeArrest extends BaseModel {
@Transient @Transient
private List<SuspectPersonInfo> suspectPersonInfoList; private List<SuspectPersonInfo> suspectPersonInfoList;
@Transient @Transient
private List<Integer> deleteSpikeyList; private List<Integer> deleteSpiKeyList;
@Transient
private String processResultEtc;
@Transient
private String smuggledGoodsEtc;
@Transient
private String meansEtc;
@Transient
private String purposesEtc;
} }

View File

@ -1,9 +1,7 @@
package com.dbnt.faisp.faStatistics.internationalCrimeArrest.model; package com.dbnt.faisp.faStatistics.internationalCrimeArrest.model;
import com.dbnt.faisp.config.BaseModel; import com.dbnt.faisp.config.BaseModel;
import lombok.Getter; import lombok.*;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate; import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
@ -39,11 +37,11 @@ public class SuspectPersonInfo extends BaseModel {
private LocalDateTime stayPeriodExpiredDt; private LocalDateTime stayPeriodExpiredDt;
@Column(name = "entry_visa") @Column(name = "entry_visa")
private String entryVisa; private String entryVisa;
@Column(name = "crime_form")
private String crimeForm;
@Transient @Transient
private List<Integer> icaKeyList; private List<Integer> icaKeyList;
@Transient @Transient
private List<Integer> spiKeyList; private List<Integer> spiKeyList;
@Transient
private String countryEtc;
} }

View File

@ -1,19 +1,8 @@
package com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository; package com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest; import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
public interface InternationalCrimeArrestRepository extends JpaRepository<InternationalCrimeArrest, Integer> { public interface InternationalCrimeArrestRepository extends JpaRepository<InternationalCrimeArrest, Integer> {
@Transactional
@Modifying
@Query("delete from SuspectPersonInfo s where s.spiKey in :idList")
void deleteAllByIdInQuery(@Param("idList") List<Integer> deleteSpikeyList);
} }

View File

@ -3,10 +3,18 @@ package com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo; import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
public interface SuspectPersonInfoRepository extends JpaRepository<SuspectPersonInfo, Integer> { public interface SuspectPersonInfoRepository extends JpaRepository<SuspectPersonInfo, SuspectPersonInfo> {
List<SuspectPersonInfo> findByIcaKey(Integer icaKey); List<SuspectPersonInfo> findByIcaKey(Integer icaKey);
@Transactional
@Modifying
@Query("delete from SuspectPersonInfo s where s.spiKey in :idList")
void deleteAllByIdInQuery(@Param("idList") List<Integer> deleteKeyList);
} }

View File

@ -2,26 +2,16 @@ package com.dbnt.faisp.faStatistics.internationalCrimeArrest.service;
import com.dbnt.faisp.config.BaseService; import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.config.FileInfo;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.mapper.InternationalCrimeArrestMapper; import com.dbnt.faisp.faStatistics.internationalCrimeArrest.mapper.InternationalCrimeArrestMapper;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest; import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo; import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.InternationalCrimeArrestRepository; import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.InternationalCrimeArrestRepository;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.SuspectPersonInfoRepository; import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.SuspectPersonInfoRepository;
import com.dbnt.faisp.fpiMgt.affair.model.HashTag;
import com.dbnt.faisp.fpiMgt.affair.repository.HashTagRepository;
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.mapper.BoardInvestigationMapper;
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.model.*;
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.repository.*;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@ -48,13 +38,32 @@ public class InternationalCrimeArrestService extends BaseService {
@Transactional @Transactional
public Integer savedInternationalCrimeArrest(InternationalCrimeArrest internationalCrimeArrest) { public Integer savedInternationalCrimeArrest(InternationalCrimeArrest internationalCrimeArrest) {
if (internationalCrimeArrest.getMeansEtc() != null) {
internationalCrimeArrest.setMeans(internationalCrimeArrest.getMeansEtc());
}
if (internationalCrimeArrest.getPurposesEtc() != null) {
internationalCrimeArrest.setPurpose(internationalCrimeArrest.getPurposesEtc());
}
if (internationalCrimeArrest.getSmuggledGoodsEtc() != null) {
internationalCrimeArrest.setSmuggledGoods(internationalCrimeArrest.getSmuggledGoodsEtc());
}
if (internationalCrimeArrest.getProcessResultEtc() != null) {
internationalCrimeArrest.setProcessResult(internationalCrimeArrest.getProcessResultEtc());
}
Integer icaKey = internationalCrimeArrestRepository.save(internationalCrimeArrest).getIcaKey(); Integer icaKey = internationalCrimeArrestRepository.save(internationalCrimeArrest).getIcaKey();
if (internationalCrimeArrest.getDeleteSpikeyList() != null) { if (internationalCrimeArrest.getDeleteSpiKeyList() != null) {
internationalCrimeArrestRepository.deleteAllByIdInQuery(internationalCrimeArrest.getDeleteSpikeyList()); suspectPersonInfoRepository.deleteAllByIdInQuery(internationalCrimeArrest.getDeleteSpiKeyList());
} }
if (internationalCrimeArrest.getSuspectPersonInfoList() != null) { if (internationalCrimeArrest.getSuspectPersonInfoList() != null) {
for(SuspectPersonInfo info: internationalCrimeArrest.getSuspectPersonInfoList()){
if (info.getCountryEtc() != null) {
info.setCountry(info.getCountryEtc());
}
info.setIcaKey(icaKey);
}
suspectPersonInfoRepository.saveAll(internationalCrimeArrest.getSuspectPersonInfoList()); suspectPersonInfoRepository.saveAll(internationalCrimeArrest.getSuspectPersonInfoList());
} }

View File

@ -23,33 +23,34 @@
<select id="selectInternationalCrimeArrestList" resultType="InternationalCrimeArrest" parameterType="InternationalCrimeArrest"> <select id="selectInternationalCrimeArrestList" resultType="InternationalCrimeArrest" parameterType="InternationalCrimeArrest">
SELECT SELECT
i.ica_key, i.ica_key,
i.organ, i.organ,
i.department, i.department,
i.crime_type, i.crime_type,
i.violation_type, i.violation_type,
i.crime_name, i.crime_name,
i.smuggling_amount, i.smuggling_amount,
i.occur_table, i.occur_table,
i.arrest_table, i.arrest_table,
i.suspect_table, i.suspect_table,
i.crime_awareness_dt, i.crime_awareness_dt,
i.case_sent_dt, i.case_sent_dt,
i.process_result, i.process_result,
i.other_crime, i.other_crime,
i.case_num, i.case_num,
i.case_overview, i.case_overview,
i.arrest_area, i.arrest_area,
i.means, i.means,
i.purpose, i.crime_form,
i.smuggled_goods, i.purpose,
i.crackdown_personel, i.smuggled_goods,
i.violation_amount, i.crackdown_personel,
i.destination, i.violation_amount,
i.content_status, i.destination,
i.wrt_organ, i.content_status,
i.wrt_user_seq, i.wrt_organ,
i.wrt_nm, i.wrt_user_seq,
i.wrt_dt i.wrt_nm,
i.wrt_dt
FROM international_crime_arrest i FROM international_crime_arrest i
<include refid="selectInternationalCrimeArrestListWhere"></include> <include refid="selectInternationalCrimeArrestListWhere"></include>
ORDER BY i.ica_key DESC ORDER BY i.ica_key DESC
@ -71,8 +72,7 @@
s.country, s.country,
s.stay_qualification, s.stay_qualification,
s.stay_period_expired_dt, s.stay_period_expired_dt,
s.entry_visa, s.entry_visa
s.crime_form
FROM suspect_person_info s FROM suspect_person_info s
INNER JOIN international_crime_arrest i INNER JOIN international_crime_arrest i
ON s.ica_key = i.ica_key ON s.ica_key = i.ica_key

View File

@ -2,6 +2,13 @@ $(document).on('click', '#icaAddBtn', function () {
getIcaEditModal(null); getIcaEditModal(null);
}); });
$(document).on('click', '#icaEditBtn', function () {
$("#icaViewModal").modal('hide');
$("#icaViewModal").modal('hide');
getIcaEditModal(Number($("#icaViewBody").find("[name='icaKey']").val()));
});
$(document).on('click', '#saveIcaBtn', function (){ $(document).on('click', '#saveIcaBtn', function (){
saveInternationalCrimeArrest('N') saveInternationalCrimeArrest('N')
}); });
@ -10,11 +17,20 @@ $(document).on('click', '#saveTempBtn', function (){
saveInternationalCrimeArrest('Y') saveInternationalCrimeArrest('Y')
}); });
$(document).on('click', '.tr', function (){
getIcaViewModal($(this).data('key'));
});
$(document).on('change', '#crimeForm', function (){ $(document).on('change', '#crimeForm', function (){
$('#crimeFormDiv').next().remove(); $('#crimeFormDiv').next().remove();
if ($(this).val() != 'CMF001') { if ($(this).val() != 'CMF001') {
$('#crimeFormDiv').after('<button type="button" class="col-sm-1 btn btn-sm btn-primary" id="spiAddBtn">+</button>'); $('#crimeFormDiv').after('<button type="button" class="col-sm-1 btn btn-sm btn-primary" id="spiAddBtn">+</button>');
} else { } else {
$.each($('.dynamic').children("input[name='spiKey']"), function (idx, item){
let deleteKey = item.value;
$("#icaEditForm").append('<input type="hidden" name="deleteSpiKeyList" value="' + deleteKey + '">');
});
$("#spiDiv").children('.dynamic').remove(); $("#spiDiv").children('.dynamic').remove();
} }
}); });
@ -65,7 +81,7 @@ $(document).on('click', '#spiAddBtn', function (){
$(document).on('change', '.country', function (){ $(document).on('change', '.country', function (){
if ($(this).val() == 'etc') { if ($(this).val() == 'etc') {
$(this).parent().after( $(this).parent().after(
'<div class="col-sm-2">' '<div class="col-auto">'
+ '<input type="text" class="form-control" name="countryEtc">' + '<input type="text" class="form-control" name="countryEtc">'
+ '</div>' + '</div>'
); );
@ -76,17 +92,19 @@ $(document).on('change', '.country', function (){
$(document).on('change', '#processResult', function (){ $(document).on('change', '#processResult', function (){
if ($(this).val() == 'etc') { if ($(this).val() == 'etc') {
$(this).parent().after( $(this).after(
'<div class="col-sm-2">' '<div class="col-auto">'
+ '<input type="text" class="form-control" name="processResultEtc">' + '<input type="text" class="form-control" name="processResultEtc">'
+ '</div>' + '</div>'
); );
} else { } else {
$(this).parent().next().remove(); $(this).next().remove();
} }
}); });
$(document).on('click', '#spiCancelBtn', function (){ $(document).on('click', '.spiCancelBtn', function (){
let deleteKey = $(this).parent().children("input[name='spiKey']").val();
$("#icaEditForm").append('<input type="hidden" name="deleteSpiKeyList" value="' + deleteKey + '">');
$(this).parent().remove(); $(this).parent().remove();
}); });
@ -106,7 +124,7 @@ $(document).on('change', '#crimeType', function (){
'<label class="col-sm-2 col-form-label text-center">밀수입출 품목</label>' '<label class="col-sm-2 col-form-label text-center">밀수입출 품목</label>'
+ '<div class="col-sm-2">' + '<div class="col-sm-2">'
+ '<select class="form-select form-select-sm" name="smuggledGoods" id="smugglingAmount">' + '<select class="form-select form-select-sm" name="smuggledGoods" id="smugglingAmount">'
+ '<option value=""></option>' + '<option>선택</option>'
+ smugglingAmount + smugglingAmount
+ '<option value="etc">기타</option>' + '<option value="etc">기타</option>'
+ '</select>' + '</select>'
@ -187,7 +205,7 @@ $(document).on('change', '#smugglingAmount', function (){
if ($(this).val() == 'etc') { if ($(this).val() == 'etc') {
$(this).parent().append( $(this).parent().append(
'<div class="col-auto">' '<div class="col-auto">'
+ '<input type="text" class="form-control" name="smugglingAmountEtc">' + '<input type="text" class="form-control" name="smuggledGoodsEtc">'
+ '</div>' + '</div>'
); );
} else { } else {
@ -269,8 +287,8 @@ function makeSeaAreaDiv(name) {
$('#arrestAreaDiv').append( $('#arrestAreaDiv').append(
'<label class="col-sm-2 col-form-label text-center">' + name + '시도 해역(해안)</label>' '<label class="col-sm-2 col-form-label text-center">' + name + '시도 해역(해안)</label>'
+ '<div class="col-sm-3">' + '<div class="col-sm-3">'
+ '<select class="form-select form-select-sm" name="smugglingAmount">' + '<select class="form-select form-select-sm" name="seaArea">'
+ '<option value=""></option>' + '<option>선택</option>'
+ seaArea + seaArea
+ '</select>' + '</select>'
+ '</div>' + '</div>'
@ -311,7 +329,7 @@ function makeMeansDiv(name, code) {
+ '<label class="col-sm-2 col-form-label text-center">' + name + ' 수단(방법)</label>' + '<label class="col-sm-2 col-form-label text-center">' + name + ' 수단(방법)</label>'
+ '<div class="col-sm-2">' + '<div class="col-sm-2">'
+ '<select class="form-select form-select-sm" name="means" id="means">' + '<select class="form-select form-select-sm" name="means" id="means">'
+ '<option value=""></option>' + '<option>선택</option>'
+ means + means
+ '<option value="etc">기타</option>' + '<option value="etc">기타</option>'
+ '</select>' + '</select>'
@ -331,7 +349,7 @@ function makePurposeDiv(name) {
'<label class="col-sm-2 col-form-label text-center">' + name + ' 목적(사유)</label>' '<label class="col-sm-2 col-form-label text-center">' + name + ' 목적(사유)</label>'
+ '<div class="col-sm-2">' + '<div class="col-sm-2">'
+ '<select class="form-select form-select-sm" name="purpose" id="purpose">' + '<select class="form-select form-select-sm" name="purpose" id="purpose">'
+ '<option value=""></option>' + '<option>선택</option>'
+ purpose + purpose
+ '<option value="etc">기타</option>' + '<option value="etc">기타</option>'
+ '</select>' + '</select>'
@ -359,15 +377,15 @@ function makeViolationAmountDiv() {
); );
} }
function getIcaViewModal(ivsgtKey){ function getIcaViewModal(icaKey){
$.ajax({ $.ajax({
url: '/faStatistics/internationalCrimeArrest/internationalCrimeArrestViewModal', url: '/faStatistics/internationalCrimeArrest/internationalCrimeArrestViewModal',
data: {ivsgtKey: ivsgtKey}, data: {icaKey: icaKey},
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",
success: function(html){ success: function(html){
$("#ivsgtViewBody").empty().append(html) $("#icaViewBody").empty().append(html)
$("#ivsgtViewModal").modal('show'); $("#icaViewModal").modal('show');
}, },
error:function(){ error:function(){
@ -384,7 +402,8 @@ function getIcaEditModal(icaKey){
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",
success: function(html){ success: function(html){
$("#icaEditModalContent").empty().append(html) $("#icaViewBody").empty();
$("#icaEditModalContent").empty().append(html);
$("#icaEditModal").modal('show'); $("#icaEditModal").modal('show');
$("#crimeAwarenessDtDiv").datepicker({ $("#crimeAwarenessDtDiv").datepicker({
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
@ -424,23 +443,34 @@ function saveInternationalCrimeArrest(contentState){
$(".spi-list").each(function (){ $(".spi-list").each(function (){
spiList.push({ spiList.push({
spiKey: $(this).find('input[name="spiKey"]').val() != undefined ? Number($(this).find('input[name="spiKey"]').val()) : null,
sex: $(this).find('select[name="sex"]').val(), sex: $(this).find('select[name="sex"]').val(),
age: $(this).find('select[name="age"]').val(), age: $(this).find('select[name="age"]').val(),
country: $(this).find('select[name="country"]').val() country: $(this).find('select[name="country"]').val(),
stayQualification: $(this).find('input[name="stayQualification"]').val() != undefined ? $(this).find('input[name="stayQualification"]').val() : null,
stayPeriodExpiredDt: $(this).find('input[name="stayPeriodExpiredDt"]').val() != undefined ? $(this).find('input[name="stayPeriodExpiredDt"]').val() : null,
countryEtc: $(this).find('input[name="countryEtc"]').val() != undefined ? $(this).find('input[name="countryEtc"]').val() : null
}); });
}); });
for (let i=0; i < spiList.length; i++) { for (let i=0; i < spiList.length; i++) {
if (spiList[i].spiKey != null) {
formData.append(`suspectPersonInfoList[${i}].spiKey`, spiList[i].spiKey);
}
formData.append(`suspectPersonInfoList[${i}].sex`, spiList[i].sex); formData.append(`suspectPersonInfoList[${i}].sex`, spiList[i].sex);
formData.append(`suspectPersonInfoList[${i}].age`, spiList[i].age); formData.append(`suspectPersonInfoList[${i}].age`, spiList[i].age);
formData.append(`suspectPersonInfoList[${i}].country`, spiList[i].country); formData.append(`suspectPersonInfoList[${i}].country`, spiList[i].country);
if (spiList[i].stayQualification != null) {
formData.append(`suspectPersonInfoList[${i}].stayQualification`, spiList[i].stayQualification);
}
if (spiList[i].stayPeriodExpiredDt != null) {
formData.append(`suspectPersonInfoList[${i}].stayPeriodExpiredDt`, spiList[i].stayPeriodExpiredDt);
}
if (spiList[i].countryEtc != null) {
formData.append(`suspectPersonInfoList[${i}].countryEtc`, spiList[i].countryEtc);
}
} }
/*
// formData 출력
for (const [key,value] of formData.entries()) {
console.log(`${key}: ${value}`);
}
*/
$.ajax({ $.ajax({
type : 'POST', type : 'POST',
data : formData, data : formData,

View File

@ -90,6 +90,7 @@ function getIvsgtEditModal(ivsgtKey, ivsgtType){
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",
success: function(html){ success: function(html){
$("#ivsgtViewBody").empty();
$("#ivsgtEditModalContent").empty().append(html) $("#ivsgtEditModalContent").empty().append(html)
$("#ivsgtEditModal").modal('show'); $("#ivsgtEditModal").modal('show');
$("[name='contentInfo']").summernote({ $("[name='contentInfo']").summernote({

View File

@ -22,49 +22,102 @@
aria-labelledby="arrest-tab"> aria-labelledby="arrest-tab">
<table class="table table-striped"> <table class="table table-striped">
<thead> <thead>
<tr> <tr>
<th>지방청</th> <th rowspan="2">지방청</th>
<th>경찰서</th> <th rowspan="2">경찰서</th>
<th> <th rowspan="2">
<div>범죄테마</div> <div>범죄테마</div>
<div>(대분류)</div> <div>(대분류)</div>
</th> </th>
<th> <th rowspan="2">
<div>위반유형</div> <div>위반유형</div>
<div>(중분류)</div> <div>(중분류)</div>
</th> </th>
<th> <th rowspan="2">
<div>죄명</div> <div>죄명</div>
<div>(소분류)</div> <div>(소분류)</div>
</th> </th>
<th>발생원표</th> <th rowspan="2">발생원표</th>
<th>검거원표</th> <th rowspan="2">검거원표</th>
<th>피의자원표</th> <th rowspan="2">피의자원표</th>
<th>피의자 인적사항</th> <th colspan="3">피의자 인적사항</th>
<th>범죄인지</th> <th rowspan="2">범죄인지</th>
<th>사건송치</th> <th rowspan="2">사건송치</th>
<th>신병처리</th> <th rowspan="2">신병처리</th>
</tr> </tr>
<tr>
<th>성별</th>
<th>나이</th>
<th>국적</th>
</tr>
</thead> </thead>
<tbody> <tbody>
<tr class="tr" th:each="internationalCrimeArrest:${internationalCrimeArrestList}" th:data-key="${internationalCrimeArrest.icaKey}"> <th:block th:each="internationalCrimeArrest:${internationalCrimeArrestList}">
<th:block th:each="commonCode:${session.commonCode.get('OG')}"> <tr class="tr" th:data-key="${internationalCrimeArrest.icaKey}">
<td th:if="${internationalCrimeArrest.organ eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td> <th:block th:if="${internationalCrimeArrest.organ eq null || internationalCrimeArrest.organ eq ''}">
<td></td>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<td th:if="${internationalCrimeArrest.organ eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<th:block th:if="${internationalCrimeArrest.department eq null || internationalCrimeArrest.department eq ''}">
<td></td>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<td th:if="${internationalCrimeArrest.department eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<th:block th:if="${internationalCrimeArrest.crimeType eq null || internationalCrimeArrest.crimeType eq ''}">
<td></td>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('CTH')}">
<td th:if="${internationalCrimeArrest.crimeType eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<th:block th:if="${internationalCrimeArrest.violationType eq null || internationalCrimeArrest.violationType eq ''}">
<td></td>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('VLT')}">
<td th:if="${internationalCrimeArrest.violationType eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<td th:text="${internationalCrimeArrest.crimeName}"></td>
<td th:text="${internationalCrimeArrest.occurTable}"></td>
<td th:text="${internationalCrimeArrest.arrestTable}"></td>
<td th:text="${internationalCrimeArrest.suspectTable}"></td>
<th:block th:if="${#lists.size(internationalCrimeArrest.suspectPersonInfoList) < 1}">
<td></td>
<td></td>
<td></td>
</th:block>
<td colspan="3" th:if="${#lists.size(internationalCrimeArrest.suspectPersonInfoList) >= 1}">
<table>
<tr class="tr" th:each="suspectPersonInfo:${internationalCrimeArrest.suspectPersonInfoList}">
<th:block th:each="commonCode:${session.commonCode.get('SEX')}">
<td th:if="${suspectPersonInfo.sex eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('AGE')}">
<td th:if="${suspectPersonInfo.age eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('NNY')}">
<td th:if="${suspectPersonInfo.country eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<th:block th:if="${suspectPersonInfo.country ne null && !#strings.contains(suspectPersonInfo.country, 'NNY')}">
<td th:text="${suspectPersonInfo.country}"></td>
</th:block>
</tr>
</table>
</td>
<td th:text="${#temporals.format(internationalCrimeArrest.crimeAwarenessDt, 'yyyy-MM-dd')}"></td>
<td th:text="${#temporals.format(internationalCrimeArrest.caseSentDt, 'yyyy-MM-dd')}"></td>
<th:block th:if="${internationalCrimeArrest.processResult eq null}">
<td></td>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('PCR')}">
<td th:if="${internationalCrimeArrest.processResult eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<th:block th:if="${internationalCrimeArrest.processResult ne null && !#strings.contains(internationalCrimeArrest.processResult, 'PCR')}">
<td th:text="${internationalCrimeArrest.processResult}"></td>
</th:block>
</tr>
</th:block> </th:block>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<td th:if="${internationalCrimeArrest.department eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<td th:text="${internationalCrimeArrest.crimeType}"></td>
<td th:text="${internationalCrimeArrest.violationType}"></td>
<td th:text="${internationalCrimeArrest.crimeName}"></td>
<td th:text="${internationalCrimeArrest.occurTable}"></td>
<td th:text="${internationalCrimeArrest.arrestTable}"></td>
<td th:text="${internationalCrimeArrest.suspectTable}"></td>
<td th:text="${internationalCrimeArrest.suspectTable}"></td>
<td th:text="${#temporals.format(internationalCrimeArrest.crimeAwarenessDt, 'yyyy-MM-dd')}"></td>
<td th:text="${#temporals.format(internationalCrimeArrest.caseSentDt, 'yyyy-MM-dd')}"></td>
<td th:text="${internationalCrimeArrest.processResult}"></td>
</tr>
</tbody> </tbody>
</table> </table>
<button id="ivsgtAddBtn">관리자마감</button> <button id="ivsgtAddBtn">관리자마감</button>

View File

@ -1,11 +1,12 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org"> <html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="planEditModalLabel">국제범죄검거 현황 등록</h5> <h5 class="modal-title" id="icaEditModalLabel" th:text="${internationalCrimeArrest.icaKey eq null ? '국제범죄검거 현황 수정' : '국제범죄검거 현황 등록'}">></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<div class="modal-body" id="icaEditBody"> <div class="modal-body" id="icaEditBody">
<form action="#" method="post" id="icaEditForm"> <form action="#" method="post" id="icaEditForm">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<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" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<input type="hidden" name="icaKey" th:value="${internationalCrimeArrest.icaKey}"> <input type="hidden" name="icaKey" th:value="${internationalCrimeArrest.icaKey}">
@ -14,13 +15,13 @@
<input type="hidden" name="wrtDt" th:value="${#temporals.format(internationalCrimeArrest.wrtDt, 'yyyy-MM-dd HH:mm')}"> <input type="hidden" name="wrtDt" th:value="${#temporals.format(internationalCrimeArrest.wrtDt, 'yyyy-MM-dd HH:mm')}">
<input type="hidden" id="contentStatus" name="contentStatus"> <input type="hidden" id="contentStatus" name="contentStatus">
<div class="mb-3 row"> <div class="mb-3 row">
<label class="col-sm-2 col-form-label text-center">지방청w</label> <label class="col-sm-2 col-form-label text-center">지방청</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="organ"> <select class="form-select form-select-sm" name="organ">
<option value="">지방청</option> <option value="">선택</option>
<th:block th:each="organConfig:${organConfigList}"> <th:block th:each="organConfig:${organConfigList}">
<th:block th:if="${organConfig.parentOrgan eq 'OG001' && organConfig.organType ne 'OGC001'}"> <th:block th:if="${organConfig.parentOrgan eq 'OG001' && organConfig.organType ne 'OGC001'}">
<option th:value="${organConfig.organCd}" th:text="${organConfig.organNm}"></option> <option th:value="${organConfig.organCd}" th:text="${organConfig.organNm}" th:selected="${organConfig.organCd eq internationalCrimeArrest.organ}"></option>
</th:block> </th:block>
</th:block> </th:block>
</select> </select>
@ -28,10 +29,10 @@
<label class="col-sm-2 col-form-label text-center">관할서</label> <label class="col-sm-2 col-form-label text-center">관할서</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="department"> <select class="form-select form-select-sm" name="department">
<option value="">관할서</option> <option value="">선택</option>
<th:block th:each="organConfig:${organConfigList}"> <th:block th:each="organConfig:${organConfigList}">
<th:block th:if="${organConfig.parentOrgan ne null && organConfig.organType ne 'OGC002'}"> <th:block th:if="${organConfig.parentOrgan ne null && organConfig.organType ne 'OGC002'}">
<option th:value="${organConfig.organCd}" th:text="${organConfig.organNm}"></option> <option th:value="${organConfig.organCd}" th:text="${organConfig.organNm}" th:selected="${organConfig.organCd eq internationalCrimeArrest.department}"></option>
</th:block> </th:block>
</th:block> </th:block>
</select> </select>
@ -47,7 +48,7 @@
<label class="col-sm-2 col-form-label text-center">범죄테마</label> <label class="col-sm-2 col-form-label text-center">범죄테마</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="crimeType" id="crimeType"> <select class="form-select form-select-sm" name="crimeType" id="crimeType">
<option value="">범죄테마</option> <option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('CTH')}"> <th:block th:each="commonCode:${session.commonCode.get('CTH')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.crimeType}"></option> th:selected="${commonCode.itemCd eq internationalCrimeArrest.crimeType}"></option>
@ -57,17 +58,40 @@
<label class="col-sm-2 col-form-label text-center">위반유형</label> <label class="col-sm-2 col-form-label text-center">위반유형</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="violationType" id="violationType"> <select class="form-select form-select-sm" name="violationType" id="violationType">
<option value="">위반유형</option> <option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('VLT')}"> <th:block th:each="commonCode:${session.commonCode.get('VLT')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.violationType}"></option> th:selected="${commonCode.itemCd eq internationalCrimeArrest.violationType}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
</div> </div>
<div class="mb-3 row" id="smugglingAmountDiv"> <div class="mb-3 row" id="smugglingAmountDiv">
<th:block th:if="${internationalCrimeArrest.crimeType eq 'CTH002'}">
<label class="col-sm-2 col-form-label text-center">밀수입출 품목</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="smuggledGoods" id="smugglingAmount">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('SG')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
</th:block>
<option value="etc" th:selected="${internationalCrimeArrest.smuggledGoods ne null && internationalCrimeArrest.smuggledGoods ne '' && !#strings.contains(internationalCrimeArrest.smuggledGoods, 'SG')}">기타</option>
</select>
<th:block th:if="${internationalCrimeArrest.smuggledGoods ne null && internationalCrimeArrest.smuggledGoods ne '' && !#strings.contains(internationalCrimeArrest.smuggledGoods, 'SG')}">
<div class="col-auto">
<input type="text" class="form-control" name="smuggledGoodsEtc" th:value="${internationalCrimeArrest.smuggledGoods}">
</div>
</th:block>
</div>
<label class="col-sm-2 col-form-label text-center">밀수가액</label>
<div class="col-sm-2">
<input type="number" min="0" name="smugglingAmount" th:value="${internationalCrimeArrest.smugglingAmount}">
</div>
<label class="col-sm-2 col-form-label text-center">단속 인원(경찰관)</label>
<div class="col-sm-2">
<input type="number" min="0" name="caseNum" th:value="${internationalCrimeArrest.caseNum}">
</div>
</th:block>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
<label class="col-sm-2 col-form-label text-center">발생원표</label> <label class="col-sm-2 col-form-label text-center">발생원표</label>
@ -89,22 +113,24 @@
<select class="form-select form-select-sm" name="crimeForm" id="crimeForm"> <select class="form-select form-select-sm" name="crimeForm" id="crimeForm">
<th:block th:each="commonCode:${session.commonCode.get('CMF')}"> <th:block th:each="commonCode:${session.commonCode.get('CMF')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.crimeForm}"></option> th:selected="${commonCode.itemCd eq internationalCrimeArrest.crimeForm}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
<th:block th:if="${internationalCrimeArrest.crimeForm ne 'CMF001'}">
<button type="button" class="col-sm-1 btn btn-sm btn-primary" id="spiAddBtn">+</button>
</th:block>
</div> </div>
<div class="mb-3 row" id="spiParentDiv"> <div class="mb-3 row" id="spiParentDiv">
<label class="col-sm-2 col-form-label text-center">피의자 인적사항</label> <label class="col-sm-2 col-form-label text-center">피의자 인적사항</label>
<div class="col-sm-10" id="spiDiv"> <div class="col-sm-10" id="spiDiv">
<div class="row spi-list"> <th:block th:if="${#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList)}">
<th:block th:if="${#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList)}"> <div class="row spi-list">
<label class="col-sm-1 col-form-label text-center">성별</label> <label class="col-sm-1 col-form-label text-center">성별</label>
<div class="col-sm-2" id="sexFormDiv"> <div class="col-sm-2" id="sexFormDiv">
<select class="form-select form-select-sm" name="sex"> <select class="form-select form-select-sm" name="sex">
<th:block th:each="commonCode:${session.commonCode.get('SEX')}"> <th:block th:each="commonCode:${session.commonCode.get('SEX')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.sex}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
@ -112,8 +138,7 @@
<div class="col-sm-2" id="ageFormDiv"> <div class="col-sm-2" id="ageFormDiv">
<select class="form-select form-select-sm" name="age"> <select class="form-select form-select-sm" name="age">
<th:block th:each="commonCode:${session.commonCode.get('AGE')}"> <th:block th:each="commonCode:${session.commonCode.get('AGE')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.age}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
@ -121,72 +146,177 @@
<div class="col-sm-2" id="countryFormDiv"> <div class="col-sm-2" id="countryFormDiv">
<select class="form-select form-select-sm country" name="country"> <select class="form-select form-select-sm country" name="country">
<th:block th:each="commonCode:${session.commonCode.get('NNY')}"> <th:block th:each="commonCode:${session.commonCode.get('NNY')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.conutry}"></option>
</th:block> </th:block>
<option value="etc">기타</option> <option value="etc">기타</option>
</select> </select>
</div> </div>
</th:block> </div>
<th:block th:if="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList)}"> </th:block>
<th:block th:each="suspectPersonInfo:${internationalCrimeArrest.suspectPersonInfoList}"> <th:block th:if="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList)}">
<th:block th:each="suspectPersonInfo, i : ${internationalCrimeArrest.suspectPersonInfoList}">
<div class="row spi-list" th:classappend="${i.index > 0 ? 'dynamic' : ''}">
<input type="hidden" name="spiKey" th:value="${suspectPersonInfo.spiKey}">
<label class="col-sm-1 col-form-label text-center">성별</label> <label class="col-sm-1 col-form-label text-center">성별</label>
<th:block th:each="commonCode:${session.commonCode.get('SEX')}"> <div class="col-sm-2" id="sexFormDiv">
<th:block th:if="${commonCode.itemCd eq suspectPersonInfo.sex}"> <select class="form-select form-select-sm" name="sex">
<select class="form-select form-select-sm" name="sex"> <th:block th:each="commonCode:${session.commonCode.get('SEX')}">
<th:block th:each="commonCode:${session.commonCode.get('SEX')}"> <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${suspectPersonInfo.sex ne null && commonCode.itemCd eq suspectPersonInfo.sex}"></option>
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.sex}"></option> </th:block>
</th:block> </select>
</select> </div>
</th:block>
</th:block>
<label class="col-sm-1 col-form-label text-center">나이</label> <label class="col-sm-1 col-form-label text-center">나이</label>
<th:block th:each="commonCode:${session.commonCode.get('AGE')}"> <div class="col-sm-2" id="ageFormDiv">
<th:block th:if="${commonCode.itemCd eq suspectPersonInfo.age}"> <select class="form-select form-select-sm" name="age">
<select class="form-select form-select-sm" name="age"> <th:block th:each="commonCode:${session.commonCode.get('AGE')}">
<th:block th:each="commonCode:${session.commonCode.get('AGE')}"> <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${suspectPersonInfo.age ne null && commonCode.itemCd eq suspectPersonInfo.age}"></option>
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.age}"></option> </th:block>
</th:block> </select>
</select> </div>
</th:block>
</th:block>
<label class="col-sm-1 col-form-label text-center">국적</label> <label class="col-sm-1 col-form-label text-center">국적</label>
<th:block th:each="commonCode:${session.commonCode.get('NNY')}"> <div class="col-sm-2" id="countryFormDiv">
<th:block th:if="${commonCode.itemCd eq suspectPersonInfo.country}"> <select class="form-select form-select-sm country" name="country" id="country">
<select class="form-select form-select-sm country" name="country" id="country"> <th:block th:each="commonCode:${session.commonCode.get('NNY')}">
<th:block th:each="commonCode:${session.commonCode.get('NNY')}"> <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${suspectPersonInfo.country ne null && commonCode.itemCd eq suspectPersonInfo.country}"></option>
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.conutry}"></option> </th:block>
</th:block> <option value="etc" th:selected="${suspectPersonInfo.country ne null && suspectPersonInfo.country ne '' && !#strings.contains(suspectPersonInfo.country, 'NNY')}">기타</option>
<option value="etc">기타</option> </select>
</select> </div>
</th:block> <th:block th:if="${suspectPersonInfo.country ne null && suspectPersonInfo.country ne '' && !#strings.contains(suspectPersonInfo.country, 'NNY')}">
<div class="col-sm-2">
<input type="text" class="form-control" name="countryEtc" th:value="${suspectPersonInfo.country}">
</div>
</th:block> </th:block>
<th:block th:if="${i.index > 0}">
<button type="button" class="col-sm-1 btn btn-sm btn-primary spiCancelBtn">-</button>
</th:block>
</div>
</th:block>
</th:block>
</div>
</div>
<div class="mb-3 row" id="spiInfoDiv">
<th:block th:if="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList)}">
<th:block th:if="${internationalCrimeArrest.crimeType eq 'CTH002' || internationalCrimeArrest.violationType eq 'VLT005'}">
<label class="col-sm-2 col-form-label text-center" th:text="${internationalCrimeArrest.violationType eq 'VLT005' ? '불법체류 및 취업' : '피의자 정보'}">피의자 정보</label>
<div class="col-sm-10">
<div class="row" id="spiWrapper">
<th:block th:if="${internationalCrimeArrest.violationType eq 'VLT005'}">
<label class="col-sm-2 col-form-label text-center entryVisa">입국비자</label>
<div class="col-sm-2 entryVisa">
<input type="text" class="form-control" name="entryVisa" th:value="${internationalCrimeArrest.suspectPersonInfoList[0].entryVisa}">
</div>
</th:block>
<label class="col-sm-2 col-form-label text-center">체류 자격</label>
<div class="col-sm-2">
<input type="text" class="form-control" name="stayQualification" th:value="${internationalCrimeArrest.suspectPersonInfoList[0].stayQualification}">
</div>
<label class="col-sm-2 col-form-label text-center">체류기간 만료일</label>
<div class="col-sm-2 input-daterange" id="stayQualificationDiv">
<input type="text" class="form-control" name="stayPeriodExpiredDt" id="stayPeriodExpiredDt" th:value="${#temporals.format(internationalCrimeArrest.suspectPersonInfoList[0].stayPeriodExpiredDt, 'yyyy-MM-dd HH:mm')}">
</div>
</div>
</div>
</th:block>
</th:block>
</div>
<th:block th:if="${internationalCrimeArrest.violationType eq 'VLT001' || internationalCrimeArrest.violationType eq 'VLT002' || internationalCrimeArrest.violationType eq 'VLT003'|| internationalCrimeArrest.violationType eq 'VLT004'}">
<div class="mb-3 row" id="meansDiv">
<th:block th:if="${internationalCrimeArrest.violationType eq 'VLT001' || internationalCrimeArrest.violationType eq 'VLT003'|| internationalCrimeArrest.violationType eq 'VLT004'}">
<label class="col-sm-2 col-form-label text-center" th:text="${internationalCrimeArrest.violationType eq 'VLT001' ? '밀입국 출발지(국가)' : (internationalCrimeArrest.violationType eq 'VLT003' ? '밀출국 행선지(도착예정지)' : '밀항 행선지(도착예정지)')}"></label>
<div class="col-sm-2">
<input type="text" class="form-control" name="destination">
</div>
</th:block>
<label class="col-sm-2 col-form-label text-center" th:text="${internationalCrimeArrest.violationType eq 'VLT001' ? '밀입국 수단(방법)' : (internationalCrimeArrest.violationType eq 'VLT002' ? '도외이탈 수단(방법)' : (internationalCrimeArrest.violationType eq 'VLT003' ? '밀출국 수단(방법)' : '밀항 수단(방법)'))}"></label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="means" id="means">
<option value="">선택</option>
<th:block th:if="${internationalCrimeArrest.violationType eq 'VLT001'}" th:each="commonCode:${session.commonCode.get('MS1')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.means}"></option>
</th:block> </th:block>
<th:block th:if="${internationalCrimeArrest.violationType ne 'VLT001'}" th:each="commonCode:${session.commonCode.get('MS2')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.means}"></option>
</th:block>
<option value="etc" th:selected="${internationalCrimeArrest.means ne null && internationalCrimeArrest.means ne '' && !#strings.contains(internationalCrimeArrest.means, 'MS1') && !#strings.contains(internationalCrimeArrest.means, 'MS2')}">기타</option>
</select>
<th:block th:if="${internationalCrimeArrest.means ne null && internationalCrimeArrest.means ne '' && !#strings.contains(internationalCrimeArrest.means, 'MS1') && !#strings.contains(internationalCrimeArrest.means, 'MS2')}">
<div class="col-auto">
<input type="text" class="form-control" name="meansEtc" th:value="${internationalCrimeArrest.means}">
</div>
</th:block>
</div>
<label class="col-sm-2 col-form-label text-center" th:text="${internationalCrimeArrest.violationType eq 'VLT001' ? '밀입국 목적(사유)' : (internationalCrimeArrest.violationType eq 'VLT002' ? '도외이탈 목적(시유)' : (internationalCrimeArrest.violationType eq 'VLT003' ? '밀출국 목적(사유)' : '밀항 목적(사유)'))}"></label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="purpose" id="purpose">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('PPS')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.purpose}"></option>
</th:block>
<option value="etc" th:selected="${internationalCrimeArrest.purpose ne null && internationalCrimeArrest.purpose ne '' && !#strings.contains(internationalCrimeArrest.purpose, 'PPS')}">기타</option>
</select>
<th:block th:if="${internationalCrimeArrest.purpose ne null && internationalCrimeArrest.purpose ne '' && !#strings.contains(internationalCrimeArrest.purpose, 'PPS')}">
<div class="col-auto">
<input type="text" class="form-control" name="purposeEtc" th:value="${internationalCrimeArrest.purpose}">
</div>
</th:block> </th:block>
</div> </div>
</div> </div>
</div> <div class="mb-3 row" id="arrestAreaDiv">
<label class="col-sm-2 col-form-label text-center">검거 지역 </label>
<div class="col-sm-2">
<input type="text" class="form-control" name="arrestArea" th:value="${internationalCrimeArrest.arrestArea}">
</div>
<label class="col-sm-2 col-form-label text-center" th:text="${internationalCrimeArrest.violationType eq 'VLT001' ? '밀입국 시도 해역(해안)' : (internationalCrimeArrest.violationType eq 'VLT002' ? '도외이탈 시도 해역(해안)' : (internationalCrimeArrest.violationType eq 'VLT003' ? '밀출국 시도 해역(해안)' : '밀항 시도 해역(해안)'))}"></label>
<div class="col-sm-3">
<select class="form-select form-select-sm" name="seaArea">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('SAA')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.seaArea}"></option>
</th:block>
</select>
</div>
</div>
</th:block>
<th:block th:if="${internationalCrimeArrest.violationAmount ne null}">
<div class="mb-3 row" id="violationAmountDiv">
<label class="col-sm-2 col-form-label text-center">표시위반 금액(만원)</label>
<div class="col-sm-2">
<input type="number" min="0" class="form-control" name="violationAmount" th:value="${internationalCrimeArrest.violationAmount}">
</div>
</div>
</th:block>
<div class="mb-3 row"> <div class="mb-3 row">
<label class="col-sm-2 col-form-label text-center">범죄인지</label> <label class="col-sm-2 col-form-label text-center">범죄인지</label>
<div class="col-sm-1 input-daterange" id="crimeAwarenessDtDiv"> <div class="col-sm-2 input-daterange" id="crimeAwarenessDtDiv">
<input type="text" class="form-control" name="crimeAwarenessDt" id="crimeAwarenessDt" th:value="${#temporals.format(internationalCrimeArrest.crimeAwarenessDt, 'yyyy-MM-dd HH:mm')}" readonly> <input type="text" class="form-control" name="crimeAwarenessDt" id="crimeAwarenessDt" th:value="${#temporals.format(internationalCrimeArrest.crimeAwarenessDt, 'yyyy-MM-dd HH:mm')}">
</div> </div>
<label class="col-sm-2 col-form-label text-center">사건송치</label> <label class="col-sm-2 col-form-label text-center">사건송치</label>
<div class="col-sm-1 input-daterange" id="caseSentDtDiv"> <div class="col-sm-2 input-daterange" id="caseSentDtDiv">
<input type="text" class="form-control" name="caseSentDt" id="caseSentDt" th:value="${#temporals.format(internationalCrimeArrest.caseSentDt, 'yyyy-MM-dd HH:mm')}" readonly> <input type="text" class="form-control" name="caseSentDt" id="caseSentDt" th:value="${#temporals.format(internationalCrimeArrest.caseSentDt, 'yyyy-MM-dd HH:mm')}">
</div> </div>
<label class="col-sm-2 col-form-label text-center">신병처리</label> <label class="col-sm-2 col-form-label text-center">신병처리</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="processResult" id="processResult"> <select class="form-select form-select-sm" name="processResult" id="processResult">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('PCR')}"> <th:block th:each="commonCode:${session.commonCode.get('PCR')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.processResult}"></option> th:selected="${commonCode.itemCd eq internationalCrimeArrest.processResult}"></option>
</th:block> </th:block>
<option value="etc">기타</option> <option value="etc" th:selected="${internationalCrimeArrest.processResult ne null && internationalCrimeArrest.processResult ne '' && !#strings.contains(internationalCrimeArrest.processResult, 'PCR')}">기타</option>
</select> </select>
<th:block th:if="${internationalCrimeArrest.processResult ne null && internationalCrimeArrest.processResult ne '' && !#strings.contains(internationalCrimeArrest.processResult, 'PCR')}">
<div class="col-auto">
<input type="text" class="form-control" name="processResultEtc" th:value="${internationalCrimeArrest.processResult}">
</div>
</th:block>
</div> </div>
</div> </div>
<div class="mb-3 row justify-content-center"> <div class="mb-3 row justify-content-center">

View File

@ -0,0 +1,329 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header">
<h5 class="modal-title" id="planEditModalLabel">국제범죄검거 현황</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body" id="icaEditBody">
<form action="#" method="post" id="icaEditForm">
<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="icaKey" th:value="${internationalCrimeArrest.icaKey}">
<input type="hidden" name="wrtOrgan" th:value="${internationalCrimeArrest.wrtOrgan}">
<input type="hidden" name="wrtNm" th:value="${internationalCrimeArrest.wrtNm}">
<input type="hidden" name="wrtDt" th:value="${#temporals.format(internationalCrimeArrest.wrtDt, 'yyyy-MM-dd HH:mm')}">
<input type="hidden" id="contentStatus" name="contentStatus">
<div class="mb-3 row">
<label class="col-sm-2 col-form-label text-center">지방청</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="organ" disabled>
<option value=""></option>
<th:block th:each="organConfig:${organConfigList}">
<th:block th:if="${organConfig.parentOrgan eq 'OG001' && organConfig.organType ne 'OGC001'}">
<option th:value="${organConfig.organCd}" th:text="${organConfig.organNm}" th:selected="${organConfig.organCd eq internationalCrimeArrest.organ}"></option>
</th:block>
</th:block>
</select>
</div>
<label class="col-sm-2 col-form-label text-center">관할서</label>
<div class="col-sm-2">
<th:block th:each="organConfig:${organConfigList}">
<th:block th:if="${organConfig.parentOrgan ne null && organConfig.organType ne 'OGC002'}">
<div th:utext="${organConfig.organCd eq internationalCrimeArrest.department ? organConfig.organNm : ''}"></div>
</th:block>
</th:block>
</div>
<th:block th:if="${internationalCrimeArrest.crimeType ne 'CTH002'}">
<div class="col-sm-4 row" id="crimeNameDiv">
<label class="col-sm-2 col-form-label text-center">죄명</label>
<div class="col-sm-10 input-daterange">
<input type="text" class="form-control border-0" name="crimeName" th:value="${internationalCrimeArrest.crimeName}" readonly>
</div>
</div>
</th:block>
</div>
<div class="mb-3 row">
<label class="col-sm-2 col-form-label text-center">범죄테마</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="crimeType" id="crimeType" disabled>
<option value="">범죄테마</option>
<th:block th:each="commonCode:${session.commonCode.get('CTH')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.crimeType}"></option>
</th:block>
</select>
</div>
<label class="col-sm-2 col-form-label text-center">위반유형</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="violationType" id="violationType" disabled>
<option value="">위반유형</option>
<th:block th:each="commonCode:${session.commonCode.get('VLT')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.violationType}"></option>
</th:block>
</select>
</div>
</div>
<div class="mb-3 row" id="smugglingAmountDiv">
<th:block th:if="${internationalCrimeArrest.crimeType eq 'CTH002'}">
<label class="col-sm-2 col-form-label text-center">밀수입출 품목</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="smuggledGoods" id="smugglingAmount" disabled>
<option>선택</option>
<th:block th:each="commonCode:${session.commonCode.get('SG')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
</th:block>
<option value="etc" th:selected="${internationalCrimeArrest.smuggledGoods ne null && internationalCrimeArrest.smuggledGoods ne '' && !#strings.contains(internationalCrimeArrest.smuggledGoods, 'SG')}">기타</option>
</select>
<th:block th:if="${internationalCrimeArrest.smuggledGoods ne null && internationalCrimeArrest.smuggledGoods ne '' && !#strings.contains(internationalCrimeArrest.smuggledGoods, 'SG')}">
<div class="col-auto">
<input type="text" class="form-control" name="smuggledGoodsEtc" th:value="${internationalCrimeArrest.smuggledGoods}" readonly>
</div>
</th:block>
</div>
<label class="col-sm-2 col-form-label text-center">밀수가액</label>
<div class="col-sm-2">
<input type="number" min="0" name="smugglingAmount" th:value="${internationalCrimeArrest.smugglingAmount}" readonly>
</div>
<label class="col-sm-2 col-form-label text-center">단속 인원(경찰관)</label>
<div class="col-sm-2">
<input type="number" min="0" name="caseNum" th:value="${internationalCrimeArrest.caseNum}" readonly>
</div>
</th:block>
</div>
<div class="mb-3 row">
<label class="col-sm-2 col-form-label text-center">발생원표</label>
<div class="col-sm-2">
<input type="text" class="form-control border-0" name="occurTable" th:value="${internationalCrimeArrest.occurTable}" readonly>
</div>
<label class="col-sm-2 col-form-label text-center">검거원표</label>
<div class="col-sm-2">
<input type="text" class="form-control border-0" name="arrestTable" th:value="${internationalCrimeArrest.arrestTable}" readonly>
</div>
<label class="col-sm-2 col-form-label text-center">피의자원표</label>
<div class="col-sm-2">
<input type="text" class="form-control border-0" name="suspectTable" th:value="${internationalCrimeArrest.suspectTable}" readonly>
</div>
</div>
<div class="mb-3 row">
<label class="col-sm-2 col-form-label text-center">범행형태</label>
<div class="col-sm-2" id="crimeFormDiv">
<select class="form-select form-select-sm" name="crimeForm" id="crimeForm" disabled>
<th:block th:each="commonCode:${session.commonCode.get('CMF')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.crimeForm}"></option>
</th:block>
</select>
</div>
</div>
<div class="mb-3 row" id="spiParentDiv">
<label class="col-sm-2 col-form-label text-center">피의자 인적사항</label>
<div class="col-sm-10" id="spiDiv">
<th:block th:if="${#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList)}">
<div class="row spi-list">
<label class="col-sm-1 col-form-label text-center">성별</label>
<div class="col-sm-2" id="sexFormDiv">
<select class="form-select form-select-sm" name="sex" disabled>
<th:block th:each="commonCode:${session.commonCode.get('SEX')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
</th:block>
</select>
</div>
<label class="col-sm-1 col-form-label text-center">나이</label>
<div class="col-sm-2" id="ageFormDiv">
<select class="form-select form-select-sm" name="age" disabled>
<th:block th:each="commonCode:${session.commonCode.get('AGE')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
</th:block>
</select>
</div>
<label class="col-sm-1 col-form-label text-center">국적</label>
<div class="col-sm-2" id="countryFormDiv">
<select class="form-select form-select-sm country" name="country" disabled>
<th:block th:each="commonCode:${session.commonCode.get('NNY')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
</th:block>
<option value="etc">기타</option>
</select>
</div>
</div>
</th:block>
<th:block th:if="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList)}">
<th:block th:each="suspectPersonInfo:${internationalCrimeArrest.suspectPersonInfoList}">
<div class="row spi-list">
<label class="col-sm-1 col-form-label text-center">성별</label>
<div class="col-sm-2" id="sexFormDiv">
<select class="form-select form-select-sm" name="sex" disabled>
<th:block th:each="commonCode:${session.commonCode.get('SEX')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${suspectPersonInfo.sex ne null && commonCode.itemCd eq suspectPersonInfo.sex}"></option>
</th:block>
</select>
</div>
<label class="col-sm-1 col-form-label text-center">나이</label>
<div class="col-sm-2" id="ageFormDiv">
<select class="form-select form-select-sm" name="age" disabled>
<th:block th:each="commonCode:${session.commonCode.get('AGE')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${suspectPersonInfo.age ne null && commonCode.itemCd eq suspectPersonInfo.age}"></option>
</th:block>
</select>
</div>
<label class="col-sm-1 col-form-label text-center">국적</label>
<div class="col-sm-2" id="countryFormDiv">
<select class="form-select form-select-sm country" name="country" id="country" disabled>
<th:block th:each="commonCode:${session.commonCode.get('NNY')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${suspectPersonInfo.country ne null && commonCode.itemCd eq suspectPersonInfo.country}"></option>
</th:block>
<option value="etc" th:selected="${suspectPersonInfo.country ne null && suspectPersonInfo.country ne '' && !#strings.contains(suspectPersonInfo.country, 'NNY')}">기타</option>
</select>
</div>
<th:block th:if="${suspectPersonInfo.country ne null && suspectPersonInfo.country ne '' && !#strings.contains(suspectPersonInfo.country, 'NNY')}">
<div class="col-sm-2">
<input type="text" class="form-control" name="countryEtc" th:value="${suspectPersonInfo.country}" readonly>
</div>
</th:block>
</div>
</th:block>
</th:block>
</div>
</div>
<div class="mb-3 row" id="spiInfoDiv">
<th:block th:if="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList)}">
<th:block th:if="${internationalCrimeArrest.crimeType eq 'CTH002' || internationalCrimeArrest.violationType eq 'VLT005'}">
<label class="col-sm-2 col-form-label text-center" th:text="${internationalCrimeArrest.violationType eq 'VLT005' ? '불법체류 및 취업' : '피의자 정보'}">피의자 정보</label>
<div class="col-sm-10">
<div class="row" id="spiWrapper">
<th:block th:if="${internationalCrimeArrest.violationType eq 'VLT005'}">
<label class="col-sm-2 col-form-label text-center entryVisa">입국비자</label>
<div class="col-sm-2 entryVisa">
<input type="text" class="form-control" name="entryVisa" th:value="${internationalCrimeArrest.suspectPersonInfoList[0].entryVisa}" readonly>
</div>
</th:block>
<label class="col-sm-2 col-form-label text-center">체류 자격</label>
<div class="col-sm-2">
<input type="text" class="form-control" name="stayQualification" th:value="${internationalCrimeArrest.suspectPersonInfoList[0].stayQualification}" readonly>
</div>
<label class="col-sm-2 col-form-label text-center">체류기간 만료일</label>
<div class="col-sm-2 input-daterange" id="stayQualificationDiv">
<input type="text" class="form-control" name="stayPeriodExpiredDt" id="stayPeriodExpiredDt" th:value="${#temporals.format(internationalCrimeArrest.suspectPersonInfoList[0].stayPeriodExpiredDt, 'yyyy-MM-dd HH:mm')}" readonly>
</div>
</div>
</div>
</th:block>
</th:block>
</div>
<th:block th:if="${internationalCrimeArrest.violationType eq 'VLT001' || internationalCrimeArrest.violationType eq 'VLT002' || internationalCrimeArrest.violationType eq 'VLT003'|| internationalCrimeArrest.violationType eq 'VLT004'}">
<div class="mb-3 row" id="meansDiv">
<th:block th:if="${internationalCrimeArrest.violationType eq 'VLT001' || internationalCrimeArrest.violationType eq 'VLT003'|| internationalCrimeArrest.violationType eq 'VLT004'}">
<label class="col-sm-2 col-form-label text-center" th:text="${internationalCrimeArrest.violationType eq 'VLT001' ? '밀입국 출발지(국가)' : (internationalCrimeArrest.violationType eq 'VLT003' ? '밀출국 행선지(도착예정지)' : '밀항 행선지(도착예정지)')}"></label>
<div class="col-sm-2">
<input type="text" class="form-control" name="destination" readonly>
</div>
</th:block>
<label class="col-sm-2 col-form-label text-center" th:text="${internationalCrimeArrest.violationType eq 'VLT001' ? '밀입국 수단(방법)' : (internationalCrimeArrest.violationType eq 'VLT002' ? '도외이탈 수단(방법)' : (internationalCrimeArrest.violationType eq 'VLT003' ? '밀출국 수단(방법)' : '밀항 수단(방법)'))}"></label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="means" id="means" disabled>
<option>선택</option>
<th:block th:if="${internationalCrimeArrest.violationType eq 'VLT001'}" th:each="commonCode:${session.commonCode.get('MS1')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.means}"></option>
</th:block>
<th:block th:if="${internationalCrimeArrest.violationType ne 'VLT001'}" th:each="commonCode:${session.commonCode.get('MS2')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.means}"></option>
</th:block>
<option value="etc" th:selected="${internationalCrimeArrest.means ne null && internationalCrimeArrest.means ne '' && !#strings.contains(internationalCrimeArrest.means, 'MS1') && !#strings.contains(internationalCrimeArrest.means, 'MS2')}">기타</option>
</select>
<th:block th:if="${internationalCrimeArrest.means ne null && internationalCrimeArrest.means ne '' && !#strings.contains(internationalCrimeArrest.means, 'MS1') && !#strings.contains(internationalCrimeArrest.means, 'MS2')}">
<div class="col-auto">
<input type="text" class="form-control" name="meansEtc" th:value="${internationalCrimeArrest.means}" readonly>
</div>
</th:block>
</div>
<label class="col-sm-2 col-form-label text-center" th:text="${internationalCrimeArrest.violationType eq 'VLT001' ? '밀입국 목적(사유)' : (internationalCrimeArrest.violationType eq 'VLT002' ? '도외이탈 목적(시유)' : (internationalCrimeArrest.violationType eq 'VLT003' ? '밀출국 목적(사유)' : '밀항 목적(사유)'))}"></label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="purpose" id="purpose" disabled>
<option>선택</option>
<th:block th:each="commonCode:${session.commonCode.get('PPS')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.purpose}"></option>
</th:block>
<option value="etc" th:selected="${internationalCrimeArrest.purpose ne null && internationalCrimeArrest.purpose ne '' && !#strings.contains(internationalCrimeArrest.purpose, 'PPS')}">기타</option>
</select>
<th:block th:if="${internationalCrimeArrest.purpose ne null && internationalCrimeArrest.purpose ne '' && !#strings.contains(internationalCrimeArrest.purpose, 'PPS')}">
<div class="col-auto">
<input type="text" class="form-control" name="purposeEtc" th:value="${internationalCrimeArrest.purpose}" readonly>
</div>
</th:block>
</div>
</div>
<div class="mb-3 row" id="arrestAreaDiv">
<label class="col-sm-2 col-form-label text-center">검거 지역 </label>
<div class="col-sm-2">
<input type="text" class="form-control" name="arrestArea" th:value="${internationalCrimeArrest.arrestArea}" readonly>
</div>
<label class="col-sm-2 col-form-label text-center" th:text="${internationalCrimeArrest.violationType eq 'VLT001' ? '밀입국 시도 해역(해안)' : (internationalCrimeArrest.violationType eq 'VLT002' ? '도외이탈 시도 해역(해안)' : (internationalCrimeArrest.violationType eq 'VLT003' ? '밀출국 시도 해역(해안)' : '밀항 시도 해역(해안)'))}"></label>
<div class="col-sm-3">
<select class="form-select form-select-sm" name="seaArea" disabled>
<option>선택</option>
<th:block th:each="commonCode:${session.commonCode.get('SAA')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.seaArea}"></option>
</th:block>
</select>
</div>
</div>
</th:block>
<th:block th:if="${internationalCrimeArrest.violationAmount ne null}">
<div class="mb-3 row" id="violationAmountDiv">
<label class="col-sm-2 col-form-label text-center">표시위반 금액(만원)</label>
<div class="col-sm-2">
<input type="number" min="0" class="form-control" name="violationAmount" th:value="${internationalCrimeArrest.violationAmount}" readonly>
</div>
</div>
</th:block>
<div class="mb-3 row">
<label class="col-sm-2 col-form-label text-center">범죄인지</label>
<div class="col-sm-2 input-daterange" id="crimeAwarenessDtDiv">
<input type="text" class="form-control border-0" name="crimeAwarenessDt" id="crimeAwarenessDt" th:value="${#temporals.format(internationalCrimeArrest.crimeAwarenessDt, 'yyyy-MM-dd HH:mm')}" readonly>
</div>
<label class="col-sm-2 col-form-label text-center">사건송치</label>
<div class="col-sm-2 input-daterange" id="caseSentDtDiv">
<input type="text" class="form-control border-0" name="caseSentDt" id="caseSentDt" th:value="${#temporals.format(internationalCrimeArrest.caseSentDt, 'yyyy-MM-dd HH:mm')}" readonly>
</div>
<label class="col-sm-2 col-form-label text-center">신병처리</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="processResult" id="processResult" disabled>
<option>선택</option>
<th:block th:each="commonCode:${session.commonCode.get('PCR')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq internationalCrimeArrest.processResult}"></option>
</th:block>
<option value="etc" th:selected="${internationalCrimeArrest.processResult ne null && internationalCrimeArrest.processResult ne '' && !#strings.contains(internationalCrimeArrest.processResult, 'PCR')}">기타</option>
</select>
<th:block th:if="${internationalCrimeArrest.processResult ne null && internationalCrimeArrest.processResult ne '' && !#strings.contains(internationalCrimeArrest.processResult, 'PCR')}">
<div class="col-auto">
<input type="text" class="form-control" name="processResultEtc" th:value="${internationalCrimeArrest.processResult}" readonly>
</div>
</th:block>
</div>
</div>
<div class="mb-3 row justify-content-center">
<label for="caseOverviewDiv" class="col-sm-2 col-form-label text-center">범죄사실(사건개요)</label>
<div class="col-sm-10" id="caseOverviewDiv">
<div name='caseOverview' th:utext="${internationalCrimeArrest.caseOverview}"></div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<th:block th:if="${userSeq eq internationalCrimeArrest.wrtUserSeq or accessAuth eq 'ACC003'}"><!--작성자일 경우 수정 허용--><!--관리자일 경우 수정 허용-->
<button type="button" class="btn btn-warning" id="icaEditBtn">수정</button>
</th:block>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
</div>
</html>