From 3ceedad5c66e964ff41b064e35a8adb30c0ee8ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=84=9D=20=EC=B5=9C?= Date: Mon, 21 Nov 2022 18:28:43 +0900 Subject: [PATCH] =?UTF-8?q?=EC=99=B8=EC=82=AC=EA=B2=BD=EC=B0=B0=20?= =?UTF-8?q?=EA=B2=BD=EB=A0=A5=ED=98=84=ED=99=A9=20=EC=9E=91=EC=97=85?= =?UTF-8?q?=EC=99=84=EB=A3=8C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dbnt/faisp/kwms/KwmsController.java | 8 + .../faisp/kwms/model/VHordYundongStat.java | 6 +- .../VHordYundongStatRepository.java | 2 +- .../dbnt/faisp/kwms/service/KwmsService.java | 46 +++++- .../codeMgt/repository/CodeMgtRepository.java | 2 + .../main/codeMgt/service/CodeMgtService.java | 11 +- .../faisp/main/userInfo/FaispController.java | 38 ++++- .../faisp/main/userInfo/model/UserCareer.java | 9 +- .../faisp/main/userInfo/model/UserInfo.java | 12 ++ .../repository/UserCareerRepository.java | 5 + .../userInfo/service/UserInfoService.java | 43 +++-- .../mybatisMapper/UserInfoMapper.xml | 47 ++++-- .../resources/static/js/equip/cellPhone.js | 4 +- src/main/resources/static/js/equip/use.js | 2 +- .../resources/static/js/faisp/careerMgt.js | 154 ++++++++++++++++-- .../resources/static/js/fipTarget/shipInfo.js | 2 +- src/main/resources/static/js/user/info.js | 2 +- .../templates/faRpt/faRptViewModal.html | 3 + .../faisp/career/careerFormModal.html | 133 ++++++++------- .../templates/faisp/career/careerMgt.html | 88 +++++++--- .../templates/faisp/career/careerModal.html | 70 +++++++- .../faisp/career/kwmsCareerModal.html | 66 ++++++++ 22 files changed, 584 insertions(+), 169 deletions(-) create mode 100644 src/main/resources/templates/faisp/career/kwmsCareerModal.html diff --git a/src/main/java/com/dbnt/faisp/kwms/KwmsController.java b/src/main/java/com/dbnt/faisp/kwms/KwmsController.java index dc6567b1..62d9e2df 100644 --- a/src/main/java/com/dbnt/faisp/kwms/KwmsController.java +++ b/src/main/java/com/dbnt/faisp/kwms/KwmsController.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; + @RestController @RequiredArgsConstructor @RequestMapping("/kwms") @@ -73,4 +74,11 @@ public class KwmsController { return mav; } + @GetMapping("/kwmsCareerModal") + public ModelAndView kwmsCareerModal(Integer userSeq, String dicCode){ + ModelAndView mav = new ModelAndView("faisp/career/kwmsCareerModal"); + mav.addObject("crcList", codeMgtService.selectCodeMgtList("CRC", "")); + mav.addObject("careerList", kwmsService.selectUserCareerList(userSeq, dicCode)); + return mav; + } } diff --git a/src/main/java/com/dbnt/faisp/kwms/model/VHordYundongStat.java b/src/main/java/com/dbnt/faisp/kwms/model/VHordYundongStat.java index 215ce2cf..32202516 100644 --- a/src/main/java/com/dbnt/faisp/kwms/model/VHordYundongStat.java +++ b/src/main/java/com/dbnt/faisp/kwms/model/VHordYundongStat.java @@ -1,6 +1,5 @@ package com.dbnt.faisp.kwms.model; -import com.dbnt.faisp.config.BaseModel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -11,6 +10,7 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; +import java.time.LocalDate; import java.time.LocalDateTime; @Getter @@ -35,9 +35,9 @@ public class VHordYundongStat { @Column(name = "JIKGEUP_CD") private String jikgeupCd; @Column(name = "START_DATE") - private LocalDateTime startDate; + private LocalDate startDate; @Column(name = "END_DATE") - private LocalDateTime endDate; + private LocalDate endDate; @Column(name = "WORK_DAY") private Integer workDay; @Column(name = "WORK_MONTH") diff --git a/src/main/java/com/dbnt/faisp/kwms/repository/VHordYundongStatRepository.java b/src/main/java/com/dbnt/faisp/kwms/repository/VHordYundongStatRepository.java index 22073ce3..77309e8b 100644 --- a/src/main/java/com/dbnt/faisp/kwms/repository/VHordYundongStatRepository.java +++ b/src/main/java/com/dbnt/faisp/kwms/repository/VHordYundongStatRepository.java @@ -8,5 +8,5 @@ import java.util.List; public interface VHordYundongStatRepository extends JpaRepository { - List findByDicCode(String dicCode); + List findByDicCodeOrderByStartDateDesc(String dicCode); } diff --git a/src/main/java/com/dbnt/faisp/kwms/service/KwmsService.java b/src/main/java/com/dbnt/faisp/kwms/service/KwmsService.java index b44cae75..87a193d2 100644 --- a/src/main/java/com/dbnt/faisp/kwms/service/KwmsService.java +++ b/src/main/java/com/dbnt/faisp/kwms/service/KwmsService.java @@ -1,21 +1,29 @@ package com.dbnt.faisp.kwms.service; import com.dbnt.faisp.kwms.model.VEmployee; +import com.dbnt.faisp.kwms.model.VHordYundongStat; import com.dbnt.faisp.kwms.repository.VEmployeeRepository; +import com.dbnt.faisp.kwms.repository.VHordYundongStatRepository; import com.dbnt.faisp.main.codeMgt.service.CodeMgtService; +import com.dbnt.faisp.main.userInfo.model.UserCareer; import com.dbnt.faisp.main.userInfo.model.UserInfo; +import com.dbnt.faisp.main.userInfo.repository.UserCareerRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; @Service @RequiredArgsConstructor public class KwmsService { private final VEmployeeRepository vEmployeeRepository; + private final VHordYundongStatRepository vHordRepository; private final CodeMgtService codeMgtService; + private final UserCareerRepository careerRepository; public UserInfo selectEmpInfo(String dicCode){ VEmployee empInfo = vEmployeeRepository.findByDicCode(dicCode).orElse(null); @@ -32,13 +40,13 @@ public class KwmsService { userInfo.setUserNm(empInfo.getEmpNm()); userInfo.setSex(empInfo.getSex().strip().equals("F")?"SEX001":"SEX002"); String[] positionAry = empInfo.getCallBuseoNm().split(" "); - userInfo.setOgCd(codeMgtService.searchCode("OG", positionAry[0])); + userInfo.setOgCd(codeMgtService.searchCodeToCategoryAndValue("OG", positionAry[0])); if (positionAry.length>1){ - userInfo.setOfcCd(codeMgtService.searchCode("OFC", positionAry[1])); + userInfo.setOfcCd(codeMgtService.searchCodeToCategoryAndValue("OFC", positionAry[1])); } - userInfo.setTitleCd(codeMgtService.searchCode("JT", empInfo.getJikgeup())); - userInfo.setOutturnCd(codeMgtService.searchCode("OTC", empInfo.getGyunggwa())); - userInfo.setSeriesCd(codeMgtService.searchCode("SRC", empInfo.getJikbyul())); + userInfo.setTitleCd(codeMgtService.searchCodeToCategoryAndValue("JT", empInfo.getJikgeup())); + userInfo.setOutturnCd(codeMgtService.searchCodeToCategoryAndValue("OTC", empInfo.getGyunggwa())); + userInfo.setSeriesCd(codeMgtService.searchCodeToCategoryAndValue("SRC", empInfo.getJikbyul())); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); empInfo.setBirthDate( @@ -48,4 +56,32 @@ public class KwmsService { userInfo.setTitleInDate(LocalDate.parse(empInfo.getHnJikgeupImyngil(), formatter)); return userInfo; } + + public List selectUserCareerList(Integer userSeq, String dicCode) { + List statList = vHordRepository.findByDicCodeOrderByStartDateDesc(dicCode); + List savedList = careerRepository.findByUserSeqOrderByStartDateDesc(userSeq); + List careerList = new ArrayList<>(); + for(VHordYundongStat stat: statList){ + boolean savedFlag = false; + for(UserCareer savedCareer: savedList){ + if (stat.getHordYundongCd().equals(savedCareer.getHordCd())) { + savedFlag = true; + break; + } + } + if(!savedFlag){ + UserCareer career = new UserCareer(); + career.setDesignationCd(codeMgtService.searchCodeToCategoryAndValue("DSN", stat.getImyongGubunNm())); + career.setWorkPositionStr(stat.getImyongbuseoChongching()); + career.setWorkTitle(codeMgtService.searchCodeToCategoryAndValue("JT", stat.getImyongJikgeupNm())); + career.setStartDate(stat.getStartDate()); + career.setEndDate(stat.getEndDate()); + career.setWorkDay(stat.getWorkDay()==null?0:stat.getWorkDay()); + career.setWorkMonth(stat.getWorkMonth()==null?0:stat.getWorkMonth()); + career.setHordCd(stat.getHordYundongCd()); + careerList.add(career); + } + } + return careerList; + } } diff --git a/src/main/java/com/dbnt/faisp/main/codeMgt/repository/CodeMgtRepository.java b/src/main/java/com/dbnt/faisp/main/codeMgt/repository/CodeMgtRepository.java index 9d854026..206ffad2 100644 --- a/src/main/java/com/dbnt/faisp/main/codeMgt/repository/CodeMgtRepository.java +++ b/src/main/java/com/dbnt/faisp/main/codeMgt/repository/CodeMgtRepository.java @@ -4,12 +4,14 @@ import com.dbnt.faisp.main.codeMgt.model.CodeMgt; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; +import java.util.Optional; public interface CodeMgtRepository extends JpaRepository { List findByCategoryCdOrderByItemCdAsc(String categoryCd); List findByCategoryCdAndUseChkOrderByItemCdAsc(String categoryCd, String useChk); + Optional findByCategoryCdAndItemValue(String categoryCd, String itemValue); List findByUseChkOrderByItemCdAsc(String useChk); List findByOrderByItemCdAsc(); } diff --git a/src/main/java/com/dbnt/faisp/main/codeMgt/service/CodeMgtService.java b/src/main/java/com/dbnt/faisp/main/codeMgt/service/CodeMgtService.java index 18785c22..a600d14c 100644 --- a/src/main/java/com/dbnt/faisp/main/codeMgt/service/CodeMgtService.java +++ b/src/main/java/com/dbnt/faisp/main/codeMgt/service/CodeMgtService.java @@ -67,13 +67,8 @@ public class CodeMgtService{ } return codeList; } - public String searchCode(String categoryCd, String value){ - List codeList = selectCodeMgtList(categoryCd, ""); - for(CodeMgt code: codeList){ - if(code.getItemValue().equals(value)){ - return code.getItemCd(); - } - } - return null; + public String searchCodeToCategoryAndValue(String categoryCd, String value){ + CodeMgt code = codeMgtRepository.findByCategoryCdAndItemValue(categoryCd, value).orElse(null); + return code==null?null:code.getItemCd(); } } 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 ee6b421d..3962bf2e 100644 --- a/src/main/java/com/dbnt/faisp/main/userInfo/FaispController.java +++ b/src/main/java/com/dbnt/faisp/main/userInfo/FaispController.java @@ -19,6 +19,7 @@ import java.time.LocalDateTime; import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.Map; import javax.servlet.http.HttpServletResponse; @@ -205,7 +206,7 @@ public class FaispController { } //메뉴권한 확인 - String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/policeList").get(0).getAccessAuth(); + String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/careerMgt").get(0).getAccessAuth(); mav.addObject("accessAuth", accessAuth); userInfo.setQueryInfo(); mav.addObject("policeList", userInfoService.selectPoliceList(userInfo)); @@ -217,15 +218,16 @@ public class FaispController { return mav; } @GetMapping("/careerModal") - public ModelAndView careerModal(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo){ + public ModelAndView careerModal(@AuthenticationPrincipal UserInfo loginUser, UserCareer career){ ModelAndView mav = new ModelAndView("faisp/career/careerModal"); //메뉴권한 확인 - String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/educationMgt").get(0).getAccessAuth(); + String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/careerMgt").get(0).getAccessAuth(); mav.addObject("accessAuth", accessAuth); + mav.addObject("selectedTab", career.getCareerCd()); mav.addObject("crcList", codeMgtService.selectCodeMgtList("CRC", "")); - mav.addObject("userInfo", userInfoService.selectPoliceInfo(userInfo.getUserSeq())); - /*mav.addObject("eduList", userInfoService.selectEduList());*/ + mav.addObject("userInfo", userInfoService.selectPoliceInfo(career.getUserSeq())); + mav.addObject("careerList", userInfoService.selectCareerList(career.getUserSeq())); mav.addObject("userSeq", loginUser.getUserSeq()); return mav; } @@ -240,6 +242,32 @@ public class FaispController { mav.addObject("career", career); return mav; } + @PostMapping("/saveCareer") + public void saveCareer(@AuthenticationPrincipal UserInfo loginUser, UserCareer career){ + career.setWrtOrgan(loginUser.getOgCd()); + career.setWrtPart(loginUser.getOfcCd()); + career.setWrtUserSeq(loginUser.getUserSeq()); + career.setWrtUserGrd(loginUser.getTitleCd()); + career.setWrtUserNm(loginUser.getUserNm()); + career.setWrtDt(LocalDateTime.now()); + userInfoService.saveCareer(career); + } + @PostMapping("/saveCareerList") + public void saveCareerList(@AuthenticationPrincipal UserInfo loginUser, UserCareer info){ + for(UserCareer career: info.getCareerList()){ + career.setWrtOrgan(loginUser.getOgCd()); + career.setWrtPart(loginUser.getOfcCd()); + career.setWrtUserSeq(loginUser.getUserSeq()); + career.setWrtUserGrd(loginUser.getTitleCd()); + career.setWrtUserNm(loginUser.getUserNm()); + career.setWrtDt(LocalDateTime.now()); + } + userInfoService.saveCareerList(info.getCareerList()); + } + @PostMapping("/deleteCareer") + public void deleteCareer(UserCareer career){ + userInfoService.deleteCareer(career); + } @GetMapping("/educationMgt") public ModelAndView educationMgt(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo, HttpServletResponse response){ diff --git a/src/main/java/com/dbnt/faisp/main/userInfo/model/UserCareer.java b/src/main/java/com/dbnt/faisp/main/userInfo/model/UserCareer.java index 78411293..95013370 100644 --- a/src/main/java/com/dbnt/faisp/main/userInfo/model/UserCareer.java +++ b/src/main/java/com/dbnt/faisp/main/userInfo/model/UserCareer.java @@ -9,6 +9,7 @@ import javax.persistence.*; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.List; @Getter @@ -56,15 +57,19 @@ public class UserCareer{ @Column(name = "wrt_part") private String wrtPart; @Column(name = "wrt_user_seq") - private String wrtUserSeq; + private Integer wrtUserSeq; @Column(name = "wrt_user_grd") - private Integer wrtUserGrd; + private String wrtUserGrd; @Column(name = "wrt_user_nm") private String wrtUserNm; @Column(name = "wrt_dt") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") private LocalDateTime wrtDt; + + @Transient + List careerList; + @Embeddable @Data @NoArgsConstructor 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 55d9ca5d..9879abdb 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 @@ -112,6 +112,18 @@ public class UserInfo extends BaseModel implements UserDetails{ private String excel; @Transient private String rownum; + @Transient + private Integer crc001Sum; + @Transient + private Integer crc002Sum; + @Transient + private Integer crc003Sum; + @Transient + private Integer crc004Sum; + @Transient + private Integer crc005Sum; + @Transient + private Integer crc006Sum; @Transient private List accessConfigList; diff --git a/src/main/java/com/dbnt/faisp/main/userInfo/repository/UserCareerRepository.java b/src/main/java/com/dbnt/faisp/main/userInfo/repository/UserCareerRepository.java index a21a85e7..72b9e423 100644 --- a/src/main/java/com/dbnt/faisp/main/userInfo/repository/UserCareerRepository.java +++ b/src/main/java/com/dbnt/faisp/main/userInfo/repository/UserCareerRepository.java @@ -3,7 +3,12 @@ package com.dbnt.faisp.main.userInfo.repository; import com.dbnt.faisp.main.userInfo.model.UserCareer; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; +import java.util.Optional; + public interface UserCareerRepository extends JpaRepository { + Optional findTop1ByUserSeqOrderByCareerSeqDesc(Integer userSeq); + List findByUserSeqOrderByStartDateDesc(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 48c2034d..96578a5d 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 @@ -1,20 +1,10 @@ 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.PersonnelStatus; -import com.dbnt.faisp.main.userInfo.model.UserEdu; +import com.dbnt.faisp.main.userInfo.model.*; import com.dbnt.faisp.main.userInfo.model.UserEdu.UserEduId; -import com.dbnt.faisp.main.userInfo.model.UserInfo; -import com.dbnt.faisp.main.userInfo.model.UserInfoHistory; -import com.dbnt.faisp.main.userInfo.repository.DashboardConfigRepository; -import com.dbnt.faisp.main.userInfo.repository.PersonnelStatusRepository; -import com.dbnt.faisp.main.userInfo.repository.UserEduRepository; -import com.dbnt.faisp.main.userInfo.repository.UserInfoHistoryRepository; -import com.dbnt.faisp.main.userInfo.repository.UserInfoRepository; +import com.dbnt.faisp.main.userInfo.repository.*; import com.dbnt.faisp.util.ParamMap; import lombok.RequiredArgsConstructor; @@ -28,6 +18,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.time.Period; +import java.time.temporal.ChronoUnit; import java.util.List; @Service @@ -38,6 +30,7 @@ public class UserInfoService implements UserDetailsService { private final UserInfoHistoryRepository userInfoHistoryRepository; private final DashboardConfigRepository dashboardConfigRepository; private final PersonnelStatusRepository personnelStatusRepository; + private final UserCareerRepository userCareerRepository; private final UserEduRepository userEduRepository; private final UserInfoMapper userInfoMapper; @@ -335,6 +328,31 @@ public class UserInfoService implements UserDetailsService { return userInfoMapper.selectPoliceInfo(userSeq); } + public void saveCareer(UserCareer career) { + UserCareer lastCareer = userCareerRepository.findTop1ByUserSeqOrderByCareerSeqDesc(career.getUserSeq()).orElse(null); + career.setCareerSeq(lastCareer==null?1:(lastCareer.getCareerSeq()+1)); + career.setWorkMonth((int) ChronoUnit.MONTHS.between(career.getStartDate(), career.getEndDate())); + career.setWorkDay((int) ChronoUnit.DAYS.between(career.getStartDate(), career.getEndDate())); + userCareerRepository.save(career); + } + + public void saveCareerList(List careerList) { + UserCareer lastCareer = userCareerRepository.findTop1ByUserSeqOrderByCareerSeqDesc(careerList.get(0).getUserSeq()).orElse(null); + int careerSeq = lastCareer==null?1:(lastCareer.getCareerSeq()+1); + for(UserCareer career: careerList){ + career.setCareerSeq(careerSeq++); + } + userCareerRepository.saveAll(careerList); + } + + public List selectCareerList(Integer userSeq) { + return userCareerRepository.findByUserSeqOrderByStartDateDesc(userSeq); + } + + public void deleteCareer(UserCareer career) { + userCareerRepository.deleteById(new UserCareer.UserCareerId(career.getUserSeq(), career.getCareerSeq())); + } + @Transactional public int saveEdu(@AuthenticationPrincipal UserInfo loginUser,List userEdu) { int userSeq = 0; @@ -372,4 +390,5 @@ public class UserInfoService implements UserDetailsService { userEduRepository.deleteById(new UserEduId(userEdu.getEduSeq(), userEdu.getUserSeq())); return userEdu.getUserSeq(); } + } diff --git a/src/main/resources/mybatisMapper/UserInfoMapper.xml b/src/main/resources/mybatisMapper/UserInfoMapper.xml index 14bde5dd..c21952b4 100644 --- a/src/main/resources/mybatisMapper/UserInfoMapper.xml +++ b/src/main/resources/mybatisMapper/UserInfoMapper.xml @@ -102,21 +102,38 @@ +
diff --git a/src/main/resources/templates/faisp/career/careerFormModal.html b/src/main/resources/templates/faisp/career/careerFormModal.html index ed4fd9db..0f7d3c91 100644 --- a/src/main/resources/templates/faisp/career/careerFormModal.html +++ b/src/main/resources/templates/faisp/career/careerFormModal.html @@ -5,81 +5,78 @@