diff --git a/src/main/java/com/dbnt/faisp/main/authMgt/AuthMgtController.java b/src/main/java/com/dbnt/faisp/main/authMgt/AuthMgtController.java index 0b8a9be7..ddde4878 100644 --- a/src/main/java/com/dbnt/faisp/main/authMgt/AuthMgtController.java +++ b/src/main/java/com/dbnt/faisp/main/authMgt/AuthMgtController.java @@ -43,9 +43,8 @@ public class AuthMgtController { } @PostMapping("/saveAuth") - public String saveAuth(@RequestBody AuthMgt authMgt){ + public void saveAuth(@RequestBody AuthMgt authMgt){ authMgtService.saveAuth(authMgt); - return ""; } } diff --git a/src/main/java/com/dbnt/faisp/main/fpiMgt/affair/AffairController.java b/src/main/java/com/dbnt/faisp/main/fpiMgt/affair/AffairController.java index 0aa23bc2..cf763ed3 100644 --- a/src/main/java/com/dbnt/faisp/main/fpiMgt/affair/AffairController.java +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/affair/AffairController.java @@ -57,6 +57,10 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관 }else { affairBoard.setRatingOrgan(loginUser.getOgCd()); switch (apprvAuth) { + case "APC004APC001": // 계장대행+부장 + case "APC003APC002": // 계장+부장대행 + affairBoard.setQueryType("normalStayList"); + break; case "APC004": // 계장대행 case "APC003": // 계장 // 결재대기 문서 조회 affairBoard.setAffairStatus("DST002"); @@ -75,6 +79,10 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관 }else{ affairBoard.setRatingOrgan(loginUser.getOgCd()); switch (apprvAuth) { + case "APC004APC001": // 계장대행+부장 + case "APC003APC002": // 계장+부장대행 + affairBoard.setQueryType("normalCommitList"); + break; case "APC004": // 계장대행 case "APC003": // 계장 // 계장반려, 계장승인 문서 조회 affairBoard.setQueryType("sectionCommitList"); diff --git a/src/main/java/com/dbnt/faisp/main/fpiMgt/monitoring/model/MonitoringReport.java b/src/main/java/com/dbnt/faisp/main/fpiMgt/monitoring/model/MonitoringReport.java index e7e4435f..b2cc9fb7 100644 --- a/src/main/java/com/dbnt/faisp/main/fpiMgt/monitoring/model/MonitoringReport.java +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/monitoring/model/MonitoringReport.java @@ -50,6 +50,8 @@ public class MonitoringReport extends FileInfo { @Transient private MultipartFile file; + @Transient + private Boolean saveFlag; @Embeddable diff --git a/src/main/java/com/dbnt/faisp/main/fpiMgt/monitoring/service/MonitoringService.java b/src/main/java/com/dbnt/faisp/main/fpiMgt/monitoring/service/MonitoringService.java index f6e69750..bbae358c 100644 --- a/src/main/java/com/dbnt/faisp/main/fpiMgt/monitoring/service/MonitoringService.java +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/monitoring/service/MonitoringService.java @@ -38,11 +38,13 @@ import com.dbnt.faisp.main.fpiMgt.monitoring.repository.MonitoringResultInfoRepo import com.dbnt.faisp.main.fpiMgt.monitoring.repository.MonitoringResultRepository; import com.dbnt.faisp.main.userInfo.model.UserAlarm; import com.dbnt.faisp.main.userInfo.service.UserAlarmService; +import com.dbnt.faisp.util.Utils; import lombok.RequiredArgsConstructor; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItem; import org.apache.commons.io.IOUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -240,33 +242,45 @@ public class MonitoringService extends BaseService { private void saveReportList(Integer mrKey, List reportList){ //파일삭제 List fileList = monitoringReportRepository.findByMrKey(mrKey); - if(fileList != null) { - for(MonitoringReport file: fileList){ - if(file.getOrigNm() != null) { - deleteStoredFile(new File(file.getSavePath(), file.getConvNm())); - } - } - } - - monitoringReportRepository.deleteByMrKey(mrKey); - for(MonitoringReport info: reportList){ - if(info.getFile() != null) { - MultipartFile file = info.getFile(); - String saveName = UUID.randomUUID().toString(); - String path = locationPath+monitoringPath; - saveFile(file, new File(path+File.separator+saveName)); - String originalFilename = file.getOriginalFilename(); - int extnIdx = originalFilename.lastIndexOf("."); - info.setOrigNm(originalFilename.substring(0, extnIdx)); - info.setFileExtn(originalFilename.substring(extnIdx+1)); - info.setConvNm(saveName); - info.setFileSize(calculationSize(file.getSize())); - info.setSavePath(path); - } - info.setMrKey(mrKey); - monitoringReportRepository.save(info); - } - } + for(MonitoringReport savedReport : fileList){ + for(MonitoringReport editReport: reportList){ + if(!Utils.isEmpty(editReport.getConvNm()) && editReport.getConvNm().equals(savedReport.getConvNm())){ + savedReport.setSaveFlag(false); + int temp = editReport.getInfoSeq(); + BeanUtils.copyProperties(savedReport, editReport); + editReport.setInfoSeq(temp); + break; + }else{ + savedReport.setSaveFlag(true); + } + } + } + for(MonitoringReport savedReport: fileList){ + if(savedReport.getOrigNm() != null && savedReport.getSaveFlag()) { + deleteStoredFile(new File(savedReport.getSavePath(), savedReport.getConvNm())); + } + if(savedReport.getSaveFlag()){ + monitoringReportRepository.deleteById(new MonitoringReportId(savedReport.getMrKey(), savedReport.getInfoSeq())); + } + } + String path = locationPath+monitoringPath; + for(MonitoringReport report: reportList){ + if(report.getFile() != null && report.getMrKey()==null) { + MultipartFile file = report.getFile(); + String saveName = UUID.randomUUID().toString(); + saveFile(file, new File(path+File.separator+saveName)); + report.setConvNm(saveName); + String originalFilename = file.getOriginalFilename(); + int extnIdx = originalFilename.lastIndexOf("."); + report.setOrigNm(originalFilename.substring(0, extnIdx)); + report.setFileExtn(originalFilename.substring(extnIdx+1)); + report.setFileSize(calculationSize(file.getSize())); + report.setSavePath(path); + } + report.setMrKey(mrKey); + } + monitoringReportRepository.saveAll(reportList); + } public List selectResultList(MonitoringResult mr) { return monitoringMapper.selectResultList(mr); diff --git a/src/main/resources/static/js/authMgt/authMgt.js b/src/main/resources/static/js/authMgt/authMgt.js index bacadeed..c90c350a 100644 --- a/src/main/resources/static/js/authMgt/authMgt.js +++ b/src/main/resources/static/js/authMgt/authMgt.js @@ -2,11 +2,14 @@ $(document).on('click', '.userInfoTr', function (){ $.ajax({ url: '/authMgt/authEditModal', - data: {userSeq: Number($(this).find(".userSeq").val())}, + data: { + userSeq: Number($(this).find(".userSeq").val()), + userNm: $(this).find(".userNm").val() + }, type: 'GET', dataType:"html", success: function(html){ - $("#configInfo").empty().append(html) + $("#authEditModalContent").empty().append(html) $("#accessTab").click(); $("#authEditModal").modal('show'); }, @@ -16,42 +19,104 @@ $(document).on('click', '.userInfoTr', function (){ }); }) -$(document).on('click', '.radioTd', function (){ - $(this).find('input').prop('checked', true); -}) $(document).on('click', '.selectTh', function (){ const type = $(this).attr("data-type"); const target = $(this).attr("data-target"); if(target){ + $("."+type+"RadioEmpty").prop("checked", false) $("."+type+"Radio"+target).prop("checked", true) + switch (target) { + case "APC004": + $(".approvalRadioAPC003").prop("checked", false); + $(".approvalRadioAPC002").prop("checked", false); + break; + case "APC003": + $(".approvalRadioAPC004").prop("checked", false); + $(".approvalRadioAPC001").prop("checked", false); + break; + case "APC002": + $(".approvalRadioAPC004").prop("checked", false); + $(".approvalRadioAPC001").prop("checked", false); + break; + case "APC001": + $(".approvalRadioAPC003").prop("checked", false); + $(".approvalRadioAPC002").prop("checked", false); + break; + } }else{ + $(".approvalRadio").prop("checked", false) $("."+type+"RadioEmpty").prop("checked", true) } }) +$(document).on('click', '.radioTd', function (event){ + const chkbox = $(this).find('input'); + if(event.target.type !== "checkbox"){ + chkbox.prop('checked', !chkbox[0].checked); + } + apprvChkboxControl(chkbox[0]); +}) +$(document).on('change', '.approvalRadioEmpty', function (){ + apprvChkboxControl(this); +}) +$(document).on('change', '.approvalRadio', function (){ + apprvChkboxControl(this); +}) + +function apprvChkboxControl(target){ + if(target.className === "approvalRadioEmpty"){ + if(target.checked){ + $(target).parents('tr').find('.approvalRadio').prop("checked", false); + } + }else{ + if(target.checked){ + const tr = $(target).parents('tr'); + tr.find('.approvalRadioEmpty').prop("checked", false); + switch ($(target).val()) { + case "APC004": + tr.find(".approvalRadioAPC003").prop("checked", false); + tr.find(".approvalRadioAPC002").prop("checked", false); + break; + case "APC003": + tr.find(".approvalRadioAPC004").prop("checked", false); + tr.find(".approvalRadioAPC001").prop("checked", false); + break; + case "APC002": + tr.find(".approvalRadioAPC004").prop("checked", false); + tr.find(".approvalRadioAPC001").prop("checked", false); + break; + case "APC001": + tr.find(".approvalRadioAPC003").prop("checked", false); + tr.find(".approvalRadioAPC002").prop("checked", false); + break; + } + } + } +} + $(document).on('click', '#saveAuthBtn', function (){ if(confirm("저장하시겠습니까?")){ contentFade("in"); const userSeq = Number($("#userSeq").val()); const accessConfigList = [] $("#accessEditTable").find('tbody').children().each(function (idx, tr){ - accessConfigList.push( - { - userSeq: userSeq, - menuKey: Number($(this).find('.menuKey').val()), - accessAuth: $(this).find('input:checked').val() - } - ) + accessConfigList.push({ + userSeq: userSeq, + menuKey: Number($(this).find('.menuKey').val()), + accessAuth: $(this).find('input:checked').val() + }) }) const approvalConfigList = [] - $("#approvalEditTable").find('input:checked').each(function (idx, tr){ - approvalConfigList.push( - { - userSeq: userSeq, - menuKey: Number($(this).parents('tr').find('.menuKey').val()), - approvalAuth: $(this).val() - } - ) + $("#approvalEditTable").find('tbody').children().each(function (idx, tr){ + let apprvAuth = ""; + $.each($(this).find("input:checked"), function (idx, input){ + apprvAuth+=input.value; + }) + approvalConfigList.push({ + userSeq: userSeq, + menuKey: Number($(this).find('.menuKey').val()), + approvalAuth: apprvAuth + }) }) const authList = {}; authList.accessConfigList = accessConfigList; diff --git a/src/main/resources/static/js/igActivities/fpiMgt/monitoring/result.js b/src/main/resources/static/js/igActivities/fpiMgt/monitoring/result.js index c0ccf285..e5091329 100644 --- a/src/main/resources/static/js/igActivities/fpiMgt/monitoring/result.js +++ b/src/main/resources/static/js/igActivities/fpiMgt/monitoring/result.js @@ -227,6 +227,7 @@ function saveResult(mrState){ formData.append('reportList['+(idx)+'].contactDate', $(div).find(".contactDate").val()); formData.append('reportList['+(idx)+'].writeDate', $(div).find(".writeDate").val()); formData.append('reportList['+(idx)+'].reportTitle', $(div).find(".reportTitle").val()); + formData.append('reportList['+(idx)+'].convNm', $(div).find(".convNm").val()); if($(div).find(".file").val() != ""){ formData.append('reportList['+(idx)+'].file', $(div).find(".file")[0].files[0]); } diff --git a/src/main/resources/templates/adminPage/authMgt/authEditModal.html b/src/main/resources/templates/adminPage/authMgt/authEditModal.html index 6c405805..bef45ef6 100644 --- a/src/main/resources/templates/adminPage/authMgt/authEditModal.html +++ b/src/main/resources/templates/adminPage/authMgt/authEditModal.html @@ -1,96 +1,110 @@ - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
대분류중분류소분류해제
- - - -
+ -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
대분류중분류소분류해제
.. - - - -
+ + \ No newline at end of file diff --git a/src/main/resources/templates/adminPage/authMgt/authMgt.html b/src/main/resources/templates/adminPage/authMgt/authMgt.html index 72f13cd8..803bbd64 100644 --- a/src/main/resources/templates/adminPage/authMgt/authMgt.html +++ b/src/main/resources/templates/adminPage/authMgt/authMgt.html @@ -67,7 +67,6 @@ - @@ -79,9 +78,7 @@ - +
소속 부서 계급
- - @@ -139,27 +136,7 @@ diff --git a/src/main/resources/templates/igActivities/fpiMgt/affair/affairViewModal.html b/src/main/resources/templates/igActivities/fpiMgt/affair/affairViewModal.html index aeac7570..7d41ea20 100644 --- a/src/main/resources/templates/igActivities/fpiMgt/affair/affairViewModal.html +++ b/src/main/resources/templates/igActivities/fpiMgt/affair/affairViewModal.html @@ -221,8 +221,7 @@
- +
@@ -241,12 +240,11 @@
+ th:if="${(#strings.contains(apprvAuth, 'APC001') or #strings.contains(apprvAuth, 'APC002')) and affair.affairStatus eq 'DST004' and affair.rateList.get(0).ratingOrgan eq userOrgan}">
- +
diff --git a/src/main/resources/templates/igActivities/fpiMgt/monitoring/resultEditModal.html b/src/main/resources/templates/igActivities/fpiMgt/monitoring/resultEditModal.html index 4a2265ae..85572c43 100644 --- a/src/main/resources/templates/igActivities/fpiMgt/monitoring/resultEditModal.html +++ b/src/main/resources/templates/igActivities/fpiMgt/monitoring/resultEditModal.html @@ -320,10 +320,10 @@
- - +
+
- +
+