diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/UnlawfulFishingController.java b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/UnlawfulFishingController.java index 8e9fd79d..7171eb68 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/UnlawfulFishingController.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/UnlawfulFishingController.java @@ -36,18 +36,10 @@ public class UnlawfulFishingController { AccessConfig accessConfig = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/unlawfulFishing/crackdownInfo").get(0); mav.addObject("menuKey", accessConfig.getMenuKey()); mav.addObject("accessAuth", accessConfig.getAccessAuth()); - - if(params.getYear()==null){ - params.setYear(LocalDateTime.now().getYear()); - } - List yearList = unlawfulFishingService.selectFishingBoatYearParam(); - if(!yearList.contains(params.getYear())){ - yearList.add(params.getYear()); - } - List csDTOList = new ArrayList<>(); - - mav.addObject("crackdownInfoList", csDTOList); - mav.addObject("yearList", yearList); + params.setQueryInfo(); + mav.addObject("crackdownInfoList", unlawfulFishingService.selectCrackdownInfoList(params)); + params.setContentCnt(unlawfulFishingService.selectCrackdownInfoListCnt(params)); + params.setPaginationInfo(); mav.addObject("searchParams", params); return mav; } @@ -69,9 +61,9 @@ public class UnlawfulFishingController { return mav; } - @PostMapping("/cdiSave") - public void cdiSave(CrackdownInfo crackdownInfo){ - System.out.println(crackdownInfo.getCdsKey()); + @PostMapping("/saveCrackdownInfo") + public Integer saveCrackdownInfo(CrackdownInfo crackdownInfo){ + return unlawfulFishingService.saveCrackdownInfo(crackdownInfo); } @GetMapping("/cdiSelectModal") diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/mapper/UnlawfulFishingMapper.java b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/mapper/UnlawfulFishingMapper.java index ed9af34f..60a534d7 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/mapper/UnlawfulFishingMapper.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/mapper/UnlawfulFishingMapper.java @@ -1,5 +1,7 @@ package com.dbnt.faisp.main.faStatistics.unlawfulFishing.mapper; +import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.UnlawfulFishingParam; +import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.crackdownStatus.CrackdownInfo; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -8,4 +10,8 @@ import java.util.List; public interface UnlawfulFishingMapper { List selectFishingBoatYearParam(); + + List selectCrackdownInfoList(UnlawfulFishingParam params); + + Integer selectCrackdownInfoListCnt(UnlawfulFishingParam params); } diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/CrackdownInfoBaseEntity.java b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/CrackdownInfoBaseEntity.java index b72bd4c1..de2707ae 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/CrackdownInfoBaseEntity.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/CrackdownInfoBaseEntity.java @@ -100,6 +100,6 @@ public class CrackdownInfoBaseEntity extends BaseModel { private String wrtUserNm; @Column(name = "wrt_dt") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime wrtDt; } diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/ViolationInfo.java b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/ViolationInfo.java index 8b4ac46a..7670d80b 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/ViolationInfo.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/ViolationInfo.java @@ -17,12 +17,12 @@ import java.io.Serializable; @Table(name = "violation_info") @IdClass(ViolationInfo.ViolationInfoId.class) public class ViolationInfo extends BaseModel { - @Id - @Column(name = "violation_key") - private Integer violationKey; @Id @Column(name = "cds_key") private Integer cdsKey; + @Id + @Column(name = "violation_key") + private Integer violationKey; @Column(name = "violation") private String violation; @@ -34,7 +34,7 @@ public class ViolationInfo extends BaseModel { @NoArgsConstructor @AllArgsConstructor public static class ViolationInfoId implements Serializable{ - private Integer violationKey; private Integer cdsKey; + private Integer violationKey; } } diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/ViolationInfoVersion.java b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/ViolationInfoHistory.java similarity index 78% rename from src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/ViolationInfoVersion.java rename to src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/ViolationInfoHistory.java index 4323aa47..02e5b0e0 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/ViolationInfoVersion.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/model/crackdownStatus/ViolationInfoHistory.java @@ -14,18 +14,18 @@ import java.io.Serializable; @NoArgsConstructor @DynamicInsert @DynamicUpdate -@Table(name = "violation_info_version") -@IdClass(ViolationInfoVersion.ViolationInfoVersionId.class) -public class ViolationInfoVersion extends BaseModel { - @Id - @Column(name = "violation_key") - private Integer violationKey; +@Table(name = "violation_info_history") +@IdClass(ViolationInfoHistory.ViolationInfoHistoryId.class) +public class ViolationInfoHistory extends BaseModel { @Id @Column(name = "cds_key") private Integer cdsKey; @Id @Column(name = "version_no") private Integer versionNo; + @Id + @Column(name = "violation_key") + private Integer violationKey; @Column(name = "violation") private String violation; @@ -33,9 +33,9 @@ public class ViolationInfoVersion extends BaseModel { @Data @NoArgsConstructor @AllArgsConstructor - public static class ViolationInfoVersionId implements Serializable{ - private Integer violationKey; + public static class ViolationInfoHistoryId implements Serializable{ private Integer cdsKey; private Integer versionNo; + private Integer violationKey; } } diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/repository/ViolationInfoHistoryRepository.java b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/repository/ViolationInfoHistoryRepository.java new file mode 100644 index 00000000..25b24ca3 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/repository/ViolationInfoHistoryRepository.java @@ -0,0 +1,13 @@ +package com.dbnt.faisp.main.faStatistics.unlawfulFishing.repository; + +import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.crackdownStatus.ViolationInfoHistory; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; + +public interface ViolationInfoHistoryRepository extends JpaRepository { + Optional findTop1ByCdsKeyOrderByVersionNoDesc(Integer cdsKey); + + List findByCdsKeyAndVersionNoOrderByViolationKeyAsc(Integer cdsKey, Integer versionNo); +} diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/repository/ViolationInfoRepository.java b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/repository/ViolationInfoRepository.java new file mode 100644 index 00000000..3e1240e1 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/repository/ViolationInfoRepository.java @@ -0,0 +1,22 @@ +package com.dbnt.faisp.main.faStatistics.unlawfulFishing.repository; + +import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.crackdownStatus.ViolationInfo; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Optional; + +public interface ViolationInfoRepository extends JpaRepository { + List findByCdsKey(Integer cdsKey); + Optional findTopByCdsKeyOrderByViolationKeyDesc(int fbKey); + void deleteByCdsKey(Integer fbKey); + + @Transactional + @Modifying + @Query("delete from ViolationInfo v where v.violationKey in :idList") + void deleteAllByIdInQuery(@Param("idList") List violationDeleteKeyList); +} diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/service/UnlawfulFishingService.java b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/service/UnlawfulFishingService.java index ef38ca86..f9cc682f 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/service/UnlawfulFishingService.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/unlawfulFishing/service/UnlawfulFishingService.java @@ -1,8 +1,7 @@ package com.dbnt.faisp.main.faStatistics.unlawfulFishing.service; -import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.crackdownStatus.CrackdownInfo; -import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.crackdownStatus.CrackdownStatus; -import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.crackdownStatus.UnlawfulFishingVersion; +import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.UnlawfulFishingParam; +import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.crackdownStatus.*; import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.fishingBoat.FishingBoat; import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.fishingBoat.IllegalShipInfo; import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.processResult.ShipProcessInfo; @@ -11,10 +10,12 @@ import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.sailor.Sailor; import com.dbnt.faisp.main.faStatistics.unlawfulFishing.mapper.UnlawfulFishingMapper; import com.dbnt.faisp.main.faStatistics.unlawfulFishing.repository.*; import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; @Service @@ -27,6 +28,8 @@ public class UnlawfulFishingService { private final CrackdownInfoRepository cdiRepository; private final CrackdownInfoHistoryRepository cdihRepository; + private final ViolationInfoRepository viRepository; + private final ViolationInfoHistoryRepository vihRepository; private final IllegalShipInfoRepository isiRepository; private final IllegalShipInfoHistoryRepository isihRepository; private final ShipProcessInfoRepository spiRepository; @@ -93,10 +96,41 @@ public class UnlawfulFishingService { } return crackdownStatus; } + public List selectFishingBoatYearParam() { return unlawfulFishingMapper.selectFishingBoatYearParam(); } + @Transactional + public Integer saveCrackdownInfo(CrackdownInfo crackdownInfo) { + Integer cdsKey = cdiRepository.save(crackdownInfo).getCdsKey(); + List violationInfoList = crackdownInfo.getViolationList(); + int i=1; + for(ViolationInfo violationInfo : violationInfoList){ + violationInfo.setCdsKey(cdsKey); + violationInfo.setViolationKey(i++); + } + viRepository.saveAll(violationInfoList); + + if(!crackdownInfo.getStatus().equals("DST001")){ + CrackdownInfoHistory lastHistory = cdihRepository.findTopByCdsKeyOrderByVersionNoDesc(cdsKey).orElse(null); + CrackdownInfoHistory cdihistory = new CrackdownInfoHistory(); + BeanUtils.copyProperties(crackdownInfo, cdihistory); + cdihistory.setVersionNo(lastHistory==null?1:lastHistory.getVersionNo()+1); + cdihRepository.save(cdihistory); + + List viHistoryList = new ArrayList<>(); + for(ViolationInfo vi: violationInfoList){ + ViolationInfoHistory vih = new ViolationInfoHistory(); + BeanUtils.copyProperties(vi, vih); + vih.setVersionNo(cdihistory.getVersionNo()); + viHistoryList.add(vih); + } + vihRepository.saveAll(viHistoryList); + } + return cdsKey; + } + public CrackdownInfo selectCrackdownInfo(Integer cdsKey) { return cdiRepository.findByCdsKey(cdsKey).orElse(new CrackdownInfo()); } @@ -112,4 +146,11 @@ public class UnlawfulFishingService { public IllegalShipSailor selectIllegalShipSailor(Integer sailorKey) { return issRepository.findBySailorKey(sailorKey).orElse(new IllegalShipSailor()); } + + public List selectCrackdownInfoList(UnlawfulFishingParam params) { + return unlawfulFishingMapper.selectCrackdownInfoList(params); + } + public Integer selectCrackdownInfoListCnt(UnlawfulFishingParam params) { + return unlawfulFishingMapper.selectCrackdownInfoListCnt(params); + } } diff --git a/src/main/resources/mybatisMapper/UnlawfulFishingMapper.xml b/src/main/resources/mybatisMapper/UnlawfulFishingMapper.xml index 89d3d2bf..439a5c82 100644 --- a/src/main/resources/mybatisMapper/UnlawfulFishingMapper.xml +++ b/src/main/resources/mybatisMapper/UnlawfulFishingMapper.xml @@ -11,4 +11,55 @@ where napo_dt is not null + + + + where status <> 'DST008' + \ No newline at end of file diff --git a/src/main/resources/static/js/faStatistics/unlawfulFishing/crackdownInfo.js b/src/main/resources/static/js/faStatistics/unlawfulFishing/crackdownInfo.js index 8153553a..36a77796 100644 --- a/src/main/resources/static/js/faStatistics/unlawfulFishing/crackdownInfo.js +++ b/src/main/resources/static/js/faStatistics/unlawfulFishing/crackdownInfo.js @@ -28,7 +28,18 @@ $(document).on('change', '#violationSelector', function (){ break; } }) - +$(document).on('click', '.violationRemoveBtn', function (){ + const parentDiv = $(this).parents(".violation") + switch (parentDiv.find(".violationCd").val()){ + case "VT011": // 어획량 축소 기재 + childInputStateChange(1, $("#catchDiv").find("input")) + break; + case "VT028": // 특수공무집행방해 + childInputStateChange(1, $("#damageDiv").find("input, textarea")) + break; + } + parentDiv.remove(); +}) $(document).on('change', '#crackdownPolice', function (){ getChildOption(this.value, null, "#crackdownBoat"); }); @@ -75,9 +86,9 @@ function childInputStateChange(selectorValue, inputs){ function saveCrackdownInfo(status) { if (confirm("저장하시겠습니까?")) { if (valueCheck(status)) { - $(".infoStatus").val(status) + $("#infoStatus").val(status) contentFade("in"); - const formData = new FormData($("#csEditForm")[0]); + const formData = new FormData($("#cdiEditForm")[0]); $.each($(".violationCd"), function (idx, input){ formData.append('violationList['+idx+'].violation', $(input).val()); }); @@ -85,7 +96,7 @@ function saveCrackdownInfo(status) { $.ajax({ type : 'POST', data : formData, - url : "/unlawfulFishing/cdiSave", + url : "/unlawfulFishing/saveCrackdownInfo", processData: false, contentType: false, beforeSend: function (xhr){ @@ -107,27 +118,28 @@ function saveCrackdownInfo(status) { function valueCheck(status){ if(status === "DST007"){ - if(!$("#caseNum").val()){ + const cdiEditForm = $("#cdiEditForm") + if(!cdiEditForm.find("#caseNum").val()){ alert("사건번호를 입력해주세요") return false; } - if($(".violationCd").length<1){ + if(cdiEditForm.find(".violationCd").length<1){ alert("위반사항을 선택해주세요") return false; } - if(!$("#caseAgency").val()){ + if(!cdiEditForm.find("#caseAgency").val()){ alert("사건담당경찰서를 선택해주세요") return false; } - if(!$("#casePoliceOfficer").val()){ + if(!cdiEditForm.find("#casePoliceOfficer").val()){ alert("사건담당경찰관을 입력해주세요") return false; } - if(!$("#crackdownPolice").val()){ + if(!cdiEditForm.find("#crackdownPolice").val()){ alert("단속경찰서를 선택해주세요") return false; } - if(!$("#crackdownBoat").val()){ + if(!cdiEditForm.find("#crackdownBoat").val()){ alert("단속함정을 선택해주세요") return false; } diff --git a/src/main/resources/templates/faStatistics/unlawfulFishing/crackdownInfo/cdiEditModal.html b/src/main/resources/templates/faStatistics/unlawfulFishing/crackdownInfo/cdiEditModal.html index 057ac9fc..a4da6fc4 100644 --- a/src/main/resources/templates/faStatistics/unlawfulFishing/crackdownInfo/cdiEditModal.html +++ b/src/main/resources/templates/faStatistics/unlawfulFishing/crackdownInfo/cdiEditModal.html @@ -5,7 +5,7 @@