관리자메뉴 > 외사경찰관리 인사시스템 연동 기능 추가.

강석 최 2022-10-31 11:35:08 +09:00
parent 6706d51e52
commit ac9978fd0f
6 changed files with 111 additions and 17 deletions

View File

@ -39,9 +39,67 @@ public class UserInfoService implements UserDetailsService {
return userInfoRepository.save(userInfo).getUserId();
}
@Transactional
public String updateUserInfo(UserInfo userInfo){
userInfo.setPassword(convertPassword(userInfo.getPassword()));
return userInfoRepository.save(userInfo).getUserId();
public void updateUserInfo(UserInfo userInfo){
UserInfo savedInfo = userInfoRepository.findById(userInfo.getUserSeq()).orElse(null);
if(savedInfo!=null){
if(userInfo.getUserNm()!=null){
savedInfo.setUserNm(userInfo.getUserNm());
}
if(userInfo.getPassword()!=null){
savedInfo.setPassword(convertPassword(userInfo.getPassword()));
}
if(userInfo.getPhoneNo()!=null){
savedInfo.setPhoneNo(userInfo.getPhoneNo());
}
if(userInfo.getEmail()!=null){
savedInfo.setEmail(userInfo.getEmail());
}
if(userInfo.getSex()!=null){
savedInfo.setSex(userInfo.getSex());
}
if(userInfo.getOgCd()!=null){
savedInfo.setOgCd(userInfo.getOgCd());
}
if(userInfo.getOfcCd()!=null){
savedInfo.setOfcCd(userInfo.getOfcCd());
}
if(userInfo.getTitleCd()!=null){
savedInfo.setTitleCd(userInfo.getTitleCd());
}
if(userInfo.getOutturnCd()!=null){
savedInfo.setOutturnCd(userInfo.getOutturnCd());
}
if(userInfo.getSeriesCd()!=null){
savedInfo.setSeriesCd(userInfo.getSeriesCd());
}
if(userInfo.getBirthDate()!=null){
savedInfo.setBirthDate(userInfo.getBirthDate());
}
if(userInfo.getPoliceInDate()!=null){
savedInfo.setPoliceInDate(userInfo.getPoliceInDate());
}
if(userInfo.getOrganInDate()!=null){
savedInfo.setOrganInDate(userInfo.getOrganInDate());
}
if(userInfo.getOfcInDate()!=null){
savedInfo.setOfcInDate(userInfo.getOfcInDate());
}
if(userInfo.getTitleInDate()!=null){
savedInfo.setTitleInDate(userInfo.getTitleInDate());
}
if(userInfo.getLanguageCd()!=null){
savedInfo.setLanguageCd(userInfo.getLanguageCd());
}
if(userInfo.getOfcHeadYn()!=null){
savedInfo.setOfcHeadYn(userInfo.getOfcHeadYn());
}
if(userInfo.getUserRole()!=null){
savedInfo.setUserRole(userInfo.getUserRole());
}
if(userInfo.getUserStatus()!=null){
savedInfo.setUserStatus(userInfo.getUserStatus());
}
}
}
public String updatePassword(UserInfo loginUser, UserInfo modifyInfo){
@ -107,12 +165,6 @@ public class UserInfoService implements UserDetailsService {
}
return cnt;
}
@Transactional
public void updateUser(UserInfo userInfo) {
UserInfo dbUserInfo = userInfoRepository.findById(userInfo.getUserSeq()).orElse(null);
dbUserInfo.setUserRole(userInfo.getUserRole());
userInfoRepository.save(dbUserInfo);
}
public void userDelete(List<UserInfo> userInfo) {
userInfoRepository.deleteAll(userInfo);
}

View File

@ -1,5 +1,6 @@
package com.dbnt.faisp.main.userInfo;
import com.dbnt.faisp.kwms.service.KwmsService;
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
import com.dbnt.faisp.main.userInfo.service.UserInfoService;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
@ -18,6 +19,7 @@ public class userMgtController {
private final UserInfoService userInfoService;
private final CodeMgtService codeMgtService;
private final KwmsService kwmsService;
@GetMapping("/userMgtPage")
public ModelAndView codeMgtPage(UserInfo userInfo) {
@ -62,7 +64,7 @@ public class userMgtController {
@PostMapping("/updateUserInfo")
public void updateUserInfo(UserInfo userInfo) {
userInfoService.updateUser(userInfo);
userInfoService.updateUserInfo(userInfo);
}
@PostMapping("/userDelete")
@ -71,4 +73,17 @@ public class userMgtController {
userInfoService.userDelete(userInfo);
}
@PostMapping("/syncUserInfoToKwms")
@ResponseBody
public String syncUserInfoToKwms(@RequestBody List<UserInfo> infoList){
for(UserInfo info: infoList){
UserInfo kwmsInfo = kwmsService.selectEmpInfo(info.getDicCode());
if(kwmsInfo!=null){
kwmsInfo.setUserSeq(info.getUserSeq());
userInfoService.updateUserInfo(kwmsInfo);
}
}
return "";
}
}

View File

@ -33,6 +33,7 @@
</sql>
<select id="selectUserInfoList" resultType="UserInfo" parameterType="UserInfo">
select user_seq,
dic_code,
user_id,
user_nm,
user_role,

View File

@ -61,7 +61,30 @@ $(document).on('click', '#deleteBtn', function (){
}
})
$(document).on('click', '#syncToKwmsBtn', function (){
syncUserInfoToKwms({userSeq: $("#userSeq").val()});
const dicCode = $("#dicCode").val();
if(!dicCode){
alert("공무원식별번호가 없습니다.")
}else{
syncUserInfoToKwms([{
userSeq: $("#userSeq").val(),
dicCode: dicCode
}]);
}
})
$(document).on('click', '#syncToKwmsAllBtn', function (){
const userList = [];
$.each($(".userInfoCheckBox:checked"), function (idx, chkBox){
const tr = $(chkBox).parents(".userInfoTr");
if(tr.find(".dicCode").val()!==""){
userList.push({
userSeq: tr.find(".userSeq").val(),
dicCode: tr.find(".dicCode").val()
})
}
})
if(confirm(userList.length+"건의 정보를 갱신하시겠습니까?")){
syncUserInfoToKwms(userList);
}
})
$(document).on('click', '#companionBtn', function (){
@ -77,11 +100,11 @@ $(document).on('click', '#companionBtn', function (){
}
})
function syncUserInfoToKwms(userInfo){
function syncUserInfoToKwms(userList){
$.ajax({
type : 'POST',
url : "/userMgt/syncUserInfoToKwms",
data : JSON.stringify(userInfo),
data : JSON.stringify(userList),
contentType: 'application/json',
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());

View File

@ -7,7 +7,7 @@
<div class="modal-body">
<form id="userInfoUpdate" action="#" th:action="@{/admin/insertUserInfo}" method="post">
<input type="hidden" name="userSeq" id="userSeq" class="userSeq" th:value="${userInfo.userSeq}">
<input type="hidden" id="userStatus" name="userStatus" th:value="${userInfo.userStatus}">
<input type="hidden" name="userStatus" th:value="${userInfo.userStatus}">
<div class="mb-3 mt-3 row">
<label for="userRole" class="col-sm-2 col-form-label col-form-label-sm text-center ">시스템권한</label>
<div class="col-sm-4" id="userRole">
@ -31,7 +31,7 @@
<div class="mb-3 row">
<label for="userId" class="col-sm-2 col-form-label col-form-label-sm text-center ">아이디</label>
<div class="col-sm-4">
<input type="text" class="form-control form-control-sm" id="userId" name="userId" autocomplete="off" th:value="${userInfo.userId}">
<input type="text" class="form-control form-control-sm" id="userId" name="userId" autocomplete="off" th:value="${userInfo.userId}" readonly>
<label for="userId" style="font-size: 12px">6~20자 사이의 알파벳, 숫자를 입력하세요</label>
</div>
<label for="userNm" class="col-sm-2 col-form-label col-form-label-sm text-center">이름</label>
@ -130,7 +130,7 @@
<select class="form-select form-select-sm" id="outturnCd" name="outturnCd">
<option value="">--선택--</option>
<th:block th:each="code:${outturnList}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq userInfo.groupCd}"></option>
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq userInfo.outturnCd}"></option>
</th:block>
</select>
</div>
@ -150,7 +150,7 @@
<select class="form-select form-select-sm" id="languageCd" name="languageCd">
<option value="">--선택--</option>
<th:block th:each="code:${languageList}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq userInfo.groupCd}"></option>
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq userInfo.languageCd}"></option>
</th:block>
</select>
</div>

View File

@ -82,12 +82,14 @@
<th>계급</th>
<th>성명</th>
<th>아이디</th>
<th>식별번호</th>
<th>등록일</th>
</tr>
</thead>
<tbody>
<tr class="userInfoTr" th:each="userInfo:${userInfoList}">
<input type="hidden" name="userSeq" class="userSeq" th:value="${userInfo.userSeq}">
<input type="hidden" name="dicCode" class="dicCode" th:value="${userInfo.dicCode}">
<td class="checkBoxTd">
<input type="checkbox" id="userChk" name="userChk" class="userInfoCheckBox" th:value="${userInfo.userSeq}">
</td>
@ -123,6 +125,7 @@
</th:block>
<td th:text="${userInfo.userNm}"></td>
<td th:text="${userInfo.userId}"></td>
<td th:text="${userInfo.dicCode}"></td>
<td th:text="${#temporals.format(userInfo.wrtDt, 'yyyy-MM-dd HH:mm:ss')}"></td>
</tr>
</tbody>