국제범죄 검거현황 삭제기능 추가.

사용대장 수정삭제버튼 조건 수정.
master
강석 최 2023-03-20 10:46:49 +09:00
parent 552641b6ab
commit f0b5ef064f
8 changed files with 226 additions and 189 deletions

View File

@ -362,7 +362,6 @@ public class EquipController {
useList.setDownOrganCdList(loginUser.getDownOrganCdList()); useList.setDownOrganCdList(loginUser.getDownOrganCdList());
mav.addObject("organList", equipService.selectOrganList(useList)); mav.addObject("organList", equipService.selectOrganList(useList));
mav.addObject("info", equipService.selectUseInfo(useList)); mav.addObject("info", equipService.selectUseInfo(useList));
mav.addObject("wrtUserSeq", equipService.selectFirstWrtUserSeq(useList));
mav.addObject("userSeq", loginUser.getUserSeq()); mav.addObject("userSeq", loginUser.getUserSeq());
//메뉴권한 확인 //메뉴권한 확인

View File

@ -97,6 +97,10 @@ public class InternationalCrimeArrestController {
internationalCrimeArrest.setWrtUserSeq(loginUser.getUserSeq()); internationalCrimeArrest.setWrtUserSeq(loginUser.getUserSeq());
return internationalCrimeArrestService.savedInternationalCrimeArrest(internationalCrimeArrest); return internationalCrimeArrestService.savedInternationalCrimeArrest(internationalCrimeArrest);
} }
@PostMapping("/deleteInternationalCrimeArrest")
public void deleteInternationalCrimeArrest(@RequestBody InternationalCrimeArrest internationalCrimeArrest){
internationalCrimeArrestService.deleteInternationalCrimeArrest(internationalCrimeArrest);
}
@GetMapping("/internationalCrimeArrest/ExcelDown") @GetMapping("/internationalCrimeArrest/ExcelDown")
public void icaExcelDown(HttpServletResponse response, InternationalCrimeArrest internationalCrimeArrest) { public void icaExcelDown(HttpServletResponse response, InternationalCrimeArrest internationalCrimeArrest) {

View File

@ -2,7 +2,13 @@ package com.dbnt.faisp.main.faStatistics.internationalCrimeArrest.repository;
import com.dbnt.faisp.main.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest; import com.dbnt.faisp.main.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
public interface InternationalCrimeArrestRepository extends JpaRepository<InternationalCrimeArrest, Integer> { public interface InternationalCrimeArrestRepository extends JpaRepository<InternationalCrimeArrest, Integer> {
@Modifying(clearAutomatically = true)
@Query("update InternationalCrimeArrest set contentStatus = :contentStatus where icaKey = :icaKey")
void bulkModifyingByIcaKeyToContentStatus(Integer icaKey, String contentStatus);
} }

View File

@ -78,4 +78,10 @@ public class InternationalCrimeArrestService extends BaseService {
return icaKey; return icaKey;
} }
@Transactional
public void deleteInternationalCrimeArrest(InternationalCrimeArrest internationalCrimeArrest) {
internationalCrimeArrestRepository.bulkModifyingByIcaKeyToContentStatus(internationalCrimeArrest.getIcaKey(), "D");
}
} }

View File

@ -616,34 +616,35 @@
<select id="selectUseInfo" resultType="UseList" parameterType="UseList"> <select id="selectUseInfo" resultType="UseList" parameterType="UseList">
select (select item_value from code_mgt where item_cd = mgt_organ) as sosok, select (select item_value from code_mgt where item_cd = mgt_organ) as sosok,
use_type, use_type,
mgt_organ, mgt_organ,
ul.use_no, ul.use_no,
ul.version_no, ul.version_no,
use_dt, use_dt,
(select item_value from code_mgt where item_cd = detail_type) as detail_type_name, (select item_value from code_mgt where item_cd = detail_type) as detail_type_name,
detail_type, detail_type,
detail_self, detail_self,
people_cnt, people_cnt,
description, description,
wrt_dt wrt_user_seq,
wrt_dt
from use_list ul, from use_list ul,
(select use_no,max(version_no) as lastVer from use_list (select use_no,max(version_no) as lastVer from use_list
where use_no = #{useNo} where use_no = #{useNo}
<if test='versionNo != null and versionNo != ""'> <if test='versionNo != null and versionNo != ""'>
and version_no = #{versionNo} and version_no = #{versionNo}
</if> </if>
and use_type = #{useType} and use_type = #{useType}
and mgt_organ = #{mgtOrgan} and mgt_organ = #{mgtOrgan}
group by use_no) b group by use_no) b
where ul.use_no = b.use_no where ul.use_no = b.use_no
and ul.version_no = b.lastVer and ul.version_no = b.lastVer
and ul.use_no = #{useNo} and ul.use_no = #{useNo}
<if test='versionNo != null and versionNo != ""'> <if test='versionNo != null and versionNo != ""'>
and version_no = #{versionNo} and version_no = #{versionNo}
</if> </if>
and use_type = #{useType} and use_type = #{useType}
and mgt_organ = #{mgtOrgan} and mgt_organ = #{mgtOrgan}
</select> </select>
<select id="selectUseHistoryList" resultType="UseList" parameterType="UseList"> <select id="selectUseHistoryList" resultType="UseList" parameterType="UseList">

View File

@ -4,178 +4,179 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dbnt.faisp.main.faStatistics.internationalCrimeArrest.mapper.InternationalCrimeArrestMapper"> <mapper namespace="com.dbnt.faisp.main.faStatistics.internationalCrimeArrest.mapper.InternationalCrimeArrestMapper">
<sql id="selectInternationalCrimeArrestListWhere"> <sql id="selectInternationalCrimeArrestListWhere">
<where> <where>
<if test='organ != null and organ != ""'> content_status &lt;> 'D'
AND organ = #{organ} <if test='organ != null and organ != ""'>
</if> AND organ = #{organ}
<if test='department != null and department != ""'> </if>
AND department = #{department} <if test='department != null and department != ""'>
</if> AND department = #{department}
<if test='crimeType != null and crimeType != ""'> </if>
AND crime_type = #{crimeType} <if test='crimeType != null and crimeType != ""'>
</if> AND crime_type = #{crimeType}
<if test='violationType != null and violationType != ""'> </if>
AND violation_type = #{violationType} <if test='violationType != null and violationType != ""'>
</if> AND violation_type = #{violationType}
<if test='caseNum != null and caseNum != ""'> </if>
AND case_num = #{caseNum} <if test='caseNum != null and caseNum != ""'>
</if> AND case_num = #{caseNum}
<if test='crimeName != null and crimeName != ""'> </if>
AND crime_name LIKE CONCAT('%', #{crimeName}, '%') <if test='crimeName != null and crimeName != ""'>
</if> AND crime_name LIKE CONCAT('%', #{crimeName}, '%')
<if test='occurTable != null and occurTable != ""'> </if>
AND occur_table LIKE CONCAT('%', #{occurTable}, '%') <if test='occurTable != null and occurTable != ""'>
</if> AND occur_table LIKE CONCAT('%', #{occurTable}, '%')
<if test='arrestTable != null and arrestTable != ""'> </if>
AND arrest_table LIKE CONCAT('%', #{arrestTable}, '%') <if test='arrestTable != null and arrestTable != ""'>
</if> AND arrest_table LIKE CONCAT('%', #{arrestTable}, '%')
<if test='suspectTable != null and suspectTable != ""'> </if>
AND suspect_table LIKE CONCAT('%', #{suspectTable}, '%') <if test='suspectTable != null and suspectTable != ""'>
</if> AND suspect_table LIKE CONCAT('%', #{suspectTable}, '%')
<if test='crimeAwarenessDt != null'> </if>
And crime_awareness_dt = #{crimeAwarenessDt}::DATE <if test='crimeAwarenessDt != null'>
</if> And crime_awareness_dt = #{crimeAwarenessDt}::DATE
<if test='caseSentDt != null'> </if>
AND case_sent_dt = #{caseSentDt}::DATE <if test='caseSentDt != null'>
</if> AND case_sent_dt = #{caseSentDt}::DATE
<if test='processResult != null and processResult != ""'> </if>
AND process_result = #{processResult} <if test='processResult != null and processResult != ""'>
</if> AND process_result = #{processResult}
<if test='dateSelector == "wrtDt"'> </if>
<if test='startDate != null and startDate != ""'> <if test='dateSelector == "wrtDt"'>
And wrt_dt >= #{startDate}::DATE <if test='startDate != null and startDate != ""'>
</if> And wrt_dt >= #{startDate}::DATE
<if test='endDate != null and endDate != ""'> </if>
AND wrt_dt &lt;= #{endDate}::DATE+1 <if test='endDate != null and endDate != ""'>
</if> AND wrt_dt &lt;= #{endDate}::DATE+1
</if> </if>
</where> </if>
</sql> </where>
</sql>
<select id="selectInternationalCrimeArrestList" resultType="InternationalCrimeArrest" parameterType="InternationalCrimeArrest"> <select id="selectInternationalCrimeArrestList" resultType="InternationalCrimeArrest" parameterType="InternationalCrimeArrest">
SELECT SELECT
i.ica_key, i.ica_key,
i.organ, i.organ,
i.department, i.department,
i.crime_type, i.crime_type,
i.violation_type, i.violation_type,
i.crime_name, i.crime_name,
i.smuggling_amount, i.smuggling_amount,
i.occur_table, i.occur_table,
i.arrest_table, i.arrest_table,
i.suspect_table, i.suspect_table,
i.crime_awareness_dt, i.crime_awareness_dt,
i.case_sent_dt, i.case_sent_dt,
i.process_result, i.process_result,
i.other_crime, i.other_crime,
i.case_num, i.case_num,
i.case_overview, i.case_overview,
i.arrest_area, i.arrest_area,
i.means, i.means,
i.crime_form, i.crime_form,
i.purpose, i.purpose,
i.smuggled_goods, i.smuggled_goods,
i.crackdown_personel, i.crackdown_personel,
i.violation_amount, i.violation_amount,
i.destination, i.destination,
i.content_status, i.content_status,
i.wrt_organ, i.wrt_organ,
i.wrt_user_seq, i.wrt_user_seq,
i.wrt_nm, i.wrt_nm,
i.wrt_dt i.wrt_dt
FROM international_crime_arrest i FROM international_crime_arrest i
<include refid="selectInternationalCrimeArrestListWhere"></include> <include refid="selectInternationalCrimeArrestListWhere"></include>
ORDER BY i.ica_key DESC ORDER BY i.ica_key DESC
LIMIT #{rowCnt} OFFSET #{firstIndex} LIMIT #{rowCnt} OFFSET #{firstIndex}
</select> </select>
<select id="selectInternationalCrimeArrestListCnt" resultType="int" parameterType="InternationalCrimeArrest"> <select id="selectInternationalCrimeArrestListCnt" resultType="int" parameterType="InternationalCrimeArrest">
SELECT count(*) SELECT count(*)
FROM international_crime_arrest FROM international_crime_arrest
<include refid="selectInternationalCrimeArrestListWhere"></include> <include refid="selectInternationalCrimeArrestListWhere"></include>
</select> </select>
<select id="selectInternationalCrimeArrestParamList" resultType="com.dbnt.faisp.util.ParamMap" parameterType="InternationalCrimeArrest"> <select id="selectInternationalCrimeArrestParamList" resultType="com.dbnt.faisp.util.ParamMap" parameterType="InternationalCrimeArrest">
SELECT SELECT
i.ica_key, i.ica_key,
i.occur_table, i.occur_table,
i.arrest_table, i.arrest_table,
i.suspect_table, i.suspect_table,
to_char(i.crime_awareness_dt, 'YYYY-MM-DD') as crime_awareness_dt, 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, to_char(i.case_sent_dt, 'YYYY-MM-DD') as case_sent_dt,
i.other_crime, i.other_crime,
i.case_num, i.case_num,
i.case_overview, i.case_overview,
i.arrest_area, i.arrest_area,
i.crackdown_personel, i.crackdown_personel,
i.violation_amount, i.violation_amount,
i.destination, i.destination,
i.content_status, i.content_status,
i.wrt_organ, i.wrt_organ,
i.wrt_user_seq, i.wrt_user_seq,
i.wrt_nm, i.wrt_nm,
to_char(i.wrt_dt, 'YYYY-MM-DD HH24:MI') as wrt_dt, to_char(i.wrt_dt, 'YYYY-MM-DD HH24:MI') as wrt_dt,
cm1.item_value AS organ, cm1.item_value AS organ,
cm2.item_value AS department, cm2.item_value AS department,
cm3.item_value AS crime_type, cm3.item_value AS crime_type,
cm4.item_value AS violation_type, cm4.item_value AS violation_type,
COALESCE(cm5.item_value, i.process_result) AS process_result, COALESCE(cm5.item_value, i.process_result) AS process_result,
COALESCE(cm6.item_value, i.means) AS means, COALESCE(cm6.item_value, i.means) AS means,
cm7.item_value AS crime_form, cm7.item_value AS crime_form,
COALESCE(cm8.item_value, i.purpose) AS purpose, COALESCE(cm8.item_value, i.purpose) AS purpose,
COALESCE(cm9.item_value, i.smuggled_goods) AS smuggled_goods, 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 concat(cm10.item_value,' ',cm11.item_value,' ',COALESCE(cm12.item_value, s.country)) as personal_information
FROM international_crime_arrest i FROM international_crime_arrest i
INNER JOIN suspect_person_info s INNER JOIN suspect_person_info s
ON i.ica_key = s.ica_key ON i.ica_key = s.ica_key
LEFT JOIn code_mgt cm1 ON i.organ = cm1.item_cd 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 cm2 ON i.department = cm2.item_cd
LEFT JOIN code_mgt cm3 ON i.crime_type = cm3.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 cm4 ON i.violation_type = cm4.item_cd
LEFT JOIN code_mgt cm5 ON i.process_result = cm5.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 cm6 ON i.means = cm6.item_cd
LEFT JOIN code_mgt cm7 ON i.crime_form = cm7.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 cm8 ON i.purpose = cm8.item_cd
LEFT JOIN code_mgt cm9 ON i.smuggled_goods = cm9.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 cm10 ON s.sex = cm10.item_cd
LEFT JOIN code_mgt cm11 ON s.age = cm11.item_cd LEFT JOIN code_mgt cm11 ON s.age = cm11.item_cd
LEFT JOIN code_mgt cm12 ON s.country = cm12.item_cd LEFT JOIN code_mgt cm12 ON s.country = cm12.item_cd
<include refid="selectInternationalCrimeArrestListWhere"></include> <include refid="selectInternationalCrimeArrestListWhere"></include>
ORDER BY i.ica_key DESC ORDER BY i.ica_key DESC
LIMIT #{rowCnt} OFFSET #{firstIndex} LIMIT #{rowCnt} OFFSET #{firstIndex}
</select> </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,
s.ica_key, s.ica_key,
s.sex, s.sex,
s.age, s.age,
s.country, s.country,
s.stay_qualification, s.stay_qualification,
s.stay_period_expired_dt, s.stay_period_expired_dt,
s.entry_visa s.entry_visa
FROM suspect_person_info s FROM suspect_person_info s
INNER JOIN international_crime_arrest i INNER JOIN international_crime_arrest i
ON s.ica_key = i.ica_key ON s.ica_key = i.ica_key
WHERE s.ica_key = #{icaKey} WHERE s.ica_key = #{icaKey}
</select> </select>
<select id="icaDuplicateCount" resultType="int" parameterType="InternationalCrimeArrest"> <select id="icaDuplicateCount" resultType="int" parameterType="InternationalCrimeArrest">
SELECT SELECT
COUNT(*) COUNT(*)
FROM ( FROM (
SELECT SELECT
s.ica_key s.ica_key
, row_number() OVER (PARTITION BY s.ica_key) AS row , row_number() OVER (PARTITION BY s.ica_key) AS row
FROM suspect_person_info s FROM suspect_person_info s
INNER JOIN international_crime_arrest i INNER JOIN international_crime_arrest i
ON s.ica_key = i.ica_key ON s.ica_key = i.ica_key
<include refid="selectInternationalCrimeArrestListWhere"></include> <include refid="selectInternationalCrimeArrestListWhere"></include>
ORDER BY i.ica_key DESC ORDER BY i.ica_key DESC
LIMIT #{rowCnt} OFFSET #{firstIndex} LIMIT #{rowCnt} OFFSET #{firstIndex}
) a ) a
WHERE a.row > 1 WHERE a.row > 1
</select> </select>
</mapper> </mapper>

View File

@ -20,6 +20,25 @@ $(document).on('click', '#icaEditBtn', function () {
$("#icaViewModal").modal('hide'); $("#icaViewModal").modal('hide');
getIcaEditModal(Number($("#icaViewBody").find("[name='icaKey']").val())); getIcaEditModal(Number($("#icaViewBody").find("[name='icaKey']").val()));
}); });
$(document).on('click', '#icaDeleteBtn', function (){
$.ajax({
type : 'POST',
url : "/faStatistics/deleteInternationalCrimeArrest",
data : JSON.stringify({icaKey: $("#viewModalKey").val()}),
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(result) {
alert("삭제되었습니다.");
location.reload();
},
error : function(xhr, status) {
alert("삭제를 실패하였습니다.")
contentFade("out");
}
})
})
$(document).on('click', '#saveIcaBtn', function (){ $(document).on('click', '#saveIcaBtn', function (){

View File

@ -5,7 +5,7 @@
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<input type="hidden" name="icaKey" th:value="${internationalCrimeArrest.icaKey}"> <input type="hidden" name="icaKey" id="viewModalKey" th:value="${internationalCrimeArrest.icaKey}">
<!-- <div class="row mb-1"> <!-- <div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">사건번호</label> <label class="col-sm-2 col-form-label col-form-label-sm text-center">사건번호</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${internationalCrimeArrest.caseNum}"></label> <label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${internationalCrimeArrest.caseNum}"></label>
@ -314,6 +314,7 @@
</div> </div>
<div class="modal-footer bg-light"> <div class="modal-footer bg-light">
<th:block th:if="${userSeq eq internationalCrimeArrest.wrtUserSeq or (#lists.contains(mgtOrganList, internationalCrimeArrest.wrtOrgan) and accessAuth eq 'ACC003')}"><!--작성자일 경우 수정 허용--><!--관리자일 경우 수정 허용--> <th:block th:if="${userSeq eq internationalCrimeArrest.wrtUserSeq or (#lists.contains(mgtOrganList, internationalCrimeArrest.wrtOrgan) and accessAuth eq 'ACC003')}"><!--작성자일 경우 수정 허용--><!--관리자일 경우 수정 허용-->
<button type="button" class="btn btn-danger" id="icaDeleteBtn">삭제</button>
<button type="button" class="btn btn-warning" id="icaEditBtn">수정</button> <button type="button" class="btn btn-warning" id="icaEditBtn">수정</button>
</th:block> </th:block>
<!-- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>--> <!-- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>-->