불법조업 외국어선 단속현황 중간 커밋

jiHyung 2022-10-28 17:51:50 +09:00
parent 7aabcae1b1
commit 42b1844731
19 changed files with 4405 additions and 229 deletions

View File

@ -4,7 +4,12 @@ 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;
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;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.FishingBoatRepository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.ProcessResultRepository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.SailorRepository;
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.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
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;
@ -24,6 +29,10 @@ public class CrackdownStatusController {
private final AuthMgtService authMgtService; private final AuthMgtService authMgtService;
private final CrackdownStatusService crackdownStatusService; private final CrackdownStatusService crackdownStatusService;
private final ViolationRepository violationRepository;
private final ProcessResultRepository processResultRepository;
private final FishingBoatRepository fishingBoatRepository;
private final SailorRepository sailorRepository;
@RequestMapping("/crackdownStatus") @RequestMapping("/crackdownStatus")
public ModelAndView crackdownStatus(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatus crackdownStatus) { public ModelAndView crackdownStatus(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatus crackdownStatus) {
@ -37,6 +46,13 @@ public class CrackdownStatusController {
crackdownStatus.setQueryInfo(); crackdownStatus.setQueryInfo();
List<CrackdownStatus> crackdownStatusList = crackdownStatusService.selectCrackdownStatusList(crackdownStatus); List<CrackdownStatus> crackdownStatusList = crackdownStatusService.selectCrackdownStatusList(crackdownStatus);
for (CrackdownStatus cds:crackdownStatusList) {
cds.setViolationList(violationRepository.findByFbKey(cds.getFbKey()));
cds.setProcessResult(processResultRepository.findByCdsKey(cds.getCdsKey()));
cds.setFishingBoat(fishingBoatRepository.findByCdsKey(cds.getCdsKey()));
cds.setSailorList(sailorRepository.findByFbKey(cds.getFbKey()));
}
mav.addObject("crackdownStatusList", crackdownStatusList); mav.addObject("crackdownStatusList", crackdownStatusList);
crackdownStatus.setContentCnt(crackdownStatusService.selectCrackdownStatusListCnt(crackdownStatus)); crackdownStatus.setContentCnt(crackdownStatusService.selectCrackdownStatusListCnt(crackdownStatus));
crackdownStatus.setPaginationInfo(); crackdownStatus.setPaginationInfo();
@ -44,11 +60,31 @@ public class CrackdownStatusController {
return mav; return mav;
} }
@GetMapping("/crackdownStatus/crackdownStatusViewModal")
public ModelAndView internationalCrimeArrestViewModal(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatus crackdownStatus){
ModelAndView mav = new ModelAndView("faStatistics/crackdownStatus/crackdownStatusViewModal");
crackdownStatus = crackdownStatusService.selectCrackdownStatus(crackdownStatus.getCdsKey());
crackdownStatus.setFishingBoat(fishingBoatRepository.findByCdsKey(crackdownStatus.getCdsKey()));
crackdownStatus.setProcessResult(processResultRepository.findByCdsKey(crackdownStatus.getCdsKey()));
crackdownStatus.setViolationList(violationRepository.findByFbKey(crackdownStatus.getFishingBoat().getFbKey()));
crackdownStatus.setSailorList(sailorRepository.findByFbKey(crackdownStatus.getFishingBoat().getFbKey()));
mav.addObject("crackdownStatus", crackdownStatus);
mav.addObject("userSeq",loginUser.getUserSeq());
//메뉴권한 확인
mav.addObject("accessAuth", authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/crackdownStatus").get(0).getAccessAuth());
return mav;
}
@GetMapping("/crackdownStatus/crackdownStatusEditModal") @GetMapping("/crackdownStatus/crackdownStatusEditModal")
public ModelAndView crackdownStatusEditModal(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatus crackdownStatus){ public ModelAndView crackdownStatusEditModal(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatus crackdownStatus){
ModelAndView mav = new ModelAndView("faStatistics/crackdownStatus/crackdownStatusEditModal"); ModelAndView mav = new ModelAndView("faStatistics/crackdownStatus/crackdownStatusEditModal");
if(crackdownStatus.getCdsKey()!=null){ if(crackdownStatus.getCdsKey()!=null){
crackdownStatus = crackdownStatusService.selectCrackdownStatus(crackdownStatus.getCdsKey()); crackdownStatus = crackdownStatusService.selectCrackdownStatus(crackdownStatus.getCdsKey());
crackdownStatus.setFishingBoat(fishingBoatRepository.findByCdsKey(crackdownStatus.getCdsKey()));
crackdownStatus.setProcessResult(processResultRepository.findByCdsKey(crackdownStatus.getCdsKey()));
crackdownStatus.setViolationList(violationRepository.findByFbKey(crackdownStatus.getFishingBoat().getFbKey()));
crackdownStatus.setSailorList(sailorRepository.findByFbKey(crackdownStatus.getFishingBoat().getFbKey()));
}else{ }else{
crackdownStatus.setWrtOrgan(loginUser.getOgCd()); crackdownStatus.setWrtOrgan(loginUser.getOgCd());
crackdownStatus.setWrtNm(loginUser.getUserNm()); crackdownStatus.setWrtNm(loginUser.getUserNm());

View File

@ -9,6 +9,7 @@ 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.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@ -64,8 +65,8 @@ public class CrackdownStatus extends BaseModel {
private String mmsi; private String mmsi;
@Column(name = "field_ivsgt") @Column(name = "field_ivsgt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDateTime fieldIvsgt; private LocalDate fieldIvsgt;
@Column(name = "obstr_exspd_cnt") @Column(name = "obstr_exspd_cnt")
private Integer obstrExspdCnt; private Integer obstrExspdCnt;
@ -137,4 +138,36 @@ public class CrackdownStatus extends BaseModel {
private String crackdownPoliceEtc; private String crackdownPoliceEtc;
@Transient @Transient
private String crackdownBoatEtc; 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;
} }

View File

@ -122,4 +122,6 @@ public class FishingBoat extends BaseModel {
@Transient @Transient
private String boatMaterialEtc; private String boatMaterialEtc;
@Transient
private String fisheryTypeEtc;
} }

View File

@ -9,6 +9,7 @@ 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.LocalDateTime; import java.time.LocalDateTime;
@Getter @Getter
@ -43,12 +44,12 @@ public class ProcessResult extends BaseModel {
private String isIvsgtStop; private String isIvsgtStop;
@Column(name = "eviction_dt") @Column(name = "eviction_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd")
private String evictionDt; private LocalDate evictionDt;
@Column(name = "direct_handover_dt") @Column(name = "direct_handover_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDateTime directHandoverDt; private LocalDate directHandoverDt;
@Column(name = "handover_sea_point_lon") @Column(name = "handover_sea_point_lon")
private String handoverSeaPointLon; private String handoverSeaPointLon;
@ -66,34 +67,34 @@ public class ProcessResult extends BaseModel {
private String middleTakeoverBoat; private String middleTakeoverBoat;
@Column(name = "consignment_start_dt") @Column(name = "consignment_start_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDateTime consignmentStartDt; private LocalDate consignmentStartDt;
@Column(name = "consignment_end_dt") @Column(name = "consignment_end_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDateTime consignmentEndDt; private LocalDate consignmentEndDt;
@Column(name = "confiscation_dt") @Column(name = "confiscation_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDateTime confiscationDt; private LocalDate confiscationDt;
@Column(name = "boat_disposal_dt") @Column(name = "boat_disposal_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDateTime boatDisposalDt; private LocalDate boatDisposalDt;
@Column(name = "boat_disposal_type") @Column(name = "boat_disposal_type")
private String boatDisposalType; private String boatDisposalType;
@Column(name = "return_dt") @Column(name = "return_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDateTime returnDt; private LocalDate returnDt;
@Column(name = "exile_cnt") @Column(name = "exile_cnt")
private Integer exileCnt; private Integer exileCnt;
@Column(name = "exile_dt") @Column(name = "exile_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDateTime exileDt; private LocalDate exileDt;
@Column(name = "flight") @Column(name = "flight")
private String flight; private String flight;

View File

@ -4,5 +4,5 @@ import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.FishingBoat;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
public interface FishingBoatRepository extends JpaRepository<FishingBoat, Integer> { public interface FishingBoatRepository extends JpaRepository<FishingBoat, Integer> {
FishingBoat findByCdsKey(Integer cdsKey);
} }

View File

@ -4,5 +4,5 @@ import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.ProcessResult;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
public interface ProcessResultRepository extends JpaRepository<ProcessResult, Integer> { public interface ProcessResultRepository extends JpaRepository<ProcessResult, Integer> {
ProcessResult findByCdsKey(Integer cdsKey);
} }

View File

@ -3,6 +3,8 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.Sailor; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.Sailor;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
public interface SailorRepository extends JpaRepository<Sailor, Integer> { import java.util.List;
public interface SailorRepository extends JpaRepository<Sailor, Integer> {
List<Sailor> findByFbKey(Integer fbKey);
} }

View File

@ -3,6 +3,8 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.Violation; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.Violation;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
public interface ViolationRepository extends JpaRepository<Violation, Integer> { import java.util.List;
public interface ViolationRepository extends JpaRepository<Violation, Integer> {
List<Violation> findByFbKey(Integer fbKey);
} }

View File

@ -54,6 +54,10 @@ public class CrackdownStatusService extends BaseService {
if (crackdownStatus.getFishingBoat().getBoatMaterialEtc() != null) { if (crackdownStatus.getFishingBoat().getBoatMaterialEtc() != null) {
crackdownStatus.getFishingBoat().setBoatMaterial(crackdownStatus.getFishingBoat().getBoatMaterialEtc()); crackdownStatus.getFishingBoat().setBoatMaterial(crackdownStatus.getFishingBoat().getBoatMaterialEtc());
} }
if (crackdownStatus.getFishingBoat().getFisheryTypeEtc() != null) {
crackdownStatus.getFishingBoat().setFisheryType(crackdownStatus.getFishingBoat().getFisheryTypeEtc());
}
crackdownStatus.getFishingBoat().setCdsKey(cdsKey); crackdownStatus.getFishingBoat().setCdsKey(cdsKey);
Integer fbKey = fishingBoatRepository.save(crackdownStatus.getFishingBoat()).getFbKey(); Integer fbKey = fishingBoatRepository.save(crackdownStatus.getFishingBoat()).getFbKey();
crackdownStatus.getFishingBoat().setFbKey(fbKey); crackdownStatus.getFishingBoat().setFbKey(fbKey);

View File

@ -12,46 +12,103 @@
<select id="selectCrackdownStatusList" resultType="CrackdownStatus" parameterType="CrackdownStatus"> <select id="selectCrackdownStatusList" resultType="CrackdownStatus" parameterType="CrackdownStatus">
SELECT SELECT
c.cds_key cs.cds_key
, c.case_num , cs.case_num
, c.napo_dt , cs.napo_dt
, c.napo_sea_point_lon , cs.napo_sea_point_lon
, c.napo_sea_point_lat , cs.napo_sea_point_lat
, c.napo_sea_point_detail , cs.napo_sea_point_detail
, c.invasion_type , cs.invasion_type
, c.nll , cs.nll
, c.case_agency , cs.case_agency
, c.case_police_officer , cs.case_police_officer
, c.crackdown_boat , cs.crackdown_boat
, c.crackdown_police , cs.crackdown_police
, c.mmsi , cs.mmsi
, c.field_ivsgt , cs.field_ivsgt
, c.obstr_exspd_cnt , cs.obstr_exspd_cnt
, c.person_damage_cnt , cs.person_damage_cnt
, c.person_damage_amount , cs.person_damage_amount
, c.person_damage_detail , cs.person_damage_detail
, c.material_damage_cnt , cs.material_damage_cnt
, c.material_damage_amount , cs.material_damage_amount
, c.material_damage_detail , cs.material_damage_detail
, c.field_ivsgt_napo_dt , cs.field_ivsgt_napo_dt
, c.field_ivsgt_release_dt , cs.field_ivsgt_release_dt
, c.field_ivsgt_time_taken , cs.field_ivsgt_time_taken
, c.pressurized_start_dt , cs.pressurized_start_dt
, c.pressurized_end_dt , cs.pressurized_end_dt
, c.distance , cs.distance
, c.wrt_organ , cs.wrt_organ
, c.wrt_user_seq , cs.wrt_user_seq
, c.wrt_nm , cs.wrt_nm
, c.wrt_dt , cs.wrt_dt
FROM crackdown_status c , fb.fb_key
, fb.boat_name_kr
, fb.boat_name_cn
, fb.ton_cnt
, fb.fishery_type
, fb.boat_material
, fb.boat_nny_sung
, fb.boat_nny_si
, fb.offense_quantity
, fb.offense_amount
, fb.offense_illegal_waste_quantity
, fb.dambo_unpaid_amount
, fb.dambo_payment
, fb.payment_payment_dt
, fb.confiscation_frame
, fb.confiscation_width
, fb.confiscation_jo
, fb.confiscation_gae
, fb.confiscation_etc
, fb.catch_fish_species
, fb.catch_cnt
, fb.offense_fish_species
, fb.offense_catch_cnt
, fb.save_yn
, pr.pr_key
, pr.process_status
, pr.eviction_dt
, pr.direct_handover_dt
, pr.handover_sea_point_lon
, pr.handover_sea_point_lat
, pr.handover_sea_point_detail
, pr.handover_boat
, pr.middle_takeover_boat
, pr.consignment_start_dt
, pr.consignment_end_dt
, pr.confiscation_dt
, pr.boat_disposal_dt
, pr.boat_disposal_type
, pr.return_dt
, (SELECT count(*) FROM sailor s WHERE s.fb_key = fb.fb_key AND s.is_restriction = 'Y' AND s.position != 'POS004') AS restrictionTotal
, (SELECT count(*) FROM sailor s WHERE s.fb_key = fb.fb_key AND s.is_restriction = 'N' AND s.position != 'POS004') AS notRestrictionTotal
, (SELECT count(*) FROM sailor s WHERE s.fb_key = fb.fb_key AND s.position = 'POS001' AND s.is_restriction = 'Y') AS restrictionCaptin
, (SELECT count(*) FROM sailor s WHERE s.fb_key = fb.fb_key AND s.position = 'POS001' AND s.is_restriction = 'Y') AS notRestrictionCaptin
, (SELECT count(*) FROM sailor s WHERE s.fb_key = fb.fb_key AND s.position = 'POS002' AND s.is_restriction = 'Y') AS restrictionMate
, (SELECT count(*) FROM sailor s WHERE s.fb_key = fb.fb_key AND s.position = 'POS003' AND s.is_restriction = 'Y') AS restrictionWarden
, (SELECT count(*) FROM sailor s WHERE s.fb_key = fb.fb_key AND s.position = 'POS002' AND s.is_restriction = 'Y') AS notRestrictionMate
, (SELECT count(*) FROM sailor s WHERE s.fb_key = fb.fb_key AND s.position = 'POS003' AND s.is_restriction = 'Y') AS notRestrictionWarden
, (SELECT count(*) FROM sailor s WHERE s.fb_key = fb.fb_key AND s.is_restriction = 'Y' AND (s.position = 'POS005' or s."position" = 'POS006')) AS restrictionSailor
, (SELECT count(*) FROM sailor s WHERE s.fb_key = fb.fb_key AND s.is_restriction = 'N' AND (s.position = 'POS005' or s."position" = 'POS006')) AS notRestrictionSailor
FROM crackdown_status cs
INNER JOIN fishing_boat fb
ON cs.cds_key = fb.cds_key
INNER JOIN process_result pr
ON cs.cds_key = pr.cds_key
<include refid="selectCrackdownStatusListWhere"></include> <include refid="selectCrackdownStatusListWhere"></include>
ORDER BY c.cds_key DESC ORDER BY cs.cds_key DESC
LIMIT #{rowCnt} OFFSET #{firstIndex} LIMIT #{rowCnt} OFFSET #{firstIndex}
</select> </select>
<select id="selectCrackdownStatusListCnt" resultType="int" parameterType="CrackdownStatus"> <select id="selectCrackdownStatusListCnt" resultType="int" parameterType="CrackdownStatus">
SELECT count(*) SELECT count(*)
FROM crackdown_status FROM crackdown_status cs
INNER JOIN fishing_boat fb
ON cs.cds_key = fb.cds_key
INNER JOIN process_result pr
ON cs.cds_key = pr.cds_key
<include refid="selectCrackdownStatusListWhere"></include> <include refid="selectCrackdownStatusListWhere"></include>
</select> </select>
</mapper> </mapper>

View File

@ -7,6 +7,10 @@ $(document).on('click', '#crackdownStatusEditBtn', function () {
getCrackdownStatusEditModal(Number($("#icaViewBody").find("[name='cdsKey']").val())); getCrackdownStatusEditModal(Number($("#icaViewBody").find("[name='cdsKey']").val()));
}); });
$(document).on('click', '#cdsEditBtn', function () {
$("#crackdownStatusViewModal").modal('hide');
getCrackdownStatusEditModal(Number($("#crackdownStatusViewBody").find("[name='cdsKey']").val()));
});
$(document).on('click', '#saveCrackdownStatusBtn', function (){ $(document).on('click', '#saveCrackdownStatusBtn', function (){
saveCrackdownStatus('N') saveCrackdownStatus('N')
@ -47,8 +51,8 @@ $(document).on('click', '#violationAddBtn', function (){
}) })
$('#violationDiv').append( $('#violationDiv').append(
'<div>' '<div class="row">'
+ '<select class="form-select form-select-sm" name="violation">' + '<select class="form-select form-select-sm violation" name="violation">'
+ '<option value="">선택</option>' + '<option value="">선택</option>'
+ violation + violation
+ '<option value="etc">직접입력</option>' + '<option value="etc">직접입력</option>'
@ -70,10 +74,23 @@ $(document).on('click', '#violationRemoveBtn', function (){
$(document).on('change', '.violation', function (){ $(document).on('change', '.violation', function (){
if ($(this).val() == 'etc') { if ($(this).val() == 'etc') {
$(this).after( $(this).after(
'<div class="col-auto">' '<div class="row col-auto etcDiv">'
+ '<input type="text" class="form-control" name="violationEtc">' + '<input type="text" class="form-control" name="violationEtc">'
+ '</div>' + '</div>'
); );
} else {
$(this).next('.etcDiv').remove();
}
});
$(document).on('change', '#fisheryType', function (){
if ($(this).val() == 'etc') {
$(this).after(
'<div class="col-auto">'
+ '<input type="text" class="form-control" name="fisheryTypeEtc">'
+ '</div>'
);
} else { } else {
$(this).next().remove(); $(this).next().remove();
} }
@ -127,6 +144,26 @@ $(document).on('change', '#processStatus', function (){
} }
}); });
$(document).on('click', '#cdsDownExcel', function (){
exportExcel('불법조업 불법어선 단속현황');
});
function getCrackdownStatusViewModal(cdsKey){
$.ajax({
url: '/faStatistics/crackdownStatus/crackdownStatusViewModal',
data: {cdsKey: cdsKey},
type: 'GET',
dataType:"html",
success: function(html){
$("#crackdownStatusViewBody").empty().append(html)
$("#crackdownStatusViewModal").modal('show');
},
error:function(){
}
});
}
function getCrackdownStatusEditModal(cdsKey){ function getCrackdownStatusEditModal(cdsKey){
$.ajax({ $.ajax({
url: '/faStatistics/crackdownStatus/crackdownStatusEditModal', url: '/faStatistics/crackdownStatus/crackdownStatusEditModal',
@ -140,17 +177,17 @@ function getCrackdownStatusEditModal(cdsKey){
$("#crackdownStatusEditModalContent").empty().append(html); $("#crackdownStatusEditModalContent").empty().append(html);
$("#crackdownStatusEditModal").modal('show'); $("#crackdownStatusEditModal").modal('show');
$("#napoDt").datepicker({ $("#napoDt").datetimepicker({
format: "yyyy-mm-dd", format:'Y-m-d H:i',
language: "ko" lang:'kr'
}); });
$("#birthdate").datepicker({ $("#birthdate").datepicker({
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
language: "ko" language: "ko"
}); });
$("#paymentPaymentDt").datepicker({ $("#paymentPaymentDt").datetimepicker({
format: "yyyy-mm-dd", format:'Y-m-d H:i',
language: "ko" lang:'kr'
}); });
$("#consignmentStartDt").datepicker({ $("#consignmentStartDt").datepicker({
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
@ -180,23 +217,22 @@ function getCrackdownStatusEditModal(cdsKey){
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
language: "ko" language: "ko"
}); });
$("#fieldIvsgtNapoDt").datepicker({ $("#fieldIvsgtNapoDt").datetimepicker({
format: "yyyy-mm-dd", format:'Y-m-d H:i',
language: "ko" lang:'kr'
}); });
$("#fieldIvsgtReleaseDt").datepicker({ $("#fieldIvsgtReleaseDt").datetimepicker({
format: "yyyy-mm-dd", format:'Y-m-d H:i',
language: "ko" lang:'kr'
}); });
$("#pressurizedStartDt").datepicker({ $("#pressurizedStartDt").datetimepicker({
format: "yyyy-mm-dd", format:'Y-m-d H:i',
language: "ko" lang:'kr'
}); });
$("#pressurizedEndDt").datepicker({ $("#pressurizedEndDt").datetimepicker({
format: "yyyy-mm-dd", format:'Y-m-d H:i',
language: "ko" lang:'kr'
}); });
}, },
error:function(){ error:function(){
@ -215,14 +251,27 @@ function saveCrackdownStatus(saveYn){
let sailorList = []; let sailorList = [];
sailorList.push( sailorList.push(
{ position: 'POS001', sailorNameKr: null, isRestriction: $("#cdsEditForm").find('select[name="captin"]').val() != '' ? $("#cdsEditForm").find('select[name="captin"]').val() : null }, {
{ position: 'POS002', sailorNameKr: null, isRestriction: $("#cdsEditForm").find('select[name="mate"]').val() != '' ? $("#cdsEditForm").find('select[name="mate"]').val() : null }, position: 'POS001',
{ position: 'POS003', sailorNameKr: null, isRestriction: $("#cdsEditForm").find('select[name="warden"]').val() != '' ? $("#cdsEditForm").find('select[name="warden"]').val() : null } sailorNameKr: $("#cdsEditForm").find('input[name="sailorNameKr"]').val() != '' ? $("#cdsEditForm").find('input[name="sailorNameKr"]').val() : null,
isRestriction: $("#cdsEditForm").find('select[name="captin"]').val() != '' ? $("#cdsEditForm").find('select[name="captin"]').val() : null,
birthdate: $("#cdsEditForm").find('input[name="birthdate"]').val() != '' ? $("#cdsEditForm").find('input[name="birthdate"]').val() : null
},
{
position: 'POS002',
sailorNameKr: null,
isRestriction: $("#cdsEditForm").find('select[name="mate"]').val() != '' ? $("#cdsEditForm").find('select[name="mate"]').val() : null
},
{
position: 'POS003',
sailorNameKr: null,
isRestriction: $("#cdsEditForm").find('select[name="warden"]').val() != '' ? $("#cdsEditForm").find('select[name="warden"]').val() : null
}
); );
$(".sailor-list").each(function (){ $("select[name='sailor']").each(function (){
sailorList.push({ sailorList.push({
sailorKey: $(this).parent().parent().find('input[name="sailorKey"]').val() != undefined ? Number($(this).find('input[name="sailorKey"]').val()) : null, sailorKey: $(this).parent().parent().find('input[name="sailorKey"]').val() != undefined ? Number($(this).parent().parent().find('input[name="sailorKey"]').val()) : null,
sailorNameKr: $(this).parent().parent().find('input[name="sailorNameKr"]').val(), sailorNameKr: $(this).parent().parent().find('input[name="sailorNameKr"]').val(),
position: 'POS006', position: 'POS006',
isRestriction: $(this).val() != undefined ? $(this).val() : null isRestriction: $(this).val() != undefined ? $(this).val() : null
@ -240,14 +289,17 @@ function saveCrackdownStatus(saveYn){
if (sailorList[i].isRestriction != null) { if (sailorList[i].isRestriction != null) {
formData.append(`sailorList[${i}].isRestriction`, sailorList[i].isRestriction); formData.append(`sailorList[${i}].isRestriction`, sailorList[i].isRestriction);
} }
if (sailorList[i].birthdate != null) {
formData.append(`sailorList[${i}].birthdate`, sailorList[i].birthdate);
}
} }
$(".violation").each(function (){ $(".violation").each(function (){
violationList.push({ violationList.push({
violationKey: $(this).parent().find('input[name="violationKey"]').val() != undefined ? Number($(this).find('input[name="violationKey"]').val()) : null, violationKey: $(this).parent().find('input[name="violationKey"]').val() != undefined ? Number($(this).parent().find('input[name="violationKey"]').val()) : null,
fbKey: $("#cdsEditForm").find('input[name="fbKey"]').val() != undefined ? Number($(this).find('input[name="fbKey"]').val()) : null, fbKey: $("#cdsEditForm").find('input[name="fbKey"]').val() != undefined ? Number($("#cdsEditForm").find('input[name="fbKey"]').val()) : null,
violation: $(this).val() != '' ? $(this).val() : null, violation: $(this).val() != '' ? $(this).val() : null,
violationEtc: $(this).parent().find('input[name="violationEtc"]').val() != undefined ? $(this).find('input[name="violationEtc"]').val() : null violationEtc: $(this).parent().find('input[name="violationEtc"]').val() != undefined ? $(this).parent().find('input[name="violationEtc"]').val() : null
}); });
}); });
@ -303,3 +355,46 @@ function contentCheck(){
return flag; return flag;
} }
function exportExcel(name){
var excelHandler = {
getExcelFileName : function(){
return name+getToday()+'.xlsx'; //파일명
},
getSheetName : function(){
return name;
},
getExcelData : function(){
return document.getElementById('cdsTable'); //TABLE id
},
getWorksheet : function(){
return XLSX.utils.table_to_sheet(this.getExcelData());
}
}
// step 1. workbook 생성
var wb = XLSX.utils.book_new();
// step 2. 시트 만들기
var newWorksheet = excelHandler.getWorksheet();
// step 3. workbook에 새로만든 워크시트에 이름을 주고 붙인다.
XLSX.utils.book_append_sheet(wb, newWorksheet, excelHandler.getSheetName());
// step 4. 엑셀 파일 만들기
var wbout = XLSX.write(wb, {bookType:'xlsx', type: 'binary'});
// step 5. 엑셀 파일 내보내기
saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), excelHandler.getExcelFileName());
}
function s2ab(s) {
var buf = new ArrayBuffer(s.length); //convert s to arrayBuffer
var view = new Uint8Array(buf); //create uint8array as viewer
for (var i=0; i<s.length; i++) view[i] = s.charCodeAt(i) & 0xFF; //convert to octet
return buf;
}
function getToday() {
var date = new Date();
var year = date.getFullYear();
}

View File

@ -11,7 +11,6 @@ $(document).on('click', '#icaAddBtn', function () {
}); });
$(document).on('click', '#icaEditBtn', function () { $(document).on('click', '#icaEditBtn', function () {
$("#icaViewModal").modal('hide');
$("#icaViewModal").modal('hide'); $("#icaViewModal").modal('hide');
getIcaEditModal(Number($("#icaViewBody").find("[name='icaKey']").val())); getIcaEditModal(Number($("#icaViewBody").find("[name='icaKey']").val()));
}); });

View File

@ -0,0 +1,568 @@
.xdsoft_datetimepicker {
box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.506);
background: #fff;
border-bottom: 1px solid #bbb;
border-left: 1px solid #ccc;
border-right: 1px solid #ccc;
border-top: 1px solid #ccc;
color: #333;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
padding: 8px;
padding-left: 0;
padding-top: 2px;
position: absolute;
z-index: 9999;
-moz-box-sizing: border-box;
box-sizing: border-box;
display: none;
}
.xdsoft_datetimepicker.xdsoft_rtl {
padding: 8px 0 8px 8px;
}
.xdsoft_datetimepicker iframe {
position: absolute;
left: 0;
top: 0;
width: 75px;
height: 210px;
background: transparent;
border: none;
}
/*For IE8 or lower*/
.xdsoft_datetimepicker button {
border: none !important;
}
.xdsoft_noselect {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
}
.xdsoft_noselect::selection { background: transparent }
.xdsoft_noselect::-moz-selection { background: transparent }
.xdsoft_datetimepicker.xdsoft_inline {
display: inline-block;
position: static;
box-shadow: none;
}
.xdsoft_datetimepicker * {
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
margin: 0;
}
.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker {
display: none;
}
.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active {
display: block;
}
.xdsoft_datetimepicker .xdsoft_datepicker {
width: 224px;
float: left;
margin-left: 8px;
}
.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_datepicker {
float: right;
margin-right: 8px;
margin-left: 0;
}
.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker {
width: 256px;
}
.xdsoft_datetimepicker .xdsoft_timepicker {
width: 58px;
float: left;
text-align: center;
margin-left: 8px;
margin-top: 0;
}
.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker {
float: right;
margin-right: 8px;
margin-left: 0;
}
.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker {
margin-top: 8px;
margin-bottom: 3px
}
.xdsoft_datetimepicker .xdsoft_monthpicker {
position: relative;
text-align: center;
}
.xdsoft_datetimepicker .xdsoft_label i,
.xdsoft_datetimepicker .xdsoft_prev,
.xdsoft_datetimepicker .xdsoft_next,
.xdsoft_datetimepicker .xdsoft_today_button {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC);
}
.xdsoft_datetimepicker .xdsoft_label i {
opacity: 0.5;
background-position: -92px -19px;
display: inline-block;
width: 9px;
height: 20px;
vertical-align: middle;
}
.xdsoft_datetimepicker .xdsoft_prev {
float: left;
background-position: -20px 0;
}
.xdsoft_datetimepicker .xdsoft_today_button {
float: left;
background-position: -70px 0;
margin-left: 5px;
}
.xdsoft_datetimepicker .xdsoft_next {
float: right;
background-position: 0 0;
}
.xdsoft_datetimepicker .xdsoft_next,
.xdsoft_datetimepicker .xdsoft_prev ,
.xdsoft_datetimepicker .xdsoft_today_button {
background-color: transparent;
background-repeat: no-repeat;
border: 0 none;
cursor: pointer;
display: block;
height: 30px;
opacity: 0.5;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
outline: medium none;
overflow: hidden;
padding: 0;
position: relative;
text-indent: 100%;
white-space: nowrap;
width: 20px;
min-width: 0;
}
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next {
float: none;
background-position: -40px -15px;
height: 15px;
width: 30px;
display: block;
margin-left: 14px;
margin-top: 7px;
}
.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_prev,
.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_next {
float: none;
margin-left: 0;
margin-right: 14px;
}
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev {
background-position: -40px 0;
margin-bottom: 7px;
margin-top: 0;
}
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box {
height: 151px;
overflow: hidden;
border-bottom: 1px solid #ddd;
}
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div {
background: #f5f5f5;
border-top: 1px solid #ddd;
color: #666;
font-size: 12px;
text-align: center;
border-collapse: collapse;
cursor: pointer;
border-bottom-width: 0;
height: 25px;
line-height: 25px;
}
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div > div:first-child {
border-top-width: 0;
}
.xdsoft_datetimepicker .xdsoft_today_button:hover,
.xdsoft_datetimepicker .xdsoft_next:hover,
.xdsoft_datetimepicker .xdsoft_prev:hover {
opacity: 1;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
}
.xdsoft_datetimepicker .xdsoft_label {
display: inline;
position: relative;
z-index: 9999;
margin: 0;
padding: 5px 3px;
font-size: 14px;
line-height: 20px;
font-weight: bold;
background-color: #fff;
float: left;
width: 182px;
text-align: center;
cursor: pointer;
}
.xdsoft_datetimepicker .xdsoft_label:hover>span {
text-decoration: underline;
}
.xdsoft_datetimepicker .xdsoft_label:hover i {
opacity: 1.0;
}
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select {
border: 1px solid #ccc;
position: absolute;
right: 0;
top: 30px;
z-index: 101;
display: none;
background: #fff;
max-height: 160px;
overflow-y: hidden;
}
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect{ right: -7px }
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect{ right: 2px }
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {
color: #fff;
background: #ff8000;
}
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option {
padding: 2px 10px 2px 5px;
text-decoration: none !important;
}
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {
background: #33aaff;
box-shadow: #178fe5 0 1px 3px 0 inset;
color: #fff;
font-weight: 700;
}
.xdsoft_datetimepicker .xdsoft_month {
width: 100px;
text-align: right;
}
.xdsoft_datetimepicker .xdsoft_calendar {
clear: both;
}
.xdsoft_datetimepicker .xdsoft_year{
width: 48px;
margin-left: 5px;
}
.xdsoft_datetimepicker .xdsoft_calendar table {
border-collapse: collapse;
width: 100%;
}
.xdsoft_datetimepicker .xdsoft_calendar td > div {
padding-right: 5px;
}
.xdsoft_datetimepicker .xdsoft_calendar th {
height: 25px;
}
.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th {
width: 14.2857142%;
background: #f5f5f5;
border: 1px solid #ddd;
color: #666;
font-size: 12px;
text-align: right;
vertical-align: middle;
padding: 0;
border-collapse: collapse;
cursor: pointer;
height: 25px;
}
.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th {
width: 12.5%;
}
.xdsoft_datetimepicker .xdsoft_calendar th {
background: #f1f1f1;
}
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today {
color: #33aaff;
}
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default {
background: #ffe9d2;
box-shadow: #ffb871 0 1px 4px 0 inset;
color: #000;
}
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint {
background: #c1ffc9;
box-shadow: #00dd1c 0 1px 4px 0 inset;
color: #000;
}
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current {
background: #33aaff;
box-shadow: #178fe5 0 1px 3px 0 inset;
color: #fff;
font-weight: 700;
}
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,
.xdsoft_datetimepicker .xdsoft_time_box >div >div.xdsoft_disabled {
opacity: 0.5;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
cursor: default;
}
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled {
opacity: 0.2;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
}
.xdsoft_datetimepicker .xdsoft_calendar td:hover,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div:hover {
color: #fff !important;
background: #ff8000 !important;
box-shadow: none !important;
}
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover {
background: #33aaff !important;
box-shadow: #178fe5 0 1px 3px 0 inset !important;
color: #fff !important;
}
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_disabled:hover {
color: inherit !important;
background: inherit !important;
box-shadow: inherit !important;
}
.xdsoft_datetimepicker .xdsoft_calendar th {
font-weight: 700;
text-align: center;
color: #999;
cursor: default;
}
.xdsoft_datetimepicker .xdsoft_copyright {
color: #ccc !important;
font-size: 10px;
clear: both;
float: none;
margin-left: 8px;
}
.xdsoft_datetimepicker .xdsoft_copyright a { color: #eee !important }
.xdsoft_datetimepicker .xdsoft_copyright a:hover { color: #aaa !important }
.xdsoft_time_box {
position: relative;
border: 1px solid #ccc;
}
.xdsoft_scrollbar >.xdsoft_scroller {
background: #ccc !important;
height: 20px;
border-radius: 3px;
}
.xdsoft_scrollbar {
position: absolute;
width: 7px;
right: 0;
top: 0;
bottom: 0;
cursor: pointer;
}
.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_scrollbar {
left: 0;
right: auto;
}
.xdsoft_scroller_box {
position: relative;
}
.xdsoft_datetimepicker.xdsoft_dark {
box-shadow: 0 5px 15px -5px rgba(255, 255, 255, 0.506);
background: #000;
border-bottom: 1px solid #444;
border-left: 1px solid #333;
border-right: 1px solid #333;
border-top: 1px solid #333;
color: #ccc;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box {
border-bottom: 1px solid #222;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div {
background: #0a0a0a;
border-top: 1px solid #222;
color: #999;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label {
background-color: #000;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select {
border: 1px solid #333;
background: #000;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {
color: #000;
background: #007fff;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {
background: #cc5500;
box-shadow: #b03e00 0 1px 3px 0 inset;
color: #000;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==);
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
background: #0a0a0a;
border: 1px solid #222;
color: #999;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
background: #0e0e0e;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today {
color: #cc5500;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default {
background: #ffe9d2;
box-shadow: #ffb871 0 1px 4px 0 inset;
color:#000;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint {
background: #c1ffc9;
box-shadow: #00dd1c 0 1px 4px 0 inset;
color:#000;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current {
background: #cc5500;
box-shadow: #b03e00 0 1px 3px 0 inset;
color: #000;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div:hover {
color: #000 !important;
background: #007fff !important;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
color: #666;
}
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright { color: #333 !important }
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a { color: #111 !important }
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover { color: #555 !important }
.xdsoft_dark .xdsoft_time_box {
border: 1px solid #333;
}
.xdsoft_dark .xdsoft_scrollbar >.xdsoft_scroller {
background: #333 !important;
}
.xdsoft_datetimepicker .xdsoft_save_selected {
display: block;
border: 1px solid #dddddd !important;
margin-top: 5px;
width: 100%;
color: #454551;
font-size: 13px;
}
.xdsoft_datetimepicker .blue-gradient-button {
font-family: "museo-sans", "Book Antiqua", sans-serif;
font-size: 12px;
font-weight: 300;
color: #82878c;
height: 28px;
position: relative;
padding: 4px 17px 4px 33px;
border: 1px solid #d7d8da;
background: -moz-linear-gradient(top, #fff 0%, #f4f8fa 73%);
/* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(73%, #f4f8fa));
/* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #fff 0%, #f4f8fa 73%);
/* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #fff 0%, #f4f8fa 73%);
/* Opera 11.10+ */
background: -ms-linear-gradient(top, #fff 0%, #f4f8fa 73%);
/* IE10+ */
background: linear-gradient(to bottom, #fff 0%, #f4f8fa 73%);
/* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#f4f8fa',GradientType=0 );
/* IE6-9 */
}
.xdsoft_datetimepicker .blue-gradient-button:hover, .xdsoft_datetimepicker .blue-gradient-button:focus, .xdsoft_datetimepicker .blue-gradient-button:hover span, .xdsoft_datetimepicker .blue-gradient-button:focus span {
color: #454551;
background: -moz-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
/* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f8fa), color-stop(73%, #FFF));
/* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
/* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
/* Opera 11.10+ */
background: -ms-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
/* IE10+ */
background: linear-gradient(to bottom, #f4f8fa 0%, #FFF 73%);
/* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f8fa', endColorstr='#FFF',GradientType=0 );
/* IE6-9 */
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -6,6 +6,7 @@
<th:block layout:fragment="script"> <th:block layout:fragment="script">
<script th:inline="javascript"> <script th:inline="javascript">
const commonCode = [[${session.commonCode}]]; const commonCode = [[${session.commonCode}]];
let totalPersonDamageAmount = 0;
</script> </script>
<script type="text/javascript" th:src="@{/js/faStatistics/crackdownStatus.js}"></script> <script type="text/javascript" th:src="@{/js/faStatistics/crackdownStatus.js}"></script>
</th:block> </th:block>
@ -17,7 +18,7 @@
<div class="row mx-0"> <div class="row mx-0">
<div class="col-12 card"> <div class="col-12 card">
<div class="card-body"> <div class="card-body">
<form method="get" th:action="@{/faStatistics/crackdownStatus}" id="icaSearchForm"> <form method="get" th:action="@{/faStatistics/crackdownStatus}" id="cdsSearchForm">
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between pe-3 py-1"> <div class="row justify-content-between pe-3 py-1">
<div class="col-auto"> <div class="col-auto">
@ -38,7 +39,7 @@
</div> </div>
</form> </form>
<div class="row justify-content-start" style="overflow: hidden; overflow-x: scroll"> <div class="row justify-content-start" style="overflow: hidden; overflow-x: scroll">
<table class="table table-striped"> <table class="table table-striped" style="max-width: none; width: auto;" id="cdsTable">
<thead> <thead>
<tr> <tr>
<th rowspan="4">연번</th> <th rowspan="4">연번</th>
@ -109,7 +110,7 @@
<th colspan="2">폐선</th> <th colspan="2">폐선</th>
<th rowspan="2">침몰</th> <th rowspan="2">침몰</th>
<th rowspan="2">환부</th> <th rowspan="2">환부</th>
<th colspan="3">일시</th> <th rowspan="3">일시</th>
<th rowspan="3">해점</th> <th rowspan="3">해점</th>
<th rowspan="3">인계함정</th> <th rowspan="3">인계함정</th>
<th rowspan="3">중측인수함정</th> <th rowspan="3">중측인수함정</th>
@ -142,16 +143,16 @@
<th>폐선조건부공매</th> <th>폐선조건부공매</th>
</tr> </tr>
<tr> <tr>
<th>3</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[invasionType == 'IST001'].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[invasionType == 'IST001'].![1]) : 0}"></th>
<th>4</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[invasionType == 'IST002'].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[invasionType == 'IST002'].![1]) : 0}"></th>
<th>2</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[invasionType == 'IST003'].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[invasionType == 'IST003'].![1]) : 0}"></th>
<th>1</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[invasionType == 'IST004'].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[invasionType == 'IST004'].![1]) : 0}"></th>
<th>4</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[nll == 'Y'].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[nll == 'Y'].![1]) : 0}"></th>
<th>3</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[personDamageCnt > 0 || personDamageAmount > 0].![1]) ne null ? 1 : 0}"></th>
<th>4</th> <th th:text="${#aggregates.sum(crackdownStatusList.![personDamageCnt])}"></th>
<th>9000,000</th> <th th:text="${#aggregates.sum(crackdownStatusList.![personDamageAmount])}"></th>
<th>4</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[materialDamageCnt > 0 || materialDamageAmount > 0].![1]) ne null ? 1 : 0}"></th>
<th>9099,099</th> <th th:text="${#aggregates.sum(crackdownStatusList.![materialDamageAmount])}"></th>
<th>단속경찰서</th> <th>단속경찰서</th>
<th>단속함정</th> <th>단속함정</th>
<th></th> <th></th>
@ -160,57 +161,187 @@
<th>출생년도</th> <th>출생년도</th>
<th>어종</th> <th>어종</th>
<th>수량</th> <th>수량</th>
<th>100</th> <th th:text="${#aggregates.sum(crackdownStatusList.![fishingBoat.offenseCatchCnt])}"></th>
<th>100</th> <th th:text="${#aggregates.sum(crackdownStatusList.![fishingBoat.offenseIllegalWasteQuantity])}"></th>
<th>100</th> <th th:text="${#aggregates.sum(crackdownStatusList.![fishingBoat.offenseQuantity])}"></th>
<th>8888700</th> <th th:text="${#aggregates.sum(crackdownStatusList.![fishingBoat.offenseAmount])}"></th>
<th>10</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[processResult.processStatus == 'PR001'].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[processResult.processStatus == 'PR001'].![1]) : 0}"></th>
<th>8</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[processResult.processStatus == 'PR009'].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[processResult.processStatus == 'PR009'].![1]) : 0}"></th>
<th>400</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[fishingBoat.damboPayment > 0].![1]) ne null ? 1 : 0}"></th>
<th>4000</th> <th th:text="${#aggregates.sum(crackdownStatusList.![fishingBoat.damboPayment])}"></th>
<th>10</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[fishingBoat.damboUnpaidAmount > 0].![1]) ne null ? 1 : 0}"></th>
<th>80000</th> <th th:text="${#aggregates.sum(crackdownStatusList.![fishingBoat.damboUnpaidAmount])}"></th>
<th>11</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[processResult.consignmentStartDt != null].![1]) ne null ? 1 : 0}"></th>
<th>10</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[processResult.evictionDt != null].![1]) ne null ? 1 : 0}"></th>
<th>11</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[processResult.directHandoverDt != null].![1]) ne null ? 1 : 0}"></th>
<th>12</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[processResult.boatDisposalDt != null && processResult.boatDisposalType == 'BDT001'].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[processResult.boatDisposalDt != null && processResult.boatDisposalType == 'BDT001'].![1]) : 0}"></th>
<th>8</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[processResult.boatDisposalDt != null && processResult.boatDisposalType == 'BDT002'].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[processResult.boatDisposalDt != null && processResult.boatDisposalType == 'BDT002'].![1]) : 0}"></th>
<th>2</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[processResult.boatDisposalDt != null && processResult.boatDisposalType == 'BDT003'].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[processResult.boatDisposalDt != null && processResult.boatDisposalType == 'BDT003'].![1]) : 0}"></th>
<th>7</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[processResult.confiscationDt != null].![1]) ne null ? 1 : 0}"></th>
<th>6</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[processResult.returnDt != null].![1]) ne null ? 1 : 0}"></th>
<th>20</th> <th th:text="${#aggregates.sum(crackdownStatusList.![restrictionTotal])}"></th>
<th>10</th> <th th:text="${#aggregates.sum(crackdownStatusList.![restrictionCaptin])}"></th>
<th>10</th> <th th:text="${#aggregates.sum(crackdownStatusList.![restrictionMate])}"></th>
<th>10</th> <th th:text="${#aggregates.sum(crackdownStatusList.![restrictionWarden])}"></th>
<th>10</th> <th th:text="${#aggregates.sum(crackdownStatusList.![restrictionSailor])}"></th>
<th>10</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[processResult.confiscationDt != null].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[processResult.confiscationDt != null].![1]) : 0}"></th>
<th>20</th> <th th:text="${#aggregates.sum(crackdownStatusList.![notRestrictionTotal])}"></th>
<th>10</th> <th th:text="${#aggregates.sum(crackdownStatusList.![notRestrictionCaptin])}"></th>
<th>10</th> <th th:text="${#aggregates.sum(crackdownStatusList.![notRestrictionMate])}"></th>
<th>2</th> <th th:text="${#aggregates.sum(crackdownStatusList.![notRestrictionWarden])}"></th>
<th>11</th> <th th:text="${#aggregates.sum(crackdownStatusList.![notRestrictionSailor])}"></th>
<th>10</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[processResult.confiscationDt != null].![1]) ne null ? 0 : #aggregates.sum(crackdownStatusList.?[processResult.confiscationDt != null].![1])}"></th>
<th>10</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[fieldIvsgtNapoDt != null].![1]) ne null ? 1 : 0}"></th>
<th>나포일시</th> <th>나포일시</th>
<th>석방일시</th> <th>석방일시</th>
<th>소요시간</th> <th>소요시간</th>
<th>소요시간</th> <th>소요시간</th>
<th>거리(해리)</th> <th>거리(해리)</th>
<th>7</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[fishingBoat.confiscationFrame != null && fishingBoat.confiscationFrame != ''].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[fishingBoat.confiscationFrame != null && fishingBoat.confiscationFrame != ''].![1]) : 0}"></th>
<th>8</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[fishingBoat.confiscationFrame != null && fishingBoat.confiscationWidth != ''].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[fishingBoat.confiscationWidth != null && fishingBoat.confiscationWidth != ''].![1]) : 0}"></th>
<th>10</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[fishingBoat.confiscationFrame != null && fishingBoat.confiscationJo != ''].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[fishingBoat.confiscationJo != null && fishingBoat.confiscationJo != ''].![1]) : 0}"></th>
<th>11</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[fishingBoat.confiscationFrame != null && fishingBoat.confiscationGae != ''].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[fishingBoat.confiscationGae != null && fishingBoat.confiscationGae != ''].![1]) : 0}"></th>
<th>12</th> <th th:text="${#aggregates.sum(crackdownStatusList.?[fishingBoat.confiscationFrame != null && fishingBoat.confiscationEtc != ''].![1]) ne null ? #aggregates.sum(crackdownStatusList.?[fishingBoat.confiscationEtc != null && fishingBoat.confiscationEtc != ''].![1]) : 0}"></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<th:block th:each="crackdownStatus:${crackdownStatusList}">
<tr class="tr" th:data-key="${crackdownStatus.cdsKey}">
<td th:text="${crackdownStatus.cdsKey}"></td>
<td th:text="${crackdownStatus.napoDt}"></td>
<td>
<th:block th:if="${#lists.size(crackdownStatus.violationList) >= 1}">
<th:block th:each="violation:${crackdownStatus.violationList}">
<th:block th:each="commonCode:${session.commonCode.get('VT')}">
<div th:if="${violation.violation eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></div>
</th:block>
</th:block>
</th:block>
</td>
<td>
<span th:text="${crackdownStatus.napoSeaPointLat}"> ~ </span>
<span th:text="${crackdownStatus.napoSeaPointLon}"></span>
<div th:text="${crackdownStatus.napoSeaPointDetail}"></div>
</td>
<th:block th:each="commonCode:${session.commonCode.get('IST')}">
<td th:if="${crackdownStatus.invasionType ne null && crackdownStatus.invasionType eq 'IST001' && crackdownStatus.invasionType eq commonCode.itemCd}" th:text="1"></td>
<td th:if="${crackdownStatus.invasionType ne commonCode.itemCd}" th:text="0"></td>
</th:block>
<td th:text="${crackdownStatus.nll eq 'Y' ? 1 : 0}"></td>
<td th:text="${crackdownStatus.personDamageCnt ne 0 && crackdownStatus.personDamageAmount ne 0 ? 1 : 0}"></td>
<td th:text="${crackdownStatus.personDamageCnt}"></td>
<td th:text="${crackdownStatus.personDamageAmount}"></td>
<td th:text="${crackdownStatus.personDamageDetail}"></td>
<td th:text="${crackdownStatus.materialDamageCnt ne 0 && crackdownStatus.materialDamageAmount ne 0 ? 1 : 0}"></td>
<td th:text="${crackdownStatus.materialDamageAmount}"></td>
<td th:text="${crackdownStatus.materialDamageDetail}"></td>
<th:block th:each="commonCode:${session.commonCode.get('ATA')}">
<td th:if="${crackdownStatus.caseAgency eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<th:block th:if="${crackdownStatus.caseAgency eq null || crackdownStatus.caseAgency eq ''}">
<td></td>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('CPO')}">
<td th:if="${crackdownStatus.crackdownPolice eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<th:block th:if="${!#strings.contains(crackdownStatus.crackdownPolice, 'CPO')}">
<td th:text="${crackdownStatus.crackdownPolice}"></td>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('CDB')}">
<td th:if="${crackdownStatus.crackdownBoat eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<th:block th:if="${!#strings.contains(crackdownStatus.crackdownBoat, 'CDB')}">
<td th:text="${crackdownStatus.crackdownBoat}"></td>
</th:block>
<td th:text="${crackdownStatus.mmsi}"></td>
<td th:text="${crackdownStatus.fishingBoat.boatNameKr}"></td>
<td th:text="${crackdownStatus.fishingBoat.tonCnt}"></td>
<td th:text="${crackdownStatus.restrictionSailor + crackdownStatus.notRestrictionSailor}"></td>
<th:block th:each="commonCode:${session.commonCode.get('BM')}">
<td th:if="${crackdownStatus.fishingBoat.boatMaterial eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<th:block th:if="${!#strings.contains(crackdownStatus.fishingBoat.boatMaterial, 'BM')}">
<td th:text="${crackdownStatus.fishingBoat.boatMaterial}"></td>
</th:block>
<td th:text="${crackdownStatus.fishingBoat.boatNnySung}"></td>
<td th:text="${crackdownStatus.fishingBoat.boatNnySi}"></td>
<th:block th:each="sailor:${crackdownStatus.sailorList}">
<td th:if="${sailor.position eq 'POS001'}" th:text="${sailor.sailorNameKr}"></td>
<td th:if="${sailor.position eq 'POS001'}" th:text="${sailor.birthdate}"></td>
</th:block>
<th:block th:if="${#lists.size(crackdownStatus.sailorList) == 0}">
<td></td>
<td></td>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('FT')}">
<td th:if="${crackdownStatus.fishingBoat.fisheryType eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
</th:block>
<th:block th:if="${!#strings.contains(crackdownStatus.fishingBoat.fisheryType, 'FT')}">
<td th:text="${crackdownStatus.fishingBoat.fisheryType}"></td>
</th:block>
<td th:text="${crackdownStatus.fishingBoat.catchFishSpecies}"></td>
<td th:text="${crackdownStatus.fishingBoat.catchCnt}"></td>
<td th:text="${crackdownStatus.fishingBoat.offenseFishSpecies}"></td>
<td th:text="${crackdownStatus.fishingBoat.offenseCatchCnt}"></td>
<td th:text="${crackdownStatus.fishingBoat.offenseIllegalWasteQuantity}"></td>
<td th:text="${crackdownStatus.fishingBoat.offenseQuantity}"></td>
<td th:text="${crackdownStatus.fishingBoat.offenseAmount}"></td>
<td th:text="${crackdownStatus.processResult.processStatus eq 'PR001' ? 1 : 0}"></td>
<td th:text="${crackdownStatus.processResult.processStatus eq 'PR009' ? 1 : 0}"></td>
<td th:text="${crackdownStatus.fishingBoat.damboPayment ne 0 ? 1 : 0}"></td>
<td th:text="${crackdownStatus.fishingBoat.damboPayment}"></td>
<td th:text="${crackdownStatus.fishingBoat.paymentPaymentDt}"></td>
<td th:text="${crackdownStatus.fishingBoat.damboUnpaidAmount ne 0 ? 1 : 0}"></td>
<td th:text="${crackdownStatus.fishingBoat.damboUnpaidAmount}"></td>
<td th:text="${crackdownStatus.processResult.consignmentStartDt ne null ? 1 : 0}"></td>
<td th:text="${crackdownStatus.processResult.consignmentStartDt}"></td>
<td th:text="${crackdownStatus.processResult.consignmentEndDt}"></td>
<td th:text="${crackdownStatus.processResult.evictionDt ne null ? 1 : 0}"></td>
<td th:text="${crackdownStatus.processResult.directHandoverDt ne null ? 1 : 0}"></td>
<td th:text="${crackdownStatus.processResult.boatDisposalDt ne null && crackdownStatus.processResult.boatDisposalType eq 'BDT001'? 1 : 0}"></td>
<td th:text="${crackdownStatus.processResult.boatDisposalDt ne null && crackdownStatus.processResult.boatDisposalType eq 'BDT002'? 1 : 0}"></td>
<td th:text="${crackdownStatus.processResult.boatDisposalDt ne null && crackdownStatus.processResult.boatDisposalType eq 'BDT003'? 1 : 0}"></td>
<td th:text="${crackdownStatus.processResult.confiscationDt ne null ? 1 : 0}"></td>
<td th:text="${crackdownStatus.processResult.returnDt ne null ? 1 : 0}"></td>
<td th:text="${crackdownStatus.processResult.directHandoverDt}"></td>
<td>
<span th:text="${crackdownStatus.processResult.handoverSeaPointLat}"> ~ </span>
<span th:text="${crackdownStatus.processResult.handoverSeaPointLon}"></span>
</td>
<td th:text="${crackdownStatus.processResult.handoverBoat}"></td>
<td th:text="${crackdownStatus.processResult.middleTakeoverBoat}"></td>
<td th:text="${crackdownStatus.restrictionTotal}"></td>
<td th:text="${crackdownStatus.restrictionCaptin}"></td>
<td th:text="${crackdownStatus.restrictionMate}"></td>
<td th:text="${crackdownStatus.restrictionWarden}"></td>
<td th:text="${crackdownStatus.restrictionSailor}"></td>
<td th:text="${crackdownStatus.processResult.confiscationDt ne null ? 1 : 0}"></td>
<td th:text="${crackdownStatus.notRestrictionTotal}"></td>
<td th:text="${crackdownStatus.notRestrictionCaptin}"></td>
<td th:text="${crackdownStatus.notRestrictionMate}"></td>
<td th:text="${crackdownStatus.notRestrictionWarden}"></td>
<td th:text="${crackdownStatus.notRestrictionSailor}"></td>
<td th:text="${crackdownStatus.processResult.confiscationDt ne null ? 0 : 1}"></td>
<td th:text="${crackdownStatus.fieldIvsgtNapoDt ne null? 1 : 0}"></td>
<td th:text="${crackdownStatus.fieldIvsgtNapoDt }"></td>
<td th:text="${crackdownStatus.fieldIvsgtReleaseDt}"></td>
<td th:text="${crackdownStatus.fieldIvsgtTimeTaken}"></td>
<td th:text="${crackdownStatus.processResult.pressurizedTimeTaken}"></td>
<td th:text="${crackdownStatus.distance}"></td>
<td th:text="${crackdownStatus.processResult.warrantReqTakeTime}"></td>
<td th:text="${crackdownStatus.fishingBoat.confiscationFrame}"></td>
<td th:text="${crackdownStatus.fishingBoat.confiscationWidth}"></td>
<td th:text="${crackdownStatus.fishingBoat.confiscationJo}"></td>
<td th:text="${crackdownStatus.fishingBoat.confiscationGae}"></td>
<td th:text="${crackdownStatus.fishingBoat.confiscationEtc}"></td>
</tr>
</th:block>
</tbody> </tbody>
</table> </table>
</div> </div>
<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="crackdownStatusExcelDownBtn">엑셀 다운로드</button> <button class="btn btn-sm btn-primary col-auto" id="cdsDownExcel">엑셀 다운로드</button>
<button class="btn btn-sm btn-primary col-auto" id="crackdownStatusAddBtn">등록</button> <button class="btn btn-sm btn-primary col-auto" id="crackdownStatusAddBtn">등록</button>
</div> </div>

View File

@ -29,17 +29,17 @@
<label class="col-auto col-form-label text-center">NLL</label> <label class="col-auto col-form-label text-center">NLL</label>
</div> </div>
<div class="col-sm-2"> <div class="col-sm-2">
<input class="form-control" name="napoDt" id="napoDt"> <input class="form-control" name="napoDt" id="napoDt" th:value="${#temporals.format(crackdownStatus.napoDt, 'yyyy-MM-dd HH:mm')}">
<select class="form-select form-select-sm" name="nll"> <select class="form-select form-select-sm" name="nll">
<option value="Y">O</option> <option value="Y" th:selected="${crackdownStatus.nll == 'Y'}">O</option>
<option value="N">X</option> <option value="N" th:selected="${crackdownStatus.nll == 'N'}">X</option>
</select> </select>
</div> </div>
<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" placeholder="위도" name="napoSeaPointLat"> <input class="form-control" placeholder="위도" name="napoSeaPointLat" th:value="${crackdownStatus.napoSeaPointLat}">
<input class="form-control" placeholder="경도" name="napoSeaPointLon"> <input class="form-control" placeholder="경도" name="napoSeaPointLon" th:value="${crackdownStatus.napoSeaPointLon}">
<input class="form-control" placeholder="상세내용" name="napoSeaPointDetail"> <input class="form-control" placeholder="상세내용" name="napoSeaPointDetail" th:value="${crackdownStatus.napoSeaPointDetail}">
</div> </div>
<div class="col-sm-1"> <div class="col-sm-1">
<label class="col-form-label text-center">위반내용</label> <label class="col-form-label text-center">위반내용</label>
@ -47,25 +47,29 @@
</div> </div>
<div class="col-sm-2" id="violationDiv"> <div class="col-sm-2" id="violationDiv">
<th:block th:if="${#lists.isEmpty(crackdownStatus.violationList)}"> <th:block th:if="${#lists.isEmpty(crackdownStatus.violationList)}">
<select class="form-select form-select-sm violation" name="violation"> <div class="row">
<option value="">선택</option> <select class="form-select form-select-sm violation" name="violation">
<th:block th:each="commonCode:${session.commonCode.get('VT')}"> <option value="">선택</option>
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option> <th:block th:each="commonCode:${session.commonCode.get('VT')}">
</th:block> <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
<option value="etc">직접입력</option> </th:block>
</select> <option value="etc">직접입력</option>
</select>
</div>
</th:block> </th:block>
<th:block th:if="${!#lists.isEmpty(crackdownStatus.violationList)}"> <th:block th:if="${!#lists.isEmpty(crackdownStatus.violationList)}">
<th:block th:each="violation : ${crackdownStatus.violationList}"> <th:block th:each="violation : ${crackdownStatus.violationList}">
<th:block th:each="commonCode:${session.commonCode.get('VT')}"> <div class="row">
<input type="hidden" name="violationKey" th:value="${violation.violationKey}"> <input type="hidden" name="violationKey" th:value="${violation.violationKey}">
<select class="form-select form-select-sm violation" name="violation"> <select class="form-select form-select-sm violation" name="violation">
<option value="">선택</option> <option value="">선택</option>
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <th:block th:each="commonCode:${session.commonCode.get('VT')}">
th:selected="${crackdownStatus.violationList != null and commonCode.itemCd eq crackdownStatus.violationList.violation}"></option> <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
<option value="etc">직접입력</option> th:selected="${crackdownStatus.violationList != null and commonCode.itemCd eq violation.violation}"></option>
<option value="etc">직접입력</option>
</th:block>
</select> </select>
</th:block> </div>
</th:block> </th:block>
</th:block> </th:block>
</div> </div>
@ -86,31 +90,31 @@
<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 type="number" min="0" class="form-control" name="obstrExspdCnt"> <input type="number" min="0" class="form-control" name="obstrExspdCnt" th:value="${crackdownStatus.obstrExspdCnt}">
</div> </div>
<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 type="number" min="0" class="form-control" name="personDamageCnt"> <input type="number" min="0" class="form-control" name="personDamageCnt" th:value="${crackdownStatus.personDamageCnt}">
</div> </div>
<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 type="number" min="0" class="form-control" name="personDamageAmount"> <input type="number" min="0" class="form-control" name="personDamageAmount" th:value="${crackdownStatus.personDamageAmount}">
</div> </div>
<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="personDamageDetail"> <input class="form-control" name="personDamageDetail" th:value="${crackdownStatus.personDamageDetail}">
</div> </div>
<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 type="number" min="0" class="form-control" name="materialDamageCnt"> <input type="number" min="0" class="form-control" name="materialDamageCnt" th:value="${crackdownStatus.materialDamageCnt}">
</div> </div>
<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 type="number" min="0" class="form-control" name="materialDamageAmount"> <input type="number" min="0" class="form-control" name="materialDamageAmount" th:value="${crackdownStatus.materialDamageAmount}">
</div> </div>
<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="materialDamageDetail"> <input class="form-control" name="materialDamageDetail" th:value="${crackdownStatus.materialDamageDetail}">
</div> </div>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
@ -144,14 +148,14 @@
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('CDB')}"> <th:block th:each="commonCode:${session.commonCode.get('CDB')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq crackdownStatus.crackdownPolice}"></option> th:selected="${commonCode.itemCd eq crackdownStatus.crackdownBoat}"></option>
</th:block> </th:block>
<option value="etc">직접입력</option> <option value="etc">직접입력</option>
</select> </select>
</div> </div>
<label class="col-sm-1 col-form-label text-center">MMSI.NO</label> <label class="col-sm-1 col-form-label text-center">MMSI.NO</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input class="form-control" name="mmsi"> <input class="form-control" name="mmsi" th:value="${crackdownStatus.mmsi}">
</div> </div>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
@ -160,11 +164,11 @@
<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"> <input class="form-control" name="boatNameKr" th:value="${crackdownStatus.fishingBoat.boatNameKr}">
</div> </div>
<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 type="number" min="0" class="form-control" name="tonCnt"> <input type="number" min="0" class="form-control" name="tonCnt" th:value="${crackdownStatus.fishingBoat.tonCnt}">
</div> </div>
<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">
@ -179,23 +183,45 @@
</div> </div>
<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="boatNnySung"> <input class="form-control" name="boatNnySung" th:value="${crackdownStatus.fishingBoat.boatNnySung}">
</div> </div>
<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="boatNnyAi"> <input class="form-control" name="boatNnySi" th:value="${crackdownStatus.fishingBoat.boatNnySi}">
</div> </div>
<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="sailorNameKr"> <th:block th:each="sailor:${crackdownStatus.sailorList}" th:if="${#strings.contains(sailor.position, 'POS001')}">
<input th:if="${sailor.position eq 'POS001'}" class="form-control" name="sailorNameKr" th:value="${sailor.sailorNameKr}">
</th:block>
<th:block th:if="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS001'].![1]) == null}">
<input class="form-control" name="sailorNameKr">
</th:block>
</div> </div>
<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="birthdate" id="birthdate"> <th:block th:each="sailor:${crackdownStatus.sailorList}" th:if="${#strings.contains(sailor.position, 'POS001')}">
<input th:if="${sailor.position eq 'POS001'}" class="form-control" name="birthdate" id="birthdate" th:value="${#temporals.format(sailor.birthdate, 'yyyy-MM-dd')}">
</th:block>
<th:block th:if="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS001'].![1]) == null}">
<input class="form-control" name="birthdate" id="birthdate">
</th:block>
</div> </div>
<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="fisheryType"> <select class="form-select form-select-sm" name="fisheryType" id="fisheryType">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('FT')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${crackdownStatus.fishingBoat ne null && commonCode.itemCd eq crackdownStatus.fishingBoat.fisheryType}"></option>
</th:block>
<option th:selected="${crackdownStatus.fishingBoat.fisheryType ne null && !#strings.contains(crackdownStatus.fishingBoat.fisheryType, 'FT')}" value="etc">기타</option>
</select>
<th:block th:if="${crackdownStatus.fishingBoat.fisheryType ne null && !#strings.contains(crackdownStatus.fishingBoat.fisheryType, 'FT')}">
<div class="col-auto">
<input type="text" class="form-control" name="fisheryTypeEtc" th:value="${crackdownStatus.fishingBoat.fisheryType}">
</div>
</th:block>
</div> </div>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
@ -204,11 +230,11 @@
<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="catchFishSpecies"> <input class="form-control" name="catchFishSpecies" th:value="${crackdownStatus.fishingBoat.catchFishSpecies}">
</div> </div>
<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 type="number" min="0" class="form-control" name="catchCnt"> <input type="number" min="0" class="form-control" name="catchCnt" th:value="${crackdownStatus.fishingBoat.catchCnt}">
</div> </div>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
@ -217,23 +243,23 @@
<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="offenseFishSpecies"> <input class="form-control" name="offenseFishSpecies" th:value="${crackdownStatus.fishingBoat.offenseFishSpecies}">
</div> </div>
<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 type="number" min="0" class="form-control" name="offenseCatchCnt"> <input type="number" min="0" class="form-control" name="offenseCatchCnt" th:value="${crackdownStatus.fishingBoat.offenseCatchCnt}">
</div> </div>
<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 type="number" min="0" class="form-control" name="offenseIllegalWasteQuantity"> <input type="number" min="0" class="form-control" name="offenseIllegalWasteQuantity" th:value="${crackdownStatus.fishingBoat.offenseIllegalWasteQuantity}">
</div> </div>
<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 type="number" min="0" class="form-control" name="offenseQuantity"> <input type="number" min="0" class="form-control" name="offenseQuantity" th:value="${crackdownStatus.fishingBoat.offenseQuantity}">
</div> </div>
<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 type="number" min="0" class="form-control" name="offenseAmount"> <input type="number" min="0" class="form-control" name="offenseAmount" th:value="${crackdownStatus.fishingBoat.offenseAmount}">
</div> </div>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
@ -248,8 +274,13 @@
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${crackdownStatus.processResult ne null && commonCode.itemCd eq crackdownStatus.processResult.processStatus}"></option> th:selected="${crackdownStatus.processResult ne null && commonCode.itemCd eq crackdownStatus.processResult.processStatus}"></option>
</th:block> </th:block>
<option value="etc">직접입력</option> <option th:selected="${crackdownStatus.processResult.processStatus ne null && !#strings.contains(crackdownStatus.processResult.processStatus, 'PR')}" value="etc">직접입력</option>
</select> </select>
<th:block th:if="${crackdownStatus.processResult.processStatus ne null && !#strings.contains(crackdownStatus.processResult.processStatus, 'PR')}">
<div class="col-auto">
<input type="text" class="form-control" name="processStatusEtc" th:value="${crackdownStatus.processResult.processStatus}">
</div>
</th:block>
</div> </div>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
@ -258,11 +289,11 @@
<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 type="number" min="0" class="form-control" name="damboPayment"> <input type="number" min="0" class="form-control" name="damboPayment" th:value="${crackdownStatus.fishingBoat.damboPayment}">
</div> </div>
<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="paymentPaymentDt" id="paymentPaymentDt"> <input class="form-control" name="paymentPaymentDt" id="paymentPaymentDt" th:value="${#temporals.format(crackdownStatus.fishingBoat.paymentPaymentDt, 'yyyy-MM-dd HH:mm')}">
</div> </div>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
@ -271,7 +302,7 @@
<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 type="number" min="0" class="form-control" name="damboUnpaidAmount"> <input type="number" min="0" class="form-control" name="damboUnpaidAmount" th:value="${crackdownStatus.fishingBoat.damboUnpaidAmount}">
</div> </div>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
@ -280,31 +311,31 @@
<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="consignmentStartDt" id="consignmentStartDt"> <input class="form-control" name="consignmentStartDt" id="consignmentStartDt" th:value="${#temporals.format(crackdownStatus.processResult.consignmentStartDt, 'yyyy-MM-dd')}">
</div> </div>
<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="consignmentEndDt" id="consignmentEndDt"> <input class="form-control" name="consignmentEndDt" id="consignmentEndDt" th:value="${#temporals.format(crackdownStatus.processResult.consignmentEndDt, 'yyyy-MM-dd')}">
</div> </div>
<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="evictionDt" id="evictionDt"> <input class="form-control" name="evictionDt" id="evictionDt" th:value="${#temporals.format(crackdownStatus.processResult.evictionDt, 'yyyy-MM-dd')}">
</div> </div>
<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="returnDt" id="returnDt"> <input class="form-control" name="returnDt" id="returnDt" th:value="${#temporals.format(crackdownStatus.processResult.returnDt, 'yyyy-MM-dd')}">
</div> </div>
<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="confiscationDt" id="confiscationDt"> <input class="form-control" name="confiscationDt" id="confiscationDt" th:value="${#temporals.format(crackdownStatus.processResult.confiscationDt, 'yyyy-MM-dd')}">
</div> </div>
<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="boatDisposalDt" id="boatDisposalDt"> <input class="form-control" name="boatDisposalDt" id="boatDisposalDt" th:value="${#temporals.format(crackdownStatus.processResult.boatDisposalDt, 'yyyy-MM-dd')}">
</div> </div>
<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">
<select class="form-select form-select-sm" name="boatDisposalType"> <select class="form-select form-select-sm" name="boatDisposalType" th:value="${crackdownStatus.processResult.boatDisposalType}">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('BDT')}"> <th:block th:each="commonCode:${session.commonCode.get('BDT')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
@ -319,21 +350,21 @@
<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="directHandoverDt" id="directHandoverDt"> <input class="form-control" name="directHandoverDt" id="directHandoverDt" th:value="${#temporals.format(crackdownStatus.processResult.directHandoverDt, 'yyyy-MM-dd')}">
</div> </div>
<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" placeholder="도" name="handoverSeaPointLon"> <input class="form-control" placeholder="도" name="handoverSeaPointLat" th:value="${crackdownStatus.processResult.handoverSeaPointLat}">
<input class="form-control" placeholder="도" name="handoverSeaPointLat"> <input class="form-control" placeholder="도" name="handoverSeaPointLon" th:value="${crackdownStatus.processResult.handoverSeaPointLon}">
<input class="form-control" placeholder="상세내용" name="handoverSeaPointDetail"> <input class="form-control" placeholder="상세내용" name="handoverSeaPointDetail" th:value="${crackdownStatus.processResult.handoverSeaPointDetail}">
</div> </div>
<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="handoverBoat"> <input class="form-control" name="handoverBoat" th:value="${crackdownStatus.processResult.handoverBoat}">
</div> </div>
<label class="col-sm-1 col-form-label text-center">중측</br>인수함정</label> <label class="col-sm-1 col-form-label text-center">중측</br>인수함정</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input class="form-control" name="middleTakeoverBoat"> <input class="form-control" name="middleTakeoverBoat" th:value="${crackdownStatus.processResult.middleTakeoverBoat}">
</div> </div>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
@ -344,45 +375,46 @@
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="captin"> <select class="form-select form-select-sm" name="captin">
<option value="">선택</option> <option value="">선택</option>
<option value="Y">구속</option> <option value="Y" th:selected="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS001' && isRestriction == 'Y'].![1]) != null}">구속</option>
<option value="N">불구속</option> <option value="N" th:selected="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS001' && isRestriction == 'N'].![1]) != null}">불구속</option>
</select> </select>
</div> </div>
<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">
<select class="form-select form-select-sm" name="mate"> <select class="form-select form-select-sm" name="mate">
<option value="">선택</option> <option value="">선택</option>
<option value="Y">구속</option> <option value="Y" th:selected="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS002' && isRestriction == 'Y'].![1]) != null}">구속</option>
<option value="N">불구속</option> <option value="N" th:selected="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS002' && isRestriction == 'N'].![1]) != null}">불구속</option>
</select> </select>
</div> </div>
<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">
<select class="form-select form-select-sm" name="warden"> <select class="form-select form-select-sm" name="warden">
<option value="">선택</option> <option value="">선택</option>
<option value="Y">구속</option> <option value="Y" th:selected="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS003' && isRestriction == 'Y'].![1]) != null}">구속</option>
<option value="N">불구속</option> <option value="N" th:selected="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS003' && isRestriction == 'N'].![1]) != null}">불구속</option>
</select> </select>
</div> </div>
<button type="button" class="btn btn-primary col-auto" id="sailorAddBtn">선원 추가</button> <button type="button" class="btn btn-primary col-auto" id="sailorAddBtn">선원 추가</button>
</div> </div>
<div class="mb-3 row" id="sailorDiv"> <div class="mb-3 row" id="sailorDiv">
<!-- <th:block th:each="sailor:${crackdownStatus.sailorList}" th:if="${#strings.contains(sailor.position, 'POS005') || #strings.contains(sailor.position, 'POS006')}">
<div class="row"> <div class="row">
<label class="col-sm-1 col-form-label text-center">선원 이름</label> <input type="hidden" name="sailorKey" th:value="${sailor.sailorKey}">
<div class="col-sm-2"> <label class="col-sm-1 col-form-label text-center">선원 이름</label>
<input class="form-control" name="sailorNameKr"> <div class="col-sm-2">
<input class="form-control" name="sailorNameKr" th:value="${sailor.sailorNameKr}">
</div>
<div class="col-sm-2">
<select class="form-select form-select-sm sailor-list" name="sailor">
<option value="">선택</option>
<option value="Y" th:selected="${sailor.isRestriction == 'Y'}">구속</option>
<option value="N" th:selected="${sailor.isRestriction == 'N'}">불구속</option>
</select>
</div>
<button type="button" class="btn btn-primary col-auto" id="sailorRemoveBtn">-</button>
</div> </div>
<div class="col-sm-2"> </th:block>
<select class="form-select form-select-sm sailor-list" name="sailor">
<option value="">선택</option>
<option value="Y">구속</option>
<option value="N">불구속</option>
</select>
</div>
<button type="button" class="btn btn-primary col-auto" id="sailorRemoveBtn">-</button>
</div>
-->
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
현장조사 현장조사
@ -390,15 +422,15 @@
<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="fieldIvsgtNapoDt" id="fieldIvsgtNapoDt"> <input class="form-control" name="fieldIvsgtNapoDt" id="fieldIvsgtNapoDt" th:value="${#temporals.format(crackdownStatus.fieldIvsgtNapoDt, 'yyyy-MM-dd HH:mm')}">
</div> </div>
<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="fieldIvsgtReleaseDt" id="fieldIvsgtReleaseDt"> <input class="form-control" name="fieldIvsgtReleaseDt" id="fieldIvsgtReleaseDt" th:value="${#temporals.format(crackdownStatus.fieldIvsgtReleaseDt, 'yyyy-MM-dd HH:mm')}">
</div> </div>
<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="fieldIvsgtTimeTaken"> <input class="form-control" name="fieldIvsgtTimeTaken" th:value="${#temporals.format(crackdownStatus.fieldIvsgtTimeTaken, 'yyyy-MM-dd HH:mm')}">
</div> </div>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
@ -407,19 +439,19 @@
<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="pressurizedStartDt" id="pressurizedStartDt"> <input class="form-control" name="pressurizedStartDt" id="pressurizedStartDt" th:value="${#temporals.format(crackdownStatus.pressurizedStartDt, 'yyyy-MM-dd HH:mm')}">
</div> </div>
<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="pressurizedEndDt" id="pressurizedEndDt"> <input class="form-control" name="pressurizedEndDt" id="pressurizedEndDt" th:value="${#temporals.format(crackdownStatus.pressurizedEndDt, 'yyyy-MM-dd HH:mm')}">
</div> </div>
<label class="col-sm-1 col-form-label text-center">영장청구<br>소요시간</label> <label class="col-sm-1 col-form-label text-center">영장청구<br>소요시간</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input class="form-control" name="warrantReqTakeTime" readonly> <input class="form-control" name="warrantReqTakeTime" th:value="${#temporals.format(crackdownStatus.processResult.warrantReqTakeTime, 'yyyy-MM-dd HH:mm')}">
</div> </div>
<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="distance"> <input class="form-control" name="distance" th:value="${crackdownStatus.distance}">
</div> </div>
</div> </div>
<div class="mb-3 row"> <div class="mb-3 row">
@ -428,23 +460,23 @@
<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="confiscationFrame"> <input class="form-control" name="confiscationFrame" th:value="${crackdownStatus.fishingBoat.confiscationFrame}">
</div> </div>
<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="confiscationWidth"> <input class="form-control" name="confiscationWidth" th:value="${crackdownStatus.fishingBoat.confiscationWidth}">
</div> </div>
<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="confiscationJo"> <input class="form-control" name="confiscationJo" th:value="${crackdownStatus.fishingBoat.confiscationJo}">
</div> </div>
<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="confiscationGae"> <input class="form-control" name="confiscationGae" th:value="${crackdownStatus.fishingBoat.confiscationGae}">
</div> </div>
<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="confiscationEtc"> <input class="form-control" name="confiscationEtc" th:value="${crackdownStatus.fishingBoat.confiscationEtc}">
</div> </div>
</div> </div>
</form> </form>

View File

@ -0,0 +1,490 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="modal-header">
<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>
</div>
<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="${crackdownStatus.fishingBoat ne null}">
<input type="hidden" name="fbKey" th:value="${crackdownStatus.fishingBoat.fbKey}">
</th:block>
<th:block th:if="${crackdownStatus.processResult ne null}">
<input type="hidden" name="prKey" th:value="${crackdownStatus.processResult.prKey}">
</th:block>
<input type="hidden" name="wrtOrgan" th:value="${crackdownStatus.wrtOrgan}">
<input type="hidden" name="wrtNm" th:value="${crackdownStatus.wrtNm}">
<input type="hidden" name="wrtDt" th:value="${#temporals.format(crackdownStatus.wrtDt, 'yyyy-MM-dd HH:mm')}">
<input type="hidden" id="saveYn" name="saveYn">
<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(crackdownStatus.napoDt, 'yyyy-MM-dd HH:mm')}">
<select class="form-select form-select-sm" name="nll">
<option value="Y" th:selected="${crackdownStatus.nll == 'Y'}">O</option>
<option value="N" th:selected="${crackdownStatus.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="${crackdownStatus.napoSeaPointLat}">
<input class="form-control" placeholder="경도" name="napoSeaPointLon" th:value="${crackdownStatus.napoSeaPointLon}">
<input class="form-control" placeholder="상세내용" name="napoSeaPointDetail" th:value="${crackdownStatus.napoSeaPointDetail}">
</div>
<div class="col-sm-1">
<label class="col-form-label text-center">위반내용</label>
<button type="button" class="btn btn-primary col-auto" id="violationAddBtn">+</button>
</div>
<div class="col-sm-2" id="violationDiv">
<th:block th:if="${#lists.isEmpty(crackdownStatus.violationList)}">
<div class="row">
<select class="form-select form-select-sm violation" name="violation">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('VT')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
</th:block>
<option value="etc">직접입력</option>
</select>
</div>
</th:block>
<th:block th:if="${!#lists.isEmpty(crackdownStatus.violationList)}">
<th:block th:each="violation : ${crackdownStatus.violationList}">
<div class="row">
<input type="hidden" name="violationKey" th:value="${violation.violationKey}">
<select class="form-select form-select-sm violation" name="violation">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('VT')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${crackdownStatus.violationList != null and commonCode.itemCd eq violation.violation}"></option>
<option value="etc">직접입력</option>
</th:block>
</select>
</div>
</th:block>
</th:block>
</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 crackdownStatus.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="${crackdownStatus.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="${crackdownStatus.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="${crackdownStatus.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="${crackdownStatus.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="${crackdownStatus.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="${crackdownStatus.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="${crackdownStatus.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 crackdownStatus.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 crackdownStatus.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="commonCode:${session.commonCode.get('CDB')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq crackdownStatus.crackdownBoat}"></option>
</th:block>
<option value="etc">직접입력</option>
</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="${crackdownStatus.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="boatNameKr" th:value="${crackdownStatus.fishingBoat.boatNameKr}">
</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="tonCnt" th:value="${crackdownStatus.fishingBoat.tonCnt}">
</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="boatMaterial" id="boatMaterial">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('BM')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${crackdownStatus.fishingBoat ne null && commonCode.itemCd eq crackdownStatus.fishingBoat.boatMaterial}"></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">
<input class="form-control" name="boatNnySung" th:value="${crackdownStatus.fishingBoat.boatNnySung}">
</div>
<label class="col-sm-1 col-form-label text-center">선적 시</label>
<div class="col-sm-2">
<input class="form-control" name="boatNnySi" th:value="${crackdownStatus.fishingBoat.boatNnySi}">
</div>
<label class="col-sm-1 col-form-label text-center">선장명</label>
<div class="col-sm-2">
<th:block th:each="sailor:${crackdownStatus.sailorList}" th:if="${#strings.contains(sailor.position, 'POS001')}">
<input th:if="${sailor.position eq 'POS001'}" class="form-control" name="sailorNameKr" th:value="${sailor.sailorNameKr}">
</th:block>
<th:block th:if="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS001'].![1]) == null}">
<input class="form-control" name="sailorNameKr">
</th:block>
</div>
<label class="col-sm-1 col-form-label text-center">출생년도</label>
<div class="col-sm-2">
<th:block th:each="sailor:${crackdownStatus.sailorList}" th:if="${#strings.contains(sailor.position, 'POS001')}">
<input th:if="${sailor.position eq 'POS001'}" class="form-control" name="birthdate" id="birthdate" th:value="${#temporals.format(sailor.birthdate, 'yyyy-MM-dd')}">
</th:block>
<th:block th:if="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS001'].![1]) == null}">
<input class="form-control" name="birthdate" id="birthdate">
</th:block>
</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="fisheryType" id="fisheryType">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('FT')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${crackdownStatus.fishingBoat ne null && commonCode.itemCd eq crackdownStatus.fishingBoat.fisheryType}"></option>
</th:block>
<option th:selected="${crackdownStatus.fishingBoat.fisheryType ne null && !#strings.contains(crackdownStatus.fishingBoat.fisheryType, 'FT')}" value="etc">기타</option>
</select>
<th:block th:if="${crackdownStatus.fishingBoat.fisheryType ne null && !#strings.contains(crackdownStatus.fishingBoat.fisheryType, 'FT')}">
<div class="col-auto">
<input type="text" class="form-control" name="fisheryTypeEtc" th:value="${crackdownStatus.fishingBoat.fisheryType}">
</div>
</th:block>
</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="catchFishSpecies" th:value="${crackdownStatus.fishingBoat.catchFishSpecies}">
</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="catchCnt" th:value="${crackdownStatus.fishingBoat.catchCnt}">
</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="offenseFishSpecies" th:value="${crackdownStatus.fishingBoat.offenseFishSpecies}">
</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="offenseCatchCnt" th:value="${crackdownStatus.fishingBoat.offenseCatchCnt}">
</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="offenseIllegalWasteQuantity" th:value="${crackdownStatus.fishingBoat.offenseIllegalWasteQuantity}">
</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="offenseQuantity" th:value="${crackdownStatus.fishingBoat.offenseQuantity}">
</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="offenseAmount" th:value="${crackdownStatus.fishingBoat.offenseAmount}">
</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="processStatus" id="processStatus">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('PR')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${crackdownStatus.processResult ne null && commonCode.itemCd eq crackdownStatus.processResult.processStatus}"></option>
</th:block>
<option th:selected="${crackdownStatus.processResult.processStatus ne null && !#strings.contains(crackdownStatus.processResult.processStatus, 'PR')}" value="etc">직접입력</option>
</select>
<th:block th:if="${crackdownStatus.processResult.processStatus ne null && !#strings.contains(crackdownStatus.processResult.processStatus, 'PR')}">
<div class="col-auto">
<input type="text" class="form-control" name="processStatusEtc" th:value="${crackdownStatus.processResult.processStatus}">
</div>
</th:block>
</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="damboPayment" th:value="${crackdownStatus.fishingBoat.damboPayment}">
</div>
<label class="col-sm-1 col-form-label text-center">납부일시</label>
<div class="col-sm-2">
<input class="form-control" name="paymentPaymentDt" id="paymentPaymentDt" th:value="${#temporals.format(crackdownStatus.fishingBoat.paymentPaymentDt, 'yyyy-MM-dd HH:mm')}">
</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="damboUnpaidAmount" th:value="${crackdownStatus.fishingBoat.damboUnpaidAmount}">
</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="consignmentStartDt" id="consignmentStartDt" th:value="${#temporals.format(crackdownStatus.processResult.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(crackdownStatus.processResult.consignmentEndDt, '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="evictionDt" id="evictionDt" th:value="${#temporals.format(crackdownStatus.processResult.evictionDt, '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="returnDt" id="returnDt" th:value="${#temporals.format(crackdownStatus.processResult.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="confiscationDt" id="confiscationDt" th:value="${#temporals.format(crackdownStatus.processResult.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(crackdownStatus.processResult.boatDisposalDt, 'yyyy-MM-dd')}">
</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="boatDisposalType" th:value="${crackdownStatus.processResult.boatDisposalType}">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('BDT')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${crackdownStatus.processResult ne null && commonCode.itemCd eq crackdownStatus.processResult.boatDisposalType}"></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 class="form-control" name="directHandoverDt" id="directHandoverDt" th:value="${#temporals.format(crackdownStatus.processResult.directHandoverDt, 'yyyy-MM-dd')}">
</div>
<label class="col-sm-1 col-form-label text-center">해점</label>
<div class="col-sm-2">
<input class="form-control" placeholder="위도" name="handoverSeaPointLat" th:value="${crackdownStatus.processResult.handoverSeaPointLat}">
<input class="form-control" placeholder="경도" name="handoverSeaPointLon" th:value="${crackdownStatus.processResult.handoverSeaPointLon}">
<input class="form-control" placeholder="상세내용" name="handoverSeaPointDetail" th:value="${crackdownStatus.processResult.handoverSeaPointDetail}">
</div>
<label class="col-sm-1 col-form-label text-center">인계함정</label>
<div class="col-sm-2">
<input class="form-control" name="handoverBoat" th:value="${crackdownStatus.processResult.handoverBoat}">
</div>
<label class="col-sm-1 col-form-label text-center">중측</br>인수함정</label>
<div class="col-sm-2">
<input class="form-control" name="middleTakeoverBoat" th:value="${crackdownStatus.processResult.middleTakeoverBoat}">
</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="captin">
<option value="">선택</option>
<option value="Y" th:selected="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS001' && isRestriction == 'Y'].![1]) != null}">구속</option>
<option value="N" th:selected="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS001' && isRestriction == 'N'].![1]) != null}">불구속</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="mate">
<option value="">선택</option>
<option value="Y" th:selected="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS002' && isRestriction == 'Y'].![1]) != null}">구속</option>
<option value="N" th:selected="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS002' && isRestriction == 'N'].![1]) != null}">불구속</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="warden">
<option value="">선택</option>
<option value="Y" th:selected="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS003' && isRestriction == 'Y'].![1]) != null}">구속</option>
<option value="N" th:selected="${#aggregates.sum(crackdownStatus.sailorList.?[position == 'POS003' && isRestriction == 'N'].![1]) != null}">불구속</option>
</select>
</div>
<button type="button" class="btn btn-primary col-auto" id="sailorAddBtn">선원 추가</button>
</div>
<div class="mb-3 row" id="sailorDiv">
<th:block th:each="sailor:${crackdownStatus.sailorList}" th:if="${#strings.contains(sailor.position, 'POS005') || #strings.contains(sailor.position, 'POS006')}">
<div class="row">
<input type="hidden" name="sailorKey" th:value="${sailor.sailorKey}">
<label class="col-sm-1 col-form-label text-center">선원 이름</label>
<div class="col-sm-2">
<input class="form-control" name="sailorNameKr" th:value="${sailor.sailorNameKr}">
</div>
<div class="col-sm-2">
<select class="form-select form-select-sm sailor-list" name="sailor">
<option value="">선택</option>
<option value="Y" th:selected="${sailor.isRestriction == 'Y'}">구속</option>
<option value="N" th:selected="${sailor.isRestriction == 'N'}">불구속</option>
</select>
</div>
<button type="button" class="btn btn-primary col-auto" id="sailorRemoveBtn">-</button>
</div>
</th:block>
</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(crackdownStatus.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(crackdownStatus.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="${#temporals.format(crackdownStatus.fieldIvsgtTimeTaken, 'yyyy-MM-dd HH:mm')}">
</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(crackdownStatus.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(crackdownStatus.pressurizedEndDt, 'yyyy-MM-dd HH:mm')}">
</div>
<label class="col-sm-1 col-form-label text-center">영장청구<br>소요시간</label>
<div class="col-sm-2">
<input class="form-control" name="warrantReqTakeTime" th:value="${#temporals.format(crackdownStatus.processResult.warrantReqTakeTime, '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="${crackdownStatus.distance}">
</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="confiscationFrame" th:value="${crackdownStatus.fishingBoat.confiscationFrame}">
</div>
<label class="col-sm-1 col-form-label text-center"></label>
<div class="col-sm-2">
<input class="form-control" name="confiscationWidth" th:value="${crackdownStatus.fishingBoat.confiscationWidth}">
</div>
<label class="col-sm-1 col-form-label text-center"></label>
<div class="col-sm-2">
<input class="form-control" name="confiscationJo" th:value="${crackdownStatus.fishingBoat.confiscationJo}">
</div>
<label class="col-sm-1 col-form-label text-center"></label>
<div class="col-sm-2">
<input class="form-control" name="confiscationGae" th:value="${crackdownStatus.fishingBoat.confiscationGae}">
</div>
<label class="col-sm-1 col-form-label text-center">기타</label>
<div class="col-sm-2">
<input class="form-control" name="confiscationEtc" th:value="${crackdownStatus.fishingBoat.confiscationEtc}">
</div>
</div>
</form>
</div>
<div class="modal-footer">
<th:block th:if="${userSeq eq crackdownStatus.wrtUserSeq or accessAuth eq 'ACC003'}"><!--작성자일 경우 수정 허용--><!--관리자일 경우 수정 허용-->
<button type="button" class="btn btn-warning" id="cdsEditBtn">수정</button>
</th:block>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
</div>
</html>

View File

@ -12,6 +12,8 @@
<link rel="stylesheet" th:href="@{/img/bootstrap-icons-1.9.1/bootstrap-icons.css}"> <link rel="stylesheet" th:href="@{/img/bootstrap-icons-1.9.1/bootstrap-icons.css}">
<!--bootstrap-datepicker--> <!--bootstrap-datepicker-->
<link rel="stylesheet" th:href="@{/vendor/bootstrap-datepicker-1.9.0-dist/css/bootstrap-datepicker.min.css}"> <link rel="stylesheet" th:href="@{/vendor/bootstrap-datepicker-1.9.0-dist/css/bootstrap-datepicker.min.css}">
<!--datetimepicker-->
<link rel="stylesheet" th:href="@{/vendor/datetimepicker/css/datetimepicker.css}">
<!--summernote--> <!--summernote-->
<link rel="stylesheet" th:href="@{/vendor/summernote-0.8.18-dist/summernote-lite.min.css}"> <link rel="stylesheet" th:href="@{/vendor/summernote-0.8.18-dist/summernote-lite.min.css}">
@ -26,6 +28,9 @@
<!--bootstrap-datepicker--> <!--bootstrap-datepicker-->
<script type="text/javascript" th:src="@{/vendor/bootstrap-datepicker-1.9.0-dist/js/bootstrap-datepicker.min.js}"></script> <script type="text/javascript" th:src="@{/vendor/bootstrap-datepicker-1.9.0-dist/js/bootstrap-datepicker.min.js}"></script>
<script type="text/javascript" th:src="@{/vendor/bootstrap-datepicker-1.9.0-dist/locales/bootstrap-datepicker.ko.min.js}"></script> <script type="text/javascript" th:src="@{/vendor/bootstrap-datepicker-1.9.0-dist/locales/bootstrap-datepicker.ko.min.js}"></script>
<!--datetimepicker-->
<script type="text/javascript" th:src="@{/vendor/datetimepicker/js/datetimepicker.full.min.js}"></script>
<script type="text/javascript" th:src="@{/vendor/datetimepicker/js/datetimepicker.js}"></script>
<!--summernote--> <!--summernote-->
<script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/summernote-lite.min.js}"></script> <script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/summernote-lite.min.js}"></script>
<script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/lang/summernote-ko-KR.min.js}"></script> <script type="text/javascript" th:src="@{/vendor/summernote-0.8.18-dist/lang/summernote-ko-KR.min.js}"></script>