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

master
강석 최 2023-01-30 18:46:22 +09:00
parent 0118c53f6e
commit a1c885f2f0
7 changed files with 69 additions and 3 deletions

View File

@ -141,6 +141,7 @@ public class SecurityConfig{
"/counterIntelligence/**",
"/monitoring/**",
"/intelligenceNetwork/**",
"/deadline/**",
"/resetSession"
).hasRole(Role.USER.name()) // USER 접근 허용
.antMatchers(

View File

@ -6,6 +6,7 @@ import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
import com.dbnt.faisp.main.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
import com.dbnt.faisp.main.faStatistics.internationalCrimeArrest.repository.SuspectPersonInfoRepository;
import com.dbnt.faisp.main.faStatistics.internationalCrimeArrest.service.InternationalCrimeArrestService;
import com.dbnt.faisp.main.menuMgt.service.MenuMgtService;
import com.dbnt.faisp.main.organMgt.model.OrganConfig;
import com.dbnt.faisp.main.organMgt.service.OrganConfigService;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
@ -29,9 +30,9 @@ public class InternationalCrimeArrestController {
private final AuthMgtService authMgtService;
private final InternationalCrimeArrestService internationalCrimeArrestService;
private final CodeMgtService codeMgtService;
private final OrganConfigService organConfigService;
private final SuspectPersonInfoRepository suspectPersonInfoRepository;
private final MenuMgtService menuMgtService;
@GetMapping("/internationalCrimeArrest")
public ModelAndView internationalCrimeArrest(@AuthenticationPrincipal UserInfo loginUser,InternationalCrimeArrest internationalCrimeArrest) {
@ -53,6 +54,7 @@ public class InternationalCrimeArrestController {
mav.addObject("internationalCrimeArrestList", internationalCrimeArrestList);
internationalCrimeArrest.setContentCnt(internationalCrimeArrestService.selectInternationalCrimeArrestListCnt(internationalCrimeArrest));
internationalCrimeArrest.setPaginationInfo();
mav.addObject("deadlineState", menuMgtService.selectDeadlineChk("/faStatistics/internationalCrimeArrest"));
mav.addObject("organConfigList", organConfigService.selectOrganList());
mav.addObject("searchParams", internationalCrimeArrest);
return mav;

View File

@ -0,0 +1,21 @@
package com.dbnt.faisp.main.menuMgt;
import com.dbnt.faisp.main.menuMgt.model.MenuMgt;
import com.dbnt.faisp.main.menuMgt.service.MenuMgtService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
@RequestMapping("/deadline")
public class DeadlineController {
private final MenuMgtService menuMgtService;
@PostMapping("/stateChange")
public void stateChange(MenuMgt menuMgt){
menuMgtService.updateDeadlineState(menuMgt);
}
}

View File

@ -2,10 +2,17 @@ package com.dbnt.faisp.main.menuMgt.repository;
import com.dbnt.faisp.main.menuMgt.model.MenuMgt;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.util.Optional;
public interface MenuMgtRepository extends JpaRepository<MenuMgt, Integer> {
Optional<MenuMgt> findTopByCat1CdAndCat2CdAndCat3Cd(String cat1Cd, String cat2Cd, String cat3Cd);
Optional<MenuMgt> findByMenuUrl(String menuUrl);
@Modifying(clearAutomatically = true)
@Query("update MenuMgt set deadlineChk = :deadlineChk where menuKey = :menuKey")
void bulkModifyingByMenuKeyToDeadlineChk(Integer menuKey, String deadlineChk);
}

View File

@ -188,4 +188,12 @@ public class MenuMgtService {
MenuMgt menuMgt = menuMgtRepository.findById(menuKey).orElse(new MenuMgt());
return menuMgt.getMenuUrl();
}
public String selectDeadlineChk(String url){
return menuMgtRepository.findByMenuUrl(url).orElse(new MenuMgt()).getDeadlineChk();
}
@Transactional
public void updateDeadlineState(MenuMgt menuMgt) {
menuMgtRepository.bulkModifyingByMenuKeyToDeadlineChk(menuMgt.getMenuKey(), menuMgt.getDeadlineChk());
}
}

View File

@ -0,0 +1,26 @@
$(document).on('click', '#deadlineBtn', function (){
contentFade("in");
const formData = new FormData();
const deadlineChk = $(this).attr('data-deadlinechk')==="T"?"F":"T"
formData.append("menuKey", $(this).attr('data-menukey'));
formData.append("deadlineChk", deadlineChk);
$.ajax({
type : 'POST',
data : formData,
url : "/deadline/stateChange",
processData: false,
contentType: false,
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(result) {
alert((deadlineChk==="T"?"마감":"등록허용")+" 되었습니다.");
contentFade("out");
location.reload();
},
error : function(xhr, status) {
alert("상태변경에 실패하였습니다.")
contentFade("out");
}
})
})

View File

@ -10,6 +10,7 @@
const organConfigList = [[${organConfigList}]];
</script>
<script type="text/javascript" th:src="@{/js/faStatistics/internationalCrimeArrest.js}"></script>
<script type="text/javascript" th:src="@{/js/menuMgt/deadline.js}"></script>
</th:block>
<div layout:fragment="content">
<main>
@ -230,7 +231,7 @@
<!-- 페이징 -->
<div class="row justify-content-between">
<div class="col-auto">
<button class="btn btn-warning" id="ivsgtAddBtn" th:if="${accessAuth eq 'ACC003'}">마감</button>
<button class="btn btn-warning" id="deadlineBtn" data-menukey="41" th:data-deadlinechk="${deadlineState}" th:if="${accessAuth eq 'ACC003'}" th:text="${deadlineState eq 'F'?'마감':'등록허용'}"></button>
<button class="btn btn-success" id="icaExcelDownBtn">엑셀 다운로드</button>
</div>
<div class="col-auto">
@ -259,7 +260,7 @@
</nav>
</div>
<div class="col-auto">
<button class="btn btn-primary" id="icaAddBtn">등록</button>
<button class="btn btn-primary" id="icaAddBtn" th:disabled="${deadlineState eq 'T'}">등록</button>
</div>
</div>
</div>