수정요청사항 작업중.

master
강석 최 2023-01-10 18:35:52 +09:00
parent bdc9bd7a9a
commit c38e6e64df
22 changed files with 354 additions and 363 deletions

View File

@ -27,125 +27,99 @@ import java.util.List;
@RequestMapping("/faStatistics") @RequestMapping("/faStatistics")
public class InternationalCrimeArrestController { public class InternationalCrimeArrestController {
private final AuthMgtService authMgtService; private final AuthMgtService authMgtService;
private final InternationalCrimeArrestService internationalCrimeArrestService; private final InternationalCrimeArrestService internationalCrimeArrestService;
private final CodeMgtService codeMgtService; private final CodeMgtService codeMgtService;
private final OrganConfigService organConfigService; private final OrganConfigService organConfigService;
private final SuspectPersonInfoRepository suspectPersonInfoRepository; private final SuspectPersonInfoRepository suspectPersonInfoRepository;
@GetMapping("/internationalCrimeArrest") @GetMapping("/internationalCrimeArrest")
public ModelAndView internationalCrimeArrest(@AuthenticationPrincipal UserInfo loginUser,InternationalCrimeArrest internationalCrimeArrest) { public ModelAndView internationalCrimeArrest(@AuthenticationPrincipal UserInfo loginUser,InternationalCrimeArrest internationalCrimeArrest) {
ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrest"); ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrest");
//메뉴권한 확인 //메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/internationalCrimeArrest").get(0).getAccessAuth(); String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/internationalCrimeArrest").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth); mav.addObject("accessAuth", accessAuth);
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList()); mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
internationalCrimeArrest.setQueryInfo(); internationalCrimeArrest.setQueryInfo();
List<InternationalCrimeArrest> internationalCrimeArrestList = internationalCrimeArrestService.selectInternationalCrimeArrestList(internationalCrimeArrest); List<InternationalCrimeArrest> internationalCrimeArrestList = internationalCrimeArrestService.selectInternationalCrimeArrestList(internationalCrimeArrest);
for (InternationalCrimeArrest ica:internationalCrimeArrestList) { for (InternationalCrimeArrest ica:internationalCrimeArrestList) {
ica.setSuspectPersonInfoList(suspectPersonInfoRepository.findByIcaKey(ica.getIcaKey())); ica.setSuspectPersonInfoList(suspectPersonInfoRepository.findByIcaKey(ica.getIcaKey()));
}
mav.addObject("internationalCrimeArrestList", internationalCrimeArrestList);
internationalCrimeArrest.setContentCnt(internationalCrimeArrestService.selectInternationalCrimeArrestListCnt(internationalCrimeArrest));
internationalCrimeArrest.setPaginationInfo();
mav.addObject("organConfigList", selectOrganList());
mav.addObject("searchParams", internationalCrimeArrest);
return mav;
} }
@GetMapping("/internationalCrimeArrest/internationalCrimeArrestEditModal") mav.addObject("internationalCrimeArrestList", internationalCrimeArrestList);
public ModelAndView internationalCrimeArrestEditModal(@AuthenticationPrincipal UserInfo loginUser, InternationalCrimeArrest internationalCrimeArrest){ internationalCrimeArrest.setContentCnt(internationalCrimeArrestService.selectInternationalCrimeArrestListCnt(internationalCrimeArrest));
ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrestEditModal"); internationalCrimeArrest.setPaginationInfo();
if(internationalCrimeArrest.getIcaKey()!=null){ mav.addObject("organConfigList", organConfigService.selectOrganList());
internationalCrimeArrest = internationalCrimeArrestService.selectInternationalCrimeArrest(internationalCrimeArrest.getIcaKey()); mav.addObject("searchParams", internationalCrimeArrest);
}else{ return mav;
internationalCrimeArrest.setWrtOrgan(loginUser.getOgCd()); }
internationalCrimeArrest.setWrtNm(loginUser.getUserNm());
internationalCrimeArrest.setWrtDt(LocalDateTime.now()); @GetMapping("/internationalCrimeArrest/internationalCrimeArrestEditModal")
internationalCrimeArrest.setSuspectPersonInfoList(suspectPersonInfoRepository.findByIcaKey(internationalCrimeArrest.getIcaKey())); public ModelAndView internationalCrimeArrestEditModal(@AuthenticationPrincipal UserInfo loginUser, InternationalCrimeArrest internationalCrimeArrest){
} ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrestEditModal");
mav.addObject("organConfigList", selectOrganList()); if(internationalCrimeArrest.getIcaKey()!=null){
mav.addObject("internationalCrimeArrest", internationalCrimeArrest); internationalCrimeArrest = internationalCrimeArrestService.selectInternationalCrimeArrest(internationalCrimeArrest.getIcaKey());
return mav; }else{
internationalCrimeArrest.setWrtOrgan(loginUser.getOgCd());
internationalCrimeArrest.setWrtNm(loginUser.getUserNm());
internationalCrimeArrest.setWrtDt(LocalDateTime.now());
internationalCrimeArrest.setSuspectPersonInfoList(suspectPersonInfoRepository.findByIcaKey(internationalCrimeArrest.getIcaKey()));
} }
mav.addObject("organConfigList", organConfigService.selectOrganList());
mav.addObject("internationalCrimeArrest", internationalCrimeArrest);
return mav;
}
@GetMapping("/internationalCrimeArrest/internationalCrimeArrestViewModal")
public ModelAndView internationalCrimeArrestViewModal(@AuthenticationPrincipal UserInfo loginUser, InternationalCrimeArrest internationalCrimeArrest){
ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrestViewModal");
internationalCrimeArrest = internationalCrimeArrestService.selectInternationalCrimeArrest(internationalCrimeArrest.getIcaKey());
mav.addObject("internationalCrimeArrest", internationalCrimeArrest);
mav.addObject("userSeq",loginUser.getUserSeq());
mav.addObject("organConfigList", organConfigService.selectOrganList());
//메뉴권한 확인
mav.addObject("accessAuth", authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/internationalCrimeArrest").get(0).getAccessAuth());
return mav;
}
@PostMapping("/internationalCrimeArrest/saveInternationalCrimeArrest")
public Integer saveInternationalCrimeArrest(@AuthenticationPrincipal UserInfo loginUser,
InternationalCrimeArrest internationalCrimeArrest){
internationalCrimeArrest.setWrtUserSeq(loginUser.getUserSeq());
return internationalCrimeArrestService.savedInternationalCrimeArrest(internationalCrimeArrest);
}
@GetMapping("/internationalCrimeArrest/ExcelDown")
public void icaExcelDown(HttpServletResponse response, InternationalCrimeArrest internationalCrimeArrest) {
int duplicateCount = internationalCrimeArrestService.icaDuplicateCount(internationalCrimeArrest);
int rowCnt = internationalCrimeArrest.getRowCnt() + duplicateCount;
internationalCrimeArrest.setRowCnt(rowCnt);
internationalCrimeArrest.setQueryInfo();
internationalCrimeArrest.setContentCnt(internationalCrimeArrestService.selectInternationalCrimeArrestListCnt(internationalCrimeArrest));
internationalCrimeArrest.setPaginationInfo();
Excel excel = new Excel();
String[] headers = {"ica_key", "case_num", "organ", "department", "crime_type", "violation_type", "crime_name", "occur_table", "arrest_table", "suspect_table", "sex", "age", "country", "crime_awareness_dt", "case_sent_dt", "process_result"};
String[] headerNames = { "", "", "", "", "", "", "", "", "", "", "피의자 인적사항", "", "", "", "", ""};
String[] headerNames2 = { "", "사건번호", "지방청", "경찰서", "범죄테마", "위반유형", "죄명", "발생원표", "검거원표", "피의자원표","성별","나이","국적","범죄인지","사건송치","신병처리"};
String[] columnType = { "int", "String", "String", "String", "String", "String", "String", "String", "String", "String","String","String","String","String","String","String"};
excel.setHeaders(headers);
excel.setHeaderNames(headerNames);
excel.setHeaderNames2(headerNames2);
excel.setColumnType(columnType);
excel.setSheetName("국제범죄검거현황");
excel.setExcelFileName("국제범죄검거현황");
List<ParamMap> icaList = internationalCrimeArrestService.selectInternationalCrimeArrestParamList(internationalCrimeArrest);
excel.setList(icaList);
try {
Utils.icaDownExcel(response, excel);
} catch (IOException e) {
@GetMapping("/internationalCrimeArrest/internationalCrimeArrestViewModal")
public ModelAndView internationalCrimeArrestViewModal(@AuthenticationPrincipal UserInfo loginUser, InternationalCrimeArrest internationalCrimeArrest){
ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrestViewModal");
internationalCrimeArrest = internationalCrimeArrestService.selectInternationalCrimeArrest(internationalCrimeArrest.getIcaKey());
mav.addObject("internationalCrimeArrest", internationalCrimeArrest);
mav.addObject("userSeq",loginUser.getUserSeq());
mav.addObject("organConfigList", selectOrganList());
//메뉴권한 확인
mav.addObject("accessAuth", authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/internationalCrimeArrest").get(0).getAccessAuth());
return mav;
}
@PostMapping("/internationalCrimeArrest/saveInternationalCrimeArrest")
public Integer saveInternationalCrimeArrest(@AuthenticationPrincipal UserInfo loginUser,
InternationalCrimeArrest internationalCrimeArrest){
internationalCrimeArrest.setWrtUserSeq(loginUser.getUserSeq());
return internationalCrimeArrestService.savedInternationalCrimeArrest(internationalCrimeArrest);
}
@GetMapping("/internationalCrimeArrest/ExcelDown")
public void icaExcelDown(HttpServletResponse response, InternationalCrimeArrest internationalCrimeArrest) {
int duplicateCount = internationalCrimeArrestService.icaDuplicateCount(internationalCrimeArrest);
int rowCnt = internationalCrimeArrest.getRowCnt() + duplicateCount;
internationalCrimeArrest.setRowCnt(rowCnt);
internationalCrimeArrest.setQueryInfo();
internationalCrimeArrest.setContentCnt(internationalCrimeArrestService.selectInternationalCrimeArrestListCnt(internationalCrimeArrest));
internationalCrimeArrest.setPaginationInfo();
Excel excel = new Excel();
String[] headers = {"ica_key", "case_num", "organ", "department", "crime_type", "violation_type", "crime_name", "occur_table", "arrest_table", "suspect_table", "sex", "age", "country", "crime_awareness_dt", "case_sent_dt", "process_result"};
String[] headerNames = { "", "", "", "", "", "", "", "", "", "", "피의자 인적사항", "", "", "", "", ""};
String[] headerNames2 = { "", "사건번호", "지방청", "경찰서", "범죄테마", "위반유형", "죄명", "발생원표", "검거원표", "피의자원표","성별","나이","국적","범죄인지","사건송치","신병처리"};
String[] columnType = { "int", "String", "String", "String", "String", "String", "String", "String", "String", "String","String","String","String","String","String","String"};
excel.setHeaders(headers);
excel.setHeaderNames(headerNames);
excel.setHeaderNames2(headerNames2);
excel.setColumnType(columnType);
excel.setSheetName("국제범죄검거현황");
excel.setExcelFileName("국제범죄검거현황");
List<ParamMap> icaList = internationalCrimeArrestService.selectInternationalCrimeArrestParamList(internationalCrimeArrest);
excel.setList(icaList);
try {
Utils.icaDownExcel(response, excel);
} catch (IOException e) {
}
}
public List<OrganConfig> selectOrganList(){
List<CodeMgt> organCdList = codeMgtService.selectCodeMgtList("OG");
List<OrganConfig> organConfigList = organConfigService.selectSavedOrganList();
for(CodeMgt organCode: organCdList){
if(!organCode.getItemCd().equals("OG001")){
boolean usedFlag = false;
for(OrganConfig organConfig: organConfigList){
if(organCode.getItemCd().equals(organConfig.getOrganCd())){
usedFlag = true;
organConfig.setOrganNm(organCode.getItemValue());
organConfig.setUseState("T");
break;
}
}
if(!usedFlag){
OrganConfig organConfig = new OrganConfig();
organConfig.setOrganCd(organCode.getItemCd());
organConfig.setOrganNm(organCode.getItemValue());
organConfig.setUseState("F");
organConfigList.add(organConfig);
}
}
}
return organConfigList;
} }
}
} }

View File

@ -31,7 +31,7 @@ public class SriController {
ModelAndView mav = new ModelAndView("sri/sriBoard"); ModelAndView mav = new ModelAndView("sri/sriBoard");
if(sri.getActiveTab()==null){ if(sri.getActiveTab()==null){
sri.setActiveTab("send"); sri.setActiveTab("send");
} }
mav.addObject("searchUrl", "/sri/sriBoard"); mav.addObject("searchUrl", "/sri/sriBoard");
String accessAuth = authMgtService.selectAccessConfigList String accessAuth = authMgtService.selectAccessConfigList
@ -39,15 +39,15 @@ public class SriController {
mav.addObject("accessAuth", accessAuth); mav.addObject("accessAuth", accessAuth);
if(sri.getActiveTab().equals("send")){ if(sri.getActiveTab().equals("send")){
sri.setWrtUserSeq(loginUser.getUserSeq()); sri.setWrtUserSeq(loginUser.getUserSeq());
}else if(sri.getActiveTab().equals("receive")){ }else if(sri.getActiveTab().equals("receive")){
sri.setStatus("DST007"); sri.setStatus("DST007");
sri.setReceiveUserSeq(loginUser.getUserSeq()); sri.setReceiveUserSeq(loginUser.getUserSeq());
}else if(sri.getActiveTab().equals("all") && accessAuth.equals("ACC003")){ }else if(sri.getActiveTab().equals("all") && accessAuth.equals("ACC003")){
sri.setDownOrganCdList(loginUser.getDownOrganCdList()); sri.setDownOrganCdList(loginUser.getDownOrganCdList());
}else if(sri.getActiveTab().equals("all")){ }else if(sri.getActiveTab().equals("all")){
sri.setActiveTab("send"); sri.setActiveTab("send");
sri.setWrtUserSeq(loginUser.getUserSeq()); sri.setWrtUserSeq(loginUser.getUserSeq());
} }
if(accessAuth.equals("ACC003")){ if(accessAuth.equals("ACC003")){
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList()); mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
@ -66,25 +66,27 @@ public class SriController {
public ModelAndView faRptEditModal(@AuthenticationPrincipal UserInfo loginUser, Sri sri){ public ModelAndView faRptEditModal(@AuthenticationPrincipal UserInfo loginUser, Sri sri){
ModelAndView mav = new ModelAndView("sri/sriEditModal"); ModelAndView mav = new ModelAndView("sri/sriEditModal");
if(sri.getFaSriKey()!=null){ if(sri.getFaSriKey()!=null){
sri = sriService.selectFaSriBoard(sri.getFaSriKey(), null); sri = sriService.selectFaSriBoard(sri.getFaSriKey(), null);
}else{ }else{
if(sri.getRefKey()!=null){ if(sri.getRefKey()!=null){
SriReadUser readUser = new SriReadUser(); Sri originSri = sriService.selectFaSriBoard(sri.getRefKey(), null);
readUser.setUserSeq(sri.getWrtUserSeq()); SriReadUser readUser = new SriReadUser();
readUser.setOgCd(sri.getWrtOrgan()); readUser.setUserSeq(originSri.getWrtUserSeq());
readUser.setOfcCd(sri.getWrtPart()); readUser.setOgCd(originSri.getWrtOrgan());
readUser.setTitleCd(sri.getWrtTitle()); readUser.setOfcCd(originSri.getWrtPart());
readUser.setUserNm(sri.getWrtUserNm()); readUser.setTitleCd(originSri.getWrtTitle());
sri.setReadUserList(new ArrayList<>()); readUser.setUserNm(originSri.getWrtUserNm());
sri.getReadUserList().add(readUser); sri.setReadUserList(new ArrayList<>());
} sri.getReadUserList().add(readUser);
sri.setTitle("RE: "+originSri.getTitle());
}
sri.setWrtUserSeq(loginUser.getUserSeq()); sri.setWrtUserSeq(loginUser.getUserSeq());
sri.setWrtOrgan(loginUser.getOgCd()); sri.setWrtOrgan(loginUser.getOgCd());
sri.setWrtPart(loginUser.getOfcCd()); sri.setWrtPart(loginUser.getOfcCd());
sri.setWrtTitle(loginUser.getTitleCd()); sri.setWrtTitle(loginUser.getTitleCd());
sri.setWrtUserNm(loginUser.getUserNm()); sri.setWrtUserNm(loginUser.getUserNm());
sri.setWrtDt(LocalDateTime.now()); sri.setWrtDt(LocalDateTime.now());
} }
mav.addObject("SriCategoryList", codeMgtService.selectCodeMgtList("SRI")); mav.addObject("SriCategoryList", codeMgtService.selectCodeMgtList("SRI"));
mav.addObject("sri", sri); mav.addObject("sri", sri);
@ -101,9 +103,9 @@ public class SriController {
@PostMapping("/saveSri") @PostMapping("/saveSri")
public Integer saveFaRpt(Sri sri, public Integer saveFaRpt(Sri sri,
MultipartHttpServletRequest request, MultipartHttpServletRequest request,
@RequestParam(value = "fileSeq", required = false) List<Integer> deleteFileSeq){ @RequestParam(value = "fileSeq", required = false) List<Integer> deleteFileSeq){
sri.setMultipartFileList(request.getMultiFileMap().get("uploadFiles")); sri.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
return sriService.saveSriBoard(sri, deleteFileSeq); return sriService.saveSriBoard(sri, deleteFileSeq);
} }
@ -120,7 +122,7 @@ public class SriController {
@PostMapping("/sriDelete") @PostMapping("/sriDelete")
public void sriDelete(@AuthenticationPrincipal UserInfo loginUser, @RequestBody List<Sri> sri){ public void sriDelete(@AuthenticationPrincipal UserInfo loginUser, @RequestBody List<Sri> sri){
sriService.sriDelete(sri); sriService.sriDelete(sri);
} }

View File

@ -70,6 +70,8 @@ public class Sri extends BaseModel {
private List<SriReadUser> readUserList; private List<SriReadUser> readUserList;
@Transient @Transient
private List<MultipartFile> multipartFileList; private List<MultipartFile> multipartFileList;
@Transient
private Sri refSri;
@Override @Override
public String toString() { public String toString() {

View File

@ -66,6 +66,9 @@ public class SriService extends BaseService {
if(sri != null){ if(sri != null){
sri.setFileList(sriFileRepository.findByFaSriKey(faSriKey)); sri.setFileList(sriFileRepository.findByFaSriKey(faSriKey));
sri.setReadUserList(sriReadUserRepository.findByFaSriKey(faSriKey)); sri.setReadUserList(sriReadUserRepository.findByFaSriKey(faSriKey));
if(sri.getRefKey()!=null){
sri.setRefSri(sriRepository.findById(sri.getRefKey()).orElse(null));
}
if(sri.getStatus().equals("DST007")){ if(sri.getStatus().equals("DST007")){
for(SriReadUser readUser: sri.getReadUserList()){ for(SriReadUser readUser: sri.getReadUserList()){
if(readUser.getUserSeq().equals(userSeq)){ if(readUser.getUserSeq().equals(userSeq)){

View File

@ -120,12 +120,14 @@ public class MenuMgtService {
if(cat2Cd.contains(cat1Cd)){ if(cat2Cd.contains(cat1Cd)){
MenuMgt secondMenu = new MenuMgt(); MenuMgt secondMenu = new MenuMgt();
List<MenuMgt> thirdMenuList = new ArrayList<>(); List<MenuMgt> thirdMenuList = new ArrayList<>();
secondMenu.setCat1Cd(cat1Cd);
secondMenu.setCat2Cd(cat2Cd.replace(cat1Cd, "")); secondMenu.setCat2Cd(cat2Cd.replace(cat1Cd, ""));
Iterator<String> cat3Itr = cat3Set.iterator(); Iterator<String> cat3Itr = cat3Set.iterator();
while(cat3Itr.hasNext()){ while(cat3Itr.hasNext()){
String cat3Cd = cat3Itr.next(); String cat3Cd = cat3Itr.next();
if(cat3Cd.contains(cat2Cd)){ if(cat3Cd.contains(cat2Cd)){
MenuMgt thirdMenu = new MenuMgt(); MenuMgt thirdMenu = new MenuMgt();
thirdMenu.setCat2Cd(secondMenu.getCat2Cd());
thirdMenu.setCat3Cd(cat3Cd.replace(cat2Cd, "")); thirdMenu.setCat3Cd(cat3Cd.replace(cat2Cd, ""));
for(MenuMgt accessMenu: accessMenuList){ for(MenuMgt accessMenu: accessMenuList){
if(accessMenu.getCat1Cd().equals(cat1Cd) if(accessMenu.getCat1Cd().equals(cat1Cd)

View File

@ -28,29 +28,7 @@ public class OrganConfigController {
@GetMapping("/selectOrganList") @GetMapping("/selectOrganList")
public List<OrganConfig> selectOrganList(){ public List<OrganConfig> selectOrganList(){
List<CodeMgt> organCdList = codeMgtService.selectCodeMgtList("OG"); return organConfigService.selectOrganList();
List<OrganConfig> organConfigList = organConfigService.selectSavedOrganList();
for(CodeMgt organCode: organCdList){
if(!organCode.getItemCd().equals("OG001")){
boolean usedFlag = false;
for(OrganConfig organConfig: organConfigList){
if(organCode.getItemCd().equals(organConfig.getOrganCd())){
usedFlag = true;
organConfig.setOrganNm(organCode.getItemValue());
organConfig.setUseState("T");
break;
}
}
if(!usedFlag){
OrganConfig organConfig = new OrganConfig();
organConfig.setOrganCd(organCode.getItemCd());
organConfig.setOrganNm(organCode.getItemValue());
organConfig.setUseState("F");
organConfigList.add(organConfig);
}
}
}
return organConfigList;
} }
@PostMapping("/saveOrganConfig") @PostMapping("/saveOrganConfig")

View File

@ -28,5 +28,7 @@ public class OrganConfig {
private String organNm; private String organNm;
@Transient @Transient
private String useState; private String useState;
@Transient
private Integer orderNum;
} }

View File

@ -1,18 +1,23 @@
package com.dbnt.faisp.main.organMgt.service; package com.dbnt.faisp.main.organMgt.service;
import com.dbnt.faisp.main.codeMgt.model.CodeMgt;
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
import com.dbnt.faisp.main.organMgt.mapper.OrganConfigMapper; import com.dbnt.faisp.main.organMgt.mapper.OrganConfigMapper;
import com.dbnt.faisp.main.organMgt.model.OrganConfig; import com.dbnt.faisp.main.organMgt.model.OrganConfig;
import com.dbnt.faisp.main.organMgt.repository.OrganConfigRepository; import com.dbnt.faisp.main.organMgt.repository.OrganConfigRepository;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class OrganConfigService { public class OrganConfigService {
private final OrganConfigRepository organConfigRepository; private final OrganConfigRepository organConfigRepository;
private final OrganConfigMapper organConfigMapper; private final OrganConfigMapper organConfigMapper;
private final CodeMgtService codeMgtService;
public List<OrganConfig> selectSavedOrganList() { public List<OrganConfig> selectSavedOrganList() {
return organConfigRepository.findAll(); return organConfigRepository.findAll();
@ -32,4 +37,33 @@ public class OrganConfigService {
upOrganList.add(ogCd); upOrganList.add(ogCd);
return upOrganList; return upOrganList;
} }
public List<OrganConfig> selectOrganList() {
List<CodeMgt> codeList = codeMgtService.selectCodeMgtList("OG");
List<OrganConfig> configList = selectSavedOrganList();
for(CodeMgt organCode: codeList){
boolean usedFlag = false;
for(OrganConfig organConfig: configList){
if(organCode.getItemCd().equals(organConfig.getOrganCd())){
usedFlag = true;
organConfig.setOrganNm(organCode.getItemValue());
organConfig.setOrderNum(organCode.getOrderNum());
organConfig.setUseState("T");
break;
}
}
if(!usedFlag){
OrganConfig organConfig = new OrganConfig();
organConfig.setOrganCd(organCode.getItemCd());
organConfig.setOrganNm(organCode.getItemValue());
organConfig.setOrderNum(organCode.getOrderNum());
organConfig.setUseState("F");
configList.add(organConfig);
}
}
configList = configList.stream()
.sorted(Comparator.comparing(OrganConfig::getOrderNum, Comparator.nullsLast(Comparator.naturalOrder())))
.collect(Collectors.toList());
return configList;
}
} }

View File

@ -13,7 +13,7 @@
And EXTRACT(MONTH FROM pr.wrt_dt) = #{month}::NUMERIC And EXTRACT(MONTH FROM pr.wrt_dt) = #{month}::NUMERIC
</if> </if>
<if test='caseNum != null and caseNum != ""'> <if test='caseNum != null and caseNum != ""'>
AND caseNum = #{caseNum} AND case_num = #{caseNum}
</if> </if>
<if test='nll != null and nll != ""'> <if test='nll != null and nll != ""'>
AND nll = #{nll} AND nll = #{nll}

View File

@ -95,7 +95,7 @@
-webkit-appearance: none; -webkit-appearance: none;
margin: 0; margin: 0;
} }
.mouse-hover:hover{ .mouse-hover-clickable:hover{
cursor: pointer; cursor: pointer;
} }

View File

@ -1,6 +1,27 @@
let files = []; let files = [];
let CrossEditor; let CrossEditor;
$(document).ready(function (){
const path = location.pathname;
if(!(path.includes("/login") || path.includes("/dashboard") ||
path.includes("/publicBoard") || path.includes("/myInfo"))){
$.each($("#leftMenu").find("a"), function (idx, link){
if(link.href.includes(location.pathname)){
menuOpen($(link).attr("data-parent"))
}
})
}
})
function menuOpen(categoryCd){
const menu = $("[data-category='"+categoryCd+"']");
if(menu.attr("aria-expanded")==='false'){
menu.click();
const parent = menu.attr("data-parent")
if(parent){
menuOpen(parent);
}
}
}
function contentFade(action){ function contentFade(action){
if(action === "in"){ if(action === "in"){
$("#fadeDiv").show() $("#fadeDiv").show()
@ -229,8 +250,10 @@ function departmentDynamicOption(targetTagName, code, defaultOptionName='') {
$(targetTagName).empty(); $(targetTagName).empty();
let option = ''; let option = '';
organConfigList.forEach(function (organConfig) { organConfigList.forEach(function (organConfig) {
if (organConfig.parentOrgan != null && organConfig.organType !== 'OGC002' && organConfig.parentOrgan === code) { if(!(organConfig.organCd === "OG027" || organConfig.organCd === "OG028")){
option += '<option value="' + organConfig.organCd + '">' + organConfig.organNm + '</option>'; if (organConfig.parentOrgan != null && organConfig.organType !== 'OGC002' && organConfig.parentOrgan === code) {
option += '<option value="' + organConfig.organCd + '">' + organConfig.organNm + '</option>';
}
} }
}); });
$(targetTagName).append('<option value="">' + defaultOptionName + ' 선택</option>' + option); $(targetTagName).append('<option value="">' + defaultOptionName + ' 선택</option>' + option);

View File

@ -15,7 +15,9 @@ $(function() {
$(document).on('click', '#addSriBtn', function (){ $(document).on('click', '#addSriBtn', function (){
getSriEditModal({faSriKey: null}) getSriEditModal({faSriKey: null})
}) })
$(document).on('click', '#getOriginSriBtn', function (){
getSriViewModal($(this).attr("data-fasrikey"))
})
function getSriEditModal(faSriKey){ function getSriEditModal(faSriKey){
$.ajax({ $.ajax({
url: '/sri/sriEditModal', url: '/sri/sriEditModal',
@ -70,71 +72,71 @@ $(document).on('click', '#saveSriBtn', function (){
}) })
function saveSri(faSriState){ function saveSri(faSriState){
if(faSriState == 'DST001'){ if(faSriState === 'DST001'){
if(confirm("임시저장하시겠습니까?")){ if(confirm("임시저장하시겠습니까?")){
save(faSriState); save(faSriState);
} }
}else{ }else{
if(contentCheck()){ if(contentCheck()){
if(confirm("저장하시겠습니까?")){ if(confirm("저장하시겠습니까?")){
save(faSriState); save(faSriState);
} }
} }
} }
} }
function save(faSriState){ function save(faSriState){
$("#status").val(faSriState); $("#status").val(faSriState);
contentFade("in"); contentFade("in");
const formData = new FormData($("#sriEditForm")[0]); const formData = new FormData($("#sriEditForm")[0]);
for(const file of files) { for(const file of files) {
if(!file.isDelete) if(!file.isDelete)
formData.append('uploadFiles', file, file.name); formData.append('uploadFiles', file, file.name);
}
formData.append('content', CrossEditor.GetBodyValue());
$.each($(".readUserRow"), function (idx, row){
formData.append('readUserList['+idx+'].userSeq', $(row).find('.userSeq').val());
formData.append('readUserList['+idx+'].ogCd', $(row).find('.ogCd').val());
formData.append('readUserList['+idx+'].ofcCd', $(row).find('.ofcCd').val());
formData.append('readUserList['+idx+'].titleCd', $(row).find('.titleCd').val());
formData.append('readUserList['+idx+'].userNm', $(row).find('.userNm').val());
});
$(".text-decoration-line-through").each(function (idx, el){
formData.append('fileSeq', $(el).attr("data-fileseq"));
})
$.ajax({
type : 'POST',
data : formData,
url : "/sri/saveSri",
processData: false,
contentType: false,
success : function(result) {
if(faSriState == 'DST001'){
alert("임시저장되었습니다.");
}else{
alert("저장되었습니다.");
} }
formData.append('content', CrossEditor.GetBodyValue()); contentFade("out");
$.each($(".readUserRow"), function (idx, row){ $("#sriEditModal").modal('hide');
formData.append('readUserList['+idx+'].userSeq', $(row).find('.userSeq').val()); getSriViewModal(result);
formData.append('readUserList['+idx+'].ogCd', $(row).find('.ogCd').val()); },
formData.append('readUserList['+idx+'].ofcCd', $(row).find('.ofcCd').val()); error : function(xhr, status) {
formData.append('readUserList['+idx+'].titleCd', $(row).find('.titleCd').val()); if(faSriState == 'DST001'){
formData.append('readUserList['+idx+'].userNm', $(row).find('.userNm').val()); alert("임시저장에 실패하였습니다.")
}); }else{
$(".text-decoration-line-through").each(function (idx, el){ alert("저장에 실패하였습니다.")
formData.append('fileSeq', $(el).attr("data-fileseq")); }
}) contentFade("out");
$.ajax({ }
type : 'POST', })
data : formData,
url : "/sri/saveSri",
processData: false,
contentType: false,
success : function(result) {
if(faSriState == 'DST001'){
alert("임시저장되었습니다.");
}else{
alert("저장되었습니다.");
}
contentFade("out");
$("#sriEditModal").modal('hide');
getSriViewModal(result);
},
error : function(xhr, status) {
if(faSriState == 'DST001'){
alert("임시저장에 실패하였습니다.")
}else{
alert("저장에 실패하였습니다.")
}
contentFade("out");
}
})
} }
$(document).on('click', '.faSriTr', function (event){ $(document).on('click', '.faSriTr', function (event){
const target = event.target; const target = event.target;
if(!(target.className === "sriChk" ||$(target).parents("td").length>0)){ if(!(target.className === "sriChk" ||$(target).parents("td").length>0)){
getSriViewModal(Number($(this).find(".faSriKey").val())); getSriViewModal(Number($(this).find(".faSriKey").val()));
} }
}) })
function getSriViewModal(faSriKey){ function getSriViewModal(faSriKey){
@ -176,12 +178,7 @@ function OnInitCompleted(e){
$(document).on('click', '#reSendBtn', function (){ $(document).on('click', '#reSendBtn', function (){
$("#sriViewModal").modal('hide'); $("#sriViewModal").modal('hide');
const faSri = { const faSri = {
refKey: Number($(this).attr("data-fasrikey")), refKey: Number($(this).attr("data-fasrikey"))
wrtUserSeq: $("#wrtUserSeq").val(),
wrtOrgan: $("#wrtOrgan").val(),
wrtPart: $("#wrtPart").val(),
wrtTitle: $("#wrtTitle").val(),
wrtUserNm: $("#wrtUserNm").val()
} }
getSriEditModal(faSri); getSriEditModal(faSri);
}) })
@ -191,48 +188,48 @@ $(document).on('click', '#saveTempBtn', function (){
}) })
$(document).on('click', '#sriDeleteBtn', function (){ $(document).on('click', '#sriDeleteBtn', function (){
if($('input:checkbox[name=sriChk]:checked').length < 1){ if($('input:checkbox[name=sriChk]:checked').length < 1){
alert("게시물을 선택해주세요"); alert("게시물을 선택해주세요");
return false; return false;
} }
if(confirm("삭제시 되돌릴 수 없습니다. 대상을 삭제처리 하시겠습니까?")){ if(confirm("삭제시 되돌릴 수 없습니다. 대상을 삭제처리 하시겠습니까?")){
const checkArr = []; const checkArr = [];
$('input:checkbox[name=sriChk]:checked').each(function (idx, el){ $('input:checkbox[name=sriChk]:checked').each(function (idx, el){
checkArr.push({}); checkArr.push({});
const target = $(el); const target = $(el);
checkArr[idx].faSriKey = Number(target.parents('tr').find('.faSriKey').val()); checkArr[idx].faSriKey = Number(target.parents('tr').find('.faSriKey').val());
}) })
deleteSri(checkArr); deleteSri(checkArr);
} }
}) })
$(document).on('click', '#deleteSri', function (){ $(document).on('click', '#deleteSri', function (){
if(confirm("삭제시 되돌릴 수 없습니다. 대상을 삭제처리 하시겠습니까?")){ if(confirm("삭제시 되돌릴 수 없습니다. 대상을 삭제처리 하시겠습니까?")){
const checkArr = []; const checkArr = [];
checkArr.push({}); checkArr.push({});
checkArr[0].faSriKey = Number($(this).attr("data-fasrikey")); checkArr[0].faSriKey = Number($(this).attr("data-fasrikey"));
deleteSri(checkArr); deleteSri(checkArr);
} }
}) })
function deleteSri(checkArr){ function deleteSri(checkArr){
$.ajax({ $.ajax({
type : 'POST', type : 'POST',
url : "/sri/sriDelete", url : "/sri/sriDelete",
data : JSON.stringify(checkArr), data : JSON.stringify(checkArr),
contentType: 'application/json', contentType: 'application/json',
beforeSend: function (xhr){ beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val()); xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
}, },
success : function() { success : function() {
alert("삭제처리 되었습니다."); alert("삭제처리 되었습니다.");
location.reload(); location.reload();
}, },
error : function(xhr, status) { error : function(xhr, status) {
alert("삭제처리에 실패하였습니다"); alert("삭제처리에 실패하였습니다");
} }
}) })
} }
$(function(){ $(function(){
@ -259,19 +256,23 @@ function setReadUserRowNum(){
} }
function contentCheck(){ function contentCheck(){
let flag = true; if(!$("#refKey").val()){
if(!$("#faSriType").val()){ if(!$("#faSriType").val()){
alert("분류를 선택해주세요.") alert("분류를 선택해주세요.")
flag = false; return false;
}
if(!$("#faSriEdate").val()){
alert("제출기한을 선택해주세요.")
return false;
}
} }
if(!$("#title").val()){ if(!$("#title").val()){
alert("제목을 입력해주세요.") alert("제목을 입력해주세요.")
flag = false; return false;
} }
if($("#readUserRow").children().length===0){ if($("#readUserRow").children().length===0){
alert("수신자를 입력해주세요.") alert("수신자를 입력해주세요.")
flag = false; return false;
} }
flag = fileCheck(flag, files); return fileCheck(true, files);
return flag;
} }

View File

@ -8,9 +8,9 @@
<th>대분류</th> <th>대분류</th>
<th>중분류</th> <th>중분류</th>
<th>소분류</th> <th>소분류</th>
<th class="selectTh" data-type="access">해제</th> <th class="selectTh mouse-hover-clickable" data-type="access">해제</th>
<th:block th:each="code:${session.commonCode.get('ACC')}"> <th:block th:each="code:${session.commonCode.get('ACC')}">
<th class="selectTh mouse-hover" data-type="access" th:data-target="${code.itemCd}" th:text="${code.itemValue}"></th> <th class="selectTh mouse-hover-clickable" data-type="access" th:data-target="${code.itemCd}" th:text="${code.itemValue}"></th>
</th:block> </th:block>
</tr> </tr>
</thead> </thead>
@ -54,9 +54,9 @@
<th>대분류</th> <th>대분류</th>
<th>중분류</th> <th>중분류</th>
<th>소분류</th> <th>소분류</th>
<th class="selectTh" data-type="approval">해제</th> <th class="selectTh mouse-hover-clickable" data-type="approval">해제</th>
<th:block th:each="code:${session.commonCode.get('APC')}"> <th:block th:each="code:${session.commonCode.get('APC')}">
<th class="selectTh mouse-hover" data-type="approval" th:data-target="${code.itemCd}" th:text="${code.itemValue}"></th> <th class="selectTh mouse-hover-clickable" data-type="approval" th:data-target="${code.itemCd}" th:text="${code.itemValue}"></th>
</th:block> </th:block>
</tr> </tr>
</thead> </thead>

View File

@ -12,7 +12,7 @@
<input type="text" class="form-control form-control-sm" name="caseNum" placeholder="사건번호" th:value="${searchParams.caseNum}"> <input type="text" class="form-control form-control-sm" name="caseNum" placeholder="사건번호" th:value="${searchParams.caseNum}">
</div> </div>
<div class="col-auto"> <div class="col-auto">
<input type="submit" class="btn btn-sm btn-primary" id="searchModalBtn" value="검색"> <input type="button" class="btn btn-sm btn-primary" id="searchModalBtn" value="검색">
</div> </div>
</div> </div>
</div> </div>

View File

@ -42,7 +42,7 @@
<input type="text" class="form-control form-control-sm" name="menuUrl" placeholder="url" th:value="${searchParams.menuUrl}"> <input type="text" class="form-control form-control-sm" name="menuUrl" placeholder="url" th:value="${searchParams.menuUrl}">
</div> </div>
<div class="col-auto"> <div class="col-auto">
<input type="submit" class="btn btn-sm btn-primary" id="searchModalBtn" value="검색"> <input type="button" class="btn btn-sm btn-primary" id="searchModalBtn" value="검색">
</div> </div>
</div> </div>
</div> </div>

View File

@ -33,7 +33,7 @@
<input type="text" class="form-control form-control-sm" name="userId" placeholder="사용자 아이디" th:value="${searchParams.userId}"> <input type="text" class="form-control form-control-sm" name="userId" placeholder="사용자 아이디" th:value="${searchParams.userId}">
</div> </div>
<div class="col-auto"> <div class="col-auto">
<input type="submit" class="btn btn-sm btn-primary" id="searchModalBtn" value="검색"> <input type="button" class="btn btn-sm btn-primary" id="searchModalBtn" value="검색">
</div> </div>
</div> </div>
</div> </div>

View File

@ -14,19 +14,13 @@
<input type="hidden" name="wrtNm" th:value="${internationalCrimeArrest.wrtNm}"> <input type="hidden" name="wrtNm" th:value="${internationalCrimeArrest.wrtNm}">
<input type="hidden" name="wrtDt" th:value="${#temporals.format(internationalCrimeArrest.wrtDt, 'yyyy-MM-dd HH:mm')}"> <input type="hidden" name="wrtDt" th:value="${#temporals.format(internationalCrimeArrest.wrtDt, 'yyyy-MM-dd HH:mm')}">
<input type="hidden" id="contentStatus" name="contentStatus"> <input type="hidden" id="contentStatus" name="contentStatus">
<div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">사건번호</label>
<div class="col-sm-2">
<input type="text" class="form-control form-control-sm" name="caseNum" th:value="${internationalCrimeArrest.caseNum}">
</div>
</div>
<div class="row mb-1"> <div class="row mb-1">
<label class="col-sm-2 col-form-label col-form-label-sm text-center">지방청</label> <label class="col-sm-2 col-form-label col-form-label-sm text-center">지방청</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="organ"> <select class="form-select form-select-sm" name="organ">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="organConfig:${organConfigList}"> <th:block th:each="organConfig:${organConfigList}">
<th:block th:if="${organConfig.parentOrgan eq 'OG001' && organConfig.organType ne 'OGC001'}"> <th:block th:if="${organConfig.parentOrgan eq 'OG001' or organConfig.organCd eq 'OG001'}">
<option th:value="${organConfig.organCd}" th:text="${organConfig.organNm}" th:selected="${organConfig.organCd eq internationalCrimeArrest.organ}"></option> <option th:value="${organConfig.organCd}" th:text="${organConfig.organNm}" th:selected="${organConfig.organCd eq internationalCrimeArrest.organ}"></option>
</th:block> </th:block>
</th:block> </th:block>

View File

@ -1,14 +1,14 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org"> <html lang="ko" xmlns:th="http://www.thymeleaf.org">
<div class="pt-3" th:fragment="leftMenuFragment"> <div class="pt-3" th:fragment="leftMenuFragment">
<div class="flex-shrink-0 py-3 bg-transparent"> <div class="flex-shrink-0 py-3 bg-transparent" id="leftMenu">
<ul class="list-unstyled ps-0"> <ul class="list-unstyled ps-0">
<li class="mb-1" th:each="firstMenu:${session.menuList}"> <li class="mb-1" th:each="firstMenu:${session.menuList}">
<th:block th:each="cat1Code:${session.commonCode.get('CAT1')}"> <th:block th:each="cat1Code:${session.commonCode.get('CAT1')}">
<th:block th:if="${cat1Code.itemCd eq firstMenu.cat1Cd}"> <th:block th:if="${cat1Code.itemCd eq firstMenu.cat1Cd}">
<button class="btn btn-toggle align-items-center rounded collapsed leftMenuItem text-light" <button class="btn btn-toggle align-items-center rounded collapsed leftMenuItem text-light"
data-bs-toggle="collapse" aria-expanded="false" data-bs-toggle="collapse" aria-expanded="false" th:data-category="${cat1Code.itemCd}"
th:data-bs-target="'#collapse'+${cat1Code.itemCd}" th:text="${cat1Code.itemValue}"> th:data-bs-target="'#collapse'+${cat1Code.itemCd}" th:text="${cat1Code.itemValue}">
</button> </button>
<div class="collapse ps-3" th:id="|collapse${cat1Code.itemCd}|"> <div class="collapse ps-3" th:id="|collapse${cat1Code.itemCd}|">
<ul class="btn-toggle-nav list-unstyled fw-normal pb-1"> <ul class="btn-toggle-nav list-unstyled fw-normal pb-1">
@ -19,13 +19,13 @@
<li class="mb-1"> <li class="mb-1">
<th:block th:unless="${#lists.isEmpty(secondMenu.childList)}"> <th:block th:unless="${#lists.isEmpty(secondMenu.childList)}">
<button class="btn btn-toggle align-items-center rounded collapsed leftMenuItem text-light" <button class="btn btn-toggle align-items-center rounded collapsed leftMenuItem text-light"
data-bs-toggle="collapse" aria-expanded="false" th:onclick="location.href='#'" data-bs-toggle="collapse" aria-expanded="false" th:data-parent="${cat1Code.itemCd}" th:data-category="${cat2Code.itemCd}"
th:data-bs-target="'#collapse'+${cat2Code.itemCd}" th:text="${cat2Code.itemValue}"> th:data-bs-target="'#collapse'+${cat2Code.itemCd}" th:text="${cat2Code.itemValue}">
</button> </button>
</th:block> </th:block>
<th:block th:if="${#lists.isEmpty(secondMenu.childList)}"> <th:block th:if="${#lists.isEmpty(secondMenu.childList)}">
<a th:href="@{${secondMenu.menuUrl}}" class="bi bi-dash link-light rounded ps-3 text-decoration-none" <a th:href="@{${secondMenu.menuUrl}}" class="bi bi-dash link-light rounded ps-3 text-decoration-none"
th:text="${cat2Code.itemValue}"></a> th:data-parent="${cat1Code.itemCd}" th:data-category="${cat2Code.itemCd}" th:text="${cat2Code.itemValue}"></a>
</th:block> </th:block>
<div class="collapse ps-3" th:id="|collapse${cat2Code.itemCd}|"> <div class="collapse ps-3" th:id="|collapse${cat2Code.itemCd}|">
<ul class="btn-toggle-nav list-unstyled fw-normal pb-1"> <ul class="btn-toggle-nav list-unstyled fw-normal pb-1">
@ -35,7 +35,7 @@
<ul class="list-unstyled ps-0"> <ul class="list-unstyled ps-0">
<li> <li>
<a th:href="@{${thirdMenu.menuUrl}}" class="bi bi-dash link-light rounded ps-3 text-decoration-none" <a th:href="@{${thirdMenu.menuUrl}}" class="bi bi-dash link-light rounded ps-3 text-decoration-none"
th:text="${cat3Code.itemValue}"></a> th:data-parent="${cat2Code.itemCd}" th:data-category="${cat3Code.itemCd}" th:text="${cat3Code.itemValue}"></a>
</li> </li>
</ul> </ul>
</th:block> </th:block>

View File

@ -99,14 +99,7 @@
<tfoot> <tfoot>
<tr> <tr>
<td colspan="11"> <td colspan="11">
<div class="row justify-content-center"> <button type="button" class="btn btn-sm btn-primary careerAddBtn" th:data-careercd="${code.itemCd}">추가</button>
<div class="col-auto">
<button type="button" class="btn btn-sm btn-primary careerAddBtn" th:data-careercd="${code.itemCd}">추가</button>
</div>
<div class="col-auto">
<button type="button" class="btn btn-sm btn-success kwmsCareerBtn" th:classappend="${#strings.isEmpty(userInfo.dicCode)?'disabled':''}">인사시스템 경력정보</button>
</div>
</div>
</td> </td>
</tr> </tr>
</tfoot> </tfoot>

View File

@ -6,44 +6,14 @@
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div class="mb-3 mt-3 row"> <div class="mb-3 mt-3 row">
<label for="dicCode" class="col-sm-2 col-form-label col-form-label-sm text-center">직급</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">관서</label>
<div class="col-sm-4"> <label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${userInfo.ogCd}"></label>
<input type="text" class="form-control form-control-sm" th:value="${userInfo.titleCd}" readonly> <label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">부서</label>
</div> <label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${userInfo.ofcCd}"></label>
<label for="userId" class="col-sm-2 col-form-label col-form-label-sm text-center ">생년월일</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">직급</label>
<div class="col-sm-4"> <label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${userInfo.titleCd}"></label>
<input type="text" class="form-control form-control-sm" th:value="${userInfo.birthDate}" readonly> <label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">이름</label>
</div> <label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${userInfo.userNm}"></label>
</div>
<div class="row mb-1">
<label for="phoneNo" class="col-sm-2 col-form-label col-form-label-sm text-center">성명</label>
<div class="col-sm-4">
<input type="tel" class="form-control form-control-sm" th:value="|${userInfo.ogCd} ${userInfo.ofcCd} ${userInfo.userNm}|" readonly>
</div>
<label for="email" class="col-sm-2 col-form-label col-form-label-sm text-center">성별</label>
<div class="col-sm-4">
<input type="email" class="form-control form-control-sm" th:value="${userInfo.sex}" readonly>
</div>
</div>
<div class="row mb-1">
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">학력사항</label>
<div class="col-sm-2">
<input type="email" class="form-control form-control-sm" readonly>
</div>
<label for="sex" class="col-sm-1 col-form-label col-form-label-sm text-center">학교</label>
<div class="col-sm-2">
<input type="email" class="form-control form-control-sm" readonly>
</div>
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">외국어</label>
<div class="col-sm-2">
<input type="email" class="form-control form-control-sm" th:value="${userInfo.languageCd}" readonly>
</div>
</div>
<div class="row mb-1">
<label for="birthDate" class="col-sm-2 col-form-label col-form-label-sm text-center">전공</label>
<div class="col-sm-4">
<input type="text" class="form-control form-control-sm dateSelector" id="birthDate" name="birthDate" readonly>
</div>
</div> </div>
<div class="card"> <div class="card">
<div class="card-body text-center"> <div class="card-body text-center">

View File

@ -14,7 +14,7 @@
<input type="hidden" name="wrtUserSeq" th:value="${sri.wrtUserSeq}"> <input type="hidden" name="wrtUserSeq" th:value="${sri.wrtUserSeq}">
<input type="hidden" name="wrtTitle" th:value="${sri.wrtTitle}"> <input type="hidden" name="wrtTitle" th:value="${sri.wrtTitle}">
<input type="hidden" name="status" id="status" th:value="${sri.status}"> <input type="hidden" name="status" id="status" th:value="${sri.status}">
<input type="hidden" name="refKey" th:value="${sri.refKey}"> <input type="hidden" name="refKey" id="refKey" th:value="${sri.refKey}">
<div class="row"> <div class="row">
<div class="col-8"> <div class="col-8">
<div class="row mb-1"> <div class="row mb-1">
@ -29,7 +29,7 @@
</div> </div>
<th:block th:if="${sri.refKey eq null}"> <th:block th:if="${sri.refKey eq null}">
<div class="row mb-1"> <div class="row mb-1">
<label for="faRptType" class="col-sm-2 col-form-label col-form-label-sm text-center">분류</label> <label for="faSriType" class="col-sm-2 col-form-label col-form-label-sm text-center">분류</label>
<div class="col-sm-4"> <div class="col-sm-4">
<select class="form-select form-select-sm" id="faSriType" name="faSriType"> <select class="form-select form-select-sm" id="faSriType" name="faSriType">
<option value="">선택해주세요.</option> <option value="">선택해주세요.</option>
@ -38,7 +38,7 @@
</th:block> </th:block>
</select> </select>
</div> </div>
<label for="faRptType" class="col-sm-2 col-form-label col-form-label-sm text-center">제출기한</label> <label for="faSriEdate" class="col-sm-2 col-form-label col-form-label-sm text-center">제출기한</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input type="text" class="form-control form-control-sm" id="faSriEdate" name="faSriEdate" th:value="${sri.faSriEdate}" readonly> <input type="text" class="form-control form-control-sm" id="faSriEdate" name="faSriEdate" th:value="${sri.faSriEdate}" readonly>
</div> </div>
@ -47,12 +47,7 @@
<div class="row mb-1"> <div class="row mb-1">
<label for="title" class="col-sm-2 col-form-label col-form-label-sm text-center">제목</label> <label for="title" class="col-sm-2 col-form-label col-form-label-sm text-center">제목</label>
<div class="col-sm-10"> <div class="col-sm-10">
<th:block th:if="${sri.refKey eq null}">
<input type="text" class="form-control form-control-sm" id="title" name="title" th:value="${sri.title}"> <input type="text" class="form-control form-control-sm" id="title" name="title" th:value="${sri.title}">
</th:block>
<th:block th:unless="${sri.refKey eq null}">
<input type="text" class="form-control form-control-sm" id="title" name="title" th:value="[회신]">
</th:block>
</div> </div>
</div> </div>
<div class="row mb-1 justify-content-center"> <div class="row mb-1 justify-content-center">
@ -85,7 +80,11 @@
<div class="col-12 pb-2"> <div class="col-12 pb-2">
<div class="row justify-content-between"> <div class="row justify-content-between">
<div class="col-auto">■ 수신자</div> <div class="col-auto">■ 수신자</div>
<div class="col-auto"><button type="button" class="btn btn-sm btn-info" id="addReadUserBtn">추가</button></div> <div class="col-auto">
<th:block th:if="${sri.refKey eq null}">
<button type="button" class="btn btn-sm btn-info" id="addReadUserBtn">추가</button>
</th:block>
</div>
</div> </div>
</div> </div>
<div class="col-1">no</div> <div class="col-1">no</div>

View File

@ -20,7 +20,7 @@
<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" th:if="${faSri.status eq 'DST001'}"> <div class="row mb-1" th:if="${faSri.status eq 'DST001'}">
<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 fw-bold">상태</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-start"> <label class="col-sm-1 col-form-label col-form-label-sm text-start">
<th:block th:each="code:${session.commonCode.get('DST')}"> <th:block th:each="code:${session.commonCode.get('DST')}">
<th:block th:if="${code.itemCd eq faSri.status}" th:text="${code.itemValue}"></th:block> <th:block th:if="${code.itemCd eq faSri.status}" th:text="${code.itemValue}"></th:block>
@ -28,32 +28,46 @@
</label> </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">분류</label> <th:block th:if="${faSri.refKey eq null}">
<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-start"> <label class="col-sm-1 col-form-label col-form-label-sm text-start">
<th:block th:each="code:${session.commonCode.get('SRI')}"> <th:block th:each="code:${session.commonCode.get('SRI')}">
<th:block th:if="${code.itemCd eq faSri.faSriType}" th:text="${code.itemValue}"></th:block> <th:block th:if="${code.itemCd eq faSri.faSriType}" th:text="${code.itemValue}"></th:block>
</th:block> </th:block>
</label> </label>
<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 fw-bold">제출기한</label>
<label class="col-sm-1 col-form-label col-form-label-sm text-start" th:text="${faSri.faSriEdate}"></label> <label class="col-sm-1 col-form-label col-form-label-sm text-start" th:text="${faSri.faSriEdate}"></label>
<div class="col-sm-5"></div> <div class="col-sm-5"></div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">작성일시</label> </th:block>
<th:block th:if="${faSri.refKey ne null}">
<div class="col-sm-9"></div>
</th:block>
<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(faSri.wrtDt, 'yyyy-MM-dd HH:mm')}"></label> <label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${#temporals.format(faSri.wrtDt, 'yyyy-MM-dd HH:mm')}"></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">제목</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">제목</label>
<label class="col-sm-8 col-form-label col-form-label-sm text-start" th:text="${faSri.title}"></label> <label class="col-sm-8 col-form-label col-form-label-sm text-start" th:text="${faSri.title}"></label>
<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 fw-bold">작성자</label>
<label class="col-sm-2 col-form-label col-form-label-sm text-start"> <label class="col-sm-2 col-form-label col-form-label-sm text-start" th:text="${faSri.wrtUserNm}"></label>
<th:block th:text="${faSri.wrtUserNm}"></th:block>
</label>
</div> </div>
<hr class="my-1"> <hr class="my-1">
<div class="row mb-1 justify-content-center"> <div class="row mb-1 justify-content-center">
<label for="content" class="col-sm-1 col-form-label col-form-label-sm text-center">내용</label> <label for="content" class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">내용</label>
<div class="col-sm-11 form-control-sm" id="content" th:utext="${faSri.content}"></div> <div class="col-sm-11 form-control-sm" id="content" th:utext="${faSri.content}"></div>
</div> </div>
<th:block th:if="${faSri.refKey ne null}">
<hr class="my-1">
<div class="row mb-1">
<label for="content" class="col-sm-1 col-form-label col-form-label-sm text-center fw-bold">하달 SRI</label>
<label class="col-sm-8 col-form-label col-form-label-sm text-start">
<th:block th:text="${faSri.refSri.title}"></th:block>
<i class="bi bi-arrow-right-square-fill text-info mouse-hover-clickable" id="getOriginSriBtn" th:data-fasrikey="${faSri.refKey}"></i>
</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="${faSri.refSri.wrtUserNm}"></label>
</div>
</th:block>
</div> </div>
<div class="tab-pane fade p-2" id="readUserTabPanel" role="tabpanel" tabindex="0"> <div class="tab-pane fade p-2" id="readUserTabPanel" role="tabpanel" tabindex="0">
<div class="row"> <div class="row">
@ -128,7 +142,7 @@
<th:block th:each="readUser:${faSri.readUserList}"> <th:block th:each="readUser:${faSri.readUserList}">
<th:block th:if="${userSeq eq readUser.userSeq}"> <th:block th:if="${userSeq eq readUser.userSeq}">
<th:block th:unless="${faSri.faSriEdate eq null}"> <th:block th:unless="${faSri.faSriEdate eq null}">
<button type="button" class="btn btn-success" id="reSendBtn" th:if="${faSri.faSriEdate} >= ${#temporals.createToday()}" th:data-fasrikey="${faSri.faSriKey}"></button> <button type="button" class="btn btn-success" id="reSendBtn" th:if="${faSri.faSriEdate} >= ${#temporals.createToday()}" th:data-fasrikey="${faSri.faSriKey}"></button>
</th:block> </th:block>
</th:block> </th:block>
</th:block> </th:block>