fix:민간통역인 중간저장

TaehunPark 2022-09-08 14:29:50 +09:00
parent f825579952
commit ea61d6ad09
9 changed files with 292 additions and 35 deletions

View File

@ -64,4 +64,18 @@ public class TranslatorController {
translatorSevice.updatetranslatorInfo(translator);
}
@GetMapping("/revisionHistory")
public ModelAndView revisionHistory(Translator translator){
ModelAndView mav = new ModelAndView("translator/translatorHistory");
mav.addObject("HistoryList", translatorSevice.selectHistoryList(translator));
return mav;
}
@GetMapping("/HistoryView")
@ResponseBody
public Translator HistoryView(Translator translator){
return translatorSevice.HistoryView(translator);
}
}

View File

@ -81,4 +81,12 @@ public class TranslatorService {
translatorRepository.save(translatorTmp);
}
public List<Translator> selectHistoryList(Translator translator) {
return translatorMapper.selectHistoryList(translator);
}
public Translator HistoryView(Translator translator) {
return translatorMapper.HistoryView(translator);
}
}

View File

@ -13,4 +13,8 @@ public interface TranslatorMapper {
Integer selectTranslatorListCnt(Translator translator);
List<Translator> selectHistoryList(Translator translator);
Translator HistoryView(Translator translator);
}

View File

@ -12,6 +12,7 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
@ -19,6 +20,7 @@ import org.springframework.security.core.userdetails.UserDetails;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.HashSet;
@ -64,7 +66,8 @@ public class Translator extends BaseModel implements Serializable{
@Column(name = "tr_visa")
private String trVisa;
@Column(name = "apt_dt")
private String aptDt;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate aptDt;
@Column(name = "dml_yn")
private String dmlYn;
@Column(name = "remark")

View File

@ -76,4 +76,42 @@
) a
</select>
<select id="selectHistoryList" resultType="Translator" parameterType="Translator">
select translator_key,
version_no,
wrt_nm,
wrt_dt
from translator_info
where translator_key = #{translatorKey}
order by wrt_dt desc
</select>
<select id="HistoryView" resultType="Translator" parameterType="Translator">
select a.translator_key,
version_no,
c.item_value as ogdp1,
d.item_value as tr_lang,
tr_career,
tr_name,
e.item_value as tr_sex,
tr_age,
f.item_value as tr_nny,
g.item_value as tr_edu,
tr_cft,
h.item_value as tr_visa,
dml_yn,
apt_dt,
tr_phone,
remark
from translator_info a
left outer join code_mgt c on a.ogdp1 = c.item_cd
left outer join code_mgt d on a.tr_lang = d.item_cd
left outer join code_mgt e on a.tr_sex = e.item_cd
left outer join code_mgt f on a.tr_nny = f.item_cd
left outer join code_mgt g on a.tr_edu = g.item_cd
left outer join code_mgt h on a.tr_visa = h.item_cd
where translator_key = #{translatorKey}
and version_no = #{versionNo}
</select>
</mapper>

View File

@ -1,20 +1,14 @@
$(document).on('click', '.userInfoTr', function (){
$.ajax({
url: '/translator/translatorEditModal',
data: {
translatorKey: Number($(this).find(".trKey").val()),
versionNo : Number($(this).find(".verNo").val())
},
type: 'GET',
dataType:"html",
success: function(html){
$("#configInfo").empty().append(html)
$("#translatorEditModal").modal('show');
},
error:function(){
}
});
document.getElementById('accessTab').classList.add('active');
document.getElementById('approvalTab').classList.remove('active');
const trKey = (Number($(this).find(".trKey").val()));
const verNo = (Number($(this).find(".verNo").val()));
const url = '/translator/translatorEditModal';
revisionHistory(trKey,verNo,url);
var html="";
html += '<input type="hidden" class="tapTrKey" value="'+trKey+'">';
html += '<input type="hidden" class="tapVerNo" value="'+verNo+'">';
$("#KeyValue").empty().html(html)
})
$(document).on('click', '#updateBtn', function (){
@ -119,3 +113,87 @@ function valueCheck(form){
}
return returnFlag;
}
$(document).on('click', '.historyInfoTr', function (){
$.ajax({
url: '/translator/HistoryView',
data: {
translatorKey: Number($(this).find(".trKey").val()),
versionNo : Number($(this).find(".verNo").val())
},
type: 'GET',
dataType:"json",
success: function(data){
$("#ogdp1V").val(data.ogdp1);
$("#trLangV").val(data.trLang);
$("#trCareerV").val(data.trCareer);
$("#trNameV").val(data.trName);
$("#trSexV").val(data.trSex);
$("#trPhoneV").val(data.trPhone);
$("#trNnyV").val(data.trNny);
$("#trAgeV").val(data.trAge);
$("#trVisaV").val(data.trVisa);
$("#trEduV").val(data.trEdu);
$("#trCftV").val(data.trCft);
$("#aptDtV").val(data.aptDt);
$("#dmlYnV").val(data.dmlYn);
$("#remarkV").val(data.remark);
// $("#configInfo").empty().append(html)
// $("#translatorEditModal").modal('show');
},
error:function(){
}
});
})
$(document).ready( function() {
$("#aptDt").datepicker({
format: "yyyy-mm-dd",
language: "ko"
});
});
$(document).on('click', '#approvalTab', function (){
const trKey = (Number($('.tapTrKey').val()));
const verNo = (Number($('.tapVerNo').val()));
const url = '/translator/revisionHistory';
revisionHistory(trKey,verNo,url);
document.getElementById('accessTab').classList.remove('active');
document.getElementById('approvalTab').classList.add('active');
})
$(document).on('click', '#accessTab', function (){
const trKey = (Number($('.tapTrKey').val()));
const verNo = (Number($('.tapVerNo').val()));
const url = '/translator/translatorEditModal';
revisionHistory(trKey,verNo,url);
document.getElementById('approvalTab').classList.remove('active');
document.getElementById('accessTab').classList.add('active');
})
function revisionHistory(trKey,verNo,url){
$.ajax({
url: url,
data: {
translatorKey: trKey,
versionNo : verNo
},
type: 'GET',
dataType:"html",
success: function(html){
$("#configInfo").empty().append(html)
$("#translatorEditModal").modal('show');
},
error:function(){
}
});
}
$(document).on('change', '#trNny', function (){
if($(this).val() == "NNY001"){
$("#trVisa").attr("disabled",true);
}else{
$("#trVisa").removeAttr("disabled");
}
});

View File

@ -91,17 +91,12 @@
<td th:text="${trInfo.trSex}"></td>
<td th:text="${trInfo.trNny}"></td>
<td th:text="${trInfo.trEdu}"></td>
<th:block th:if="${not #strings.isEmpty(trInfo.trCft)}">
<td>O</td>
</th:block>
<th:block th:if="${#strings.isEmpty(trInfo.trCft)}">
<td>X</td>
</th:block>
<td th:text="${trInfo.trCft}"></td>
<td th:text="${trInfo.trVisa}"></td>
<th:block th:if="${trInfo.dmlYn == 'Y'}">
<th:block th:if="${trInfo.dmlYn == 'O'}">
<td></td>
</th:block>
<th:block th:if="${trInfo.dmlYn == 'N'}">
<th:block th:if="${trInfo.dmlYn == 'X'}">
<td></td>
</th:block>
<td th:text="${trInfo.aptDt}"></td>
@ -206,7 +201,7 @@
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">국적</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="trNny">
<select class="form-select form-select-sm" id="trNny" name="trNny">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('NNY')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
@ -234,7 +229,7 @@
</div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">비자</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="trVisa">
<select class="form-select form-select-sm" id="trVisa" name="trVisa">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('VISA')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
@ -243,15 +238,15 @@
</div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">위촉일</label>
<div class="col-sm-4">
<!-- <input type="date" class="form-control" id="aptDt" name="aptDt"> -->
<input type="text" class="form-control" id="aptDt" name="aptDt">
</div>
</div>
<label for="ogCd" class="col-sm-2 col-form-label text-center">해촉</label>
<div class="col-sm-2">
<select class="form-select form-select-sm" name="dmlYn">
<option value="">선택</option>
<option value="Y"></option>
<option value="N">아니오</option>
<option value="O">O</option>
<option value="X">X</option>
</select>
</div>
@ -275,12 +270,15 @@
<div class="modal fade" id="translatorEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="authEditModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-scrollable">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content" id="authEditModalContent">
<div class="modal-header">
<h5 class="modal-title" id="menuEditModalLabel">통역인 정보</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div id="KeyValue">
</div>
<div class="modal-body">
<ul class="nav nav-tabs" id="userTab" role="tablist">
<li class="nav-item" role="presentation">

View File

@ -5,8 +5,8 @@
<form id="trInfoUpdate" method="post">
<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="translatorKey" th:value="${trInfo.translatorKey}"/>
<input type="hidden" name="versionNo" th:value="${trInfo.versionNo}"/>
<input type="hidden" class="translatorKey" th:value="${trInfo.translatorKey}"/>
<input type="hidden" class="versionNo" th:value="${trInfo.versionNo}"/>
<div class="mb-3 row">
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">관서</label>
@ -91,7 +91,7 @@
</div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">위촉일</label>
<div class="col-sm-4">
<!-- <input type="date" class="form-control" id="aptDt" name="aptDt"> -->
<input type="text" class="form-control" id="aptDt" name="aptDt">
</div>
</div>
<label for="ogCd" class="col-sm-2 col-form-label text-center">해촉</label>

View File

@ -0,0 +1,114 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<main class="pt-3">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<div class="row mx-0">
<div class="col-100 card text-center">
<div class="card-body">
<div class="row">
</div>
<div class="row justify-content-start">
<div class="col-4">
<div class="card">
<div class="card-body">
<div class="row">
<table class="table table-striped" id="categoryTable">
<thead>
<tr>
<th></th>
<th>작성자</th>
<th>등록일</th>
</tr>
</thead>
<tbody class="overflow-scroll">
<tr class="historyInfoTr" th:each="trInfo:${HistoryList}">
<td><input type="checkbox">
<input type="hidden" class="trKey" th:value="${trInfo.translatorKey}">
<input type="hidden" class="verNo" th:value="${trInfo.versionNo}">
</td>
<td th:text="${trInfo.wrtNm}"></td>
<td th:text="${trInfo.wrtDt}"></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-8" id="valueDiv">
<div class="mb-5 row">
<label for="ogCd" class="col-sm-1 col-form-label text-center">관서</label>
<div class="col-sm-3">
<input type="text" class="form-control" id="ogdp1V" readonly>
</div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">언어</label>
<div class="col-sm-3">
<input type="text" class="form-control" id="trLangV" readonly>
</div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">경력</label>
<div class="col-sm-3">
<input type="text" class="form-control" id="trCareerV" readonly>
</div>
</div>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-1 col-form-label text-center">성명</label>
<div class="col-sm-3">
<input type="text" class="form-control" id="trNameV" readonly>
</div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">성별</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="trSexV"readonly>
</div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">연락처</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="trPhoneV" readonly>
</div>
</div>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-1 col-form-label text-center">국적</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="trNnyV" readonly>
</div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">나이</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="trAgeV" readonly>
</div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">학력</label>
<div class="col-sm-3">
<input type="text" class="form-control" id="trEduV" readonly>
</div>
</div>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-1 col-form-label text-center">자격증</label>
<div class="col-sm-3">
<input type="text" class="form-control" id="trCftV"readonly>
</div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">비자</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="trVisaV" readonly>
</div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">위촉일</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="aptDtV" name="aptDt">
</div>
</div>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-1 col-form-label text-center">해촉</label>
<div class="col-sm-3">
<input type="text" class="form-control" id="dmlYnV" readonly>
</div>
</div>
<div class="mb-3 row">
<label for="tel" class="col-sm-1 col-form-label text-center">비고</label>
<div class="col-sm-11">
<textarea class="form-control" id="remarkV" readonly></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
</html>