From df73088cc7d6b582a939df1da414189943d584ea Mon Sep 17 00:00:00 2001 From: TaehunPark Date: Fri, 18 Nov 2022 08:59:50 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20SRI=EC=83=9D=EC=84=B1(=EC=9E=91?= =?UTF-8?q?=EC=97=85=EC=A4=91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dbnt/faisp/config/FileController.java | 5 + .../faisp/main/fpiMgt/sri/SriController.java | 125 +++++++++++ .../main/fpiMgt/sri/mapper/SriMapper.java | 19 ++ .../dbnt/faisp/main/fpiMgt/sri/model/Sri.java | 84 +++++++ .../faisp/main/fpiMgt/sri/model/SriFile.java | 56 +++++ .../main/fpiMgt/sri/model/SriReadUser.java | 53 +++++ .../sri/repository/SriFileRepository.java | 28 +++ .../sri/repository/SriReadUserRepository.java | 15 ++ .../fpiMgt/sri/repository/SriRepository.java | 12 + .../main/fpiMgt/sri/service/SriService.java | 138 ++++++++++++ .../resources/mybatisMapper/SriMapper.xml | 81 +++++++ .../static/js/igActivities/fpiMgt/sri/sri.js | 210 ++++++++++++++++++ .../resources/templates/sri/readUserRow.html | 28 +++ .../resources/templates/sri/sriBoard.html | 202 +++++++++++++++++ .../resources/templates/sri/sriEditModal.html | 125 +++++++++++ .../resources/templates/sri/sriViewModal.html | 137 ++++++++++++ 16 files changed, 1318 insertions(+) create mode 100644 src/main/java/com/dbnt/faisp/main/fpiMgt/sri/SriController.java create mode 100644 src/main/java/com/dbnt/faisp/main/fpiMgt/sri/mapper/SriMapper.java create mode 100644 src/main/java/com/dbnt/faisp/main/fpiMgt/sri/model/Sri.java create mode 100644 src/main/java/com/dbnt/faisp/main/fpiMgt/sri/model/SriFile.java create mode 100644 src/main/java/com/dbnt/faisp/main/fpiMgt/sri/model/SriReadUser.java create mode 100644 src/main/java/com/dbnt/faisp/main/fpiMgt/sri/repository/SriFileRepository.java create mode 100644 src/main/java/com/dbnt/faisp/main/fpiMgt/sri/repository/SriReadUserRepository.java create mode 100644 src/main/java/com/dbnt/faisp/main/fpiMgt/sri/repository/SriRepository.java create mode 100644 src/main/java/com/dbnt/faisp/main/fpiMgt/sri/service/SriService.java create mode 100644 src/main/resources/mybatisMapper/SriMapper.xml create mode 100644 src/main/resources/static/js/igActivities/fpiMgt/sri/sri.js create mode 100644 src/main/resources/templates/sri/readUserRow.html create mode 100644 src/main/resources/templates/sri/sriBoard.html create mode 100644 src/main/resources/templates/sri/sriEditModal.html create mode 100644 src/main/resources/templates/sri/sriViewModal.html diff --git a/src/main/java/com/dbnt/faisp/config/FileController.java b/src/main/java/com/dbnt/faisp/config/FileController.java index 3009c48a..ae16c01e 100644 --- a/src/main/java/com/dbnt/faisp/config/FileController.java +++ b/src/main/java/com/dbnt/faisp/config/FileController.java @@ -6,6 +6,7 @@ import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.SailorService; import com.dbnt.faisp.main.fpiMgt.affair.service.AffairService; import com.dbnt.faisp.main.fpiMgt.affairPlan.service.PlanService; import com.dbnt.faisp.main.fpiMgt.affairResult.service.ResultService; +import com.dbnt.faisp.main.fpiMgt.sri.service.SriService; import com.dbnt.faisp.main.ivsgtMgt.boardInvestigation.service.BoardInvestigationService; import com.dbnt.faisp.main.publicBoard.service.PublicBoardService; import lombok.RequiredArgsConstructor; @@ -40,6 +41,7 @@ public class FileController { private final ResultService resultService; private final BoardInvestigationService boardInvestigationService; private final FishingBoatService fishingBoatService; + private final SriService sriService; @Value("${file.dir}") protected String fileDir; @@ -138,6 +140,9 @@ public class FileController { case "sailor": downloadFile = fishingBoatService.selectSailorFile(parentKey, fileSeq); break; + case "sri": + downloadFile = sriService.selectFaSriFile(parentKey, fileSeq); + break; } return downloadFile; } diff --git a/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/SriController.java b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/SriController.java new file mode 100644 index 00000000..2005c0bb --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/SriController.java @@ -0,0 +1,125 @@ +package com.dbnt.faisp.main.fpiMgt.sri; + +import com.dbnt.faisp.main.authMgt.service.AuthMgtService; +import com.dbnt.faisp.main.codeMgt.service.CodeMgtService; +import com.dbnt.faisp.main.faRpt.model.FaRptBoard; +import com.dbnt.faisp.main.faRpt.model.FaRptReadUser; +import com.dbnt.faisp.main.faRpt.service.FaRptService; +import com.dbnt.faisp.main.fpiMgt.sri.model.Sri; +import com.dbnt.faisp.main.fpiMgt.sri.service.SriService; +import com.dbnt.faisp.main.userInfo.model.UserInfo; +import lombok.RequiredArgsConstructor; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/sri") +public class SriController { + private final FaRptService faRptService; + private final SriService sriService; + private final AuthMgtService authMgtService; + private final CodeMgtService codeMgtService; + + @GetMapping("/sriBoard") + public ModelAndView faRptBoard(@AuthenticationPrincipal UserInfo loginUser, Sri sri){ + ModelAndView mav = new ModelAndView("sri/sriBoard"); + + if(sri.getActiveTab()==null){ + sri.setActiveTab("send"); + } + mav.addObject("searchUrl", "/faRpt/faRptBoard"); + String accessAuth = authMgtService.selectAccessConfigList + (loginUser.getUserSeq(), "/sri/sriBoard").get(0).getAccessAuth(); + mav.addObject("accessAuth", accessAuth); + + if(sri.getActiveTab().equals("send")){ + sri.setWrtUserSeq(loginUser.getUserSeq()); + }else if(sri.getActiveTab().equals("receive")){ + sri.setStatus("DST007"); + sri.setReceiveUserSeq(loginUser.getUserSeq()); + }else if(sri.getActiveTab().equals("all") && accessAuth.equals("ACC003")){ + sri.setDownOrganCdList(loginUser.getDownOrganCdList()); + }else if(sri.getActiveTab().equals("all")){ + sri.setActiveTab("send"); + sri.setWrtUserSeq(loginUser.getUserSeq()); + } + if(accessAuth.equals("ACC003")){ + mav.addObject("mgtOrganList", loginUser.getDownOrganCdList()); + } + + sri.setQueryInfo(); + mav.addObject("SriList", sriService.selectSriList(sri)); + sri.setContentCnt(sriService.selectSriCnt(sri)); + sri.setPaginationInfo(); + + mav.addObject("searchParams", sri); + return mav; + } + + @GetMapping("/sriEditModal") + public ModelAndView faRptEditModal(@AuthenticationPrincipal UserInfo loginUser, Sri sri){ + ModelAndView mav = new ModelAndView("sri/sriEditModal"); + if(sri.getFaSriKey()!=null){ + //faRptBoard = faRptService.selectFaRptBoard(faRptBoard.getFaRptKey(), null); + }else{ + /* + if(faRptBoard.getRefKey()!=null){ + FaRptReadUser readUser = new FaRptReadUser(); + readUser.setUserSeq(faRptBoard.getWrtUserSeq()); + readUser.setOgCd(faRptBoard.getWrtOrgan()); + readUser.setOfcCd(faRptBoard.getWrtPart()); + readUser.setTitleCd(faRptBoard.getWrtUserGrd()); + readUser.setUserNm(faRptBoard.getWrtUserNm()); + faRptBoard.setReadUserList(new ArrayList<>()); + faRptBoard.getReadUserList().add(readUser); + } + */ + sri.setWrtUserSeq(loginUser.getUserSeq()); + sri.setWrtOrgan(loginUser.getOgCd()); + sri.setWrtPart(loginUser.getOfcCd()); + sri.setWrtTitle(loginUser.getTitleCd()); + sri.setWrtUserNm(loginUser.getUserNm()); + sri.setWrtDt(LocalDateTime.now()); + } + mav.addObject("SriCategoryList", codeMgtService.selectCodeMgtList("SRI","")); + mav.addObject("sri", sri); + return mav; + } + + @PostMapping("/selectedUserTable") + @ResponseBody + public ModelAndView selectedUserTable(@RequestBody List userList){ + ModelAndView mav = new ModelAndView("sri/readUserRow"); + mav.addObject("userList", userList); + return mav; + } + + @PostMapping("/saveSri") + public Integer saveFaRpt(Sri sri, + MultipartHttpServletRequest request, + @RequestParam(value = "fileSeq", required = false) List deleteFileSeq){ + sri.setMultipartFileList(request.getMultiFileMap().get("uploadFiles")); + return sriService.saveSriBoard(sri, deleteFileSeq); + } + + @GetMapping("/sriViewModal") + public ModelAndView faRptViewModal(@AuthenticationPrincipal UserInfo loginUser, Sri sri){ + ModelAndView mav = new ModelAndView("sri/sriViewModal"); + mav.addObject("FaSri", sriService.selectFaSriBoard(sri.getFaSriKey(), loginUser.getUserSeq())); + mav.addObject("userSeq",loginUser.getUserSeq()); + //메뉴권한 확인 + mav.addObject("accessAuth", authMgtService.selectAccessConfigList + (loginUser.getUserSeq(), "/sri/sriBoard").get(0).getAccessAuth()); + return mav; + } + + + +} diff --git a/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/mapper/SriMapper.java b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/mapper/SriMapper.java new file mode 100644 index 00000000..aefcbba8 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/mapper/SriMapper.java @@ -0,0 +1,19 @@ +package com.dbnt.faisp.main.fpiMgt.sri.mapper; + +import com.dbnt.faisp.main.fpiMgt.sri.model.Sri; + +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + + +@Mapper +public interface SriMapper { + + List selectSriList(Sri sri); + + Integer selectSriCnt(Sri sri); + + + +} diff --git a/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/model/Sri.java b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/model/Sri.java new file mode 100644 index 00000000..c8121704 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/model/Sri.java @@ -0,0 +1,84 @@ +package com.dbnt.faisp.main.fpiMgt.sri.model; + +import com.dbnt.faisp.config.BaseModel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.web.multipart.MultipartFile; + +import javax.persistence.*; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@Table(name = "fa_sri_board") +public class Sri extends BaseModel { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "fa_sri_key") + private Integer faSriKey; + @Column(name = "fa_sri_type") + private String faSriType; + @Column(name = "title") + private String title; + @Column(name = "content") + private String content; + @Column(name = "status") + private String status; + @Column(name = "fa_sri_edate") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate faSriEdate; + @Column(name = "wrt_organ") + private String wrtOrgan; + @Column(name = "wrt_part") + private String wrtPart; + @Column(name = "wrt_user_seq") + private Integer wrtUserSeq; + @Column(name = "wrt_title") + private String wrtTitle; + @Column(name = "wrt_user_nm") + private String wrtUserNm; + @Column(name = "wrt_dt") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") + private LocalDateTime wrtDt; + + @Transient + private Integer receiveUserSeq; + @Transient + private String activeTab; + @Transient + private Integer fileCnt; + @Transient + private Integer readCnt; + @Transient + private Integer userCnt; + @Transient + private List fileList; + @Transient + private List readUserList; + @Transient + private List multipartFileList; + +@Override +public String toString() { + return "Sri [faSriKey=" + faSriKey + ", faSriType=" + faSriType + ", title=" + title + ", content=" + content + + ", status=" + status + ", faSriEdate=" + faSriEdate + ", wrtOrgan=" + wrtOrgan + ", wrtPart=" + wrtPart + + ", wrtUserSeq=" + wrtUserSeq + ", wrtTitle=" + wrtTitle + ", wrtUserNm=" + wrtUserNm + ", wrtDt=" + wrtDt + + ", receiveUserSeq=" + receiveUserSeq + ", activeTab=" + activeTab + ", fileCnt=" + fileCnt + ", readCnt=" + + readCnt + ", userCnt=" + userCnt + ", fileList=" + fileList + ", readUserList=" + readUserList + + ", multipartFileList=" + multipartFileList + "]"; +} + + + +} diff --git a/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/model/SriFile.java b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/model/SriFile.java new file mode 100644 index 00000000..6038058a --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/model/SriFile.java @@ -0,0 +1,56 @@ +package com.dbnt.faisp.main.fpiMgt.sri.model; + +import com.dbnt.faisp.config.FileInfo; +import lombok.*; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; +import java.io.Serializable; + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@Table(name = "fa_sri_file") +@IdClass(SriFile.SriFileId.class) +public class SriFile extends FileInfo { + @Id + @Column(name = "fa_sri_key") + private Integer faSriKey; + @Id + @Column(name = "file_seq") + private Integer fileSeq; + @Column(name = "orig_nm") + private String origNm; + @Column(name = "conv_nm") + private String convNm; + @Column(name = "file_extn") + private String fileExtn; + @Column(name = "file_size") + private String fileSize; + @Column(name = "save_path") + private String savePath; + + + + @Override +public String toString() { + return "SriFile [faSriKey=" + faSriKey + ", fileSeq=" + fileSeq + ", origNm=" + origNm + ", convNm=" + convNm + + ", fileExtn=" + fileExtn + ", fileSize=" + fileSize + ", savePath=" + savePath + "]"; +} + + + +@Embeddable + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class SriFileId implements Serializable { + private Integer faSriKey; + private Integer fileSeq; + } + +} diff --git a/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/model/SriReadUser.java b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/model/SriReadUser.java new file mode 100644 index 00000000..fd2bef64 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/model/SriReadUser.java @@ -0,0 +1,53 @@ +package com.dbnt.faisp.main.fpiMgt.sri.model; + +import com.dbnt.faisp.config.FileInfo; +import lombok.*; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; +import java.io.Serializable; + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@Table(name = "fa_sri_read_user") +@IdClass(SriReadUser.SriReadUserId.class) +public class SriReadUser extends FileInfo { + @Id + @Column(name = "fa_sri_key") + private Integer faSriKey; + @Id + @Column(name = "user_seq") + private Integer userSeq; + @Column(name = "read_yn") + private String readYn; + @Column(name = "og_cd") + private String ogCd; + @Column(name = "ofc_cd") + private String ofcCd; + @Column(name = "title_cd") + private String titleCd; + @Column(name = "user_nm") + private String userNm; + + @Override +public String toString() { + return "SriReadUser [faSriKey=" + faSriKey + ", userSeq=" + userSeq + ", readYn=" + readYn + ", ogCd=" + ogCd + + ", ofcCd=" + ofcCd + ", titleCd=" + titleCd + ", userNm=" + userNm + "]"; +} + + +@Embeddable + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class SriReadUserId implements Serializable { + private Integer faSriKey; + private Integer userSeq; + } + +} diff --git a/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/repository/SriFileRepository.java b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/repository/SriFileRepository.java new file mode 100644 index 00000000..db866a29 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/repository/SriFileRepository.java @@ -0,0 +1,28 @@ +package com.dbnt.faisp.main.fpiMgt.sri.repository; + + + +import com.dbnt.faisp.main.fpiMgt.sri.model.SriFile; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; + + +public interface SriFileRepository extends JpaRepository { + + Optional findTopByFaSriKeyOrderByFileSeq(Integer faSriKey); + + List findByFaSriKey(Integer faSriKey); + + + + + + + + + + +} diff --git a/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/repository/SriReadUserRepository.java b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/repository/SriReadUserRepository.java new file mode 100644 index 00000000..853569c8 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/repository/SriReadUserRepository.java @@ -0,0 +1,15 @@ +package com.dbnt.faisp.main.fpiMgt.sri.repository; + +import com.dbnt.faisp.main.fpiMgt.sri.model.SriReadUser; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface SriReadUserRepository extends JpaRepository { + + void deleteByFaSriKey(Integer faSriKey); + + List findByFaSriKey(Integer faSriKey); + +} diff --git a/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/repository/SriRepository.java b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/repository/SriRepository.java new file mode 100644 index 00000000..8f4ac10c --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/repository/SriRepository.java @@ -0,0 +1,12 @@ +package com.dbnt.faisp.main.fpiMgt.sri.repository; + + +import com.dbnt.faisp.main.fpiMgt.sri.model.Sri; + +import org.springframework.data.jpa.repository.JpaRepository; + + +public interface SriRepository extends JpaRepository { + + +} diff --git a/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/service/SriService.java b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/service/SriService.java new file mode 100644 index 00000000..3ca90d10 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/service/SriService.java @@ -0,0 +1,138 @@ +package com.dbnt.faisp.main.fpiMgt.sri.service; + +import com.dbnt.faisp.config.BaseService; +import com.dbnt.faisp.config.FileInfo; +import com.dbnt.faisp.main.faRpt.mapper.FaRptMapper; +import com.dbnt.faisp.main.faRpt.model.FaRptBoard; +import com.dbnt.faisp.main.faRpt.model.FaRptFile; +import com.dbnt.faisp.main.faRpt.model.FaRptReadUser; +import com.dbnt.faisp.main.faRpt.model.HashTagLinkFaRpt; +import com.dbnt.faisp.main.faRpt.repository.FaRptBoardRepository; +import com.dbnt.faisp.main.faRpt.repository.FaRptFileRepository; +import com.dbnt.faisp.main.faRpt.repository.FaRptReadUserRepository; +import com.dbnt.faisp.main.faRpt.repository.HashTagLinkFaRptRepository; +import com.dbnt.faisp.main.fpiMgt.sri.mapper.SriMapper; +import com.dbnt.faisp.main.fpiMgt.sri.model.Sri; +import com.dbnt.faisp.main.fpiMgt.sri.model.SriFile; +import com.dbnt.faisp.main.fpiMgt.sri.model.SriReadUser; +import com.dbnt.faisp.main.fpiMgt.sri.repository.SriFileRepository; +import com.dbnt.faisp.main.fpiMgt.sri.repository.SriReadUserRepository; +import com.dbnt.faisp.main.fpiMgt.sri.repository.SriRepository; +import com.dbnt.faisp.main.hashTag.service.HashTagService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.util.List; +import java.util.UUID; + + +@Service +@RequiredArgsConstructor +public class SriService extends BaseService { + private final HashTagService hashTagService; + private final FaRptBoardRepository faRptBoardRepository; + private final FaRptFileRepository faRptFileRepository; + private final FaRptReadUserRepository faRptReadUserRepository; + private final HashTagLinkFaRptRepository hashTagLinkFaRptRepository; + private final FaRptMapper faRptMapper; + private final SriRepository sriRepository; + private final SriReadUserRepository sriReadUserRepository; + private final SriFileRepository sriFileRepository; + private final SriMapper sriMapper; + + + public List selectSriList(Sri sri) { + return sriMapper.selectSriList(sri); + } + + public Integer selectSriCnt(Sri sri) { + return sriMapper.selectSriCnt(sri); + } + + @Transactional + public Integer saveSriBoard(Sri sri, List deleteFileSeq) { + Integer faSriKey = sriRepository.save(sri).getFaSriKey(); + if(deleteFileSeq!=null && deleteFileSeq.size()>0){ + deleteFaRptFile(faSriKey, deleteFileSeq); + } + if(sri.getMultipartFileList() != null){ + saveUploadFiles(faSriKey, sri.getMultipartFileList()); + } + if(sri.getReadUserList() != null){ + saveFaRptReadUser(faSriKey, sri.getReadUserList()); + } + + return faSriKey; + } + + @Transactional + public Sri selectFaSriBoard(Integer faSriKey, Integer userSeq) { + Sri sri = sriRepository.findById(faSriKey).orElse(null); + if(sri != null){ + sri.setFileList(sriFileRepository.findByFaSriKey(faSriKey)); + sri.setReadUserList(sriReadUserRepository.findByFaSriKey(faSriKey)); + if(sri.getStatus().equals("DST007")){ + for(SriReadUser readUser: sri.getReadUserList()){ + if(readUser.getUserSeq().equals(userSeq)){ + readUser.setReadYn("T"); + sriReadUserRepository.save(readUser); + } + } + } + } + return sri; + } + + + + private void saveFaRptReadUser(Integer faSriKey, List readUserList) { + sriReadUserRepository.deleteByFaSriKey(faSriKey); + for(SriReadUser readUser: readUserList){ + readUser.setFaSriKey(faSriKey); + } + sriReadUserRepository.saveAll(readUserList); + } + + private void saveUploadFiles(Integer faSriKey, List multipartFileList) { + SriFile lastFile = sriFileRepository.findTopByFaSriKeyOrderByFileSeq(faSriKey).orElse(null); + int fileSeq = lastFile==null?1:(lastFile.getFileSeq()+1); + for(MultipartFile file: multipartFileList){ + String saveName = UUID.randomUUID().toString(); + String path = locationPath+File.separator+"faRpt"+File.separator; + saveFile(file, new File(path+File.separator+saveName)); + + String originalFilename = file.getOriginalFilename(); + int extnIdx = originalFilename.lastIndexOf("."); + SriFile fileInfo = new SriFile(); + fileInfo.setFaSriKey(faSriKey); + fileInfo.setFileSeq(fileSeq++); + fileInfo.setOrigNm(originalFilename.substring(0, extnIdx)); + fileInfo.setFileExtn(originalFilename.substring(extnIdx+1)); + fileInfo.setConvNm(saveName); + fileInfo.setFileSize(calculationSize(file.getSize())); + fileInfo.setSavePath(path); + sriFileRepository.save(fileInfo); + } + } + + private void deleteFaRptFile(Integer faSriKey, List deleteFileSeq) { + List fileList = sriFileRepository.findByFaSriKey(faSriKey); + for(SriFile file: fileList){ + if(deleteFileSeq.contains(file.getFileSeq())){ + deleteStoredFile(new File(file.getSavePath(), file.getConvNm())); + sriFileRepository.delete(file); + } + } + } + + public FileInfo selectFaSriFile(Integer faSriKey, Integer fileSeq) { + return sriFileRepository.findById(new SriFile.SriFileId(faSriKey, fileSeq)).orElse(null); + } + + + + +} \ No newline at end of file diff --git a/src/main/resources/mybatisMapper/SriMapper.xml b/src/main/resources/mybatisMapper/SriMapper.xml new file mode 100644 index 00000000..56db8cd8 --- /dev/null +++ b/src/main/resources/mybatisMapper/SriMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + and a.wrt_user_seq = #{wrtUserSeq} + + + and a.fa_sri_key in (select fa_sri_key + from fa_sri_read_user + where user_seq = #{receiveUserSeq}) + + + and a.wrt_user_nm like '%'||#{wrtUserNm}||'%' + + + and a.wrt_organ = #{wrtOrgan} + + + and a.title like '%'||#{title}||'%' + + + and a.wrt_dt >= #{startDate}::date + + + and a.wrt_dt <= #{endDate}::date+1 + + + and a.status = #{status} + + + and a.wrt_organ in + + #{organCd} + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/js/igActivities/fpiMgt/sri/sri.js b/src/main/resources/static/js/igActivities/fpiMgt/sri/sri.js new file mode 100644 index 00000000..c01129e3 --- /dev/null +++ b/src/main/resources/static/js/igActivities/fpiMgt/sri/sri.js @@ -0,0 +1,210 @@ +let selectedList = []; + +$(document).on('click', '#addSriBtn', function (){ + getSriEditModal({faSriKey: null}) +}) + +function getSriEditModal(faSriKey){ + $.ajax({ + url: '/sri/sriEditModal', + data: faSriKey, + type: 'GET', + dataType:"html", + success: function(html){ + $("#sriEditModalContent").empty().append(html) + $("#sriEditModal").modal('show'); + $("#faSriEdate").datepicker({ + format: "yyyy-mm-dd", + language: "ko", + autoclose: true + }); + CrossEditor = new NamoSE('editor'); + CrossEditor.params.ParentEditor = document.getElementById("editor"); + CrossEditor.params.Width = "100%"; + CrossEditor.params.UserLang = "auto"; + CrossEditor.params.NewToolbar = true; + CrossEditor.params.UploadFileExecutePath = "/Crosseditor/uploadImg"; + CrossEditor.params.FullScreen = false; + $("#editor").show(); + /*CrossEditor.OnInitCompleted(function (e){ + e.editorTarget.SetBodyValue(document.getElementById("pe_bhr").value); + })*/ + CrossEditor.EditorStart(); + setUploadDiv(); + }, + error:function(){ + + } + }); +} + +$(document).on('click', '#addReadUserBtn', function (){ + searchModalSubmit(1); + $("#userModal").modal('show'); +}) + +$(document).on('click', '#getMenuBtn', function (){ + $.ajax({ + type : 'POST', + url : "/sri/selectedUserTable", + data : JSON.stringify(selectedList), + contentType: 'application/json', + dataType:"html", + beforeSend: function (xhr){ + xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val()); + }, + success : function(html) { + $("#readUserRow").empty().append(html); + setReadUserRowNum(); + $("#userModal").modal("hide"); + }, + error : function(xhr, status) { + + } + }) +}) + +$(document).on('click', '#saveSriBtn', function (){ + saveSri('DST007') +}) + +function saveSri(faSriState){ + if(contentCheck()){ + if(confirm("저장하시겠습니까?")){ + $("#status").val(faSriState); + contentFade("in"); + const formData = new FormData($("#sriEditForm")[0]); + for(const file of files) { + if(!file.isDelete) + formData.append('uploadFiles', file, file.name); + } + formData.append('content', CrossEditor.GetBodyValue()); + $.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()); + }); + $(".text-decoration-line-through").each(function (idx, el){ + formData.append('fileSeq', $(el).attr("data-fileseq")); + }) + $.ajax({ + type : 'POST', + data : formData, + url : "/sri/saveSri", + processData: false, + contentType: false, + success : function(result) { + alert("저장되었습니다."); + contentFade("out"); + $("#sriEditModal").modal('hide'); + //getFaRptViewModal(result); + }, + error : function(xhr, status) { + alert("저장에 실패하였습니다.") + contentFade("out"); + } + }) + } + } +} + +$(document).on('click', '.faSriTr', function (){ + const chkBox = $(this).find(".rowChkBox"); + if(chkBox.length>0){ + $(".trChkBox").prop("checked", false); + chkBox[0].checked = !chkBox[0].checked; + } + getSriViewModal(Number($(this).find(".faSriKey").val())); +}) + +function getSriViewModal(faSriKey){ + $.ajax({ + url: '/sri/sriViewModal', + data: {faSriKey: faSriKey}, + type: 'GET', + dataType:"html", + success: function(html){ + $("#sriViewBody").empty().append(html) + $("#sriViewModal").modal('show'); + }, + error:function(){ + + } + }); +} + +$(document).on('click', '#sendTab', function (){ + location.href = "/sri/sriBoard?activeTab=send"; +}) +$(document).on('click', '#receiveTab', function (){ + location.href = "/sri/sriBoard?activeTab=receive"; +}) +$(document).on('click', '#allTab', function (){ + location.href = "/sri/sriBoard?activeTab=all"; +}) + +// + + +$(function(){ + $("#dateSelectorDiv").datepicker({ + format: "yyyy-mm-dd", + language: "ko", + autoclose: true + }); +}) + +$(document).on('click', '#editFaRptBtn', function (){ + $("#faRptViewModal").modal('hide'); + getFaRptEditModal({faRptKey: Number($(this).attr("data-farptkey"))}); +}) + +$(document).on('click', '.rowDeleteBtn', function (){ + $(this).parents(".readUserRow").remove() + setReadUserRowNum(); +}) + + +$(document).on('click', '#saveTempBtn', function (){ + saveFaRpt('DST001') +}) + +$(document).on('click', '#reSendBtn', function (){ + $("#faRptViewModal").modal('hide'); + const faRpt = { + refKey: Number($(this).attr("data-farptkey")), + wrtUserSeq: $("#wrtUserSeq").val(), + wrtOrgan: $("#wrtOrgan").val(), + wrtPart: $("#wrtPart").val(), + wrtUserGrd: $("#wrtUserGrd").val(), + wrtUserNm: $("#wrtUserNm").val() + } + getFaRptEditModal(faRpt); +}) + + +function setReadUserRowNum(){ + $.each($(".readUserRow"), function (idx, row){ + $(row).find(".rowSeq")[0].innerText = idx+1; + }) +} + +function contentCheck(){ + let flag = true; + if(!$("#faSriType").val()){ + alert("분류를 선택해주세요.") + flag = false; + } + if(!$("#title").val()){ + alert("제목을 입력해주세요.") + flag = false; + } + if($("#readUserRow").children().length===0){ + alert("수신자를 입력해주세요.") + flag = false; + } + flag = fileCheck(flag, files); + return flag; +} \ No newline at end of file diff --git a/src/main/resources/templates/sri/readUserRow.html b/src/main/resources/templates/sri/readUserRow.html new file mode 100644 index 00000000..bf76f099 --- /dev/null +++ b/src/main/resources/templates/sri/readUserRow.html @@ -0,0 +1,28 @@ + + + +
+ + + + + +
+
+ + + + + + + + +
+
+ +
+
+
+ \ No newline at end of file diff --git a/src/main/resources/templates/sri/sriBoard.html b/src/main/resources/templates/sri/sriBoard.html new file mode 100644 index 00000000..1d0ff855 --- /dev/null +++ b/src/main/resources/templates/sri/sriBoard.html @@ -0,0 +1,202 @@ + + + + + + +
+
+

첩보수집활동 > SRI

+

SRI

+ + +
+
+
+ +
+
+ + +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+ + +
+
+ +
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
상태보고서
번호
분류제출기한제목관서부서작성자작성일시
+ + + + + + + +
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+
+ + + + +
+ \ No newline at end of file diff --git a/src/main/resources/templates/sri/sriEditModal.html b/src/main/resources/templates/sri/sriEditModal.html new file mode 100644 index 00000000..fa28e975 --- /dev/null +++ b/src/main/resources/templates/sri/sriEditModal.html @@ -0,0 +1,125 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/sri/sriViewModal.html b/src/main/resources/templates/sri/sriViewModal.html new file mode 100644 index 00000000..5316994d --- /dev/null +++ b/src/main/resources/templates/sri/sriViewModal.html @@ -0,0 +1,137 @@ + + + + + \ No newline at end of file