diff --git a/src/main/java/com/dbnt/faisp/main/faRpt/FaRptController.java b/src/main/java/com/dbnt/faisp/main/faRpt/FaRptController.java index bbf8ce0e..4a336dba 100644 --- a/src/main/java/com/dbnt/faisp/main/faRpt/FaRptController.java +++ b/src/main/java/com/dbnt/faisp/main/faRpt/FaRptController.java @@ -95,6 +95,14 @@ public class FaRptController { return mav; } + @GetMapping("/faRptReadUserModal") + public ModelAndView faRptReadUserModal(@AuthenticationPrincipal UserInfo loginUser, FaRptBoard faRptBoard){ + ModelAndView mav = new ModelAndView("faRpt/faRptReadUserModal"); + faRptBoard = faRptService.selectFaRptBoard(faRptBoard.getFaRptKey(), null); + mav.addObject("faRpt", faRptBoard); + return mav; + } + @GetMapping("/faRptViewModal") public ModelAndView faRptViewModal(@AuthenticationPrincipal UserInfo loginUser, FaRptBoard faRptBoard){ ModelAndView mav = new ModelAndView("faRpt/faRptViewModal"); @@ -122,6 +130,11 @@ public class FaRptController { return mav; } + @PostMapping("/updateReadUser") + public void updateReadUser(FaRptBoard faRptBoard){ + faRptService.updateReadUser(faRptBoard.getFaRptKey(), faRptBoard.getReadUserList()); + } + @PostMapping("/deleteFaRpt") @ResponseBody public void deleteFaRpt (@RequestBody FaRptBoard faRpt){ diff --git a/src/main/java/com/dbnt/faisp/main/faRpt/service/FaRptService.java b/src/main/java/com/dbnt/faisp/main/faRpt/service/FaRptService.java index fc5f8b04..ea1ccc92 100644 --- a/src/main/java/com/dbnt/faisp/main/faRpt/service/FaRptService.java +++ b/src/main/java/com/dbnt/faisp/main/faRpt/service/FaRptService.java @@ -74,7 +74,7 @@ public class FaRptService extends BaseService { faRptBoard.setReadUserList(faRptReadUserRepository.findByFaRptKey(faRptKey)); if(faRptBoard.getStatus().equals("DST007")){ for(FaRptReadUser readUser: faRptBoard.getReadUserList()){ - if(readUser.getUserSeq().equals(userSeq)){ + if(readUser.getUserSeq().equals(userSeq) && !readUser.getReadYn().equals("T")){ readUser.setReadYn("T"); faRptReadUserRepository.save(readUser); } @@ -87,16 +87,30 @@ public class FaRptService extends BaseService { private void saveFaRptReadUser(Integer faRptKey, List readUserList) { - faRptReadUserRepository.deleteByFaRptKey(faRptKey); + List saveReadUserList = faRptReadUserRepository.findByFaRptKey(faRptKey); + List alarmList = new ArrayList<>(); LocalDateTime dateTime = LocalDateTime.now(); for(FaRptReadUser readUser: readUserList){ readUser.setFaRptKey(faRptKey); - UserAlarm alarm = userAlarmService.makeUserAlarm - (dateTime, readUser.getUserSeq(), faRptKey, 1, "외사정보보고에 수신 문서가 있습니다."); - alarmList.add(alarm); + readUser.setReadYn("F"); + boolean savedFlag = false; + for(FaRptReadUser savedUser: saveReadUserList){ + if(savedUser.getUserSeq().equals(readUser.getUserSeq())){ + readUser.setReadYn(savedUser.getReadYn()); + savedFlag = true; + break; + } + } + if(!savedFlag){ + UserAlarm alarm = userAlarmService.makeUserAlarm + (dateTime, readUser.getUserSeq(), faRptKey, 1, "외사정보보고에 수신 문서가 있습니다."); + alarmList.add(alarm); + } } userAlarmService.saveAlarmList(alarmList); + + faRptReadUserRepository.deleteByFaRptKey(faRptKey); faRptReadUserRepository.saveAll(readUserList); } @@ -150,4 +164,9 @@ public class FaRptService extends BaseService { public void deleteFaRpt(Integer faRptKey) { faRptBoardRepository.bulkModifyingByFaRptKeyToStatus(faRptKey, "DST008"); } + + @Transactional + public void updateReadUser(Integer faRptKey, List readUserList) { + saveFaRptReadUser(faRptKey, readUserList); + } } \ No newline at end of file diff --git a/src/main/resources/mybatisMapper/FaRptMapper.xml b/src/main/resources/mybatisMapper/FaRptMapper.xml index ecb22629..672dc271 100644 --- a/src/main/resources/mybatisMapper/FaRptMapper.xml +++ b/src/main/resources/mybatisMapper/FaRptMapper.xml @@ -70,7 +70,7 @@ group by fa_rpt_key) b on a.fa_rpt_key = b.fa_rpt_key left outer join (select fa_rpt_key, - count(read_yn='T') as readCnt, + sum(case when read_yn='T' then 1 else 0 end) as readCnt, count(*) as userCnt from fa_rpt_read_user group by fa_rpt_key) c diff --git a/src/main/resources/static/js/faRpt/faRpt.js b/src/main/resources/static/js/faRpt/faRpt.js index 094490a5..442f0f4b 100644 --- a/src/main/resources/static/js/faRpt/faRpt.js +++ b/src/main/resources/static/js/faRpt/faRpt.js @@ -71,6 +71,33 @@ $(document).on('click', '#saveTempBtn', function (){ saveFaRpt('DST001') }) +$(document).on('click', '#saveFaRptReadUserBtn', function () { + const formData = new FormData($("#faRptReadUserForm")[0]); + $.each($(".readUserRow"), function (idx, row){ + formData.append('readUserList['+idx+'].userSeq', $(row).find('.userSeq').val()); + formData.append('readUserList['+idx+'].ogCd', $(row).find('.ogCd').val()); + formData.append('readUserList['+idx+'].ofcCd', $(row).find('.ofcCd').val()); + formData.append('readUserList['+idx+'].titleCd', $(row).find('.titleCd').val()); + formData.append('readUserList['+idx+'].userNm', $(row).find('.userNm').val()); + }); + contentFade("in") + $.ajax({ + type : 'POST', + url : "/faRpt/updateReadUser", + data : formData, + processData: false, + contentType: false, + success : function(html) { + contentFade("out") + alert("저장되었습니다.") + location.reload(); + }, + error : function(xhr, status) { + + } + }) +}) + $(document).on('click', '.faRptTr', function (){ const chkBox = $(this).find(".rowChkBox"); if(chkBox.length>0){ @@ -91,6 +118,10 @@ $(document).on('click', '#reSendBtn', function (){ } getFaRptEditModal(faRpt); }) +$(document).on('click', '#addReceiveUserBtn', function (){ + $("#faRptViewModal").modal('hide'); + getFaRptReadUserModal($(this).attr("data-farptkey")); +}) $(document).on('click', '#deleteBtn', function (){ if(confirm("삭제하시겠습니까?\n되돌릴 수 없습니다.")){ @@ -122,7 +153,8 @@ function getFaRptViewModal(faRptKey){ type: 'GET', dataType:"html", success: function(html){ - $("#faRptViewBody").empty().append(html) + $(".mainModalContent").empty() + $("#faRptViewBody").append(html) $("#faRptViewModal").modal('show'); }, error:function(e){ @@ -138,7 +170,8 @@ function getFaRptEditModal(faRpt){ type: 'GET', dataType:"html", success: function(html){ - $("#faRptEditModalContent").empty().append(html) + $(".mainModalContent").empty() + $("#faRptEditModalContent").append(html) setUploadDiv(); setEditor('editor', '500'); $("#faRptEditModal").modal('show'); @@ -148,6 +181,23 @@ function getFaRptEditModal(faRpt){ } }); } +function getFaRptReadUserModal(faRptKey){ + $.ajax({ + url: '/faRpt/faRptReadUserModal', + data: {faRptKey: faRptKey}, + type: 'GET', + dataType:"html", + success: function(html){ + $(".mainModalContent").empty() + $("#faRptReadUserBody").append(html) + $("#faRptReadUserModal").modal('show'); + }, + error:function(e){ + ajaxErrorAction(e); + } + }); +} + function saveFaRpt(faRptState){ if(contentCheck()){ if(confirm("송신하시겠습니까?")){ diff --git a/src/main/resources/templates/faRpt/faRptBoard.html b/src/main/resources/templates/faRpt/faRptBoard.html index 03988840..6a308a56 100644 --- a/src/main/resources/templates/faRpt/faRptBoard.html +++ b/src/main/resources/templates/faRpt/faRptBoard.html @@ -177,14 +177,21 @@