외사활동 작업중.
parent
600f154f80
commit
2d79466c8c
|
|
@ -56,8 +56,6 @@ public class ModalController {
|
||||||
userInfo.setUserStatus("USC003");
|
userInfo.setUserStatus("USC003");
|
||||||
}
|
}
|
||||||
mav.addObject("pageName", pageName);
|
mav.addObject("pageName", pageName);
|
||||||
mav.addObject("OgList", codeMgtService.selectCodeMgtList("OG"));
|
|
||||||
mav.addObject("OfcList", codeMgtService.selectCodeMgtList("OFC"));
|
|
||||||
mav.addObject("userInfoList", userInfoService.selectUserInfoList(userInfo));
|
mav.addObject("userInfoList", userInfoService.selectUserInfoList(userInfo));
|
||||||
userInfo.setContentCnt(userInfoService.selectUserInfoListCnt(userInfo));
|
userInfo.setContentCnt(userInfoService.selectUserInfoListCnt(userInfo));
|
||||||
userInfo.setPaginationInfo();
|
userInfo.setPaginationInfo();
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ package com.dbnt.faisp.main.counterIntelligence.activityCase;
|
||||||
import com.dbnt.faisp.main.authMgt.service.AuthMgtService;
|
import com.dbnt.faisp.main.authMgt.service.AuthMgtService;
|
||||||
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
|
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
|
||||||
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCase;
|
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCase;
|
||||||
|
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseApprv;
|
||||||
|
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseBoard;
|
||||||
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseInfo;
|
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseInfo;
|
||||||
import com.dbnt.faisp.main.counterIntelligence.activityCase.service.ActivityCaseService;
|
import com.dbnt.faisp.main.counterIntelligence.activityCase.service.ActivityCaseService;
|
||||||
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceWork;
|
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceWork;
|
||||||
|
|
@ -27,7 +29,7 @@ public class ActivityCaseController {
|
||||||
private final CodeMgtService codeMgtService;
|
private final CodeMgtService codeMgtService;
|
||||||
|
|
||||||
@GetMapping("/activityCaseList")
|
@GetMapping("/activityCaseList")
|
||||||
public ModelAndView activityCaseListPage(@AuthenticationPrincipal UserInfo loginUser, ActivityCase activityCase){
|
public ModelAndView activityCaseListPage(@AuthenticationPrincipal UserInfo loginUser, ActivityCaseBoard activityCase){
|
||||||
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/activityCaseBoard");
|
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/activityCaseBoard");
|
||||||
mav.addObject("searchUrl", "/counterIntelligence/activityCaseList");
|
mav.addObject("searchUrl", "/counterIntelligence/activityCaseList");
|
||||||
String accessAuth = authMgtService.selectAccessConfigList
|
String accessAuth = authMgtService.selectAccessConfigList
|
||||||
|
|
@ -64,7 +66,6 @@ public class ActivityCaseController {
|
||||||
activityCase.setWrtUserSeq(loginUser.getUserSeq());
|
activityCase.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
activityCase.setWrtUserGrd(loginUser.getTitleCd());
|
activityCase.setWrtUserGrd(loginUser.getTitleCd());
|
||||||
activityCase.setWrtUserNm(loginUser.getUserNm());
|
activityCase.setWrtUserNm(loginUser.getUserNm());
|
||||||
activityCaseInfo.setWrtDt(LocalDateTime.now());
|
|
||||||
}else{
|
}else{
|
||||||
activityCase = activityCaseService.selectActivityCase(activityCase.getReceiptKey());
|
activityCase = activityCaseService.selectActivityCase(activityCase.getReceiptKey());
|
||||||
activityCaseInfo = activityCaseService.selectActivityCaseInfo(activityCaseInfo.getCaseKey());
|
activityCaseInfo = activityCaseService.selectActivityCaseInfo(activityCaseInfo.getCaseKey());
|
||||||
|
|
@ -80,30 +81,48 @@ public class ActivityCaseController {
|
||||||
@GetMapping("/getSuspectDiv")
|
@GetMapping("/getSuspectDiv")
|
||||||
public ModelAndView suspectDiv(){
|
public ModelAndView suspectDiv(){
|
||||||
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/suspectDiv");
|
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/suspectDiv");
|
||||||
mav.addObject("acsList", codeMgtService.selectCodeMgtList("ACS"));
|
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/getApprvDiv")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@PostMapping("/getOfficerDiv")
|
public ModelAndView apprvDiv(@RequestBody List<ActivityCaseApprv> apprvList){
|
||||||
public ModelAndView officerDiv(@RequestBody List<UserInfo> userList){
|
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/apprvDiv");
|
||||||
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/officerDiv");
|
mav.addObject("userList", apprvList);
|
||||||
mav.addObject("officerList", userList);
|
return mav;
|
||||||
mav.addObject("acoList", codeMgtService.selectCodeMgtList("ACO"));
|
}
|
||||||
|
|
||||||
|
@GetMapping("/activityCaseSummaryModal")
|
||||||
|
public ModelAndView activityCaseSummaryModal(@AuthenticationPrincipal UserInfo loginUser, ActivityCaseBoard activityCase){
|
||||||
|
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/activityCaseSummaryModal");
|
||||||
|
mav.addObject("activityCaseList", activityCaseService.selectActivityCaseList(activityCase));
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/activityCaseViewModal")
|
@GetMapping("/activityCaseViewModal")
|
||||||
public ModelAndView activityCaseViewModal(@AuthenticationPrincipal UserInfo loginUser, ActivityCase activityCase){
|
public ModelAndView activityCaseViewModal(@AuthenticationPrincipal UserInfo loginUser, ActivityCaseBoard activityCase){
|
||||||
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/activityCaseViewModal");
|
ModelAndView mav = null;
|
||||||
mav.addObject("lineSeparator", '\n');
|
ActivityCaseInfo activityCaseInfo = activityCaseService.selectActivityCaseInfo(activityCase.getCaseKey());
|
||||||
|
switch (activityCaseInfo.getCaseType()){
|
||||||
|
case "ACT001":
|
||||||
|
mav = new ModelAndView("counterIntelligence/activityCase/activityCase1ViewModal");
|
||||||
|
break;
|
||||||
|
case "ACT002":
|
||||||
|
mav = new ModelAndView("counterIntelligence/activityCase/activityCase2ViewModal");
|
||||||
|
break;
|
||||||
|
case "ACT003":
|
||||||
|
mav = new ModelAndView("counterIntelligence/activityCase/activityCase3ViewModal");
|
||||||
|
break;
|
||||||
|
}
|
||||||
mav.addObject("viewUserSeq", loginUser.getUserSeq());
|
mav.addObject("viewUserSeq", loginUser.getUserSeq());
|
||||||
String accessAuth = authMgtService.selectAccessConfigList
|
String accessAuth = authMgtService.selectAccessConfigList
|
||||||
(loginUser.getUserSeq(), "/counterIntelligence/activityCaseList").get(0).getAccessAuth();
|
(loginUser.getUserSeq(), "/counterIntelligence/activityCaseList").get(0).getAccessAuth();
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
mav.addObject("activityCase", activityCaseService.selectActivityCase(activityCase.getReceiptKey()));
|
mav.addObject("activityCaseInfo", activityCaseInfo);
|
||||||
|
mav.addObject("activityCase", activityCaseService.selectActivityCase(activityCaseInfo.getReceiptKey()));
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/saveActivityCase")
|
@PostMapping("/saveActivityCase")
|
||||||
public Integer saveActivityCase(ActivityCase activityCase,
|
public Integer saveActivityCase(ActivityCase activityCase,
|
||||||
ActivityCaseInfo activityCaseInfo,
|
ActivityCaseInfo activityCaseInfo,
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,23 @@
|
||||||
package com.dbnt.faisp.main.counterIntelligence.activityCase.mapper;
|
package com.dbnt.faisp.main.counterIntelligence.activityCase.mapper;
|
||||||
|
|
||||||
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCase;
|
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCase;
|
||||||
|
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseBoard;
|
||||||
import com.dbnt.faisp.main.counterIntelligence.model.CiWorkStatistics;
|
import com.dbnt.faisp.main.counterIntelligence.model.CiWorkStatistics;
|
||||||
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceActivity;
|
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceActivity;
|
||||||
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceWork;
|
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceWork;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface ActivityCaseMapper {
|
public interface ActivityCaseMapper {
|
||||||
|
|
||||||
List<ActivityCase> selectActivityCaseList(ActivityCase activityCase);
|
List<ActivityCase> selectActivityCaseList(ActivityCaseBoard activityCase);
|
||||||
|
|
||||||
Integer selectActivityCaseCnt(ActivityCase activityCase);
|
Integer selectActivityCaseCnt(ActivityCaseBoard activityCase);
|
||||||
|
|
||||||
|
Integer selectReceiptNum(int year);
|
||||||
|
Integer selectCaseNum(Map<String, Object> map);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@ public class ActivityCaseApprv {
|
||||||
private Integer userSeq;
|
private Integer userSeq;
|
||||||
@Column(name = "apprv_path")
|
@Column(name = "apprv_path")
|
||||||
private String apprvPath;
|
private String apprvPath;
|
||||||
|
@Column(name = "apprv_type")
|
||||||
|
private String apprvType;
|
||||||
@Column(name = "og_cd")
|
@Column(name = "og_cd")
|
||||||
private String ogCd;
|
private String ogCd;
|
||||||
@Column(name = "ofc_cd")
|
@Column(name = "ofc_cd")
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
package com.dbnt.faisp.main.counterIntelligence.activityCase.model;
|
||||||
|
|
||||||
|
import com.dbnt.faisp.config.BaseModel;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import org.hibernate.annotations.DynamicInsert;
|
||||||
|
import org.hibernate.annotations.DynamicUpdate;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class ActivityCaseBoard extends BaseModel {
|
||||||
|
private Integer receiptKey;
|
||||||
|
private String receiptNum;
|
||||||
|
private String wrtOrgan;
|
||||||
|
private String wrtPart;
|
||||||
|
private Integer wrtUserSeq;
|
||||||
|
private String wrtUserGrd;
|
||||||
|
private String wrtUserNm;
|
||||||
|
private Integer caseKey;
|
||||||
|
private String caseNum;
|
||||||
|
private LocalDate reportDate;
|
||||||
|
private String caseType;
|
||||||
|
private String title;
|
||||||
|
private LocalDateTime wrtDt;
|
||||||
|
private Integer apprvCnt;
|
||||||
|
private Integer allCnt;
|
||||||
|
private Integer fileCnt;
|
||||||
|
}
|
||||||
|
|
@ -10,6 +10,7 @@ import org.springframework.format.annotation.DateTimeFormat;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
@ -29,6 +30,9 @@ public class ActivityCaseInfo extends BaseModel {
|
||||||
private Integer receiptKey;
|
private Integer receiptKey;
|
||||||
@Column(name = "case_num")
|
@Column(name = "case_num")
|
||||||
private String caseNum;
|
private String caseNum;
|
||||||
|
@Column(name = "report_date")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private LocalDate reportDate;
|
||||||
@Column(name = "case_type")
|
@Column(name = "case_type")
|
||||||
private String caseType;
|
private String caseType;
|
||||||
@Column(name = "title")
|
@Column(name = "title")
|
||||||
|
|
|
||||||
|
|
@ -10,4 +10,6 @@ import java.util.Optional;
|
||||||
|
|
||||||
public interface ActivityCaseApprvRepository extends JpaRepository<ActivityCaseApprv, ActivityCaseApprv.ActivityCaseApprvId> {
|
public interface ActivityCaseApprvRepository extends JpaRepository<ActivityCaseApprv, ActivityCaseApprv.ActivityCaseApprvId> {
|
||||||
|
|
||||||
|
List<ActivityCaseApprv> findByCaseKey(Integer caseKey);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,4 +12,5 @@ public interface ActivityCaseFileRepository extends JpaRepository<ActivityCaseFi
|
||||||
List<ActivityCaseFile> findByCaseKey(Integer caseKey);
|
List<ActivityCaseFile> findByCaseKey(Integer caseKey);
|
||||||
Optional<ActivityCaseFile> findTopByCaseKeyOrderByFileSeqDesc(Integer caseKey);
|
Optional<ActivityCaseFile> findTopByCaseKeyOrderByFileSeqDesc(Integer caseKey);
|
||||||
|
|
||||||
|
List<ActivityCaseFile> findByCaseKeyOrderByFileSeqAsc(Integer caseKey);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,4 +9,5 @@ import java.util.Optional;
|
||||||
|
|
||||||
public interface ActivityCaseSuspectRepository extends JpaRepository<ActivityCaseSuspect, ActivityCaseSuspect.ActivityCaseSuspectId> {
|
public interface ActivityCaseSuspectRepository extends JpaRepository<ActivityCaseSuspect, ActivityCaseSuspect.ActivityCaseSuspectId> {
|
||||||
|
|
||||||
|
List<ActivityCaseSuspect> findByReceiptKeyOrderBySuspectSeqDesc(Integer receiptKey);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,18 @@ import com.dbnt.faisp.config.FileInfo;
|
||||||
import com.dbnt.faisp.main.counterIntelligence.activityCase.mapper.ActivityCaseMapper;
|
import com.dbnt.faisp.main.counterIntelligence.activityCase.mapper.ActivityCaseMapper;
|
||||||
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.*;
|
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.*;
|
||||||
import com.dbnt.faisp.main.counterIntelligence.activityCase.repository.*;
|
import com.dbnt.faisp.main.counterIntelligence.activityCase.repository.*;
|
||||||
|
import com.dbnt.faisp.util.Utils;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -24,36 +29,56 @@ public class ActivityCaseService extends BaseService {
|
||||||
private final ActivityCaseApprvRepository acaRepository;
|
private final ActivityCaseApprvRepository acaRepository;
|
||||||
private final ActivityCaseMapper acMapper;
|
private final ActivityCaseMapper acMapper;
|
||||||
|
|
||||||
public List<ActivityCase> selectActivityCaseList(ActivityCase activityCase){
|
public List<ActivityCase> selectActivityCaseList(ActivityCaseBoard activityCase){
|
||||||
return acMapper.selectActivityCaseList(activityCase);
|
return acMapper.selectActivityCaseList(activityCase);
|
||||||
}
|
}
|
||||||
public Integer selectActivityCaseCnt(ActivityCase activityCase){
|
public Integer selectActivityCaseCnt(ActivityCaseBoard activityCase){
|
||||||
return acMapper.selectActivityCaseCnt(activityCase);
|
return acMapper.selectActivityCaseCnt(activityCase);
|
||||||
}
|
}
|
||||||
public ActivityCase selectActivityCase(Integer receiptKey) {
|
public ActivityCase selectActivityCase(Integer receiptKey) {
|
||||||
ActivityCase activityCase = acRepository.findById(receiptKey).orElse(null);
|
ActivityCase activityCase = acRepository.findById(receiptKey).orElse(null);
|
||||||
|
activityCase.setSuspectList(acsRepository.findByReceiptKeyOrderBySuspectSeqDesc(receiptKey));
|
||||||
return activityCase;
|
return activityCase;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActivityCaseInfo selectActivityCaseInfo(Integer caseKey) {
|
public ActivityCaseInfo selectActivityCaseInfo(Integer caseKey) {
|
||||||
ActivityCaseInfo activityCaseInfo = aciRepository.findById(caseKey).orElse(null);
|
ActivityCaseInfo activityCaseInfo = aciRepository.findById(caseKey).orElse(null);
|
||||||
|
activityCaseInfo.setApprvList(acaRepository.findByCaseKey(caseKey));
|
||||||
|
activityCaseInfo.setFileList(acfRepository.findByCaseKeyOrderByFileSeqAsc(caseKey));
|
||||||
return activityCaseInfo;
|
return activityCaseInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public Integer saveActivityCase(ActivityCase activityCase, ActivityCaseInfo activityCaseInfo, List<Integer> deleteFileSeq) {
|
public Integer saveActivityCase(ActivityCase activityCase, ActivityCaseInfo activityCaseInfo, List<Integer> deleteFileSeq) {
|
||||||
Integer receiptKey = acRepository.save(activityCase).getReceiptKey();
|
Integer receiptKey = null;
|
||||||
|
if(Utils.isEmpty(activityCase.getReceiptKey())){
|
||||||
return receiptKey;
|
if(Utils.isEmpty(activityCase.getReceiptNum())){
|
||||||
}
|
activityCase.setReceiptNum(makeReceiptNum(LocalDate.now().getYear()));
|
||||||
|
}
|
||||||
private void saveActivityCaseSuspect(Integer caseKey, List<ActivityCaseSuspect> suspectList) {
|
receiptKey = acRepository.save(activityCase).getReceiptKey();
|
||||||
if(suspectList==null){
|
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
|
receiptKey = activityCase.getReceiptKey();
|
||||||
}
|
}
|
||||||
|
int suspectSeq = 1;
|
||||||
|
for(ActivityCaseSuspect suspect: activityCase.getSuspectList()){
|
||||||
|
suspect.setSuspectSeq(suspectSeq++);
|
||||||
|
suspect.setReceiptKey(receiptKey);
|
||||||
|
}
|
||||||
|
acsRepository.saveAll(activityCase.getSuspectList());
|
||||||
|
|
||||||
|
if(Utils.isEmpty(activityCaseInfo.getCaseNum())){
|
||||||
|
activityCaseInfo.setCaseNum(makeCaseNum(LocalDate.now().getYear(), activityCase.getReceiptNum()));
|
||||||
|
}
|
||||||
|
activityCaseInfo.setReceiptKey(receiptKey);
|
||||||
|
activityCaseInfo.setWrtDt(LocalDateTime.now());
|
||||||
|
Integer caseKey = aciRepository.save(activityCaseInfo).getCaseKey();
|
||||||
|
deleteActivityCaseFile(caseKey, deleteFileSeq);
|
||||||
|
saveUploadFiles(caseKey, activityCaseInfo.getMultipartFileList());
|
||||||
|
for(ActivityCaseApprv apprv: activityCaseInfo.getApprvList()){
|
||||||
|
apprv.setCaseKey(caseKey);
|
||||||
|
}
|
||||||
|
acaRepository.saveAll(activityCaseInfo.getApprvList());
|
||||||
|
return caseKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deleteActivityCaseFile(Integer caseKey, List<Integer> deleteFileSeq) {
|
private void deleteActivityCaseFile(Integer caseKey, List<Integer> deleteFileSeq) {
|
||||||
|
|
@ -98,4 +123,22 @@ public class ActivityCaseService extends BaseService {
|
||||||
|
|
||||||
return receiptKey;
|
return receiptKey;
|
||||||
}
|
}
|
||||||
|
@Transactional
|
||||||
|
public Integer deleteActivityCaseInfo(Integer caseKey) {
|
||||||
|
ActivityCaseInfo activityCaseInfo = aciRepository.findById(caseKey).orElse(null);
|
||||||
|
|
||||||
|
return caseKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String makeReceiptNum(int year){
|
||||||
|
String receiptNum = "00"+acMapper.selectReceiptNum(year);
|
||||||
|
return year+"-"+receiptNum.substring(receiptNum.length()-3);
|
||||||
|
}
|
||||||
|
private String makeCaseNum(int year, String receiptNum){
|
||||||
|
Map<String, Object> params = new HashMap<>();
|
||||||
|
params.put("receiptNum", receiptNum);
|
||||||
|
params.put("year", year);
|
||||||
|
String caseNum = "00"+acMapper.selectCaseNum(params);
|
||||||
|
return year+"-"+caseNum.substring(caseNum.length()-3);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,67 +6,103 @@
|
||||||
<mapper namespace="com.dbnt.faisp.main.counterIntelligence.activityCase.mapper.ActivityCaseMapper">
|
<mapper namespace="com.dbnt.faisp.main.counterIntelligence.activityCase.mapper.ActivityCaseMapper">
|
||||||
<sql id="selectActivityCaseListWhere">
|
<sql id="selectActivityCaseListWhere">
|
||||||
<where>
|
<where>
|
||||||
|
<if test='receiptKey != null and receiptKey != ""'>
|
||||||
|
and a.receipt_key = #{receiptKey}
|
||||||
|
</if>
|
||||||
|
<if test='receiptNum != null and receiptNum != ""'>
|
||||||
|
and a.receipt_num like '%'||#{receiptNum}||'%'
|
||||||
|
</if>
|
||||||
<if test='wrtUserNm != null and wrtUserNm != ""'>
|
<if test='wrtUserNm != null and wrtUserNm != ""'>
|
||||||
and a.wrt_user_nm like '%'||#{wrtUserNm}||'%'
|
and a.wrt_user_nm like '%'||#{wrtUserNm}||'%'
|
||||||
</if>
|
</if>
|
||||||
<if test='wrtOrgan != null and wrtOrgan != ""'>
|
<if test='wrtOrgan != null and wrtOrgan != ""'>
|
||||||
and a.wrt_organ = #{wrtOrgan}
|
and a.wrt_organ = #{wrtOrgan}
|
||||||
</if>
|
</if>
|
||||||
<if test='dateSelector == "receiptDt"'>
|
<if test='dateSelector == "reportDate"'>
|
||||||
<if test='startDate != null and startDate != ""'>
|
<if test='startDate != null and startDate != ""'>
|
||||||
and a.receipt_dt >= #{startDate}::date
|
and b.report_date >= #{startDate}::date
|
||||||
</if>
|
</if>
|
||||||
<if test='endDate != null and endDate != ""'>
|
<if test='endDate != null and endDate != ""'>
|
||||||
and a.receipt_dt <= #{endDate}::date+1
|
and b.report_date <= #{endDate}::date+1
|
||||||
</if>
|
|
||||||
</if>
|
|
||||||
<if test='dateSelector == "resultDt"'>
|
|
||||||
<if test='startDate != null and startDate != ""'>
|
|
||||||
and a.result_dt >= #{startDate}::date
|
|
||||||
</if>
|
|
||||||
<if test='endDate != null and endDate != ""'>
|
|
||||||
and a.result_dt <= #{endDate}::date+1
|
|
||||||
</if>
|
</if>
|
||||||
</if>
|
</if>
|
||||||
<if test='dateSelector == "wrtDt"'>
|
<if test='dateSelector == "wrtDt"'>
|
||||||
<if test='startDate != null and startDate != ""'>
|
<if test='startDate != null and startDate != ""'>
|
||||||
and a.wrt_dt >= #{startDate}::date
|
and b.wrt_dt >= #{startDate}::date
|
||||||
</if>
|
</if>
|
||||||
<if test='endDate != null and endDate != ""'>
|
<if test='endDate != null and endDate != ""'>
|
||||||
and a.wrt_dt <= #{endDate}::date+1
|
and b.wrt_dt <= #{endDate}::date+1
|
||||||
</if>
|
</if>
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</sql>
|
</sql>
|
||||||
<select id="selectActivityCaseList" parameterType="ActivityCase" resultType="ActivityCase">
|
<select id="selectActivityCaseList" parameterType="ActivityCaseBoard" resultType="ActivityCaseBoard">
|
||||||
select a.ciw_key,
|
select a.receipt_key,
|
||||||
a.status,
|
a.receipt_num ,
|
||||||
a.work_rating,
|
a.wrt_organ ,
|
||||||
a.work_start_date,
|
a.wrt_part ,
|
||||||
a.work_end_date,
|
a.wrt_user_seq ,
|
||||||
a.re_rating_date1,
|
a.wrt_user_grd ,
|
||||||
a.re_rating_date2,
|
a.wrt_user_nm ,
|
||||||
a.title,
|
b.case_key ,
|
||||||
a.wrt_organ,
|
b.case_num ,
|
||||||
a.wrt_part,
|
b.report_date ,
|
||||||
a.wrt_user_seq,
|
b.case_type ,
|
||||||
a.wrt_user_grd,
|
b.title,
|
||||||
a.wrt_user_nm,
|
b.wrt_dt,
|
||||||
a.wrt_dt,
|
c.apprvCnt,
|
||||||
b.fileCnt
|
c.allCnt,
|
||||||
from counter_intelligence_work a
|
d.fileCnt
|
||||||
left outer join (select ciw_key, count(*) as fileCnt from ciw_file group by ciw_key) b
|
from activity_case a
|
||||||
on a.ciw_key = b.ciw_key
|
inner join activity_case_info b
|
||||||
|
on a.receipt_key = b.receipt_key
|
||||||
|
inner join (
|
||||||
|
select case_key,
|
||||||
|
count(apprv_yn = 'Y' or apprv_yn = 'N') as apprvCnt,
|
||||||
|
count(*) as allCnt
|
||||||
|
from activity_case_apprv
|
||||||
|
group by case_key
|
||||||
|
) c on b.case_key = c.case_key
|
||||||
|
inner join (
|
||||||
|
select case_key, count(*) as fileCnt
|
||||||
|
from activity_case_file
|
||||||
|
group by case_key
|
||||||
|
) d on b.case_key = d.case_key
|
||||||
<include refid="selectActivityCaseListWhere"></include>
|
<include refid="selectActivityCaseListWhere"></include>
|
||||||
ORDER BY a.ciw_key DESC
|
ORDER BY b.wrt_dt DESC
|
||||||
LIMIT #{rowCnt} OFFSET #{firstIndex}
|
LIMIT #{rowCnt} OFFSET #{firstIndex}
|
||||||
</select>
|
</select>
|
||||||
<select id="selectActivityCaseCnt" parameterType="ActivityCase" resultType="int">
|
<select id="selectActivityCaseCnt" parameterType="ActivityCaseBoard" resultType="int">
|
||||||
select count(*)
|
select count(*)
|
||||||
from counter_intelligence_work a
|
from activity_case a
|
||||||
left outer join (select ciw_key, count(*) as fileCnt from ciw_file group by ciw_key) b
|
inner join activity_case_info b
|
||||||
on a.ciw_key = b.ciw_key
|
on a.receipt_key = b.receipt_key
|
||||||
|
inner join (
|
||||||
|
select case_key,
|
||||||
|
count(apprv_yn = 'Y' or apprv_yn = 'N') as apprvCnt,
|
||||||
|
count(*) as allCnt
|
||||||
|
from activity_case_apprv
|
||||||
|
group by case_key
|
||||||
|
) c on b.case_key = c.case_key
|
||||||
|
inner join (
|
||||||
|
select case_key, count(*) as fileCnt
|
||||||
|
from activity_case_file
|
||||||
|
group by case_key
|
||||||
|
) d on b.case_key = d.case_key
|
||||||
<include refid="selectActivityCaseListWhere"></include>
|
<include refid="selectActivityCaseListWhere"></include>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectReceiptNum" resultType="int" parameterType="int">
|
||||||
|
select count(*)+1
|
||||||
|
from activity_case
|
||||||
|
where receipt_num like #{year}||'%'
|
||||||
|
</select>
|
||||||
|
<select id="selectCaseNum" resultType="int" parameterType="hashMap">
|
||||||
|
select count(*)+1
|
||||||
|
from activity_case a
|
||||||
|
inner join activity_case_info b
|
||||||
|
on a.receipt_key = b.receipt_key
|
||||||
|
where a.receipt_num = #{receiptNum}
|
||||||
|
and b.case_num like #{year}||'%'
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -349,7 +349,6 @@ function ajaxErrorAction(e){
|
||||||
}else if(e.responseText.includes("접근이 거부되었습니다.")){
|
}else if(e.responseText.includes("접근이 거부되었습니다.")){
|
||||||
alert("접근이 거부되었습니다.")
|
alert("접근이 거부되었습니다.")
|
||||||
location.href="/";
|
location.href="/";
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -8,25 +8,46 @@ $(document).on('click', '#suspectAddBtn', function (){
|
||||||
getSuspectDiv()
|
getSuspectDiv()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '#apprvAddBtn', function (){
|
||||||
|
searchModalSubmit(1);
|
||||||
|
$("#userModal").modal('show');
|
||||||
|
})
|
||||||
|
$(document).on('click', '#getUserBtn', function (){
|
||||||
|
const selectedUser = $(".userInfoCheckBox:checked").parents(".userInfoTr")
|
||||||
|
const userList = [];
|
||||||
|
$.each(selectedUser, function (idx, tr){
|
||||||
|
const row = $(tr);
|
||||||
|
userList.push({
|
||||||
|
userSeq: row.find('.userSeq').val(),
|
||||||
|
ogCd: row.find('.ogCd').val(),
|
||||||
|
ofcCd: row.find('.ofcCd').val(),
|
||||||
|
titleCd: row.find('.titleCd').val(),
|
||||||
|
userNm: row.find('.userNm').val()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
getApprvDiv(userList);
|
||||||
|
})
|
||||||
|
|
||||||
$(document).on('click', '.rowDeleteBtn', function (){
|
$(document).on('click', '.rowDeleteBtn', function (){
|
||||||
$(this).parents(".suspectDiv").remove();
|
$(this).parents(".suspectDiv").remove();
|
||||||
|
$(this).parents(".apprvDiv").remove();
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '.saveBtn', function(){
|
$(document).on('click', '.saveBtn', function(){
|
||||||
saveActivityCase($(this).attr("data-status"));
|
saveActivityCase($(this).attr("data-status"));
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '.activityCaseTr', function (){
|
|
||||||
getActivityCaseViewModal($(this).find(".ciwKey").val());
|
|
||||||
})
|
|
||||||
|
|
||||||
$(document).on('click', '#editActivityCaseBtn', function (){
|
$(document).on('click', '#editActivityCaseBtn', function (){
|
||||||
$("#activityCaseViewModal").modal('hide');
|
$("#activityCaseViewModal").modal('hide');
|
||||||
getActivityCaseEditModal($(this).attr("data-casekey"));
|
getActivityCaseEditModal($(this).attr("data-casekey"));
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#deleteActivityCaseBtn', function (){
|
$(document).on('click', '.activityCaseTr', function (){
|
||||||
deleteActivityCase($(this).attr("data-casekey"));
|
getActivityCaseSummaryModal($(this).find(".receiptKey").val());
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '.summaryTr', function (){
|
||||||
|
getActivityCaseViewModal($(this).find(".caseKey").val());
|
||||||
})
|
})
|
||||||
|
|
||||||
function getActivityCaseEditModal(caseKey, caseType){
|
function getActivityCaseEditModal(caseKey, caseType){
|
||||||
|
|
@ -58,6 +79,47 @@ function getSuspectDiv(){
|
||||||
dataType:"html",
|
dataType:"html",
|
||||||
success: function(html){
|
success: function(html){
|
||||||
$("#suspectHome").append(html)
|
$("#suspectHome").append(html)
|
||||||
|
$(".suspectBirthDate").datepicker({
|
||||||
|
format: "yyyy-mm-dd",
|
||||||
|
language: "ko",
|
||||||
|
autoclose: true
|
||||||
|
});
|
||||||
|
},
|
||||||
|
error:function(e){
|
||||||
|
ajaxErrorAction(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getApprvDiv(apprvList){
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: '/counterIntelligence/getApprvDiv',
|
||||||
|
data: JSON.stringify(apprvList),
|
||||||
|
contentType: 'application/json',
|
||||||
|
dataType:"html",
|
||||||
|
beforeSend: function (xhr){
|
||||||
|
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||||
|
},
|
||||||
|
success: function(html){
|
||||||
|
$("#apprvHome").empty().append(html)
|
||||||
|
$("#userModal").modal('hide');
|
||||||
|
},
|
||||||
|
error:function(e){
|
||||||
|
ajaxErrorAction(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getActivityCaseSummaryModal(receiptKey){
|
||||||
|
$.ajax({
|
||||||
|
url: '/counterIntelligence/activityCaseSummaryModal',
|
||||||
|
data: {receiptKey: receiptKey},
|
||||||
|
type: 'GET',
|
||||||
|
dataType:"html",
|
||||||
|
success: function(html){
|
||||||
|
$("#activityCaseSummaryModalBody").empty().append(html)
|
||||||
|
$("#activityCaseSummaryModal").modal('show');
|
||||||
},
|
},
|
||||||
error:function(e){
|
error:function(e){
|
||||||
ajaxErrorAction(e);
|
ajaxErrorAction(e);
|
||||||
|
|
@ -110,13 +172,14 @@ function saveActivityCase(status){
|
||||||
formData.append('suspectList['+idx+'].area', $(el).find(".suspectArea").val());
|
formData.append('suspectList['+idx+'].area', $(el).find(".suspectArea").val());
|
||||||
formData.append('suspectList['+idx+'].etc', $(el).find(".suspectEtc").val());
|
formData.append('suspectList['+idx+'].etc', $(el).find(".suspectEtc").val());
|
||||||
})
|
})
|
||||||
$(".officerRow").each(function (idx, el){
|
$(".apprvDiv").each(function (idx, el){
|
||||||
formData.append('officerList['+idx+'].type', $(el).find(".officerType").val());
|
formData.append('apprvList['+idx+'].userSeq', $(el).find(".userSeq").val());
|
||||||
formData.append('officerList['+idx+'].userSeq', $(el).find(".userSeq").val());
|
formData.append('apprvList['+idx+'].apprvPath', $(el).find(".apprvPath").val());
|
||||||
formData.append('officerList['+idx+'].ogCd', $(el).find(".ogCd").val());
|
formData.append('apprvList['+idx+'].apprvType', $(el).find(".apprvType").val());
|
||||||
formData.append('officerList['+idx+'].ofcCd', $(el).find(".ofcCd").val());
|
formData.append('apprvList['+idx+'].ogCd', $(el).find(".ogCd").val());
|
||||||
formData.append('officerList['+idx+'].titleCd', $(el).find(".titleCd").val());
|
formData.append('apprvList['+idx+'].ofcCd', $(el).find(".ofcCd").val());
|
||||||
formData.append('officerList['+idx+'].userNm', $(el).find(".userNm").val());
|
formData.append('apprvList['+idx+'].titleCd', $(el).find(".titleCd").val());
|
||||||
|
formData.append('apprvList['+idx+'].userNm', $(el).find(".userNm").val());
|
||||||
})
|
})
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
|
|
@ -127,8 +190,7 @@ function saveActivityCase(status){
|
||||||
success : function(result) {
|
success : function(result) {
|
||||||
alert("저장되었습니다.");
|
alert("저장되었습니다.");
|
||||||
contentFade("out");
|
contentFade("out");
|
||||||
$("#activityCaseEditModal").modal('hide');
|
location.reload();
|
||||||
getActivityCaseViewModal(result);
|
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
alert("저장에 실패하였습니다.")
|
alert("저장에 실패하였습니다.")
|
||||||
|
|
@ -167,21 +229,58 @@ function deleteActivityCase(caseKey){
|
||||||
}
|
}
|
||||||
|
|
||||||
function contentCheck(){
|
function contentCheck(){
|
||||||
if(!$("#receiptNum").val()){
|
if(!$("#title").val()){
|
||||||
alert("접수번호을 입력해주세요.")
|
alert("제목을 입력해주세요.")
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if(!$("#receiptDt").val()){
|
if(!$("#reportDt").val()){
|
||||||
alert("접수일을 입력해주세요.")
|
alert("보고일자를 입력해주세요.")
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if(!$("#receiptClue").val()){
|
switch ($("#caseType").val()) {
|
||||||
alert("접수단서를 입력해주세요.")
|
case "ACT001":
|
||||||
return false;
|
if(!$("#caseProgress").val()){
|
||||||
}
|
alert("외사활동 사항을 입력해주세요.")
|
||||||
if(!$("#caseInfo").val()){
|
return false;
|
||||||
alert("첩보개요를 입력해주세요.")
|
}
|
||||||
return false;
|
if(!$("#description").val()){
|
||||||
|
alert("외사활동이 필요한 이유를 입력해주세요.")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "ACT002":
|
||||||
|
if(!$("#caseProgress").val()){
|
||||||
|
alert("외사활동 사항을 입력해주세요.")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(!$("#description").val()){
|
||||||
|
alert("조치 및 건의를 입력해주세요.")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "ACT003":
|
||||||
|
if(!$("#allegations").val()){
|
||||||
|
alert("혐의요지를 입력해주세요.")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(!$("#applicableLaw").val()){
|
||||||
|
alert("적용법조를 입력해주세요.")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(!$("#caseProgress").val()){
|
||||||
|
alert("내사진행상황을 입력해주세요.")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(!$("#description").val()){
|
||||||
|
alert("조치 및 건의를 입력해주세요.")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(!$("#activityResult").val()){
|
||||||
|
alert("결과를 선택해주세요.")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,16 +13,16 @@
|
||||||
<div class="col-auto" th:classappend="${pageName eq 'activityCase'?'d-none':''}">
|
<div class="col-auto" th:classappend="${pageName eq 'activityCase'?'d-none':''}">
|
||||||
<select class="form-select form-select-sm" name="ogCd">
|
<select class="form-select form-select-sm" name="ogCd">
|
||||||
<option value="">관서 선택</option>
|
<option value="">관서 선택</option>
|
||||||
<th:block th:each="commonCode:${OgList}">
|
<th:block th:each="code:${session.commonCode.get('OG')}">
|
||||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${searchParams.ogCd==commonCode.itemCd}"></option>
|
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${searchParams.ogCd eq code.itemCd}"></option>
|
||||||
</th:block>
|
</th:block>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<select class="form-select form-select-sm" name="ofcCd">
|
<select class="form-select form-select-sm" name="ofcCd">
|
||||||
<option value="">부서 선택</option>
|
<option value="">부서 선택</option>
|
||||||
<th:block th:each="commonCode:${OfcList}">
|
<th:block th:each="code:${session.commonCode.get(searchParams.ogCd)}">
|
||||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${searchParams.ofcCd==commonCode.itemCd}"></option>
|
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${searchParams.ofcCd eq code.itemCd}"></option>
|
||||||
</th:block>
|
</th:block>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -67,16 +67,20 @@
|
||||||
<input type="checkbox" name="userChk" class="userInfoCheckBox" th:value="${userInfo.userSeq}">
|
<input type="checkbox" name="userChk" class="userInfoCheckBox" th:value="${userInfo.userSeq}">
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
<th:block th:each="code:${session.commonCode.get('OG')}">
|
||||||
<th:block th:if="${commonCode.itemCd eq userInfo.ogCd}" th:text="${commonCode.itemValue}"></th:block>
|
<th:block th:if="${code.itemCd eq userInfo.ogCd}" th:text="${code.itemValue}"></th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<th:block th:each="commonCode:${session.commonCode.get(userInfo.ogCd)}">
|
<th:block th:each="code:${session.commonCode.get(userInfo.ogCd)}">
|
||||||
<th:block th:if="${commonCode.itemCd eq userInfo.ofcCd}" th:text="${commonCode.itemValue}"></th:block>
|
<th:block th:if="${code.itemCd eq userInfo.ofcCd}" th:text="${code.itemValue}"></th:block>
|
||||||
|
</th:block>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<th:block th:each="code:${session.commonCode.get('JT')}">
|
||||||
|
<th:block th:if="${code.itemCd eq userInfo.titleCd}" th:text="${code.itemValue}"></th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
</td>
|
</td>
|
||||||
<td></td>
|
|
||||||
<td th:text="${userInfo.userNm}"></td>
|
<td th:text="${userInfo.userNm}"></td>
|
||||||
<td th:text="${userInfo.userId}"></td>
|
<td th:text="${userInfo.userId}"></td>
|
||||||
<td th:text="${#temporals.format(userInfo.wrtDt, 'yyyy-MM-dd HH:mm:ss')}"></td>
|
<td th:text="${#temporals.format(userInfo.wrtDt, 'yyyy-MM-dd HH:mm:ss')}"></td>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
<input type="hidden" name="wrtUserGrd" th:value="${activityCase.wrtUserGrd}">
|
<input type="hidden" name="wrtUserGrd" th:value="${activityCase.wrtUserGrd}">
|
||||||
<input type="hidden" name="wrtUserNm" th:value="${activityCase.wrtUserNm}">
|
<input type="hidden" name="wrtUserNm" th:value="${activityCase.wrtUserNm}">
|
||||||
<input type="hidden" name="caseKey" th:value="${activityCaseInfo.caseKey}">
|
<input type="hidden" name="caseKey" th:value="${activityCaseInfo.caseKey}">
|
||||||
<input type="hidden" name="wrtDt" th:value="${activityCaseInfo.wrtDt}">
|
<input type="hidden" id="caseType" name="caseType" th:value="${activityCaseInfo.caseType}">
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label for="receiptNum" class="col-sm-1 col-form-label col-form-label-sm text-center">접수번호</label>
|
<label for="receiptNum" class="col-sm-1 col-form-label col-form-label-sm text-center">접수번호</label>
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
|
|
@ -27,29 +27,33 @@
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
<input type="text" class="form-control form-control-sm" id="caseNum" name="caseNum" th:value="${activityCaseInfo.caseNum}" placeholder="저장시 생성" readonly>
|
<input type="text" class="form-control form-control-sm" id="caseNum" name="caseNum" th:value="${activityCaseInfo.caseNum}" placeholder="저장시 생성" readonly>
|
||||||
</div>
|
</div>
|
||||||
<label for="wrtUserNm" 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">
|
||||||
<th:block th:if="${activityCase.wrtUserGrd eq null}">
|
<th:block th:if="${activityCase.wrtUserGrd eq null}">
|
||||||
<input type="text" class="form-control form-control-sm" id="wrtUserNm" th:value="${activityCase.wrtUserNm}" readonly>
|
<input type="text" class="form-control form-control-sm" th:value="${activityCase.wrtUserNm}" readonly>
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:unless="${activityCase.wrtUserGrd eq null}">
|
<th:block th:unless="${activityCase.wrtUserGrd eq null}">
|
||||||
<th:block th:each="code:${session.commonCode.get('JT')}">
|
<th:block th:each="code:${session.commonCode.get('JT')}">
|
||||||
<th:block th:if="${code.itemCd eq activityCase.wrtUserGrd}">
|
<th:block th:if="${code.itemCd eq activityCase.wrtUserGrd}">
|
||||||
<input type="text" class="form-control form-control-sm" id="wrtUserNm" th:value="|${code.itemValue} ${activityCase.wrtUserNm}|" readonly>
|
<input type="text" class="form-control form-control-sm" th:value="|${code.itemValue} ${activityCase.wrtUserNm}|" readonly>
|
||||||
</th:block>
|
</th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
</div>
|
</div>
|
||||||
<label for="wrtDt" class="col-sm-1 col-form-label col-form-label-sm text-center">작성일시</label>
|
<label for="wrtDt" 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="wrtDt" name="wrtDt" th:value="${#temporals.format(activityCaseInfo.wrtDt, 'yyyy-MM-dd HH:mm')}" readonly>
|
<input type="text" class="form-control form-control-sm" id="wrtDt" name="wrtDt" th:value="${#temporals.format(activityCaseInfo.wrtDt, 'yyyy-MM-dd HH:mm')}" placeholder="저장시 생성" readonly>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label for="title" class="col-sm-1 col-form-label col-form-label-sm text-center">제목</label>
|
<label for="title" class="col-sm-1 col-form-label col-form-label-sm text-center">제목</label>
|
||||||
<div class="col-sm-11">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control form-control-sm" id="title" name="title" th:value="${activityCaseInfo.title}">
|
<input type="text" class="form-control form-control-sm" id="title" name="title" th:value="${activityCaseInfo.title}">
|
||||||
</div>
|
</div>
|
||||||
|
<label for="reportDate" 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="reportDate" name="reportDate" th:value="${#temporals.format(activityCaseInfo.reportDate, 'yyyy-MM-dd')}">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label for="suspectAddBtn" class="col-sm-1 col-form-label col-form-label-sm text-center">
|
<label for="suspectAddBtn" class="col-sm-1 col-form-label col-form-label-sm text-center">
|
||||||
|
|
@ -73,11 +77,26 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label for="description" class="col-sm-1 col-form-label col-form-label-sm text-center">외사활동이 필요한 이유</label>
|
<label for="description" 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 class="form-control form-control-sm" id="description" name="description" th:value="${activityCaseInfo.description}"></textarea>
|
<textarea class="form-control form-control-sm" id="description" name="description" th:value="${activityCaseInfo.description}"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row mb-1">
|
||||||
|
<label for="suspectAddBtn" class="col-sm-1 col-form-label col-form-label-sm text-center">
|
||||||
|
결재자
|
||||||
|
<button type="button" class="border-0 bg-white" id="apprvAddBtn">
|
||||||
|
<i class="bi bi-plus-square text-primary"></i>
|
||||||
|
</button>
|
||||||
|
</label>
|
||||||
|
<div class="col-sm-11">
|
||||||
|
<div class="border h-100">
|
||||||
|
<div class="row" id="apprvHome">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<label for="fileInputer" class="col-sm-1 col-form-label col-form-label-sm text-center">첨부파일</label>
|
<label for="fileInputer" class="col-sm-1 col-form-label col-form-label-sm text-center">첨부파일</label>
|
||||||
<div class="col-sm-11" style="min-height: 70px;">
|
<div class="col-sm-11" style="min-height: 70px;">
|
||||||
|
|
|
||||||
|
|
@ -1,77 +1,49 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
<div class="modal-header bg-dark">
|
<div class="modal-header bg-dark">
|
||||||
<h5 class="modal-title text-white" id="ciWorkViewModalLabel">방첩공작 열람</h5>
|
<h5 class="modal-title text-white" id="activityCaseViewModalLabel">착수보고서 열람</h5>
|
||||||
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body" id="ciWorkViewBody">
|
<div class="modal-body" id="activityCaseViewModalBody">
|
||||||
<input type="hidden" id="ciwKey" th:value="${ciWork.ciwKey}">
|
<input type="hidden" id="caseKey" th:value="${activityCaseInfo.caseKey}">
|
||||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
<button class="nav-link active" id="boardTab" data-bs-toggle="tab" data-bs-target="#boardTabPanel" type="button" role="tab" aria-controls="boardTabPanel" aria-selected="true">본문</button>
|
<button class="nav-link active" id="boardTab" data-bs-toggle="tab" data-bs-target="#boardTabPanel" type="button" role="tab" aria-controls="boardTabPanel" aria-selected="true">본문</button>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" role="presentation" th:if="${#lists.size(ciWork.fileList)>0}">
|
<li class="nav-item" role="presentation">
|
||||||
<button class="nav-link" id="fileTab" data-bs-toggle="tab" data-bs-target="#fileTabPanel" type="button" role="tab" aria-controls="fileTabPanel" aria-selected="false" th:text="${#strings.concat('첨부파일(', #lists.size(ciWork.fileList), ')')}"></button>
|
<button class="nav-link" id="apprvTab" data-bs-toggle="tab" data-bs-target="#apprvTabPanel" type="button" role="tab" aria-controls="apprvTabPanel" aria-selected="false">결재</button>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" role="presentation" th:if="${#lists.size(activityCaseInfo.fileList)>0}">
|
||||||
|
<button class="nav-link" id="fileTab" data-bs-toggle="tab" data-bs-target="#fileTabPanel" type="button" role="tab" aria-controls="fileTabPanel" aria-selected="false" th:text="${#strings.concat('첨부파일(', #lists.size(activityCaseInfo.fileList), ')')}"></button>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="tab-content bg-white border border-top-0 p-2">
|
<div class="tab-content bg-white border border-top-0 p-2">
|
||||||
<div class="tab-pane fade p-2 show active" id="boardTabPanel" role="tabpanel" tabindex="0">
|
<div class="tab-pane fade p-2 show active" id="boardTabPanel" role="tabpanel" tabindex="0">
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<div class="col-sm-9"></div>
|
<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="${activityCase.receiptNum}"></label>
|
||||||
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${#temporals.format(ciWork.wrtDt, 'yyyy-MM-dd HH:mm')}"></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="${activityCaseInfo.caseNum}"></label>
|
||||||
<label class="col-sm-8 col-form-label col-form-label-sm text-start" th:text="|${ciWork.status eq 'DST001'?'[임시] ':''}${ciWork.title}|"></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="${ciWork.wrtUserNm}"></label>
|
<label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${activityCase.wrtUserNm}"></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(activityCaseInfo.wrtDt, 'yyyy-MM-dd HH:mm')}"></label>
|
||||||
|
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">제목</label>
|
||||||
|
<label class="col-sm-11 col-form-label col-form-label-sm text-start" th:text="${activityCaseInfo.title}"></label>
|
||||||
</div>
|
</div>
|
||||||
<hr class="my-1">
|
<hr class="my-1">
|
||||||
<div class="row mb-1">
|
<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-1 col-form-label col-form-label-sm text-center fw-bold">외사활동<br>대상자</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-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>
|
||||||
<div class="row mb-1">
|
<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-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:block th:each="code:${session.commonCode.get('CIWR')}">
|
|
||||||
<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">범죄테마</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">위반유형</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>
|
|
||||||
</div>
|
</div>
|
||||||
<hr class="my-1">
|
|
||||||
<div class="row mb-1">
|
<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-1 col-form-label col-form-label-sm text-center fw-bold">외사활동이<br>필요한 이유</label>
|
||||||
<div class="col-sm-11 form-control-sm" th:utext="${#strings.replace(ciWork.summaryInfo, lineSeparator, '<br>')}"></div>
|
|
||||||
</div>
|
|
||||||
<hr class="my-1">
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">내용</label>
|
|
||||||
<div class="col-sm-11 form-control-sm" th:utext="${ciWork.content}"></div>
|
|
||||||
</div>
|
|
||||||
<hr class="my-1">
|
|
||||||
<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-11 col-form-label col-form-label-sm text-start" th:text="${ciWork.hashTags}"></label>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tab-pane fade p-2" id="apprvTabPanel" role="tabpanel" tabindex="0">
|
||||||
|
</div>
|
||||||
<div class="tab-pane fade p-2" id="fileTabPanel" role="tabpanel" tabindex="0">
|
<div class="tab-pane fade p-2" id="fileTabPanel" role="tabpanel" tabindex="0">
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
|
|
@ -83,17 +55,17 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<th:block th:if="${#lists.isEmpty(ciWork.fileList)}">
|
<th:block th:if="${#lists.isEmpty(activityCaseInfo.fileList)}">
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2">파일이 없습니다.</td>
|
<td colspan="2">파일이 없습니다.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:unless="${#lists.isEmpty(ciWork.fileList)}">
|
<th:block th:unless="${#lists.isEmpty(activityCaseInfo.fileList)}">
|
||||||
<th:block th:each="file:${ciWork.fileList}">
|
<th:block th:each="file:${activityCaseInfo.fileList}">
|
||||||
<tr class="fileInfoTr">
|
<tr class="fileInfoTr">
|
||||||
<td>
|
<td>
|
||||||
<a href="#" class="fileDownLink" data-board="ciWork"
|
<a href="#" class="fileDownLink" data-board="ciWork"
|
||||||
th:data-parentkey="${file.ciwKey}" th:data-fileseq="${file.fileSeq}"
|
th:data-parentkey="${file.caseKey}" th:data-fileseq="${file.fileSeq}"
|
||||||
th:text="|${file.origNm}.${file.fileExtn}|"></a>
|
th:text="|${file.origNm}.${file.fileExtn}|"></a>
|
||||||
</td>
|
</td>
|
||||||
<td th:text="${file.fileSize}"></td>
|
<td th:text="${file.fileSize}"></td>
|
||||||
|
|
@ -108,11 +80,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer bg-light">
|
<div class="modal-footer bg-light">
|
||||||
<th:block th:if="${accessAuth eq 'ACC003'}">
|
<button type="button" class="btn btn-danger" id="deleteCiWorkBtn">삭제</button>
|
||||||
<button type="button" class="btn btn-danger" id="deleteCiWorkBtn" th:data-ciwkey="${ciWork.ciwKey}">삭제</button>
|
<button type="button" class="btn btn-warning" id="editCiWorkBtn">수정</button>
|
||||||
</th:block>
|
|
||||||
<th:block th:if="${viewUserSeq eq ciWork.wrtUserSeq}">
|
|
||||||
<button type="button" class="btn btn-warning" id="editCiWorkBtn" th:data-ciwkey="${ciWork.ciwKey}">수정</button>
|
|
||||||
</th:block>
|
|
||||||
<!-- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>-->
|
<!-- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>-->
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -107,60 +107,39 @@
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="table-secondary">
|
<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>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="table-group-divider">
|
<tbody class="table-group-divider">
|
||||||
<!--<tr class="activityCaseTr" th:each="ciWork:${activityCaseList}">
|
<tr class="activityCaseTr" th:each="case,cnt:${activityCaseList}">
|
||||||
<input type="hidden" class="ciwKey" th:value="${ciWork.ciwKey}">
|
<input type="hidden" class="receiptKey" th:value="${case.receiptKey}">
|
||||||
|
<td th:text="${cnt.count+(searchParams.pageIndex-1)*searchParams.rowCnt}"></td>
|
||||||
<td>
|
<td>
|
||||||
<th:block th:each="code:${session.commonCode.get('CIWR')}">
|
<th:block th:each="code:${session.commonCode.get('ACT')}">
|
||||||
<th:block th:if="${code.itemCd eq ciWork.workRating}" th:text="${code.itemValue}"></th:block>
|
<th:block th:if="${code.itemCd eq case.caseType}" th:text="${code.itemValue}"></th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td th:text="${case.receiptNum}"></td>
|
||||||
<th:block th:each="code:${session.commonCode.get('AT')}">
|
<td th:text="${case.caseNum}"></td>
|
||||||
<th:block th:if="${code.itemCd eq ciWork.arrestType1}" th:text="${code.itemValue}"></th:block>
|
<td th:text="${case.title}"></td>
|
||||||
</th:block>
|
<td th:text="${#temporals.format(case.reportDate, 'yyyy-MM-dd')}"></td>
|
||||||
</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>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<div th:text="${ciWork.workStartDate}"></div>
|
|
||||||
<div th:text="${#strings.concat('~ ', ciWork.workEndDate)}"></div>
|
|
||||||
</td>
|
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
|
||||||
<td th:if="${ciWork.wrtOrgan eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
|
|
||||||
</th:block>
|
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('OFC')}">
|
|
||||||
<td th:if="${ciWork.wrtPart eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
|
|
||||||
</th:block>
|
|
||||||
<td>
|
<td>
|
||||||
<th:block th:each="code:${session.commonCode.get('JT')}">
|
<th:block th:each="code:${session.commonCode.get('JT')}">
|
||||||
<th:block th:if="${code.itemCd eq ciWork.wrtUserGrd}" th:text="|${code.itemValue} ${ciWork.wrtUserNm}|"></th:block>
|
<th:block th:if="${code.itemCd eq case.wrtUserGrd}" th:text="${code.itemValue}"></th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
</td>
|
</td>
|
||||||
<td th:text="${#temporals.format(ciWork.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
<td th:text="${#temporals.format(case.wrtDt, 'yyyy-MM-dd')}"></td>
|
||||||
<td th:text="${ciWork.fileCnt eq null?'파일 없음':#strings.concat(ciWork.fileCnt,' 건')}"></td>
|
<td th:text="${#strings.concat(case.apprvCnt, '/', case.allCnt)}"></td>
|
||||||
<td>
|
<td th:text="${case.fileCnt}"></td>
|
||||||
<div th:text="|1차: ${ciWork.reRatingDate1}|"></div>
|
</tr>
|
||||||
<div th:text="|2차: ${ciWork.reRatingDate2}|"></div>
|
|
||||||
</td>
|
|
||||||
</tr>-->
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -210,6 +189,13 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="modal fade" id="activityCaseSummaryModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="activityCaseModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
||||||
|
<div class="modal-content" id="activityCaseSummaryModalBody">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="modal fade" id="activityCaseViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="activityCaseModalLabel" aria-hidden="true">
|
<div class="modal fade" id="activityCaseViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="activityCaseModalLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
||||||
<div class="modal-content" id="activityCaseViewModalBody">
|
<div class="modal-content" id="activityCaseViewModalBody">
|
||||||
|
|
@ -221,7 +207,7 @@
|
||||||
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header bg-dark">
|
<div class="modal-header bg-dark">
|
||||||
<h5 class="modal-title text-white" id="menuModalLabel">담당관 검색</h5>
|
<h5 class="modal-title text-white" id="menuModalLabel">결재자 검색</h5>
|
||||||
<input type="hidden" id="modalUrl" value="/modal/userModal">
|
<input type="hidden" id="modalUrl" value="/modal/userModal">
|
||||||
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<div class="modal-header bg-dark">
|
||||||
|
<h5 class="modal-title text-white" id="activityCaseSummaryModalLabel">보고서 목록</h5>
|
||||||
|
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body" id="activityCaseSummaryBody">
|
||||||
|
<table class="table table-sm table-bordered table-hover">
|
||||||
|
<thead>
|
||||||
|
<tr class="table-secondary">
|
||||||
|
<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">
|
||||||
|
<tr class="summaryTr" th:each="case,cnt:${activityCaseList}">
|
||||||
|
<input type="hidden" class="caseKey" th:value="${case.caseKey}">
|
||||||
|
<td>
|
||||||
|
<th:block th:each="code:${session.commonCode.get('ACT')}">
|
||||||
|
<th:block th:if="${code.itemCd eq case.caseType}" th:text="${code.itemValue}"></th:block>
|
||||||
|
</th:block>
|
||||||
|
</td>
|
||||||
|
<td th:text="${case.receiptNum}"></td>
|
||||||
|
<td th:text="${case.caseNum}"></td>
|
||||||
|
<td th:text="${case.title}"></td>
|
||||||
|
<td th:text="${#temporals.format(case.reportDate, 'yyyy-MM-dd')}"></td>
|
||||||
|
<td>
|
||||||
|
<th:block th:each="code:${session.commonCode.get('JT')}">
|
||||||
|
<th:block th:if="${code.itemCd eq case.wrtUserGrd}" th:text="${code.itemValue}"></th:block>
|
||||||
|
</th:block>
|
||||||
|
</td>
|
||||||
|
<td th:text="${#temporals.format(case.wrtDt, 'yyyy-MM-dd')}"></td>
|
||||||
|
<td th:text="${#strings.concat(case.apprvCnt, '/', case.allCnt)}"></td>
|
||||||
|
<td th:text="${case.fileCnt}"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer bg-light">
|
||||||
|
<button type="button" class="btn btn-outline-dark">진행보고서 작성</button>
|
||||||
|
<button type="button" class="btn btn-outline-dark">결과보고서 작성</button>
|
||||||
|
</div>
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<th:block th:each="user:${userList}">
|
||||||
|
<div class="col-sm-12 apprvDiv">
|
||||||
|
<input type="hidden" class="userSeq" th:value="${user.userSeq}">
|
||||||
|
<input type="hidden" class="ogCd" th:value="${user.ogCd}">
|
||||||
|
<input type="hidden" class="ofcCd" th:value="${user.ofcCd}">
|
||||||
|
<input type="hidden" class="titleCd" th:value="${user.titleCd}">
|
||||||
|
<input type="hidden" class="userNm" th:value="${user.userNm}">
|
||||||
|
<div class="row mx-2 my-1">
|
||||||
|
<div class="col-12 mb-1">
|
||||||
|
<div class="row">
|
||||||
|
<label class="col-sm-1 col-form-label col-form-label-sm text-center">경로</label>
|
||||||
|
<div class="col-2">
|
||||||
|
<input type="text" class="form-control form-control-sm apprvPath">
|
||||||
|
</div>
|
||||||
|
<label class="col-sm-1 col-form-label col-form-label-sm text-center">구분</label>
|
||||||
|
<div class="col-2">
|
||||||
|
<input type="text" class="form-control form-control-sm apprvType">
|
||||||
|
</div>
|
||||||
|
<label class="col-sm-3 col-form-label col-form-label-sm text-start">
|
||||||
|
<th:block th:each="code:${session.commonCode.get('OG')}">
|
||||||
|
<th:block th:if="${code.itemCd eq user.ogCd}" th:text="${code.itemValue}"></th:block>
|
||||||
|
</th:block>
|
||||||
|
<th:block th:each="code:${session.commonCode.get(user.ogCd)}">
|
||||||
|
<th:block th:if="${code.itemCd eq user.ofcCd}" th:text="${code.itemValue}"></th:block>
|
||||||
|
</th:block>
|
||||||
|
<th:block th:each="code:${session.commonCode.get('JT')}">
|
||||||
|
<th:block th:if="${code.itemCd eq user.titleCd}" th:text="${code.itemValue}"></th:block>
|
||||||
|
</th:block>
|
||||||
|
<th:block th:text="${user.userNm}"></th:block>
|
||||||
|
</label>
|
||||||
|
<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>
|
||||||
|
</th:block>
|
||||||
|
</html>
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
<select class="form-select form-select-sm suspectType">
|
<select class="form-select form-select-sm suspectType">
|
||||||
<option value="">선택</option>
|
<option value="">선택</option>
|
||||||
<th:block th:each="code:${acsList}">
|
<th:block th:each="code:${session.commonCode.get('ACS')}">
|
||||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
|
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
|
||||||
</th:block>
|
</th:block>
|
||||||
</select>
|
</select>
|
||||||
|
|
@ -19,11 +19,16 @@
|
||||||
</div>
|
</div>
|
||||||
<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">
|
||||||
<input type="text" class="form-control form-control-sm suspectSex">
|
<select class="form-select form-select-sm suspectSex">
|
||||||
|
<option value="">선택</option>
|
||||||
|
<th:block th:each="code:${session.commonCode.get('SEX')}">
|
||||||
|
<option th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<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">
|
||||||
<input type="text" class="form-control form-control-sm suspectBirthDate">
|
<input type="text" class="form-control form-control-sm suspectBirthDate" placeholder="0000-00-00">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue