견문평가 로직 수정.

DESKTOP-NQTA8OG\lcks0 2022-09-29 15:02:15 +09:00
parent eea0329555
commit 4c86769cb6
8 changed files with 86 additions and 50 deletions

View File

@ -1,6 +1,7 @@
package com.dbnt.faisp.fpiMgt.affair;
import com.dbnt.faisp.authMgt.service.AuthMgtService;
import com.dbnt.faisp.codeMgt.service.CodeMgtService;
import com.dbnt.faisp.fpiMgt.affair.model.AffairBoard;
import com.dbnt.faisp.fpiMgt.affair.model.AffairRating;
import com.dbnt.faisp.fpiMgt.affair.service.AffairService;
@ -23,6 +24,7 @@ import java.util.Map;
public class AffairController { // 첩보수집활동 > 외사경찰 견문관리 > 견문관리
private final AffairService affairService;
private final AuthMgtService authMgtService;
private final CodeMgtService codeMgtService;
@GetMapping("/affairMgt")
public ModelAndView affairMgtPage(@AuthenticationPrincipal UserInfo loginUser, AffairBoard affairBoard){
@ -33,8 +35,7 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/affair/affairMgt").get(0).getAccessAuth();
switch (accessAuth){
case "ACC001": // 조회
case "ACC002": // 작성 // 자신이 작성한 문서만 열람가능
affairBoard.setWrtUserSeq(loginUser.getUserSeq());
case "ACC002": // 작성
break;
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능
affairBoard.setDownOrganCdList(loginUser.getDownOrganCdList());
@ -43,6 +44,7 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
}
//결재권한 확인
String apprvAuth = authMgtService.selectApprovalConfigList(loginUser.getUserSeq(), "/affair/affairMgt").get(0).getApprovalAuth();
affairBoard.setRatingOrgan(loginUser.getOgCd());
mav.addObject("accessAuth", accessAuth);
mav.addObject("apprvAuth", apprvAuth);
affairBoard.setQueryInfo();
@ -62,8 +64,7 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/affair/affairMgt").get(0).getAccessAuth();
switch (accessAuth){
case "ACC001": // 조회
case "ACC002": // 작성 // 자신의 관서 내에서 작성한 문서만 열람가능
affairBoard.setWrtOrgan(loginUser.getOgCd());
case "ACC002": // 작성
break;
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능
affairBoard.setDownOrganCdList(loginUser.getDownOrganCdList());
@ -72,6 +73,7 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
}
//결재권한 확인
String apprvAuth = authMgtService.selectApprovalConfigList(loginUser.getUserSeq(), "/affair/affairMgt").get(0).getApprovalAuth();
affairBoard.setRatingOrgan(loginUser.getOgCd());
if(apprvAuth==null) {
if(!accessAuth.equals("ACC003")){
affairBoard.setWrtUserSeq(loginUser.getUserSeq());
@ -111,8 +113,7 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/affair/affairMgt").get(0).getAccessAuth();
switch (accessAuth){
case "ACC001": // 조회
case "ACC002": // 작성 // 자신의 관서 내에서 작성한 문서만 열람가능
affairBoard.setWrtOrgan(loginUser.getOgCd());
case "ACC002": // 작성
break;
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능
affairBoard.setDownOrganCdList(loginUser.getDownOrganCdList());
@ -121,6 +122,7 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
}
//결재권한 확인
String apprvAuth = authMgtService.selectApprovalConfigList(loginUser.getUserSeq(), "/affair/affairMgt").get(0).getApprovalAuth();
affairBoard.setRatingOrgan(loginUser.getOgCd());
if(apprvAuth==null) {
if(!accessAuth.equals("ACC003")){
affairBoard.setWrtUserSeq(loginUser.getUserSeq());
@ -155,6 +157,11 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affair/affairEditModal");
if(affairBoard.getAffairKey()!=null){
affairBoard = affairService.selectAffairBoard(affairBoard.getAffairKey());
for(AffairRating rating: affairBoard.getRateList()){
if(rating.getRatingOrgan().equals(loginUser.getOgCd())){
affairBoard.setAffairStatus(rating.getAffairStatus());
}
}
}else{
affairBoard.setWrtOrgan(loginUser.getOgCd());
affairBoard.setWrtPart(loginUser.getOfcCd());
@ -171,11 +178,20 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
public ModelAndView affairViewModal(@AuthenticationPrincipal UserInfo loginUser, AffairBoard affairBoard){
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affair/affairViewModal");
affairBoard = affairService.selectAffairBoard(affairBoard.getAffairKey());
for(AffairRating rating: affairBoard.getRateList()){
if(rating.getRatingOrgan().equals(loginUser.getOgCd())){
affairBoard.setAffairStatus(rating.getAffairStatus());
}
}
mav.addObject("affair", affairBoard);
mav.addObject("userSeq",loginUser.getUserSeq());
//메뉴권한 확인
mav.addObject("accessAuth", authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/affair/affairMgt").get(0).getAccessAuth());
mav.addObject("apprvAuth", authMgtService.selectApprovalConfigList(loginUser.getUserSeq(), "/affair/affairMgt").get(0).getApprovalAuth());
String apprvAuth = authMgtService.selectApprovalConfigList(loginUser.getUserSeq(), "/affair/affairMgt").get(0).getApprovalAuth();
mav.addObject("apprvAuth", apprvAuth);
if(apprvAuth!=null && (apprvAuth.equals("APC002") || apprvAuth.equals("APC001"))){
mav.addObject("ratingCodeList", codeMgtService.selectCodeMgtList("AAR"));
}
return mav;
}

View File

@ -26,8 +26,6 @@ public class AffairBoard extends BaseModel {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "affair_key")
private Integer affairKey;
@Column(name = "affair_status")
private String affairStatus;
@Column(name = "affair_type1")
private String affairType1;
@Column(name = "affair_type2")
@ -62,6 +60,10 @@ public class AffairBoard extends BaseModel {
@Column(name = "view_status")
private String viewStatus;
@Transient
private String affairStatus;
@Transient
private String ratingOrgan;
@Transient
private String hashTags;

View File

@ -43,6 +43,8 @@ public class AffairRating{
private String affairRate;
@Column(name = "organ_up")
private String organUp;
@Column(name = "affair_status")
private String affairStatus;
@Embeddable

View File

@ -7,5 +7,5 @@ import java.util.List;
public interface AffairRatingRepository extends JpaRepository<AffairRating, AffairRating.AffairRatingId> {
List<AffairRating> findByAffairKey(Integer affairKey);
List<AffairRating> findByAffairKeyOrderByRatingOrganAsc(Integer affairKey);
}

View File

@ -38,22 +38,13 @@ public class AffairService extends BaseService { // 견문보고
if(affair != null){
affair.setHashTags(affairMapper.selectHashTags(affairKey));
affair.setFileList(affairFileRepository.findByAffairKey(affairKey));
affair.setRateList(affairRatingRepository.findByAffairKey(affairKey));
affair.setRateList(affairRatingRepository.findByAffairKeyOrderByRatingOrganAsc(affairKey));
}
return affair;
}
@Transactional
public Integer saveAffairBoard(AffairBoard affair, List<Integer> deleteFileSeq){
Integer affairKey = affairBoardRepository.save(affair).getAffairKey();
if(affair.getAffairStatus().equals("DST002")){
AffairRating rating = affairRatingRepository.findById(new AffairRating.AffairRatingId(affairKey,affair.getWrtOrgan())).orElse(null);
if(rating == null){
rating = new AffairRating();
rating.setAffairKey(affairKey);
rating.setRatingOrgan(affair.getWrtOrgan());
affairRatingRepository.save(rating);
}
}
String[] hashTagAry = affair.getHashTags().split(" ");
if(hashTagAry.length>0){
saveHashTagLink(affairKey, hashTagAry);
@ -64,6 +55,16 @@ public class AffairService extends BaseService { // 견문보고
if(affair.getMultipartFileList()!=null){
saveUploadFiles(affairKey, affair.getMultipartFileList());
}
AffairRating rating = affairRatingRepository.findById(new AffairRating.AffairRatingId(affairKey,affair.getWrtOrgan())).orElse(null);
if(rating == null){
rating = new AffairRating();
rating.setAffairKey(affairKey);
rating.setRatingOrgan(affair.getWrtOrgan());
}
rating.setAffairStatus(affair.getAffairStatus());
affairRatingRepository.save(rating);
return affairKey;
}
@ -118,34 +119,32 @@ public class AffairService extends BaseService { // 견문보고
@Transactional
public Integer affairStateChange(UserInfo loginUser, AffairRating rating) {
AffairBoard savedAffair = affairBoardRepository.findById(rating.getAffairKey()).orElse(null);
AffairRating savedRating = affairRatingRepository.findById(new AffairRating.AffairRatingId(rating.getAffairKey(), rating.getRatingOrgan())).orElse(null);
if(savedAffair!= null && savedRating != null){
if(savedRating != null){
if(rating.getHeadApprv() == null){
savedAffair.setAffairStatus(rating.getSectionApprv());
savedRating.setSectionNm(loginUser.getUserNm());
savedRating.setSectionApprvDt(LocalDateTime.now());
savedRating.setSectionApprv(rating.getSectionApprv());
savedRating.setSectionEtc(rating.getSectionEtc());
savedRating.setAffairStatus(rating.getSectionApprv());
}else{
savedAffair.setAffairStatus(rating.getHeadApprv());
savedRating.setHeadNm(loginUser.getUserNm());
savedRating.setHeadApprvDt(LocalDateTime.now());
savedRating.setHeadApprv(rating.getHeadApprv());
savedRating.setHeadEtc(rating.getHeadEtc());
savedRating.setAffairRate(rating.getAffairRate());
savedRating.setOrganUp(rating.getOrganUp());
if(rating.getOrganUp().equals("T")){
savedRating.setOrganUp(rating.getOrganUp()==null?"F":rating.getOrganUp());
savedRating.setAffairStatus(rating.getHeadApprv());
if(savedRating.getOrganUp().equals("T")){
List<String> organList = loginUser.getUpOrganCdList();
String upOrgan = organList.get(organList.indexOf(savedRating.getRatingOrgan())-1);
AffairRating upRating = new AffairRating();
upRating.setRatingOrgan(upOrgan);
upRating.setAffairKey(savedRating.getAffairKey());
upRating.setAffairStatus("DST002");
affairRatingRepository.save(upRating);
savedAffair.setAffairStatus("DST002");
}
}
affairBoardRepository.save(savedAffair);
affairRatingRepository.save(savedRating);
}
return rating.getAffairKey();

View File

@ -19,7 +19,7 @@
and a.title like '%'||#{title}||'%'
</if>
<if test='affairStatus != null and affairStatus != ""'>
and a.affair_status = #{affairStatus}
and c.affair_status = #{affairStatus}
</if>
<if test='startDate != null and startDate != ""'>
and a.wrt_dt >= #{startDate}::date
@ -27,6 +27,9 @@
<if test='endDate != null and endDate != ""'>
and a.wrt_dt &lt;= #{endDate}::date+1
</if>
<if test='ratingOrgan != null and ratingOrgan != ""'>
and c.rating_organ = #{ratingOrgan}
</if>
<if test="downOrganCdList != null">
and a.wrt_organ in
<foreach collection="downOrganCdList" item="organCd" separator="," open="(" close=")">
@ -35,22 +38,22 @@
</if>
<if test='userType != null and userType != ""'>
<if test='userType == "normalStayList"'>
and a.affair_status in ('DST002', 'DST004')
and c.affair_status in ('DST002', 'DST004')
</if>
<if test='userType == "normalCommitList"'>
and a.affair_status in ('DST003', 'DST005', 'DST006')
and c.affair_status in ('DST003', 'DST005', 'DST006')
</if>
<if test='userType == "sectionCommitList"'>
and a.affair_status in ('DST003', 'DST004', 'DST005', 'DST006')
and c.affair_status in ('DST003', 'DST004', 'DST005', 'DST006')
</if>
<if test='userType == "headCommitList"'>
and a.affair_status in ('DST003', 'DST005', 'DST006')
and c.affair_status in ('DST003', 'DST005', 'DST006')
</if>
<if test='userType == "managerStayList"'>
and a.affair_status in ('DST002', 'DST004')
and c.affair_status in ('DST002', 'DST004')
</if>
<if test='userType == "managerCommitList"'>
and a.affair_status in ('DST003', 'DST005', 'DST006')
and c.affair_status in ('DST003', 'DST005', 'DST006')
</if>
</if>
</where>
@ -58,26 +61,30 @@
<select id="selectAffairBoardList" resultType="AffairBoard" parameterType="AffairBoard">
select a.affair_key,
a.title,
a.affair_status,
a.wrt_organ,
a.wrt_part,
a.wrt_user_nm,
a.wrt_user_seq,
a.wrt_dt,
b.fileCnt
b.fileCnt,
c.affair_status
from affair_board a
left outer join (select affair_key,
left outer join (select affair_key,
count(file_seq) as fileCnt
from affair_file
group by affair_key) b
on a.affair_key = b.affair_key
on a.affair_key = b.affair_key
inner join affair_rating c
on a.affair_key = c.affair_key
<include refid="selectAffairBoardWhere"></include>
order by affair_key desc
order by a.affair_key desc
limit #{rowCnt} offset #{firstIndex}
</select>
<select id="selectAffairBoardCnt" resultType="int" parameterType="AffairBoard">
select count(*)
from affair_board a
inner join affair_rating c
on a.affair_key = c.affair_key
<include refid="selectAffairBoardWhere"></include>
</select>
<select id="selectHashTags" resultType="string" parameterType="int">

View File

@ -47,19 +47,22 @@ $(document).on('click', '#saveTempBtn', function (){
saveAffair('DST001')
})
$(document).on('click', '.apprvBtn', function (){
const apprvType = $(this).attr("data-apprvtype");
const affairState = $(this).attr("data-affairstate");
let flag = true;
if(apprvType==="head"){
if(affairState==="DST006"){ // 부장 승인
if(!$("#affairRate").val()){
alert("견문평가를 선택해주세요.")
flag = false;
}
}else if(affairState==="DST005"){ // 부장 반려
$("#organUp").prop("checked", false);
$("#affairRate").val("");
}
if(flag){
if(confirm($(this).val()+"하시겠습니까?")){
$((apprvType === "section"?"#sectionApprv":"#headApprv")).val($(this).attr("data-affairstate"))
const ratingOrganCd = $(".ratingOrganCd")
$("#apprvFormRatingOrgan").val(ratingOrganCd[ratingOrganCd.length-1].value);
const apprvType = $(this).attr("data-apprvtype");
$((apprvType === "section"?"#sectionApprv":"#headApprv")).val(affairState)
$("#apprvFormRatingOrgan").val($(".ratingOrganCd")[0].value);
const formData = new FormData($("#apprvForm")[0]);
contentFade("in")
$.ajax({

View File

@ -168,9 +168,16 @@
</div>
</div>
<div class="row" th:if="${rate.headApprv ne null}">
<div class="col-auto">
<th:block th:each="commonCode:${session.commonCode.get('AAR')}">
<span th:if="${commonCode.itemCd eq rate.affairRate}" th:text="|견문평가: ${commonCode.itemValue} ${rate.organUp eq 'T'?'(상보)':''}|"></span>
<div class="col-auto" th:data-headapprv="${rate.headApprv}">
<th:block th:if="${rate.headApprv eq 'DST006'}">
<th:block th:each="commonCode:${session.commonCode.get('AAR')}">
<span th:if="${commonCode.itemCd eq rate.affairRate}" th:text="|견문평가: ${commonCode.itemValue} ${rate.organUp eq 'T'?'(상보)':''}|"></span>
</th:block>
</th:block>
<th:block th:if="${rate.headApprv eq 'DST005'}">
<th:block th:each="commonCode:${session.commonCode.get('DST')}">
<span th:if="${commonCode.itemCd eq rate.headApprv}" th:text="|결재결과: ${commonCode.itemValue}|"></span>
</th:block>
</th:block>
<span th:text="|결재자: ${rate.headNm}|"></span>
</div>
@ -215,8 +222,8 @@
<div class="col-auto">
<select class="form-select form-select-sm" name="affairRate" id="affairRate">
<option value="">견문평가</option>
<th:block th:each="commonCode:${session.commonCode.get('AAR')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
<th:block th:each="ratingCode:${ratingCodeList}">
<option th:value="${ratingCode.itemCd}" th:text="${ratingCode.itemValue}"></option>
</th:block>
</select>
</div>