Compare commits

..

2 Commits

38 changed files with 2053 additions and 840 deletions

View File

@ -1,13 +1,12 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus; package com.dbnt.faisp.main.faStatistics.crackdownsStatus;
import com.dbnt.faisp.main.authMgt.service.AuthMgtService; 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.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.ProcessResult; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatusVersion;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.FishingBoatRepository; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResult;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.ProcessResultRepository; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResultVersion;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.SailorRepository; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.ViolationRepository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.CrackdownStatusService; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.CrackdownStatusService;
import com.dbnt.faisp.main.userInfo.model.UserInfo; import com.dbnt.faisp.main.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -101,6 +100,26 @@ public class CrackdownStatusController {
return mav; return mav;
} }
@GetMapping("/crackdownStatus/crackdownStatusHistoryViewModal")
public ModelAndView crackdownStatusHistoryViewModal(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatus crackdownStatus){
ModelAndView mav = new ModelAndView("faStatistics/crackdownStatus/crackdownStatusHistoryViewModal");
List<CrackdownStatusVersion> crackdownStatusVersionList = crackdownStatusService.selectCrackdownStatusVersionList(crackdownStatus.getCdsKey());
mav.addObject("crackdownStatusVersionList", crackdownStatusVersionList);
mav.addObject("crackdownStatus", crackdownStatus);
return mav;
}
@GetMapping("/crackdownStatus/crackdownStatusHistoryDetail")
public ModelAndView crackdownStatusHistoryDetail(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatusVersion crackdownStatusVersion){
ModelAndView mav = new ModelAndView("faStatistics/crackdownStatus/crackdownStatusHistoryDetail");
crackdownStatusVersion = crackdownStatusService.selectCrackdownStatusVersion(crackdownStatusVersion.getVersionNo(), crackdownStatusVersion.getCdsKey());
mav.addObject("crackdownStatusVersion", crackdownStatusVersion);
return mav;
}
@PostMapping("/crackdownStatus/saveCrackdownStatus") @PostMapping("/crackdownStatus/saveCrackdownStatus")
public Integer saveCrackdownStatus(@AuthenticationPrincipal UserInfo loginUser, public Integer saveCrackdownStatus(@AuthenticationPrincipal UserInfo loginUser,
CrackdownStatus crackdownStatus, CrackdownStatus crackdownStatus,

View File

@ -2,14 +2,10 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus;
import com.dbnt.faisp.main.authMgt.service.AuthMgtService; import com.dbnt.faisp.main.authMgt.service.AuthMgtService;
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService; import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.CrackdownStatus; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.ProcessResult; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResult;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.CrackdownStatusRepository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.FishingBoatRepository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.ViolationRepository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.FishingBoatService; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.FishingBoatService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.ProcessResultService;
import com.dbnt.faisp.main.userInfo.model.UserInfo; import com.dbnt.faisp.main.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.core.annotation.AuthenticationPrincipal;
@ -20,7 +16,6 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor

View File

@ -1,19 +1,17 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus; package com.dbnt.faisp.main.faStatistics.crackdownsStatus;
import com.dbnt.faisp.main.authMgt.service.AuthMgtService; 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.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.ProcessResult; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResult;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResultVersion;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.CrackdownStatusService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.ProcessResultService; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.ProcessResultService;
import com.dbnt.faisp.main.userInfo.model.UserInfo; import com.dbnt.faisp.main.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
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 org.springframework.web.servlet.ModelAndView;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -90,6 +88,58 @@ public class ProcessResultController {
return mav; return mav;
} }
@GetMapping("/processResult/processResultHistoryViewModal")
public ModelAndView processResultHistoryViewModal(@AuthenticationPrincipal UserInfo loginUser, ProcessResult processResult){
ModelAndView mav = new ModelAndView("faStatistics/processResult/processResultHistoryViewModal");
List<ProcessResultVersion> processReulstVersionList = processResultService.selectProcessResultVersionList(processResult.getPrKey());
mav.addObject("processReulstVersionList", processReulstVersionList);
mav.addObject("processResult", processResult);
return mav;
}
@GetMapping("/processResult/processResultHistoryDetail")
public ModelAndView processResultHistoryDetail(@AuthenticationPrincipal UserInfo loginUser, ProcessResultVersion processResultVersion){
ModelAndView mav = new ModelAndView("faStatistics/processResult/processResultHistoryDetail");
Integer cdsKey = processResultVersion.getCdsKey();
Integer fbKey = processResultVersion.getFbKey();
processResultVersion = processResultService.selectProcessResultVersion(processResultVersion.getVersionNo(), processResultVersion.getPrKey());
processResultVersion.setFishingBoat(fishingBoatRepository.findByFbKey(fbKey).orElse(null));
processResultVersion.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(cdsKey).orElse(null));
processResultVersion.setViolationList(violationRepository.findByFbKey(fbKey));
mav.addObject("processResultVersion", processResultVersion);
return mav;
}
@GetMapping("/processResult/processResultAddModal")
public ModelAndView sailorAddModal(@AuthenticationPrincipal UserInfo loginUser, ProcessResult processResult){
ModelAndView mav = new ModelAndView("faStatistics/processResult/processResultAddModal");
processResult.setCrackdownStatusList(crackdownStatusRepository.findAll());
processResult.setWrtOrgan(loginUser.getOgCd());
processResult.setWrtUserNm(loginUser.getUserNm());
processResult.setWrtDt(LocalDateTime.now());
mav.addObject("processResult", processResult);
return mav;
}
@PostMapping("/processResult/getProcessResult")
public ProcessResult getProcessResult(@AuthenticationPrincipal UserInfo loginUser, ProcessResult processResult){
processResult = processResultRepository.findByCdsKey(processResult.getCdsKey()).orElse(null);
processResult.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(processResult.getCdsKey()).orElse(null));
processResult.setFishingBoat(fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).orElse(null));
processResult.setWrtOrgan(loginUser.getOgCd());
processResult.setWrtUserNm(loginUser.getUserNm());
processResult.setWrtDt(LocalDateTime.now());
return processResult;
}
@PostMapping("/processResult/saveProcessResult") @PostMapping("/processResult/saveProcessResult")
public Integer saveProcessResult(@AuthenticationPrincipal UserInfo loginUser, public Integer saveProcessResult(@AuthenticationPrincipal UserInfo loginUser,
CrackdownStatus crackdownStatus, CrackdownStatus crackdownStatus,

View File

@ -1,7 +1,7 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus; package com.dbnt.faisp.main.faStatistics.crackdownsStatus;
import com.dbnt.faisp.main.authMgt.service.AuthMgtService; 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.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat; 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.Sailor;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.SailorVersion; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.SailorVersion;
@ -74,6 +74,7 @@ public class SailorController {
List<SailorVersion> sailorVersionList = sailorService.selectSailorVersionList(sailor.getSailorKey()); List<SailorVersion> sailorVersionList = sailorService.selectSailorVersionList(sailor.getSailorKey());
mav.addObject("sailorVersionList", sailorVersionList); mav.addObject("sailorVersionList", sailorVersionList);
mav.addObject("sailor", sailor);
return mav; return mav;
} }
@ -81,8 +82,12 @@ public class SailorController {
public ModelAndView sailorHistoryDetail(@AuthenticationPrincipal UserInfo loginUser, SailorVersion sailorVersion){ public ModelAndView sailorHistoryDetail(@AuthenticationPrincipal UserInfo loginUser, SailorVersion sailorVersion){
ModelAndView mav = new ModelAndView("faStatistics/sailor/sailorHistoryDetail"); ModelAndView mav = new ModelAndView("faStatistics/sailor/sailorHistoryDetail");
sailorVersion = sailorService.selectSailorVersion(sailorVersion.getVersionNo()); Integer cdsKey = sailorVersion.getCdsKey();
sailorVersion.setFishingBoat(fishingBoatRepository.findByFbKey(7).orElse(null)); Integer fbKey = sailorVersion.getFbKey();
sailorVersion = sailorService.selectSailorVersion(sailorVersion.getVersionNo(), sailorVersion.getSailorKey());
sailorVersion.setFishingBoat(fishingBoatRepository.findByFbKey(fbKey).orElse(null));
sailorVersion.setCrackdownStatus(crackdownStatusRepository.findByCdsKey(cdsKey).orElse(null));
mav.addObject("sailorVersion", sailorVersion); mav.addObject("sailorVersion", sailorVersion);
return mav; return mav;

View File

@ -1,7 +1,6 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper; package com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.CrackdownStatus; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.ProcessResult;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;

View File

@ -1,6 +1,6 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper; package com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.ProcessResult; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResult;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;

View File

@ -0,0 +1,83 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus;
import com.dbnt.faisp.config.BaseModel;
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.processResult.ProcessResult;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor;
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.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "crackdown_status")
public class CrackdownStatus extends CrackdownStatusBaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cds_key")
private Integer cdsKey;
@Transient
private List<Violation> violationList;
@Transient
private FishingBoat fishingBoat;
@Transient
private ProcessResult processResult;
@Transient
private List<Sailor> sailorList;
@Transient
private String crackdownPoliceEtc;
@Transient
private String crackdownBoatEtc;
@Transient
private Integer fbKey;
@Transient
private Integer restrictionCaptin;
@Transient
private Integer notRestrictionCaptin;
@Transient
private Integer restrictionMate;
@Transient
private Integer notRestrictionMate;
@Transient
private Integer restrictionWarden;
@Transient
private Integer notRestrictionWarden;
@Transient
private Integer restrictionSailor;
@Transient
private Integer notRestrictionSailor;
@Transient
private Integer restrictionTotal;
@Transient
private Integer notRestrictionTotal;
@Transient
private Integer unlicensedOperationTotal;
@Transient
private Integer specificImpossibilityTotal;
@Transient
private Integer eezTotal;
@Transient
private Integer invasionTerritorialWatersTotal;
@Transient
private List<Integer> violationDeleteKeyList;
@Transient
private List<Integer> sailorDeleteKeyList;
}

View File

@ -1,6 +1,9 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model; package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus;
import com.dbnt.faisp.config.BaseModel; import com.dbnt.faisp.config.BaseModel;
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.processResult.ProcessResult;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -16,17 +19,9 @@ import java.util.List;
@Getter @Getter
@Setter @Setter
@Entity
@NoArgsConstructor @NoArgsConstructor
@DynamicInsert @MappedSuperclass
@DynamicUpdate public class CrackdownStatusBaseEntity extends BaseModel {
@Table(name = "crackdown_status")
public class CrackdownStatus extends BaseModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cds_key")
private Integer cdsKey;
@Column(name = "case_num") @Column(name = "case_num")
private String caseNum; private String caseNum;
@ -129,54 +124,4 @@ public class CrackdownStatus extends BaseModel {
@Column(name = "wrt_dt") @Column(name = "wrt_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime wrtDt; private LocalDateTime wrtDt;
@Transient
private List<Violation> violationList;
@Transient
private FishingBoat fishingBoat;
@Transient
private ProcessResult processResult;
@Transient
private List<Sailor> sailorList;
@Transient
private String crackdownPoliceEtc;
@Transient
private String crackdownBoatEtc;
@Transient
private Integer fbKey;
@Transient
private Integer restrictionCaptin;
@Transient
private Integer notRestrictionCaptin;
@Transient
private Integer restrictionMate;
@Transient
private Integer notRestrictionMate;
@Transient
private Integer restrictionWarden;
@Transient
private Integer notRestrictionWarden;
@Transient
private Integer restrictionSailor;
@Transient
private Integer notRestrictionSailor;
@Transient
private Integer restrictionTotal;
@Transient
private Integer notRestrictionTotal;
@Transient
private Integer unlicensedOperationTotal;
@Transient
private Integer specificImpossibilityTotal;
@Transient
private Integer eezTotal;
@Transient
private Integer invasionTerritorialWatersTotal;
@Transient
private List<Integer> violationDeleteKeyList;
@Transient
private List<Integer> sailorDeleteKeyList;
} }

View File

@ -0,0 +1,36 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus;
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 = "crackdown_status_version")
@IdClass(CrackdownStatusVersion.CrackdownStatusVersionId.class)
public class CrackdownStatusVersion extends CrackdownStatusBaseEntity {
@Id
@Column(name = "cds_key")
private Integer cdsKey;
@Id
@Column(name = "version_no")
private Integer versionNo;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class CrackdownStatusVersionId implements Serializable {
private Integer cdsKey;
private Integer versionNo;
}
}

View File

@ -0,0 +1,51 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.Violation;
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 = "process_result")
public class ProcessResult extends ProcessResultBaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "pr_key")
private Integer prKey;
@Column(name = "cds_key")
private Integer cdsKey;
@Transient
private CrackdownStatus crackdownStatus;
@Transient
private List<Violation> violationList;
@Transient
private FishingBoat fishingBoat;
@Transient
private String boatNameKr;
@Transient
private Integer fbKey;
@Transient
private String processStatusEtc;
@Transient
private String executionDetailEtc;
@Transient
private List<CrackdownStatus> crackdownStatusList;
@Transient
private List<FishingBoat> fishingBoatList;
}

View File

@ -1,34 +1,20 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model; package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult;
import com.dbnt.faisp.config.BaseModel; import com.dbnt.faisp.config.BaseModel;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*; import javax.persistence.*;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Getter @Getter
@Setter @Setter
@Entity @MappedSuperclass
@NoArgsConstructor @NoArgsConstructor
@DynamicInsert public class ProcessResultBaseEntity extends BaseModel {
@DynamicUpdate
@Table(name = "process_result")
public class ProcessResult extends BaseModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "pr_key")
private Integer prKey;
@Column(name = "cds_key")
private Integer cdsKey;
@Column(name = "process_status") @Column(name = "process_status")
private String processStatus; private String processStatus;
@ -134,20 +120,4 @@ public class ProcessResult extends BaseModel {
@Column(name = "wrt_dt") @Column(name = "wrt_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime wrtDt; private LocalDateTime wrtDt;
@Transient
private CrackdownStatus crackdownStatus;
@Transient
private List<Violation> violationList;
@Transient
private FishingBoat fishingBoat;
@Transient
private String boatNameKr;
@Transient
private Integer fbKey;
@Transient
private String processStatusEtc;
@Transient
private String executionDetailEtc;
} }

View File

@ -0,0 +1,51 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult;
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.crackdownStatus.CrackdownStatus;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.io.Serializable;
import java.util.List;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "process_result_version")
@IdClass(ProcessResultVersion.ProcessResultVersionId.class)
public class ProcessResultVersion extends ProcessResultBaseEntity {
@Id
@Column(name = "pr_key")
private Integer prKey;
@Id
@Column(name = "version_no")
private Integer versionNo;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class ProcessResultVersionId implements Serializable {
private Integer prKey;
private Integer versionNo;
}
@Transient
private Integer cdsKey;
@Transient
private Integer fbKey;
@Transient
private CrackdownStatus crackdownStatus;
@Transient
private FishingBoat fishingBoat;
@Transient
private List<Violation> violationList;
}

View File

@ -1,9 +1,8 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor; 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.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat; 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.Violation;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.SailorBaseEntity;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
@ -30,6 +29,8 @@ public class Sailor extends SailorBaseEntity {
@Column(name = "fb_key") @Column(name = "fb_key")
private Integer fbKey; private Integer fbKey;
@Transient
private Integer cdsKey;
@Transient @Transient
private CrackdownStatus crackdownStatus; private CrackdownStatus crackdownStatus;
@Transient @Transient

View File

@ -1,6 +1,6 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor; 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.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat;
import lombok.*; import lombok.*;
import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicInsert;
@ -41,6 +41,10 @@ public class SailorVersion extends SailorBaseEntity {
@Transient @Transient
private FishingBoatVersion fishingBoatVersion;*/ private FishingBoatVersion fishingBoatVersion;*/
@Transient
private Integer cdsKey;
@Transient
private Integer fbKey;
@Transient @Transient
private CrackdownStatus crackdownStatus; private CrackdownStatus crackdownStatus;
@Transient @Transient

View File

@ -1,6 +1,6 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository; package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.CrackdownStatus; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional; import java.util.Optional;

View File

@ -0,0 +1,14 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatusVersion;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface CrackdownStatusVersionRepository extends JpaRepository<CrackdownStatusVersion, CrackdownStatusVersion.CrackdownStatusVersionId> {
Optional<CrackdownStatusVersion> findTopByCdsKeyOrderByVersionNoDesc(Integer cdsKey);
List<CrackdownStatusVersion> findByCdsKey(Integer cdsKey);
CrackdownStatusVersion findByVersionNoAndCdsKey(Integer versionNo, Integer cdsKey);
}

View File

@ -1,6 +1,6 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository; package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.ProcessResult; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResult;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional; import java.util.Optional;

View File

@ -0,0 +1,14 @@
package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResultVersion;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface ProcessResultVersionRepository extends JpaRepository<ProcessResultVersion, ProcessResultVersion.ProcessResultVersionId> {
Optional<ProcessResultVersion> findTopByPrKeyOrderByVersionNoDesc(Integer prKey);
List<ProcessResultVersion> findByPrKey(Integer prKey);
ProcessResultVersion findByVersionNoAndPrKey(Integer versionNo, Integer prKey);
}

View File

@ -10,5 +10,5 @@ public interface SailorVersionRepository extends JpaRepository<SailorVersion, Sa
Optional<SailorVersion> findTopBySailorKeyOrderByVersionNoDesc(Integer sailorKey); Optional<SailorVersion> findTopBySailorKeyOrderByVersionNoDesc(Integer sailorKey);
List<SailorVersion> findBySailorKey(Integer sailorKey); List<SailorVersion> findBySailorKey(Integer sailorKey);
SailorVersion findByVersionNo(Integer versionNo); SailorVersion findByVersionNoAndSailorKey(Integer versionNo, Integer sailorKey);
} }

View File

@ -3,7 +3,10 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.service;
import com.dbnt.faisp.config.BaseService; import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.CrackdownStatusMapper; 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.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatusVersion;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResult;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResultVersion;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.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.model.Violation;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*;
@ -19,6 +22,7 @@ public class CrackdownStatusService extends BaseService {
private final CrackdownStatusMapper crackdownStatusMapper; private final CrackdownStatusMapper crackdownStatusMapper;
private final CrackdownStatusRepository crackdownStatusRepository; private final CrackdownStatusRepository crackdownStatusRepository;
private final CrackdownStatusVersionRepository crackdownStatusVersionRepository;
private final FishingBoatRepository fishingBoatRepository; private final FishingBoatRepository fishingBoatRepository;
private final ViolationRepository violationRepository; private final ViolationRepository violationRepository;
private final ProcessResultRepository processResultRepository; private final ProcessResultRepository processResultRepository;
@ -40,6 +44,14 @@ public class CrackdownStatusService extends BaseService {
return savedCrackdownStatus; return savedCrackdownStatus;
} }
public List<CrackdownStatusVersion> selectCrackdownStatusVersionList(Integer cdsKey) {
return crackdownStatusVersionRepository.findByCdsKey(cdsKey);
}
public CrackdownStatusVersion selectCrackdownStatusVersion(Integer versionNo, Integer cdsKey) {
return crackdownStatusVersionRepository.findByVersionNoAndCdsKey(versionNo, cdsKey);
}
@Transactional @Transactional
public Integer saveCrackdownStatus(CrackdownStatus crackdownStatus) { public Integer saveCrackdownStatus(CrackdownStatus crackdownStatus) {
if (crackdownStatus.getViolationDeleteKeyList() != null) { if (crackdownStatus.getViolationDeleteKeyList() != null) {
@ -57,6 +69,8 @@ public class CrackdownStatusService extends BaseService {
} }
Integer cdsKey = crackdownStatusRepository.save(crackdownStatus).getCdsKey(); Integer cdsKey = crackdownStatusRepository.save(crackdownStatus).getCdsKey();
saveCrackdownStatusVersion(crackdownStatus);
if (crackdownStatus.getFishingBoat() != null) { if (crackdownStatus.getFishingBoat() != null) {
if (crackdownStatus.getFishingBoat().getBoatMaterialEtc() != null) { if (crackdownStatus.getFishingBoat().getBoatMaterialEtc() != null) {
crackdownStatus.getFishingBoat().setBoatMaterial(crackdownStatus.getFishingBoat().getBoatMaterialEtc()); crackdownStatus.getFishingBoat().setBoatMaterial(crackdownStatus.getFishingBoat().getBoatMaterialEtc());
@ -109,4 +123,46 @@ public class CrackdownStatusService extends BaseService {
return cdsKey; return cdsKey;
} }
public void saveCrackdownStatusVersion(CrackdownStatus crackdownStatus) {
CrackdownStatusVersion lastVersion = crackdownStatusVersionRepository.findTopByCdsKeyOrderByVersionNoDesc(crackdownStatus.getCdsKey()).orElse(null);
int versionNo = lastVersion==null?1:(lastVersion.getVersionNo()+1);
CrackdownStatusVersion crackdownStatusVersion = new CrackdownStatusVersion();
crackdownStatusVersion.setVersionNo(versionNo);
crackdownStatusVersion.setCdsKey(crackdownStatus.getCdsKey());
crackdownStatusVersion.setCaseNum(crackdownStatus.getCaseNum());
crackdownStatusVersion.setNapoDt(crackdownStatus.getNapoDt());
crackdownStatusVersion.setNapoSeaPointLon(crackdownStatus.getNapoSeaPointLon());
crackdownStatusVersion.setNapoSeaPointLat(crackdownStatus.getNapoSeaPointLat());
crackdownStatusVersion.setNapoSeaPointDetail(crackdownStatus.getNapoSeaPointDetail());
crackdownStatusVersion.setInvasionType(crackdownStatus.getInvasionType());
crackdownStatusVersion.setNll(crackdownStatus.getNll());
crackdownStatusVersion.setCaseAgency(crackdownStatus.getCaseAgency());
crackdownStatusVersion.setCasePoliceOfficer(crackdownStatus.getCasePoliceOfficer());
crackdownStatusVersion.setCrackdownBoat(crackdownStatus.getCrackdownBoat());
crackdownStatusVersion.setCrackdownPolice(crackdownStatus.getCrackdownPolice());
crackdownStatusVersion.setMmsi(crackdownStatus.getMmsi());
crackdownStatusVersion.setFieldIvsgt(crackdownStatus.getFieldIvsgt());
crackdownStatusVersion.setPersonDamageCnt(crackdownStatus.getPersonDamageCnt());
crackdownStatusVersion.setPersonDamageAmount(crackdownStatus.getPersonDamageAmount());
crackdownStatusVersion.setPersonDamageDetail(crackdownStatus.getPersonDamageDetail());
crackdownStatusVersion.setMaterialDamageCnt(crackdownStatus.getMaterialDamageCnt());
crackdownStatusVersion.setMaterialDamageAmount(crackdownStatus.getMaterialDamageAmount());
crackdownStatusVersion.setMaterialDamageDetail(crackdownStatus.getMaterialDamageDetail());
crackdownStatusVersion.setFieldIvsgtNapoDt(crackdownStatus.getFieldIvsgtNapoDt());
crackdownStatusVersion.setFieldIvsgtReleaseDt(crackdownStatus.getFieldIvsgtReleaseDt());
crackdownStatusVersion.setFieldIvsgtTimeTaken(crackdownStatus.getFieldIvsgtTimeTaken());
crackdownStatusVersion.setPressurizedStartDt(crackdownStatus.getPressurizedStartDt());
crackdownStatusVersion.setPressurizedEndDt(crackdownStatus.getPressurizedEndDt());
crackdownStatusVersion.setDistance(crackdownStatus.getDistance());
crackdownStatusVersion.setWrtOrgan(crackdownStatus.getWrtOrgan());
crackdownStatusVersion.setWrtPart(crackdownStatus.getWrtPart());
crackdownStatusVersion.setWrtUserSeq(crackdownStatus.getWrtUserSeq());
crackdownStatusVersion.setWrtUserGrd(crackdownStatus.getWrtUserGrd());
crackdownStatusVersion.setWrtUserNm(crackdownStatus.getWrtUserNm());
crackdownStatusVersion.setWrtDt(crackdownStatus.getWrtDt());
crackdownStatusVersionRepository.save(crackdownStatusVersion);
}
} }

View File

@ -4,14 +4,14 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.service;
import com.dbnt.faisp.config.BaseService; import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.CrackdownStatusMapper; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.CrackdownStatusMapper;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.*; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.*;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResult;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class FishingBoatService extends BaseService { public class FishingBoatService extends BaseService {

View File

@ -2,21 +2,20 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.service;
import com.dbnt.faisp.config.BaseService; import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.CrackdownStatusMapper;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.ProcessResultMapper; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.ProcessResultMapper;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.*; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.*;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResult;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.processResult.ProcessResultVersion;
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.repository.*;
import com.dbnt.faisp.util.Utils; import com.dbnt.faisp.util.Utils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@ -27,6 +26,7 @@ public class ProcessResultService extends BaseService {
private final FishingBoatRepository fishingBoatRepository; private final FishingBoatRepository fishingBoatRepository;
private final ViolationRepository violationRepository; private final ViolationRepository violationRepository;
private final ProcessResultRepository processResultRepository; private final ProcessResultRepository processResultRepository;
private final ProcessResultVersionRepository processResultVersionRepository;
public List<ProcessResult> selectProcessResultList(ProcessResult processResult) { public List<ProcessResult> selectProcessResultList(ProcessResult processResult) {
return processResultMapper.selectProcessResultList(processResult); return processResultMapper.selectProcessResultList(processResult);
@ -40,6 +40,14 @@ public class ProcessResultService extends BaseService {
return processResultRepository.findById(prKey).orElse(null); return processResultRepository.findById(prKey).orElse(null);
} }
public List<ProcessResultVersion> selectProcessResultVersionList(Integer prKey) {
return processResultVersionRepository.findByPrKey(prKey);
}
public ProcessResultVersion selectProcessResultVersion(Integer versionNo, Integer prKey) {
return processResultVersionRepository.findByVersionNoAndPrKey(versionNo, prKey);
}
@Transactional @Transactional
public Integer saveProcessResult(ProcessResult processResult) { public Integer saveProcessResult(ProcessResult processResult) {
if (processResult.getCrackdownStatus().getViolationDeleteKeyList() != null) { if (processResult.getCrackdownStatus().getViolationDeleteKeyList() != null) {
@ -50,11 +58,22 @@ public class ProcessResultService extends BaseService {
processResult.setExecutionDetail(processResult.getExecutionDetailEtc()); processResult.setExecutionDetail(processResult.getExecutionDetailEtc());
} }
Integer prKey = 0;
ProcessResult existingProcessResult = processResultRepository.findByPrKey(processResult.getPrKey()).orElse(null); ProcessResult existingProcessResult = processResultRepository.findByPrKey(processResult.getPrKey()).orElse(null);
Utils.copyNonNullProperties(processResult, existingProcessResult);
Integer prKey = processResultRepository.save(existingProcessResult).getPrKey();
if (processResult.getCrackdownStatus() != null) { if (existingProcessResult != null) {
Utils.copyNonNullProperties(processResult, existingProcessResult);
existingProcessResult.setCrackdownStatus(null);
existingProcessResult.setFishingBoat(null);
existingProcessResult.setViolationList(null);
prKey = processResultRepository.save(existingProcessResult).getPrKey();
saveProcessResultVersion(existingProcessResult);
} else {
prKey = processResultRepository.save(processResult).getPrKey();
saveProcessResultVersion(processResult);
}
/*if (processResult.getCrackdownStatus() != null) {
if (processResult.getCrackdownStatus().getCrackdownPoliceEtc() != null) { if (processResult.getCrackdownStatus().getCrackdownPoliceEtc() != null) {
processResult.getCrackdownStatus().setCrackdownPolice(processResult.getCrackdownStatus().getCrackdownPoliceEtc()); processResult.getCrackdownStatus().setCrackdownPolice(processResult.getCrackdownStatus().getCrackdownPoliceEtc());
} }
@ -62,15 +81,15 @@ public class ProcessResultService extends BaseService {
CrackdownStatus existingCrackdownStatus = crackdownStatusRepository.findByCdsKey(processResult.getCdsKey()).orElse(null); CrackdownStatus existingCrackdownStatus = crackdownStatusRepository.findByCdsKey(processResult.getCdsKey()).orElse(null);
Utils.copyNonNullProperties(processResult, existingCrackdownStatus); Utils.copyNonNullProperties(processResult, existingCrackdownStatus);
processResult.setCrackdownStatus(crackdownStatusRepository.save(existingCrackdownStatus)); processResult.setCrackdownStatus(crackdownStatusRepository.save(existingCrackdownStatus));
} }*/
if (processResult.getFishingBoat() != null) { /*if (processResult.getFishingBoat() != null) {
FishingBoat existingFishingBoat = fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).orElse(null); FishingBoat existingFishingBoat = fishingBoatRepository.findByCdsKey(processResult.getCdsKey()).orElse(null);
Utils.copyNonNullProperties(processResult, existingFishingBoat); Utils.copyNonNullProperties(processResult, existingFishingBoat);
fishingBoatRepository.save(existingFishingBoat); fishingBoatRepository.save(existingFishingBoat);
} }*/
if (processResult.getViolationList().get(0).getViolation() != null) { /*if (processResult.getViolationList().get(0).getViolation() != null) {
Violation lastViolation = violationRepository.findTopByFbKeyOrderByViolationKeyDesc(processResult.getCrackdownStatus().getFbKey()).orElse(null); Violation lastViolation = violationRepository.findTopByFbKeyOrderByViolationKeyDesc(processResult.getCrackdownStatus().getFbKey()).orElse(null);
int violationKey = lastViolation==null?1:(lastViolation.getViolationKey()+1); int violationKey = lastViolation==null?1:(lastViolation.getViolationKey()+1);
@ -85,8 +104,50 @@ public class ProcessResultService extends BaseService {
} }
} }
violationRepository.saveAll(processResult.getViolationList()); violationRepository.saveAll(processResult.getViolationList());
} }*/
return prKey; return prKey;
} }
public void saveProcessResultVersion(ProcessResult processResult) {
ProcessResultVersion lastVersion = processResultVersionRepository.findTopByPrKeyOrderByVersionNoDesc(processResult.getPrKey()).orElse(null);
int versionNo = lastVersion==null?1:(lastVersion.getVersionNo()+1);
ProcessResultVersion processResultVersion = new ProcessResultVersion();
processResultVersion.setVersionNo(versionNo);
processResultVersion.setPrKey(processResult.getPrKey());
processResultVersion.setProcessStatus(processResult.getProcessStatus());
processResultVersion.setPressurizedTimeTaken(processResult.getPressurizedTimeTaken());
processResultVersion.setWarrantReqTakeTime(processResult.getWarrantReqTakeTime());
processResultVersion.setIsIvsgtStop(processResult.getIsIvsgtStop());
processResultVersion.setEvictionDt(processResult.getEvictionDt());
processResultVersion.setDirectHandoverDt(processResult.getDirectHandoverDt());
processResultVersion.setHandoverSeaPointLon(processResult.getHandoverSeaPointLon());
processResultVersion.setHandoverSeaPointLat(processResult.getHandoverSeaPointLat());
processResultVersion.setHandoverSeaPointDetail(processResult.getHandoverSeaPointDetail());
processResultVersion.setHandoverBoat(processResult.getHandoverBoat());
processResultVersion.setMiddleTakeoverBoat(processResult.getMiddleTakeoverBoat());
processResultVersion.setConsignmentStartDt(processResult.getConsignmentStartDt());
processResultVersion.setConsignmentEndDt(processResult.getConsignmentEndDt());
processResultVersion.setConfiscationDt(processResult.getConfiscationDt());
processResultVersion.setBoatDisposalDt(processResult.getBoatDisposalDt());
processResultVersion.setBoatDisposalType(processResult.getBoatDisposalType());
processResultVersion.setReturnDt(processResult.getReturnDt());
processResultVersion.setExileCnt(processResult.getExileCnt());
processResultVersion.setFlight(processResult.getFlight());
processResultVersion.setImmigrationOfficeName(processResult.getImmigrationOfficeName());
processResultVersion.setImmigrationOfficeOfficerName(processResult.getImmigrationOfficeOfficerName());
processResultVersion.setImmigrationOfficeOfficerContact(processResult.getImmigrationOfficeOfficerContact());
processResultVersion.setSentencingCourt(processResult.getSentencingCourt());
processResultVersion.setSentencingDetail(processResult.getSentencingDetail());
processResultVersion.setExecutionDetail(processResult.getExecutionDetail());
processResultVersion.setWrtOrgan(processResult.getWrtOrgan());
processResultVersion.setWrtPart(processResult.getWrtPart());
processResultVersion.setWrtUserSeq(processResult.getWrtUserSeq());
processResultVersion.setWrtUserGrd(processResult.getWrtUserGrd());
processResultVersion.setWrtUserNm(processResult.getWrtUserNm());
processResultVersion.setWrtDt(processResult.getWrtDt());
processResultVersionRepository.save(processResultVersion);
}
} }

View File

@ -4,6 +4,7 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.service;
import com.dbnt.faisp.config.BaseService; import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.SailorMapper; 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.*;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.sailor.Sailor; 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.model.sailor.SailorVersion;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*;
@ -38,8 +39,8 @@ public class SailorService extends BaseService {
return sailorVersionRepository.findBySailorKey(sailorKey); return sailorVersionRepository.findBySailorKey(sailorKey);
} }
public SailorVersion selectSailorVersion(Integer versionNo) { public SailorVersion selectSailorVersion(Integer versionNo, Integer sailorKey) {
return sailorVersionRepository.findByVersionNo(versionNo); return sailorVersionRepository.findByVersionNoAndSailorKey(versionNo, sailorKey);
} }
@Transactional @Transactional

View File

@ -19,6 +19,22 @@ $(document).on('click', '.tr', function (){
getCrackdownStatusViewModal($(this).data('key')); getCrackdownStatusViewModal($(this).data('key'));
}); });
$(document).on('click', '#history-tab', function (){
getCrackdownStatusHistoryViewModal($('#cdsEditForm').find('input[name="cdsKey"]').val());
});
$(document).on('click', '#crackdownStatus-tab', function (){
getCrackdownStatusViewModal($('#cdsEditForm').find('input[name="cdsKey"]').val());
});
$(document).on('click', '.version-tr', function (){
$(this).find('input[name="versionNo"]').prop('checked', true);
const versionNo = $(this).find('input[name="versionNo"]').val();
const cdsKey = $('#cdsEditForm').find('input[name="cdsKey"]').val();
getCrackdownStatusHistoryDetail(versionNo, cdsKey);
});
$(document).on('change', 'select[name="crackdownPolice"]', function (){ $(document).on('change', 'select[name="crackdownPolice"]', function (){
dynamicOption('select[name="crackdownBoat"]', $(this).val()); dynamicOption('select[name="crackdownBoat"]', $(this).val());
}); });
@ -151,12 +167,47 @@ $(document).on('click', '#cdsDownExcel', function (){
exportExcel('불법조업 불법어선 단속현황'); exportExcel('불법조업 불법어선 단속현황');
}); });
function getCrackdownStatusHistoryDetail(versionNo, cdsKey){
$.ajax({
url: '/faStatistics/crackdownStatus/crackdownStatusHistoryDetail',
data: {
versionNo : versionNo,
cdsKey : cdsKey
},
type: 'GET',
dataType:"html",
success: function(html){
$("#historyDetailDiv").empty().append(html);
},
error:function(){
}
});
}
function getCrackdownStatusViewModal(cdsKey){ function getCrackdownStatusViewModal(cdsKey){
$.ajax({ $.ajax({
url: '/faStatistics/crackdownStatus/crackdownStatusViewModal', url: '/faStatistics/crackdownStatus/crackdownStatusViewModal',
data: {cdsKey: cdsKey}, data: {cdsKey: cdsKey},
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",
success: function(html){
$("#cdsEditBody").empty();
$("#crackdownStatusViewBody").empty().append(html)
$("#crackdownStatusViewModal").modal('show');
},
error:function(){
}
});
}
function getCrackdownStatusHistoryViewModal(cdsKey){
$.ajax({
url: '/faStatistics/crackdownStatus/crackdownStatusHistoryViewModal',
data: {cdsKey: cdsKey},
type: 'GET',
dataType:"html",
success: function(html){ success: function(html){
$("#crackdownStatusViewBody").empty().append(html) $("#crackdownStatusViewBody").empty().append(html)
$("#crackdownStatusViewModal").modal('show'); $("#crackdownStatusViewModal").modal('show');

View File

@ -1,5 +1,5 @@
$(document).on('click', '#processResultAddBtn', function () { $(document).on('click', '#processResultAddBtn', function () {
getProcessResultEditModal(null); getProcessResultAddModal(null);
}); });
$(document).on('click', '#processResultEditBtn', function () { $(document).on('click', '#processResultEditBtn', function () {
@ -19,6 +19,58 @@ $(document).on('click', '.tr', function (){
getProcessResultViewModal($(this).data('key')); getProcessResultViewModal($(this).data('key'));
}); });
$(document).on('click', '#history-tab', function (){
const prKey = $('#processResultEditForm').find('input[name="prKey"]').val();
const cdsKey = $('#processResultEditForm').find('input[name="cdsKey"]').val();
const fbKey = $('#processResultEditForm').find('input[name="fbKey"]').val();
getProcessResultHistoryViewModal(prKey, cdsKey, fbKey);
});
$(document).on('click', '#processResult-tab', function (){
getProcessResultViewModal($('#processResultEditForm').find('input[name="prKey"]').val());
});
$(document).on('click', '.version-tr', function (){
$(this).find('input[name="versionNo"]').prop('checked', true);
const versionNo = $(this).find('input[name="versionNo"]').val();
const prKey = $('#processResultEditForm').find('input[name="prKey"]').val();
const cdsKey = $('#processResultEditForm').find('input[name="cdsKey"]').val();
const fbKey = $('#processResultEditForm').find('input[name="fbKey"]').val();
getProcessResultHistoryDetail(versionNo, prKey, cdsKey, fbKey);
});
$(document).on('change', 'select[name="caseNum"]', function (){
$('input[name="boatNameKr"]').val('');
$('input[name="prKey"]').val('');
$('input[name="cdsKey"]').val($('select[name="caseNum"] option:selected').val());
const formdata = new FormData($('#processResultEditForm')[0]);
$.ajax({
type: 'POST',
data: formdata,
url: "/faStatistics/processResult/getProcessResult",
processData: false,
contentType: false,
success: function(result) {
$('input[name="boatNameKr"]').val(result.fishingBoat.boatNameKr);
$('input[name="prKey"]').val(result.prKey);
$('input[name="sentencingCourt"]').val(result.sentencingCourt);
$('input[name="sentencingDetail"]').val(result.sentencingDetail);
$('select[name="executionDetail"]').val(result.executionDetail).prop('selected', true);
$('input[name="returnDt"]').val(result.returnDt);
$('input[name="consignmentStartDt"]').val(result.consignmentStartDt);
$('input[name="consignmentEndDt"]').val(result.consignmentEndDt);
$('input[name="confiscationDt"]').val(result.confiscationDt);
$('input[name="boatDisposalDt"]').val(result.boatDisposalDt);
$('input[name="boatDisposalDt"]').val(result.boatDisposalDt);
},
error: function(xhr, status) {
}
});
});
$(document).on('click', '#violationAddBtn', function (){ $(document).on('click', '#violationAddBtn', function (){
let violation = ''; let violation = '';
commonCode.VT.forEach(function (item){ commonCode.VT.forEach(function (item){
@ -84,6 +136,26 @@ $(document).on('click', '#processResultDownExcel', function (){
exportExcel('불법조업 불법어선 처리현황'); exportExcel('불법조업 불법어선 처리현황');
}); });
function getProcessResultHistoryDetail(versionNo, prKey, cdsKey, fbKey){
$.ajax({
url: '/faStatistics/processResult/processResultHistoryDetail',
data: {
versionNo : versionNo,
prKey: prKey,
cdsKey : cdsKey,
fbKey : fbKey
},
type: 'GET',
dataType:"html",
success: function(html){
$("#historyDetailDiv").empty().append(html);
},
error:function(){
}
});
}
function getProcessResultViewModal(prKey){ function getProcessResultViewModal(prKey){
$.ajax({ $.ajax({
url: '/faStatistics/processResult/processResultViewModal', url: '/faStatistics/processResult/processResultViewModal',
@ -91,6 +163,7 @@ function getProcessResultViewModal(prKey){
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",
success: function(html){ success: function(html){
$("#processResultEditModalContent").empty();
$("#processResultViewBody").empty().append(html) $("#processResultViewBody").empty().append(html)
$("#processResultViewModal").modal('show'); $("#processResultViewModal").modal('show');
}, },
@ -100,6 +173,63 @@ function getProcessResultViewModal(prKey){
}); });
} }
function getProcessResultHistoryViewModal(prKey, cdsKey, fbKey){
$.ajax({
url: '/faStatistics/processResult/processResultHistoryViewModal',
data: {
prKey: prKey,
cdsKey : cdsKey,
fbKey : fbKey
},
type: 'GET',
dataType:"html",
success: function(html){
$("#processResultViewBody").empty().append(html)
$("#processResultViewModal").modal('show');
},
error:function(){
}
});
}
function getProcessResultAddModal(){
$.ajax({
url: '/faStatistics/processResult/processResultAddModal',
type: 'GET',
dataType:"html",
success: function(html){
$("#processResultViewBody").empty();
$("#processResultAddModalContent").empty().append(html);
$("#processResultAddModal").modal('show');
$("#consignmentStartDt").datepicker({
format: "yyyy-mm-dd",
language: "ko"
});
$("#consignmentEndDt").datepicker({
format: "yyyy-mm-dd",
language: "ko"
});
$("#returnDt").datepicker({
format: "yyyy-mm-dd",
language: "ko"
});
$("#confiscationDt").datepicker({
format: "yyyy-mm-dd",
language: "ko"
});
$("#boatDisposalDt").datepicker({
format: "yyyy-mm-dd",
language: "ko"
});
},
error:function(){
}
});
}
function getProcessResultEditModal(prKey){ function getProcessResultEditModal(prKey){
$.ajax({ $.ajax({
url: '/faStatistics/processResult/processResultEditModal', url: '/faStatistics/processResult/processResultEditModal',
@ -185,6 +315,7 @@ function saveProcessResult(saveYn){
alert("저장되었습니다."); alert("저장되었습니다.");
contentFade("out"); contentFade("out");
$("#processResultEditModal").modal('hide'); $("#processResultEditModal").modal('hide');
$("#processResultAddModal").modal('hide');
}, },
error : function(xhr, status) { error : function(xhr, status) {
alert("저장에 실패하였습니다.") alert("저장에 실패하였습니다.")

View File

@ -20,7 +20,10 @@ $(document).on('click', '.tr', function (){
}); });
$(document).on('click', '#history-tab', function (){ $(document).on('click', '#history-tab', function (){
getSailorHistoryViewModal($('#sailorEditForm').find('input[name="sailorKey"]').val()); const sailorKey = $('#sailorEditForm').find('input[name="sailorKey"]').val();
const cdsKey = $('#sailorEditForm').find('input[name="cdsKey"]').val();
const fbKey = $('#sailorEditForm').find('input[name="fbKey"]').val();
getSailorHistoryViewModal(sailorKey, cdsKey, fbKey);
}); });
$(document).on('click', '#sailor-tab', function (){ $(document).on('click', '#sailor-tab', function (){
@ -29,7 +32,11 @@ $(document).on('click', '#sailor-tab', function (){
$(document).on('click', '.version-tr', function (){ $(document).on('click', '.version-tr', function (){
$(this).find('input[name="versionNo"]').prop('checked', true); $(this).find('input[name="versionNo"]').prop('checked', true);
getSailorHistoryDetail($(this).find('input[name="versionNo"]').val()); const versionNo = $(this).find('input[name="versionNo"]').val();
const sailorKey = $('#sailorEditForm').find('input[name="sailorKey"]').val();
const cdsKey = $('#sailorEditForm').find('input[name="cdsKey"]').val();
const fbKey = $('#sailorEditForm').find('input[name="fbKey"]').val();
getSailorHistoryDetail(versionNo, sailorKey, cdsKey, fbKey);
}); });
@ -104,10 +111,15 @@ $(document).on('click', '#sailorDownExcel', function (){
exportExcel('불법조업 불법어선 처리현황'); exportExcel('불법조업 불법어선 처리현황');
}); });
function getSailorHistoryDetail(versionNo){ function getSailorHistoryDetail(versionNo, sailorKey, cdsKey, fbKey){
$.ajax({ $.ajax({
url: '/faStatistics/sailor/sailorHistoryDetail', url: '/faStatistics/sailor/sailorHistoryDetail',
data: {versionNo: versionNo}, data: {
versionNo : versionNo,
sailorKey: sailorKey,
cdsKey : cdsKey,
fbKey : fbKey
},
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",
success: function(html){ success: function(html){
@ -127,7 +139,8 @@ function getSailorViewModal(sailorKey){
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",
success: function(html){ success: function(html){
$("#sailorViewBody").empty().append(html) $("#sailorAddModalContent").empty();
$("#sailorViewBody").empty().append(html);
$("#sailorViewModal").modal('show'); $("#sailorViewModal").modal('show');
}, },
error:function(){ error:function(){
@ -136,10 +149,14 @@ function getSailorViewModal(sailorKey){
}); });
} }
function getSailorHistoryViewModal(sailorKey){ function getSailorHistoryViewModal(sailorKey, cdsKey, fbKey){
$.ajax({ $.ajax({
url: '/faStatistics/sailor/sailorHistoryViewModal', url: '/faStatistics/sailor/sailorHistoryViewModal',
data: {sailorKey: sailorKey}, data: {
sailorKey : sailorKey,
cdsKey : cdsKey,
fbKey : fbKey
},
type: 'GET', type: 'GET',
dataType:"html", dataType:"html",
success: function(html){ success: function(html){

View File

@ -0,0 +1,143 @@
<!DOCTYPE html>
<html lang="en">
<div class="mb-3 row">
나포정보
</div>
<div class="mb-3 row">
<div class="col-sm-1">
<label class="col-auto col-form-label text-center">나포일시</label>
<label class="col-auto col-form-label text-center">NLL</label>
</div>
<div class="col-sm-2">
<input class="form-control" name="napoDt" id="napoDt" th:value="${#temporals.format(crackdownStatusVersion.napoDt, 'yyyy-MM-dd HH:mm')}">
<select class="form-select form-select-sm" name="nll">
<option value="Y" th:selected="${crackdownStatusVersion.nll == 'Y'}">O</option>
<option value="N" th:selected="${crackdownStatusVersion.nll == 'N'}">X</option>
</select>
</div>
<label class="col-sm-1 col-form-label text-center">위반장소</label>
<div class="col-sm-2">
<input class="form-control" placeholder="위도" name="napoSeaPointLat" th:value="${crackdownStatusVersion.napoSeaPointLat}">
<input class="form-control" placeholder="경도" name="napoSeaPointLon" th:value="${crackdownStatusVersion.napoSeaPointLon}">
<input class="form-control" placeholder="상세내용" name="napoSeaPointDetail" th:value="${crackdownStatusVersion.napoSeaPointDetail}">
</div>
<label class="col-sm-1 col-form-label text-center">침범유형</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="invasionType">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('IST')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq crackdownStatusVersion.invasionType}"></option>
</th:block>
</select>
</div>
</div>
<div class="mb-3 row">
특수공무집행방해
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">발생건수</label>
<div class="col-sm-2">
<input type="number" min="0" class="form-control" name="obstrExspdCnt" th:value="${crackdownStatusVersion.obstrExspdCnt}">
</div>
<label class="col-sm-1 col-form-label text-center">피해인원</label>
<div class="col-sm-2">
<input type="number" min="0" class="form-control" name="personDamageCnt" th:value="${crackdownStatusVersion.personDamageCnt}">
</div>
<label class="col-sm-1 col-form-label text-center">피해액</label>
<div class="col-sm-2">
<input type="number" min="0" class="form-control" name="personDamageAmount" th:value="${crackdownStatusVersion.personDamageAmount}">
</div>
<label class="col-sm-1 col-form-label text-center">상세내용</label>
<div class="col-sm-2">
<input class="form-control" name="personDamageDetail" th:value="${crackdownStatusVersion.personDamageDetail}">
</div>
<label class="col-sm-1 col-form-label text-center">발생건수</label>
<div class="col-sm-2">
<input type="number" min="0" class="form-control" name="materialDamageCnt" th:value="${crackdownStatusVersion.materialDamageCnt}">
</div>
<label class="col-sm-1 col-form-label text-center">피해액</label>
<div class="col-sm-2">
<input type="number" min="0" class="form-control" name="materialDamageAmount" th:value="${crackdownStatusVersion.materialDamageAmount}">
</div>
<label class="col-sm-1 col-form-label text-center">상세내용</label>
<div class="col-sm-2">
<input class="form-control" name="materialDamageDetail" th:value="${crackdownStatusVersion.materialDamageDetail}">
</div>
</div>
<div class="mb-3 row">
검거기관
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">사건담당 기관</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="caseAgency">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('ATA')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq crackdownStatusVersion.caseAgency}"></option>
</th:block>
</select>
</div>
<label class="col-sm-1 col-form-label text-center">단속<br>경찰서</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="crackdownPolice" id="crackdownPolice">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('CPO')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq crackdownStatusVersion.crackdownPolice}"></option>
</th:block>
<option value="etc">직접입력</option>
</select>
</div>
<label class="col-sm-1 col-form-label text-center">단속함정</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="crackdownBoat" id="crackdownBoat">
<option value="">선택</option>
<th:block th:each="num : ${#numbers.sequence(1,#lists.size(session.commonCode.get('CPO')))}">
<th:block th:if="${'CPO'+num == crackdownStatusVersion.crackdownPolice}" th:each="commonCode:${session.commonCode.get('CPO'+num)}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${crackdownStatusVersion.crackdownBoat eq commonCode.itemCd}"></option>
</th:block>
</th:block>
</select>
</div>
<label class="col-sm-1 col-form-label text-center">MMSI.NO</label>
<div class="col-sm-2">
<input class="form-control" name="mmsi" th:value="${crackdownStatusVersion.mmsi}">
</div>
</div>
<div class="mb-3 row">
현장조사
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">나포일시</label>
<div class="col-sm-2">
<input class="form-control" name="fieldIvsgtNapoDt" id="fieldIvsgtNapoDt" th:value="${#temporals.format(crackdownStatusVersion.fieldIvsgtNapoDt, 'yyyy-MM-dd HH:mm')}">
</div>
<label class="col-sm-1 col-form-label text-center">석방일시</label>
<div class="col-sm-2">
<input class="form-control" name="fieldIvsgtReleaseDt" id="fieldIvsgtReleaseDt" th:value="${#temporals.format(crackdownStatusVersion.fieldIvsgtReleaseDt, 'yyyy-MM-dd HH:mm')}">
</div>
<label class="col-sm-1 col-form-label text-center">소요시간</label>
<div class="col-sm-2">
<input class="form-control" name="fieldIvsgtTimeTaken" th:value="${crackdownStatusVersion.fieldIvsgtTimeTaken}" readonly>
</div>
</div>
<div class="mb-3 row">
압송
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">압송시작</label>
<div class="col-sm-2">
<input class="form-control" name="pressurizedStartDt" id="pressurizedStartDt" th:value="${#temporals.format(crackdownStatusVersion.pressurizedStartDt, 'yyyy-MM-dd HH:mm')}">
</div>
<label class="col-sm-1 col-form-label text-center">압송종료</label>
<div class="col-sm-2">
<input class="form-control" name="pressurizedEndDt" id="pressurizedEndDt" th:value="${#temporals.format(crackdownStatusVersion.pressurizedEndDt, 'yyyy-MM-dd HH:mm')}">
</div>
<label class="col-sm-1 col-form-label text-center">거리</label>
<div class="col-sm-2">
<input class="form-control" name="distance" th:value="${crackdownStatusVersion.distance}">
</div>
</div>
</html>

View File

@ -0,0 +1,185 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header">
<h5 class="modal-title" id="crackdownStatusEditModalLabel">불법조업 외국어선 단속등록</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<!-- 탭 메뉴 -->
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link crackdownStatusTab" id="crackdownStatus-tab" data-bs-toggle="tab"
data-bs-target="#crackdownStatus" type="button" role="tab" aria-controls="crackdownStatus" data-crackdownStatus-type="crackdownStatus"
aria-selected="true">상세</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link crackdownStatusTab active" id="history-tab" data-bs-toggle="tab"
data-bs-target="#history" type="button" role="tab" data-history-type="history"
aria-controls="history">수정이력</button>
</li>
</ul>
<!-- 내용 -->
<div class="tab-content">
<div class="tab-pane fade show active" id="history" role="tabpanel" aria-labelledby="history-tab">
<div class="modal-body" id="cdsEditBody">
<form action="#" method="post" id="cdsEditForm">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<input type="hidden" name="cdsKey" th:value="${crackdownStatus.cdsKey}">
<th:block th:if="${!#lists.isEmpty(crackdownStatusVersionList)}">
<div class="row justify-content-start">
<div class="col-4">
<table class="table table-striped table-bordered" style="max-width: none; width: auto;" id="crackdownStatusVersionTable">
<thead>
<tr>
<th></th>
<th>작성인</th>
<th>작성/수정일</th>
</tr>
</thead>
<tbody class="table-group-divider">
<th:block th:each="crackdownStatusVersion:${crackdownStatusVersionList}">
<tr class="version-tr">
<td>
<input type="radio" name="versionNo" th:value="${crackdownStatusVersion.versionNo}">
</td>
<td th:text="${crackdownStatusVersion.wrtUserNm}"></td>
<td th:text="${crackdownStatusVersion.wrtDt}"></td>
</tr>
</th:block>
</tbody>
</table>
</div>
</div>
<div class="col-8">
<div id="historyDetailDiv">
<div class="mb-3 row">
나포정보
</div>
<div class="mb-3 row">
<div class="col-sm-1">
<label class="col-auto col-form-label text-center">나포일시</label>
<label class="col-auto col-form-label text-center">NLL</label>
</div>
<div class="col-sm-2">
<input class="form-control" name="napoDt" id="napoDt" readonly>
<input class="form-control" name="nll" id="nll" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">위반장소</label>
<div class="col-sm-2">
<input class="form-control" placeholder="위도" name="napoSeaPointLat" readonly>
<input class="form-control" placeholder="경도" name="napoSeaPointLon" readonly>
<input class="form-control" placeholder="상세내용" name="napoSeaPointDetail" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">침범유형</label>
<div class="col-sm-2">
<input class="form-control" name="invasionType" id="invasionType" readonly>
</div>
</div>
<div class="mb-3 row">
특수공무집행방해
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">발생건수</label>
<div class="col-sm-2">
<input type="number" min="0" class="form-control" name="obstrExspdCnt" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">피해인원</label>
<div class="col-sm-2">
<input type="number" min="0" class="form-control" name="personDamageCnt" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">피해액</label>
<div class="col-sm-2">
<input type="number" min="0" class="form-control" name="personDamageAmount" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">상세내용</label>
<div class="col-sm-2">
<input class="form-control" name="personDamageDetail" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">발생건수</label>
<div class="col-sm-2">
<input type="number" min="0" class="form-control" name="materialDamageCnt" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">피해액</label>
<div class="col-sm-2">
<input type="number" min="0" class="form-control" name="materialDamageAmount" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">상세내용</label>
<div class="col-sm-2">
<input class="form-control" name="materialDamageDetail" readonly>
</div>
</div>
<div class="mb-3 row">
검거기관
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">사건담당 기관</label>
<div class="col-sm-2">
<input class="form-control" name="caseAgency" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">단속<br>경찰서</label>
<div class="col-sm-2">
<input class="form-control" name="crackdownPolice" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">단속함정</label>
<div class="col-sm-2">
<input class="form-control" name="crackdownBoat" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">MMSI.NO</label>
<div class="col-sm-2">
<input class="form-control" name="mmsi" readonly>
</div>
</div>
<div class="mb-3 row">
현장조사
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">나포일시</label>
<div class="col-sm-2">
<input class="form-control" name="fieldIvsgtNapoDt" id="fieldIvsgtNapoDt" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">석방일시</label>
<div class="col-sm-2">
<input class="form-control" name="fieldIvsgtReleaseDt" id="fieldIvsgtReleaseDt" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">소요시간</label>
<div class="col-sm-2">
<input class="form-control" name="fieldIvsgtTimeTaken" readonly>
</div>
</div>
<div class="mb-3 row">
압송
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">압송시작</label>
<div class="col-sm-2">
<input class="form-control" name="pressurizedStartDt" id="pressurizedStartDt" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">압송종료</label>
<div class="col-sm-2">
<input class="form-control" name="pressurizedEndDt" id="pressurizedEndDt" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">영장청구<br>소요시간</label>
<div class="col-sm-2">
<input class="form-control" name="warrantReqTakeTime" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">거리</label>
<div class="col-sm-2">
<input class="form-control" name="distance" readonly>
</div>
</div>
</div>
</div>
</th:block>
<th:block th:if="${#lists.isEmpty(crackdownStatusVersionList)}">
<div>수정이력이 없습니다.</div>
</th:block>
</form>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
</div>
</html>

View File

@ -4,6 +4,23 @@
<h5 class="modal-title" id="crackdownStatusEditModalLabel" th:text="${crackdownStatus.cdsKey eq null ? '불법조업 외국어선 단속등록' : '불법조업 외국어선 단속수정'}">></h5> <h5 class="modal-title" id="crackdownStatusEditModalLabel" th:text="${crackdownStatus.cdsKey eq null ? '불법조업 외국어선 단속등록' : '불법조업 외국어선 단속수정'}">></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<!-- 탭 메뉴 -->
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link crackdownStatusTab active" id="crackdownStatus-tab" data-bs-toggle="tab"
data-bs-target="#crackdownStatus" type="button" role="tab" aria-controls="crackdownStatus" data-crackdownStatus-type="crackdownStatus"
aria-selected="true">상세</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link crackdownStatusTab" id="history-tab" data-bs-toggle="tab"
data-bs-target="#history" type="button" role="tab" data-history-type="history"
aria-controls="history">수정이력</button>
</li>
</ul>
<!-- 내용 -->
<div class="tab-content" style="overflow-y: auto;">
<div class="tab-pane fade show active" id="crackdownStatus" role="tabpanel" aria-labelledby="crackdownStatus-tab">
<div class="modal-body" id="cdsEditBody"> <div class="modal-body" id="cdsEditBody">
<form action="#" method="post" id="cdsEditForm"> <form action="#" method="post" id="cdsEditForm">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/> <input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
@ -486,6 +503,8 @@
</div> </div>
</form> </form>
</div> </div>
</div>
</div>
<div class="modal-footer"> <div class="modal-footer">
<th:block th:if="${userSeq eq crackdownStatus.wrtUserSeq or accessAuth eq 'ACC003'}"><!--작성자일 경우 수정 허용--><!--관리자일 경우 수정 허용--> <th:block th:if="${userSeq eq crackdownStatus.wrtUserSeq or accessAuth eq 'ACC003'}"><!--작성자일 경우 수정 허용--><!--관리자일 경우 수정 허용-->
<button type="button" class="btn btn-warning" id="cdsEditBtn">수정</button> <button type="button" class="btn btn-warning" id="cdsEditBtn">수정</button>

View File

@ -109,6 +109,7 @@
<div class="row justify-content"> <div class="row justify-content">
<button class="btn btn-sm btn-primary col-auto" id="">관리자마감</button> <button class="btn btn-sm btn-primary col-auto" id="">관리자마감</button>
<button class="btn btn-sm btn-primary col-auto" id="processResultDownExcel">엑셀 다운로드</button> <button class="btn btn-sm btn-primary col-auto" id="processResultDownExcel">엑셀 다운로드</button>
<button class="btn btn-sm btn-primary col-auto" id="processResultAddBtn">등록</button>
</div> </div>
<!-- 페이징 --> <!-- 페이징 -->
@ -142,7 +143,13 @@
</div> </div>
</div> </div>
</div> </div>
<div class="modal fade" id="processResultAddModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="processResultAddModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content" id="processResultAddModalContent">
</div>
</div>
</div>
<div class="modal fade" id="processResultEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="processResultEditModalLabel" aria-hidden="true"> <div class="modal fade" id="processResultEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="processResultEditModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable"> <div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content" id="processResultEditModalContent"> <div class="modal-content" id="processResultEditModalContent">

View File

@ -0,0 +1,91 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header">
<h5 class="modal-title" id="processResultAddModalLabel">불법조업 외국어선 처리현황 등록</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body" id="processResultAddBody">
<form action="#" method="post" id="processResultEditForm">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<input type="hidden" name="cdsKey">
<input type="hidden" name="fbKey">
<input type="hidden" name="prKey">
<input type="hidden" name="wrtOrgan" th:value="${processResult.wrtOrgan}">
<input type="hidden" name="wrtUserNm" th:value="${processResult.wrtUserNm}">
<input type="hidden" name="wrtDt" th:value="${#temporals.format(processResult.wrtDt, 'yyyy-MM-dd HH:mm')}">
<input type="hidden" id="saveYn" name="saveYn">
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">사건번호</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="caseNum" id="caseNum">
<option value="">선택</option>
<th:block th:each="crackdownStatus:${processResult.crackdownStatusList}">
<option th:value="${crackdownStatus.cdsKey}" th:text="${crackdownStatus.caseNum}"></option>
</th:block>
</select>
</div>
<label class="col-sm-1 col-form-label text-center">피의자(선박명)</label>
<div class="col-sm-2">
<input class="form-control" name="boatNameKr" id="boatNameKr" readonly>
</div>
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">선고법원</label>
<div class="col-sm-2">
<input class="form-control" name="sentencingCourt" id="sentencingCourt">
</div>
<label class="col-sm-1 col-form-label text-center">선고내용</label>
<div class="col-sm-2">
<input class="form-control" name="sentencingDetail" id="sentencingDetail">
</div>
<label class="col-sm-1 col-form-label text-center">집행내용</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="executionDetail" id="executionDetail">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('PR')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq processResult.executionDetail}"></option>
</th:block>
<option value="etc">직접입력</option>
</select>
</div>
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">환부일</label>
<div class="col-sm-2">
<input class="form-control" name="returnDt" id="returnDt">
</div>
<label class="col-sm-1 col-form-label text-center">위탁시작일</label>
<div class="col-sm-2">
<input class="form-control" name="consignmentStartDt" id="consignmentStartDt">
</div>
<label class="col-sm-1 col-form-label text-center">위탁종료일</label>
<div class="col-sm-2">
<input class="form-control" name="consignmentEndDt" id="consignmentEndDt">
<input type="hidden" class="form-control" name="warrantReqTakeTime">
</div>
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">몰수확정일</label>
<div class="col-sm-2">
<input class="form-control" name="confiscationDt" id="confiscationDt">
</div>
<label class="col-sm-1 col-form-label text-center">폐선일</label>
<div class="col-sm-2">
<input class="form-control" name="boatDisposalDt" id="boatDisposalDt">
</div>
<label class="col-sm-1 col-form-label text-center">최종수정일</label>
<div class="col-sm-2">
<input class="form-control" name="boatDisposalDt" id="boatDisposalDt">
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
<button type="button" class="btn btn-warning" id="saveTempBtn">임시저장</button>
<button type="button" class="btn btn-primary" id="saveProcessResultBtn">저장</button>
</div>
</html>

View File

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org"> <html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="processResultEditModalLabel" th:text="${processResult.prKey eq null ? '불법조업 외국어선 처리현황 등록' : '불법조업 외국어선 처리현황 수정'}">></h5> <h5 class="modal-title" id="processResultEditModalLabel">불법조업 외국어선 처리현황 수정</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<div class="modal-body" id="processResultEditBody"> <div class="modal-body" id="processResultEditBody">
@ -34,7 +34,7 @@
</div> </div>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">피의자(선박)</label> <label class="col-sm-1 col-form-label text-center">피의자(선박)</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input class="form-control" name="boatNameKr" id="boatNameKr" th:value="${processResult.boatNameKr}"> <input class="form-control" name="boatNameKr" id="boatNameKr" th:value="${processResult.boatNameKr}">
</div> </div>
@ -105,9 +105,9 @@
</th:block> </th:block>
<option th:selected="${processResult.executionDetail ne '' && processResult.executionDetail ne null && !#strings.contains(processResult.executionDetail, 'PR')}" value="etc">직접입력</option> <option th:selected="${processResult.executionDetail ne '' && processResult.executionDetail ne null && !#strings.contains(processResult.executionDetail, 'PR')}" value="etc">직접입력</option>
</select> </select>
<th:block th:if="${processResult.executionDetail ne null && !#strings.contains(processResult.executionDetail, 'PR')}"> <th:block th:if="${processResult.executionDetail ne '' && processResult.executionDetail ne null && !#strings.contains(processResult.executionDetail, 'PR')}">
<div class="col-auto"> <div class="col-auto">
<input type="text" class="form-control" name="processStatusEtc" th:value="${processResult.executionDetail}"> <input type="text" class="form-control" name="executionDetailEtc" th:value="${processResult.executionDetail}">
</div> </div>
</th:block> </th:block>
</div> </div>

View File

@ -0,0 +1,67 @@
<!DOCTYPE html>
<html lang="en">
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">사건번호</label>
<div class="col-sm-2">
<input class="form-control" name="caseNum" id="caseNum" th:value="${processResultVersion.crackdownStatus.caseNum}">
</div>
<label class="col-sm-1 col-form-label text-center">피의자(선박명)</label>
<div class="col-sm-2">
<input class="form-control" name="boatNameKr" id="boatNameKr" th:value="${processResultVersion.fishingBoat.boatNameKr ne null ? processResultVersion.fishingBoat.boatNameKr : ''}">
</div>
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">선고법원</label>
<div class="col-sm-2">
<input class="form-control" name="sentencingCourt" id="sentencingCourt" th:value="${processResultVersion.sentencingCourt}">
</div>
<label class="col-sm-1 col-form-label text-center">선고내용</label>
<div class="col-sm-2">
<input class="form-control" name="sentencingDetail" id="sentencingDetail" th:value="${processResultVersion.sentencingDetail}">
</div>
<label class="col-sm-1 col-form-label text-center">집행내용</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="executionDetail" id="executionDetail">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('PR')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq processResultVersion.executionDetail}"></option>
</th:block>
<option th:selected="${processResultVersion.executionDetail ne null && !#strings.contains(processResultVersion.executionDetail, 'PR')}" value="etc">직접입력</option>
</select>
<th:block th:if="${processResultVersion.executionDetail ne null && !#strings.contains(processResultVersion.executionDetail, 'PR')}">
<div class="col-auto">
<input type="text" class="form-control" name="processStatusEtc" th:value="${processResultVersion.executionDetail}">
</div>
</th:block>
</div>
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">환부일</label>
<div class="col-sm-2">
<input class="form-control" name="returnDt" id="returnDt" th:value="${#temporals.format(processResultVersion.returnDt, 'yyyy-MM-dd')}">
</div>
<label class="col-sm-1 col-form-label text-center">위탁시작일</label>
<div class="col-sm-2">
<input class="form-control" name="consignmentStartDt" id="consignmentStartDt" th:value="${#temporals.format(processResultVersion.consignmentStartDt, 'yyyy-MM-dd')}">
</div>
<label class="col-sm-1 col-form-label text-center">위탁종료일</label>
<div class="col-sm-2">
<input class="form-control" name="consignmentEndDt" id="consignmentEndDt" th:value="${#temporals.format(processResultVersion.consignmentEndDt, 'yyyy-MM-dd')}">
</div>
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">몰수확정일</label>
<div class="col-sm-2">
<input class="form-control" name="confiscationDt" id="confiscationDt" th:value="${#temporals.format(processResultVersion.confiscationDt, 'yyyy-MM-dd')}">
</div>
<label class="col-sm-1 col-form-label text-center">폐선일</label>
<div class="col-sm-2">
<input class="form-control" name="boatDisposalDt" id="boatDisposalDt" th:value="${#temporals.format(processResultVersion.boatDisposalDt, 'yyyy-MM-dd')}">
</div>
<label class="col-sm-1 col-form-label text-center">최종수정일</label>
<div class="col-sm-2">
<input class="form-control" name="boatDisposalDt" id="boatDisposalDt" th:value="${#temporals.format(processResultVersion.boatDisposalDt, 'yyyy-MM-dd')}">
</div>
</div>
</html>

View File

@ -0,0 +1,123 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header">
<h5 class="modal-title" id="processResultEditModalLabel">불법조업 외국어선 처리현황</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<!-- 탭 메뉴 -->
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link processResultTab" id="processResult-tab" data-bs-toggle="tab"
data-bs-target="#processResult" type="button" role="tab" aria-controls="processResult" data-processResult-type="processResult"
aria-selected="true">상세</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link processResultTab active" id="history-tab" data-bs-toggle="tab"
data-bs-target="#history" type="button" role="tab" data-history-type="history"
aria-controls="history">수정이력</button>
</li>
</ul>
<!-- 내용 -->
<div class="tab-content">
<div class="tab-pane fade show active" id="history" role="tabpanel" aria-labelledby="history-tab">
<div class="modal-body" id="processResultEditBody">
<form action="#" method="post" id="processResultEditForm">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<input type="hidden" name="prKey" th:value="${processResult.prKey}">
<input type="hidden" name="cdsKey" th:value="${processResult.cdsKey}">
<input type="hidden" name="fbKey" th:value="${processResult.fbKey}">
<th:block th:if="${!#lists.isEmpty(processReulstVersionList)}">
<div class="row justify-content-start">
<div class="col-4">
<table class="table table-striped table-bordered" style="max-width: none; width: auto;" id="processReulstVersionTable">
<thead>
<tr>
<th></th>
<th>작성인</th>
<th>작성/수정일</th>
</tr>
</thead>
<tbody class="table-group-divider">
<th:block th:each="processReulstVersion:${processReulstVersionList}">
<tr class="version-tr">
<td>
<input type="radio" name="versionNo" th:value="${processReulstVersion.versionNo}">
</td>
<td th:text="${processReulstVersion.wrtUserNm}"></td>
<td th:text="${processReulstVersion.wrtDt}"></td>
</tr>
</th:block>
</tbody>
</table>
</div>
<div class="col-8">
<div id="historyDetailDiv">
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">사건번호</label>
<div class="col-sm-2">
<input class="form-control" name="caseNum" id="caseNum" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">피의자(선박명)</label>
<div class="col-sm-2">
<input class="form-control" name="boatNameKr" id="boatNameKr" readonly>
</div>
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">선고법원</label>
<div class="col-sm-2">
<input class="form-control" name="sentencingCourt" id="sentencingCourt" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">선고내용</label>
<div class="col-sm-2">
<input class="form-control" name="sentencingDetail" id="sentencingDetail" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">집행내용</label>
<div class="col-sm-2">
<input class="form-control" name="executionDetail" id="executionDetail" readonly>
</div>
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">환부일</label>
<div class="col-sm-2">
<input class="form-control" name="returnDt" id="returnDt" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">위탁시작일</label>
<div class="col-sm-2">
<input class="form-control" name="consignmentStartDt" id="consignmentStartDt" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">위탁종료일</label>
<div class="col-sm-2">
<input class="form-control" name="consignmentEndDt" id="consignmentEndDt" readonly>
</div>
</div>
<div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">몰수확정일</label>
<div class="col-sm-2">
<input class="form-control" name="confiscationDt" id="confiscationDt" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">폐선일</label>
<div class="col-sm-2">
<input class="form-control" name="boatDisposalDt" id="boatDisposalDt" readonly>
</div>
<label class="col-sm-1 col-form-label text-center">최종수정일</label>
<div class="col-sm-2">
<input class="form-control" name="boatDisposalDt" id="boatDisposalDt" readonly>
</div>
</div>
</div>
</div>
</div>
</th:block>
<th:block th:if="${#lists.isEmpty(processReulstVersionList)}">
<div>수정이력이 없습니다.</div>
</th:block>
</form>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
</div>
</html>

View File

@ -4,6 +4,22 @@
<h5 class="modal-title" id="processResultEditModalLabel" th:text="${processResult.cdsKey eq null ? '불법조업 외국어선 처리현황' : '불법조업 외국어선 처리현황'}">></h5> <h5 class="modal-title" id="processResultEditModalLabel" th:text="${processResult.cdsKey eq null ? '불법조업 외국어선 처리현황' : '불법조업 외국어선 처리현황'}">></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<!-- 탭 메뉴 -->
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link processResultTab active" id="processResult-tab" data-bs-toggle="tab"
data-bs-target="#processResult" type="button" role="tab" aria-controls="processResult" data-processResult-type="processResult"
aria-selected="true">상세</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link processResultTab" id="history-tab" data-bs-toggle="tab"
data-bs-target="#history" type="button" role="tab" data-history-type="history"
aria-controls="history">수정이력</button>
</li>
</ul>
<!-- 내용 -->
<div class="tab-content" style="overflow-y: auto;">
<div class="tab-pane fade show active" id="processResult" role="tabpanel" aria-labelledby="processResult-tab">
<div class="modal-body" id="processResultEditBody"> <div class="modal-body" id="processResultEditBody">
<form action="#" method="post" id="processResultEditForm"> <form action="#" method="post" id="processResultEditForm">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/> <input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
@ -34,7 +50,7 @@
</div> </div>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
<label class="col-sm-1 col-form-label text-center">피의자(선박)</label> <label class="col-sm-1 col-form-label text-center">피의자(선박)</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input class="form-control" name="boatNameKr" id="boatNameKr" th:value="${processResult.boatNameKr}"> <input class="form-control" name="boatNameKr" id="boatNameKr" th:value="${processResult.boatNameKr}">
</div> </div>
@ -99,9 +115,9 @@
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq processResult.executionDetail}"></option> th:selected="${commonCode.itemCd eq processResult.executionDetail}"></option>
</th:block> </th:block>
<option th:selected="${processResult.executionDetail ne null && !#strings.contains(processResult.executionDetail, 'PR')}" value="etc">직접입력</option> <option th:selected="${processResult.executionDetail ne '' && processResult.executionDetail ne null && !#strings.contains(processResult.executionDetail, 'PR')}" value="etc">직접입력</option>
</select> </select>
<th:block th:if="${processResult.executionDetail ne null && !#strings.contains(processResult.executionDetail, 'PR')}"> <th:block th:if="${processResult.executionDetail ne '' && processResult.executionDetail ne null && !#strings.contains(processResult.executionDetail, 'PR')}">
<div class="col-auto"> <div class="col-auto">
<input type="text" class="form-control" name="processStatusEtc" th:value="${processResult.executionDetail}"> <input type="text" class="form-control" name="processStatusEtc" th:value="${processResult.executionDetail}">
</div> </div>
@ -138,6 +154,8 @@
</div> </div>
</form> </form>
</div> </div>
</div>
</div>
<div class="modal-footer"> <div class="modal-footer">
<th:block th:if="${userSeq eq processResult.wrtUserSeq or accessAuth eq 'ACC003'}"><!--작성자일 경우 수정 허용--><!--관리자일 경우 수정 허용--> <th:block th:if="${userSeq eq processResult.wrtUserSeq or accessAuth eq 'ACC003'}"><!--작성자일 경우 수정 허용--><!--관리자일 경우 수정 허용-->
<button type="button" class="btn btn-warning" id="processResultEditBtn">수정</button> <button type="button" class="btn btn-warning" id="processResultEditBtn">수정</button>

View File

@ -185,7 +185,6 @@
<td th:text="${sailor.position eq 'POS001' ? 1 : 0}"></td> <td th:text="${sailor.position eq 'POS001' ? 1 : 0}"></td>
<td th:text="${sailor.position eq 'POS002' ? 1 : 0}"></td> <td th:text="${sailor.position eq 'POS002' ? 1 : 0}"></td>
<td th:text="${sailor.position eq 'POS003' ? 1 : 0}"></td> <td th:text="${sailor.position eq 'POS003' ? 1 : 0}"></td>
<td th:text="${sailor.position eq 'POS004' ? 1 : 0}"></td>
<td th:text="${sailor.position eq 'POS005' ? 1 : 0}"></td> <td th:text="${sailor.position eq 'POS005' ? 1 : 0}"></td>
<td th:text="${sailor.position eq 'POS006' ? 1 : 0}"></td> <td th:text="${sailor.position eq 'POS006' ? 1 : 0}"></td>
<td th:text="${sailor.education == 'BE001' ? 1 : 0}"></td> <td th:text="${sailor.education == 'BE001' ? 1 : 0}"></td>

View File

@ -31,7 +31,10 @@
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/> <input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/> <input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/> <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<input type="hidden" name="sailorKey" th:value="${sailorVersionList[0].sailorKey}"> <input type="hidden" name="sailorKey" th:value="${sailor.sailorKey}">
<input type="hidden" name="cdsKey" th:value="${sailor.cdsKey}">
<input type="hidden" name="fbKey" th:value="${sailor.fbKey}">
<th:block th:if="${!#lists.isEmpty(sailorVersionList)}">
<div class="row justify-content-start"> <div class="row justify-content-start">
<div class="col-4"> <div class="col-4">
<table class="table table-striped table-bordered" style="max-width: none; width: auto;" id="sailorTable"> <table class="table table-striped table-bordered" style="max-width: none; width: auto;" id="sailorTable">
@ -126,6 +129,10 @@
</div> </div>
</div> </div>
</div> </div>
</th:block>
<th:block th:if="${#lists.isEmpty(sailorVersionList)}">
<div>수정이력이 없습니다.</div>
</th:block>
</form> </form>
</div> </div>
</div> </div>

View File

@ -19,7 +19,7 @@
</ul> </ul>
<!-- 내용 --> <!-- 내용 -->
<div class="tab-content"> <div class="tab-content" style="overflow-y: auto;">
<div class="tab-pane fade show active" id="sailor" role="tabpanel" aria-labelledby="sailor-tab"> <div class="tab-pane fade show active" id="sailor" role="tabpanel" aria-labelledby="sailor-tab">
<div class="modal-body" id="sailorEditBody"> <div class="modal-body" id="sailorEditBody">
<form action="#" method="post" id="sailorEditForm"> <form action="#" method="post" id="sailorEditForm">