처리현황, 단속현황 수정

jiHyung 2022-11-02 09:50:30 +09:00
parent 779bd8747c
commit 35eafcda9c
20 changed files with 134 additions and 39 deletions

View File

@ -86,15 +86,15 @@ public class CrackdownStatusController {
crackdownStatus.setSailorList(sailorRepository.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.setWrtUserNm(loginUser.getUserNm());
crackdownStatus.setWrtDt(LocalDateTime.now()); crackdownStatus.setWrtDt(LocalDateTime.now());
crackdownStatus.setFishingBoat(new FishingBoat()); crackdownStatus.setFishingBoat(new FishingBoat());
crackdownStatus.getFishingBoat().setWrtOrgan(loginUser.getOgCd()); crackdownStatus.getFishingBoat().setWrtOrgan(loginUser.getOgCd());
crackdownStatus.getFishingBoat().setWrtNm(loginUser.getUserNm()); crackdownStatus.getFishingBoat().setWrtUserNm(loginUser.getUserNm());
crackdownStatus.getFishingBoat().setWrtDt(LocalDateTime.now()); crackdownStatus.getFishingBoat().setWrtDt(LocalDateTime.now());
crackdownStatus.setProcessResult(new ProcessResult()); crackdownStatus.setProcessResult(new ProcessResult());
crackdownStatus.getProcessResult().setWrtOrgan(loginUser.getOgCd()); crackdownStatus.getProcessResult().setWrtOrgan(loginUser.getOgCd());
crackdownStatus.getProcessResult().setWrtNm(loginUser.getUserNm()); crackdownStatus.getProcessResult().setWrtUserNm(loginUser.getUserNm());
crackdownStatus.getProcessResult().setWrtDt(LocalDateTime.now()); crackdownStatus.getProcessResult().setWrtDt(LocalDateTime.now());
} }
mav.addObject("crackdownStatus", crackdownStatus); mav.addObject("crackdownStatus", crackdownStatus);

View File

@ -114,11 +114,17 @@ public class CrackdownStatus extends BaseModel {
@Column(name = "wrt_organ") @Column(name = "wrt_organ")
private String wrtOrgan; private String wrtOrgan;
@Column(name = "wrt_part")
private String wrtPart;
@Column(name = "wrt_user_seq") @Column(name = "wrt_user_seq")
private Integer wrtUserSeq; private Integer wrtUserSeq;
@Column(name = "wrt_nm") @Column(name = "wrt_user_grd")
private String wrtNm; private String wrtUserGrd;
@Column(name = "wrt_user_nm")
private String wrtUserNm;
@Column(name = "wrt_dt") @Column(name = "wrt_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
@ -169,4 +175,8 @@ public class CrackdownStatus extends BaseModel {
private Integer eezTotal; private Integer eezTotal;
@Transient @Transient
private Integer invasionTerritorialWatersTotal; private Integer invasionTerritorialWatersTotal;
@Transient
private List<Integer> violationDeleteKeyList;
@Transient
private List<Integer> sailorDeleteKeyList;
} }

View File

@ -110,11 +110,17 @@ public class FishingBoat extends BaseModel {
@Column(name = "wrt_organ") @Column(name = "wrt_organ")
private String wrtOrgan; private String wrtOrgan;
@Column(name = "wrt_part")
private String wrtPart;
@Column(name = "wrt_user_seq") @Column(name = "wrt_user_seq")
private Integer wrtUserSeq; private Integer wrtUserSeq;
@Column(name = "wrt_nm") @Column(name = "wrt_user_grd")
private String wrtNm; private String wrtUserGrd;
@Column(name = "wrt_user_nm")
private String wrtUserNm;
@Column(name = "wrt_dt") @Column(name = "wrt_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")

View File

@ -119,20 +119,22 @@ public class ProcessResult extends BaseModel {
@Column(name = "wrt_organ") @Column(name = "wrt_organ")
private String wrtOrgan; private String wrtOrgan;
@Column(name = "wrt_part")
private String wrtPart;
@Column(name = "wrt_user_seq") @Column(name = "wrt_user_seq")
private Integer wrtUserSeq; private Integer wrtUserSeq;
@Column(name = "wrt_nm") @Column(name = "wrt_user_grd")
private String wrtNm; private String wrtUserGrd;
@Column(name = "wrt_user_nm")
private String wrtUserNm;
@Column(name = "wrt_dt") @Column(name = "wrt_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime wrtDt; private LocalDateTime wrtDt;
@Column(name = "upd_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime updDt;
@Transient @Transient
private CrackdownStatus crackdownStatus; private CrackdownStatus crackdownStatus;
@Transient @Transient

View File

@ -81,11 +81,17 @@ public class Sailor extends BaseModel {
@Column(name = "wrt_organ") @Column(name = "wrt_organ")
private String wrtOrgan; private String wrtOrgan;
@Column(name = "wrt_part")
private String wrtPart;
@Column(name = "wrt_user_seq") @Column(name = "wrt_user_seq")
private Integer wrtUserSeq; private Integer wrtUserSeq;
@Column(name = "wrt_nm") @Column(name = "wrt_user_grd")
private String wrtNm; private String wrtUserGrd;
@Column(name = "wrt_user_nm")
private String wrtUserNm;
@Column(name = "wrt_dt") @Column(name = "wrt_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")

View File

@ -29,6 +29,7 @@ public class processResultController {
private final ViolationRepository violationRepository; private final ViolationRepository violationRepository;
private final CrackdownStatusRepository crackdownStatusRepository; private final CrackdownStatusRepository crackdownStatusRepository;
private final FishingBoatRepository fishingBoatRepository; private final FishingBoatRepository fishingBoatRepository;
private final ProcessResultRepository processResultRepository;
@RequestMapping("/processResult") @RequestMapping("/processResult")
public ModelAndView processResult(@AuthenticationPrincipal UserInfo loginUser, ProcessResult processResult) { public ModelAndView processResult(@AuthenticationPrincipal UserInfo loginUser, ProcessResult processResult) {
@ -82,7 +83,7 @@ public class processResultController {
processResult.setViolationList(violationRepository.findByFbKey(processResult.getFbKey())); processResult.setViolationList(violationRepository.findByFbKey(processResult.getFbKey()));
}else{ }else{
processResult.setWrtOrgan(loginUser.getOgCd()); processResult.setWrtOrgan(loginUser.getOgCd());
processResult.setWrtNm(loginUser.getUserNm()); processResult.setWrtUserNm(loginUser.getUserNm());
processResult.setWrtDt(LocalDateTime.now()); processResult.setWrtDt(LocalDateTime.now());
} }
mav.addObject("processResult", processResult); mav.addObject("processResult", processResult);

View File

@ -5,4 +5,5 @@ 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); ProcessResult findByCdsKey(Integer cdsKey);
ProcessResult findByPrKey(Integer prKey);
} }

View File

@ -2,9 +2,18 @@ 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;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
public interface SailorRepository extends JpaRepository<Sailor, Integer> { public interface SailorRepository extends JpaRepository<Sailor, Integer> {
List<Sailor> findByFbKey(Integer fbKey); List<Sailor> findByFbKey(Integer fbKey);
@Transactional
@Modifying
@Query("delete from Sailor s where s.sailorKey in :idList")
void deleteAllByIdInQuery(@Param("idList") List<Integer> sailorDeleteKeyList);
} }

View File

@ -2,9 +2,18 @@ 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;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
public interface ViolationRepository extends JpaRepository<Violation, Integer> { public interface ViolationRepository extends JpaRepository<Violation, Integer> {
List<Violation> findByFbKey(Integer fbKey); List<Violation> findByFbKey(Integer fbKey);
@Transactional
@Modifying
@Query("delete from Violation v where v.violationKey in :idList")
void deleteAllByIdInQuery(@Param("idList") List<Integer> violationDeleteKeyList);
} }

View File

@ -42,6 +42,13 @@ public class CrackdownStatusService extends BaseService {
@Transactional @Transactional
public Integer saveCrackdownStatus(CrackdownStatus crackdownStatus) { public Integer saveCrackdownStatus(CrackdownStatus crackdownStatus) {
if (crackdownStatus.getViolationDeleteKeyList() != null) {
violationRepository.deleteAllByIdInQuery(crackdownStatus.getViolationDeleteKeyList());
}
if (crackdownStatus.getSailorDeleteKeyList() != null) {
sailorRepository.deleteAllByIdInQuery(crackdownStatus.getSailorDeleteKeyList());
}
if (crackdownStatus.getCrackdownBoatEtc() != null) { if (crackdownStatus.getCrackdownBoatEtc() != null) {
crackdownStatus.setCrackdownBoat(crackdownStatus.getCrackdownBoatEtc()); crackdownStatus.setCrackdownBoat(crackdownStatus.getCrackdownBoatEtc());
} }

View File

@ -4,16 +4,19 @@ package com.dbnt.faisp.main.faStatistics.crackdownsStatus.service;
import com.dbnt.faisp.config.BaseService; import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.CrackdownStatusMapper; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.CrackdownStatusMapper;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.ProcessResultMapper; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.mapper.ProcessResultMapper;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.CrackdownStatus; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.*;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.ProcessResult;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.Sailor;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.Violation;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*; import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*;
import com.dbnt.faisp.util.Utils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@ -96,22 +99,32 @@ public class ProcessResultService extends BaseService {
@Transactional @Transactional
public Integer saveProcessResult(ProcessResult processResult) { public Integer saveProcessResult(ProcessResult processResult) {
if (processResult.getCrackdownStatus().getViolationDeleteKeyList() != null) {
violationRepository.deleteAllByIdInQuery(processResult.getCrackdownStatus().getViolationDeleteKeyList());
}
if (processResult.getExecutionDetailEtc() != null) { if (processResult.getExecutionDetailEtc() != null) {
processResult.setExecutionDetail(processResult.getExecutionDetailEtc()); processResult.setExecutionDetail(processResult.getExecutionDetailEtc());
} }
Integer prKey = processResultRepository.save(processResult).getPrKey(); ProcessResult existingProcessResult = processResultRepository.findByPrKey(processResult.getPrKey());
Utils.copyNonNullProperties(processResult, existingProcessResult);
Integer prKey = processResultRepository.save(existingProcessResult).getPrKey();
if (processResult.getCrackdownStatus() != null) { if (processResult.getCrackdownStatus() != null) {
if (processResult.getCrackdownStatus().getCrackdownPoliceEtc() != null) { if (processResult.getCrackdownStatus().getCrackdownPoliceEtc() != null) {
processResult.getCrackdownStatus().setCrackdownPolice(processResult.getCrackdownStatus().getCrackdownPoliceEtc()); processResult.getCrackdownStatus().setCrackdownPolice(processResult.getCrackdownStatus().getCrackdownPoliceEtc());
} }
processResult.setCrackdownStatus(crackdownStatusRepository.save(processResult.getCrackdownStatus())); CrackdownStatus existingCrackdownStatus = crackdownStatusRepository.findByCdsKey(processResult.getCdsKey());
Utils.copyNonNullProperties(processResult, existingCrackdownStatus);
processResult.setCrackdownStatus(crackdownStatusRepository.save(existingCrackdownStatus));
} }
if (processResult.getFishingBoat() != null) { if (processResult.getFishingBoat() != null) {
fishingBoatRepository.save(processResult.getFishingBoat()); FishingBoat existingFishingBoat = fishingBoatRepository.findByCdsKey(processResult.getCdsKey());
Utils.copyNonNullProperties(processResult, existingFishingBoat);
fishingBoatRepository.save(existingFishingBoat);
} }
if (processResult.getViolationList() != null) { if (processResult.getViolationList() != null) {

View File

@ -6,9 +6,7 @@ import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Date; import java.util.*;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -30,6 +28,9 @@ import com.dbnt.faisp.main.equip.model.CellPhone;
import com.dbnt.faisp.main.equip.model.UseList; import com.dbnt.faisp.main.equip.model.UseList;
import com.dbnt.faisp.main.fipTarget.model.PartInfo; import com.dbnt.faisp.main.fipTarget.model.PartInfo;
import com.dbnt.faisp.main.fipTarget.model.PartWork; import com.dbnt.faisp.main.fipTarget.model.PartWork;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
public class Utils { public class Utils {
@ -956,7 +957,22 @@ public class Utils {
} }
public static void copyNonNullProperties(Object src, Object target) {
BeanUtils.copyProperties(src, target, getNullPropertyNames(src));
}
public static String[] getNullPropertyNames (Object source) {
final BeanWrapper src = new BeanWrapperImpl(source);
java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
Set<String> emptyNames = new HashSet<>();
for(java.beans.PropertyDescriptor pd : pds) {
Object srcValue = src.getPropertyValue(pd.getName());
if (srcValue == null) emptyNames.add(pd.getName());
}
String[] result = new String[emptyNames.size()];
return emptyNames.toArray(result);
}
} }

View File

@ -41,7 +41,7 @@
, cs.distance , cs.distance
, cs.wrt_organ , cs.wrt_organ
, cs.wrt_user_seq , cs.wrt_user_seq
, cs.wrt_nm , cs.wrt_user_nm
, cs.wrt_dt , cs.wrt_dt
, fb.fb_key , fb.fb_key
, fb.boat_name_kr , fb.boat_name_kr

View File

@ -60,10 +60,14 @@ $(document).on('click', '#violationAddBtn', function (){
$(document).on('click', '#sailorRemoveBtn', function (){ $(document).on('click', '#sailorRemoveBtn', function (){
$(this).parent().remove(); $(this).parent().remove();
let deleteKey = $(this).parent().children("input[name='sailorKey']").val();
$("#cdsEditForm").append('<input type="hidden" name="sailorDeleteKeyList" value="' + deleteKey + '">');
}); });
$(document).on('click', '#violationRemoveBtn', function (){ $(document).on('click', '#violationRemoveBtn', function (){
$(this).parent().remove(); $(this).parent().remove();
let deleteKey = $(this).parent().children("input[name='violationKey']").val();
$("#cdsEditForm").append('<input type="hidden" name="violationDeleteKeyList" value="' + deleteKey + '">');
}); });
$(document).on('change', '.violation', function (){ $(document).on('change', '.violation', function (){

View File

@ -40,6 +40,8 @@ $(document).on('click', '#violationAddBtn', function (){
$(document).on('click', '#violationRemoveBtn', function (){ $(document).on('click', '#violationRemoveBtn', function (){
$(this).parent().remove(); $(this).parent().remove();
let deleteKey = $(this).parent().children("input[name='violationKey']").val();
$("#processResultEditForm").append('<input type="hidden" name="violationDeleteKeyList" value="' + deleteKey + '">');
}); });
$(document).on('change', '.violation', function (){ $(document).on('change', '.violation', function (){

View File

@ -17,7 +17,7 @@
<input type="hidden" name="prKey" th:value="${crackdownStatus.processResult.prKey}"> <input type="hidden" name="prKey" th:value="${crackdownStatus.processResult.prKey}">
</th:block> </th:block>
<input type="hidden" name="wrtOrgan" th:value="${crackdownStatus.wrtOrgan}"> <input type="hidden" name="wrtOrgan" th:value="${crackdownStatus.wrtOrgan}">
<input type="hidden" name="wrtNm" th:value="${crackdownStatus.wrtNm}"> <input type="hidden" name="wrtUserNm" th:value="${crackdownStatus.wrtUserNm}">
<input type="hidden" name="wrtDt" th:value="${#temporals.format(crackdownStatus.wrtDt, 'yyyy-MM-dd HH:mm')}"> <input type="hidden" name="wrtDt" th:value="${#temporals.format(crackdownStatus.wrtDt, 'yyyy-MM-dd HH:mm')}">
<input type="hidden" id="saveYn" name="saveYn"> <input type="hidden" id="saveYn" name="saveYn">
<div class="mb-3 row"> <div class="mb-3 row">
@ -58,7 +58,7 @@
</div> </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, i : ${crackdownStatus.violationList}">
<div class="row"> <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">
@ -74,6 +74,10 @@
<input type="text" class="form-control" name="violationEtc" th:value="${violation.violation}"> <input type="text" class="form-control" name="violationEtc" th:value="${violation.violation}">
</div> </div>
</th:block> </th:block>
<th:block th:if="${i.index > 0}">
<button type="button" class="btn btn-primary col-auto" id="violationRemoveBtn">-</button>
<input type="hidden" name="violationKey" th:value="${violation.violationKey}">
</th:block>
</div> </div>
</th:block> </th:block>
</th:block> </th:block>
@ -421,6 +425,7 @@
</select> </select>
</div> </div>
<button type="button" class="btn btn-primary col-auto" id="sailorRemoveBtn">-</button> <button type="button" class="btn btn-primary col-auto" id="sailorRemoveBtn">-</button>
<input type="hidden" name="sailorKey" th:value="${sailor.sailorKey}">
</div> </div>
</th:block> </th:block>
</div> </div>

View File

@ -17,7 +17,7 @@
<input type="hidden" name="prKey" th:value="${crackdownStatus.processResult.prKey}"> <input type="hidden" name="prKey" th:value="${crackdownStatus.processResult.prKey}">
</th:block> </th:block>
<input type="hidden" name="wrtOrgan" th:value="${crackdownStatus.wrtOrgan}"> <input type="hidden" name="wrtOrgan" th:value="${crackdownStatus.wrtOrgan}">
<input type="hidden" name="wrtNm" th:value="${crackdownStatus.wrtNm}"> <input type="hidden" name="wrtUserNm" th:value="${crackdownStatus.wrtUserNm}">
<input type="hidden" name="wrtDt" th:value="${#temporals.format(crackdownStatus.wrtDt, 'yyyy-MM-dd HH:mm')}"> <input type="hidden" name="wrtDt" th:value="${#temporals.format(crackdownStatus.wrtDt, 'yyyy-MM-dd HH:mm')}">
<input type="hidden" id="saveYn" name="saveYn"> <input type="hidden" id="saveYn" name="saveYn">
<div class="mb-3 row"> <div class="mb-3 row">

View File

@ -100,7 +100,7 @@
<td th:text="${processResult.consignmentEndDt}"></td> <td th:text="${processResult.consignmentEndDt}"></td>
<td th:text="${processResult.confiscationDt}"></td> <td th:text="${processResult.confiscationDt}"></td>
<td th:text="${processResult.boatDisposalDt}"></td> <td th:text="${processResult.boatDisposalDt}"></td>
<td th:text="${processResult.updDt}"></td> <td th:text="${processResult.wrtDt}"></td>
</tr> </tr>
</th:block> </th:block>
</tbody> </tbody>

View File

@ -13,7 +13,7 @@
<input type="hidden" name="fbKey" th:value="${processResult.fbKey}"> <input type="hidden" name="fbKey" th:value="${processResult.fbKey}">
<input type="hidden" name="prKey" th:value="${processResult.prKey}"> <input type="hidden" name="prKey" th:value="${processResult.prKey}">
<input type="hidden" name="wrtOrgan" th:value="${processResult.wrtOrgan}"> <input type="hidden" name="wrtOrgan" th:value="${processResult.wrtOrgan}">
<input type="hidden" name="wrtNm" th:value="${processResult.wrtNm}"> <input type="hidden" name="wrtUserNm" th:value="${processResult.wrtUserNm}">
<input type="hidden" name="wrtDt" th:value="${#temporals.format(processResult.wrtDt, 'yyyy-MM-dd HH:mm')}"> <input type="hidden" name="wrtDt" th:value="${#temporals.format(processResult.wrtDt, 'yyyy-MM-dd HH:mm')}">
<input type="hidden" id="saveYn" name="saveYn"> <input type="hidden" id="saveYn" name="saveYn">
<div class="mb-3 row"> <div class="mb-3 row">
@ -29,7 +29,7 @@
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${processResult.crackdownStatus.crackdownPolice eq commonCode.itemCd}"></option> th:selected="${processResult.crackdownStatus.crackdownPolice eq commonCode.itemCd}"></option>
</th:block> </th:block>
<option value="etc" th:selected="${processResult.crackdownStatus.crackdownPolice ne null && !#strings.contains(processResult.crackdownStatus.crackdownPolice, 'CPO')}">직접입력</option> <option value="etc" th:selected="${processResult.crackdownStatus.crackdownPolice ne '' && processResult.crackdownStatus.crackdownPolice ne null && !#strings.contains(processResult.crackdownStatus.crackdownPolice, 'CPO')}">직접입력</option>
</select> </select>
</div> </div>
</div> </div>
@ -61,7 +61,7 @@
</div> </div>
</th:block> </th:block>
<th:block th:if="${!#lists.isEmpty(processResult.violationList)}"> <th:block th:if="${!#lists.isEmpty(processResult.violationList)}">
<th:block th:each="violation : ${processResult.violationList}"> <th:block th:each="violation, i : ${processResult.violationList}">
<div class="row"> <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">
@ -70,13 +70,17 @@
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${processResult.violationList != null and commonCode.itemCd eq violation.violation}"></option> th:selected="${processResult.violationList != null and commonCode.itemCd eq violation.violation}"></option>
</th:block> </th:block>
<option th:selected="${violation.violation ne null && !#strings.contains(violation.violation, 'VT')}" value="etc">직접입력</option> <option th:selected="${violation.violation ne '' && violation.violation ne null && !#strings.contains(violation.violation, 'VT')}" value="etc">직접입력</option>
</select> </select>
<th:block th:if="${violation.violation ne null and !#strings.contains(violation.violation, 'VT')}"> <th:block th:if="${violation.violation ne null and !#strings.contains(violation.violation, 'VT')}">
<div class="col-auto"> <div class="col-auto">
<input type="text" class="form-control" name="violationEtc" th:value="${violation.violation}"> <input type="text" class="form-control" name="violationEtc" th:value="${violation.violation}">
</div> </div>
</th:block> </th:block>
<th:block th:if="${i.index > 0}">
<button type="button" class="btn btn-primary col-auto" id="violationRemoveBtn">-</button>
<input type="hidden" name="violationKey" th:value="${violation.violationKey}">
</th:block>
</div> </div>
</th:block> </th:block>
</th:block> </th:block>
@ -99,7 +103,7 @@
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq processResult.executionDetail}"></option> th:selected="${commonCode.itemCd eq processResult.executionDetail}"></option>
</th:block> </th:block>
<option th:selected="${processResult.executionDetail ne null && !#strings.contains(processResult.executionDetail, 'PR')}" value="etc">직접입력</option> <option th:selected="${processResult.executionDetail ne '' && processResult.executionDetail ne null && !#strings.contains(processResult.executionDetail, 'PR')}" value="etc">직접입력</option>
</select> </select>
<th:block th:if="${processResult.executionDetail ne null && !#strings.contains(processResult.executionDetail, 'PR')}"> <th:block th:if="${processResult.executionDetail ne null && !#strings.contains(processResult.executionDetail, 'PR')}">
<div class="col-auto"> <div class="col-auto">

View File

@ -13,7 +13,7 @@
<input type="hidden" name="fbKey" th:value="${processResult.fbKey}"> <input type="hidden" name="fbKey" th:value="${processResult.fbKey}">
<input type="hidden" name="prKey" th:value="${processResult.prKey}"> <input type="hidden" name="prKey" th:value="${processResult.prKey}">
<input type="hidden" name="wrtOrgan" th:value="${processResult.wrtOrgan}"> <input type="hidden" name="wrtOrgan" th:value="${processResult.wrtOrgan}">
<input type="hidden" name="wrtNm" th:value="${processResult.wrtNm}"> <input type="hidden" name="wrtUserNm" th:value="${processResult.wrtUserNm}">
<input type="hidden" name="wrtDt" th:value="${#temporals.format(processResult.wrtDt, 'yyyy-MM-dd HH:mm')}"> <input type="hidden" name="wrtDt" th:value="${#temporals.format(processResult.wrtDt, 'yyyy-MM-dd HH:mm')}">
<input type="hidden" id="saveYn" name="saveYn"> <input type="hidden" id="saveYn" name="saveYn">
<div class="mb-3 row"> <div class="mb-3 row">