fix:민간통역 작업중푸쉬

TaehunPark 2022-09-05 16:47:25 +09:00
parent dfe12296e1
commit c3ffc6759b
9 changed files with 264 additions and 127 deletions

View File

@ -31,12 +31,12 @@ public class CodeMgt {
private String status;
@Override
public String toString() {
return "CodeMgt [categoryCd=" + categoryCd + ", itemCd=" + itemCd + ", itemValue=" + itemValue + ", useChk="
+ useChk + ", status=" + status + "]";
}
public String toString() {
return "CodeMgt [categoryCd=" + categoryCd + ", itemCd=" + itemCd + ", itemValue=" + itemValue + ", useChk="
+ useChk + ", status=" + status + "]";
}
@Embeddable
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor

View File

@ -35,7 +35,6 @@ public class TranslatorController {
public ModelAndView translatorInfo(@AuthenticationPrincipal UserInfo loginUser,Translator translator) {
ModelAndView mav = new ModelAndView("translator/translator");
translator.setOrganCdList(organConfigService.selectOrganListWhereUserOgCd(loginUser.getOgCd()));
System.out.println("@@="+translator.getOrganCdList());
translator.setQueryInfo();
mav.addObject("translatorList", translatorSevice.selectTranslatorList(translator));
translator.setContentCnt(translatorSevice.selectTranslatorListCnt(translator));
@ -51,4 +50,19 @@ public class TranslatorController {
return translatorSevice.insertTranslatorInfo(translator);
}
@GetMapping("/translatorEditModal")
public ModelAndView translatorEditModal(Translator translator){
ModelAndView mav = new ModelAndView("translator/translatorEditModal");
mav.addObject("trInfo", translatorSevice.selectTranslatorView(translator));
return mav;
}
@PostMapping("/updatetranslatorInfo")
public void updatetranslatorInfo(@AuthenticationPrincipal UserInfo loginUser,Translator translator) {
System.out.println("@@="+translator);
translator.setWrtNm(loginUser.getUserId());
translator.setWrtOrgan(loginUser.getOgCd());
translatorSevice.updatetranslatorInfo(translator);
}
}

View File

@ -5,10 +5,13 @@ import com.dbnt.faisp.menuMgt.model.MenuMgt;
import com.dbnt.faisp.menuMgt.repository.MenuMgtRepository;
import com.dbnt.faisp.translator.mapper.TranslatorMapper;
import com.dbnt.faisp.translator.model.Translator;
import com.dbnt.faisp.translator.model.Translator.TranslatorId;
import com.dbnt.faisp.translator.repository.TranslatorRepository;
import com.dbnt.faisp.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.Transient;
@ -24,6 +27,7 @@ public class TranslatorService {
public String insertTranslatorInfo(Translator translator) {
translator.setVersionNo(1);
translator.setWrtDt(LocalDateTime.now());
return translatorRepository.save(translator).getTrName();
}
@ -39,4 +43,15 @@ public class TranslatorService {
}
public Translator selectTranslatorView(Translator translator) {
return translatorRepository.findById(new TranslatorId(translator.getTranslatorKey(), translator.getVersionNo())).orElse(null);
}
@Transactional
public void updatetranslatorInfo(Translator translator) {
translator.setVersionNo(translator.getVersionNo()+1);
translatorRepository.save(translator);
}
}

View File

@ -2,7 +2,11 @@ package com.dbnt.faisp.translator.model;
import com.dbnt.faisp.authMgt.model.AccessConfig;
import com.dbnt.faisp.authMgt.model.ApprovalConfig;
import com.dbnt.faisp.codeMgt.model.CodeMgt;
import com.dbnt.faisp.config.BaseModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@ -28,11 +32,13 @@ import java.util.Set;
@DynamicInsert
@DynamicUpdate
@Table(name = "translator_info")
@IdClass(Translator.TranslatorId.class)
public class Translator extends BaseModel implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "translator_key")
private Integer translatorKey;
@Id
@Column(name = "version_no")
private Integer versionNo;
@Column(name = "ogdp1")
@ -81,7 +87,14 @@ public String toString() {
+ ", dmlYn=" + dmlYn + ", remark=" + remark + ", wrtNm=" + wrtNm + ", wrtDt=" + wrtDt + "]";
}
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class TranslatorId implements Serializable {
private Integer translatorKey;
private Integer versionNo;
}
}

View File

@ -1,13 +1,11 @@
package com.dbnt.faisp.translator.repository;
import com.dbnt.faisp.translator.model.Translator;
import com.dbnt.faisp.userInfo.model.UserInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface TranslatorRepository extends JpaRepository<Translator, Integer> {
public interface TranslatorRepository extends JpaRepository<Translator, Translator.TranslatorId> {
}

View File

@ -6,22 +6,32 @@
<mapper namespace="com.dbnt.faisp.translator.mapper.TranslatorMapper">
<select id="selectTranslatorList" resultType="Translator" parameterType="Translator">
select
translator_key,
(select item_value from code_mgt where item_cd = ogdp1) as ogdp1,
(select item_value from code_mgt where item_cd = tr_lang) as tr_lang,
select a.translator_key,
version_no,
c.item_value as ogdp1,
d.item_value as tr_lang,
tr_career,
tr_name,
(select item_value from code_mgt where item_cd = tr_sex) as tr_sex,
e.item_value as tr_sex,
tr_age,
(select item_value from code_mgt where item_cd = tr_nny) as tr_nny,
(select item_value from code_mgt where item_cd = tr_edu) as tr_edu,
f.item_value as tr_nny,
g.item_value as tr_edu,
tr_cft,
(select item_value from code_mgt where item_cd = tr_visa) as tr_visa,
h.item_value as tr_visa,
dml_yn,
apt_dt,
tr_phone
from translator_info
from translator_info a
inner join (select translator_key, max(version_no) as lastVer
from translator_info
group by translator_key) b
on a.translator_key =b.translator_key and a.version_no = b.lastVer
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 wrt_organ in
<foreach collection="organCdList" item="item" index="index" separator="," open="(" close=")">
#{item}
@ -32,11 +42,38 @@
<select id="selectTranslatorListCnt" resultType="int" parameterType="Translator">
select count(*)
from translator_info
where wrt_organ in
from(
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
from translator_info a
inner join (select translator_key, max(version_no) as lastVer
from translator_info
group by translator_key) b
on a.translator_key =b.translator_key and a.version_no = b.lastVer
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 wrt_organ in
<foreach collection="organCdList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
) a
</select>
</mapper>

View File

@ -1,4 +1,43 @@
$(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).on('click', '#updateBtn', function (){
if(confirm("수정하시겠습니까?")){
contentFade("in");
const formData = new FormData($("#trInfoUpdate")[0]);
$.ajax({
type : 'POST',
data : formData,
url : "/translator/updatetranslatorInfo",
processData: false,
contentType: false,
success : function() {
alert("수정되었습니다.");
contentFade("out");
},
error : function(xhr, status) {
alert("수정에 실패하였습니다.");
contentFade("out");
}
})
}
})
$(document).on('click', '#saveBtn', function (){
if(confirm("저장하시겠습니까?")){

View File

@ -78,6 +78,10 @@
</thead>
<tbody>
<tr class="userInfoTr" th:each="trInfo:${translatorList}">
<th:block>
<input type="hidden" class="trKey" th:value="${trInfo.translatorKey}">
<input type="hidden" class="verNo" th:value="${trInfo.versionNo}">
</th:block>
<td th:text="${trInfo.translatorKey}"></td>
<td th:text="${trInfo.ogdp1}"></td>
<td th:text="${trInfo.trLang}"></td>
@ -254,7 +258,7 @@
<div class="mb-3 row">
<label for="tel" class="col-sm-2 col-form-label text-center">비고</label>
<div class="col-sm-4">
<textarea class="form-control" id="remark"></textarea>
<textarea class="form-control" id="remark" name="remark"></textarea>
</div>
</div>
@ -270,30 +274,26 @@
<div class="modal fade" id="authEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="authEditModalLabel" aria-hidden="true">
<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-content" id="authEditModalContent">
<div class="modal-header">
<h5 class="modal-title" id="menuEditModalLabel">권한 편집</h5>
<h5 class="modal-title" id="menuEditModalLabel">통역인 정보</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<ul class="nav nav-tabs" id="userTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="accessTab" data-bs-toggle="tab" data-bs-target="#accessTabPanel" type="button" role="tab" aria-controls="accessTabPanel" aria-selected="true">메뉴</button>
<button class="nav-link active" id="accessTab" data-bs-toggle="tab" data-bs-target="#accessTabPanel" type="button" role="tab" aria-controls="accessTabPanel" aria-selected="true">인적사항</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="approvalTab" data-bs-toggle="tab" data-bs-target="#approvalTabPanel" type="button" role="tab" aria-controls="approvalTabPanel" aria-selected="false">결재</button>
<button class="nav-link" id="approvalTab" data-bs-toggle="tab" data-bs-target="#approvalTabPanel" type="button" role="tab" aria-controls="approvalTabPanel" aria-selected="false">수정이력</button>
</li>
</ul>
<div class="tab-content border border-top-0" id="configInfo">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
<button type="button" class="btn btn-primary" id="saveAuthBtn">저장</button>
</div>
</div>
</div>
</div>

View File

@ -1,100 +1,121 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<input type="hidden" id="userSeq" th:value="${userInfo.userSeq}">
<div class="tab-pane fade show active" id="accessTabPanel" role="tabpanel" aria-labelledby="accessTab" tabindex="0">
<table class="table table-hover text-center" id="accessEditTable">
<thead>
<tr>
<th>대분류</th>
<th>중분류</th>
<th>소분류</th>
<th>관리</th>
<th>작성</th>
<th>조회</th>
</tr>
</thead>
<tbody>
<tr th:each="accessConfig:${userInfo.accessConfigList}">
<input type="hidden" class="menuKey" th:value="${accessConfig.menuKey}">
<th:block th:each="commonCode:${session.commonCode.get('CAT1')}">
<th:block th:if="${commonCode.itemCd eq accessConfig.cat1Cd}">
<td th:text="${commonCode.itemValue}"></td>
</th:block>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('CAT2')}">
<th:block th:if="${commonCode.itemCd eq accessConfig.cat2Cd}">
<td th:text="${commonCode.itemValue}"></td>
</th:block>
</th:block>
<th:block th:if="${#strings.isEmpty(accessConfig.cat3Cd)}">
<td></td>
</th:block>
<th:block th:unless="${#strings.isEmpty(accessConfig.cat3Cd)}" th:each="commonCode:${session.commonCode.get('CAT3')}">
<th:block th:if="${commonCode.itemCd eq accessConfig.cat3Cd}">
<td th:text="${commonCode.itemValue}"></td>
</th:block>
</th:block>
<td class="radioTd">
<input type="radio" th:name="${#strings.concat('accessAuth',accessConfig.menuKey)}" th:checked="${'ACC003' eq accessConfig.accessAuth}" value="ACC003">
</td>
<td class="radioTd">
<input type="radio" th:name="${#strings.concat('accessAuth',accessConfig.menuKey)}" th:checked="${'ACC002' eq accessConfig.accessAuth}" value="ACC002">
</td>
<td class="radioTd">
<input type="radio" th:name="${#strings.concat('accessAuth',accessConfig.menuKey)}" th:checked="${'ACC001' eq accessConfig.accessAuth}" value="ACC001">
</td>
</tr>
</tbody>
</table>
</div>
<div class="tab-pane fade" id="approvalTabPanel" role="tabpanel" aria-labelledby="approvalTab" tabindex="0">
<table class="table table-hover text-center" id="approvalEditTable">
<thead>
<tr>
<th>대분류</th>
<th>중분류</th>
<th>소분류</th>
<th>계장대행</th>
<th>계장</th>
<th>과장대행</th>
<th>과장</th>
</tr>
</thead>
<tbody>
<tr th:each="approvalConfig:${userInfo.approvalConfigList}">
<input type="hidden" class="menuKey" th:value="${approvalConfig.menuKey}">
<th:block th:each="commonCode:${session.commonCode.get('CAT1')}">
<th:block th:if="${commonCode.itemCd eq approvalConfig.cat1Cd}">
<td th:text="${commonCode.itemValue}">.</td>
</th:block>
</th:block>
<th:block th:each="commonCode:${session.commonCode.get('CAT2')}">
<th:block th:if="${commonCode.itemCd eq approvalConfig.cat2Cd}">
<td th:text="${commonCode.itemValue}">.</td>
</th:block>
</th:block>
<th:block th:if="${#strings.isEmpty(approvalConfig.cat3Cd)}">
<td></td>
</th:block>
<th:block th:unless="${#strings.isEmpty(approvalConfig.cat3Cd)}" th:each="commonCode:${session.commonCode.get('CAT3')}">
<th:block th:if="${commonCode.itemCd eq approvalConfig.cat3Cd}">
<td th:text="${commonCode.itemValue}"></td>
</th:block>
</th:block>
<td class="radioTd">
<input type="radio" th:name="${#strings.concat('approvalAuth',approvalConfig.menuKey)}" th:checked="${'APC004' eq approvalConfig.approvalAuth}" value="APC004">
</td>
<td class="radioTd">
<input type="radio" th:name="${#strings.concat('approvalAuth',approvalConfig.menuKey)}" th:checked="${'APC003' eq approvalConfig.approvalAuth}" value="APC003">
</td>
<td class="radioTd">
<input type="radio" th:name="${#strings.concat('approvalAuth',approvalConfig.menuKey)}" th:checked="${'APC002' eq approvalConfig.approvalAuth}" value="APC002">
</td>
<td class="radioTd">
<input type="radio" th:name="${#strings.concat('approvalAuth',approvalConfig.menuKey)}" th:checked="${'APC001' eq approvalConfig.approvalAuth}" value="APC001">
</td>
</tr>
</tbody>
</table>
</div>
<div class="modal-dialog modal-lg">
<div class="modal-content ">
<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}"/>
<div class="mb-3 row">
<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="ogdp1">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.ogdp1}"></option>
</th:block>
</select>
</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="trLang">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('LGG')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.trLang}"></option>
</th:block>
</select>
</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="trCareer" name="trCareer" th:value="${trInfo.trCareer}">
</div>
</div>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">성명</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="trName" name="trName" th:value="${trInfo.trName}">
</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="trSex">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('SEX')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.trSex}"></option>
</th:block>
</select>
</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="trPhone" name="trPhone" th:value="${trInfo.trPhone}">
</div>
</div>
<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">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('NNY')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.trNny}"></option>
</th:block>
</select>
</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="trAge" name="trAge" th:value="${trInfo.trAge}">
</div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">학력</label>
<div class="col-sm-4">
<select class="form-select form-select-sm" name="trEdu">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('EDU')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.trEdu}"></option>
</th:block>
</select>
</div>
</div>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">자격증</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="trCft" name="trCft" th:value="${trInfo.trCft}">
</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">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('VISA')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.trVisa}"></option>
</th:block>
</select>
</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"> -->
</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>
</select>
</div>
<div class="mb-3 row">
<label for="tel" class="col-sm-2 col-form-label text-center">비고</label>
<div class="col-sm-4">
<textarea class="form-control" id="remark" th:text="${trInfo.remark}"></textarea>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" id="closeModalBtn">해임</button>
<button type="button" class="btn btn-primary" id="updateBtn">수정</button>
</div>
</form>
</div>
</div>
</html>