국제범죄 검거현황 요청사항 반영

주요사건처리현황 작성일 오류 수정.
master
최강석 2023-05-30 14:47:06 +09:00
parent 12ceaed01a
commit b5c9121bb2
14 changed files with 47 additions and 31 deletions

View File

@ -22,6 +22,7 @@ public class IcaStatistics {
private Integer pcr003Cnt = 0; private Integer pcr003Cnt = 0;
private Integer pcr004Cnt = 0; private Integer pcr004Cnt = 0;
private Integer pcr005Cnt = 0; private Integer pcr005Cnt = 0;
private Integer pcr006Cnt = 0;
private String organ; private String organ;
private Integer year; private Integer year;

View File

@ -107,6 +107,7 @@ public class InternationalCrimeArrestService extends BaseService {
total.setPcr003Cnt(total.getPcr003Cnt()+statistics.getPcr003Cnt()); total.setPcr003Cnt(total.getPcr003Cnt()+statistics.getPcr003Cnt());
total.setPcr004Cnt(total.getPcr004Cnt()+statistics.getPcr004Cnt()); total.setPcr004Cnt(total.getPcr004Cnt()+statistics.getPcr004Cnt());
total.setPcr005Cnt(total.getPcr005Cnt()+statistics.getPcr005Cnt()); total.setPcr005Cnt(total.getPcr005Cnt()+statistics.getPcr005Cnt());
total.setPcr006Cnt(total.getPcr006Cnt()+statistics.getPcr006Cnt());
} }
return total; return total;
} }

View File

@ -61,8 +61,7 @@ public class MajorStatusController {
majorStatus.setWrtUserSeq(loginUser.getUserSeq()); majorStatus.setWrtUserSeq(loginUser.getUserSeq());
majorStatus.setWrtUserGrd(loginUser.getTitleCd()); majorStatus.setWrtUserGrd(loginUser.getTitleCd());
majorStatus.setWrtUserNm(loginUser.getUserNm()); majorStatus.setWrtUserNm(loginUser.getUserNm());
majorStatus.setWrtDt(loginUser.getWrtDt()); majorStatus.setWrtDt(LocalDateTime.now());
majorStatus.setWrtDt(loginUser.getWrtDt());
} }

View File

@ -111,6 +111,8 @@ public class UserInfo extends BaseModel implements UserDetails{
private String school; private String school;
@Column(name = "specialism") @Column(name = "specialism")
private String specialism; private String specialism;
@Column(name = "affair_organ")
private String affairOrgan;
@Transient @Transient
private String modifyPassword; private String modifyPassword;

View File

@ -117,6 +117,8 @@ public class UserInfoHistory extends BaseModel implements Serializable{
private String school; private String school;
@Column(name = "specialism") @Column(name = "specialism")
private String specialism; private String specialism;
@Column(name = "affair_organ")
private String affairOrgan;
@Embeddable @Embeddable

View File

@ -118,7 +118,8 @@
coalesce(c.pcr002Cnt, 0) as pcr002Cnt, coalesce(c.pcr002Cnt, 0) as pcr002Cnt,
coalesce(c.pcr003Cnt, 0) as pcr003Cnt, coalesce(c.pcr003Cnt, 0) as pcr003Cnt,
coalesce(c.pcr004Cnt, 0) as pcr004Cnt, coalesce(c.pcr004Cnt, 0) as pcr004Cnt,
coalesce(c.pcr005Cnt, 0) as pcr005Cnt coalesce(c.pcr005Cnt, 0) as pcr005Cnt,
coalesce(c.pcr006Cnt, 0) as pcr006Cnt
from code_mgt a from code_mgt a
inner join code_mgt b on a.category_cd = 'CTH' and a.item_cd = b.category_cd inner join code_mgt b on a.category_cd = 'CTH' and a.item_cd = b.category_cd
left outer join ( left outer join (
@ -126,13 +127,24 @@
aa.violation_type, aa.violation_type,
count(distinct aa.ica_key) as caseCnt, count(distinct aa.ica_key) as caseCnt,
count(*) as suspectCnt, count(*) as suspectCnt,
0 as arrestCnt, count(distinct case
0 as arrestSuspectCnt, when ab.process_result = 'PCR001'
or ab.process_result = 'PCR002'
or ab.process_result = 'PCR003' then aa.ica_key
else null
end) as arrestCnt,
sum(case
when ab.process_result = 'PCR001'
or ab.process_result = 'PCR002'
or ab.process_result = 'PCR003' then 1
else 0
end) as arrestSuspectCnt,
sum(case when ab.process_result = 'PCR001' then 1 else 0 end) as pcr001Cnt, sum(case when ab.process_result = 'PCR001' then 1 else 0 end) as pcr001Cnt,
sum(case when ab.process_result = 'PCR002' then 1 else 0 end) as pcr002Cnt, sum(case when ab.process_result = 'PCR002' then 1 else 0 end) as pcr002Cnt,
sum(case when ab.process_result = 'PCR003' then 1 else 0 end) as pcr003Cnt, sum(case when ab.process_result = 'PCR003' then 1 else 0 end) as pcr003Cnt,
sum(case when ab.process_result = 'PCR004' then 1 else 0 end) as pcr004Cnt, sum(case when ab.process_result = 'PCR004' then 1 else 0 end) as pcr004Cnt,
sum(case when ab.process_result = 'PCR005' then 1 else 0 end) as pcr005Cnt sum(case when ab.process_result = 'PCR005' then 1 else 0 end) as pcr005Cnt,
sum(case when ab.process_result = 'PCR006' then 1 else 0 end) as pcr006Cnt
from international_crime_arrest aa from international_crime_arrest aa
inner join ica_suspect_info ab on aa.ica_key = ab.ica_key inner join ica_suspect_info ab on aa.ica_key = ab.ica_key
where department = #{organ} where department = #{organ}

View File

@ -263,19 +263,21 @@ function dynamicOption(targetTagName, code, defaultOptionName='') {
$(targetTagName).append('<option value="">' +defaultOptionName + '선택</option>' + option); $(targetTagName).append('<option value="">' +defaultOptionName + '선택</option>' + option);
} }
function departmentDynamicOption(targetTagName, code, defaultOptionName='') { function departmentDynamicOption(targetTagName, parentEl) {
$(targetTagName).empty(); let option = '<option value="">' + '선택</option>';
let option = ''; option += '<option value="' + parentEl.val() + '">' + parentEl[0].selectedOptions[0].innerText + '</option>';
organConfigList.forEach(function (organConfig) { organConfigList.forEach(function (organConfig) {
if(organConfig.organCd !== "OG028"){ if(organConfig.organCd !== "OG028"){
if (organConfig.parentOrgan != null && organConfig.organType !== 'OGC002' && organConfig.parentOrgan === code) { if (organConfig.parentOrgan != null
&& organConfig.organType !== 'OGC002'
&& organConfig.parentOrgan === parentEl.val()) {
option += '<option value="' + organConfig.organCd + '">' + organConfig.organNm + '</option>'; option += '<option value="' + organConfig.organCd + '">' + organConfig.organNm + '</option>';
}else if(code==="OG001" && organConfig.organType === 'OGC003'){ }else if(parentEl.val()==="OG001" && organConfig.organType === 'OGC003'){
option += '<option value="' + organConfig.organCd + '">' + organConfig.organNm + '</option>'; option += '<option value="' + organConfig.organCd + '">' + organConfig.organNm + '</option>';
} }
} }
}); });
$(targetTagName).append('<option value="">' + defaultOptionName + ' 선택</option>' + option); $(targetTagName).empty().append(option);
} }
function dateTimeCalc(startDateTime, endDateTime) { function dateTimeCalc(startDateTime, endDateTime) {

View File

@ -58,8 +58,8 @@ $(document).on('click', '.tr', function (){
getIcaViewModal($(this).data('key')); getIcaViewModal($(this).data('key'));
}); });
$(document).on('change', 'select[name="organ"]', function (){ $(document).on('change', '#organSelector', function (){
departmentDynamicOption('select[name="department"]', $(this).val()); departmentDynamicOption('#departmentSelector', $(this));
}); });
$(document).on('change', '#crimeType', function (){ $(document).on('change', '#crimeType', function (){

View File

@ -53,7 +53,7 @@
<th rowspan="2">위반유형</th> <th rowspan="2">위반유형</th>
<th colspan="2">발생</th> <th colspan="2">발생</th>
<th colspan="2">검거</th> <th colspan="2">검거</th>
<th colspan="5">피의자 신병 처리 결과</th> <th th:colspan="${session.commonCode.get('PCR').size()}">피의자 신병 처리 결과</th>
</tr> </tr>
<tr class="table-secondary"> <tr class="table-secondary">
<th></th> <th></th>
@ -70,6 +70,7 @@
<th th:text="${total.suspectCnt}"></th> <th th:text="${total.suspectCnt}"></th>
<th th:text="${total.arrestCnt}"></th> <th th:text="${total.arrestCnt}"></th>
<th th:text="${total.arrestSuspectCnt}"></th> <th th:text="${total.arrestSuspectCnt}"></th>
<th th:text="${total.pcr006Cnt}"></th>
<th th:text="${total.pcr001Cnt}"></th> <th th:text="${total.pcr001Cnt}"></th>
<th th:text="${total.pcr002Cnt}"></th> <th th:text="${total.pcr002Cnt}"></th>
<th th:text="${total.pcr003Cnt}"></th> <th th:text="${total.pcr003Cnt}"></th>
@ -86,6 +87,7 @@
<th th:text="${statistics.suspectCnt}"></th> <th th:text="${statistics.suspectCnt}"></th>
<th th:text="${statistics.arrestCnt}"></th> <th th:text="${statistics.arrestCnt}"></th>
<th th:text="${statistics.arrestSuspectCnt}"></th> <th th:text="${statistics.arrestSuspectCnt}"></th>
<th th:text="${statistics.pcr006Cnt}"></th>
<th th:text="${statistics.pcr001Cnt}"></th> <th th:text="${statistics.pcr001Cnt}"></th>
<th th:text="${statistics.pcr002Cnt}"></th> <th th:text="${statistics.pcr002Cnt}"></th>
<th th:text="${statistics.pcr003Cnt}"></th> <th th:text="${statistics.pcr003Cnt}"></th>

View File

@ -19,7 +19,7 @@
<div class="row mb-1"> <div class="row mb-1">
<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="organ"> <select class="form-select form-select-sm" name="organ" id="organSelector">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="organConfig:${organConfigList}"> <th:block th:each="organConfig:${organConfigList}">
<th:block th:if="${organConfig.parentOrgan eq 'OG001' or organConfig.organCd eq 'OG001'}"> <th:block th:if="${organConfig.parentOrgan eq 'OG001' or organConfig.organCd eq 'OG001'}">
@ -30,10 +30,10 @@
</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="departmentDiv"> <div class="col-sm-2" id="departmentDiv">
<select class="form-select form-select-sm" name="department"> <select class="form-select form-select-sm" name="department" id="departmentSelector">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="organConfig:${organConfigList}"> <th:block th:each="organConfig:${organConfigList}">
<th:block th:if="${organConfig.parentOrgan ne null && organConfig.organType ne 'OGC002' && organConfig.parentOrgan eq ica.organ}"> <th:block th:if="${organConfig.parentOrgan eq ica.organ or organConfig.organCd eq ica.organ}">
<option th:value="${organConfig.organCd}" th:text="${organConfig.organNm}" th:selected="${organConfig.organCd eq ica.department}"></option> <option th:value="${organConfig.organCd}" th:text="${organConfig.organNm}" th:selected="${organConfig.organCd eq ica.department}"></option>
</th:block> </th:block>
</th:block> </th:block>
@ -417,7 +417,6 @@
<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-auto"> <div class="col-sm-auto">
<select class="form-select form-select-sm processResult"> <select class="form-select form-select-sm processResult">
<option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('PCR')}"> <th:block th:each="code:${session.commonCode.get('PCR')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option> <option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
</th:block> </th:block>
@ -459,11 +458,9 @@
<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-auto"> <div class="col-sm-auto">
<select class="form-select form-select-sm processResult"> <select class="form-select form-select-sm processResult">
<option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('PCR')}"> <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> <option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq suspectInfo.processResult}"></option>
</th:block> </th:block>
<option value="etc">기타(신병인계)</option>
</select> </select>
</div> </div>
<button type="button" class="btn btn-sm col-sm-auto btn-danger mb-1 spiRemoveBtn" style="display: none"> <button type="button" class="btn btn-sm col-sm-auto btn-danger mb-1 spiRemoveBtn" style="display: none">
@ -523,11 +520,9 @@
<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-auto"> <div class="col-sm-auto">
<select class="form-select form-select-sm processResult"> <select class="form-select form-select-sm processResult">
<option value="">선택</option>
<th:block th:each="code:${session.commonCode.get('PCR')}"> <th:block th:each="code:${session.commonCode.get('PCR')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option> <option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
</th:block> </th:block>
<option value="etc">기타(신병인계)</option>
</select> </select>
</div> </div>
<button type="button" class="btn btn-sm col-sm-auto btn-danger mb-1 spiRemoveBtn"> <button type="button" class="btn btn-sm col-sm-auto btn-danger mb-1 spiRemoveBtn">

View File

@ -272,7 +272,7 @@
</label> </label>
<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>
<label class="col-sm-2 col-form-label col-form-label-sm text-start"> <label class="col-sm-2 col-form-label col-form-label-sm text-start">
<th:block th:each="code:${session.commonCode.get('')}"> <th:block th:each="code:${session.commonCode.get('PCR')}">
<th:block th:if="${code.itemCd eq suspect.processResult}" th:text="${code.itemValue}"></th:block> <th:block th:if="${code.itemCd eq suspect.processResult}" th:text="${code.itemValue}"></th:block>
</th:block> </th:block>
</label> </label>

View File

@ -23,9 +23,9 @@
</th:block> </th:block>
</th:block> </th:block>
</div> </div>
<label for="wrtDt" class="col-sm-2 col-form-label col-form-label-sm text-center">작성일</label> <label for="wrtDt" class="col-sm-2 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" id="wrtDt" name="wrtDt" th:value="${#temporals.format(majorStatus.wrtDt, 'yyyy-MM-dd HH:mm')}" readonly> <input type="text" class="form-control form-control-sm" id="wrtDt" name="wrtDt" th:value="${#temporals.format(majorStatus.wrtDt, 'yyyy-MM-dd')}" readonly>
</div> </div>
<label for="majorType" class="col-sm-2 col-form-label col-form-label-sm text-center">분류</label> <label for="majorType" class="col-sm-2 col-form-label col-form-label-sm text-center">분류</label>
<div class="col-sm-2"> <div class="col-sm-2">

View File

@ -83,7 +83,7 @@
<th>제목</th> <th>제목</th>
<th>내용</th> <th>내용</th>
<th>첨부파일</th> <th>첨부파일</th>
<th>작성일</th> <th>작성일</th>
</tr> </tr>
</thead> </thead>
<tbody class="table-group-divider"> <tbody class="table-group-divider">
@ -99,7 +99,7 @@
<td class="titleLeft" th:text="|${major.contentStatus eq 'DST001'?'[임시]':''}${major.contentTitle}|"></td> <td class="titleLeft" th:text="|${major.contentStatus eq 'DST001'?'[임시]':''}${major.contentTitle}|"></td>
<td class="titleLeft" th:utext="${major.contentInfo}"></td> <td class="titleLeft" th:utext="${major.contentInfo}"></td>
<td th:text="${major.fileCnt eq null?'파일 없음':#strings.concat(major.fileCnt,' 건')}"></td> <td th:text="${major.fileCnt eq null?'파일 없음':#strings.concat(major.fileCnt,' 건')}"></td>
<td th:text="${#temporals.format(major.wrtDt, 'yyyy-MM-dd HH:mm')}"></td> <td th:text="${#temporals.format(major.wrtDt, 'yyyy-MM-dd')}"></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@ -25,9 +25,9 @@
<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>
<label class="col-sm-5 col-form-label col-form-label-sm text-start" <label class="col-sm-5 col-form-label col-form-label-sm text-start"
th:text="${majorStatus.contentTitle}"></label> th:text="${majorStatus.contentTitle}"></label>
<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>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" <label class="col-sm-2 col-form-label col-form-label-sm text-start"
th:text="${#temporals.format(majorStatus.wrtDt, 'yyyy-MM-dd HH:mm')}"></label> th:text="${#temporals.format(majorStatus.wrtDt, 'yyyy-MM-dd')}"></label>
<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>
<label class="col-sm-2 col-form-label col-form-label-sm text-start"> <label class="col-sm-2 col-form-label col-form-label-sm text-start">
<th:block th:each="commonCode:${session.commonCode.get('OG')}"> <th:block th:each="commonCode:${session.commonCode.get('OG')}">