국제범죄 검거현황 작업완료.

master
강석 최 2023-04-21 14:50:59 +09:00
parent 416a8536d6
commit f41bb94ead
7 changed files with 142 additions and 156 deletions

View File

@ -95,31 +95,4 @@ public class InternationalCrimeArrestController {
internationalCrimeArrestService.deleteInternationalCrimeArrest(internationalCrimeArrest); internationalCrimeArrestService.deleteInternationalCrimeArrest(internationalCrimeArrest);
} }
@GetMapping("/internationalCrimeArrest/ExcelDown")
public void icaExcelDown(HttpServletResponse response, InternationalCrimeArrest internationalCrimeArrest) {
int duplicateCount = internationalCrimeArrestService.icaDuplicateCount(internationalCrimeArrest);
int rowCnt = internationalCrimeArrest.getRowCnt() + duplicateCount;
internationalCrimeArrest.setRowCnt(rowCnt);
internationalCrimeArrest.setQueryInfo();
internationalCrimeArrest.setContentCnt(internationalCrimeArrestService.selectInternationalCrimeArrestListCnt(internationalCrimeArrest));
internationalCrimeArrest.setPaginationInfo();
Excel excel = new Excel();
String[] headers = {"organ", "department", "crime_type", "violation_type", "crime_name", "occur_table", "arrest_table", "suspect_table", "personal_information", "crime_awareness_dt", "case_sent_dt", "process_result"};
String[] headerNames = {"지방청", "경찰서", "범죄테마", "위반유형", "죄명", "발생원표", "검거원표", "피의자원표","피의자 인적사항","범죄인지","사건송치","신병처리"};
String[] columnType = { "String", "String", "String", "String", "String", "String", "String", "String","String","String","String","String"};
excel.setHeaders(headers);
excel.setHeaderNames(headerNames);
excel.setColumnType(columnType);
excel.setSheetName("국제범죄검거현황");
excel.setExcelFileName("국제범죄검거현황");
List<ParamMap> icaList = internationalCrimeArrestService.selectInternationalCrimeArrestParamList(internationalCrimeArrest);
excel.setList(icaList);
try {
Utils.icaDownExcel(response, excel);
} catch (IOException e) {
}
}
} }

View File

@ -12,6 +12,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<ParamMap> selectInternationalCrimeArrestParamList(InternationalCrimeArrest internationalCrimeArrest);
Integer icaDuplicateCount(InternationalCrimeArrest internationalCrimeArrest);
} }

View File

@ -45,18 +45,10 @@ public class InternationalCrimeArrestService extends BaseService {
return icaList; return icaList;
} }
public List<ParamMap> selectInternationalCrimeArrestParamList(InternationalCrimeArrest InternationalCrimeArrest) {
return internationalCrimeArrestMapper.selectInternationalCrimeArrestParamList(InternationalCrimeArrest);
}
public Integer selectInternationalCrimeArrestListCnt(InternationalCrimeArrest internationalCrimeArrest) { public Integer selectInternationalCrimeArrestListCnt(InternationalCrimeArrest internationalCrimeArrest) {
return internationalCrimeArrestMapper.selectInternationalCrimeArrestListCnt(internationalCrimeArrest); return internationalCrimeArrestMapper.selectInternationalCrimeArrestListCnt(internationalCrimeArrest);
} }
public Integer icaDuplicateCount(InternationalCrimeArrest internationalCrimeArrest) {
return internationalCrimeArrestMapper.icaDuplicateCount(internationalCrimeArrest);
}
public InternationalCrimeArrest selectInternationalCrimeArrest(Integer icaKey) { public InternationalCrimeArrest selectInternationalCrimeArrest(Integer icaKey) {
InternationalCrimeArrest savedICA = internationalCrimeArrestRepository.findById(icaKey).orElse(null); InternationalCrimeArrest savedICA = internationalCrimeArrestRepository.findById(icaKey).orElse(null);
if (savedICA != null) { if (savedICA != null) {

View File

@ -83,56 +83,6 @@
<include refid="selectInternationalCrimeArrestListWhere"></include> <include refid="selectInternationalCrimeArrestListWhere"></include>
</select> </select>
<select id="selectInternationalCrimeArrestParamList" resultType="com.dbnt.faisp.util.ParamMap" parameterType="InternationalCrimeArrest">
SELECT
i.ica_key,
i.occur_table,
i.arrest_table,
i.suspect_table,
to_char(i.crime_awareness_dt, 'YYYY-MM-DD') as crime_awareness_dt,
to_char(i.case_sent_dt, 'YYYY-MM-DD') as case_sent_dt,
i.other_crime,
i.case_num,
i.case_overview,
i.arrest_area,
i.crackdown_personel,
i.violation_amount,
i.destination,
i.content_status,
i.wrt_organ,
i.wrt_user_seq,
i.wrt_nm,
to_char(i.wrt_dt, 'YYYY-MM-DD HH24:MI') as wrt_dt,
cm1.item_value AS organ,
cm2.item_value AS department,
cm3.item_value AS crime_type,
cm4.item_value AS violation_type,
COALESCE(cm5.item_value, i.process_result) AS process_result,
COALESCE(cm6.item_value, i.means) AS means,
cm7.item_value AS crime_form,
COALESCE(cm8.item_value, i.purpose) AS purpose,
COALESCE(cm9.item_value, i.smuggled_goods) AS smuggled_goods,
concat(cm10.item_value,' ',cm11.item_value,' ',COALESCE(cm12.item_value, s.country)) as personal_information
FROM international_crime_arrest i
INNER JOIN suspect_person_info s
ON i.ica_key = s.ica_key
LEFT JOIn code_mgt cm1 ON i.organ = cm1.item_cd
LEFT JOIN code_mgt cm2 ON i.department = cm2.item_cd
LEFT JOIN code_mgt cm3 ON i.crime_type = cm3.item_cd
LEFT JOIN code_mgt cm4 ON i.violation_type = cm4.item_cd
LEFT JOIN code_mgt cm5 ON i.process_result = cm5.item_cd
LEFT JOIN code_mgt cm6 ON i.means = cm6.item_cd
LEFT JOIN code_mgt cm7 ON i.crime_form = cm7.item_cd
LEFT JOIN code_mgt cm8 ON i.purpose = cm8.item_cd
LEFT JOIN code_mgt cm9 ON i.smuggled_goods = cm9.item_cd
LEFT JOIN code_mgt cm10 ON s.sex = cm10.item_cd
LEFT JOIN code_mgt cm11 ON s.age = cm11.item_cd
LEFT JOIN code_mgt cm12 ON s.country = cm12.item_cd
<include refid="selectInternationalCrimeArrestListWhere"></include>
ORDER BY i.ica_key DESC
LIMIT #{rowCnt} OFFSET #{firstIndex}
</select>
<select id="selectSuspectPersonInfoParamList" resultType="com.dbnt.faisp.util.ParamMap" parameterType="int"> <select id="selectSuspectPersonInfoParamList" resultType="com.dbnt.faisp.util.ParamMap" parameterType="int">
SELECT SELECT
s.spi_key, s.spi_key,
@ -149,20 +99,4 @@
WHERE s.ica_key = #{icaKey} WHERE s.ica_key = #{icaKey}
</select> </select>
<select id="icaDuplicateCount" resultType="int" parameterType="InternationalCrimeArrest">
SELECT
COUNT(*)
FROM (
SELECT
s.ica_key
, row_number() OVER (PARTITION BY s.ica_key) AS row
FROM suspect_person_info s
INNER JOIN international_crime_arrest i
ON s.ica_key = i.ica_key
<include refid="selectInternationalCrimeArrestListWhere"></include>
ORDER BY i.ica_key DESC
LIMIT #{rowCnt} OFFSET #{firstIndex}
) a
WHERE a.row > 1
</select>
</mapper> </mapper>

View File

@ -84,6 +84,21 @@ $(document).on('click', '.spiRemoveBtn', function (){
spiRemoveBtnControl() spiRemoveBtnControl()
}) })
$(document).on('change', '.etcSelfInput', function (){
const selfInput = $("#"+this.id+"_self")
if(this.value === "etc"){
const temp = this.name
this.name = ""
selfInput[0].name = temp;
selfInput.show();
}else{
const temp = selfInput[0].name
selfInput[0].name = ""
this.name = temp;
selfInput.hide();
}
})
function spiRemoveBtnControl(){ function spiRemoveBtnControl(){
if($(".spi-list").length>2){ if($(".spi-list").length>2){
$(".spiRemoveBtn").show(); $(".spiRemoveBtn").show();
@ -205,6 +220,6 @@ function contentCheck(status){
} }
$(document).on('click', '#icaExcelDownBtn', function (){ $(document).on('click', '#icaExcelDownBtn', function (){
const formData = $("#icaSearchForm").serialize(); debugger
location.href = '/faStatistics/internationalCrimeArrest/ExcelDown?'+formData; exportExcel('국제범죄검거현황', 'icaTable')
}); });

View File

@ -73,8 +73,6 @@
</th:block> </th:block>
</select> </select>
</div> </div>
</div>
<div class="row justify-content-end">
<div class="col-2"> <div class="col-2">
<select class="form-select form-select-sm" name="violationType" id="searchViolationType"> <select class="form-select form-select-sm" name="violationType" id="searchViolationType">
<option value="">위반유형 선택</option> <option value="">위반유형 선택</option>
@ -85,6 +83,8 @@
</th:block> </th:block>
</select> </select>
</div> </div>
</div>
<div class="row justify-content-end">
<div class="col-2"> <div class="col-2">
<input type="text" class="form-control form-control-sm" placeholder="죄명" name="crimeName" th:value="${searchParams.crimeName}"> <input type="text" class="form-control form-control-sm" placeholder="죄명" name="crimeName" th:value="${searchParams.crimeName}">
</div> </div>
@ -133,7 +133,7 @@
<div class="card-body"> <div class="card-body">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<table class="table table-sm table-hover table-bordered ws-nowrap" id="ivsgtTable"> <table class="table table-sm table-hover table-bordered ws-nowrap" id="icaTable">
<thead class="align-middle text-center"> <thead class="align-middle text-center">
<tr class="table-secondary"> <tr class="table-secondary">
<th>순번</th> <th>순번</th>

View File

@ -85,7 +85,6 @@
<option th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:value="${code.itemCd}" th:text="${code.itemValue}"
th:selected="${code.itemCd eq ica.subInfo.seaArea}"></option> th:selected="${code.itemCd eq ica.subInfo.seaArea}"></option>
</th:block> </th:block>
<option value="etc">기타</option>
</select> </select>
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">검거 지역</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">검거 지역</label>
@ -102,52 +101,86 @@
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">밀입국 수단</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">밀입국 수단</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="subInfo.means"> <select class="form-select form-select-sm etcSelfInput" id="CTH101_means"
th:name="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS1')?'':'subInfo.means'}">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('MS1')}"> <th:block th:each="code:${session.commonCode.get('MS1')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:value="${code.itemCd}" th:text="${code.itemValue}"
th:selected="${code.itemCd eq ica.subInfo.means}"></option> th:selected="${code.itemCd eq ica.subInfo.means}"></option>
</th:block> </th:block>
<option value="etc">기타</option> <option value="etc" th:selected="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS1')}">기타(직접입력)</option>
</select> </select>
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">밀입국 목적</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">밀입국 목적</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="subInfo.purpose"> <select class="form-select form-select-sm etcSelfInput" id="CTH101_purpose"
th:name="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?'':'subInfo.purpose'}">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('PPS')}"> <th:block th:each="code:${session.commonCode.get('PPS')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:value="${code.itemCd}" th:text="${code.itemValue}"
th:selected="${code.itemCd eq ica.subInfo.purpose}"></option> th:selected="${code.itemCd eq ica.subInfo.purpose}"></option>
</th:block> </th:block>
<option value="etc">기타</option> <option value="etc" th:selected="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')}">기타(직접입력)</option>
</select> </select>
</div> </div>
<div class="col-sm-3"></div>
<div class="col-sm-4"></div>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="CTH101_means_self"
th:name="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS1')?'subInfo.means':''}"
th:value="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS1')?ica.subInfo.means:''}"
th:style="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS1')?'':'display: none'}">
</div>
<div class="col-sm-1"></div>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="CTH101_purpose_self"
th:name="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?'subInfo.purpose':''}"
th:value="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?ica.subInfo.purpose:''}"
th:style="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?'':'display: none'}">
</div>
</div> </div>
<!--직접밀입국 끝--> <!--직접밀입국 끝-->
<!--제주무사증 도외이탈 시작--> <!--제주무사증 도외이탈 시작-->
<div class="row mb-1 extInputDiv CTH102Div" style="display: none"> <div class="row mb-1 extInputDiv CTH102Div" style="display: none">
<label class="col-sm-1 col-form-label col-form-label-sm text-center">도외이탈 수단</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">도외이탈 수단</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="subInfo.means"> <select class="form-select form-select-sm etcSelfInput" id="CTH102_means"
th:name="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')?'':'subInfo.means'}">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('MS2')}"> <th:block th:each="code:${session.commonCode.get('MS2')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:value="${code.itemCd}" th:text="${code.itemValue}"
th:selected="${code.itemCd eq ica.subInfo.means}"></option> th:selected="${code.itemCd eq ica.subInfo.means}"></option>
</th:block> </th:block>
<option value="etc">기타</option> <option value="etc" th:selected="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')}">기타(직접입력)</option>
</select> </select>
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">도외이탈 목적</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">도외이탈 목적</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="subInfo.purpose"> <select class="form-select form-select-sm etcSelfInput" id="CTH102_purpose"
th:name="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?'':'subInfo.purpose'}">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('PPS')}"> <th:block th:each="code:${session.commonCode.get('PPS')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:value="${code.itemCd}" th:text="${code.itemValue}"
th:selected="${code.itemCd eq ica.subInfo.purpose}"></option> th:selected="${code.itemCd eq ica.subInfo.purpose}"></option>
</th:block> </th:block>
<option value="etc">기타</option> <option value="etc" th:selected="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')}">기타(직접입력)</option>
</select> </select>
</div> </div>
<div class="col-sm-6"></div>
<div class="col-sm-1"></div>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="CTH102_means_self"
th:name="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')?'subInfo.means':''}"
th:value="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')?ica.subInfo.means:''}"
th:style="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')?'':'display: none'}">
</div>
<div class="col-sm-1"></div>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="CTH102_purpose_self"
th:name="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?'subInfo.purpose':''}"
th:value="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?ica.subInfo.purpose:''}"
th:style="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?'':'display: none'}">
</div>
</div> </div>
<!--제주무사증 도외이탈 끝--> <!--제주무사증 도외이탈 끝-->
<!--밀출국 시작--> <!--밀출국 시작-->
@ -158,26 +191,43 @@
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">밀출국 수단</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">밀출국 수단</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="subInfo.means"> <select class="form-select form-select-sm etcSelfInput" id="CTH103_means"
th:name="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')?'':'subInfo.means'}">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('MS2')}"> <th:block th:each="code:${session.commonCode.get('MS2')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:value="${code.itemCd}" th:text="${code.itemValue}"
th:selected="${code.itemCd eq ica.subInfo.means}"></option> th:selected="${code.itemCd eq ica.subInfo.means}"></option>
</th:block> </th:block>
<option value="etc">기타</option> <option value="etc" th:selected="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')}">기타(직접입력)</option>
</select> </select>
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">밀출국 목적</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">밀출국 목적</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="subInfo.purpose"> <select class="form-select form-select-sm etcSelfInput" id="CTH103_purpose"
th:name="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?'':'subInfo.purpose'}">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('PPS')}"> <th:block th:each="code:${session.commonCode.get('PPS')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:value="${code.itemCd}" th:text="${code.itemValue}"
th:selected="${code.itemCd eq ica.subInfo.purpose}"></option> th:selected="${code.itemCd eq ica.subInfo.purpose}"></option>
</th:block> </th:block>
<option value="etc">기타</option> <option value="etc" th:selected="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')}">기타(직접입력)</option>
</select> </select>
</div> </div>
<div class="col-sm-3"></div>
<div class="col-sm-4"></div>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="CTH103_means_self"
th:name="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')?'subInfo.means':''}"
th:value="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')?ica.subInfo.means:''}"
th:style="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')?'':'display: none'}">
</div>
<div class="col-sm-1"></div>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="CTH103_purpose_self"
th:name="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?'subInfo.purpose':''}"
th:value="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?ica.subInfo.purpose:''}"
th:style="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?'':'display: none'}">
</div>
</div> </div>
<!--밀출국 끝--> <!--밀출국 끝-->
<!--밀항 시작--> <!--밀항 시작-->
@ -190,7 +240,6 @@
<option th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:value="${code.itemCd}" th:text="${code.itemValue}"
th:selected="${code.itemCd eq ica.subInfo.seaArea}"></option> th:selected="${code.itemCd eq ica.subInfo.seaArea}"></option>
</th:block> </th:block>
<option value="etc">기타</option>
</select> </select>
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">검거 지역</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">검거 지역</label>
@ -204,26 +253,43 @@
<div class="col-sm-3"></div> <div class="col-sm-3"></div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">밀항 수단</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">밀항 수단</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="subInfo.means"> <select class="form-select form-select-sm etcSelfInput" id="CTH104_means"
th:name="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')?'':'subInfo.means'}">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('MS2')}"> <th:block th:each="code:${session.commonCode.get('MS2')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:value="${code.itemCd}" th:text="${code.itemValue}"
th:selected="${code.itemCd eq ica.subInfo.means}"></option> th:selected="${code.itemCd eq ica.subInfo.means}"></option>
</th:block> </th:block>
<option value="etc">기타</option> <option value="etc" th:selected="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')}">기타(직접입력)</option>
</select> </select>
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">밀항 목적</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">밀항 목적</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="subInfo.purpose"> <select class="form-select form-select-sm etcSelfInput" id="CTH104_purpose"
th:name="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?'':'subInfo.purpose'}">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('PPS')}"> <th:block th:each="code:${session.commonCode.get('PPS')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:value="${code.itemCd}" th:text="${code.itemValue}"
th:selected="${code.itemCd eq ica.subInfo.purpose}"></option> th:selected="${code.itemCd eq ica.subInfo.purpose}"></option>
</th:block> </th:block>
<option value="etc">기타</option> <option value="etc" th:selected="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')}">기타(직접입력)</option>
</select> </select>
</div> </div>
<div class="col-sm-6"></div>
<div class="col-sm-1"></div>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="CTH104_means_self"
th:name="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')?'subInfo.means':''}"
th:value="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')?ica.subInfo.means:''}"
th:style="${ica.subInfo.means ne null and !#strings.contains(ica.subInfo.means, 'MS2')?'':'display: none'}">
</div>
<div class="col-sm-1"></div>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="CTH104_purpose_self"
th:name="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?'subInfo.purpose':''}"
th:value="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?ica.subInfo.purpose:''}"
th:style="${ica.subInfo.purpose ne null and !#strings.contains(ica.subInfo.purpose, 'PPS')?'':'display: none'}">
</div>
</div> </div>
<!--밀항 끝--> <!--밀항 끝-->
<!--불법체류 및 취업 시작--> <!--불법체류 및 취업 시작-->
@ -246,13 +312,14 @@
<div class="row mb-1 extInputDiv smugglingInputDiv" style="display: none"> <div class="row mb-1 extInputDiv smugglingInputDiv" style="display: none">
<label class="col-sm-1 col-form-label col-form-label-sm text-center">밀수입출 품목</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">밀수입출 품목</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="subInfo.smuggledGoods"> <select class="form-select form-select-sm etcSelfInput" id="smuggling_goods"
th:name="${ica.subInfo.smuggledGoods ne null and !#strings.contains(ica.subInfo.smuggledGoods, 'SG')?'':'subInfo.smuggledGoods'}">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('SG')}"> <th:block th:each="code:${session.commonCode.get('SG')}">
<option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}"
th:selected="${code.itemCd eq ica.subInfo.smuggledGoods}"></option> th:selected="${code.itemCd eq ica.subInfo.smuggledGoods}"></option>
</th:block> </th:block>
<option value="etc">기타</option> <option value="etc" th:selected="${ica.subInfo.smuggledGoods ne null and !#strings.contains(ica.subInfo.smuggledGoods, 'SG')}">기타(직접입력)</option>
</select> </select>
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">검거장소</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">검거장소</label>
@ -261,7 +328,15 @@
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">단속인원</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">단속인원</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input type="text" class="form-control form-control-sm" name="subInfo.policeCnt" th:value="${ica.subInfo.policeCnt}"> <input type="number" class="form-control form-control-sm" name="subInfo.policeCnt" th:value="${ica.subInfo.policeCnt}">
</div>
<div class="col-sm-3"></div>
<div class="col-sm-1"></div>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="smuggling_goods_self"
th:name="${ica.subInfo.smuggledGoods ne null and !#strings.contains(ica.subInfo.smuggledGoods, 'SG')?'subInfo.smuggledGoods':''}"
th:value="${ica.subInfo.smuggledGoods ne null and !#strings.contains(ica.subInfo.smuggledGoods, 'SG')?ica.subInfo.smuggledGoods:''}"
th:style="${ica.subInfo.smuggledGoods ne null and !#strings.contains(ica.subInfo.smuggledGoods, 'SG')?'':'display: none'}">
</div> </div>
</div> </div>
<!--밀수입출 끝--> <!--밀수입출 끝-->
@ -298,7 +373,7 @@
th:selected="${code.itemCd eq ica.crimeForm}"></option> th:selected="${code.itemCd eq ica.crimeForm}"></option>
</th:block> </th:block>
</select> </select>
<button type="button" class="btn btn-sm btn-primary w-25" id="spiAddBtn" style="display: none"> <button type="button" class="btn btn-sm btn-primary w-25" id="spiAddBtn" th:style="${ica.crimeForm eq null or ica.crimeForm eq 'CMF001'?'display: none':''}">
<i class="bi bi-plus"></i> <i class="bi bi-plus"></i>
</button> </button>
</div> </div>
@ -351,47 +426,46 @@
</div> </div>
</th:block> </th:block>
<th:block th:unless="${#lists.isEmpty(ica.suspectInfoList)}"> <th:block th:unless="${#lists.isEmpty(ica.suspectInfoList)}">
<th:block th:each="suspectInfo, i : ${ica.suspectInfoList}"> <th:block th:each="suspectInfo:${ica.suspectInfoList}">
<div class="row spi-list m-0" th:classappend="${i.index > 0 ? 'dynamic' : ''}"> <div class="row spi-list m-0">
<input type="hidden" name="spiKey" th:value="${suspectInfo.spiKey}">
<label class="col-sm-1 col-form-label col-form-label-sm text-center">성별</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">성별</label>
<div class="col-sm-2" id="sexFormDiv"> <div class="col-sm-auto">
<select class="form-select form-select-sm" name="sex"> <select class="form-select form-select-sm sex">
<th:block th:each="code:${session.commonCode.get('SEX')}"> <th:block th:each="code:${session.commonCode.get('SEX')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq suspectInfo.sex}"></option>
th:selected="${suspectInfo.sex ne null && code.itemCd eq suspectInfo.sex}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">나이</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">나이</label>
<div class="col-sm-2" id="ageFormDiv"> <div class="col-sm-auto">
<select class="form-select form-select-sm" name="age"> <select class="form-select form-select-sm age">
<th:block th:each="code:${session.commonCode.get('AGE')}"> <th:block th:each="code:${session.commonCode.get('AGE')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq suspectInfo.age}"></option>
th:selected="${suspectInfo.age ne null && code.itemCd eq suspectInfo.age}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">국적</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">국적</label>
<div class="col-sm-2" id="countryFormDiv"> <div class="col-sm-auto">
<select class="form-select form-select-sm country" name="country" id="country"> <select class="form-select form-select-sm country">
<th:block th:each="code:${session.commonCode.get('NNY')}"> <th:block th:each="code:${session.commonCode.get('NNY')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" <option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq suspectInfo.country}"></option>
th:selected="${suspectInfo.country ne null && code.itemCd eq suspectInfo.country}"></option>
</th:block> </th:block>
<option value="etc" th:selected="${suspectInfo.country ne null && suspectInfo.country ne '' && !#strings.contains(suspectInfo.country, 'NNY')}">기타</option> <option value="etc">기타</option>
</select> </select>
</div> </div>
<th:block th:if="${suspectInfo.country ne null && suspectInfo.country ne '' && !#strings.contains(suspectInfo.country, 'NNY')}"> <label class="col-sm-1 col-form-label col-form-label-sm text-center">신병처리</label>
<div class="col-sm-2"> <div class="col-sm-auto">
<input type="text" class="form-control form-control-sm" name="countryEtc" th:value="${suspectInfo.country}"> <select class="form-select form-select-sm processResult">
</div> <option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('PCR')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq suspectInfo.processResult}"></option>
</th:block> </th:block>
<th:block th:if="${i.index > 0}"> <option value="etc">기타(신병인계)</option>
<button type="button" class="col-sm-auto btn btn-sm btn-primary spiRemoveBtn" style="display: none"> </select>
</div>
<button type="button" class="btn btn-sm col-sm-auto btn-danger mb-1 spiRemoveBtn" style="display: none">
<i class="bi bi-dash"></i> <i class="bi bi-dash"></i>
</button> </button>
</th:block>
</div> </div>
</th:block> </th:block>
</th:block> </th:block>