Compare commits

...

2 Commits

Author SHA1 Message Date
TaehunPark 90a20960ff Merge branch 'master' of http://118.219.150.34:50501/DBNT/FAISP
# Conflicts:
#	src/main/java/com/dbnt/faisp/controller/TranslatorController.java
#	src/main/java/com/dbnt/faisp/translator/TranslatorService.java
2022-09-13 15:52:08 +09:00
TaehunPark 295be173ba 중간저장 2022-09-13 15:47:16 +09:00
5 changed files with 254 additions and 13 deletions

View File

@ -0,0 +1,92 @@
package com.dbnt.faisp.translator;
import com.dbnt.faisp.menuMgt.mapper.MenuMgtMapper;
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;
import java.time.LocalDateTime;
import java.util.*;
@Service
@RequiredArgsConstructor
public class TranslatorService {
private final TranslatorRepository translatorRepository;
private final TranslatorMapper translatorMapper;
public String insertTranslatorInfo(Translator translator) {
Translator dbTranslator = translatorRepository.findFirstByOrderByTranslatorKeyDesc();
translator.setWrtDt(LocalDateTime.now());
if (dbTranslator == null) {
translator.setTranslatorKey(1);
translator.setVersionNo(1);
translatorRepository.save(translator);
return translatorRepository.save(translator).getTrName();
} else {
translator.setTranslatorKey(dbTranslator.getTranslatorKey() + 1);
translator.setVersionNo(1);
return translatorRepository.save(translator).getTrName();
}
}
public List<Translator> selectTranslatorList(Translator translator) {
return translatorMapper.selectTranslatorList(translator);
}
public Integer selectTranslatorListCnt(Translator translator) {
return translatorMapper.selectTranslatorListCnt(translator);
}
public Translator selectTranslatorView(Translator translator) {
return translatorRepository.findById(new TranslatorId(translator.getTranslatorKey(), translator.getVersionNo()))
.orElse(null);
}
@Transactional
public void updatetranslatorInfo(Translator translator) {
System.out.println("@@="+translator);
Translator dbTranslator = translatorRepository.findById(new TranslatorId(translator.getTranslatorKey(), translator.getVersionNo())).orElse(null);
Translator translatorTmp = new Translator();
translatorTmp.setTranslatorKey(dbTranslator.getTranslatorKey());
translatorTmp.setVersionNo(dbTranslator.getVersionNo() + 1);
translatorTmp.setOgdp1(translator.getOgdp1());
translatorTmp.setTrLang(translator.getTrLang());
translatorTmp.setTrCareer(translator.getTrCareer());
translatorTmp.setTrName(translator.getTrName());
translatorTmp.setTrSex(translator.getTrSex());
translatorTmp.setTrPhone(translator.getTrPhone());
translatorTmp.setTrNny(translator.getTrNny());
translatorTmp.setTrAge(translator.getTrAge());
translatorTmp.setTrEdu(translator.getTrEdu());
translatorTmp.setTrCft(translator.getTrCft());
translatorTmp.setTrVisa(translator.getTrVisa());
translatorTmp.setAptDt(translator.getAptDt());
translatorTmp.setDmlYn(translator.getDmlYn());
translatorTmp.setRemark(translator.getRemark());
translatorTmp.setWrtNm(translator.getWrtNm());
translatorTmp.setWrtDt(LocalDateTime.now());
translatorTmp.setWrtOrgan(translator.getWrtOrgan());
translatorRepository.save(translatorTmp);
}
public List<Translator> selectHistoryList(Translator translator) {
return translatorMapper.selectHistoryList(translator);
}
public Translator HistoryView(Translator translator) {
return translatorMapper.HistoryView(translator);
}
}

View File

@ -0,0 +1,70 @@
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;
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;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "translator_career")
public class TranslatorCrr extends BaseModel implements Serializable{
@Id
@Column(name = "career_seq")
private Integer careerSeq;
@Column(name = "translator_key")
private Integer translatorKey;
@Column(name = "version_no")
private Integer versionNo;
@Column(name = "his_gubun")
private String hisGubun;
@Column(name = "contents")
private String contents;
@Column(name = "tc_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate tcDt;
@Column(name = "remark")
private String remark;
@Override
public String toString() {
return "TranslatorCrr [careerSeq=" + careerSeq + ", translatorKey=" + translatorKey + ", versionNo=" + versionNo
+ ", hisGubun=" + hisGubun + ", contents=" + contents + ", tcDt=" + tcDt + ", remark=" + remark + "]";
}
}

View File

@ -1,3 +1,6 @@
let trCarrerList=[];
let selectedIdx=0;
$(document).on('click', '.userInfoTr', function (){ $(document).on('click', '.userInfoTr', function (){
document.getElementById('accessTab').classList.add('active'); document.getElementById('accessTab').classList.add('active');
document.getElementById('approvalTab').classList.remove('active'); document.getElementById('approvalTab').classList.remove('active');
@ -35,15 +38,17 @@ $(document).on('click', '#updateBtn', function (){
}) })
$(document).on('click', '#saveBtn', function (){ $(document).on('click', '#saveBtn', function (){
console.log(trCarrerList);
if(confirm("저장하시겠습니까?")){ if(confirm("저장하시겠습니까?")){
contentFade("in"); contentFade("in");
const formData = new FormData($("#translatorInsert")[0]); const formData = new FormData($("#translatorInsert")[0]);
var values = JSON.stringify(trCarrerList);
$('input[name=TranslatorCrr]').val(values);
$.ajax({ $.ajax({
type : 'POST', type : 'POST',
data : formData, data : formData,
url : "/translator/insertTranslatorInfo", url : "/translator/insertTranslatorInfo",
processData: false, contentType: 'false',
contentType: false,
success : function(result) { success : function(result) {
alert("저장되었습니다.") alert("저장되었습니다.")
contentFade("out"); contentFade("out");
@ -151,6 +156,10 @@ $(document).ready( function() {
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
language: "ko" language: "ko"
}); });
$(".tcDt").datepicker({
format: "yyyy-mm-dd",
language: "ko"
});
}); });
$(document).on('click', '#approvalTab', function (){ $(document).on('click', '#approvalTab', function (){
@ -197,3 +206,69 @@ $(document).on('change', '#trNny', function (){
$("#trVisa").removeAttr("disabled"); $("#trVisa").removeAttr("disabled");
} }
}); });
$(document).on('click', '#crrAddBtn', function (){
$('#crr').append(
'<div class="mb-5 row" id="crrDiv">'+
'<div class="col-sm-1">'+
'<button type="button" class="btn btn-sm btn-outline-danger rowDeleteBtn"><i class="bi bi-x"></i></button>'+
'</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 crrInput" name="hisGubun">'+
'<option value="">선택</option>'+
'<option value="Y">해양경찰청</option>'+
'<option value="N">타기관</option>'+
'</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 tcDt crrInput" id="tcDt" name="tcDt">'+
'</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 crrInput" id="contents" name="contents">'+
'</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 crrInput" id="remark" name="remark">'+
'</div>'+
'</div>'
)
$(".tcDt").datepicker({
format: "yyyy-mm-dd",
language: "ko"
});
trCarrerList.push({hisGubun:"",tcDt:"",contents:"",remark:""});
console.log(trCarrerList);
})
$(document).on('click', '.rowDeleteBtn', function (){
console.log($(this).parents('#crr').children('#crrDiv'));
selectedIdx = $(this).parents('#crr').children('#crrDiv').length-1;
trCarrerList.splice(selectedIdx,1);
console.log(selectedIdx);
console.log(trCarrerList);
$(this).parents('#crrDiv').remove();
})
$(document).on('change', '.crrInput', function (){
selectedIdx = $(this).parents('#crr').children('#crrDiv').length-1;
const target = trCarrerList[selectedIdx];
console.log(target)
switch (this.name){
case "hisGubun":
target.hisGubun = this.value
break;
case "tcDt":
target.tcDt = this.value
break;
case "contents":
target.contents = this.value
break;
case "remark":
target.remark = this.value
break;
}
})

View File

@ -154,7 +154,6 @@
<form id="translatorInsert" action="#" method="post"> <form id="translatorInsert" action="#" method="post">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/> <input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/> <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<div class="mb-3 row">
<div class="mb-3 row"> <div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">관서</label> <label for="ogCd" class="col-sm-2 col-form-label text-center">관서</label>
<div class="col-sm-2"> <div class="col-sm-2">
@ -241,6 +240,7 @@
<input type="text" class="form-control" id="aptDt" name="aptDt"> <input type="text" class="form-control" id="aptDt" name="aptDt">
</div> </div>
</div> </div>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">해촉</label> <label for="ogCd" class="col-sm-2 col-form-label text-center">해촉</label>
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="dmlYn"> <select class="form-select form-select-sm" name="dmlYn">
@ -249,20 +249,24 @@
<option value="X">X</option> <option value="X">X</option>
</select> </select>
</div> </div>
</div>
<div class="mb-3 row"> <div class="mb-3 row">
<label for="tel" class="col-sm-2 col-form-label text-center">비고</label> <label for="tel" class="col-sm-2 col-form-label text-center">비고</label>
<div class="col-sm-4"> <div class="col-sm-4">
<textarea class="form-control" id="remark" name="remark"></textarea> <textarea class="form-control" id="remark" name="remark"></textarea>
</div> </div>
</div> </div>
</div> </form>
<h4>경력사항</h4>
<div id="crr">
<div class="row justify-content-center">
<button type="button" class="btn btn-sm btn-outline-primary col-auto" id="crrAddBtn"><i class="bi bi-plus-lg"></i></button>
</div>
</div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" id="closeModalBtn">닫기</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal" id="closeModalBtn">닫기</button>
<button type="button" class="btn btn-primary" id="saveBtn">등록</button> <button type="button" class="btn btn-primary" id="saveBtn">등록</button>
</div> </div>
</form>
</div> </div>
</div> </div>
</div> </div>

View File

@ -5,8 +5,8 @@
<form id="trInfoUpdate" method="post"> <form id="trInfoUpdate" method="post">
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/> <input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/> <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<input type="hidden" class="translatorKey" th:value="${trInfo.translatorKey}"/> <input type="hidden" class="translatorKey" name="translatorKey" th:value="${trInfo.translatorKey}"/>
<input type="hidden" class="versionNo" th:value="${trInfo.versionNo}"/> <input type="hidden" class="versionNo" name="versionNo" th:value="${trInfo.versionNo}"/>
<div class="mb-3 row"> <div class="mb-3 row">
<div class="mb-3 row"> <div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">관서</label> <label for="ogCd" class="col-sm-2 col-form-label text-center">관서</label>
@ -98,8 +98,8 @@
<div class="col-sm-2"> <div class="col-sm-2">
<select class="form-select form-select-sm" name="dmlYn"> <select class="form-select form-select-sm" name="dmlYn">
<option value="">선택</option> <option value="">선택</option>
<option value="Y"></option> <option value="O"></option>
<option value="N">아니오</option> <option value="X">아니오</option>
</select> </select>
</div> </div>