견문평가 로직 수정.
parent
eea0329555
commit
4c86769cb6
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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 <= #{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">
|
||||
|
|
|
|||
|
|
@ -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({
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue