From 4bcdd46db8ef7c5d5bbf547550b63b08d980f284 Mon Sep 17 00:00:00 2001 From: TaehunPark Date: Tue, 20 Sep 2022 14:35:50 +0900 Subject: [PATCH] =?UTF-8?q?feat:=EC=9E=A5=EB=B9=84=ED=98=84=ED=99=A9=20?= =?UTF-8?q?=EC=9E=91=EC=97=85=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dbnt/faisp/equip/EquipController.java | 81 ++++++++++ .../dbnt/faisp/equip/mapper/EquipMapper.java | 17 ++ .../com/dbnt/faisp/equip/model/Equip.java | 86 ++++++++++ .../com/dbnt/faisp/equip/model/EquipFile.java | 80 ++++++++++ .../equip/repository/EquipFileRepository.java | 14 ++ .../equip/repository/EquipRepository.java | 15 ++ .../faisp/equip/service/EquipService.java | 118 ++++++++++++++ src/main/java/com/dbnt/faisp/util/Utils.java | 15 ++ .../resources/mybatisMapper/EquipMapper.xml | 9 ++ src/main/resources/static/js/equip/equip.js | 60 +++++++ .../templates/equip/equipEditModal.html | 74 +++++++++ .../templates/equip/equipStatus.html | 149 ++++++++++++++++++ .../templates/equip/equipTypeSelecBox.html | 7 + 13 files changed, 725 insertions(+) create mode 100644 src/main/java/com/dbnt/faisp/equip/EquipController.java create mode 100644 src/main/java/com/dbnt/faisp/equip/mapper/EquipMapper.java create mode 100644 src/main/java/com/dbnt/faisp/equip/model/Equip.java create mode 100644 src/main/java/com/dbnt/faisp/equip/model/EquipFile.java create mode 100644 src/main/java/com/dbnt/faisp/equip/repository/EquipFileRepository.java create mode 100644 src/main/java/com/dbnt/faisp/equip/repository/EquipRepository.java create mode 100644 src/main/java/com/dbnt/faisp/equip/service/EquipService.java create mode 100644 src/main/resources/mybatisMapper/EquipMapper.xml create mode 100644 src/main/resources/static/js/equip/equip.js create mode 100644 src/main/resources/templates/equip/equipEditModal.html create mode 100644 src/main/resources/templates/equip/equipStatus.html create mode 100644 src/main/resources/templates/equip/equipTypeSelecBox.html diff --git a/src/main/java/com/dbnt/faisp/equip/EquipController.java b/src/main/java/com/dbnt/faisp/equip/EquipController.java new file mode 100644 index 00000000..cd8ecd9e --- /dev/null +++ b/src/main/java/com/dbnt/faisp/equip/EquipController.java @@ -0,0 +1,81 @@ +package com.dbnt.faisp.equip; + +import com.dbnt.faisp.authMgt.service.AuthMgtService; +import com.dbnt.faisp.equip.model.Equip; +import com.dbnt.faisp.equip.service.EquipService; +import com.dbnt.faisp.organMgt.service.OrganConfigService; +import com.dbnt.faisp.translator.model.Translator; +import com.dbnt.faisp.translator.model.TranslatorCrr; +import com.dbnt.faisp.translator.service.TranslatorService; +import com.dbnt.faisp.userInfo.model.UserInfo; +import com.dbnt.faisp.util.ParamMap; +import com.dbnt.faisp.util.Utils; + +import lombok.RequiredArgsConstructor; + +import java.io.IOException; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletResponse; + +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; + + +@RestController +@RequiredArgsConstructor +@RequestMapping("/equip") +public class EquipController { + + private final AuthMgtService authMgtService; + private final TranslatorService translatorSevice; + private final OrganConfigService organConfigService; + private final EquipService equipService; + + + @GetMapping("/equipStatus") + public ModelAndView equipStatus() { + ModelAndView mav = new ModelAndView("equip/equipStatus"); + + return mav; + } + + @GetMapping("/equipEditModal") + public ModelAndView equipEditModal() { + ModelAndView mav = new ModelAndView("equip/equipEditModal"); + + return mav; + } + + + @GetMapping("/equipTypeSelecBox") + public ModelAndView equipTypeSelecBox(String equType) { + System.out.println("@@"+equType); + ModelAndView mav = new ModelAndView("equip/equipTypeSelecBox"); + mav.addObject("equType", equType); + return mav; + } + + @PostMapping("/saveEquip") + public void saveEquip(@AuthenticationPrincipal UserInfo loginUser,Equip equip, MultipartHttpServletRequest request){ + equip.setWrtNm(loginUser.getUserId()); + equip.setMgtOrgan(loginUser.getOgCd()); + equip.setWrtOrgan(loginUser.getOgCd()); + equip.setWrtDt(LocalDateTime.now()); + equipService.saveEquip(equip,request); + + + + } + + + + + + +} diff --git a/src/main/java/com/dbnt/faisp/equip/mapper/EquipMapper.java b/src/main/java/com/dbnt/faisp/equip/mapper/EquipMapper.java new file mode 100644 index 00000000..e99ec857 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/equip/mapper/EquipMapper.java @@ -0,0 +1,17 @@ +package com.dbnt.faisp.equip.mapper; + +import com.dbnt.faisp.translator.model.Translator; +import com.dbnt.faisp.translator.model.TranslatorCrr; +import com.dbnt.faisp.userInfo.model.UserInfo; +import com.dbnt.faisp.util.ParamMap; + +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface EquipMapper { + + + +} diff --git a/src/main/java/com/dbnt/faisp/equip/model/Equip.java b/src/main/java/com/dbnt/faisp/equip/model/Equip.java new file mode 100644 index 00000000..e6557396 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/equip/model/Equip.java @@ -0,0 +1,86 @@ +package com.dbnt.faisp.equip.model; + +import com.dbnt.faisp.config.BaseModel; + +import lombok.AllArgsConstructor; +import lombok.Data; +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 javax.persistence.*; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Date; + + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@IdClass(Equip.EquipId.class) +@Table(name = "equ_mgt") +public class Equip extends BaseModel implements Serializable{ + @Id + @Column(name = "equ_key") + private Integer equKey; + @Id + @Column(name = "version_no") + private Integer versionNo; + @Column(name = "mgt_organ") + private String mgtOrgan; + @Column(name = "equ_type") + private String equType; + @Column(name = "detail_type") + private String detailType; + @Column(name = "stored_year") + private String storedYear; + @Column(name = "mgt_type") + private String mgtType; + @Column(name = "item_qty") + private Integer itemQty; + @Column(name = "item_condition") + private String itemCondition; + @Column(name = "note") + private String note; + @Column(name = "wrt_organ") + private String wrtOrgan; + @Column(name = "wrt_nm") + private String wrtNm; + @Column(name = "wrt_dt") + private LocalDateTime wrtDt; + + +@Embeddable +@Data +@NoArgsConstructor +@AllArgsConstructor +public static class EquipId implements Serializable { + private Integer equKey; + private Integer versionNo; +} + + +@Override +public String toString() { + return "Equip [equKey=" + equKey + ", versionNo=" + versionNo + ", mgtOrgan=" + mgtOrgan + ", equType=" + equType + + ", detailType=" + detailType + ", storedYear=" + storedYear + ", mgtType=" + mgtType + ", itemQty=" + + itemQty + ", itemCondition=" + itemCondition + ", note=" + note + ", wrtOrgan=" + wrtOrgan + ", wrtNm=" + + wrtNm + ", wrtDt=" + wrtDt + "]"; +} + + + + + + + + +} diff --git a/src/main/java/com/dbnt/faisp/equip/model/EquipFile.java b/src/main/java/com/dbnt/faisp/equip/model/EquipFile.java new file mode 100644 index 00000000..728003b3 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/equip/model/EquipFile.java @@ -0,0 +1,80 @@ +package com.dbnt.faisp.equip.model; + +import com.dbnt.faisp.config.BaseModel; + +import lombok.AllArgsConstructor; +import lombok.Data; +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 javax.persistence.*; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Date; + + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@IdClass(EquipFile.EquipFileId.class) +@Table(name = "equ_file") +public class EquipFile extends BaseModel implements Serializable{ + @Id + @Column(name = "file_seq") + private Integer fileSeq; + @Id + @Column(name = "equ_key") + private Integer equKey; + @Id + @Column(name = "version_no") + private Integer versionNo; + @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 = "file_path") + private String filePath; + + + +@Embeddable +@Data +@NoArgsConstructor +@AllArgsConstructor +public static class EquipFileId implements Serializable { + private Integer fileSeq; + private Integer equKey; + private Integer versionNo; +} + + + +@Override +public String toString() { + return "EquipFile [fileSeq=" + fileSeq + ", equKey=" + equKey + ", versionNo=" + versionNo + ", origNm=" + origNm + + ", convNm=" + convNm + ", fileExtn=" + fileExtn + ", fileSize=" + fileSize + ", filePath=" + filePath + + "]"; +} + + + + + + + + + +} diff --git a/src/main/java/com/dbnt/faisp/equip/repository/EquipFileRepository.java b/src/main/java/com/dbnt/faisp/equip/repository/EquipFileRepository.java new file mode 100644 index 00000000..507766ec --- /dev/null +++ b/src/main/java/com/dbnt/faisp/equip/repository/EquipFileRepository.java @@ -0,0 +1,14 @@ +package com.dbnt.faisp.equip.repository; + +import com.dbnt.faisp.equip.model.EquipFile; + +import org.springframework.data.jpa.repository.JpaRepository; + + + +public interface EquipFileRepository extends JpaRepository { + + + + +} diff --git a/src/main/java/com/dbnt/faisp/equip/repository/EquipRepository.java b/src/main/java/com/dbnt/faisp/equip/repository/EquipRepository.java new file mode 100644 index 00000000..2a889b57 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/equip/repository/EquipRepository.java @@ -0,0 +1,15 @@ +package com.dbnt.faisp.equip.repository; + +import com.dbnt.faisp.equip.model.Equip; +import org.springframework.data.jpa.repository.JpaRepository; + + + +public interface EquipRepository extends JpaRepository { + + Equip findFirstByOrderByEquKeyDesc(); + + + + +} diff --git a/src/main/java/com/dbnt/faisp/equip/service/EquipService.java b/src/main/java/com/dbnt/faisp/equip/service/EquipService.java new file mode 100644 index 00000000..4642ace5 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/equip/service/EquipService.java @@ -0,0 +1,118 @@ +package com.dbnt.faisp.equip.service; + + +import com.dbnt.faisp.equip.mapper.EquipMapper; +import com.dbnt.faisp.equip.model.Equip; +import com.dbnt.faisp.equip.model.EquipFile; +import com.dbnt.faisp.equip.repository.EquipFileRepository; +import com.dbnt.faisp.equip.repository.EquipRepository; +import com.dbnt.faisp.translator.mapper.TranslatorMapper; +import com.dbnt.faisp.translator.model.Translator; +import com.dbnt.faisp.translator.model.Translator.TranslatorId; +import com.dbnt.faisp.translator.model.TranslatorCrr; +import com.dbnt.faisp.translator.repository.TranslatorCareerRepository; +import com.dbnt.faisp.translator.repository.TranslatorRepository; +import com.dbnt.faisp.util.ParamMap; +import com.dbnt.faisp.util.Utils; + +import lombok.RequiredArgsConstructor; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.core.env.Environment; + +import java.io.File; +import java.time.LocalDateTime; +import java.util.*; + +@Service +@RequiredArgsConstructor +public class EquipService { + @Value("${spring.servlet.multipart.location}") + protected String locationPath; + + private final EquipRepository equipRepository; + private final EquipFileRepository equipFileRepository; + private final EquipMapper equipMapper; + + + @Transactional + public void saveEquip(Equip equip, MultipartHttpServletRequest request) { + Equip dbEquip = equipRepository.findFirstByOrderByEquKeyDesc(); + try { + if(dbEquip == null) { + equip.setEquKey(1); + equip.setVersionNo(1); + equipRepository.save(equip); + } else { + equip.setEquKey(dbEquip.getEquKey()+1); + equip.setVersionNo(1); + equipRepository.save(equip); + } + saveFile(equip,request); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void saveFile(Equip equip, MultipartHttpServletRequest mRequest) throws Exception { + try { + String path = locationPath; + String FileSize; + File dir = new File(path); + if(!dir.exists()) dir.mkdir(); + + List mFiles = mRequest.getFiles("file"); + for(int i = 0; i < mFiles.size(); i++) { + MultipartFile mFile = mFiles.get(i); + FileSize = calculationSize(mFile.getSize()); + if(!"".equals(mFile.getOriginalFilename())){ + String fileName = mFile.getOriginalFilename(); + if(fileName.contains("\\")){ + String notSecuredFileName = fileName.substring(fileName.lastIndexOf("\\") +1); + fileName = ("".equals(notSecuredFileName) || null == notSecuredFileName) ? fileName : notSecuredFileName; + }; + + String fileExt = Utils.getFileExtention(fileName); + String saveName = Utils.generationSaveName() + "." + fileExt; + FileCopyUtils.copy(mFile.getBytes(), new File(path, saveName)); + + EquipFile equipFile = new EquipFile(); + equipFile.setFileSeq(1); + equipFile.setEquKey(equip.getEquKey()); + equipFile.setVersionNo(equip.getVersionNo()); + equipFile.setOrigNm(fileName); + equipFile.setConvNm(saveName); + equipFile.setFileExtn(fileExt); + equipFile.setFilePath(path); + equipFile.setFileSize(FileSize); + System.out.println(equipFile); + + equipFileRepository.save(equipFile); + } + } + + } catch (Exception e) { + throw e; + } + + + } + + + private String calculationSize(double fileSize){ + String[] units = {"bytes", "KB", "MB", "GB", "TB", "PB"}; + double unitSelector = Math.floor(Math.log(fileSize)/Math.log(1024)); + if(fileSize>0){ + return Math.round((fileSize/Math.pow(1024, unitSelector))*100)/100d+" "+units[(int)unitSelector]; + }else{ + return ""; + } + } + + +} diff --git a/src/main/java/com/dbnt/faisp/util/Utils.java b/src/main/java/com/dbnt/faisp/util/Utils.java index fac20757..7daa2faa 100644 --- a/src/main/java/com/dbnt/faisp/util/Utils.java +++ b/src/main/java/com/dbnt/faisp/util/Utils.java @@ -112,6 +112,21 @@ public class Utils { return ""; } } + + public static String getFileExtention(final String filename) { + if(null == filename || "".equals(filename)) return ""; + + return -1 < filename.lastIndexOf(".") ? filename.substring(filename.lastIndexOf(".") + 1).toLowerCase() : ""; + } + + public static String generationSaveName() { + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + return Utils.getTimeStampString("yyyyMMdd_HHmmss_SSS"); + } public static void listToExcel(List list, HttpServletResponse response, String[] headers, String[] headerNames, String[] columnType, String sheetName, String excelFileName) throws IOException { if(Utils.isNotEmpty(list)) { diff --git a/src/main/resources/mybatisMapper/EquipMapper.xml b/src/main/resources/mybatisMapper/EquipMapper.xml new file mode 100644 index 00000000..93692bce --- /dev/null +++ b/src/main/resources/mybatisMapper/EquipMapper.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/js/equip/equip.js b/src/main/resources/static/js/equip/equip.js new file mode 100644 index 00000000..b3567372 --- /dev/null +++ b/src/main/resources/static/js/equip/equip.js @@ -0,0 +1,60 @@ +$(document).on('click', '#addEquip', function (){ + $.ajax({ + url: '/equip/equipEditModal', + type: 'GET', + dataType:"html", + success: function(html){ + $("#equipEditModalContent").empty().append(html) + $("#equipEditModal").modal('show') + }, + error:function(){ + + } + }); +}) + +$(document).on('change', '#equType', function (){ + const equType = $(this).val(); + + $.ajax({ + url: '/equip/equipTypeSelecBox', + data: { + equType, + }, + type: 'GET', + dataType:"html", + success: function(html){ + console.log(html); + $("#detailType").empty().append(html) + }, + error:function(){ + + } + }); + +$(document).on('click', '#saveEquip', function (){ + if(confirm("저장하시겠습니까?")){ + let ajaxUrl = "/equip/saveEquip"; + const formData = new FormData($("#equipEditForm")[0]); + contentFade("in"); + $.ajax({ + type : 'POST', + data : formData, + url : ajaxUrl, + processData: false, + contentType: false, + success : function() { + alert("저장되었습니다."); + location.reload(); + contentFade("out"); + }, + error : function(xhr, status) { + alert("저장에 실패하였습니다.") + contentFade("out"); + } + }) + } + +}) + +}); \ No newline at end of file diff --git a/src/main/resources/templates/equip/equipEditModal.html b/src/main/resources/templates/equip/equipEditModal.html new file mode 100644 index 00000000..a9f8d630 --- /dev/null +++ b/src/main/resources/templates/equip/equipEditModal.html @@ -0,0 +1,74 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/equip/equipStatus.html b/src/main/resources/templates/equip/equipStatus.html new file mode 100644 index 00000000..ab484ea5 --- /dev/null +++ b/src/main/resources/templates/equip/equipStatus.html @@ -0,0 +1,149 @@ + + + + + +
+
+

외사장비 현황

+ + + +
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
중부서해남해동해제주
연번분류세부분류총계본청
인천서평택서태안서보령서목포서부안서군산서여수완도서울산서부산서창원서통영서사천서속초서동해서울진서포항서제주서서귀포서
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+ + +
+ \ No newline at end of file diff --git a/src/main/resources/templates/equip/equipTypeSelecBox.html b/src/main/resources/templates/equip/equipTypeSelecBox.html new file mode 100644 index 00000000..b3460371 --- /dev/null +++ b/src/main/resources/templates/equip/equipTypeSelecBox.html @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file