From e18677a5c0fc647d6c3b8a1cb119740b4f97056d Mon Sep 17 00:00:00 2001 From: TaehunPark Date: Mon, 26 Sep 2022 09:38:58 +0900 Subject: [PATCH] =?UTF-8?q?fix:=EC=99=B8=EC=82=AC=EC=9E=A5=EB=B9=84?= =?UTF-8?q?=ED=98=84=ED=99=A9=20=EC=A4=91=EA=B0=84=EC=A0=80=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dbnt/faisp/equip/EquipController.java | 60 ++++++++- .../dbnt/faisp/equip/mapper/EquipMapper.java | 2 + .../equip/repository/EquipFileRepository.java | 2 + .../equip/repository/EquipRepository.java | 5 + .../faisp/equip/service/EquipService.java | 29 ++++ .../resources/mybatisMapper/EquipMapper.xml | 31 ++++- src/main/resources/static/js/equip/equip.js | 127 +++++++++++++++++- .../templates/equip/equipEditModal.html | 14 +- .../templates/equip/equipHistory.html | 103 ++++++++++++++ .../resources/templates/equip/equipList.html | 18 +-- .../templates/equip/equipModifyModal.html | 18 ++- .../templates/equip/equipStatus.html | 2 +- 12 files changed, 386 insertions(+), 25 deletions(-) create mode 100644 src/main/resources/templates/equip/equipHistory.html diff --git a/src/main/java/com/dbnt/faisp/equip/EquipController.java b/src/main/java/com/dbnt/faisp/equip/EquipController.java index 4c4b6750..fe970767 100644 --- a/src/main/java/com/dbnt/faisp/equip/EquipController.java +++ b/src/main/java/com/dbnt/faisp/equip/EquipController.java @@ -13,7 +13,11 @@ import com.dbnt.faisp.util.Utils; import lombok.RequiredArgsConstructor; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; @@ -104,7 +108,61 @@ public class EquipController { equip.setWrtDt(LocalDateTime.now()); int result = equipService.updateEquip(equip,request); return result; - } + } + + @GetMapping("/historyView") + public ModelAndView historyView(Equip equip) { + ModelAndView mav = new ModelAndView("equip/equipHistory"); + mav.addObject("equList", equipService.selectHistoryView(equip)); + return mav; + } + + @GetMapping("/HistoryDetail") + @ResponseBody + public Equip HistoryDetail(Equip equip){ + return equipService.selectHistoryDetail(equip); + } + + @PostMapping("/epuipDelete") + public void epuipDelete(@RequestBody List equip){ + equipService.equipDelete(equip); + + } + + @GetMapping("/getEquipImg") + public void getThumbImage(Equip equip , HttpServletResponse response) throws Exception { + + Equip dbImg = equipService.selectEquipInfo(equip); + + String realFile = dbImg.getFilePath()+"/"+ dbImg.getConvNm(); + String fileNm = dbImg.getConvNm(); + + + BufferedOutputStream out = null; + InputStream in = null; + + try { + response.setContentType("image/jpeg;charset=UTF-8"); + response.setHeader("Content-Disposition", "inline;filename=" + fileNm); + File file = new File(realFile); +// File file = new File(realFile + "/" + fileNm); + if(file.exists()){ + in = new FileInputStream(file); + out = new BufferedOutputStream(response.getOutputStream()); + int len; + byte[] buf = new byte[1024]; + while ((len = in.read(buf)) > 0) { + out.write(buf, 0, len); + } + } + } catch (Exception e) { + + } finally { + if(out != null){ out.flush(); } + if(out != null){ out.close(); } + if(in != null){ in.close(); } + } + } diff --git a/src/main/java/com/dbnt/faisp/equip/mapper/EquipMapper.java b/src/main/java/com/dbnt/faisp/equip/mapper/EquipMapper.java index 1eb4167b..1890d13d 100644 --- a/src/main/java/com/dbnt/faisp/equip/mapper/EquipMapper.java +++ b/src/main/java/com/dbnt/faisp/equip/mapper/EquipMapper.java @@ -23,6 +23,8 @@ public interface EquipMapper { ParamMap selectEduType(Equip equip); + Equip selectHistoryDetail(Equip equip); + } diff --git a/src/main/java/com/dbnt/faisp/equip/repository/EquipFileRepository.java b/src/main/java/com/dbnt/faisp/equip/repository/EquipFileRepository.java index 507766ec..78c0e4c7 100644 --- a/src/main/java/com/dbnt/faisp/equip/repository/EquipFileRepository.java +++ b/src/main/java/com/dbnt/faisp/equip/repository/EquipFileRepository.java @@ -8,6 +8,8 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface EquipFileRepository extends JpaRepository { + void deleteByEquKey(Integer equKey); + diff --git a/src/main/java/com/dbnt/faisp/equip/repository/EquipRepository.java b/src/main/java/com/dbnt/faisp/equip/repository/EquipRepository.java index 07151e9e..dbc5ff63 100644 --- a/src/main/java/com/dbnt/faisp/equip/repository/EquipRepository.java +++ b/src/main/java/com/dbnt/faisp/equip/repository/EquipRepository.java @@ -2,6 +2,7 @@ package com.dbnt.faisp.equip.repository; import com.dbnt.faisp.equip.model.Equip; +import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; @@ -12,6 +13,10 @@ public interface EquipRepository extends JpaRepository { Equip findFirstByOrderByEquKeyDesc(); + List findByEquKeyOrderByWrtDtDesc(Integer equKey); + + void deleteByEquKey(Integer equKey); + diff --git a/src/main/java/com/dbnt/faisp/equip/service/EquipService.java b/src/main/java/com/dbnt/faisp/equip/service/EquipService.java index 2bb31408..b9a13382 100644 --- a/src/main/java/com/dbnt/faisp/equip/service/EquipService.java +++ b/src/main/java/com/dbnt/faisp/equip/service/EquipService.java @@ -10,6 +10,7 @@ import com.dbnt.faisp.equip.repository.EquipFileRepository; import com.dbnt.faisp.equip.repository.EquipRepository; import com.dbnt.faisp.translator.model.Translator; import com.dbnt.faisp.translator.model.Translator.TranslatorId; +import com.dbnt.faisp.userInfo.model.UserInfo; import com.dbnt.faisp.util.ParamMap; import com.dbnt.faisp.util.Utils; @@ -216,5 +217,33 @@ public class EquipService { return equipMapper.selectEduType(equip); } + public List selectHistoryView(Equip equip) { + return equipRepository.findByEquKeyOrderByWrtDtDesc(equip.getEquKey()); + } + + public Equip selectHistoryDetail(Equip equip) { + return equipMapper.selectHistoryDetail(equip); + } + + @Transactional + public void equipDelete(List equip) { + for(Equip equ: equip) { + //파일삭제 + Equip dbEquip = equipMapper.selectEquipInfo(equ); + if(dbEquip.getOrigNm() != null) { + File file = new File(dbEquip.getFilePath(), dbEquip.getConvNm()); + + if(file.exists()) { + + file.delete(); + } + } + equipRepository.deleteByEquKey(equ.getEquKey()); + equipFileRepository.deleteByEquKey(equ.getEquKey()); + } + + } + + } diff --git a/src/main/resources/mybatisMapper/EquipMapper.xml b/src/main/resources/mybatisMapper/EquipMapper.xml index c2da0910..48924124 100644 --- a/src/main/resources/mybatisMapper/EquipMapper.xml +++ b/src/main/resources/mybatisMapper/EquipMapper.xml @@ -233,7 +233,8 @@ #{item} - order by equ_key asc + order by equ_key desc + limit #{rowCnt} offset #{firstIndex} + + \ 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 index a44290bb..aed8acf1 100644 --- a/src/main/resources/static/js/equip/equip.js +++ b/src/main/resources/static/js/equip/equip.js @@ -1,3 +1,5 @@ + + $(document).ready(function(){ $(".table_id").each(function(){ var rows = $(".table_id:contains('"+$(this).text()+"')"); @@ -18,8 +20,13 @@ $(document).on('click', '#addEquip', function (){ type: 'GET', dataType:"html", success: function(html){ - $("#equipEditModalContent").empty().append(html) - $("#equipEditModal").modal('show') + $("#equipEditModalContent").empty().append(html); + $("#equipEditModal").modal('show'); + $(".storedYear").datepicker({ + minViewMode: 'years', + format: "yyyy", + language: "ko" + }) }, error:function(){ @@ -38,7 +45,6 @@ $(document).on('change', '#equType', function (){ type: 'GET', dataType:"html", success: function(html){ - console.log(html); $("#detailType").empty().append(html) }, error:function(){ @@ -48,6 +54,21 @@ $(document).on('change', '#equType', function (){ }); $(document).on('click', '#saveEquip', function (){ + if($('#equType').val() == ''){ + alert("분류를 선택해주세요."); + $('#equType').focus(); + return false; + } + if($('#detailType').val() == ''){ + alert("세부분류를 선택해주세요."); + $('#detailType').focus(); + return false; + } + if($('#itemQty').val() == ''){ + alert("수량을 입력해주세요."); + $('#itemQty').focus(); + return false; + } if(confirm("저장하시겠습니까?")){ let ajaxUrl = "/equip/saveEquip"; const formData = new FormData($("#equipEditForm")[0]); @@ -91,6 +112,11 @@ function showUpdateModal(equKey){ success: function(html){ $("#configEqu").empty().append(html) $("#equipModifyModal").modal('show'); + $(".mStoredYear").datepicker({ + minViewMode: 'years', + format: "yyyy", + language: "ko" + }) }, error:function(){ @@ -112,6 +138,11 @@ function deleteImg(equKey,versionNo){ } $(document).on('click', '#updateEquip', function (){ + if($('#mItemQty').val() == ''){ + alert("수량을 입력해주세요."); + $('#mItemQty').focus(); + return false; + } if(confirm("수정하시겠습니까?")){ let ajaxUrl = "/equip/updateEquip"; const formData = new FormData($("#equipModifyForm")[0]); @@ -134,4 +165,92 @@ $(document).on('click', '#updateEquip', function (){ }) } -}); \ No newline at end of file +}); + +$(document).on('click', '#historyBtn', function (){ + if($('input:checkbox[name=equChk]:checked').length > 1){ + alert("한개만 선택해주세요") + return false; + } + const target = $('input:checkbox[name=equChk]:checked'); + const equKey = Number(target.parents('tr').find('.equKey').val()); + $.ajax({ + url: '/equip/historyView', + data: {equKey: equKey}, + type: 'GET', + dataType:"html", + success: function(html){ + $("#configEqu").empty().append(html) + $("#equipModifyModal").modal('show'); + }, + error:function(){ + + } + }); +}) + +$(document).on('click', '.historyInfoTr', function (){ + $(this).find('.hisChk').prop('checked',true) + if($(this).find('.hisChk').prop('checked')){ + $('.hisChk').prop('checked',false); + $(this).find('.hisChk').prop('checked',true) + } + $.ajax({ + url: '/equip/HistoryDetail', + data: { + equKey : Number($(this).find(".equKey").val()), + versionNo : Number($(this).find(".verNo").val()) + }, + type: 'GET', + dataType:"json", + success: function(data){ + $('#vSosok').val(data.sosok); + $('#vEquType').val(data.equType); + $('#vDetailType').val(data.detailType); + $('#vStoredYear').val(data.storedYear); + $('#vItemQty').val(data.itemQty); + $('#vItemCondition').val(data.itemCondition); + $('#vNote').val(data.note); + $('#vImgName').val(data.origNm); + + }, + error:function(){ + + } + }); +}) + +$(document).on('click', '#equDeleteBtn', function (){ + if(confirm("선택한 대상을 삭제처리 하시겠습니까?")){ + const checkArr = []; + $('input:checkbox[name=equChk]:checked').each(function (idx, el){ + checkArr.push({}); + const target = $(el); + checkArr[idx].equKey = Number(target.parents('tr').find('.equKey').val()); + }) + + $.ajax({ + type : 'POST', + url : "/equip/epuipDelete", + 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("삭제처리에 실패하였습니다"); + } + }) + + } +}) + +$(document).ready( function() { + $('#chk-all').click( function() { + $('.equInfoCheckBox').prop('checked',this.checked); + }); +}); diff --git a/src/main/resources/templates/equip/equipEditModal.html b/src/main/resources/templates/equip/equipEditModal.html index 23719e33..1daa3c12 100644 --- a/src/main/resources/templates/equip/equipEditModal.html +++ b/src/main/resources/templates/equip/equipEditModal.html @@ -9,6 +9,12 @@
+
+ +
+ +
+
@@ -31,13 +37,13 @@
- +
- +
@@ -54,13 +60,13 @@
- +
- +
diff --git a/src/main/resources/templates/equip/equipHistory.html b/src/main/resources/templates/equip/equipHistory.html new file mode 100644 index 00000000..3b64cf6f --- /dev/null +++ b/src/main/resources/templates/equip/equipHistory.html @@ -0,0 +1,103 @@ + + +
+ + + +
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + +
작성자등록일
+ + +
+
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/src/main/resources/templates/equip/equipList.html b/src/main/resources/templates/equip/equipList.html index 50b1a967..884d5fe4 100644 --- a/src/main/resources/templates/equip/equipList.html +++ b/src/main/resources/templates/equip/equipList.html @@ -14,9 +14,9 @@
-
- - + + +
+ 소속 세부소속 장비사진 @@ -75,13 +75,15 @@ - + - + + 첨부이미지 + @@ -92,9 +94,9 @@
- + - +
diff --git a/src/main/resources/templates/equip/equipModifyModal.html b/src/main/resources/templates/equip/equipModifyModal.html index 42de14af..01d1111f 100644 --- a/src/main/resources/templates/equip/equipModifyModal.html +++ b/src/main/resources/templates/equip/equipModifyModal.html @@ -11,6 +11,12 @@ +
+ +
+ +
+
@@ -36,13 +42,13 @@
- +
- +
@@ -59,20 +65,20 @@
- +
- + - +
diff --git a/src/main/resources/templates/equip/equipStatus.html b/src/main/resources/templates/equip/equipStatus.html index 10288dba..0010b82e 100644 --- a/src/main/resources/templates/equip/equipStatus.html +++ b/src/main/resources/templates/equip/equipStatus.html @@ -105,7 +105,7 @@ - +