처리현황, 단속현황 수정

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()));
}else{
crackdownStatus.setWrtOrgan(loginUser.getOgCd());
crackdownStatus.setWrtNm(loginUser.getUserNm());
crackdownStatus.setWrtUserNm(loginUser.getUserNm());
crackdownStatus.setWrtDt(LocalDateTime.now());
crackdownStatus.setFishingBoat(new FishingBoat());
crackdownStatus.getFishingBoat().setWrtOrgan(loginUser.getOgCd());
crackdownStatus.getFishingBoat().setWrtNm(loginUser.getUserNm());
crackdownStatus.getFishingBoat().setWrtUserNm(loginUser.getUserNm());
crackdownStatus.getFishingBoat().setWrtDt(LocalDateTime.now());
crackdownStatus.setProcessResult(new ProcessResult());
crackdownStatus.getProcessResult().setWrtOrgan(loginUser.getOgCd());
crackdownStatus.getProcessResult().setWrtNm(loginUser.getUserNm());
crackdownStatus.getProcessResult().setWrtUserNm(loginUser.getUserNm());
crackdownStatus.getProcessResult().setWrtDt(LocalDateTime.now());
}
mav.addObject("crackdownStatus", crackdownStatus);

View File

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

View File

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

View File

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

View File

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

View File

@ -5,4 +5,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
public interface ProcessResultRepository extends JpaRepository<ProcessResult, Integer> {
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 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;
public interface SailorRepository extends JpaRepository<Sailor, Integer> {
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 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;
public interface ViolationRepository extends JpaRepository<Violation, Integer> {
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
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) {
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.main.faStatistics.crackdownsStatus.mapper.CrackdownStatusMapper;
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.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.model.*;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.*;
import com.dbnt.faisp.util.Utils;
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.transaction.annotation.Transactional;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Service
@RequiredArgsConstructor
@ -96,22 +99,32 @@ public class ProcessResultService extends BaseService {
@Transactional
public Integer saveProcessResult(ProcessResult processResult) {
if (processResult.getCrackdownStatus().getViolationDeleteKeyList() != null) {
violationRepository.deleteAllByIdInQuery(processResult.getCrackdownStatus().getViolationDeleteKeyList());
}
if (processResult.getExecutionDetailEtc() != null) {
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().getCrackdownPoliceEtc() != null) {
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) {
fishingBoatRepository.save(processResult.getFishingBoat());
FishingBoat existingFishingBoat = fishingBoatRepository.findByCdsKey(processResult.getCdsKey());
Utils.copyNonNullProperties(processResult, existingFishingBoat);
fishingBoatRepository.save(existingFishingBoat);
}
if (processResult.getViolationList() != null) {

View File

@ -6,9 +6,7 @@ import java.io.IOException;
import java.io.PrintWriter;
import java.text.DecimalFormat;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
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.fipTarget.model.PartInfo;
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 {
@ -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.wrt_organ
, cs.wrt_user_seq
, cs.wrt_nm
, cs.wrt_user_nm
, cs.wrt_dt
, fb.fb_key
, fb.boat_name_kr

View File

@ -60,10 +60,14 @@ $(document).on('click', '#violationAddBtn', function (){
$(document).on('click', '#sailorRemoveBtn', function (){
$(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 (){
$(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 (){

View File

@ -40,6 +40,8 @@ $(document).on('click', '#violationAddBtn', function (){
$(document).on('click', '#violationRemoveBtn', function (){
$(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 (){

View File

@ -17,7 +17,7 @@
<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="wrtUserNm" th:value="${crackdownStatus.wrtUserNm}">
<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">
@ -58,7 +58,7 @@
</div>
</th:block>
<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">
<input type="hidden" name="violationKey" th:value="${violation.violationKey}">
<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}">
</div>
</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>
</th:block>
</th:block>
@ -421,6 +425,7 @@
</select>
</div>
<button type="button" class="btn btn-primary col-auto" id="sailorRemoveBtn">-</button>
<input type="hidden" name="sailorKey" th:value="${sailor.sailorKey}">
</div>
</th:block>
</div>

View File

@ -17,7 +17,7 @@
<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="wrtUserNm" th:value="${crackdownStatus.wrtUserNm}">
<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">

View File

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

View File

@ -13,7 +13,7 @@
<input type="hidden" name="fbKey" th:value="${processResult.fbKey}">
<input type="hidden" name="prKey" th:value="${processResult.prKey}">
<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" id="saveYn" name="saveYn">
<div class="mb-3 row">
@ -29,7 +29,7 @@
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${processResult.crackdownStatus.crackdownPolice eq commonCode.itemCd}"></option>
</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>
</div>
</div>
@ -61,7 +61,7 @@
</div>
</th:block>
<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">
<input type="hidden" name="violationKey" th:value="${violation.violationKey}">
<select class="form-select form-select-sm violation" name="violation">
@ -70,13 +70,17 @@
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${processResult.violationList != null and commonCode.itemCd eq violation.violation}"></option>
</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>
<th:block th:if="${violation.violation ne null and !#strings.contains(violation.violation, 'VT')}">
<div class="col-auto">
<input type="text" class="form-control" name="violationEtc" th:value="${violation.violation}">
</div>
</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>
</th:block>
</th:block>
@ -99,7 +103,7 @@
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
th:selected="${commonCode.itemCd eq processResult.executionDetail}"></option>
</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>
<th:block th:if="${processResult.executionDetail ne null && !#strings.contains(processResult.executionDetail, 'PR')}">
<div class="col-auto">

View File

@ -13,7 +13,7 @@
<input type="hidden" name="fbKey" th:value="${processResult.fbKey}">
<input type="hidden" name="prKey" th:value="${processResult.prKey}">
<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" id="saveYn" name="saveYn">
<div class="mb-3 row">