Compare commits
2 Commits
9836412eee
...
810d893daf
| Author | SHA1 | Date |
|---|---|---|
|
|
810d893daf | |
|
|
2bd584cc8c |
|
|
@ -154,6 +154,10 @@ public class FaispController {
|
||||||
@GetMapping("/personnelStatus")
|
@GetMapping("/personnelStatus")
|
||||||
public ModelAndView personnelStatus(@AuthenticationPrincipal UserInfo loginUser, PersonnelStatus personnelStatus){
|
public ModelAndView personnelStatus(@AuthenticationPrincipal UserInfo loginUser, PersonnelStatus personnelStatus){
|
||||||
ModelAndView mav = new ModelAndView("faisp/personnelStatus");
|
ModelAndView mav = new ModelAndView("faisp/personnelStatus");
|
||||||
|
//메뉴권한 확인
|
||||||
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faisp/personnelStatus").get(0).getAccessAuth();
|
||||||
|
mav.addObject("accessAuth", accessAuth);
|
||||||
|
|
||||||
if(personnelStatus.getYear()==null){
|
if(personnelStatus.getYear()==null){
|
||||||
personnelStatus.setYear(Integer.toString(LocalDateTime.now().getYear()));
|
personnelStatus.setYear(Integer.toString(LocalDateTime.now().getYear()));
|
||||||
}
|
}
|
||||||
|
|
@ -162,12 +166,33 @@ public class FaispController {
|
||||||
List<CodeMgt> jtList = codeMgtService.selectCodeMgtList("JT");
|
List<CodeMgt> jtList = codeMgtService.selectCodeMgtList("JT");
|
||||||
jtList.sort((o1, o2) -> o2.getItemCd().compareTo(o1.getItemCd()));
|
jtList.sort((o1, o2) -> o2.getItemCd().compareTo(o1.getItemCd()));
|
||||||
mav.addObject("jtList", jtList);
|
mav.addObject("jtList", jtList);
|
||||||
mav.addObject("mgtOgList", loginUser.getDownOrganCdList());
|
|
||||||
List<PersonnelStatus> statusList = userInfoService.selectPersonnelStatusList(personnelStatus);
|
List<PersonnelStatus> statusList = userInfoService.selectPersonnelStatusList(personnelStatus);
|
||||||
statusList = calcStatusList(statusList);
|
statusList = calcStatusList(statusList);
|
||||||
|
mav.addObject("statusSummary", makeStatusSummary(statusList));
|
||||||
mav.addObject("statusList", statusList);
|
mav.addObject("statusList", statusList);
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/personnelStatusRow")
|
||||||
|
public ModelAndView personnelStatusRow(@AuthenticationPrincipal UserInfo loginUser){
|
||||||
|
ModelAndView mav = new ModelAndView("faisp/personnelStatusRow");
|
||||||
|
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
|
||||||
|
return mav;
|
||||||
|
}
|
||||||
|
@GetMapping("/selectPersonnelStatus")
|
||||||
|
public PersonnelStatus selectPersonnelStatus(PersonnelStatus personnelStatus){
|
||||||
|
return userInfoService.selectPersonnelStatusLastVersion(personnelStatus);
|
||||||
|
}
|
||||||
|
@GetMapping("/nowPersonnelStatus")
|
||||||
|
public PersonnelStatus nowPersonnelStatus(String ogCd){
|
||||||
|
return userInfoService.nowPersonnelStatus(ogCd);
|
||||||
|
}
|
||||||
|
@PostMapping("/savePersonnelStatus")
|
||||||
|
@ResponseBody
|
||||||
|
public void savePersonnelStatus(@AuthenticationPrincipal UserInfo loginUser, @RequestBody List<PersonnelStatus> personnelStatusList){
|
||||||
|
userInfoService.savePersonnelStatus(loginUser, personnelStatusList);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/careerMgt")
|
@GetMapping("/careerMgt")
|
||||||
public ModelAndView careerMgt(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo, HttpServletResponse response){
|
public ModelAndView careerMgt(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo, HttpServletResponse response){
|
||||||
ModelAndView mav = new ModelAndView("faisp/careerMgt");
|
ModelAndView mav = new ModelAndView("faisp/careerMgt");
|
||||||
|
|
@ -245,4 +270,27 @@ public class FaispController {
|
||||||
}
|
}
|
||||||
return statusList;
|
return statusList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PersonnelStatus makeStatusSummary(List<PersonnelStatus> statusList) {
|
||||||
|
PersonnelStatus statusSummary = new PersonnelStatus();
|
||||||
|
for(PersonnelStatus status: statusList){
|
||||||
|
statusSummary.setSumMax(statusSummary.getSumMax()+status.getSumMax());
|
||||||
|
statusSummary.setSumNow(statusSummary.getSumNow()+status.getSumNow());
|
||||||
|
statusSummary.setJt007Max(statusSummary.getJt007Max()+ status.getJt007Max());
|
||||||
|
statusSummary.setJt007Now(statusSummary.getJt007Now()+ status.getJt007Now());
|
||||||
|
statusSummary.setJt006Max(statusSummary.getJt006Max()+ status.getJt006Max());
|
||||||
|
statusSummary.setJt006Now(statusSummary.getJt006Now()+ status.getJt006Now());
|
||||||
|
statusSummary.setJt005Max(statusSummary.getJt005Max()+ status.getJt005Max());
|
||||||
|
statusSummary.setJt005Now(statusSummary.getJt005Now()+ status.getJt005Now());
|
||||||
|
statusSummary.setJt004Max(statusSummary.getJt004Max()+ status.getJt004Max());
|
||||||
|
statusSummary.setJt004Now(statusSummary.getJt004Now()+ status.getJt004Now());
|
||||||
|
statusSummary.setJt003Max(statusSummary.getJt003Max()+ status.getJt003Max());
|
||||||
|
statusSummary.setJt003Now(statusSummary.getJt003Now()+ status.getJt003Now());
|
||||||
|
statusSummary.setJt002Max(statusSummary.getJt002Max()+ status.getJt002Max());
|
||||||
|
statusSummary.setJt002Now(statusSummary.getJt002Now()+ status.getJt002Now());
|
||||||
|
statusSummary.setJt001Max(statusSummary.getJt001Max()+ status.getJt001Max());
|
||||||
|
statusSummary.setJt001Now(statusSummary.getJt001Now()+ status.getJt001Now());
|
||||||
|
}
|
||||||
|
return statusSummary;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,8 +30,11 @@ public interface UserInfoMapper {
|
||||||
UserInfoHistory selectpoliceHistoryView(UserInfoHistory userInfoHistory);
|
UserInfoHistory selectpoliceHistoryView(UserInfoHistory userInfoHistory);
|
||||||
|
|
||||||
List<PersonnelStatus> selectPersonnelStatusList(PersonnelStatus personnelStatus);
|
List<PersonnelStatus> selectPersonnelStatusList(PersonnelStatus personnelStatus);
|
||||||
|
|
||||||
|
PersonnelStatus nowPersonnelStatus(String ogCd);
|
||||||
|
|
||||||
UserInfo selectPoliceInfo(Integer userSeq);
|
UserInfo selectPoliceInfo(Integer userSeq);
|
||||||
|
|
||||||
List<UserEdu> selectEduList(UserEdu userEdu);
|
List<UserEdu> selectEduList(UserEdu userEdu);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ public class PersonnelStatus extends BaseModel {
|
||||||
private String ogCd;
|
private String ogCd;
|
||||||
@Id
|
@Id
|
||||||
@Column(name = "version_no")
|
@Column(name = "version_no")
|
||||||
private Integer versionNo;
|
private Integer versionNo = 0;
|
||||||
@Column(name = "jt007_max")
|
@Column(name = "jt007_max")
|
||||||
private Integer jt007Max = 0;
|
private Integer jt007Max = 0;
|
||||||
@Column(name = "jt007_now")
|
@Column(name = "jt007_now")
|
||||||
|
|
@ -69,9 +69,10 @@ public class PersonnelStatus extends BaseModel {
|
||||||
private LocalDateTime wrtDt;
|
private LocalDateTime wrtDt;
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
private Integer sumMax;
|
private Integer sumMax = 0;
|
||||||
@Transient
|
@Transient
|
||||||
private Integer sumNow;
|
private Integer sumNow = 0;
|
||||||
|
|
||||||
@Embeddable
|
@Embeddable
|
||||||
@Data
|
@Data
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ package com.dbnt.faisp.main.userInfo.repository;
|
||||||
import com.dbnt.faisp.main.userInfo.model.PersonnelStatus;
|
import com.dbnt.faisp.main.userInfo.model.PersonnelStatus;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
public interface PersonnelStatusRepository extends JpaRepository<PersonnelStatus, PersonnelStatus.personnelStatusId> {
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public interface PersonnelStatusRepository extends JpaRepository<PersonnelStatus, PersonnelStatus.personnelStatusId> {
|
||||||
|
Optional<PersonnelStatus> findTop1ByYearAndOgCdOrderByVersionNoDesc(String year, String ogCd);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import com.dbnt.faisp.main.userInfo.model.UserEdu.UserEduId;
|
||||||
import com.dbnt.faisp.main.userInfo.model.UserInfo;
|
import com.dbnt.faisp.main.userInfo.model.UserInfo;
|
||||||
import com.dbnt.faisp.main.userInfo.model.UserInfoHistory;
|
import com.dbnt.faisp.main.userInfo.model.UserInfoHistory;
|
||||||
import com.dbnt.faisp.main.userInfo.repository.DashboardConfigRepository;
|
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.UserEduRepository;
|
||||||
import com.dbnt.faisp.main.userInfo.repository.UserInfoHistoryRepository;
|
import com.dbnt.faisp.main.userInfo.repository.UserInfoHistoryRepository;
|
||||||
import com.dbnt.faisp.main.userInfo.repository.UserInfoRepository;
|
import com.dbnt.faisp.main.userInfo.repository.UserInfoRepository;
|
||||||
|
|
@ -36,6 +37,7 @@ public class UserInfoService implements UserDetailsService {
|
||||||
private final UserInfoRepository userInfoRepository;
|
private final UserInfoRepository userInfoRepository;
|
||||||
private final UserInfoHistoryRepository userInfoHistoryRepository;
|
private final UserInfoHistoryRepository userInfoHistoryRepository;
|
||||||
private final DashboardConfigRepository dashboardConfigRepository;
|
private final DashboardConfigRepository dashboardConfigRepository;
|
||||||
|
private final PersonnelStatusRepository personnelStatusRepository;
|
||||||
private final UserEduRepository userEduRepository;
|
private final UserEduRepository userEduRepository;
|
||||||
private final UserInfoMapper userInfoMapper;
|
private final UserInfoMapper userInfoMapper;
|
||||||
|
|
||||||
|
|
@ -51,41 +53,41 @@ public class UserInfoService implements UserDetailsService {
|
||||||
UserInfo result = userInfoRepository.save(userInfo);
|
UserInfo result = userInfoRepository.save(userInfo);
|
||||||
UserInfoHistory dbHis = userInfoHistoryRepository.findByUserSeq(result.getUserSeq());
|
UserInfoHistory dbHis = userInfoHistoryRepository.findByUserSeq(result.getUserSeq());
|
||||||
if(dbHis == null) {
|
if(dbHis == null) {
|
||||||
UserInfoHistory hisTmp = new UserInfoHistory();
|
UserInfoHistory hisTmp = new UserInfoHistory();
|
||||||
hisTmp.setUserSeq(result.getUserSeq());
|
hisTmp.setUserSeq(result.getUserSeq());
|
||||||
hisTmp.setVersionNo(1);
|
hisTmp.setVersionNo(1);
|
||||||
hisTmp.setDicCode(result.getDicCode());
|
hisTmp.setDicCode(result.getDicCode());
|
||||||
hisTmp.setUserId(result.getUserId());
|
hisTmp.setUserId(result.getUserId());
|
||||||
hisTmp.setUserNm(result.getUserNm());
|
hisTmp.setUserNm(result.getUserNm());
|
||||||
hisTmp.setBirthDate(result.getBirthDate());
|
hisTmp.setBirthDate(result.getBirthDate());
|
||||||
hisTmp.setSex(result.getSex());
|
hisTmp.setSex(result.getSex());
|
||||||
hisTmp.setEmail(result.getEmail());
|
hisTmp.setEmail(result.getEmail());
|
||||||
hisTmp.setPhoneNo(result.getPhoneNo());
|
hisTmp.setPhoneNo(result.getPhoneNo());
|
||||||
hisTmp.setAreaCd(result.getAreaCd());
|
hisTmp.setAreaCd(result.getAreaCd());
|
||||||
hisTmp.setOgCd(result.getOgCd());
|
hisTmp.setOgCd(result.getOgCd());
|
||||||
hisTmp.setOfcCd(result.getOfcCd());
|
hisTmp.setOfcCd(result.getOfcCd());
|
||||||
hisTmp.setTitleCd(result.getTitleCd());
|
hisTmp.setTitleCd(result.getTitleCd());
|
||||||
hisTmp.setGroupCd(result.getGroupCd());
|
hisTmp.setGroupCd(result.getGroupCd());
|
||||||
hisTmp.setSeriesCd(result.getSeriesCd());
|
hisTmp.setSeriesCd(result.getSeriesCd());
|
||||||
hisTmp.setOfcHeadYn(result.getOfcHeadYn());
|
hisTmp.setOfcHeadYn(result.getOfcHeadYn());
|
||||||
hisTmp.setHiringCd(result.getHiringCd());
|
hisTmp.setHiringCd(result.getHiringCd());
|
||||||
hisTmp.setEmployCd(result.getEmployCd());
|
hisTmp.setEmployCd(result.getEmployCd());
|
||||||
hisTmp.setOutturnCd(result.getOutturnCd());
|
hisTmp.setOutturnCd(result.getOutturnCd());
|
||||||
hisTmp.setWorkCd(result.getWorkCd());
|
hisTmp.setWorkCd(result.getWorkCd());
|
||||||
hisTmp.setJobInCd(result.getJobInCd());
|
hisTmp.setJobInCd(result.getJobInCd());
|
||||||
hisTmp.setLanguageCd(result.getLanguageCd());
|
hisTmp.setLanguageCd(result.getLanguageCd());
|
||||||
hisTmp.setPoliceInDate(result.getPoliceInDate());
|
hisTmp.setPoliceInDate(result.getPoliceInDate());
|
||||||
hisTmp.setOrganInDate(result.getOrganInDate());
|
hisTmp.setOrganInDate(result.getOrganInDate());
|
||||||
hisTmp.setOfcInDate(result.getOfcInDate());
|
hisTmp.setOfcInDate(result.getOfcInDate());
|
||||||
hisTmp.setTitleInDate(result.getTitleInDate());
|
hisTmp.setTitleInDate(result.getTitleInDate());
|
||||||
hisTmp.setUserStatus(result.getUserStatus());
|
hisTmp.setUserStatus(result.getUserStatus());
|
||||||
hisTmp.setWrtOrgan(result.getOgCd());
|
hisTmp.setWrtOrgan(result.getOgCd());
|
||||||
hisTmp.setWrtPart(result.getOfcCd());
|
hisTmp.setWrtPart(result.getOfcCd());
|
||||||
hisTmp.setWrtTitle(result.getTitleCd());
|
hisTmp.setWrtTitle(result.getTitleCd());
|
||||||
hisTmp.setWrtUserSeq(result.getUserSeq());
|
hisTmp.setWrtUserSeq(result.getUserSeq());
|
||||||
hisTmp.setWrtNm(result.getUserNm());
|
hisTmp.setWrtNm(result.getUserNm());
|
||||||
hisTmp.setWrtDt(result.getWrtDt());
|
hisTmp.setWrtDt(result.getWrtDt());
|
||||||
userInfoHistoryRepository.save(hisTmp);
|
userInfoHistoryRepository.save(hisTmp);
|
||||||
}
|
}
|
||||||
return result.getUserId();
|
return result.getUserId();
|
||||||
}
|
}
|
||||||
|
|
@ -156,41 +158,41 @@ public class UserInfoService implements UserDetailsService {
|
||||||
userInfoRepository.save(savedInfo);
|
userInfoRepository.save(savedInfo);
|
||||||
UserInfoHistory dbHis = userInfoHistoryRepository.findTopByUserSeqOrderByVersionNoDesc(savedInfo.getUserSeq());
|
UserInfoHistory dbHis = userInfoHistoryRepository.findTopByUserSeqOrderByVersionNoDesc(savedInfo.getUserSeq());
|
||||||
if(dbHis != null) {
|
if(dbHis != null) {
|
||||||
UserInfoHistory hisTmp = new UserInfoHistory();
|
UserInfoHistory hisTmp = new UserInfoHistory();
|
||||||
hisTmp.setUserSeq(savedInfo.getUserSeq());
|
hisTmp.setUserSeq(savedInfo.getUserSeq());
|
||||||
hisTmp.setVersionNo(dbHis.getVersionNo()+1);
|
hisTmp.setVersionNo(dbHis.getVersionNo()+1);
|
||||||
hisTmp.setDicCode(savedInfo.getDicCode());
|
hisTmp.setDicCode(savedInfo.getDicCode());
|
||||||
hisTmp.setUserId(savedInfo.getUserId());
|
hisTmp.setUserId(savedInfo.getUserId());
|
||||||
hisTmp.setUserNm(savedInfo.getUserNm());
|
hisTmp.setUserNm(savedInfo.getUserNm());
|
||||||
hisTmp.setBirthDate(savedInfo.getBirthDate());
|
hisTmp.setBirthDate(savedInfo.getBirthDate());
|
||||||
hisTmp.setSex(savedInfo.getSex());
|
hisTmp.setSex(savedInfo.getSex());
|
||||||
hisTmp.setEmail(savedInfo.getEmail());
|
hisTmp.setEmail(savedInfo.getEmail());
|
||||||
hisTmp.setPhoneNo(savedInfo.getPhoneNo());
|
hisTmp.setPhoneNo(savedInfo.getPhoneNo());
|
||||||
hisTmp.setAreaCd(savedInfo.getAreaCd());
|
hisTmp.setAreaCd(savedInfo.getAreaCd());
|
||||||
hisTmp.setOgCd(savedInfo.getOgCd());
|
hisTmp.setOgCd(savedInfo.getOgCd());
|
||||||
hisTmp.setOfcCd(savedInfo.getOfcCd());
|
hisTmp.setOfcCd(savedInfo.getOfcCd());
|
||||||
hisTmp.setTitleCd(savedInfo.getTitleCd());
|
hisTmp.setTitleCd(savedInfo.getTitleCd());
|
||||||
hisTmp.setGroupCd(savedInfo.getGroupCd());
|
hisTmp.setGroupCd(savedInfo.getGroupCd());
|
||||||
hisTmp.setSeriesCd(savedInfo.getSeriesCd());
|
hisTmp.setSeriesCd(savedInfo.getSeriesCd());
|
||||||
hisTmp.setOfcHeadYn(savedInfo.getOfcHeadYn());
|
hisTmp.setOfcHeadYn(savedInfo.getOfcHeadYn());
|
||||||
hisTmp.setHiringCd(savedInfo.getHiringCd());
|
hisTmp.setHiringCd(savedInfo.getHiringCd());
|
||||||
hisTmp.setEmployCd(savedInfo.getEmployCd());
|
hisTmp.setEmployCd(savedInfo.getEmployCd());
|
||||||
hisTmp.setOutturnCd(savedInfo.getOutturnCd());
|
hisTmp.setOutturnCd(savedInfo.getOutturnCd());
|
||||||
hisTmp.setWorkCd(savedInfo.getWorkCd());
|
hisTmp.setWorkCd(savedInfo.getWorkCd());
|
||||||
hisTmp.setJobInCd(savedInfo.getJobInCd());
|
hisTmp.setJobInCd(savedInfo.getJobInCd());
|
||||||
hisTmp.setLanguageCd(savedInfo.getLanguageCd());
|
hisTmp.setLanguageCd(savedInfo.getLanguageCd());
|
||||||
hisTmp.setPoliceInDate(savedInfo.getPoliceInDate());
|
hisTmp.setPoliceInDate(savedInfo.getPoliceInDate());
|
||||||
hisTmp.setOrganInDate(savedInfo.getOrganInDate());
|
hisTmp.setOrganInDate(savedInfo.getOrganInDate());
|
||||||
hisTmp.setOfcInDate(savedInfo.getOfcInDate());
|
hisTmp.setOfcInDate(savedInfo.getOfcInDate());
|
||||||
hisTmp.setTitleInDate(savedInfo.getTitleInDate());
|
hisTmp.setTitleInDate(savedInfo.getTitleInDate());
|
||||||
hisTmp.setUserStatus(savedInfo.getUserStatus());
|
hisTmp.setUserStatus(savedInfo.getUserStatus());
|
||||||
hisTmp.setWrtOrgan(loginUser.getOgCd());
|
hisTmp.setWrtOrgan(loginUser.getOgCd());
|
||||||
hisTmp.setWrtPart(loginUser.getOfcCd());
|
hisTmp.setWrtPart(loginUser.getOfcCd());
|
||||||
hisTmp.setWrtTitle(loginUser.getTitleCd());
|
hisTmp.setWrtTitle(loginUser.getTitleCd());
|
||||||
hisTmp.setWrtUserSeq(loginUser.getUserSeq());
|
hisTmp.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
hisTmp.setWrtNm(loginUser.getUserNm());
|
hisTmp.setWrtNm(loginUser.getUserNm());
|
||||||
hisTmp.setWrtDt(LocalDateTime.now());
|
hisTmp.setWrtDt(LocalDateTime.now());
|
||||||
userInfoHistoryRepository.save(hisTmp);
|
userInfoHistoryRepository.save(hisTmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -278,69 +280,93 @@ public class UserInfoService implements UserDetailsService {
|
||||||
}
|
}
|
||||||
dashboardConfigRepository.saveAll(configList);
|
dashboardConfigRepository.saveAll(configList);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<UserInfo> selectPoliceList(UserInfo userInfo) {
|
public List<UserInfo> selectPoliceList(UserInfo userInfo) {
|
||||||
return userInfoMapper.selectPoliceList(userInfo);
|
return userInfoMapper.selectPoliceList(userInfo);
|
||||||
}
|
}
|
||||||
public Integer selectPoliceListCnt(UserInfo userInfo) {
|
public Integer selectPoliceListCnt(UserInfo userInfo) {
|
||||||
return userInfoMapper.selectPoliceListCnt(userInfo);
|
return userInfoMapper.selectPoliceListCnt(userInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<UserInfoHistory> selectPoliceHisList(UserInfoHistory userInfoHistory) {
|
public List<UserInfoHistory> selectPoliceHisList(UserInfoHistory userInfoHistory) {
|
||||||
return userInfoMapper.selectPoliceHisList(userInfoHistory);
|
return userInfoMapper.selectPoliceHisList(userInfoHistory);
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserInfoHistory selectpoliceHistoryView(UserInfoHistory userInfoHistory) {
|
public UserInfoHistory selectpoliceHistoryView(UserInfoHistory userInfoHistory) {
|
||||||
return userInfoMapper.selectpoliceHistoryView(userInfoHistory);
|
return userInfoMapper.selectpoliceHistoryView(userInfoHistory);
|
||||||
}
|
}
|
||||||
public String selectuserStatus(UserInfoHistory userInfoHistory) {
|
public String selectuserStatus(UserInfoHistory userInfoHistory) {
|
||||||
return userInfoRepository.getUserStatus(userInfoHistory.getUserSeq());
|
return userInfoRepository.getUserStatus(userInfoHistory.getUserSeq());
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<PersonnelStatus> selectPersonnelStatusList(PersonnelStatus personnelStatus) {
|
public List<PersonnelStatus> selectPersonnelStatusList(PersonnelStatus personnelStatus) {
|
||||||
return userInfoMapper.selectPersonnelStatusList(personnelStatus);
|
return userInfoMapper.selectPersonnelStatusList(personnelStatus);
|
||||||
}
|
}
|
||||||
|
public PersonnelStatus selectPersonnelStatusLastVersion(PersonnelStatus personnelStatus) {
|
||||||
|
return personnelStatusRepository
|
||||||
|
.findTop1ByYearAndOgCdOrderByVersionNoDesc
|
||||||
|
(personnelStatus.getYear(), personnelStatus.getOgCd()).orElse(personnelStatus);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void savePersonnelStatus(UserInfo loginUser, List<PersonnelStatus> personnelStatusList) {
|
||||||
|
for(PersonnelStatus status: personnelStatusList){
|
||||||
|
PersonnelStatus lastVersion = personnelStatusRepository.findTop1ByYearAndOgCdOrderByVersionNoDesc(status.getYear(), status.getOgCd()).orElse(null);
|
||||||
|
status.setVersionNo(lastVersion==null?1:(lastVersion.getVersionNo()+1));
|
||||||
|
status.setOrganCd(loginUser.getOgCd());
|
||||||
|
status.setPartCd(loginUser.getOfcCd());
|
||||||
|
status.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
|
status.setWrtUserNm(loginUser.getUserNm());
|
||||||
|
status.setWrtUserGrd(loginUser.getTitleCd());
|
||||||
|
status.setWrtDt(LocalDateTime.now());
|
||||||
|
}
|
||||||
|
personnelStatusRepository.saveAll(personnelStatusList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PersonnelStatus nowPersonnelStatus(String ogCd) {
|
||||||
|
return userInfoMapper.nowPersonnelStatus(ogCd);
|
||||||
|
}
|
||||||
|
|
||||||
public UserInfo selectPoliceInfo(Integer userSeq) {
|
public UserInfo selectPoliceInfo(Integer userSeq) {
|
||||||
return userInfoMapper.selectPoliceInfo(userSeq);
|
return userInfoMapper.selectPoliceInfo(userSeq);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public int saveEdu(@AuthenticationPrincipal UserInfo loginUser,List<UserEdu> userEdu) {
|
public int saveEdu(@AuthenticationPrincipal UserInfo loginUser,List<UserEdu> userEdu) {
|
||||||
int userSeq = 0;
|
int userSeq = 0;
|
||||||
for(UserEdu ue : userEdu ) {
|
for(UserEdu ue : userEdu ) {
|
||||||
UserEdu dbEdu = userEduRepository.findTopByUserSeqOrderByEduSeqDesc(ue.getUserSeq());
|
UserEdu dbEdu = userEduRepository.findTopByUserSeqOrderByEduSeqDesc(ue.getUserSeq());
|
||||||
if (dbEdu == null) {
|
if (dbEdu == null) {
|
||||||
ue.setEduSeq(1);
|
ue.setEduSeq(1);
|
||||||
ue.setWrtOrgan(loginUser.getOgCd());
|
ue.setWrtOrgan(loginUser.getOgCd());
|
||||||
ue.setWrtPart(loginUser.getOfcCd());
|
ue.setWrtPart(loginUser.getOfcCd());
|
||||||
ue.setWrtTitle(loginUser.getTitleCd());
|
ue.setWrtTitle(loginUser.getTitleCd());
|
||||||
ue.setWrtUserSeq(loginUser.getUserSeq());
|
ue.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
ue.setWrtNm(loginUser.getUserNm());
|
ue.setWrtNm(loginUser.getUserNm());
|
||||||
ue.setWrtDt(LocalDateTime.now());
|
ue.setWrtDt(LocalDateTime.now());
|
||||||
userEduRepository.save(ue);
|
userEduRepository.save(ue);
|
||||||
} else {
|
} else {
|
||||||
ue.setEduSeq(dbEdu.getEduSeq()+ 1);
|
ue.setEduSeq(dbEdu.getEduSeq()+ 1);
|
||||||
ue.setWrtOrgan(loginUser.getOgCd());
|
ue.setWrtOrgan(loginUser.getOgCd());
|
||||||
ue.setWrtPart(loginUser.getOfcCd());
|
ue.setWrtPart(loginUser.getOfcCd());
|
||||||
ue.setWrtTitle(loginUser.getTitleCd());
|
ue.setWrtTitle(loginUser.getTitleCd());
|
||||||
ue.setWrtUserSeq(loginUser.getUserSeq());
|
ue.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
ue.setWrtNm(loginUser.getUserNm());
|
ue.setWrtNm(loginUser.getUserNm());
|
||||||
ue.setWrtDt(LocalDateTime.now());
|
ue.setWrtDt(LocalDateTime.now());
|
||||||
userEduRepository.save(ue);
|
userEduRepository.save(ue);
|
||||||
}
|
}
|
||||||
userSeq = ue.getUserSeq();
|
userSeq = ue.getUserSeq();
|
||||||
}
|
}
|
||||||
return userSeq;
|
return userSeq;
|
||||||
}
|
}
|
||||||
public List<UserEdu> selectEduList(UserEdu userEdu) {
|
public List<UserEdu> selectEduList(UserEdu userEdu) {
|
||||||
return userInfoMapper.selectEduList(userEdu);
|
return userInfoMapper.selectEduList(userEdu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public int deleteEdu(UserEdu userEdu) {
|
public int deleteEdu(UserEdu userEdu) {
|
||||||
userEduRepository.deleteById(new UserEduId(userEdu.getEduSeq(), userEdu.getUserSeq()));
|
userEduRepository.deleteById(new UserEduId(userEdu.getEduSeq(), userEdu.getUserSeq()));
|
||||||
return userEdu.getUserSeq();
|
return userEdu.getUserSeq();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -228,6 +228,43 @@
|
||||||
</foreach>
|
</foreach>
|
||||||
order by c.organ_type, c.parent_organ, c.organ_cd
|
order by c.organ_type, c.parent_organ, c.organ_cd
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="nowPersonnelStatus" resultType="PersonnelStatus" parameterType="string">
|
||||||
|
select a.og_cd,
|
||||||
|
sum(case
|
||||||
|
when a.title_cd = 'JT001' then 1
|
||||||
|
else 0
|
||||||
|
end) as jt001Now,
|
||||||
|
sum(case
|
||||||
|
when a.title_cd = 'JT002' then 1
|
||||||
|
else 0
|
||||||
|
end) as jt002Now,
|
||||||
|
sum(case
|
||||||
|
when a.title_cd = 'JT003' then 1
|
||||||
|
else 0
|
||||||
|
end) as jt003Now,
|
||||||
|
sum(case
|
||||||
|
when a.title_cd = 'JT004' then 1
|
||||||
|
else 0
|
||||||
|
end) as jt004Now,
|
||||||
|
sum(case
|
||||||
|
when a.title_cd = 'JT005' then 1
|
||||||
|
else 0
|
||||||
|
end) as jt005Now,
|
||||||
|
sum(case
|
||||||
|
when a.title_cd = 'JT006' then 1
|
||||||
|
else 0
|
||||||
|
end) as jt006Now,
|
||||||
|
sum(case
|
||||||
|
when a.title_cd = 'JT007' then 1
|
||||||
|
else 0
|
||||||
|
end) as jt007Now
|
||||||
|
from user_info a
|
||||||
|
where a.user_status = 'USC003'
|
||||||
|
and a.og_cd = #{ogCd}
|
||||||
|
group by a.og_cd
|
||||||
|
order by a.og_cd
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="selectPoliceInfo" resultType="UserInfo" parameterType="Integer">
|
<select id="selectPoliceInfo" resultType="UserInfo" parameterType="Integer">
|
||||||
select user_seq,
|
select user_seq,
|
||||||
|
|
|
||||||
|
|
@ -95,4 +95,9 @@
|
||||||
}
|
}
|
||||||
#subModalBody{
|
#subModalBody{
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.statusInput::-webkit-outer-spin-button,
|
||||||
|
.statusInput::-webkit-inner-spin-button{
|
||||||
|
-webkit-appearance: none;
|
||||||
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
@ -1,3 +1,150 @@
|
||||||
$(document).on('change', '#year', function (){
|
$(document).on('change', '#year', function (){
|
||||||
$("#searchFm").submit();
|
$("#searchFm").submit();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '#personnelStatusEditModalBtn', function (){
|
||||||
|
$("#personnelStatusEditModal").modal('show')
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '#personnelStatusAddBtn', function (){
|
||||||
|
$.ajax({
|
||||||
|
url: '/faisp/personnelStatusRow',
|
||||||
|
type: 'GET',
|
||||||
|
dataType:"html",
|
||||||
|
success: function(html){
|
||||||
|
$("#personnelStatusEditDiv").append(html)
|
||||||
|
},
|
||||||
|
error:function(){
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '.personnelStatusRemoveBtn', function (){
|
||||||
|
$(this).parents(".personnelStatusRow").remove();
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('change', '.ogCd', function (){
|
||||||
|
const personnelStatusRow = $(this).parents(".personnelStatusRow");
|
||||||
|
if(this.value !== ''){
|
||||||
|
personnelStatusRow.find(".nowPersonnelStatusBtn")[0].className = "btn btn-sm btn-success nowPersonnelStatusBtn";
|
||||||
|
$.ajax({
|
||||||
|
url: '/faisp/selectPersonnelStatus',
|
||||||
|
type: 'GET',
|
||||||
|
data: {year: $("#year").val(), ogCd: this.value},
|
||||||
|
dataType:"json",
|
||||||
|
success: function(data){
|
||||||
|
personnelStatusRow.find(".jt007Max").val(data.jt007Max);
|
||||||
|
personnelStatusRow.find(".jt007Now").val(data.jt007Now);
|
||||||
|
personnelStatusRow.find(".jt006Max").val(data.jt006Max);
|
||||||
|
personnelStatusRow.find(".jt006Now").val(data.jt006Now);
|
||||||
|
personnelStatusRow.find(".jt005Max").val(data.jt005Max);
|
||||||
|
personnelStatusRow.find(".jt005Now").val(data.jt005Now);
|
||||||
|
personnelStatusRow.find(".jt004Max").val(data.jt004Max);
|
||||||
|
personnelStatusRow.find(".jt004Now").val(data.jt004Now);
|
||||||
|
personnelStatusRow.find(".jt003Max").val(data.jt003Max);
|
||||||
|
personnelStatusRow.find(".jt003Now").val(data.jt003Now);
|
||||||
|
personnelStatusRow.find(".jt002Max").val(data.jt002Max);
|
||||||
|
personnelStatusRow.find(".jt002Now").val(data.jt002Now);
|
||||||
|
personnelStatusRow.find(".jt001Max").val(data.jt001Max);
|
||||||
|
personnelStatusRow.find(".jt001Now").val(data.jt001Now);
|
||||||
|
},
|
||||||
|
error:function(){
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
personnelStatusRow.find(".nowPersonnelStatusBtn")[0].className = "btn btn-sm btn-success nowPersonnelStatusBtn disabled";
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '.nowPersonnelStatusBtn', function (){
|
||||||
|
const personnelStatusRow = $(this).parents(".personnelStatusRow");
|
||||||
|
$.ajax({
|
||||||
|
url: '/faisp/nowPersonnelStatus',
|
||||||
|
type: 'GET',
|
||||||
|
data: {ogCd: personnelStatusRow.find(".ogCd").val()},
|
||||||
|
dataType:"json",
|
||||||
|
success: function(data){
|
||||||
|
if(data === null){
|
||||||
|
alert("결과가 없습니다.")
|
||||||
|
}else{
|
||||||
|
personnelStatusRow.find(".jt007Now").val(data.jt007Now);
|
||||||
|
personnelStatusRow.find(".jt006Now").val(data.jt006Now);
|
||||||
|
personnelStatusRow.find(".jt005Now").val(data.jt005Now);
|
||||||
|
personnelStatusRow.find(".jt004Now").val(data.jt004Now);
|
||||||
|
personnelStatusRow.find(".jt003Now").val(data.jt003Now);
|
||||||
|
personnelStatusRow.find(".jt002Now").val(data.jt002Now);
|
||||||
|
personnelStatusRow.find(".jt001Now").val(data.jt001Now);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error:function(){
|
||||||
|
alert("조회에 실패하였습니다.")
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '#saveBtn', function (){
|
||||||
|
if($(".ogCd").length===0){
|
||||||
|
alert("저장할 항목이 없습니다.")
|
||||||
|
}else{
|
||||||
|
if(personnelStatusOgCdCheck()){
|
||||||
|
if(confirm("저장하시겠습니까?")){
|
||||||
|
contentFade("in");
|
||||||
|
const personnelStatusList = [];
|
||||||
|
$.each($(".personnelStatusRow"), function(idx, personnelStatus){
|
||||||
|
const row = $(personnelStatus);
|
||||||
|
personnelStatusList.push({});
|
||||||
|
personnelStatusList[idx].year = $("#year").val();
|
||||||
|
personnelStatusList[idx].ogCd = row.find(".ogCd").val()
|
||||||
|
personnelStatusList[idx].jt007Max = row.find(".jt007Max").val()
|
||||||
|
personnelStatusList[idx].jt007Now = row.find(".jt007Now").val()
|
||||||
|
personnelStatusList[idx].jt006Max = row.find(".jt006Max").val()
|
||||||
|
personnelStatusList[idx].jt006Now = row.find(".jt006Now").val()
|
||||||
|
personnelStatusList[idx].jt005Max = row.find(".jt005Max").val()
|
||||||
|
personnelStatusList[idx].jt005Now = row.find(".jt005Now").val()
|
||||||
|
personnelStatusList[idx].jt004Max = row.find(".jt004Max").val()
|
||||||
|
personnelStatusList[idx].jt004Now = row.find(".jt004Now").val()
|
||||||
|
personnelStatusList[idx].jt003Max = row.find(".jt003Max").val()
|
||||||
|
personnelStatusList[idx].jt003Now = row.find(".jt003Now").val()
|
||||||
|
personnelStatusList[idx].jt002Max = row.find(".jt002Max").val()
|
||||||
|
personnelStatusList[idx].jt002Now = row.find(".jt002Now").val()
|
||||||
|
personnelStatusList[idx].jt001Max = row.find(".jt001Max").val()
|
||||||
|
personnelStatusList[idx].jt001Now = row.find(".jt001Now").val()
|
||||||
|
})
|
||||||
|
$.ajax({
|
||||||
|
type : 'POST',
|
||||||
|
data : JSON.stringify(personnelStatusList),
|
||||||
|
url : "/faisp/savePersonnelStatus",
|
||||||
|
contentType: 'application/json',
|
||||||
|
beforeSend: function (xhr){
|
||||||
|
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||||
|
},
|
||||||
|
success : function() {
|
||||||
|
alert("저장되었습니다.");
|
||||||
|
contentFade("out");
|
||||||
|
location.reload();
|
||||||
|
},
|
||||||
|
error : function(xhr, status) {
|
||||||
|
alert("저장에 실패하였습니다.");
|
||||||
|
contentFade("out");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
function personnelStatusOgCdCheck(){
|
||||||
|
let flag = true;
|
||||||
|
$.each($(".ogCd"), function(idx, selectBox){
|
||||||
|
if($(selectBox).val()===''){
|
||||||
|
|
||||||
|
flag = false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if(!flag){
|
||||||
|
alert("관서가 지정되지 않은 항목이 있습니다.")
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="ko">
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<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>
|
||||||
<div class="col-4">
|
<div class="col-4">
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
<div class="col-12 card text-center">
|
<div class="col-12 card text-center">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<form id="searchFm" method="get" th:action="@{/faisp/personnelStatus}">
|
<form id="searchFm" method="get" th:action="@{/faisp/personnelStatus}">
|
||||||
<div class="row justify-content-start pe-3 py-1">
|
<div class="row justify-content-between py-1">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<select class="form-select" name="year" id="year">
|
<select class="form-select" name="year" id="year">
|
||||||
<th:block th:each="year : ${#numbers.sequence(2020, 2040)}">
|
<th:block th:each="year : ${#numbers.sequence(2020, 2040)}">
|
||||||
|
|
@ -22,6 +22,9 @@
|
||||||
</th:block>
|
</th:block>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-auto">
|
||||||
|
<button type="button" class="btn btn-sm btn-primary" id="personnelStatusEditModalBtn" th:if="${accessAuth ne 'ACC001'}">등록</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<div class="row justify-content-start">
|
<div class="row justify-content-start">
|
||||||
|
|
@ -50,13 +53,23 @@
|
||||||
</th:block>
|
</th:block>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>cnt</th>
|
<th th:text="${statusSummary.sumMax}"></th>
|
||||||
<th>cnt</th>
|
<th th:text="${statusSummary.sumNow}"></th>
|
||||||
<th>cnt</th>
|
<th th:text="${statusSummary.sumNow-statusSummary.sumMax}" th:classappend="${(statusSummary.sumNow-statusSummary.sumMax)>=0?'text-primary':'text-danger'}"></th>
|
||||||
<th:block th:each="code:${jtList}">
|
<th th:text="${statusSummary.jt007Max}"></th>
|
||||||
<th>cnt</th>
|
<th th:text="${statusSummary.jt007Now}"></th>
|
||||||
<th>cnt</th>
|
<th th:text="${statusSummary.jt006Max}"></th>
|
||||||
</th:block>
|
<th th:text="${statusSummary.jt006Now}"></th>
|
||||||
|
<th th:text="${statusSummary.jt005Max}"></th>
|
||||||
|
<th th:text="${statusSummary.jt005Now}"></th>
|
||||||
|
<th th:text="${statusSummary.jt004Max}"></th>
|
||||||
|
<th th:text="${statusSummary.jt004Now}"></th>
|
||||||
|
<th th:text="${statusSummary.jt003Max}"></th>
|
||||||
|
<th th:text="${statusSummary.jt003Now}"></th>
|
||||||
|
<th th:text="${statusSummary.jt002Max}"></th>
|
||||||
|
<th th:text="${statusSummary.jt002Now}"></th>
|
||||||
|
<th th:text="${statusSummary.jt001Max}"></th>
|
||||||
|
<th th:text="${statusSummary.jt001Now}"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="table-group-divider">
|
<tbody class="table-group-divider">
|
||||||
|
|
@ -69,29 +82,24 @@
|
||||||
<td th:text="${status.sumMax}"></td>
|
<td th:text="${status.sumMax}"></td>
|
||||||
<td th:text="${status.sumNow}"></td>
|
<td th:text="${status.sumNow}"></td>
|
||||||
<td th:text="${status.sumNow-status.sumMax}" th:classappend="${status.sumNow-status.sumMax>0?'text-primary':'text-danger'}"></td>
|
<td th:text="${status.sumNow-status.sumMax}" th:classappend="${status.sumNow-status.sumMax>0?'text-primary':'text-danger'}"></td>
|
||||||
<th th:text="${status.jt007Max}"></th>
|
<td th:text="${status.jt007Max}"></td>
|
||||||
<th th:text="${status.jt007Now}"></th>
|
<td th:text="${status.jt007Now}"></td>
|
||||||
<th th:text="${status.jt006Max}"></th>
|
<td th:text="${status.jt006Max}"></td>
|
||||||
<th th:text="${status.jt006Now}"></th>
|
<td th:text="${status.jt006Now}"></td>
|
||||||
<th th:text="${status.jt005Max}"></th>
|
<td th:text="${status.jt005Max}"></td>
|
||||||
<th th:text="${status.jt005Now}"></th>
|
<td th:text="${status.jt005Now}"></td>
|
||||||
<th th:text="${status.jt004Max}"></th>
|
<td th:text="${status.jt004Max}"></td>
|
||||||
<th th:text="${status.jt004Now}"></th>
|
<td th:text="${status.jt004Now}"></td>
|
||||||
<th th:text="${status.jt003Max}"></th>
|
<td th:text="${status.jt003Max}"></td>
|
||||||
<th th:text="${status.jt003Now}"></th>
|
<td th:text="${status.jt003Now}"></td>
|
||||||
<th th:text="${status.jt002Max}"></th>
|
<td th:text="${status.jt002Max}"></td>
|
||||||
<th th:text="${status.jt002Now}"></th>
|
<td th:text="${status.jt002Now}"></td>
|
||||||
<th th:text="${status.jt001Max}"></th>
|
<td th:text="${status.jt001Max}"></td>
|
||||||
<th th:text="${status.jt001Now}"></th>
|
<td th:text="${status.jt001Now}"></td>
|
||||||
<td th:text="${#temporals.format(status.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
<td th:text="${#temporals.format(status.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="row justify-content-end">
|
|
||||||
<div class="col-auto">
|
|
||||||
<button type="button" class="btn btn-sm btn-primary">등록</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -102,9 +110,47 @@
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div class="modal fade" id="personnelStatusEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="personnelStatusEditModalLabel" aria-hidden="true">
|
<div class="modal fade" id="personnelStatusEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="personnelStatusEditModalLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog modal-lg modal-dialog-scrollable">
|
<div class="modal-dialog modal-xxl modal-dialog-scrollable">
|
||||||
<div class="modal-content" id="personnelStatusEditModalContent">
|
<div class="modal-content" id="personnelStatusEditModalContent">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="personnelStatusEditModalLabel">정원/현원 현황 등록</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row text-center justify-content-around">
|
||||||
|
<div class="col-1">관서</div>
|
||||||
|
<th:block th:each="code:${jtList}">
|
||||||
|
<div class="col-1">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 px-0" th:text="${code.itemValue}"></div>
|
||||||
|
<div class="col-6 px-0">정원</div>
|
||||||
|
<div class="col-6 px-0">현원</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</th:block>
|
||||||
|
<div class="col-2"></div>
|
||||||
|
</div>
|
||||||
|
<div class="row" id="personnelStatusEditDiv">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="row justify-content-center pt-3">
|
||||||
|
<div class="col-auto">
|
||||||
|
<button type="button" class="btn btn-sm btn-primary" id="personnelStatusAddBtn">추가</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||||
|
<button type="button" class="btn btn-primary" id="saveBtn">저장</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<div class="col-12 pb-1 personnelStatusRow">
|
||||||
|
<div class="row justify-content-around">
|
||||||
|
<div class="col-1 px-0">
|
||||||
|
<select class="form-select form-select-sm ogCd">
|
||||||
|
<option value="">선택</option>
|
||||||
|
<th:block th:each="code:${session.commonCode.get('OG')}">
|
||||||
|
<th:block th:if="${#lists.contains(mgtOrganList, code.itemCd)}">
|
||||||
|
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="col-1 px-0">
|
||||||
|
<div class="input-group w-auto">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt007Max" min="0">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt007Now" min="0">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-1 px-0">
|
||||||
|
<div class="input-group w-auto">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt006Max" min="0">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt006Now" min="0">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-1 px-0">
|
||||||
|
<div class="input-group w-auto">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt005Max" min="0">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt005Now" min="0">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-1 px-0">
|
||||||
|
<div class="input-group w-auto">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt004Max" min="0">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt004Now" min="0">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-1 px-0">
|
||||||
|
<div class="input-group w-auto">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt003Max" min="0">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt003Now" min="0">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-1 px-0">
|
||||||
|
<div class="input-group w-auto">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt002Max" min="0">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt002Now" min="0">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-1 px-0">
|
||||||
|
<div class="input-group w-auto">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt001Max" min="0">
|
||||||
|
<input type="number" class="form-control form-select-sm statusInput jt001Now" min="0">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-2 text-center">
|
||||||
|
<button type="button" class="btn btn-sm btn-success nowPersonnelStatusBtn disabled">현원 불러오기</button>
|
||||||
|
<button type="button" class="btn btn-sm btn-danger personnelStatusRemoveBtn">삭제</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue