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/config/SecurityConfig.java b/src/main/java/com/dbnt/faisp/config/SecurityConfig.java index 21218599..d48d3bd7 100644 --- a/src/main/java/com/dbnt/faisp/config/SecurityConfig.java +++ b/src/main/java/com/dbnt/faisp/config/SecurityConfig.java @@ -88,7 +88,8 @@ public class SecurityConfig{ "/affairResult/**", "/faStatistics/**", "/translator/**", - "/faisp/**" + "/faisp/**", + "/sri/**" ).hasRole(Role.USER.name()) // USER 접근 허용 .antMatchers( "/authMgt/**", 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..15f252e1 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/SriController.java @@ -0,0 +1,128 @@ +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.FaRptReadUser; +import com.dbnt.faisp.main.fpiMgt.sri.model.Sri; +import com.dbnt.faisp.main.fpiMgt.sri.model.SriReadUser; +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 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", "/sri/sriBoard"); + 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){ + sri = sriService.selectFaSriBoard(sri.getFaSriKey(), null); + }else{ + if(sri.getRefKey()!=null){ + SriReadUser readUser = new SriReadUser(); + readUser.setUserSeq(sri.getWrtUserSeq()); + readUser.setOgCd(sri.getWrtOrgan()); + readUser.setOfcCd(sri.getWrtPart()); + readUser.setTitleCd(sri.getWrtTitle()); + readUser.setUserNm(sri.getWrtUserNm()); + sri.setReadUserList(new ArrayList<>()); + sri.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; + } + + @PostMapping("/sriDelete") + public void sriDelete(@AuthenticationPrincipal UserInfo loginUser, @RequestBody List sri){ + sriService.sriDelete(sri); + } + + + +} 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..f230e826 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/model/Sri.java @@ -0,0 +1,86 @@ +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; + @Column(name = "ref_key") + private Integer refKey; + + @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..a7d2b655 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/fpiMgt/sri/service/SriService.java @@ -0,0 +1,139 @@ +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.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 lombok.RequiredArgsConstructor; + +import org.springframework.beans.factory.annotation.Value; +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 SriRepository sriRepository; + private final SriReadUserRepository sriReadUserRepository; + private final SriFileRepository sriFileRepository; + private final SriMapper sriMapper; + + @Value("${file.dir}") + protected String fileDir; + @Value("${file.dir.sri}") + protected String sriDir; + + + 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){ + saveSriReadUser(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 saveSriReadUser(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 = fileDir+sriDir; + 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); + } + + @Transactional + public void sriDelete(List sri) { + for(Sri sriData : sri) { + Sri dbSri = sriRepository.findById(sriData.getFaSriKey()).orElse(null); + dbSri.setStatus("DST008"); + sriRepository.save(dbSri); + } + } + + + + +} \ No newline at end of file diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 12e5fefb..c1b1614d 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -16,6 +16,7 @@ file.dir.equip=/equip file.dir.sailor=sailor file.dir.affair=affair file.dir.editor=editor +file.dir.sri=/sri editor.img.view=/file/editorFileDisplay?fileNm= 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/equip/cellPhone.js b/src/main/resources/static/js/equip/cellPhone.js index 300321ff..132e5d9f 100644 --- a/src/main/resources/static/js/equip/cellPhone.js +++ b/src/main/resources/static/js/equip/cellPhone.js @@ -116,6 +116,10 @@ $(document).ready( function() { }); $(document).on('click', '#deleteCellPhone', function (){ + if($('input:checkbox[name=cpChk]:checked').length < 1){ + alert("게시물을 선택해주세요") + return false; + } if(confirm("선택한 대상을 삭제처리 하시겠습니까?")){ const checkArr = []; $('input:checkbox[name=cpChk]:checked').each(function (idx, el){ 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..cf9f8b66 --- /dev/null +++ b/src/main/resources/static/js/igActivities/fpiMgt/sri/sri.js @@ -0,0 +1,276 @@ +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) + $("#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(); + $("#sriEditModal").modal('show'); + }, + 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(faSriState == 'DST001'){ + if(confirm("임시저장하시겠습니까?")){ + save(faSriState); + } + + }else{ + if(contentCheck()){ + if(confirm("저장하시겠습니까?")){ + save(faSriState); + } + } + } +} + +function save(faSriState){ + $("#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) { + if(faSriState == 'DST001'){ + alert("임시저장되었습니다."); + }else{ + alert("저장되었습니다."); + } + contentFade("out"); + $("#sriEditModal").modal('hide'); + getSriViewModal(result); + }, + error : function(xhr, status) { + if(faSriState == 'DST001'){ + alert("임시저장에 실패하였습니다.") + }else{ + alert("저장에 실패하였습니다.") + } + contentFade("out"); + } + }) +} + +$(document).on('click', '.faSriTr', function (event){ + const target = event.target; + if(!(target.className === "sriChk" ||$(target).parents("td").length>0)){ + 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"; +}) + +$(document).on('click', '#editFaSriBtn', function (){ + $("#sriViewModal").modal('hide'); + getSriEditModal({faSriKey: Number($(this).attr("data-fasrikey"))}); +}) + +function OnInitCompleted(e){ + e.editorTarget.SetBodyValue(document.getElementById("content").value); + +} + +$(document).on('click', '#reSendBtn', function (){ + $("#sriViewModal").modal('hide'); + const faSri = { + refKey: Number($(this).attr("data-fasrikey")), + wrtUserSeq: $("#wrtUserSeq").val(), + wrtOrgan: $("#wrtOrgan").val(), + wrtPart: $("#wrtPart").val(), + wrtTitle: $("#wrtTitle").val(), + wrtUserNm: $("#wrtUserNm").val() + } + getSriEditModal(faSri); +}) + +$(document).on('click', '#saveTempBtn', function (){ + saveSri('DST001') +}) + +$(document).on('click', '#sriDeleteBtn', function (){ + if($('input:checkbox[name=sriChk]:checked').length < 1){ + alert("게시물을 선택해주세요"); + return false; + } + if(confirm("삭제시 되돌릴 수 없습니다. 대상을 삭제처리 하시겠습니까?")){ + const checkArr = []; + $('input:checkbox[name=sriChk]:checked').each(function (idx, el){ + checkArr.push({}); + const target = $(el); + checkArr[idx].faSriKey = Number(target.parents('tr').find('.faSriKey').val()); + }) + deleteSri(checkArr); + + } +}) + +$(document).on('click', '#deleteSri', function (){ + if(confirm("삭제시 되돌릴 수 없습니다. 대상을 삭제처리 하시겠습니까?")){ + const checkArr = []; + checkArr.push({}); + checkArr[0].faSriKey = Number($(this).attr("data-fasrikey")); + deleteSri(checkArr); + } +}) + +function deleteSri(checkArr){ + $.ajax({ + type : 'POST', + url : "/sri/sriDelete", + data : JSON.stringify(checkArr), + contentType: 'application/json', + beforeSend: function (xhr){ + xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val()); + }, + success : function() { + alert("삭제처리 되었습니다."); + location.reload(); + }, + error : function(xhr, status) { + alert("삭제처리에 실패하였습니다"); + } + }) +} + +$(function(){ + $("#dateSelectorDiv").datepicker({ + format: "yyyy-mm-dd", + language: "ko", + autoclose: true + }); +}) + + +$(document).on('click', '.rowDeleteBtn', function (){ + $(this).parents(".readUserRow").remove() + setReadUserRowNum(); +}) + + + + +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..a307ebb4 --- /dev/null +++ b/src/main/resources/templates/sri/sriBoard.html @@ -0,0 +1,206 @@ + + + + + + +
+
+

첩보수집활동 > 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..8b3b6eca --- /dev/null +++ b/src/main/resources/templates/sri/sriEditModal.html @@ -0,0 +1,133 @@ + + + + + \ 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..fa840196 --- /dev/null +++ b/src/main/resources/templates/sri/sriViewModal.html @@ -0,0 +1,146 @@ + + + + + \ No newline at end of file