From 440210fd16c8cba5756c0da4befc5df3559dcea9 Mon Sep 17 00:00:00 2001 From: jiHyung Date: Fri, 4 Nov 2022 17:46:23 +0900 Subject: [PATCH] =?UTF-8?q?=EB=8B=A8=EC=86=8D=ED=98=84=ED=99=A9=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EB=B0=8F=20=EC=84=A0=EC=9B=90=EC=84=B8?= =?UTF-8?q?=EB=B6=80=ED=98=84=ED=99=A9=20=EC=A4=91=EA=B0=84=EC=BB=A4?= =?UTF-8?q?=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crackdownsStatus/SailorController.java | 127 +++++++ .../crackdownsStatus/mapper/SailorMapper.java | 11 + .../model/CrackdownStatus.java | 1 + .../crackdownsStatus/model/sailor/Sailor.java | 41 +++ .../SailorBaseEntity.java} | 19 +- .../model/sailor/SailorVersion.java | 48 +++ .../processResultController.java | 2 +- .../repository/FishingBoatRepository.java | 1 + .../repository/SailorRepository.java | 4 +- .../repository/SailorVersionRepository.java | 14 + .../repository/ViolationRepository.java | 2 + .../service/CrackdownStatusService.java | 29 +- .../service/ProcessResultService.java | 66 +--- .../service/SailorService.java | 131 ++++++++ .../resources/mybatisMapper/SailorMapper.xml | 44 +++ .../static/js/faStatistics/crackdownStatus.js | 4 + .../static/js/faStatistics/processResult.js | 2 +- .../static/js/faStatistics/sailor.js | 314 ++++++++++++++++++ .../crackdownStatus/crackdownStatus.html | 15 +- .../crackdownStatusEditModal.html | 9 +- .../crackdownStatusViewModal.html | 8 +- .../templates/faStatistics/sailor/sailor.html | 280 ++++++++++++++++ .../faStatistics/sailor/sailorAddModal.html | 142 ++++++++ .../faStatistics/sailor/sailorEditModal.html | 208 ++++++++++++ .../sailor/sailorHistoryDetail.html | 114 +++++++ .../sailor/sailorHistoryViewModal.html | 136 ++++++++ .../faStatistics/sailor/sailorViewModal.html | 228 +++++++++++++ 27 files changed, 1897 insertions(+), 103 deletions(-) create mode 100644 src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/SailorController.java create mode 100644 src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/mapper/SailorMapper.java create mode 100644 src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/sailor/Sailor.java rename src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/{Sailor.java => sailor/SailorBaseEntity.java} (81%) create mode 100644 src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/sailor/SailorVersion.java create mode 100644 src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/SailorVersionRepository.java create mode 100644 src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/service/SailorService.java create mode 100644 src/main/resources/mybatisMapper/SailorMapper.xml create mode 100644 src/main/resources/static/js/faStatistics/sailor.js create mode 100644 src/main/resources/templates/faStatistics/sailor/sailor.html create mode 100644 src/main/resources/templates/faStatistics/sailor/sailorAddModal.html create mode 100644 src/main/resources/templates/faStatistics/sailor/sailorEditModal.html create mode 100644 src/main/resources/templates/faStatistics/sailor/sailorHistoryDetail.html create mode 100644 src/main/resources/templates/faStatistics/sailor/sailorHistoryViewModal.html create mode 100644 src/main/resources/templates/faStatistics/sailor/sailorViewModal.html diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/SailorController.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/SailorController.java new file mode 100644 index 00000000..ce7e1307 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/SailorController.java @@ -0,0 +1,127 @@ +package com.dbnt.faisp.main.faStatistics.crackdownsStatus; + +import com.dbnt.faisp.main.authMgt.service.AuthMgtService; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.CrackdownStatus; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.SailorVersion; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.SailorService; +import com.dbnt.faisp.main.userInfo.model.UserInfo; +import lombok.RequiredArgsConstructor; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.ModelAndView; + +import java.time.LocalDateTime; +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/faStatistics") +public class SailorController { + + private final AuthMgtService authMgtService; + private final SailorService sailorService; + private final ViolationRepository violationRepository; + private final CrackdownStatusRepository crackdownStatusRepository; + private final FishingBoatRepository fishingBoatRepository; + private final SailorRepository sailorRepository; + + @RequestMapping("/sailor") + public ModelAndView sailor(@AuthenticationPrincipal UserInfo loginUser, Sailor sailor) { + ModelAndView mav = new ModelAndView("faStatistics/sailor/sailor"); + + //메뉴권한 확인 + String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/sailor").get(0).getAccessAuth(); + + mav.addObject("accessAuth", accessAuth); + + List sailorList = sailorService.selectSailorList(sailor); + + for (Sailor s:sailorList) { + s.setFishingBoat(fishingBoatRepository.findByFbKey(s.getFbKey())); + s.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(s.getFishingBoat().getCdsKey())); + s.setViolationList(violationRepository.findByFbKey(s.getFishingBoat().getFbKey())); + } + + mav.addObject("sailorList", sailorList); + mav.addObject("searchParams", sailor); + return mav; + } + + @GetMapping("/sailor/sailorViewModal") + public ModelAndView sailorViewModal(@AuthenticationPrincipal UserInfo loginUser, Sailor sailor){ + ModelAndView mav = new ModelAndView("faStatistics/sailor/sailorViewModal"); + sailor = sailorService.selectSailor(sailor.getSailorKey()); + sailor.setFishingBoat(fishingBoatRepository.findByFbKey(sailor.getFbKey())); + sailor.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(sailor.getFishingBoat().getCdsKey())); + sailor.setViolationList(violationRepository.findByFbKey(sailor.getFishingBoat().getFbKey())); + + mav.addObject("sailor", sailor); + mav.addObject("userSeq",loginUser.getUserSeq()); + //메뉴권한 확인 + mav.addObject("accessAuth", authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/sailor").get(0).getAccessAuth()); + return mav; + } + + @GetMapping("/sailor/sailorHistoryViewModal") + public ModelAndView sailorHistoryViewModal(@AuthenticationPrincipal UserInfo loginUser, Sailor sailor){ + ModelAndView mav = new ModelAndView("faStatistics/sailor/sailorHistoryViewModal"); + List sailorVersionList = sailorService.selectSailorVersionList(sailor.getSailorKey()); + + mav.addObject("sailorVersionList", sailorVersionList); + return mav; + } + + @GetMapping("/sailor/sailorHistoryDetail") + public ModelAndView sailorHistoryDetail(@AuthenticationPrincipal UserInfo loginUser, SailorVersion sailorVersion){ + ModelAndView mav = new ModelAndView("faStatistics/sailor/sailorHistoryDetail"); + + sailorVersion = sailorService.selectSailorVersion(sailorVersion.getVersionNo()); + sailorVersion.setFishingBoat(fishingBoatRepository.findByFbKey(7)); + + mav.addObject("sailorVersion", sailorVersion); + return mav; + } + + @GetMapping("/sailor/sailorEditModal") + public ModelAndView sailorEditModal(@AuthenticationPrincipal UserInfo loginUser, Sailor sailor){ + ModelAndView mav = new ModelAndView("faStatistics/sailor/sailorEditModal"); + sailor = sailorService.selectSailor(sailor.getSailorKey()); + sailor.setFishingBoat(fishingBoatRepository.findByFbKey(sailor.getFbKey())); + sailor.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(sailor.getFishingBoat().getCdsKey())); + sailor.setViolationList(violationRepository.findByFbKey(sailor.getFishingBoat().getFbKey())); + + mav.addObject("sailor", sailor); + return mav; + } + + @GetMapping("/sailor/sailorAddModal") + public ModelAndView sailorAddModal(@AuthenticationPrincipal UserInfo loginUser, Sailor sailor){ + ModelAndView mav = new ModelAndView("faStatistics/sailor/sailorAddModal"); + + sailor.setFishingBoatList(fishingBoatRepository.findAll()); + + sailor.setWrtOrgan(loginUser.getOgCd()); + sailor.setWrtUserNm(loginUser.getUserNm()); + sailor.setWrtDt(LocalDateTime.now()); + + mav.addObject("sailor", sailor); + return mav; + } + + @PostMapping("/sailor/saveSailor") + public Integer saveSailor(@AuthenticationPrincipal UserInfo loginUser, + CrackdownStatus crackdownStatus, + FishingBoat fishingBoat, + Sailor sailor){ + sailor.setWrtUserSeq(loginUser.getUserSeq()); + sailor.setFishingBoat(fishingBoat); + sailor.setCrackdownStatus(crackdownStatus); + return sailorService.saveSailor(sailor); + } +} diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/mapper/SailorMapper.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/mapper/SailorMapper.java new file mode 100644 index 00000000..8703e66c --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/mapper/SailorMapper.java @@ -0,0 +1,11 @@ +package com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper; + +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface SailorMapper { + List selectSailorList(Sailor sailor); +} diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/CrackdownStatus.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/CrackdownStatus.java index 84031f50..ae698dc0 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/CrackdownStatus.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/CrackdownStatus.java @@ -1,6 +1,7 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model; import com.dbnt.faisp.config.BaseModel; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/sailor/Sailor.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/sailor/Sailor.java new file mode 100644 index 00000000..72338f97 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/sailor/Sailor.java @@ -0,0 +1,41 @@ +package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor; + +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.CrackdownStatus; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.Violation; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.SailorBaseEntity; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; +import java.util.List; + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@Table(name = "sailor") +public class Sailor extends SailorBaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "sailor_key") + private Integer sailorKey; + + @Column(name = "fb_key") + private Integer fbKey; + + @Transient + private CrackdownStatus crackdownStatus; + @Transient + private FishingBoat fishingBoat; + @Transient + private List fishingBoatList; + @Transient + private List violationList; +} diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/Sailor.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/sailor/SailorBaseEntity.java similarity index 81% rename from src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/Sailor.java rename to src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/sailor/SailorBaseEntity.java index 5b103af7..1cefa7b4 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/Sailor.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/sailor/SailorBaseEntity.java @@ -1,11 +1,9 @@ -package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model; +package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor; 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 javax.persistence.*; @@ -14,20 +12,9 @@ import java.time.LocalDateTime; @Getter @Setter -@Entity +@MappedSuperclass @NoArgsConstructor -@DynamicInsert -@DynamicUpdate -@Table(name = "sailor") -public class Sailor extends BaseModel { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "sailor_key") - private Integer sailorKey; - - @Column(name = "fb_key") - private Integer fbKey; +public class SailorBaseEntity extends BaseModel { @Column(name = "sailor_name_kr") private String sailorNameKr; diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/sailor/SailorVersion.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/sailor/SailorVersion.java new file mode 100644 index 00000000..efcfbfc4 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/model/sailor/SailorVersion.java @@ -0,0 +1,48 @@ +package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor; + +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.CrackdownStatus; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat; +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 = "sailor_version") +@IdClass(SailorVersion.SailorVersionId.class) +public class SailorVersion extends SailorBaseEntity { + + @Id + @Column(name = "version_no") + private Integer versionNo; + + @Id + @Column(name = "sailor_key") + private Integer sailorKey; + + @Embeddable + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class SailorVersionId implements Serializable { + private Integer versionNo; + private Integer sailorKey; + } + + /*@Transient + private CrackdownStatusVersion crackdownStatusVersion; + @Transient + private FishingBoatVersion fishingBoatVersion;*/ + + @Transient + private CrackdownStatus crackdownStatus; + @Transient + private FishingBoat fishingBoat; +} diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/processResultController.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/processResultController.java index 7821218a..5578b76b 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/processResultController.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/processResultController.java @@ -22,7 +22,7 @@ import java.util.List; @RestController @RequiredArgsConstructor @RequestMapping("/faStatistics") -public class processResultController { +public class ProcessResultController { private final AuthMgtService authMgtService; private final ProcessResultService processResultService; diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/FishingBoatRepository.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/FishingBoatRepository.java index be867ae3..b90f614b 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/FishingBoatRepository.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/FishingBoatRepository.java @@ -5,4 +5,5 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface FishingBoatRepository extends JpaRepository { FishingBoat findByCdsKey(Integer cdsKey); + FishingBoat findByFbKey(Integer fbKey); } diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/SailorRepository.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/SailorRepository.java index 969d74a0..b07d7520 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/SailorRepository.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/SailorRepository.java @@ -1,6 +1,6 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository; -import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.Sailor; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -16,4 +16,6 @@ public interface SailorRepository extends JpaRepository { @Modifying @Query("delete from Sailor s where s.sailorKey in :idList") void deleteAllByIdInQuery(@Param("idList") List sailorDeleteKeyList); + + Sailor findBySailorKey(Integer sailorKey); } diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/SailorVersionRepository.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/SailorVersionRepository.java new file mode 100644 index 00000000..8baaf4ed --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/SailorVersionRepository.java @@ -0,0 +1,14 @@ +package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository; + +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.SailorVersion; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; + +public interface SailorVersionRepository extends JpaRepository { + Optional findTopBySailorKeyOrderByVersionNoDesc(Integer sailorKey); + List findBySailorKey(Integer sailorKey); + + SailorVersion findByVersionNo(Integer versionNo); +} diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/ViolationRepository.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/ViolationRepository.java index 3b548527..fa555818 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/ViolationRepository.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/repository/ViolationRepository.java @@ -8,9 +8,11 @@ import org.springframework.data.repository.query.Param; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Optional; public interface ViolationRepository extends JpaRepository { List findByFbKey(Integer fbKey); + Optional findTopByFbKeyOrderByViolationKeyDesc(int fbKey); @Transactional @Modifying diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/service/CrackdownStatusService.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/service/CrackdownStatusService.java index 255d5f2f..427cda66 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/service/CrackdownStatusService.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/service/CrackdownStatusService.java @@ -4,7 +4,7 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.service; import com.dbnt.faisp.config.BaseService; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.CrackdownStatusMapper; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.CrackdownStatus; -import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.Sailor; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.Violation; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*; import lombok.RequiredArgsConstructor; @@ -83,16 +83,6 @@ public class CrackdownStatusService extends BaseService { suspectPersonInfoRepository.deleteAllByIdInQuery(internationalCrimeArrest.getDeleteSpiKeyList()); }*/ - if (crackdownStatus.getViolationList() != null) { - for(Violation violation: crackdownStatus.getViolationList()){ - if (violation.getViolationEtc() != null) { - violation.setViolation(violation.getViolationEtc()); - } - violation.setFbKey(crackdownStatus.getFishingBoat().getFbKey()); - } - violationRepository.saveAll(crackdownStatus.getViolationList()); - } - if (crackdownStatus.getSailorList() != null) { for(Sailor sailor: crackdownStatus.getSailorList()){ sailor.setFbKey(crackdownStatus.getFishingBoat().getFbKey()); @@ -100,6 +90,23 @@ public class CrackdownStatusService extends BaseService { sailorRepository.saveAll(crackdownStatus.getSailorList()); } + if (crackdownStatus.getViolationList().get(0).getViolation() != null) { + Violation lastViolation = violationRepository.findTopByFbKeyOrderByViolationKeyDesc(crackdownStatus.getFbKey()).orElse(null); + int violationKey = lastViolation==null?1:(lastViolation.getViolationKey()+1); + + for(Violation violation: crackdownStatus.getViolationList()){ + if (violation.getViolationEtc() != null) { + violation.setViolation(violation.getViolationEtc()); + } + violation.setFbKey(crackdownStatus.getFishingBoat().getFbKey()); + if (violation.getViolationKey() == null) { + violation.setViolationKey(violationKey); + violationKey++; + } + } + violationRepository.saveAll(crackdownStatus.getViolationList()); + } + return cdsKey; } } diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/service/ProcessResultService.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/service/ProcessResultService.java index cc3555e1..1e7225ff 100644 --- a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/service/ProcessResultService.java +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/service/ProcessResultService.java @@ -27,7 +27,6 @@ public class ProcessResultService extends BaseService { private final FishingBoatRepository fishingBoatRepository; private final ViolationRepository violationRepository; private final ProcessResultRepository processResultRepository; - private final SailorRepository sailorRepository; public List selectProcessResultList(ProcessResult processResult) { return processResultMapper.selectProcessResultList(processResult); @@ -41,62 +40,6 @@ public class ProcessResultService extends BaseService { return processResultRepository.findById(prKey).orElse(null); } - @Transactional - public Integer saveCrackdownStatus(CrackdownStatus crackdownStatus) { - if (crackdownStatus.getCrackdownBoatEtc() != null) { - crackdownStatus.setCrackdownBoat(crackdownStatus.getCrackdownBoatEtc()); - } - if (crackdownStatus.getCrackdownPoliceEtc() != null) { - crackdownStatus.setCrackdownPolice(crackdownStatus.getCrackdownPoliceEtc()); - } - - Integer cdsKey = crackdownStatusRepository.save(crackdownStatus).getCdsKey(); - if (crackdownStatus.getFishingBoat() != null) { - if (crackdownStatus.getFishingBoat().getBoatMaterialEtc() != null) { - crackdownStatus.getFishingBoat().setBoatMaterial(crackdownStatus.getFishingBoat().getBoatMaterialEtc()); - } - if (crackdownStatus.getFishingBoat().getFisheryTypeEtc() != null) { - crackdownStatus.getFishingBoat().setFisheryType(crackdownStatus.getFishingBoat().getFisheryTypeEtc()); - } - - crackdownStatus.getFishingBoat().setCdsKey(cdsKey); - Integer fbKey = fishingBoatRepository.save(crackdownStatus.getFishingBoat()).getFbKey(); - crackdownStatus.getFishingBoat().setFbKey(fbKey); - } - - if (crackdownStatus.getProcessResult() != null) { - if (crackdownStatus.getProcessResult().getProcessStatusEtc() != null) { - crackdownStatus.getProcessResult().setProcessStatus(crackdownStatus.getProcessResult().getProcessStatusEtc()); - } - crackdownStatus.getProcessResult().setCdsKey(cdsKey); - Integer prKey = processResultRepository.save(crackdownStatus.getProcessResult()).getPrKey(); - crackdownStatus.getProcessResult().setPrKey(prKey); - } - - /*if (internationalCrimeArrest.getDeleteSpiKeyList() != null) { - suspectPersonInfoRepository.deleteAllByIdInQuery(internationalCrimeArrest.getDeleteSpiKeyList()); - }*/ - - if (crackdownStatus.getViolationList() != null) { - for(Violation violation: crackdownStatus.getViolationList()){ - if (violation.getViolationEtc() != null) { - violation.setViolation(violation.getViolationEtc()); - } - violation.setFbKey(crackdownStatus.getFishingBoat().getFbKey()); - } - violationRepository.saveAll(crackdownStatus.getViolationList()); - } - - if (crackdownStatus.getSailorList() != null) { - for(Sailor sailor: crackdownStatus.getSailorList()){ - sailor.setFbKey(crackdownStatus.getFishingBoat().getFbKey()); - } - sailorRepository.saveAll(crackdownStatus.getSailorList()); - } - - return cdsKey; - } - @Transactional public Integer saveProcessResult(ProcessResult processResult) { if (processResult.getCrackdownStatus().getViolationDeleteKeyList() != null) { @@ -127,12 +70,19 @@ public class ProcessResultService extends BaseService { fishingBoatRepository.save(existingFishingBoat); } - if (processResult.getViolationList() != null) { + if (processResult.getViolationList().get(0).getViolation() != null) { + Violation lastViolation = violationRepository.findTopByFbKeyOrderByViolationKeyDesc(processResult.getCrackdownStatus().getFbKey()).orElse(null); + int violationKey = lastViolation==null?1:(lastViolation.getViolationKey()+1); + for(Violation violation: processResult.getViolationList()){ if (violation.getViolationEtc() != null) { violation.setViolation(violation.getViolationEtc()); } violation.setFbKey(processResult.getFishingBoat().getFbKey()); + if (violation.getViolationKey() == null) { + violation.setViolationKey(violationKey); + violationKey++; + } } violationRepository.saveAll(processResult.getViolationList()); } diff --git a/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/service/SailorService.java b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/service/SailorService.java new file mode 100644 index 00000000..735f31bf --- /dev/null +++ b/src/main/java/com/dbnt/faisp/main/faStatistics/crackdownsStatus/service/SailorService.java @@ -0,0 +1,131 @@ +package com.dbnt.faisp.main.faStatistics.crackdownsStatus.service; + + +import com.dbnt.faisp.config.BaseService; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.SailorMapper; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.*; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.SailorVersion; +import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*; +import com.dbnt.faisp.util.Utils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class SailorService extends BaseService { + + private final SailorMapper sailorMapper; + private final CrackdownStatusRepository crackdownStatusRepository; + private final FishingBoatRepository fishingBoatRepository; + private final ViolationRepository violationRepository; + private final ProcessResultRepository processResultRepository; + private final SailorRepository sailorRepository; + private final SailorVersionRepository sailorVersionRepository; + + public List selectSailorList(Sailor sailor) { + return sailorMapper.selectSailorList(sailor); + } + + public Sailor selectSailor(Integer sailorKey) { + return sailorRepository.findById(sailorKey).orElse(null); + } + + public List selectSailorVersionList(Integer sailorKey) { + return sailorVersionRepository.findBySailorKey(sailorKey); + } + + public SailorVersion selectSailorVersion(Integer versionNo) { + return sailorVersionRepository.findByVersionNo(versionNo); + } + + @Transactional + public Integer saveSailor(Sailor sailor) { + if (sailor.getCrackdownStatus().getViolationDeleteKeyList() != null) { + violationRepository.deleteAllByIdInQuery(sailor.getCrackdownStatus().getViolationDeleteKeyList()); + } + Integer sailorKey = 0; + Sailor existingSailor = sailorRepository.findBySailorKey(sailor.getSailorKey()); + + if (existingSailor != null) { + Utils.copyNonNullProperties(sailor, existingSailor); + existingSailor.setViolationList(null); + sailorKey = sailorRepository.save(existingSailor).getSailorKey(); + saveSailorVersion(existingSailor); + } else { + sailorKey = sailorRepository.save(sailor).getSailorKey(); + saveSailorVersion(sailor); + } + + if (sailor.getCrackdownStatus() != null) { + if (sailor.getCrackdownStatus().getCrackdownPoliceEtc() != null) { + sailor.getCrackdownStatus().setCrackdownPolice(sailor.getCrackdownStatus().getCrackdownPoliceEtc()); + } + + CrackdownStatus existingCrackdownStatus = crackdownStatusRepository.findByCdsKey(sailor.getCrackdownStatus().getCdsKey()); + Utils.copyNonNullProperties(sailor, existingCrackdownStatus); + sailor.setCrackdownStatus(crackdownStatusRepository.save(existingCrackdownStatus)); + } + + if (sailor.getFishingBoat() != null) { + FishingBoat existingFishingBoat = fishingBoatRepository.findByCdsKey(sailor.getCrackdownStatus().getCdsKey()); + Utils.copyNonNullProperties(sailor, existingFishingBoat); + fishingBoatRepository.save(existingFishingBoat); + } + + if (sailor.getViolationList() != null && sailor.getViolationList().get(0).getViolation() != null) { + Violation lastViolation = violationRepository.findTopByFbKeyOrderByViolationKeyDesc(sailor.getCrackdownStatus().getFbKey()).orElse(null); + int violationKey = lastViolation==null?1:(lastViolation.getViolationKey()+1); + + for(Violation violation: sailor.getViolationList()){ + if (violation.getViolationEtc() != null) { + violation.setViolation(violation.getViolationEtc()); + } + violation.setFbKey(sailor.getFishingBoat().getFbKey()); + if (violation.getViolationKey() == null) { + violation.setViolationKey(violationKey); + violationKey++; + } + } + violationRepository.saveAll(sailor.getViolationList()); + } + + return sailorKey; + } + + public void saveSailorVersion(Sailor sailor) { + SailorVersion lastVersion = sailorVersionRepository.findTopBySailorKeyOrderByVersionNoDesc(sailor.getSailorKey()).orElse(null); + int versionNo = lastVersion==null?1:(lastVersion.getVersionNo()+1); + + SailorVersion sailorVersion = new SailorVersion(); + sailorVersion.setVersionNo(versionNo); + sailorVersion.setSailorKey(sailor.getSailorKey()); + sailorVersion.setSailorNameKr(sailor.getSailorNameKr()); + sailorVersion.setSailorNameCn(sailor.getSailorNameCn()); + sailorVersion.setSailorNamePinyin(sailor.getSailorNamePinyin()); + sailorVersion.setSailorContact(sailor.getSailorContact()); + sailorVersion.setBirthdate(sailor.getBirthdate()); + sailorVersion.setResidence(sailor.getResidence()); + sailorVersion.setEducation(sailor.getEducation()); + sailorVersion.setPosition(sailor.getPosition()); + sailorVersion.setCareer(sailor.getCareer()); + sailorVersion.setSimilarCriminalHistory(sailor.getSimilarCriminalHistory()); + sailorVersion.setHeterogeneousCriminalHistory(sailor.getHeterogeneousCriminalHistory()); + sailorVersion.setArrestHistory(sailor.getArrestHistory()); + sailorVersion.setCriminalHistoryDetail(sailor.getCriminalHistoryDetail()); + sailorVersion.setMonthlyWages(sailor.getMonthlyWages()); + sailorVersion.setIsRestriction(sailor.getIsRestriction()); + sailorVersion.setNote(sailor.getNote()); + sailorVersion.setWrtOrgan(sailor.getWrtOrgan()); + sailorVersion.setWrtPart(sailor.getWrtPart()); + sailorVersion.setWrtUserSeq(sailor.getWrtUserSeq()); + sailorVersion.setWrtUserGrd(sailorVersion.getWrtUserGrd()); + sailorVersion.setWrtUserNm(sailor.getWrtUserNm()); + sailorVersion.setWrtDt(sailor.getWrtDt()); + + sailorVersionRepository.save(sailorVersion); + } +} diff --git a/src/main/resources/mybatisMapper/SailorMapper.xml b/src/main/resources/mybatisMapper/SailorMapper.xml new file mode 100644 index 00000000..2f069bcb --- /dev/null +++ b/src/main/resources/mybatisMapper/SailorMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/js/faStatistics/crackdownStatus.js b/src/main/resources/static/js/faStatistics/crackdownStatus.js index 5b58fe4d..d1cd082c 100644 --- a/src/main/resources/static/js/faStatistics/crackdownStatus.js +++ b/src/main/resources/static/js/faStatistics/crackdownStatus.js @@ -19,6 +19,10 @@ $(document).on('click', '.tr', function (){ getCrackdownStatusViewModal($(this).data('key')); }); +$(document).on('change', 'select[name="crackdownPolice"]', function (){ + dynamicOption('select[name="crackdownBoat"]', $(this).val()); +}); + $(document).on('click', '#sailorAddBtn', function (){ $('#sailorDiv').append( '
' diff --git a/src/main/resources/static/js/faStatistics/processResult.js b/src/main/resources/static/js/faStatistics/processResult.js index 00526fc9..22b9354f 100644 --- a/src/main/resources/static/js/faStatistics/processResult.js +++ b/src/main/resources/static/js/faStatistics/processResult.js @@ -209,7 +209,7 @@ function exportExcel(name){ return name; }, getExcelData : function(){ - return document.getElementById('cdsTable'); //TABLE id + return document.getElementById('prTable'); //TABLE id }, getWorksheet : function(){ return XLSX.utils.table_to_sheet(this.getExcelData()); diff --git a/src/main/resources/static/js/faStatistics/sailor.js b/src/main/resources/static/js/faStatistics/sailor.js new file mode 100644 index 00000000..1c366baa --- /dev/null +++ b/src/main/resources/static/js/faStatistics/sailor.js @@ -0,0 +1,314 @@ +$(document).on('click', '#sailorAddBtn', function () { + getSailorAddModal(null); +}); + +$(document).on('click', '#sailorEditBtn', function () { + $("#sailorViewModal").modal('hide'); + getSailorEditModal(Number($("#sailorViewBody").find("[name='sailorKey']").val())); +}); + +$(document).on('click', '#saveSailorBtn', function (){ + saveSailor('N') +}); + +$(document).on('click', '#saveTempBtn', function (){ + saveSailor('Y') +}); + +$(document).on('click', '.tr', function (){ + getSailorViewModal($(this).data('key')); +}); + +$(document).on('click', '#history-tab', function (){ + getSailorHistoryViewModal($('#sailorEditForm').find('input[name="sailorKey"]').val()); +}); + +$(document).on('click', '#sailor-tab', function (){ + getSailorViewModal($('#sailorEditForm').find('input[name="sailorKey"]').val()); +}); + +$(document).on('click', '.version-tr', function (){ + $(this).find('input[name="versionNo"]').prop('checked', true); + getSailorHistoryDetail($(this).find('input[name="versionNo"]').val()); +}); + + +$(document).on('click', '#violationAddBtn', function (){ + let violation = ''; + commonCode.VT.forEach(function (item){ + violation += ''; + }) + + $('#violationDiv').append( + '
' + + '' + + '' + + '
' + ) +}); + + +$(document).on('click', '#violationRemoveBtn', function (){ + $(this).parent().remove(); + let deleteKey = $(this).parent().children("input[name='violationKey']").val(); + $("#sailorEditForm").append(''); +}); + +$(document).on('change', '.violation', function (){ + if ($(this).val() == 'etc') { + $(this).after( + '
' + + '' + + '
' + ); + } else { + $(this).next('.etcDiv').remove(); + } +}); + +$(document).on('change', '#crackdownPolice', function (){ + if ($(this).val() == 'etc') { + $(this).after( + '
' + + '' + + '
' + ); + } else { + $(this).next().remove(); + } +}); + +$(document).on('change', '#crackdownBoat', function (){ + if ($(this).val() == 'etc') { + $(this).after( + '
' + + '' + + '
' + ); + } else { + $(this).next().remove(); + } +}); + +$(document).on('change', 'select[name="boatNameKr"]', function (){ + $('input[name="fbKey"]').val($('select[name="boatNameKr"] option:selected').data('key')); + $('input[name="cdsKey"]').val($('select[name="boatNameKr"] option:selected').data('key2')); +}); + + +$(document).on('click', '#sailorDownExcel', function (){ + exportExcel('불법조업 불법어선 처리현황'); +}); + +function getSailorHistoryDetail(versionNo){ + $.ajax({ + url: '/faStatistics/sailor/sailorHistoryDetail', + data: {versionNo: versionNo}, + type: 'GET', + dataType:"html", + success: function(html){ + $("#historyDetailDiv").empty().append(html); + }, + error:function(){ + + } + }); +} + + +function getSailorViewModal(sailorKey){ + $.ajax({ + url: '/faStatistics/sailor/sailorViewModal', + data: {sailorKey: sailorKey}, + type: 'GET', + dataType:"html", + success: function(html){ + $("#sailorViewBody").empty().append(html) + $("#sailorViewModal").modal('show'); + }, + error:function(){ + + } + }); +} + +function getSailorHistoryViewModal(sailorKey){ + $.ajax({ + url: '/faStatistics/sailor/sailorHistoryViewModal', + data: {sailorKey: sailorKey}, + type: 'GET', + dataType:"html", + success: function(html){ + $("#sailorViewBody").empty().append(html) + $("#sailorViewModal").modal('show'); + }, + error:function(){ + + } + }); +} + + +function getSailorEditModal(sailorKey){ + $.ajax({ + url: '/faStatistics/sailor/sailorEditModal', + data: { + sailorKey: sailorKey + }, + type: 'GET', + dataType:"html", + success: function(html){ + $("#sailorViewBody").empty(); + $("#sailorEditModalContent").empty().append(html); + $("#sailorEditModal").modal('show'); + + $("#birthdate").datepicker({ + format: "yyyy-mm-dd", + language: "ko" + }); + }, + error:function(){ + + } + }); +} + +function getSailorAddModal(){ + $.ajax({ + url: '/faStatistics/sailor/sailorAddModal', + type: 'GET', + dataType:"html", + success: function(html){ + $("#sailorAddModalContent").empty().append(html); + $("#sailorAddModal").modal('show'); + }, + error:function(){ + + } + }); +} + +function saveSailor(saveYn){ + /*$('input[name="warrantReqTakeTime"]').val(dateTimeCalc($("#consignmentStartDt").val(), $("#consignmentEndDt").val()));*/ + + if(contentCheck()){ + if(confirm("저장하시겠습니까?")){ + $("#saveYn").val(saveYn); + contentFade("in"); + const formData = new FormData($("#sailorEditForm")[0]); + + let violationList = []; + + $(".violation").each(function (){ + violationList.push({ + violationKey: $(this).parent().find('input[name="violationKey"]').val() != undefined ? Number($(this).parent().find('input[name="violationKey"]').val()) : null, + fbKey: $("#sailorEditForm").find('input[name="fbKey"]').val() != undefined ? Number($("#sailorEditForm").find('input[name="fbKey"]').val()) : null, + violation: $(this).val() != '' ? $(this).val() : null, + violationEtc: $(this).parent().find('input[name="violationEtc"]').val() != undefined ? $(this).parent().find('input[name="violationEtc"]').val() : null + }); + }); + + for (let i=0; i < violationList.length; i++) { + if (violationList[i].violationKey != null) { + formData.append(`violationList[${i}].violationKey`, violationList[i].violationKey); + } + if (violationList[i].fbKey != null) { + formData.append(`violationList[${i}].fbKey`, violationList[i].fbKey); + } + if (violationList[i].violation != null) { + formData.append(`violationList[${i}].violation`, violationList[i].violation); + } + if (violationList[i].violationEtc != null) { + formData.append(`violationList[${i}].violationEtc`, violationList[i].violationEtc); + } + } + + $.ajax({ + type : 'POST', + data : formData, + url : "/faStatistics/sailor/saveSailor", + processData: false, + contentType: false, + success : function(result) { + alert("저장되었습니다."); + contentFade("out"); + $("#sailorEditModal").modal('hide'); + $("#sailorAddModal").modal('hide'); + }, + error : function(xhr, status) { + alert("저장에 실패하였습니다.") + contentFade("out"); + } + }) + } + } +} + +function contentCheck(){ + let flag = true; + return flag; +} + +function exportExcel(name){ + var excelHandler = { + getExcelFileName : function(){ + return name+getToday()+'.xlsx'; //파일명 + }, + getSheetName : function(){ + return name; + }, + getExcelData : function(){ + return document.getElementById('sailorTable'); //TABLE id + }, + getWorksheet : function(){ + return XLSX.utils.table_to_sheet(this.getExcelData()); + } + } + // step 1. workbook 생성 + var wb = XLSX.utils.book_new(); + + // step 2. 시트 만들기 + var newWorksheet = excelHandler.getWorksheet(); + + // step 3. workbook에 새로만든 워크시트에 이름을 주고 붙인다. + XLSX.utils.book_append_sheet(wb, newWorksheet, excelHandler.getSheetName()); + + // step 4. 엑셀 파일 만들기 + var wbout = XLSX.write(wb, {bookType:'xlsx', type: 'binary'}); + + // step 5. 엑셀 파일 내보내기 + saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), excelHandler.getExcelFileName()); +} + +function s2ab(s) { + var buf = new ArrayBuffer(s.length); //convert s to arrayBuffer + var view = new Uint8Array(buf); //create uint8array as viewer + for (var i=0; i @@ -38,7 +39,7 @@
- +
@@ -203,7 +204,7 @@ - + @@ -246,11 +247,13 @@ - - + + + + - - + + diff --git a/src/main/resources/templates/faStatistics/crackdownStatus/crackdownStatusEditModal.html b/src/main/resources/templates/faStatistics/crackdownStatus/crackdownStatusEditModal.html index f41cdb0c..7d26a5f1 100644 --- a/src/main/resources/templates/faStatistics/crackdownStatus/crackdownStatusEditModal.html +++ b/src/main/resources/templates/faStatistics/crackdownStatus/crackdownStatusEditModal.html @@ -148,18 +148,17 @@ -
diff --git a/src/main/resources/templates/faStatistics/crackdownStatus/crackdownStatusViewModal.html b/src/main/resources/templates/faStatistics/crackdownStatus/crackdownStatusViewModal.html index c6ed0ecf..1504f9da 100644 --- a/src/main/resources/templates/faStatistics/crackdownStatus/crackdownStatusViewModal.html +++ b/src/main/resources/templates/faStatistics/crackdownStatus/crackdownStatusViewModal.html @@ -151,11 +151,11 @@
diff --git a/src/main/resources/templates/faStatistics/sailor/sailor.html b/src/main/resources/templates/faStatistics/sailor/sailor.html new file mode 100644 index 00000000..192ff5f6 --- /dev/null +++ b/src/main/resources/templates/faStatistics/sailor/sailor.html @@ -0,0 +1,280 @@ + + + + + + +
+
+

선원 세부 현황

+ + +
+
+
+
+ +
+
+ +
+
+
+ + +
+
+
+ +
+
연번
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
연번선박명나포일시단속경찰서단속함정위반장소위반내용선원명생년월일거주지(성기준)학력선박 내 직책승선경력동종 범죄경력이종 범죄경력검거이력
(나포이력, 선원 포함)
범죄경력
세부내용
임금
(월급여)
비고최종수정일
한글중문요녕성산동성흑룡강성하남성길림성내몽고하북성호남성안휘성산서성강소성사천성섬서성절강성강동성기타확인불가초등
중퇴
초등
졸업
중등
중퇴
중등
졸업
고등
중퇴
고등
졸업
대학
중퇴
대졸
이상
확인
불가
선장항해장기관장기타
간부선원
일반선원
또는
확인불가
1년미만1년이상
~
3년미만
3년이상
~
5년미만
5년이상
~
10년미만
10년이상확인불가1건2건3건4건
이상
없음1건2건3건4건
이상
없음1건2건3건4건
이상
없음
+ ~ + +
+
+ + + +
+
+
+
+
+
+
+ + + +
+ + +
+
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/faStatistics/sailor/sailorAddModal.html b/src/main/resources/templates/faStatistics/sailor/sailorAddModal.html new file mode 100644 index 00000000..91a5086b --- /dev/null +++ b/src/main/resources/templates/faStatistics/sailor/sailorAddModal.html @@ -0,0 +1,142 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/faStatistics/sailor/sailorEditModal.html b/src/main/resources/templates/faStatistics/sailor/sailorEditModal.html new file mode 100644 index 00000000..0decac58 --- /dev/null +++ b/src/main/resources/templates/faStatistics/sailor/sailorEditModal.html @@ -0,0 +1,208 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/faStatistics/sailor/sailorHistoryDetail.html b/src/main/resources/templates/faStatistics/sailor/sailorHistoryDetail.html new file mode 100644 index 00000000..bc60bb22 --- /dev/null +++ b/src/main/resources/templates/faStatistics/sailor/sailorHistoryDetail.html @@ -0,0 +1,114 @@ + + +
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+ \ No newline at end of file diff --git a/src/main/resources/templates/faStatistics/sailor/sailorHistoryViewModal.html b/src/main/resources/templates/faStatistics/sailor/sailorHistoryViewModal.html new file mode 100644 index 00000000..d161a3e5 --- /dev/null +++ b/src/main/resources/templates/faStatistics/sailor/sailorHistoryViewModal.html @@ -0,0 +1,136 @@ + + + + + + + + + + +
+
+ +
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/faStatistics/sailor/sailorViewModal.html b/src/main/resources/templates/faStatistics/sailor/sailorViewModal.html new file mode 100644 index 00000000..a13bc19c --- /dev/null +++ b/src/main/resources/templates/faStatistics/sailor/sailorViewModal.html @@ -0,0 +1,228 @@ + + + + + + + +
+
+ +
+
+ + \ No newline at end of file