치안수요 분석결과 오류 수정중.
parent
341d7b60bb
commit
2fd4fb2d2e
|
|
@ -38,8 +38,8 @@ public class BaseService {
|
|||
protected String sriPath;
|
||||
@Value("${file.dir.ciw}")
|
||||
protected String ciwPath;
|
||||
@Value("${file.dir.cia.safty}")
|
||||
protected String ciaSaftyPath;
|
||||
@Value("${file.dir.cia.safety}")
|
||||
protected String ciaSafetyPath;
|
||||
@Value("${file.dir.cia.company}")
|
||||
protected String ciaCompanyPath;
|
||||
@Value("${file.dir.cia.foreigner}")
|
||||
|
|
|
|||
|
|
@ -4,8 +4,6 @@ import com.dbnt.faisp.main.authMgt.service.AuthMgtService;
|
|||
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
|
||||
import com.dbnt.faisp.main.counterIntelligence.model.*;
|
||||
import com.dbnt.faisp.main.counterIntelligence.service.CounterIntelligenceService;
|
||||
import com.dbnt.faisp.main.equip.model.Equip;
|
||||
import com.dbnt.faisp.main.equip.model.EquipFile;
|
||||
import com.dbnt.faisp.main.userInfo.model.UserInfo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||
|
|
@ -13,6 +11,7 @@ import org.springframework.web.bind.annotation.*;
|
|||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
|
|
@ -20,8 +19,6 @@ import java.io.InputStream;
|
|||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/counterIntelligence")
|
||||
|
|
@ -122,36 +119,7 @@ public class CounterIntelligenceController {
|
|||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/ciaSaftyDemandList")
|
||||
public ModelAndView ciaSaftyDemandList(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
ModelAndView mav = new ModelAndView("counterIntelligence/ciaSaftyDemandList");
|
||||
String accessAuth = authMgtService.selectAccessConfigList
|
||||
(loginUser.getUserSeq(), "/counterIntelligence/ciaSaftyDemandList").get(0).getAccessAuth();
|
||||
mav.addObject("accessAuth", accessAuth);
|
||||
|
||||
cia.setDownOrganCdList(loginUser.getDownOrganCdList());
|
||||
cia.setWrtUserSeq(loginUser.getUserSeq());
|
||||
cia.setQueryInfo();
|
||||
mav.addObject("sdiList", ciService.selectCiaSaftyDemandList(cia));
|
||||
cia.setContentCnt(ciService.selectCiaSaftyDemandListCnt(cia));
|
||||
cia.setPaginationInfo();
|
||||
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
|
||||
mav.addObject("loginUserSeq", loginUser.getUserSeq());
|
||||
mav.addObject("searchParams", cia);
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/ciaSaftyDemandEditModal")
|
||||
public ModelAndView ciaSaftyDemandEditModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
ModelAndView mav = new ModelAndView("counterIntelligence/ciaSaftyDemandEditModal");
|
||||
if(cia.getCiKey() != null) {
|
||||
cia = ciService.selectSaftyDemandInfo(cia);
|
||||
}else{
|
||||
cia.setSaftyDemandInfo(new SaftyDemandInfo());
|
||||
}
|
||||
mav.addObject("cia", cia);
|
||||
return mav;
|
||||
}
|
||||
|
||||
@PostMapping("/saveCiActivity")
|
||||
public Integer saveCiActivity(CounterIntelligenceActivity cia,@AuthenticationPrincipal UserInfo loginUser,
|
||||
|
|
@ -167,33 +135,28 @@ public class CounterIntelligenceController {
|
|||
cia.setWrtDt(LocalDateTime.now());
|
||||
}
|
||||
Integer ciKey = ciService.saveCiActivity(cia, deleteFileSeq);
|
||||
switch (cia.getCiType()) {
|
||||
case "SDI": // 치안수요분석
|
||||
ciService.saveSaftyDemand(cia);
|
||||
break;
|
||||
case "MCI": // 해양산업보호관리업체
|
||||
ciService.saveManageCompany(cia);
|
||||
break;
|
||||
case "FI": // 외국인커뮤니티모니터링
|
||||
ciService.saveForeigner(cia);
|
||||
break;
|
||||
case "EI": // 방첩교육실시
|
||||
ciService.saveEdu(cia);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
return ciKey;
|
||||
}
|
||||
|
||||
@GetMapping("/ciaSaftyDemandViewModal")
|
||||
public ModelAndView ciaSaftyDemandViewModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
ModelAndView mav = new ModelAndView("counterIntelligence/ciaSaftyDemandViewModal");
|
||||
|
||||
@GetMapping("/ciaSafetyDemandList")
|
||||
public ModelAndView ciaSafetyDemandList(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
ModelAndView mav = new ModelAndView("counterIntelligence/ciaSafetyDemandList");
|
||||
String accessAuth = authMgtService.selectAccessConfigList
|
||||
(loginUser.getUserSeq(), "/counterIntelligence/ciaSaftyDemandList").get(0).getAccessAuth();
|
||||
(loginUser.getUserSeq(), "/counterIntelligence/ciaSafetyDemandList").get(0).getAccessAuth();
|
||||
mav.addObject("accessAuth", accessAuth);
|
||||
mav.addObject("lineSeparator", '\n');
|
||||
mav.addObject("viewUserSeq", loginUser.getUserSeq());
|
||||
mav.addObject("cia", ciService.selectSaftyDemandInfo(cia));
|
||||
|
||||
cia.setDownOrganCdList(loginUser.getDownOrganCdList());
|
||||
cia.setWrtUserSeq(loginUser.getUserSeq());
|
||||
cia.setQueryInfo();
|
||||
mav.addObject("sdiList", ciService.selectCiaSafetyDemandList(cia));
|
||||
cia.setContentCnt(ciService.selectCiaSafetyDemandListCnt(cia));
|
||||
cia.setPaginationInfo();
|
||||
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
|
||||
mav.addObject("loginUserSeq", loginUser.getUserSeq());
|
||||
mav.addObject("searchParams", cia);
|
||||
return mav;
|
||||
}
|
||||
|
||||
|
|
@ -216,31 +179,7 @@ public class CounterIntelligenceController {
|
|||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/ciaManageCompanyEditModal")
|
||||
public ModelAndView ciaManageCompanyEditModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
ModelAndView mav = new ModelAndView("counterIntelligence/ciaManageCompanyEditModal");
|
||||
if(cia.getCiKey() != null) {
|
||||
cia = ciService.selectManageCompanyInfo(cia);
|
||||
}else{
|
||||
cia.setManageCompanyInfo(new ManageCompanyInfo());
|
||||
}
|
||||
|
||||
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
|
||||
mav.addObject("cia", cia);
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/ciaManageCompanyViewModal")
|
||||
public ModelAndView ciaManageCompanyViewModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
ModelAndView mav = new ModelAndView("counterIntelligence/ciaManageCompanyViewModal");
|
||||
String accessAuth = authMgtService.selectAccessConfigList
|
||||
(loginUser.getUserSeq(), "/counterIntelligence/ciaManageCompanyList").get(0).getAccessAuth();
|
||||
mav.addObject("accessAuth", accessAuth);
|
||||
mav.addObject("lineSeparator", '\n');
|
||||
mav.addObject("viewUserSeq", loginUser.getUserSeq());
|
||||
mav.addObject("cia", ciService.selectManageCompanyInfo(cia));
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/ciaForeignerList")
|
||||
public ModelAndView ciaForeignerList(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
|
|
@ -261,31 +200,6 @@ public class CounterIntelligenceController {
|
|||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/ciaForeignerEditModal")
|
||||
public ModelAndView ciaForeignerEditModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
ModelAndView mav = new ModelAndView("counterIntelligence/ciaForeignerEditModal");
|
||||
if(cia.getCiKey() != null) {
|
||||
cia = ciService.selectForeignerInfo(cia);
|
||||
}else{
|
||||
cia.setForeignerInfo(new ForeignerInfo());
|
||||
}
|
||||
|
||||
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
|
||||
mav.addObject("cia", cia);
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/ciaForeignerViewModal")
|
||||
public ModelAndView ciaForeignerViewModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
ModelAndView mav = new ModelAndView("counterIntelligence/ciaForeignerViewModal");
|
||||
String accessAuth = authMgtService.selectAccessConfigList
|
||||
(loginUser.getUserSeq(), "/counterIntelligence/ciaForeignerList").get(0).getAccessAuth();
|
||||
mav.addObject("accessAuth", accessAuth);
|
||||
mav.addObject("lineSeparator", '\n');
|
||||
mav.addObject("viewUserSeq", loginUser.getUserSeq());
|
||||
mav.addObject("cia", ciService.selectForeignerInfo(cia));
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/ciaEduList")
|
||||
public ModelAndView ciaEduList(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
|
|
@ -306,29 +220,59 @@ public class CounterIntelligenceController {
|
|||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/ciaEduEditModal")
|
||||
public ModelAndView ciaEduEditModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
ModelAndView mav = new ModelAndView("counterIntelligence/ciaEduEditModal");
|
||||
if(cia.getCiKey() != null) {
|
||||
cia = ciService.selectEduInfo(cia);
|
||||
}else{
|
||||
cia.setEduInfo(new EduInfo());
|
||||
}
|
||||
|
||||
@GetMapping("/ciaEditModal")
|
||||
public ModelAndView ciaEditModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
ModelAndView mav = null;
|
||||
switch (cia.getCiType()){
|
||||
case "SDI":
|
||||
mav = new ModelAndView("counterIntelligence/ciaSafetyDemandEditModal");
|
||||
break;
|
||||
case "MCI":
|
||||
mav = new ModelAndView("counterIntelligence/ciaManageCompanyEditModal");
|
||||
break;
|
||||
case "FI":
|
||||
mav = new ModelAndView("counterIntelligence/ciaForeignerEditModal");
|
||||
break;
|
||||
case "EI":
|
||||
mav = new ModelAndView("counterIntelligence/ciaEduEditModal");
|
||||
break;
|
||||
}
|
||||
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
|
||||
mav.addObject("cia", cia);
|
||||
mav.addObject("cia", ciService.selectCiaInfo(cia));
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/ciaEduViewModal")
|
||||
public ModelAndView ciaEduViewModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
ModelAndView mav = new ModelAndView("counterIntelligence/ciaEduViewModal");
|
||||
String accessAuth = authMgtService.selectAccessConfigList
|
||||
@GetMapping("/ciaViewModal")
|
||||
public ModelAndView ciaViewModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
|
||||
ModelAndView mav = null;
|
||||
String accessAuth = null;
|
||||
switch (cia.getCiType()){
|
||||
case "SDI":
|
||||
mav = new ModelAndView("counterIntelligence/ciaSafetyDemandViewModal");
|
||||
accessAuth = authMgtService.selectAccessConfigList
|
||||
(loginUser.getUserSeq(), "/counterIntelligence/ciaSafetyDemandList").get(0).getAccessAuth();
|
||||
break;
|
||||
case "MCI":
|
||||
mav = new ModelAndView("counterIntelligence/ciaManageCompanyViewModal");
|
||||
accessAuth = authMgtService.selectAccessConfigList
|
||||
(loginUser.getUserSeq(), "/counterIntelligence/ciaManageCompanyList").get(0).getAccessAuth();
|
||||
break;
|
||||
case "FI":
|
||||
mav = new ModelAndView("counterIntelligence/ciaForeignerViewModal");
|
||||
accessAuth = authMgtService.selectAccessConfigList
|
||||
(loginUser.getUserSeq(), "/counterIntelligence/ciaForeignerList").get(0).getAccessAuth();
|
||||
break;
|
||||
case "EI":
|
||||
mav = new ModelAndView("counterIntelligence/ciaEduViewModal");
|
||||
accessAuth = authMgtService.selectAccessConfigList
|
||||
(loginUser.getUserSeq(), "/counterIntelligence/ciaEduList").get(0).getAccessAuth();
|
||||
break;
|
||||
}
|
||||
mav.addObject("accessAuth", accessAuth);
|
||||
mav.addObject("lineSeparator", '\n');
|
||||
mav.addObject("viewUserSeq", loginUser.getUserSeq());
|
||||
mav.addObject("cia", ciService.selectEduInfo(cia));
|
||||
mav.addObject("cia", ciService.selectCiaInfo(cia));
|
||||
return mav;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,9 +23,9 @@ public interface CounterIntelligenceMapper {
|
|||
|
||||
List<Integer> selectCiWorkYearList();
|
||||
|
||||
List<CounterIntelligenceActivity> selectCiaSaftyDemandList(CounterIntelligenceActivity cia);
|
||||
List<CounterIntelligenceActivity> selectCiaSafetyDemandList(CounterIntelligenceActivity cia);
|
||||
|
||||
Integer selectCiaSaftyDemandListCnt(CounterIntelligenceActivity cia);
|
||||
Integer selectCiaSafetyDemandListCnt(CounterIntelligenceActivity cia);
|
||||
|
||||
List<CounterIntelligenceActivity> selectCiaManageCompanyList(CounterIntelligenceActivity cia);
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public class CounterIntelligenceActivity extends BaseModel {
|
|||
@Transient
|
||||
private Integer fileCnt;
|
||||
@Transient
|
||||
private SaftyDemandInfo saftyDemandInfo;
|
||||
private SafetyDemandInfo safetyDemandInfo;
|
||||
@Transient
|
||||
private ManageCompanyInfo manageCompanyInfo;
|
||||
@Transient
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ import javax.persistence.*;
|
|||
@NoArgsConstructor
|
||||
@DynamicInsert
|
||||
@DynamicUpdate
|
||||
@Table(name = "safty_demand_info")
|
||||
public class SaftyDemandInfo {
|
||||
@Table(name = "safety_demand_info")
|
||||
public class SafetyDemandInfo {
|
||||
@Id
|
||||
@Column(name = "ci_key")
|
||||
private Integer ciKey;
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
package com.dbnt.faisp.main.counterIntelligence.repository;
|
||||
|
||||
import com.dbnt.faisp.main.counterIntelligence.model.SafetyDemandInfo;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
|
||||
public interface SafetyDemandInfoRepository extends JpaRepository<SafetyDemandInfo, Integer> {
|
||||
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
package com.dbnt.faisp.main.counterIntelligence.repository;
|
||||
|
||||
import com.dbnt.faisp.main.counterIntelligence.model.SaftyDemandInfo;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
public interface SaftyDemandInfoRepository extends JpaRepository<SaftyDemandInfo, Integer> {
|
||||
|
||||
}
|
||||
|
|
@ -12,7 +12,7 @@ import com.dbnt.faisp.main.counterIntelligence.model.EduInfo;
|
|||
import com.dbnt.faisp.main.counterIntelligence.model.ForeignerInfo;
|
||||
import com.dbnt.faisp.main.counterIntelligence.model.HashTagLinkCiw;
|
||||
import com.dbnt.faisp.main.counterIntelligence.model.ManageCompanyInfo;
|
||||
import com.dbnt.faisp.main.counterIntelligence.model.SaftyDemandInfo;
|
||||
import com.dbnt.faisp.main.counterIntelligence.model.SafetyDemandInfo;
|
||||
import com.dbnt.faisp.main.counterIntelligence.repository.CiaFileRepository;
|
||||
import com.dbnt.faisp.main.counterIntelligence.repository.CiwFileRepository;
|
||||
import com.dbnt.faisp.main.counterIntelligence.repository.CounterIntelligenceActivityRepository;
|
||||
|
|
@ -21,13 +21,14 @@ import com.dbnt.faisp.main.counterIntelligence.repository.EduInfoRepository;
|
|||
import com.dbnt.faisp.main.counterIntelligence.repository.ForeignerInfoRepository;
|
||||
import com.dbnt.faisp.main.counterIntelligence.repository.HashTagLinkCiwRepository;
|
||||
import com.dbnt.faisp.main.counterIntelligence.repository.ManageCompanyInfoRepository;
|
||||
import com.dbnt.faisp.main.counterIntelligence.repository.SaftyDemandInfoRepository;
|
||||
import com.dbnt.faisp.main.counterIntelligence.repository.SafetyDemandInfoRepository;
|
||||
import com.dbnt.faisp.main.equip.model.EquipFile;
|
||||
import com.dbnt.faisp.main.hashTag.service.HashTagService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
|
@ -42,7 +43,7 @@ public class CounterIntelligenceService extends BaseService {
|
|||
private final HashTagLinkCiwRepository hashTagLinkCiwRepository;
|
||||
private final CounterIntelligenceActivityRepository counterIntelligenceActivityRepository;
|
||||
private final CiaFileRepository ciaFileRepository;
|
||||
private final SaftyDemandInfoRepository saftyDemandInfoRepository;
|
||||
private final SafetyDemandInfoRepository safetyDemandInfoRepository;
|
||||
private final ManageCompanyInfoRepository manageCompanyInfoRepository;
|
||||
private final ForeignerInfoRepository foreignerInfoRepository;
|
||||
private final EduInfoRepository eduInfoRepository;
|
||||
|
|
@ -158,6 +159,20 @@ public class CounterIntelligenceService extends BaseService {
|
|||
if(cia.getMultipartFileList()!=null){
|
||||
saveCiaUploadFiles(ciKey, cia.getMultipartFileList());
|
||||
}
|
||||
switch (cia.getCiType()) {
|
||||
case "SDI": // 치안수요분석
|
||||
saveSafetyDemand(cia);
|
||||
break;
|
||||
case "MCI": // 해양산업보호관리업체
|
||||
saveManageCompany(cia);
|
||||
break;
|
||||
case "FI": // 외국인커뮤니티모니터링
|
||||
saveForeigner(cia);
|
||||
break;
|
||||
case "EI": // 방첩교육실시
|
||||
saveEdu(cia);
|
||||
break;
|
||||
}
|
||||
return ciKey;
|
||||
}
|
||||
|
||||
|
|
@ -194,29 +209,20 @@ public class CounterIntelligenceService extends BaseService {
|
|||
}
|
||||
|
||||
@Transactional
|
||||
public void saveSaftyDemand(CounterIntelligenceActivity cia) {
|
||||
SaftyDemandInfo sdi = new SaftyDemandInfo();
|
||||
public void saveSafetyDemand(CounterIntelligenceActivity cia) {
|
||||
SafetyDemandInfo sdi = new SafetyDemandInfo();
|
||||
sdi.setCiKey(cia.getCiKey());
|
||||
sdi.setLocalInfo(cia.getLocalInfo());
|
||||
sdi.setOutlookProblem(cia.getOutlookProblem());
|
||||
saftyDemandInfoRepository.save(sdi);
|
||||
safetyDemandInfoRepository.save(sdi);
|
||||
}
|
||||
|
||||
public List<CounterIntelligenceActivity> selectCiaSaftyDemandList(CounterIntelligenceActivity cia) {
|
||||
return ciMapper.selectCiaSaftyDemandList(cia);
|
||||
public List<CounterIntelligenceActivity> selectCiaSafetyDemandList(CounterIntelligenceActivity cia) {
|
||||
return ciMapper.selectCiaSafetyDemandList(cia);
|
||||
}
|
||||
|
||||
public Integer selectCiaSaftyDemandListCnt(CounterIntelligenceActivity cia) {
|
||||
return ciMapper.selectCiaSaftyDemandListCnt(cia);
|
||||
}
|
||||
|
||||
public CounterIntelligenceActivity selectSaftyDemandInfo(CounterIntelligenceActivity cia) {
|
||||
CounterIntelligenceActivity dbCia = counterIntelligenceActivityRepository.findById(cia.getCiKey()).orElse(null);
|
||||
if(dbCia!=null){
|
||||
dbCia.setFileList(ciaFileRepository.findByCiKey(cia.getCiKey()));
|
||||
dbCia.setSaftyDemandInfo(saftyDemandInfoRepository.findById(cia.getCiKey()).orElse(null));
|
||||
}
|
||||
return dbCia;
|
||||
public Integer selectCiaSafetyDemandListCnt(CounterIntelligenceActivity cia) {
|
||||
return ciMapper.selectCiaSafetyDemandListCnt(cia);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
|
|
@ -242,15 +248,6 @@ public class CounterIntelligenceService extends BaseService {
|
|||
return ciMapper.selectCiaManageCompanyListCnt(cia);
|
||||
}
|
||||
|
||||
public CounterIntelligenceActivity selectManageCompanyInfo(CounterIntelligenceActivity cia) {
|
||||
CounterIntelligenceActivity dbCia = counterIntelligenceActivityRepository.findById(cia.getCiKey()).orElse(null);
|
||||
if(dbCia!=null){
|
||||
dbCia.setFileList(ciaFileRepository.findByCiKey(cia.getCiKey()));
|
||||
dbCia.setManageCompanyInfo(manageCompanyInfoRepository.findById(cia.getCiKey()).orElse(null));
|
||||
}
|
||||
return dbCia;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void saveForeigner(CounterIntelligenceActivity cia) {
|
||||
ForeignerInfo fi = new ForeignerInfo();
|
||||
|
|
@ -274,15 +271,6 @@ public class CounterIntelligenceService extends BaseService {
|
|||
return ciMapper.selectCiaForeignerListCnt(cia);
|
||||
}
|
||||
|
||||
public CounterIntelligenceActivity selectForeignerInfo(CounterIntelligenceActivity cia) {
|
||||
CounterIntelligenceActivity dbCia = counterIntelligenceActivityRepository.findById(cia.getCiKey()).orElse(null);
|
||||
if(dbCia!=null){
|
||||
dbCia.setFileList(ciaFileRepository.findByCiKey(cia.getCiKey()));
|
||||
dbCia.setForeignerInfo(foreignerInfoRepository.findById(cia.getCiKey()).orElse(null));
|
||||
}
|
||||
return dbCia;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void saveEdu(CounterIntelligenceActivity cia) {
|
||||
EduInfo ei = new EduInfo();
|
||||
|
|
@ -324,4 +312,45 @@ public class CounterIntelligenceService extends BaseService {
|
|||
}
|
||||
|
||||
|
||||
public CounterIntelligenceActivity selectCiaInfo(CounterIntelligenceActivity cia) {
|
||||
switch (cia.getCiType()){
|
||||
case "SDI":
|
||||
if(cia.getCiKey() != null){
|
||||
cia = counterIntelligenceActivityRepository.findById(cia.getCiKey()).orElse(new CounterIntelligenceActivity());
|
||||
cia.setFileList(ciaFileRepository.findByCiKey(cia.getCiKey()));
|
||||
cia.setSafetyDemandInfo(safetyDemandInfoRepository.findById(cia.getCiKey()).orElse(new SafetyDemandInfo()));
|
||||
}else{
|
||||
cia.setSafetyDemandInfo(new SafetyDemandInfo());
|
||||
}
|
||||
break;
|
||||
case "MCI":
|
||||
if(cia.getCiKey() != null){
|
||||
cia = counterIntelligenceActivityRepository.findById(cia.getCiKey()).orElse(new CounterIntelligenceActivity());
|
||||
cia.setFileList(ciaFileRepository.findByCiKey(cia.getCiKey()));
|
||||
cia.setManageCompanyInfo(manageCompanyInfoRepository.findById(cia.getCiKey()).orElse(new ManageCompanyInfo()));
|
||||
}else{
|
||||
cia.setManageCompanyInfo(new ManageCompanyInfo());
|
||||
}
|
||||
break;
|
||||
case "FI":
|
||||
if(cia.getCiKey() != null){
|
||||
cia = counterIntelligenceActivityRepository.findById(cia.getCiKey()).orElse(new CounterIntelligenceActivity());
|
||||
cia.setFileList(ciaFileRepository.findByCiKey(cia.getCiKey()));
|
||||
cia.setForeignerInfo(foreignerInfoRepository.findById(cia.getCiKey()).orElse(new ForeignerInfo()));
|
||||
}else{
|
||||
cia.setForeignerInfo(new ForeignerInfo());
|
||||
}
|
||||
break;
|
||||
case "EI":
|
||||
if(cia.getCiKey() != null){
|
||||
cia = counterIntelligenceActivityRepository.findById(cia.getCiKey()).orElse(new CounterIntelligenceActivity());
|
||||
cia.setFileList(ciaFileRepository.findByCiKey(cia.getCiKey()));
|
||||
cia.setEduInfo(eduInfoRepository.findById(cia.getCiKey()).orElse(new EduInfo()));
|
||||
}else{
|
||||
cia.setEduInfo(new EduInfo());
|
||||
}
|
||||
break;
|
||||
}
|
||||
return cia;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ file.dir.affair.result=/affairResult
|
|||
file.dir.editor=/editor
|
||||
file.dir.sri=/sri
|
||||
file.dir.ciw=/ciw
|
||||
file.dir.cia.safty=/cia/safty
|
||||
file.dir.cia.safety=/cia/safety
|
||||
file.dir.cia.company=/cia/company
|
||||
file.dir.cia.foreigner=/cia/foreigner
|
||||
file.dir.cia.edu=/cia/edu
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ file.dir.affair.result=/affairResult
|
|||
file.dir.editor=/editor
|
||||
file.dir.sri=/sri
|
||||
file.dir.ciw=/ciw
|
||||
file.dir.cia.safty=/cia/safty
|
||||
file.dir.cia.safety=/cia/safety
|
||||
file.dir.cia.company=/cia/company
|
||||
file.dir.cia.foreigner=/cia/foreigner
|
||||
file.dir.cia.edu=/cia/edu
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ file.dir.affair.result=/affairResult
|
|||
file.dir.editor=/editor
|
||||
file.dir.sri=/sri
|
||||
file.dir.ciw=/ciw
|
||||
file.dir.cia.safty=/cia/safty
|
||||
file.dir.cia.safety=/cia/safety
|
||||
file.dir.cia.company=/cia/company
|
||||
file.dir.cia.foreigner=/cia/foreigner
|
||||
file.dir.cia.edu=/cia/edu
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ file.dir.affair.result=/affairResult
|
|||
file.dir.editor=/editor
|
||||
file.dir.sri=/sri
|
||||
file.dir.ciw=/ciw
|
||||
file.dir.cia.safty=/cia/safty
|
||||
file.dir.cia.safety=/cia/safety
|
||||
file.dir.cia.company=/cia/company
|
||||
file.dir.cia.foreigner=/cia/foreigner
|
||||
file.dir.cia.edu=/cia/edu
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ file.dir.affair.result=/affairResult
|
|||
file.dir.editor=/editor
|
||||
file.dir.sri=/sri
|
||||
file.dir.ciw=/ciw
|
||||
file.dir.cia.safty=/cia/safty
|
||||
file.dir.cia.safety=/cia/safety
|
||||
file.dir.cia.company=/cia/company
|
||||
file.dir.cia.foreigner=/cia/foreigner
|
||||
file.dir.cia.edu=/cia/edu
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@
|
|||
</select>
|
||||
|
||||
|
||||
<select id="selectCiaSaftyDemandList" parameterType="CounterIntelligenceActivity" resultType="CounterIntelligenceActivity">
|
||||
<select id="selectCiaSafetyDemandList" parameterType="CounterIntelligenceActivity" resultType="CounterIntelligenceActivity">
|
||||
select cia.ci_key,
|
||||
(select item_value from code_mgt where item_cd = cia.content_status) as content_status,
|
||||
cia.ci_type,
|
||||
|
|
@ -160,7 +160,7 @@
|
|||
cia.wrt_user_nm,
|
||||
cia.wrt_dt
|
||||
from counter_intelligence_activity cia,
|
||||
safty_demand_info sdi
|
||||
safety_demand_info sdi
|
||||
where cia.ci_key = sdi.ci_key
|
||||
and cia.content_status != 'DST008'
|
||||
and ((cia.wrt_user_seq = #{wrtUserSeq} and cia.content_status = 'DST001') or cia.content_status = 'DST007')
|
||||
|
|
@ -184,7 +184,7 @@
|
|||
LIMIT #{rowCnt} OFFSET #{firstIndex}
|
||||
</select>
|
||||
|
||||
<select id="selectCiaSaftyDemandListCnt" parameterType="CounterIntelligenceActivity" resultType="Integer">
|
||||
<select id="selectCiaSafetyDemandListCnt" parameterType="CounterIntelligenceActivity" resultType="Integer">
|
||||
select count(*)
|
||||
from(
|
||||
select cia.ci_key,
|
||||
|
|
@ -198,7 +198,7 @@
|
|||
cia.wrt_user_nm,
|
||||
cia.wrt_dt
|
||||
from counter_intelligence_activity cia,
|
||||
safty_demand_info sdi
|
||||
safety_demand_info sdi
|
||||
where cia.ci_key = sdi.ci_key
|
||||
and cia.content_status != 'DST008'
|
||||
and ((cia.wrt_user_seq = #{wrtUserSeq} and cia.content_status = 'DST001') or cia.content_status = 'DST007')
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ $(document).on('click', '#addBtn', function (){
|
|||
|
||||
function getCiaEduEditModal(ciKey){
|
||||
$.ajax({
|
||||
url: '/counterIntelligence/ciaEduEditModal',
|
||||
data: {ciKey: ciKey},
|
||||
url: '/counterIntelligence/ciaEditModal',
|
||||
data: {ciKey: ciKey, ciType: "EI"},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
|
|
@ -78,8 +78,8 @@ $(document).on('click', '.eiTr', function (){
|
|||
|
||||
function getCiaEduViewModal(ciKey){
|
||||
$.ajax({
|
||||
url: '/counterIntelligence/ciaEduViewModal',
|
||||
data: {ciKey: ciKey},
|
||||
url: '/counterIntelligence/ciaViewModal',
|
||||
data: {ciKey: ciKey, ciType: "EI"},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ $(document).on('click', '#addBtn', function (){
|
|||
|
||||
function getCiaForeignerEditModal(ciKey){
|
||||
$.ajax({
|
||||
url: '/counterIntelligence/ciaForeignerEditModal',
|
||||
data: {ciKey: ciKey},
|
||||
url: '/counterIntelligence/ciaEditModal',
|
||||
data: {ciKey: ciKey, ciType: "FI"},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
|
|
@ -81,8 +81,8 @@ $(document).on('click', '.fiTr', function (){
|
|||
|
||||
function getCiaForeignerViewModal(ciKey){
|
||||
$.ajax({
|
||||
url: '/counterIntelligence/ciaForeignerViewModal',
|
||||
data: {ciKey: ciKey},
|
||||
url: '/counterIntelligence/ciaViewModal',
|
||||
data: {ciKey: ciKey, ciType: "FI"},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ $(document).on('click', '#addBtn', function (){
|
|||
|
||||
function getCiaManageCompanyEditModal(ciKey){
|
||||
$.ajax({
|
||||
url: '/counterIntelligence/ciaManageCompanyEditModal',
|
||||
data: {ciKey: ciKey},
|
||||
url: '/counterIntelligence/ciaEditModal',
|
||||
data: {ciKey: ciKey, ciType: "MCI"},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
|
|
@ -73,8 +73,8 @@ $(document).on('click', '.mciTr', function (){
|
|||
|
||||
function getCiaManageCompanyViewModal(ciKey){
|
||||
$.ajax({
|
||||
url: '/counterIntelligence/ciaManageCompanyViewModal',
|
||||
data: {ciKey: ciKey},
|
||||
url: '/counterIntelligence/ciaViewModal',
|
||||
data: {ciKey: ciKey, ciType: "MCI"},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
|
|
|
|||
|
|
@ -7,19 +7,19 @@ $(function(){
|
|||
})
|
||||
|
||||
$(document).on('click', '#addBtn', function (){
|
||||
getCiaSaftyDemandEditModal(null);
|
||||
getCiaSafetyDemandEditModal(null);
|
||||
})
|
||||
|
||||
function getCiaSaftyDemandEditModal(ciKey){
|
||||
function getCiaSafetyDemandEditModal(ciKey){
|
||||
$.ajax({
|
||||
url: '/counterIntelligence/ciaSaftyDemandEditModal',
|
||||
data: {ciKey: ciKey},
|
||||
url: '/counterIntelligence/ciaEditModal',
|
||||
data: {ciKey: ciKey, ciType: "SDI"},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#ciaSaftyDemandEditModalContent").empty().append(html)
|
||||
$("#ciaSafetyDemandEditModalContent").empty().append(html)
|
||||
setUploadDiv();
|
||||
$("#ciaSaftyDemandEditModal").modal('show');
|
||||
$("#ciaSafetyDemandEditModal").modal('show');
|
||||
},
|
||||
error:function(e){
|
||||
ajaxErrorAction(e);
|
||||
|
|
@ -29,18 +29,18 @@ function getCiaSaftyDemandEditModal(ciKey){
|
|||
|
||||
$(document).on('click', '#saveBtn', function (){
|
||||
if(confirm("저장하시겠습니까?")){
|
||||
save('DST007');
|
||||
saveCia('DST007');
|
||||
}
|
||||
})
|
||||
|
||||
$(document).on('click', '#saveTempBtn', function (){
|
||||
if(confirm("임시저장 하시겠습니까?")){
|
||||
save('DST001');
|
||||
saveCia('DST001');
|
||||
}
|
||||
})
|
||||
|
||||
function save(contentStatus){
|
||||
const formData = new FormData($("#ciaSaftyDemandEditForm")[0]);
|
||||
function saveCia(contentStatus){
|
||||
const formData = new FormData($("#ciaSafetyDemandEditForm")[0]);
|
||||
for(const file of files) {
|
||||
if(!file.isDelete)
|
||||
formData.append('uploadFiles', file, file.name);
|
||||
|
|
@ -90,18 +90,18 @@ $(document).on('click', '#deleteBtn', function (){
|
|||
})
|
||||
|
||||
$(document).on('click', '.sdiTr', function (){
|
||||
getCiaSaftyDemandViewModal($(this).find(".ciKey").val());
|
||||
getCiaSafetyDemandViewModal($(this).find(".ciKey").val());
|
||||
})
|
||||
|
||||
function getCiaSaftyDemandViewModal(ciKey){
|
||||
function getCiaSafetyDemandViewModal(ciKey){
|
||||
$.ajax({
|
||||
url: '/counterIntelligence/ciaSaftyDemandViewModal',
|
||||
data: {ciKey: ciKey},
|
||||
url: '/counterIntelligence/ciaViewModal',
|
||||
data: {ciKey: ciKey, ciType: "SDI"},
|
||||
type: 'GET',
|
||||
dataType:"html",
|
||||
success: function(html){
|
||||
$("#ciaSaftyDemandViewModalBody").empty().append(html)
|
||||
$("#ciaSaftyDemandViewModal").modal('show');
|
||||
$("#ciaSafetyDemandViewModalBody").empty().append(html)
|
||||
$("#ciaSafetyDemandViewModal").modal('show');
|
||||
},
|
||||
error:function(e){
|
||||
ajaxErrorAction(e);
|
||||
|
|
@ -110,8 +110,8 @@ function getCiaSaftyDemandViewModal(ciKey){
|
|||
}
|
||||
|
||||
$(document).on('click', '#editBtn', function (){
|
||||
$("#ciaSaftyDemandViewModal").modal('hide');
|
||||
getCiaSaftyDemandEditModal($(this).attr("data-cikey"));
|
||||
$("#ciaSafetyDemandViewModal").modal('hide');
|
||||
getCiaSafetyDemandEditModal($(this).attr("data-cikey"));
|
||||
})
|
||||
|
||||
$(document).on('click', '#excelDown', function (){
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body" id="ivsgtEditBody">
|
||||
<form action="#" method="post" id="ciaSaftyDemandEditForm">
|
||||
<form action="#" method="post" id="ciaSafetyDemandEditForm">
|
||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||
<input type="hidden" name="ciType" value="SDI">
|
||||
|
|
@ -29,13 +29,13 @@
|
|||
<div class="row mb-1">
|
||||
<label 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" rows="5" cols="30" name="localInfo" th:utext="${cia.saftyDemandInfo.localInfo}"></textarea>
|
||||
<textarea class="form-control form-control-sm" rows="5" cols="30" name="localInfo" th:utext="${cia.safetyDemandInfo.localInfo}"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-1 col-form-label col-form-label-sm text-center">예상<br>문제점</label>
|
||||
<div class="col-sm-11">
|
||||
<textarea class="form-control form-control-sm" rows="5" cols="30" name="outlookProblem" th:utext="${cia.saftyDemandInfo.outlookProblem}"></textarea>
|
||||
<textarea class="form-control form-control-sm" rows="5" cols="30" name="outlookProblem" th:utext="${cia.safetyDemandInfo.outlookProblem}"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||
layout:decorate="~{layout/layout}">
|
||||
<th:block layout:fragment="script">
|
||||
<script type="text/javascript" th:src="@{/js/counterIntelligence/ciaSaftyDemand.js}"></script>
|
||||
<script type="text/javascript" th:src="@{/js/counterIntelligence/ciaSafetyDemand.js}"></script>
|
||||
</th:block>
|
||||
<div layout:fragment="content">
|
||||
<main>
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
<div class="col-12 card bg-light text-center">
|
||||
<div class="card-body">
|
||||
<div class="tab-content bg-white border border-top-0 p-2">
|
||||
<form method="get" th:action="@{/counterIntelligence/ciaSaftyDemandList}">
|
||||
<form method="get" th:action="@{/counterIntelligence/ciaSafetyDemandList}">
|
||||
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
|
||||
<div class="row justify-content-between py-1">
|
||||
<div class="col-auto">
|
||||
|
|
@ -142,16 +142,16 @@
|
|||
</div>
|
||||
</main>
|
||||
|
||||
<div class="modal fade" id="ciaSaftyDemandEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="ciWorkModalLabel" aria-hidden="true">
|
||||
<div class="modal fade" id="ciaSafetyDemandEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="ciWorkModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg modal-dialog-scrollable">
|
||||
<div class="modal-content" id="ciaSaftyDemandEditModalContent">
|
||||
<div class="modal-content" id="ciaSafetyDemandEditModalContent">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" id="ciaSaftyDemandViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="ciWorkModalLabel" aria-hidden="true">
|
||||
<div class="modal fade" id="ciaSafetyDemandViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="ciWorkModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg modal-dialog-scrollable">
|
||||
<div class="modal-content" id="ciaSaftyDemandViewModalBody">
|
||||
<div class="modal-content" id="ciaSafetyDemandViewModalBody">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||
<div class="modal-header bg-dark">
|
||||
<h5 class="modal-title text-white" id="ciaSaftyDemandViewModalLabel">치안수요 열람</h5>
|
||||
<h5 class="modal-title text-white" id="ciaSafetyDemandViewModalLabel">치안수요 열람</h5>
|
||||
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||
<div class="modal-body" id="ciaSaftyDemandViewBody">
|
||||
<div class="modal-body" id="ciaSafetyDemandViewBody">
|
||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||
<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>
|
||||
|
|
@ -22,20 +22,20 @@
|
|||
<label class="col-sm-3 col-form-label col-form-label-sm text-start" th:text="${#temporals.format(cia.wrtDt, 'yyyy-MM-dd HH:mm')}"></label>
|
||||
<label class="col-sm-2 col-form-label col-form-label-sm text-center fw-bold">작성자</label>
|
||||
<label class="col-sm-5 col-form-label col-form-label-sm text-start">
|
||||
<th:block th:each="commonCode:${session.commonCode.get('JT')}">
|
||||
<option th:value="${commonCode.itemCd}" th:if="${commonCode.itemCd eq cia.wrtUserGrd}" th:text="|${commonCode.itemValue} ${cia.wrtUserNm}|"></option>
|
||||
<th:block th:each="code:${session.commonCode.get('JT')}">
|
||||
<option th:value="${code.itemCd}" th:if="${code.itemCd eq cia.wrtUserGrd}" th:text="|${code.itemValue} ${cia.wrtUserNm}|"></option>
|
||||
</th:block>
|
||||
</label>
|
||||
</div>
|
||||
<hr class="my-1">
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-2 col-form-label col-form-label-sm text-center fw-bold">지역특성</label>
|
||||
<div class="col-sm-10 form-control-sm" th:utext="${#strings.replace(cia.saftyDemandInfo.localInfo, lineSeparator, '<br>')}"></div>
|
||||
<div class="col-sm-10 form-control-sm" th:utext="${#strings.replace(cia.safetyDemandInfo.localInfo, lineSeparator, '<br>')}"></div>
|
||||
</div>
|
||||
<hr class="my-1">
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-2 col-form-label col-form-label-sm text-center fw-bold">예상문제점</label>
|
||||
<div class="col-sm-10 form-control-sm" th:utext="${#strings.replace(cia.saftyDemandInfo.outlookProblem, lineSeparator, '<br>')}"></div>
|
||||
<div class="col-sm-10 form-control-sm" th:utext="${#strings.replace(cia.safetyDemandInfo.outlookProblem, lineSeparator, '<br>')}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane fade p-2" id="fileTabPanel" role="tabpanel" tabindex="0">
|
||||
Loading…
Reference in New Issue