fix : 외사첩보망 운영계획 완료

master
TaehunPark 2023-01-16 16:46:49 +09:00
parent 068774c5ea
commit 3682a0d745
9 changed files with 74 additions and 44 deletions

View File

@ -7,6 +7,7 @@ import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.SailorService;
import com.dbnt.faisp.main.fpiMgt.affair.service.AffairService; import com.dbnt.faisp.main.fpiMgt.affair.service.AffairService;
import com.dbnt.faisp.main.fpiMgt.affairPlan.service.PlanService; import com.dbnt.faisp.main.fpiMgt.affairPlan.service.PlanService;
import com.dbnt.faisp.main.fpiMgt.affairResult.service.ResultService; import com.dbnt.faisp.main.fpiMgt.affairResult.service.ResultService;
import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.service.IntelligenceNetworkService;
import com.dbnt.faisp.main.fpiMgt.sri.service.SriService; import com.dbnt.faisp.main.fpiMgt.sri.service.SriService;
import com.dbnt.faisp.main.ivsgtMgt.boardInvestigation.service.BoardInvestigationService; import com.dbnt.faisp.main.ivsgtMgt.boardInvestigation.service.BoardInvestigationService;
import com.dbnt.faisp.main.ivsgtMgt.majorStatus.service.MajorStatusService; import com.dbnt.faisp.main.ivsgtMgt.majorStatus.service.MajorStatusService;
@ -46,6 +47,7 @@ public class FileController extends BaseService{
private final SriService sriService; private final SriService sriService;
private final CounterIntelligenceService ciService; private final CounterIntelligenceService ciService;
private final MajorStatusService majorStatusService; private final MajorStatusService majorStatusService;
private final IntelligenceNetworkService inrelligenceNetworkService;
@GetMapping("/editorFileDisplay") @GetMapping("/editorFileDisplay")
public ResponseEntity<Resource> editorFileDisplay(HttpServletRequest request, public ResponseEntity<Resource> editorFileDisplay(HttpServletRequest request,
@ -151,6 +153,9 @@ public class FileController extends BaseService{
case "ciActivity": case "ciActivity":
downloadFile = ciService.selectCiaForeignerFile(parentKey, fileSeq); downloadFile = ciService.selectCiaForeignerFile(parentKey, fileSeq);
break; break;
case "operationPlan":
downloadFile = inrelligenceNetworkService.selectOperationPlanFile(parentKey, fileSeq);
break;
} }
return downloadFile; return downloadFile;
} }

View File

@ -71,6 +71,8 @@ public class OperationPlan extends BaseModel {
private LocalDateTime wrtDt; private LocalDateTime wrtDt;
@Transient
private String status;
@Transient @Transient
private Integer fileCnt; private Integer fileCnt;
@Transient @Transient

View File

@ -2,11 +2,12 @@ package com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.service;
import com.dbnt.faisp.config.BaseService; import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.config.FileInfo;
import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.mapper.IntelligenceNetworkMapper; import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.mapper.IntelligenceNetworkMapper;
import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.model.OperationPlan; import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.model.OperationPlan;
import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.model.OperationPlanApprv; import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.model.OperationPlanApprv;
import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.model.OperationPlanFile; import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.model.OperationPlanFile;
import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.model.OperationPlanFile.OperationPlanFileId;
import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.repository.OperationPlanApprvRepository; import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.repository.OperationPlanApprvRepository;
import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.repository.OperationPlanFileRepository; import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.repository.OperationPlanFileRepository;
import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.repository.OperationPlanRepository; import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.repository.OperationPlanRepository;
@ -119,6 +120,10 @@ public class IntelligenceNetworkService extends BaseService {
} }
return apprv.getOpKey(); return apprv.getOpKey();
} }
public OperationPlanFile selectOperationPlanFile(Integer parentKey, Integer fileSeq) {
return operationPlanFileRepository.findById(new OperationPlanFileId(parentKey,fileSeq)).orElse(null);
}

View File

@ -9,8 +9,8 @@
<if test='wrtUserSeq != null and wrtUserSeq != ""'> <if test='wrtUserSeq != null and wrtUserSeq != ""'>
and op.wrt_user_seq = #{wrtUserSeq} and op.wrt_user_seq = #{wrtUserSeq}
</if> </if>
<if test='wrtUserNm != null and wrtUserNm != ""'> <if test='opName != null and opName != ""'>
and op.wrt_user_nm like '%'||#{wrtUserNm}||'%' and op.op_name like '%'||#{opName}||'%'
</if> </if>
<if test='wrtOrgan != null and wrtOrgan != ""'> <if test='wrtOrgan != null and wrtOrgan != ""'>
and op.wrt_organ = #{wrtOrgan} and op.wrt_organ = #{wrtOrgan}
@ -52,10 +52,11 @@
<select id="selectOperationPlanList" resultType="OperationPlan" parameterType="OperationPlan"> <select id="selectOperationPlanList" resultType="OperationPlan" parameterType="OperationPlan">
select op.op_key, select op.op_key,
op_name, op_name,
op_birth , op_birth,
op_position , op_position,
op_phone , op_phone,
op_rank , op_rank,
op_state as status,
(select item_value from code_mgt where item_cd = op_state) as op_state, (select item_value from code_mgt where item_cd = op_state) as op_state,
wrt_user_seq, wrt_user_seq,
(select item_value from code_mgt where item_cd = wrt_organ) as wrt_organ, (select item_value from code_mgt where item_cd = wrt_organ) as wrt_organ,

View File

@ -48,6 +48,31 @@ $(document).on('click', '#editBtn', function (){
}) })
$(document).on('click', '#saveBtn', function (){ $(document).on('click', '#saveBtn', function (){
if(!$("#opName").val()){
alert("성명을 입력해주세요.");
$('#opName').focus();
return false;
}
if(!$("#opBirth").val()){
alert("생년월일을 입력해주세요.");
$('#opBirth').focus();
return false;
}
if(!$("#opPosition").val()){
alert("근무처를 입력해주세요.");
$('#opPosition').focus();
return false;
}
if(!$("#opPhone").val()){
alert("연락처를 입력해주세요.");
$('#opPhone').focus();
return false;
}
if(!$("#opRank").val()){
alert("등급을 입력해주세요.");
$('#opRank').focus();
return false;
}
if(confirm("저장하시겠습니까?")){ if(confirm("저장하시겠습니까?")){
saveOperationPlan('DST002'); saveOperationPlan('DST002');
} }

View File

@ -8,13 +8,13 @@
<form action="#" method="post" id="operationPlanEditForm"> <form action="#" method="post" id="operationPlanEditForm">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/> <input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/> <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<!-- <input type="hidden" name="mdKey" th:value="${md.mdKey}"> <input type="hidden" name="opKey" th:value="${op.opKey}">
<input type="hidden" name="wrtOrgan" th:value="${md.wrtOrgan}"> <input type="hidden" name="wrtOrgan" th:value="${op.wrtOrgan}">
<input type="hidden" name="wrtPart" th:value="${md.wrtPart}"> <input type="hidden" name="wrtPart" th:value="${op.wrtPart}">
<input type="hidden" name="wrtUserSeq" th:value="${md.wrtUserSeq}"> <input type="hidden" name="wrtUserSeq" th:value="${op.wrtUserSeq}">
<input type="hidden" name="wrtUserGrd" th:value="${md.wrtUserGrd}"> <input type="hidden" name="wrtUserGrd" th:value="${op.wrtUserGrd}">
<input type="hidden" name="wrtUserNm" th:value="${md.wrtUserNm}"> <input type="hidden" name="wrtUserNm" th:value="${op.wrtUserNm}">
<input type="hidden" name="wrtDt" id="wrtDt" th:value="${#temporals.format(md.wrtDt, 'yyyy-MM-dd HH:mm')}"> --> <input type="hidden" name="wrtDt" id="wrtDt" th:value="${#temporals.format(op.wrtDt, 'yyyy-MM-dd HH:mm')}">
<div class="row mb-1"> <div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center">작성자</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">작성자</label>
<div class="col-sm-2"> <div class="col-sm-2">
@ -37,7 +37,7 @@
<div class="col-sm-2"> <div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="opBirth" name="opBirth" th:value="${op.opBirth}" readonly> <input type="text" class="form-control form-control-sm" id="opBirth" name="opBirth" th:value="${op.opBirth}" readonly>
</div> </div>
<label for="affairType3" class="col-sm-1 col-form-label col-form-label-sm text-center">근무처(소속)</label> <label for="affairType3" class="col-sm-1 col-form-label col-form-label-sm text-center">*근무처(소속)</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="opPosition" name="opPosition" th:value="${op.opPosition}"> <input type="text" class="form-control form-control-sm" id="opPosition" name="opPosition" th:value="${op.opPosition}">
</div> </div>
@ -52,7 +52,7 @@
<div class="col-sm-2"> <div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="opCareer" name="opCareer" th:value="${op.opCareer}"> <input type="text" class="form-control form-control-sm" id="opCareer" name="opCareer" th:value="${op.opCareer}">
</div> </div>
<label for="affairType2" class="col-sm-1 col-form-label col-form-label-sm text-center">연락처</label> <label for="affairType2" class="col-sm-1 col-form-label col-form-label-sm text-center">*연락처</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="opPhone" name="opPhone" th:value="${op.opPhone}"> <input type="text" class="form-control form-control-sm" id="opPhone" name="opPhone" th:value="${op.opPhone}">
</div> </div>
@ -63,7 +63,7 @@
<div class="col-sm-5"> <div class="col-sm-5">
<input type="text" class="form-control form-control-sm" id="opAddress" name="opAddress" th:value="${op.opAddress}"> <input type="text" class="form-control form-control-sm" id="opAddress" name="opAddress" th:value="${op.opAddress}">
</div> </div>
<label for="affairType2" class="col-sm-1 col-form-label col-form-label-sm text-center">등급</label> <label for="affairType2" class="col-sm-1 col-form-label col-form-label-sm text-center">*등급</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="opRank" name="opRank" th:value="${op.opRank}"> <input type="text" class="form-control form-control-sm" id="opRank" name="opRank" th:value="${op.opRank}">
</div> </div>
@ -77,25 +77,25 @@
</div> </div>
<hr> <hr>
<div class="row mb-1"> <div class="row mb-1">
<label for="hashTags" class="col-sm-1 col-form-label col-form-label-sm text-center">*대상목표<br><br>위치</label> <label for="hashTags" class="col-sm-1 col-form-label col-form-label-sm text-center">대상목표<br><br>위치</label>
<div class="col-sm-11"> <div class="col-sm-11">
<textarea id="targetLocation" name="targetLocation" rows="5" cols="139" th:utext="${op.targetLocation}"></textarea> <textarea id="targetLocation" name="targetLocation" rows="5" cols="139" th:utext="${op.targetLocation}"></textarea>
</div> </div>
</div> </div>
<div class="row mb-1"> <div class="row mb-1">
<label for="hashTags" class="col-sm-1 col-form-label col-form-label-sm text-center">*취약성 분석</label> <label for="hashTags" class="col-sm-1 col-form-label col-form-label-sm text-center">취약성 분석</label>
<div class="col-sm-11"> <div class="col-sm-11">
<textarea id="vulnerabilityAnalyze" name="vulnerabilityAnalyze" rows="5" cols="139" th:utext="${op.vulnerabilityAnalyze}"></textarea> <textarea id="vulnerabilityAnalyze" name="vulnerabilityAnalyze" rows="5" cols="139" th:utext="${op.vulnerabilityAnalyze}"></textarea>
</div> </div>
</div> </div>
<div class="row mb-1"> <div class="row mb-1">
<label for="hashTags" class="col-sm-1 col-form-label col-form-label-sm text-center">*적격성 분석</label> <label for="hashTags" class="col-sm-1 col-form-label col-form-label-sm text-center">적격성 분석</label>
<div class="col-sm-11"> <div class="col-sm-11">
<textarea id="eligibilityAnalyze" name="eligibilityAnalyze" rows="5" cols="139" th:utext="${op.eligibilityAnalyze}"></textarea> <textarea id="eligibilityAnalyze" name="eligibilityAnalyze" rows="5" cols="139" th:utext="${op.eligibilityAnalyze}"></textarea>
</div> </div>
</div> </div>
<div class="row mb-1"> <div class="row mb-1">
<label for="hashTags" class="col-sm-1 col-form-label col-form-label-sm text-center">*중점<br>수집사항</label> <label for="hashTags" class="col-sm-1 col-form-label col-form-label-sm text-center">중점<br>수집사항</label>
<div class="col-sm-11"> <div class="col-sm-11">
<textarea id="focusCollection" name="focusCollection" rows="5" cols="139" th:utext="${op.focusCollection}"></textarea> <textarea id="focusCollection" name="focusCollection" rows="5" cols="139" th:utext="${op.focusCollection}"></textarea>
</div> </div>

View File

@ -11,7 +11,7 @@
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/> <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<div class="row justify-content-between"> <div class="row justify-content-between">
<div class="col-auto"><h4>운영계획서</h4></div> <div class="col-auto"><h4>운영계획서</h4></div>
<div class="col-auto"><p class="mb-0 mt-2">첩보수집활동 > 외사첩보망 견문관리 > 계획수립</p></div> <div class="col-auto"><p class="mb-0 mt-2">첩보수집활동 > 외사첩보망 견문관리 > 운영계획</p></div>
</div> </div>
<div class="row mx-0"> <div class="row mx-0">
<div class="col-12 card bg-light text-center"> <div class="col-12 card bg-light text-center">
@ -28,7 +28,7 @@
</li> </li>
</ul> </ul>
<div class="tab-content bg-white border border-top-0 p-2" id="planContent"> <div class="tab-content bg-white border border-top-0 p-2" id="planContent">
<!-- <form method="get" th:action="${searchUrl}"> <form method="get" th:action="${searchUrl}">
<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 py-1"> <div class="row justify-content-between py-1">
<div class="col-auto"> <div class="col-auto">
@ -42,7 +42,7 @@
<div class="row"> <div class="row">
<div class="col-11"> <div class="col-11">
<div class="row justify-content-end pb-1" th:if="${accessAuth eq 'ACC003'}"> <div class="row justify-content-end pb-1" th:if="${accessAuth eq 'ACC003'}">
<div class="col-2"> <!-- <div class="col-2">
<select class="form-select form-select-sm" name="wrtOrgan"> <select class="form-select form-select-sm" name="wrtOrgan">
<option value="">관서 선택</option> <option value="">관서 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}"> <th:block th:each="commonCode:${session.commonCode.get('OG')}">
@ -51,30 +51,21 @@
</th:block> </th:block>
</th:block> </th:block>
</select> </select>
</div> </div> -->
<div class="col-2"> <div class="col-2">
<input type="text" class="form-control form-control-sm" placeholder="작성자" name="wrtUserNm" th:value="${searchParams.wrtUserNm}"> <input type="text" class="form-control form-control-sm" placeholder="협력자 성명" name="opName" th:value="${searchParams.opName}">
</div> </div>
</div> <!-- <div class="col-2">
<div class="row justify-content-end"> <select class="form-select form-select-sm" name="opState">
<div class="col-2">
<input type="text" class="form-control form-control-sm" placeholder="제목" name="mdTitle" th:value="${searchParams.mdTitle}">
</div>
<div class="col-2">
<select class="form-select form-select-sm" name="mdState">
<option value="">상태 선택</option> <option value="">상태 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('DST')}"> <th:block th:each="commonCode:${session.commonCode.get('DST')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.mdState}"></option> <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.opState}"></option>
</th:block> </th:block>
</select> </select>
</div> </div> -->
<div class="col-4"> <div class="col-4">
<div class="input-group input-daterange" id="dateSelectorDiv"> <div class="input-group input-daterange" id="dateSelectorDiv">
<select class="form-select form-select-sm w-30" name="dateSelector"> 등록일:
<option value="">조건선택</option>
<option value="mdDt" th:selected="${searchParams.dateSelector eq 'mdDt'}">시행일</option>
<option value="wrtDt" th:selected="${searchParams.dateSelector eq 'wrtDt'}">작성일</option>
</select>
<input type="text" class="form-control form-control-sm w-35" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" readonly th:value="${searchParams.startDate}"> <input type="text" class="form-control form-control-sm w-35" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" readonly th:value="${searchParams.startDate}">
<input type="text" class="form-control form-control-sm w-35" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" readonly th:value="${searchParams.endDate}"> <input type="text" class="form-control form-control-sm w-35" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" readonly th:value="${searchParams.endDate}">
</div> </div>
@ -87,7 +78,7 @@
</div> </div>
</div> </div>
</div> </div>
</form> --> </form>
<div class="row justify-content-start"> <div class="row justify-content-start">
<div class="col-12"> <div class="col-12">
<table class="table table-sm table-bordered table-hover"> <table class="table table-sm table-bordered table-hover">
@ -114,7 +105,8 @@
<td th:text="${list.opPhone}"></td> <td th:text="${list.opPhone}"></td>
<td th:text="${list.opRank}"></td> <td th:text="${list.opRank}"></td>
<td th:text="${#temporals.format(list.wrtDt, 'yyyy-MM-dd HH:mm')}"></td> <td th:text="${#temporals.format(list.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
<td th:text="${list.opState}"></td> <td th:if="${list.status eq 'DST004'} or ${list.status eq 'DST006'}">운영중</td>
<td th:unless="${list.status eq 'DST004'} or ${list.status eq 'DST006'}" th:text="${list.opState}"></td>
<td th:text="${list.opState}"></td> <td th:text="${list.opState}"></td>
<th:block> <th:block>
<input type="hidden" class="opKey" th:value="${list.opKey}"> <input type="hidden" class="opKey" th:value="${list.opKey}">

View File

@ -107,7 +107,7 @@
<th:block th:unless="${#lists.isEmpty(op.fileList)}"> <th:block th:unless="${#lists.isEmpty(op.fileList)}">
<th:block th:each="file:${op.fileList}"> <th:block th:each="file:${op.fileList}">
<tr class="fileInfoTr"> <tr class="fileInfoTr">
<td><a href="#" class="fileDownLink" data-board="affair" <td><a href="#" class="fileDownLink" data-board="operationPlan"
th:data-parentkey="${file.opKey}" th:data-fileseq="${file.fileSeq}" th:text="|${file.origNm}.${file.fileExtn}|"></a></td> th:data-parentkey="${file.opKey}" th:data-fileseq="${file.fileSeq}" th:text="|${file.origNm}.${file.fileExtn}|"></a></td>
<td th:text="${file.fileSize}"></td> <td th:text="${file.fileSize}"></td>
</tr> </tr>

View File

@ -86,7 +86,7 @@
<th:block th:unless="${#lists.isEmpty(md.fileList)}"> <th:block th:unless="${#lists.isEmpty(md.fileList)}">
<th:block th:each="file:${md.fileList}"> <th:block th:each="file:${md.fileList}">
<tr class="fileInfoTr"> <tr class="fileInfoTr">
<td><a href="#" class="fileDownLink" data-board="affair" <td><a href="#" class="fileDownLink" data-board="designation"
th:data-parentkey="${file.mdKey}" th:data-fileseq="${file.fileSeq}" th:text="|${file.origNm}.${file.fileExtn}|"></a></td> th:data-parentkey="${file.mdKey}" th:data-fileseq="${file.fileSeq}" th:text="|${file.origNm}.${file.fileExtn}|"></a></td>
<td th:text="${file.fileSize}"></td> <td th:text="${file.fileSize}"></td>
</tr> </tr>