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

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.service.CodeMgtService;
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.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.service.OrganConfigService;
import com.dbnt.faisp.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import java.time.LocalDateTime;
@ -35,7 +29,7 @@ public class InternationalCrimeArrestController {
private final SuspectPersonInfoRepository suspectPersonInfoRepository;
@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");
//메뉴권한 확인
@ -45,7 +39,13 @@ public class InternationalCrimeArrestController {
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
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.setPaginationInfo();
mav.addObject("searchParams", internationalCrimeArrest);
@ -53,7 +53,7 @@ public class InternationalCrimeArrestController {
}
@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");
if(internationalCrimeArrest.getIcaKey()!=null){
internationalCrimeArrest = internationalCrimeArrestService.selectInternationalCrimeArrest(internationalCrimeArrest.getIcaKey());
@ -69,11 +69,12 @@ public class InternationalCrimeArrestController {
}
@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");
internationalCrimeArrest = internationalCrimeArrestService.selectInternationalCrimeArrest(internationalCrimeArrest.getIcaKey());
mav.addObject("internationalCrimeArrest", internationalCrimeArrest);
mav.addObject("userSeq",loginUser.getUserSeq());
mav.addObject("organConfigList", selectOrganList());
//메뉴권한 확인
mav.addObject("accessAuth", authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/internationalCrimeArrest").get(0).getAccessAuth());
return mav;

View File

@ -1,7 +1,6 @@
package com.dbnt.faisp.faStatistics.internationalCrimeArrest.mapper;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -10,5 +9,4 @@ import java.util.List;
public interface InternationalCrimeArrestMapper{
List<InternationalCrimeArrest> selectInternationalCrimeArrestList(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.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.RequestParam;
import javax.persistence.*;
import java.time.LocalDate;
@ -76,6 +75,8 @@ public class InternationalCrimeArrest extends BaseModel {
private String destination;
@Column(name = "content_status")
private String contentStatus;
@Column(name = "crime_form")
private String crimeForm;
@Column(name = "wrt_organ")
private String wrtOrgan;
@Column(name = "wrt_user_seq")
@ -89,5 +90,13 @@ public class InternationalCrimeArrest extends BaseModel {
@Transient
private List<SuspectPersonInfo> suspectPersonInfoList;
@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;
import com.dbnt.faisp.config.BaseModel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
@ -39,11 +37,11 @@ public class SuspectPersonInfo extends BaseModel {
private LocalDateTime stayPeriodExpiredDt;
@Column(name = "entry_visa")
private String entryVisa;
@Column(name = "crime_form")
private String crimeForm;
@Transient
private List<Integer> icaKeyList;
@Transient
private List<Integer> spiKeyList;
@Transient
private String countryEtc;
}

View File

@ -1,19 +1,8 @@
package com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
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> {
@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 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 SuspectPersonInfoRepository extends JpaRepository<SuspectPersonInfo, Integer> {
public interface SuspectPersonInfoRepository extends JpaRepository<SuspectPersonInfo, SuspectPersonInfo> {
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.FileInfo;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.mapper.InternationalCrimeArrestMapper;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo;
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.InternationalCrimeArrestRepository;
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 org.springframework.stereotype.Service;
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.UUID;
@Service
@RequiredArgsConstructor
@ -48,13 +38,32 @@ public class InternationalCrimeArrestService extends BaseService {
@Transactional
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();
if (internationalCrimeArrest.getDeleteSpikeyList() != null) {
internationalCrimeArrestRepository.deleteAllByIdInQuery(internationalCrimeArrest.getDeleteSpikeyList());
if (internationalCrimeArrest.getDeleteSpiKeyList() != null) {
suspectPersonInfoRepository.deleteAllByIdInQuery(internationalCrimeArrest.getDeleteSpiKeyList());
}
if (internationalCrimeArrest.getSuspectPersonInfoList() != null) {
for(SuspectPersonInfo info: internationalCrimeArrest.getSuspectPersonInfoList()){
if (info.getCountryEtc() != null) {
info.setCountry(info.getCountryEtc());
}
info.setIcaKey(icaKey);
}
suspectPersonInfoRepository.saveAll(internationalCrimeArrest.getSuspectPersonInfoList());
}

View File

@ -40,6 +40,7 @@
i.case_overview,
i.arrest_area,
i.means,
i.crime_form,
i.purpose,
i.smuggled_goods,
i.crackdown_personel,
@ -71,8 +72,7 @@
s.country,
s.stay_qualification,
s.stay_period_expired_dt,
s.entry_visa,
s.crime_form
s.entry_visa
FROM suspect_person_info s
INNER JOIN international_crime_arrest i
ON s.ica_key = i.ica_key

View File

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

View File

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

View File

@ -23,48 +23,101 @@
<table class="table table-striped">
<thead>
<tr>
<th>지방청</th>
<th>경찰서</th>
<th>
<th rowspan="2">지방청</th>
<th rowspan="2">경찰서</th>
<th rowspan="2">
<div>범죄테마</div>
<div>(대분류)</div>
</th>
<th>
<th rowspan="2">
<div>위반유형</div>
<div>(중분류)</div>
</th>
<th>
<th rowspan="2">
<div>죄명</div>
<div>(소분류)</div>
</th>
<th>발생원표</th>
<th>검거원표</th>
<th>피의자원표</th>
<th>피의자 인적사항</th>
<th>범죄인지</th>
<th>사건송치</th>
<th>신병처리</th>
<th rowspan="2">발생원표</th>
<th rowspan="2">검거원표</th>
<th rowspan="2">피의자원표</th>
<th colspan="3">피의자 인적사항</th>
<th rowspan="2">범죄인지</th>
<th rowspan="2">사건송치</th>
<th rowspan="2">신병처리</th>
</tr>
<tr>
<th>성별</th>
<th>나이</th>
<th>국적</th>
</tr>
</thead>
<tbody>
<tr class="tr" th:each="internationalCrimeArrest:${internationalCrimeArrestList}" th:data-key="${internationalCrimeArrest.icaKey}">
<th:block th:each="internationalCrimeArrest:${internationalCrimeArrestList}">
<tr class="tr" th:data-key="${internationalCrimeArrest.icaKey}">
<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>
<td th:text="${internationalCrimeArrest.crimeType}"></td>
<td th:text="${internationalCrimeArrest.violationType}"></td>
<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>
<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>
</tbody>
</table>
<button id="ivsgtAddBtn">관리자마감</button>

View File

@ -1,11 +1,12 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<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>
</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" 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}">
@ -14,13 +15,13 @@
<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">지방청w</label>
<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">
<option value="">지방청</option>
<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}"></option>
<option th:value="${organConfig.organCd}" th:text="${organConfig.organNm}" th:selected="${organConfig.organCd eq internationalCrimeArrest.organ}"></option>
</th:block>
</th:block>
</select>
@ -28,10 +29,10 @@
<label class="col-sm-2 col-form-label text-center">관할서</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="department">
<option value="">관할서</option>
<option value="">선택</option>
<th:block th:each="organConfig:${organConfigList}">
<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>
</select>
@ -47,7 +48,7 @@
<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">
<option value="">범죄테마</option>
<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>
@ -57,17 +58,40 @@
<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">
<option value="">위반유형</option>
<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">
<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 class="mb-3 row">
<label class="col-sm-2 col-form-label text-center">발생원표</label>
@ -89,22 +113,56 @@
<select class="form-select form-select-sm" name="crimeForm" id="crimeForm">
<th:block th:each="commonCode:${session.commonCode.get('CMF')}">
<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>
</select>
</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 class="mb-3 row" id="spiParentDiv">
<label class="col-sm-2 col-form-label text-center">피의자 인적사항</label>
<div class="col-sm-10" id="spiDiv">
<div class="row spi-list">
<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">
<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">
<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">
<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, 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>
<div class="col-sm-2" id="sexFormDiv">
<select class="form-select form-select-sm" name="sex">
<th:block th:each="commonCode:${session.commonCode.get('SEX')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.sex}"></option>
th:selected="${suspectPersonInfo.sex ne null && commonCode.itemCd eq suspectPersonInfo.sex}"></option>
</th:block>
</select>
</div>
@ -113,80 +171,152 @@
<select class="form-select form-select-sm" name="age">
<th:block th:each="commonCode:${session.commonCode.get('AGE')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.age}"></option>
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">
<th:block th:each="commonCode:${session.commonCode.get('NNY')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.conutry}"></option>
</th:block>
<option value="etc">기타</option>
</select>
</div>
</th:block>
<th:block th:if="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList)}">
<th:block th:each="suspectPersonInfo:${internationalCrimeArrest.suspectPersonInfoList}">
<label class="col-sm-1 col-form-label text-center">성별</label>
<th:block th:each="commonCode:${session.commonCode.get('SEX')}">
<th:block th:if="${commonCode.itemCd eq suspectPersonInfo.sex}">
<select class="form-select form-select-sm" name="sex">
<th:block th:each="commonCode:${session.commonCode.get('SEX')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.sex}"></option>
</th:block>
</select>
</th:block>
</th:block>
<label class="col-sm-1 col-form-label text-center">나이</label>
<th:block th:each="commonCode:${session.commonCode.get('AGE')}">
<th:block th:if="${commonCode.itemCd eq suspectPersonInfo.age}">
<select class="form-select form-select-sm" name="age">
<th:block th:each="commonCode:${session.commonCode.get('AGE')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.age}"></option>
</th:block>
</select>
</th:block>
</th:block>
<label class="col-sm-1 col-form-label text-center">국적</label>
<th:block th:each="commonCode:${session.commonCode.get('NNY')}">
<th:block th:if="${commonCode.itemCd eq suspectPersonInfo.country}">
<select class="form-select form-select-sm country" name="country" id="country">
<th:block th:each="commonCode:${session.commonCode.get('NNY')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.conutry}"></option>
th:selected="${suspectPersonInfo.country ne null && commonCode.itemCd eq suspectPersonInfo.country}"></option>
</th:block>
<option value="etc">기타</option>
<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}">
</div>
</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: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>
</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">
<label class="col-sm-2 col-form-label text-center">범죄인지</label>
<div class="col-sm-1 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>
<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')}">
</div>
<label class="col-sm-2 col-form-label text-center">사건송치</label>
<div class="col-sm-1 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>
<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')}">
</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">
<option value="">선택</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">기타</option>
<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}">
</div>
</th:block>
</div>
</div>
<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>