From ca027f29c64ecb0efc9b54bba628028582f90fa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=84=9D=20=EC=B5=9C?= Date: Tue, 8 Nov 2022 11:57:22 +0900 Subject: [PATCH 1/7] =?UTF-8?q?dateTimeCalc=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/static/js/common.js | 19 ++++++++++++++++++- .../static/js/faStatistics/crackdownStatus.js | 17 ----------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main/resources/static/js/common.js b/src/main/resources/static/js/common.js index 023b650d..c1e9c83e 100644 --- a/src/main/resources/static/js/common.js +++ b/src/main/resources/static/js/common.js @@ -205,9 +205,26 @@ function departmentDynamicOption(targetTagName, code, defaultOptionName='') { $(targetTagName).empty(); let option = ''; organConfigList.forEach(function (organConfig) { - if (organConfig.parentOrgan != null && organConfig.organType != 'OGC002' && organConfig.parentOrgan == code) { + if (organConfig.parentOrgan != null && organConfig.organType !== 'OGC002' && organConfig.parentOrgan === code) { option += ''; } }); $(targetTagName).append('' + option); +} + +function dateTimeCalc(startDateTime, endDateTime) { + if (startDateTime !== '' &&endDateTime !== '' && startDateTime !== undefined && endDateTime !== undefined) { + const startDate = new Date(startDateTime); + const endDate = new Date(endDateTime); + + let diffTime = endDate.getTime() - startDate.getTime(); + + const day = Math.floor(diffTime / (1000* 60 * 60 * 24)); + const hour = Math.floor((diffTime % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); + const minute = Math.floor((diffTime % (1000 * 60 * 60)) / (1000 * 60)); + + return day + '일' + hour + '시간' + minute + '분'; + } + + return null; } \ No newline at end of file diff --git a/src/main/resources/static/js/faStatistics/crackdownStatus.js b/src/main/resources/static/js/faStatistics/crackdownStatus.js index c856cf2a..da1d9642 100644 --- a/src/main/resources/static/js/faStatistics/crackdownStatus.js +++ b/src/main/resources/static/js/faStatistics/crackdownStatus.js @@ -459,20 +459,3 @@ function getToday() { var date = new Date(); var year = date.getFullYear(); } - -function dateTimeCalc(startDateTime, endDateTime) { - if (startDateTime != '' &&endDateTime != '' && startDateTime != undefined && endDateTime != undefined) { - const startDate = new Date(startDateTime); - const endDate = new Date(endDateTime); - - let diffTime = endDate.getTime() - startDate.getTime(); - - const day = Math.floor(diffTime / (1000* 60 * 60 * 24)); - const hour = Math.floor((diffTime % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); - const minute = Math.floor((diffTime % (1000 * 60 * 60)) / (1000 * 60)); - - return day + '일' + hour + '시간' + minute + '분'; - } - - return null; -} From e0eed89bdc97abf11b0c2bf4111a50a5e970c041 Mon Sep 17 00:00:00 2001 From: TaehunPark Date: Tue, 8 Nov 2022 13:36:20 +0900 Subject: [PATCH 2/7] =?UTF-8?q?fix:=20=EA=B4=80=EB=A6=AC=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20->=20=EC=99=B8=EC=82=AC=EA=B2=BD=EC=B0=B0=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=20->=20=EC=8A=B9=EC=9D=B8=EB=8C=80=EA=B8=B0=20=EB=B9=84?= =?UTF-8?q?=EC=99=B8=EC=82=AC=EA=B2=BD=EC=B0=B0=EC=8A=B9=EC=9D=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/static/js/userMgt/userMgt.js | 13 +++++++++++++ .../templates/adminPage/userMgt/userMgt.html | 10 +++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/resources/static/js/userMgt/userMgt.js b/src/main/resources/static/js/userMgt/userMgt.js index 9d4cd8e9..5c7c3b16 100644 --- a/src/main/resources/static/js/userMgt/userMgt.js +++ b/src/main/resources/static/js/userMgt/userMgt.js @@ -25,6 +25,19 @@ $(document).on('click', '#approvalBtn', function (){ } }) +$(document).on('click', '#notPoliceBtn', function (){ + if(confirm("선택한 대상을 비외사경찰승인 처리 하시겠습니까?")){ + const checkArr = []; + $('input:checkbox[name=userChk]:checked').each(function (idx, el){ + checkArr.push({}); + const target = $(el); + checkArr[idx].userSeq = Number(target.parents('tr').find('.userSeq').val()); + checkArr[idx].userStatus = "USC007" + }) + userApproval(checkArr); + } +}) + $(document).on('click', '.statusBtn', function (){ const userInfoList = []; userInfoList.push({ diff --git a/src/main/resources/templates/adminPage/userMgt/userMgt.html b/src/main/resources/templates/adminPage/userMgt/userMgt.html index e8631015..6c7379af 100644 --- a/src/main/resources/templates/adminPage/userMgt/userMgt.html +++ b/src/main/resources/templates/adminPage/userMgt/userMgt.html @@ -134,8 +134,7 @@
- - + @@ -166,7 +165,12 @@
-
+
+ + + + +
From 98e709229290402ef7e14f78f0833fbe6771218a Mon Sep 17 00:00:00 2001 From: TaehunPark Date: Tue, 8 Nov 2022 13:37:17 +0900 Subject: [PATCH 3/7] =?UTF-8?q?fix:=20=EA=B4=80=EB=A6=AC=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20->=20=EC=99=B8=EC=82=AC=EA=B2=BD=EC=B0=B0=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=20->=20=EC=8A=B9=EC=9D=B8=EB=8C=80=EA=B8=B0=20=EB=B9=84?= =?UTF-8?q?=EC=99=B8=EC=82=AC=EA=B2=BD=EC=B0=B0=EC=8A=B9=EC=9D=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/static/js/userMgt/userMgt.js | 2 +- src/main/resources/templates/adminPage/userMgt/userMgt.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/static/js/userMgt/userMgt.js b/src/main/resources/static/js/userMgt/userMgt.js index 5c7c3b16..d9061f8a 100644 --- a/src/main/resources/static/js/userMgt/userMgt.js +++ b/src/main/resources/static/js/userMgt/userMgt.js @@ -9,7 +9,7 @@ $(document).on('click', '#stayTab', function (){ $(document).on('click', '.userInfoTr', function (event){ if(!event.target.className.includes("heckBox")){ openEditModal($(this).find(".userSeq").val()) - } + } }) $(document).on('click', '#approvalBtn', function (){ diff --git a/src/main/resources/templates/adminPage/userMgt/userMgt.html b/src/main/resources/templates/adminPage/userMgt/userMgt.html index 6c7379af..177aaa63 100644 --- a/src/main/resources/templates/adminPage/userMgt/userMgt.html +++ b/src/main/resources/templates/adminPage/userMgt/userMgt.html @@ -169,7 +169,7 @@ - + From 351e83d0cb65549e2b82513d3b245992bb3d508c Mon Sep 17 00:00:00 2001 From: TaehunPark Date: Tue, 8 Nov 2022 17:42:36 +0900 Subject: [PATCH 4/7] =?UTF-8?q?fix:=20=EC=99=B8=EC=82=AC=EA=B2=BD=EC=B0=B0?= =?UTF-8?q?=20->=20=EC=99=B8=EC=82=AC=EA=B2=BD=EC=B0=B0=ED=98=84=ED=99=A9?= =?UTF-8?q?=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dbnt/faisp/config/SecurityConfig.java | 3 +- .../faisp/main/userInfo/FaispController.java | 92 ++++++- .../faisp/main/userInfo/MyInfoController.java | 4 +- .../main/userInfo/mapper/UserInfoMapper.java | 5 + .../faisp/main/userInfo/model/UserInfo.java | 6 + .../repository/UserInfoHistoryRepository.java | 2 + .../repository/UserInfoRepository.java | 5 + .../userInfo/service/UserInfoService.java | 55 ++++- .../main/userInfo/userMgtController.java | 9 +- src/main/java/com/dbnt/faisp/util/Utils.java | 95 ++++++++ .../mybatisMapper/UserInfoMapper.xml | 54 ++++- src/main/resources/static/js/faisp/police.js | 228 +++++++++++++++++- .../resources/templates/equip/useHistory.html | 2 + .../templates/faisp/policeEditModal.html | 19 +- .../templates/faisp/policeHistory.html | 152 ++++++++++++ .../resources/templates/faisp/policeList.html | 56 +++-- 16 files changed, 742 insertions(+), 45 deletions(-) create mode 100644 src/main/resources/templates/faisp/policeHistory.html diff --git a/src/main/java/com/dbnt/faisp/config/SecurityConfig.java b/src/main/java/com/dbnt/faisp/config/SecurityConfig.java index ebb09b1f..c281ee13 100644 --- a/src/main/java/com/dbnt/faisp/config/SecurityConfig.java +++ b/src/main/java/com/dbnt/faisp/config/SecurityConfig.java @@ -87,7 +87,8 @@ public class SecurityConfig{ "/affair/**", "/affairResult/**", "/faStatistics/**", - "/translator/**" + "/translator/**", + "/faisp/**" ).hasRole(Role.USER.name()) // USER 접근 허용 .antMatchers( "/authMgt/**", diff --git a/src/main/java/com/dbnt/faisp/main/userInfo/FaispController.java b/src/main/java/com/dbnt/faisp/main/userInfo/FaispController.java index deb8c24c..a29d4fc8 100644 --- a/src/main/java/com/dbnt/faisp/main/userInfo/FaispController.java +++ b/src/main/java/com/dbnt/faisp/main/userInfo/FaispController.java @@ -1,13 +1,21 @@ package com.dbnt.faisp.main.userInfo; +import com.dbnt.faisp.kwms.service.KwmsService; import com.dbnt.faisp.main.authMgt.service.AuthMgtService; import com.dbnt.faisp.main.codeMgt.service.CodeMgtService; +import com.dbnt.faisp.main.fipTarget.model.PartInfo; +import com.dbnt.faisp.main.fipTarget.model.ShipInfo; import com.dbnt.faisp.main.userInfo.model.UserInfo; +import com.dbnt.faisp.main.userInfo.model.UserInfoHistory; import com.dbnt.faisp.main.userInfo.service.UserInfoService; +import com.dbnt.faisp.util.ParamMap; +import com.dbnt.faisp.util.Utils; import lombok.RequiredArgsConstructor; +import java.io.IOException; +import java.util.List; import javax.servlet.http.HttpServletResponse; @@ -23,15 +31,44 @@ public class FaispController { private final AuthMgtService authMgtService; private final CodeMgtService codeMgtService; private final UserInfoService userInfoService; + private final KwmsService kwmsService; @GetMapping("/policeList") - public ModelAndView partInfoList(@AuthenticationPrincipal UserInfo loginUser,UserInfo userInfo, HttpServletResponse response) { + public ModelAndView policeList(@AuthenticationPrincipal UserInfo loginUser,UserInfo userInfo, HttpServletResponse response) { ModelAndView mav = new ModelAndView("faisp/policeList"); userInfo.setDownOrganCdList(loginUser.getDownOrganCdList()); if(userInfo.getUserStatus() == null) { userInfo.setUserStatus("USC003"); } + //엑셀다운 + if(userInfo.getExcel() != null && userInfo.getExcel().equals("Y")){ + String[] headers = { "rownum", "title_cd", "user_nm", "organ_nm", "ofc_cd", "birth_date", "sex", "police_in_date", "title_in_date", "ofc_in_date", "outturn_cd","", "job_in_cd", "wrt_dt"}; + String[] headerNames = { "순번", "계급","성명", "청", "현부서"+System.lineSeparator()+"과", "생년월일","성별", "최초"+System.lineSeparator()+"임용", "현 계급"+System.lineSeparator()+"임용", "현 부서"+System.lineSeparator()+"임용", "수사경과"+System.lineSeparator()+"보유여부", "외사경력", "입직"+System.lineSeparator()+"경로","최종"+System.lineSeparator()+"수정일"}; + String[] columnType = {"String", "String", "String","String", "String", "String", "String", "String", "String", "String", "String", "String","String", "String"}; + String sheetName =""; + String excelFileName=""; + if(userInfo.getUserStatus().equals("USC003")) { + sheetName = "現 외사경찰 현황"; + excelFileName = "現 외사경찰 현황"; + } + if(userInfo.getUserStatus().equals("USC006")) { + sheetName = "前 외사경찰 현황"; + excelFileName = "前 외사경찰 현황"; + } + if(userInfo.getUserStatus().equals("USC007")) { + sheetName = "非 외사경찰 현황"; + excelFileName = "非 외사경찰 현황"; + } + List policeList= userInfoService.selectPoliceList(userInfo); + + try { + Utils.policelistToExcel(policeList, response, headers, headerNames, columnType, sheetName, excelFileName); + } catch (IOException e) { + + } + return null; + } //메뉴권한 확인 String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/policeList").get(0).getAccessAuth(); @@ -41,13 +78,13 @@ public class FaispController { userInfo.setContentCnt(userInfoService.selectPoliceListCnt(userInfo)); userInfo.setPaginationInfo(); mav.addObject("mgtOrganList", loginUser.getDownOrganCdList()); - mav.addObject("userSatus", userInfo.getUserStatus()); + mav.addObject("userStatus", userInfo.getUserStatus()); mav.addObject("searchParams", userInfo); return mav; } @GetMapping("/policeEditModal") - public ModelAndView menuEditModal(UserInfo userInfo){ + public ModelAndView policeEditModal(@AuthenticationPrincipal UserInfo loginUser,UserInfo userInfo){ ModelAndView mav = new ModelAndView("/faisp/policeEditModal"); mav.addObject("ogList", codeMgtService.selectCodeMgtList("OG")); mav.addObject("ofcList", codeMgtService.selectCodeMgtList("OFC")); @@ -56,10 +93,57 @@ public class FaispController { mav.addObject("seriesList", codeMgtService.selectCodeMgtList("SRC")); mav.addObject("languageList", codeMgtService.selectCodeMgtList("LNG")); mav.addObject("statusList", codeMgtService.selectCodeMgtList("USC")); - + + //메뉴권한 확인 + String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/policeList").get(0).getAccessAuth(); + mav.addObject("accessAuth", accessAuth); mav.addObject("userInfo", userInfoService.selectUserInfo(userInfo.getUserSeq())); return mav; } + + @PostMapping("/updateUserInfo") + public int updateUserInfo(@AuthenticationPrincipal UserInfo loginUser,UserInfo userInfo) { + userInfoService.updateUserInfo(loginUser,userInfo); + return userInfo.getUserSeq(); + } + + @GetMapping("/policeHistory") + public ModelAndView policeHistory(@AuthenticationPrincipal UserInfo loginUser,UserInfoHistory userInfoHistory){ + ModelAndView mav = new ModelAndView("/faisp/policeHistory"); + mav.addObject("userStatus", userInfoService.selectuserStatus(userInfoHistory)); + mav.addObject("policeList", userInfoService.selectPoliceHisList(userInfoHistory)); + + return mav; + } + + @GetMapping("/policeHistoryView") + @ResponseBody + public UserInfoHistory policeHistoryView(UserInfoHistory userInfoHistory){ + return userInfoService.selectpoliceHistoryView(userInfoHistory); + } + + @PostMapping("/policeStatusUpdate") + @ResponseBody + public int userCompanion(@RequestBody List userInfo){ + return userInfoService.updateUserCompanion(userInfo); + } + + @PostMapping("/syncUserInfoToKwms") + @ResponseBody + public String syncUserInfoToKwms(@AuthenticationPrincipal UserInfo loginUser,@RequestBody List infoList){ + for(UserInfo info: infoList){ + UserInfo kwmsInfo = kwmsService.selectEmpInfo(info.getDicCode()); + if(kwmsInfo!=null){ + kwmsInfo.setUserSeq(info.getUserSeq()); + userInfoService.updateUserInfo(loginUser,kwmsInfo); + } + } + if(infoList.size()==1){ + return infoList.get(0).getUserSeq().toString(); + }else{ + return ""; + } + } } diff --git a/src/main/java/com/dbnt/faisp/main/userInfo/MyInfoController.java b/src/main/java/com/dbnt/faisp/main/userInfo/MyInfoController.java index 2004d506..2ec0f9ea 100644 --- a/src/main/java/com/dbnt/faisp/main/userInfo/MyInfoController.java +++ b/src/main/java/com/dbnt/faisp/main/userInfo/MyInfoController.java @@ -59,7 +59,7 @@ public class MyInfoController { @PostMapping("/updateSelf") public void updateSelf(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo) { userInfo.setUserSeq(loginUser.getUserSeq()); - userInfoService.updateUserInfo(userInfo); + userInfoService.updateUserInfo(loginUser,userInfo); } @PostMapping("/syncSelfToKwms") @@ -67,7 +67,7 @@ public class MyInfoController { UserInfo kwmsInfo = kwmsService.selectEmpInfo(userInfo.getDicCode()); if(kwmsInfo!= null){ kwmsInfo.setUserSeq(loginUser.getUserSeq()); - userInfoService.updateUserInfo(kwmsInfo); + userInfoService.updateUserInfo(loginUser,kwmsInfo); } } } diff --git a/src/main/java/com/dbnt/faisp/main/userInfo/mapper/UserInfoMapper.java b/src/main/java/com/dbnt/faisp/main/userInfo/mapper/UserInfoMapper.java index 5ccda58a..68964630 100644 --- a/src/main/java/com/dbnt/faisp/main/userInfo/mapper/UserInfoMapper.java +++ b/src/main/java/com/dbnt/faisp/main/userInfo/mapper/UserInfoMapper.java @@ -2,6 +2,7 @@ package com.dbnt.faisp.main.userInfo.mapper; import com.dbnt.faisp.main.userInfo.model.DashboardConfig; import com.dbnt.faisp.main.userInfo.model.UserInfo; +import com.dbnt.faisp.main.userInfo.model.UserInfoHistory; import com.dbnt.faisp.util.ParamMap; import org.apache.ibatis.annotations.Mapper; @@ -21,4 +22,8 @@ public interface UserInfoMapper { List selectPoliceList(UserInfo userInfo); Integer selectPoliceListCnt(UserInfo userInfo); + + List selectPoliceHisList(UserInfoHistory userInfoHistory); + + UserInfoHistory selectpoliceHistoryView(UserInfoHistory userInfoHistory); } diff --git a/src/main/java/com/dbnt/faisp/main/userInfo/model/UserInfo.java b/src/main/java/com/dbnt/faisp/main/userInfo/model/UserInfo.java index 22747808..55d9ca5d 100644 --- a/src/main/java/com/dbnt/faisp/main/userInfo/model/UserInfo.java +++ b/src/main/java/com/dbnt/faisp/main/userInfo/model/UserInfo.java @@ -106,6 +106,12 @@ public class UserInfo extends BaseModel implements UserDetails{ private String positionName; @Transient private String departmentName; + @Transient + private String organNm; + @Transient + private String excel; + @Transient + private String rownum; @Transient private List accessConfigList; diff --git a/src/main/java/com/dbnt/faisp/main/userInfo/repository/UserInfoHistoryRepository.java b/src/main/java/com/dbnt/faisp/main/userInfo/repository/UserInfoHistoryRepository.java index f8e9e699..8d77b484 100644 --- a/src/main/java/com/dbnt/faisp/main/userInfo/repository/UserInfoHistoryRepository.java +++ b/src/main/java/com/dbnt/faisp/main/userInfo/repository/UserInfoHistoryRepository.java @@ -11,5 +11,7 @@ public interface UserInfoHistoryRepository extends JpaRepository { Optional findByUserSeq(Integer userSeq); Optional findByDicCode(String dicCode); + + @Query(value = "SELECT user_status FROM user_info WHERE user_seq=:userSeq", nativeQuery = true) + String getUserStatus(@Param("userSeq") Integer userSeq); } diff --git a/src/main/java/com/dbnt/faisp/main/userInfo/service/UserInfoService.java b/src/main/java/com/dbnt/faisp/main/userInfo/service/UserInfoService.java index 1f8769d9..0d51b28d 100644 --- a/src/main/java/com/dbnt/faisp/main/userInfo/service/UserInfoService.java +++ b/src/main/java/com/dbnt/faisp/main/userInfo/service/UserInfoService.java @@ -2,6 +2,7 @@ package com.dbnt.faisp.main.userInfo.service; import com.dbnt.faisp.config.Role; import com.dbnt.faisp.main.fipTarget.model.PartInfo; +import com.dbnt.faisp.main.fipTarget.model.ShipInfo; import com.dbnt.faisp.main.userInfo.mapper.UserInfoMapper; import com.dbnt.faisp.main.userInfo.model.DashboardConfig; import com.dbnt.faisp.main.userInfo.model.UserInfo; @@ -12,6 +13,8 @@ import com.dbnt.faisp.main.userInfo.repository.UserInfoRepository; import com.dbnt.faisp.util.ParamMap; import lombok.RequiredArgsConstructor; + +import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; @@ -82,7 +85,7 @@ public class UserInfoService implements UserDetailsService { return result.getUserId(); } @Transactional - public void updateUserInfo(UserInfo userInfo){ + public void updateUserInfo(UserInfo loginUser,UserInfo userInfo){ UserInfo savedInfo = userInfoRepository.findById(userInfo.getUserSeq()).orElse(null); if(savedInfo!=null){ if(userInfo.getDicCode()!=null){ @@ -145,6 +148,45 @@ public class UserInfoService implements UserDetailsService { if(userInfo.getUserStatus()!=null){ savedInfo.setUserStatus(userInfo.getUserStatus()); } + userInfoRepository.save(savedInfo); + UserInfoHistory dbHis = userInfoHistoryRepository.findTopByUserSeqOrderByVersionNoDesc(savedInfo.getUserSeq()); + if(dbHis != null) { + UserInfoHistory hisTmp = new UserInfoHistory(); + hisTmp.setUserSeq(savedInfo.getUserSeq()); + hisTmp.setVersionNo(dbHis.getVersionNo()+1); + hisTmp.setDicCode(savedInfo.getDicCode()); + hisTmp.setUserId(savedInfo.getUserId()); + hisTmp.setUserNm(savedInfo.getUserNm()); + hisTmp.setBirthDate(savedInfo.getBirthDate()); + hisTmp.setSex(savedInfo.getSex()); + hisTmp.setEmail(savedInfo.getEmail()); + hisTmp.setPhoneNo(savedInfo.getPhoneNo()); + hisTmp.setAreaCd(savedInfo.getAreaCd()); + hisTmp.setOgCd(savedInfo.getOgCd()); + hisTmp.setOfcCd(savedInfo.getOfcCd()); + hisTmp.setTitleCd(savedInfo.getTitleCd()); + hisTmp.setGroupCd(savedInfo.getGroupCd()); + hisTmp.setSeriesCd(savedInfo.getSeriesCd()); + hisTmp.setOfcHeadYn(savedInfo.getOfcHeadYn()); + hisTmp.setHiringCd(savedInfo.getHiringCd()); + hisTmp.setEmployCd(savedInfo.getEmployCd()); + hisTmp.setOutturnCd(savedInfo.getOutturnCd()); + hisTmp.setWorkCd(savedInfo.getWorkCd()); + hisTmp.setJobInCd(savedInfo.getJobInCd()); + hisTmp.setLanguageCd(savedInfo.getLanguageCd()); + hisTmp.setPoliceInDate(savedInfo.getPoliceInDate()); + hisTmp.setOrganInDate(savedInfo.getOrganInDate()); + hisTmp.setOfcInDate(savedInfo.getOfcInDate()); + hisTmp.setTitleInDate(savedInfo.getTitleInDate()); + hisTmp.setUserStatus(savedInfo.getUserStatus()); + hisTmp.setWrtOrgan(loginUser.getOgCd()); + hisTmp.setWrtPart(loginUser.getOfcCd()); + hisTmp.setWrtTitle(loginUser.getTitleCd()); + hisTmp.setWrtUserSeq(loginUser.getUserSeq()); + hisTmp.setWrtNm(loginUser.getUserNm()); + hisTmp.setWrtDt(LocalDateTime.now()); + userInfoHistoryRepository.save(hisTmp); + } } } @@ -238,4 +280,15 @@ public class UserInfoService implements UserDetailsService { public Integer selectPoliceListCnt(UserInfo userInfo) { return userInfoMapper.selectPoliceListCnt(userInfo); } + + public List selectPoliceHisList(UserInfoHistory userInfoHistory) { + return userInfoMapper.selectPoliceHisList(userInfoHistory); + } + + public UserInfoHistory selectpoliceHistoryView(UserInfoHistory userInfoHistory) { + return userInfoMapper.selectpoliceHistoryView(userInfoHistory); + } + public String selectuserStatus(UserInfoHistory userInfoHistory) { + return userInfoRepository.getUserStatus(userInfoHistory.getUserSeq()); + } } diff --git a/src/main/java/com/dbnt/faisp/main/userInfo/userMgtController.java b/src/main/java/com/dbnt/faisp/main/userInfo/userMgtController.java index 1a5143a7..a87c736c 100644 --- a/src/main/java/com/dbnt/faisp/main/userInfo/userMgtController.java +++ b/src/main/java/com/dbnt/faisp/main/userInfo/userMgtController.java @@ -8,6 +8,7 @@ import lombok.RequiredArgsConstructor; import java.util.List; +import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @@ -63,8 +64,8 @@ public class userMgtController { } @PostMapping("/updateUserInfo") - public void updateUserInfo(UserInfo userInfo) { - userInfoService.updateUserInfo(userInfo); + public void updateUserInfo(@AuthenticationPrincipal UserInfo loginUser,UserInfo userInfo) { + userInfoService.updateUserInfo(loginUser,userInfo); } @PostMapping("/userDelete") @@ -76,12 +77,12 @@ public class userMgtController { @PostMapping("/syncUserInfoToKwms") @ResponseBody - public String syncUserInfoToKwms(@RequestBody List infoList){ + public String syncUserInfoToKwms(@AuthenticationPrincipal UserInfo loginUser,@RequestBody List infoList){ for(UserInfo info: infoList){ UserInfo kwmsInfo = kwmsService.selectEmpInfo(info.getDicCode()); if(kwmsInfo!=null){ kwmsInfo.setUserSeq(info.getUserSeq()); - userInfoService.updateUserInfo(kwmsInfo); + userInfoService.updateUserInfo(loginUser,kwmsInfo); } } if(infoList.size()==1){ diff --git a/src/main/java/com/dbnt/faisp/util/Utils.java b/src/main/java/com/dbnt/faisp/util/Utils.java index 9851cae1..bbfb569f 100644 --- a/src/main/java/com/dbnt/faisp/util/Utils.java +++ b/src/main/java/com/dbnt/faisp/util/Utils.java @@ -28,6 +28,8 @@ import com.dbnt.faisp.main.equip.model.CellPhone; import com.dbnt.faisp.main.equip.model.UseList; import com.dbnt.faisp.main.fipTarget.model.PartInfo; import com.dbnt.faisp.main.fipTarget.model.PartWork; +import com.dbnt.faisp.main.userInfo.model.UserInfo; + import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapperImpl; @@ -974,5 +976,98 @@ public class Utils { return emptyNames.toArray(result); } + public static void policelistToExcel(List policeList, HttpServletResponse response, String[] headers, + String[] headerNames, String[] columnType, String sheetName, String excelFileName) throws IOException { + if(Utils.isNotEmpty(policeList)) { + // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. + XSSFWorkbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet(sheetName); + Row headerRow = sheet.createRow(0); + CellStyle cellStyle1 = wb.createCellStyle(); //쉼표들어간 숫자 양식 + CellStyle cellStyle2 = wb.createCellStyle(); //숫자양식 + CellStyle headerStyle3 = wb.createCellStyle(); + + XSSFDataFormat format = wb.createDataFormat(); + cellStyle1.setAlignment(HorizontalAlignment.CENTER); + cellStyle2.setDataFormat(format.getFormat("#,##0")); + cellStyle2.setAlignment(HorizontalAlignment.CENTER); + headerStyle3.setBorderTop(BorderStyle.THIN); + headerStyle3.setBorderBottom(BorderStyle.THIN); + headerStyle3.setBorderLeft(BorderStyle.THIN); + headerStyle3.setBorderRight(BorderStyle.THIN); + headerStyle3.setAlignment(HorizontalAlignment.CENTER); + headerStyle3.setFillPattern(FillPatternType.SOLID_FOREGROUND); + headerStyle3.setFillForegroundColor((short)3); + headerStyle3.setFillForegroundColor(IndexedColors.LIME.getIndex()); + headerStyle3.setWrapText(true); + //로우그리기 + for(int i=0; i #{item} + + and og_cd = #{ogCd} + + + and sex = #{sex} + + + and user_nm like '%'||#{userNm}||'%' + + + + + \ No newline at end of file diff --git a/src/main/resources/static/js/faisp/police.js b/src/main/resources/static/js/faisp/police.js index 6814a8fb..c81a3ba9 100644 --- a/src/main/resources/static/js/faisp/police.js +++ b/src/main/resources/static/js/faisp/police.js @@ -1,7 +1,9 @@ -$(document).on('click', '.policeTr', function (){ - const userSeq = (Number($(this).find(".userSeq").val())); - console.log(userSeq); - showModal(userSeq); +$(document).on('click', '.policeTr', function (event){ + const target = event.target; + if(!(target.className === "checkBoxTd" ||$(target).parents("td").length>0)){ + const userSeq = (Number($(this).find(".userSeq").val())); + showModal(userSeq); + } }); function showModal(userSeq){ @@ -10,6 +12,84 @@ function showModal(userSeq){ data: {userSeq: userSeq}, type: 'GET', dataType:"html", + success: function(html){ + $("#policeEditModalContent").empty().append(html); + $(".dateSelector").datepicker({ + format: "yyyy-mm-dd", + language: "ko", + autoclose: true + }); + $("#policeEditModal").modal('show'); + }, + error:function(){ + + } + }); +} + +$(document).on('click', '#syncToKwmsBtn', function (){ + const dicCode = $("#dicCode").val(); + if(!dicCode){ + alert("공무원식별번호가 없습니다.") + }else{ + syncUserInfoToKwms([{ + userSeq: $("#userSeq").val(), + dicCode: dicCode + }]); + } +}) + +function syncUserInfoToKwms(userList){ + $.ajax({ + type : 'POST', + url : "/faisp/syncUserInfoToKwms", + data : JSON.stringify(userList), + contentType: 'application/json', + beforeSend: function (xhr){ + xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val()); + }, + success : function(data) { + if(userList.length===1){ + showModal(userList[0].userSeq); + } + alert("갱신 되었습니다."); + }, + error : function(xhr, status) { + alert("갱신에 실패하였습니다"); + } + }) +} + +$(document).on('click', '#updateBtn', function (){ + if(confirm("수정하시겠습니까?")){ + contentFade("in"); + const formData = new FormData($("#userInfoUpdate")[0]); + $.ajax({ + type : 'POST', + data : formData, + url : "/faisp/updateUserInfo", + processData: false, + contentType: false, + success : function(data) { + alert("수정되었습니다."); + contentFade("out"); + showModal(data); + }, + error : function(xhr, status) { + alert("수정에 실패하였습니다."); + contentFade("out"); + } + }) + } +}) + +$(document).on('click', '#historyTab', function (){ + const userSeq = (Number($(this).data('userseq'))); + $.ajax({ + url: '/faisp/policeHistory', + data: {userSeq: userSeq}, + type: 'GET', + dataType:"html", success: function(html){ $("#policeEditModalContent").empty().append(html); $("#policeEditModal").modal('show'); @@ -18,5 +98,143 @@ function showModal(userSeq){ } }); -} +}) + +$(document).on('click', '#editTab', function (){ + const userSeq = (Number($(this).data('userseq'))); + showModal(userSeq); +}) + +$(document).on('click', '.historyInfoTr', function (){ + $(this).find('.hisChk').prop('checked',true) + if($(this).find('.hisChk').prop('checked')){ + $('.hisChk').prop('checked',false); + $(this).find('.hisChk').prop('checked',true) + } + $.ajax({ + url: '/faisp/policeHistoryView', + data: { + userSeq: Number($(this).find(".userSeq").val()), + versionNo : Number($(this).find(".verNo").val()) + }, + type: 'GET', + dataType:"json", + success: function(data){ + $('#vDicCode').val(data.dicCode); + $('#vUserId').val(data.userId); + $('#vUserNm').val(data.userNm); + $('#vPhone').val(data.phoneNo); + $('#vEmail').val(data.email); + $('#vSex').val(data.sex); + $('#vBirth').val(data.birthDate); + $('#vPoliceInDate').val(data.policeInDate); + $('#vOgCd').val(data.ogCd); + $('#vOrganInDate').val(data.organInDate); + $('#vOfcCd').val(data.ofcCd); + $('#vOfcInDate').val(data.ofcInDate); + $('#vTitleCd').val(data.titleCd); + $('#vTitleInDate').val(data.titleInDate); + $('#vOutturnCd').val(data.outturnCd); + $('#vSeriesCd').val(data.seriesCd); + $('#vLanguageCd').val(data.languageCd); + }, + error:function(){ + + } + }); +}) + +$(document).on('click', '#previousTab', function (){ + const userStatus = $(this).data('userstatus'); + location.href = "/faisp/policeList?userStatus="+userStatus; +}) + +$(document).on('click', '#presentTab', function (){ + const userStatus = $(this).data('userstatus'); + location.href = "/faisp/policeList?userStatus="+userStatus; +}) +$(document).on('click', '#notPoliceTab', function (){ + const userStatus = $(this).data('userstatus'); + location.href = "/faisp/policeList?userStatus="+userStatus; +}) + +$(document).on('click', '#outBtn', function (){ + if($('input:checkbox[name=policeChk]:checked').length < 1){ + alert("전출대상을 선택해주세요") + return false; + } + if(confirm("선택한 대상을 전출처리 하시겠습니까?")){ + const checkArr = []; + $('input:checkbox[name=policeChk]:checked').each(function (idx, el){ + checkArr.push({}); + const target = $(el); + checkArr[idx].userSeq = Number(target.parents('tr').find('.userSeq').val()); + checkArr[idx].userStatus = "USC006" + }) + $.ajax({ + type : 'POST', + url : "/faisp/policeStatusUpdate", + data : JSON.stringify(checkArr), + contentType: 'application/json', + beforeSend: function (xhr){ + xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val()); + }, + success : function(data) { + alert(data+"건이 전출 처리되었습니다."); + location.reload(); + }, + error : function(xhr, status) { + alert("전출처리에 실패하였습니다"); + } + }) + } +}) + +$(document).on('click', '#inBtn', function (){ + if($('input:checkbox[name=policeChk]:checked').length < 1){ + alert("전입대상을 선택해주세요") + return false; + } + if(confirm("선택한 대상을 전입처리 하시겠습니까?")){ + const checkArr = []; + $('input:checkbox[name=policeChk]:checked').each(function (idx, el){ + checkArr.push({}); + const target = $(el); + checkArr[idx].userSeq = Number(target.parents('tr').find('.userSeq').val()); + checkArr[idx].userStatus = "USC003" + }) + $.ajax({ + type : 'POST', + url : "/faisp/policeStatusUpdate", + data : JSON.stringify(checkArr), + contentType: 'application/json', + beforeSend: function (xhr){ + xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val()); + }, + success : function(data) { + alert(data+"건이 전입 처리되었습니다."); + location.reload(); + }, + error : function(xhr, status) { + alert("전입처리에 실패하였습니다"); + } + }) + } +}) + +$(document).ready( function() { + $('#chk-all').click( function() { + $('.policeCheckBox').prop('checked',this.checked); + }); +}); + +$(document).on('click', '#goExcel', function (){ + if(confirm("엑셀로 다운로드 하시겠습니까?")){ + $('input[name=excel]').val('Y'); + $('#searchFm').submit(); + $('input[name=excel]').val(''); + }else{ + false; + } +}) diff --git a/src/main/resources/templates/equip/useHistory.html b/src/main/resources/templates/equip/useHistory.html index 9570051f..0e454a3b 100644 --- a/src/main/resources/templates/equip/useHistory.html +++ b/src/main/resources/templates/equip/useHistory.html @@ -6,6 +6,7 @@ +