방첩공작 수정.

사건목록 작업중.
master
강석 최 2023-01-06 14:56:49 +09:00
parent e7288d4ccd
commit b8772b7ccd
20 changed files with 267 additions and 269 deletions

View File

@ -63,8 +63,6 @@ public class CounterIntelligenceController {
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/ciWorkList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
mav.addObject("atCodeList", codeMgtService.selectCodeMgtList("AT"));
mav.addObject("at2CodeList", ciWork.getCiwKey()!=null?codeMgtService.selectCodeMgtList(ciWork.getArrestType1()):null);
mav.addObject("ciWork", ciWork);
return mav;
}

View File

@ -6,6 +6,7 @@ import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCase;
import com.dbnt.faisp.main.counterIntelligence.activityCase.service.ActivityCaseService;
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceWork;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.main.userInfo.service.UserInfoService;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
@ -23,6 +24,7 @@ public class ActivityCaseController {
private final ActivityCaseService activityCaseService;
private final AuthMgtService authMgtService;
private final CodeMgtService codeMgtService;
private final UserInfoService userInfoService;
@GetMapping("/activityCaseList")
public ModelAndView activityCaseListPage(@AuthenticationPrincipal UserInfo loginUser, ActivityCase activityCase){
@ -49,7 +51,6 @@ public class ActivityCaseController {
public ModelAndView activityCaseEditModal(@AuthenticationPrincipal UserInfo loginUser, ActivityCase activityCase){
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/activityCaseEditModal");
mav.addObject("ciwrCodeList", codeMgtService.selectCodeMgtList("CIWR"));
if(activityCase.getCaseKey()==null){
activityCase.setWrtOrgan(loginUser.getOgCd());
activityCase.setWrtPart(loginUser.getOfcCd());
@ -67,6 +68,20 @@ public class ActivityCaseController {
return mav;
}
@GetMapping("/getSuspectDiv")
public ModelAndView suspectDiv(){
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/suspectDiv");
return mav;
}
@GetMapping("/getOfficerDiv")
public ModelAndView officerDiv(Integer userSeq){
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/officerDiv");
mav.addObject("officer", userInfoService.selectUserInfo(userSeq));
mav.addObject("acoList", codeMgtService.selectCodeMgtList("ACO"));
return mav;
}
@GetMapping("/activityCaseViewModal")
public ModelAndView activityCaseViewModal(@AuthenticationPrincipal UserInfo loginUser, ActivityCase activityCase){
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/activityCaseViewModal");

View File

@ -30,30 +30,16 @@ public class ActivityCase extends BaseModel {
private Integer caseKey;
@Column(name = "status")
private String status;
@Column(name = "division")
private String division;
@Column(name = "merging")
private String merging;
@Column(name = "receipt_num")
private String receiptNum;
@Column(name = "receipt_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime receiptDt;
@Column(name = "case_num")
private String caseNum;
@Column(name = "result_num")
private String resultNum;
@Column(name = "result_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime resultDt;
@Column(name = "receipt_clue")
private String receiptClue;
@Column(name = "crime")
private String crime;
@Column(name = "court")
private String court;
@Column(name = "memo")
private String memo;
@Column(name = "etc")
private String etc;
@Column(name = "wrt_organ")
@ -77,7 +63,7 @@ public class ActivityCase extends BaseModel {
@Transient
private List<ActivityCaseOfficer> officerList;
@Transient
private List<ActivityCasePeople> peopleList;
private List<ActivityCaseSuspect> suspectList;
@Transient
private List<MultipartFile> multipartFileList;
}

View File

@ -1,45 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.model;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.io.Serializable;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "activity_case_file")
@IdClass(ActivityCasePeople.ActivityCasePeopleId.class)
public class ActivityCasePeople {
@Id
@Column(name = "case_key")
private Integer caseKey;
@Id
@Column(name = "people_seq")
private Integer peopleSeq;
@Column(name = "orig_nm")
private String origNm;
@Column(name = "conv_nm")
private String convNm;
@Column(name = "file_extn")
private String fileExtn;
@Column(name = "file_size")
private String fileSize;
@Column(name = "save_path")
private String savePath;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class ActivityCasePeopleId implements Serializable {
private Integer caseKey;
private Integer peopleSeq;
}
}

View File

@ -0,0 +1,54 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.model;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDate;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "activity_case_suspect")
@IdClass(ActivityCaseSuspect.ActivityCaseSuspectId.class)
public class ActivityCaseSuspect {
@Id
@Column(name = "case_key")
private Integer caseKey;
@Id
@Column(name = "suspect_seq")
private Integer suspectSeq;
@Column(name = "type")
private String type;
@Column(name = "name")
private String name;
@Column(name = "sex")
private String sex;
@Column(name = "birth_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate birthDate;
@Column(name = "phone")
private String phone;
@Column(name = "job")
private String job;
@Column(name = "area")
private String area;
@Column(name = "etc")
private String etc;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class ActivityCaseSuspectId implements Serializable {
private Integer caseKey;
private Integer suspectSeq;
}
}

View File

@ -1,13 +1,13 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.repository;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCasePeople;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseSuspect;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface ActivityCasePeopleRepository extends JpaRepository<ActivityCasePeople, ActivityCasePeople.ActivityCasePeopleId> {
public interface ActivityCaseSuspectRepository extends JpaRepository<ActivityCaseSuspect, ActivityCaseSuspect.ActivityCaseSuspectId> {
void deleteByCaseKey(Integer caseKey);
}

View File

@ -6,15 +6,11 @@ import com.dbnt.faisp.main.counterIntelligence.activityCase.mapper.ActivityCaseM
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCase;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseFile;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseOfficer;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCasePeople;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseSuspect;
import com.dbnt.faisp.main.counterIntelligence.activityCase.repository.ActivityCaseFileRepository;
import com.dbnt.faisp.main.counterIntelligence.activityCase.repository.ActivityCaseOfficerRepository;
import com.dbnt.faisp.main.counterIntelligence.activityCase.repository.ActivityCasePeopleRepository;
import com.dbnt.faisp.main.counterIntelligence.activityCase.repository.ActivityCaseSuspectRepository;
import com.dbnt.faisp.main.counterIntelligence.activityCase.repository.ActivityCaseRepository;
import com.dbnt.faisp.main.counterIntelligence.mapper.CounterIntelligenceMapper;
import com.dbnt.faisp.main.counterIntelligence.model.*;
import com.dbnt.faisp.main.counterIntelligence.repository.*;
import com.dbnt.faisp.main.hashTag.service.HashTagService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -29,7 +25,7 @@ import java.util.UUID;
public class ActivityCaseService extends BaseService {
private final ActivityCaseRepository activityCaseRepository;
private final ActivityCaseFileRepository acfRepository;
private final ActivityCasePeopleRepository acpRepository;
private final ActivityCaseSuspectRepository acsRepository;
private final ActivityCaseOfficerRepository acoRepository;
private final ActivityCaseMapper activityCaseMapper;
@ -50,7 +46,7 @@ public class ActivityCaseService extends BaseService {
@Transactional
public Integer saveActivityCase(ActivityCase activityCase, List<Integer> deleteFileSeq) {
Integer caseKey = activityCaseRepository.save(activityCase).getCaseKey();
saveActivityCasePeople(caseKey, activityCase.getPeopleList());
saveActivityCaseSuspect(caseKey, activityCase.getSuspectList());
saveActivityCaseOfficer(caseKey, activityCase.getOfficerList());
if(deleteFileSeq != null && deleteFileSeq.size()>0){
deleteActivityCaseFile(caseKey, deleteFileSeq);
@ -62,9 +58,9 @@ public class ActivityCaseService extends BaseService {
return caseKey;
}
private void saveActivityCasePeople(Integer caseKey, List<ActivityCasePeople> peopleList) {
if(peopleList==null){
acpRepository.deleteByCaseKey(caseKey);
private void saveActivityCaseSuspect(Integer caseKey, List<ActivityCaseSuspect> suspectList) {
if(suspectList==null){
acsRepository.deleteByCaseKey(caseKey);
}else{
}

View File

@ -33,6 +33,9 @@ public class CounterIntelligenceWork extends BaseModel {
@Column(name = "work_start_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate workStartDate;
@Column(name = "work_plan_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate workPlanDate;
@Column(name = "work_end_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate workEndDate;
@ -42,10 +45,6 @@ public class CounterIntelligenceWork extends BaseModel {
@Column(name = "re_rating_date2")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate reRatingDate2;
@Column(name = "arrest_type1")
private String arrestType1;
@Column(name = "arrest_type2")
private String arrestType2;
@Column(name = "title")
private String title;
@Column(name = "summary_info")

View File

@ -38,7 +38,7 @@ spring.thymeleaf.mode=HTML
#Datasource Configuration
spring.sql.init.encoding=utf-8
#maximum-pool-size: CPU core count
spring.datasource.hikari.maximum-pool-size=4
spring.datasource.hikari.maximum-pool-size=8
#postgresql
spring.datasource-main.driverClassName=org.postgresql.Driver
spring.datasource-main.jdbcUrl=jdbc:postgresql://10.187.142.13:5432/experdb

View File

@ -46,8 +46,6 @@
a.work_end_date,
a.re_rating_date1,
a.re_rating_date2,
a.arrest_type1,
a.arrest_type2,
a.title,
a.wrt_organ,
a.wrt_part,

View File

@ -13,12 +13,6 @@
<if test='workRating != null and workRating != ""'>
and a.work_rating = #{workRating}
</if>
<if test='arrestType1 != null and arrestType1 != ""'>
and a.arrest_type1 = #{arrestType1}
</if>
<if test='arrestType2 != null and arrestType2 != ""'>
and a.arrest_type2 = #{arrestType2}
</if>
<if test='title != null and title != ""'>
and a.title like '%'||#{title}||'%'
</if>
@ -86,8 +80,6 @@
a.work_end_date,
a.re_rating_date1,
a.re_rating_date2,
a.arrest_type1,
a.arrest_type2,
a.title,
a.wrt_organ,
a.wrt_part,
@ -119,10 +111,10 @@
<select id="selectCiWorkStatisticsList" resultType="ciWorkStatistics" parameterType="ciWorkStatistics">
select work_rating,
count(case when work_start_date > (#{year}||'-01-01')::date and work_start_date &lt; (#{year}+1||'-01-01')::date then 1 end) as newWorkCnt,
count(case when work_end_date > (#{year}+1||'-01-01')::date and work_end_date &lt; (#{year}+2||'-01-01')::date then 1 end) as doingWorkCnt,
count(case when work_start_date > (#{year}-1||'-01-01')::date and work_start_date &lt; (#{year}||'-01-01')::date and work_end_date > (#{year}||'-01-01')::date and work_end_date &lt; (#{year}+1||'-01-01')::date then 1 end) as prevYearWorkEndCnt,
count(case when work_start_date > (#{year}||'-01-01')::date and work_start_date &lt; (#{year}+1||'-01-01')::date and work_end_date > (#{year}||'-01-01')::date and work_end_date &lt; (#{year}+1||'-01-01')::date then 1 end) as thisYearWorkEndCnt
count(case when work_start_date >= (#{year}||'-01-01')::date and work_start_date &lt;= (#{year}+1||'-01-01')::date then 1 end) as newWorkCnt,
count(case when work_end_date is null or (work_end_date >= (#{year}+1||'-01-01')::date and work_end_date &lt; (#{year}+2||'-01-01')::date) then 1 end) as doingWorkCnt,
count(case when work_start_date > (#{year}-1||'-01-01')::date and work_start_date &lt;= (#{year}||'-01-01')::date and work_end_date >= (#{year}||'-01-01')::date and work_end_date &lt; (#{year}+1||'-01-01')::date then 1 end) as prevYearWorkEndCnt,
count(case when work_start_date >= (#{year}||'-01-01')::date and work_start_date &lt;= (#{year}+1||'-01-01')::date and work_end_date >= (#{year}||'-01-01')::date and work_end_date &lt; (#{year}+1||'-01-01')::date then 1 end) as thisYearWorkEndCnt
from counter_intelligence_work a
WHERE a.status = 'DST007'
group by work_rating

View File

@ -3,10 +3,11 @@ $(document).on('click', '#addActivityCaseBtn', function (){
getActivityCaseEditModal(null);
})
$(document).on('click', '#peopleAddBtn', function (){
getPeopleDiv()
$(document).on('click', '#suspectAddBtn', function (){
getSuspectDiv()
})
$(document).on('click', '#officerAddBtn', function (){
getUserModal
getOfficerDiv()
})
@ -49,12 +50,32 @@ function getActivityCaseEditModal(caseKey){
});
}
function getPeopleDiv(){
function getSuspectDiv(){
$.ajax({
url: '/counterIntelligence/getSuspectDiv',
type: 'GET',
dataType:"html",
success: function(html){
$("#suspectHome").append(html)
},
error:function(){
}
});
}
function getOfficerDiv(){
$.ajax({
url: '/counterIntelligence/getOfficerDiv',
type: 'GET',
dataType:"html",
success: function(html){
$("#officerHome").append(html)
},
error:function(){
}
});
}
function getActivityCaseViewModal(caseKey){
$.ajax({
@ -160,14 +181,6 @@ function contentCheck(){
alert("등급을 선택해주세요.")
return false;
}
if(!$("#arrestType1").val()){
alert("검거유형1을 선택해주세요.")
return false;
}
if(!$("#arrestType2").val()){
alert("검거유형2를 선택해주세요.")
return false;
}
if(!$("#title").val()){
alert("공작명을 입력해주세요.")
return false;

View File

@ -12,10 +12,6 @@ $(document).on('click', '#addCiWorkBtn', function (){
getCiWorkEditModal(null);
})
$(document).on('change', '#arrestType1', function (){
getArrestType2Option(this.value);
})
$(document).on('click', '#saveTempBtn,#saveCiWorkBtn', function(){
saveCiWork($(this).attr("data-status"));
})
@ -144,8 +140,8 @@ function contentCheck(){
alert("착수일을 입력해주세요.")
return false;
}
if(!$("#workEndDate").val()){
alert("종결일을 입력해주세요.")
if(!$("#workPlanDate").val()){
alert("예정일을 입력해주세요.")
return false;
}
if(!$("#reRatingDate1").val()){
@ -160,14 +156,6 @@ function contentCheck(){
alert("등급을 선택해주세요.")
return false;
}
if(!$("#arrestType1").val()){
alert("검거유형1을 선택해주세요.")
return false;
}
if(!$("#arrestType2").val()){
alert("검거유형2를 선택해주세요.")
return false;
}
if(!$("#title").val()){
alert("공작명을 입력해주세요.")
return false;
@ -178,20 +166,3 @@ function contentCheck(){
}
return true;
}
function getArrestType2Option(categoryCd){
$.ajax({
url: '/selectBoxOptions',
data: {categoryCd: categoryCd},
type: 'GET',
dataType:"html",
success: function(html){
const arrestType2 = $("#arrestType2");
arrestType2.empty().append(html);
},
error:function(){
}
});
}

View File

@ -104,28 +104,14 @@
<thead>
<tr class="table-secondary">
<th>순번</th>
<th>첨부파일</th>
<th>경과</th>
<th>구분</th>
<th>병합</th>
<th>접수번호</th>
<th>사건번호</th>
<th>접수단서</th>
<th>피(혐)의자</th>
<th>죄명</th>
<th>피해자</th>
<th>진행상태</th>
<th>지휘서/메모</th>
<th>종결번호</th>
<th>결정</th>
<th>요구/요청</th>
<th>이의</th>
<th>자체재개</th>
<th>메모</th>
<th>정수사관</th>
<th>부수사관</th>
<th>주책임관</th>
<th>접수번호</th>
<th>접수일</th>
<th>접수단서</th>
<th>혐의자</th>
<th>담당관</th>
<th>비고</th>
<th>첨부파일</th>
</tr>
</thead>
<tbody class="table-group-divider">
@ -228,5 +214,30 @@
</div>
</div>
</div>
<div class="modal fade" id="userModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="userModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header bg-dark">
<h5 class="modal-title text-white" id="menuModalLabel">담당관 검색</h5>
<input type="hidden" id="modalUrl" value="/modal/userModal">
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body text-nowrap" id="subModalBody">
<div class="row">
<div class="col-12">
<form method="get" action="#" id="modalSearchForm">
<input type="hidden" name="pageIndex" id="modalPageIndex" value="1">
<input type="hidden" name="rowCnt" value="10">
</form>
</div>
</div>
</div>
<div class="modal-footer bg-light">
<button type="button" class="btn btn-primary" id="getMenuBtn">추가</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
</div>
</div>
</div>
</div>
</div>
</html>

View File

@ -34,20 +34,6 @@
<input type="text" class="form-control form-control-sm" id="wrtDt" name="wrtDt" th:value="${#temporals.format(activityCase.wrtDt, 'yyyy-MM-dd HH:mm')}" readonly>
</div>
</div>
<div class="row mb-1">
<label for="receiptNum" class="col-sm-1 col-form-label col-form-label-sm text-center">경과</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="receiptNum" name="receiptNum" th:value="${activityCase.receiptNum}">
</div>
<label for="receiptNum" class="col-sm-1 col-form-label col-form-label-sm text-center">구분</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="receiptNum" name="receiptNum" th:value="${activityCase.receiptNum}">
</div>
<label for="receiptNum" class="col-sm-1 col-form-label col-form-label-sm text-center">병합</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="receiptNum" name="receiptNum" th:value="${activityCase.receiptNum}">
</div>
</div>
<div class="row mb-1">
<label for="receiptNum" class="col-sm-1 col-form-label col-form-label-sm text-center">접수번호</label>
<div class="col-sm-2">
@ -61,62 +47,46 @@
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="receiptNum" name="receiptNum" th:value="${activityCase.receiptNum}">
</div>
</div>
<div class="row mb-1">
<label for="resultNum" class="col-sm-1 col-form-label col-form-label-sm text-center">관할법원</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="resultNum" name="resultNum" th:value="${activityCase.resultNum}">
</div>
<label for="receiptNum" class="col-sm-1 col-form-label col-form-label-sm text-center">사건번호</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="receiptNum" name="receiptNum" th:value="${activityCase.receiptNum}">
</div>
<label for="resultNum" class="col-sm-1 col-form-label col-form-label-sm text-center">종결번호</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="resultNum" name="resultNum" th:value="${activityCase.resultNum}">
</div>
<label for="resultDt" class="col-sm-1 col-form-label col-form-label-sm text-center">종결일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm dateSelector" id="resultDt" name="resultDt" th:value="${#temporals.format(activityCase.resultDt, 'yyyy-MM-dd')}" readonly>
</div>
</div>
<div class="row mb-1 justify-content-center">
<label for="summaryInfo" class="col-sm-1 col-form-label col-form-label-sm text-center">사건개요</label>
<label for="summaryInfo" class="col-sm-1 col-form-label col-form-label-sm text-center">첩보개요</label>
<div class="col-sm-11">
<textarea class="form-control form-control-sm" id="summaryInfo" name="summaryInfo"></textarea>
</div>
</div>
<div class="row mb-1">
<label for="summaryInfo" class="col-sm-1 col-form-label col-form-label-sm text-center">
관련
<button type="button" class="border-0 bg-white" id="peopleAddBtn">
혐의자
<button type="button" class="border-0 bg-white" id="suspectAddBtn">
<i class="bi bi-plus-square text-primary"></i>
</button>
</label>
<div class="col-sm-11 border">
<div class="row" id="peopleHome">
<div class="col-sm-11">
<div class="border h-100">
<div class="row" id="suspectHome">
</div>
</div>
</div>
</div>
<div class="row mb-1">
<label for="summaryInfo" class="col-sm-1 col-form-label col-form-label-sm text-center">
수사
담당
<button type="button" class="border-0 bg-white" id="officerAddBtn">
<i class="bi bi-plus-square text-primary"></i>
</button>
</label>
<div class="col-sm-11 border">
<div class="col-sm-11">
<div class="border h-100">
<div class="row" id="officerHome">
</div>
</div>
</div>
<div class="row mb-1">
<label for="summaryInfo" class="col-sm-1 col-form-label col-form-label-sm text-center">지휘서/메모</label>
<div class="col-sm-11">
<input type="text" class="form-control form-control-sm" id="receiptNum" name="receiptNum" th:value="${activityCase.receiptNum}">
</div>
</div>
<div class="row mb-1">
<label for="summaryInfo" class="col-sm-1 col-form-label col-form-label-sm text-center">비고</label>

View File

@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="row my-1 officerRow">
<input type="hidden" class="userSeq" th:value="${officer.userSeq}">
<input type="hidden" class="ogCd" th:value="${officer.ogCd}">
<input type="hidden" class="ofcCd" th:value="${officer.ofcCd}">
<input type="hidden" class="titleCd" th:value="${officer.titleCd}">
<input type="hidden" class="userNm" th:value="${officer.userNm}">
<div class="col-2">
<select class="form-select form-select-sm">
<option value="">선택</option>
<th:block th:each="code:${acoList}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
</th:block>
</select>
</div>
<div class="col-9">
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<th:block th:if="${commonCode.itemCd eq officer.ogCd}" th:text="${commonCode.itemValue}"></th:block>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('OFC')}">
<th:block th:if="${commonCode.itemCd eq officer.ofcCd}" th:text="${commonCode.itemValue}"></th:block>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('JT')}">
<th:block th:if="${commonCode.itemCd eq officer.titleCd}" th:text="|${commonCode.itemValue} ${officer.userNm}|"></th:block>
</th:block>
<th:block th:text="${officer.userNm}"></th:block>
</div>
<div class="col-1">
<button type="button" class="btn btn-sm btn-outline-danger rowDeleteBtn"><i class="bi bi-x"></i></button>
</div>
</div>
</html>

View File

@ -0,0 +1,59 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="col-sm-12 suspectDiv">
<div class="row mx-2 my-1">
<div class="col-12 mb-1">
<div class="row">
<label for="asdf" class="col-sm-1 col-form-label col-form-label-sm text-center">분류</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="asdf">
</div>
<label for="asdf" class="col-sm-1 col-form-label col-form-label-sm text-center">성명</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="asdf">
</div>
<label for="asdf" class="col-sm-1 col-form-label col-form-label-sm text-center">성별</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="asdf">
</div>
<label for="asdf" class="col-sm-1 col-form-label col-form-label-sm text-center">생년월일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="asdf">
</div>
</div>
</div>
<div class="col-12 mb-1">
<div class="row">
<label for="asdf" class="col-sm-1 col-form-label col-form-label-sm text-center">핸드폰</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="asdf">
</div>
<label for="asdf" class="col-sm-1 col-form-label col-form-label-sm text-center">주소</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="asdf">
</div>
<label for="asdf" class="col-sm-1 col-form-label col-form-label-sm text-center">직업</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="asdf">
</div>
<label for="asdf" class="col-sm-1 col-form-label col-form-label-sm text-center">등록기준지</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" id="asdf">
</div>
</div>
</div>
<div class="col-12 mb-1">
<div class="row">
<label for="asdf" class="col-sm-1 col-form-label col-form-label-sm text-center">비고</label>
<div class="col-sm-10">
<input type="text" class="form-control form-control-sm" id="asdf">
</div>
<div class="col-1">
<button type="button" class="btn btn-sm btn-outline-danger rowDeleteBtn"><i class="bi bi-x"></i></button>
</div>
</div>
</div>
</div>
<hr class="my-1 mx-2">
</div>
</html>

View File

@ -62,26 +62,10 @@
</select>
</div>
<div class="col-2">
<select class="form-select form-select-sm" name="arrestType1">
<option value="">검거유형1</option>
<th:block th:each="code:${session.commonCode.get('AT')}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.arrestType1}"></option>
</th:block>
</select>
</div>
<div class="col-2">
<select class="form-select form-select-sm" name="arrestType2">
<option value="">검거유형2</option>
<th:block th:each="code:${session.commonCode.get(arrestType1)}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.arrestType2}"></option>
</th:block>
</select>
<input type="text" class="form-control form-control-sm" placeholder="제목" name="title" th:value="${searchParams.title}">
</div>
</div>
<div class="row justify-content-end">
<div class="col-2">
<input type="text" class="form-control form-control-sm" placeholder="제목" name="title" th:value="${searchParams.title}">
</div>
<div class="col-2">
<input type="text" class="form-control form-control-sm" placeholder="해시태그" name="hashTags" th:value="${searchParams.hashTags}">
</div>
@ -116,8 +100,6 @@
<thead>
<tr class="table-secondary">
<th>등급</th>
<th>검거유형1</th>
<th>검거유형2</th>
<th>공작명</th>
<th>착수일<br>/종결일</th>
<th>관서</th>
@ -136,16 +118,6 @@
<th:block th:if="${code.itemCd eq ciWork.workRating}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td>
<th:block th:each="code:${session.commonCode.get('AT')}">
<th:block th:if="${code.itemCd eq ciWork.arrestType1}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td>
<th:block th:each="code:${session.commonCode.get(ciWork.arrestType1)}">
<th:block th:if="${code.itemCd eq ciWork.arrestType2}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td>
<th:block th:if="${ciWork.status eq 'DST002'}">[임시]</th:block>
<th:block th:text="${ciWork.title}"></th:block>

View File

@ -45,18 +45,14 @@
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm dateSelector" id="workStartDate" name="workStartDate" th:value="${#temporals.format(ciWork.workStartDate, 'yyyy-MM-dd')}" readonly>
</div>
<label for="workEndDate" class="col-sm-1 col-form-label col-form-label-sm text-center">종결일(예정)</label>
<label for="workPlanDate" class="col-sm-1 col-form-label col-form-label-sm text-center">예정일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm dateSelector" id="workPlanDate" name="workPlanDate" th:value="${#temporals.format(ciWork.workPlanDate, 'yyyy-MM-dd')}" readonly>
</div>
<label for="workEndDate" class="col-sm-1 col-form-label col-form-label-sm text-center">종결일</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm dateSelector" id="workEndDate" name="workEndDate" th:value="${#temporals.format(ciWork.workEndDate, 'yyyy-MM-dd')}" readonly>
</div>
<label for="reRatingDate1" class="col-sm-1 col-form-label col-form-label-sm text-center">1차재평가</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm dateSelector" id="reRatingDate1" name="reRatingDate1" th:value="${#temporals.format(ciWork.reRatingDate1, 'yyyy-MM-dd')}" readonly>
</div>
<label for="reRatingDate2" class="col-sm-1 col-form-label col-form-label-sm text-center">2차재평가</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm dateSelector" id="reRatingDate2" name="reRatingDate2" th:value="${#temporals.format(ciWork.reRatingDate2, 'yyyy-MM-dd')}" readonly>
</div>
</div>
<div class="row mb-1">
<label for="workRating" class="col-sm-1 col-form-label col-form-label-sm text-center">등급</label>
@ -68,23 +64,13 @@
</th:block>
</select>
</div>
<label for="arrestType1" class="col-sm-1 col-form-label col-form-label-sm text-center">검거유형1</label>
<label for="reRatingDate1" class="col-sm-1 col-form-label col-form-label-sm text-center">1차재평가</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" id="arrestType1" name="arrestType1">
<option value="">선택해주세요.</option>
<th:block th:each="code:${atCodeList}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq ciWork.arrestType1}"></option>
</th:block>
</select>
<input type="text" class="form-control form-control-sm dateSelector" id="reRatingDate1" name="reRatingDate1" th:value="${#temporals.format(ciWork.reRatingDate1, 'yyyy-MM-dd')}" readonly>
</div>
<label for="arrestType2" class="col-sm-1 col-form-label col-form-label-sm text-center">검거유형2</label>
<label for="reRatingDate2" class="col-sm-1 col-form-label col-form-label-sm text-center">2차재평가</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" id="arrestType2" name="arrestType2">
<option value="">선택해주세요.</option>
<th:block th:each="code:${at2CodeList}">
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq ciWork.arrestType2}"></option>
</th:block>
</select>
<input type="text" class="form-control form-control-sm dateSelector" id="reRatingDate2" name="reRatingDate2" th:value="${#temporals.format(ciWork.reRatingDate2, 'yyyy-MM-dd')}" readonly>
</div>
</div>
<div class="row mb-1 justify-content-center">

View File

@ -29,12 +29,10 @@
<div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">착수일</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${#temporals.format(ciWork.workStartDate, 'yyyy-MM-dd')}"></label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">종결일(예정)</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">예정일</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${#temporals.format(ciWork.workPlanDate, 'yyyy-MM-dd')}"></label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">종결일</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${#temporals.format(ciWork.workEndDate, 'yyyy-MM-dd')}"></label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">1차재평가</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${#temporals.format(ciWork.reRatingDate1, 'yyyy-MM-dd')}"></label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">2차재평가</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${#temporals.format(ciWork.reRatingDate2, 'yyyy-MM-dd')}"></label>
</div>
<div class="row mb-1">
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">등급</label>
@ -43,18 +41,10 @@
<th:block th:if="${code.itemCd eq ciWork.workRating}" th:text="${code.itemValue}"></th:block>
</th:block>
</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">검거유형1</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start">
<th:block th:each="code:${session.commonCode.get('AT')}">
<th:block th:if="${code.itemCd eq ciWork.arrestType1}" th:text="${code.itemValue}"></th:block>
</th:block>
</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">검거유형2</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start">
<th:block th:each="code:${session.commonCode.get(ciWork.arrestType1)}">
<th:block th:if="${code.itemCd eq ciWork.arrestType2}" th:text="${code.itemValue}"></th:block>
</th:block>
</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">1차재평가</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${#temporals.format(ciWork.reRatingDate1, 'yyyy-MM-dd')}"></label>
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">2차재평가</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${#temporals.format(ciWork.reRatingDate2, 'yyyy-MM-dd')}"></label>
</div>
<hr class="my-1">
<div class="row mb-1">