OWL ITS + 탐지시스템(인터넷 진흥원)
박지현
2022-03-03 25e69beeac0e3939ba1873806710a18a5ec3091e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package kr.wisestone.owl.service.impl;
 
import kr.wisestone.owl.constant.Constants;
import kr.wisestone.owl.domain.IssueSearch;
import kr.wisestone.owl.domain.User;
import kr.wisestone.owl.domain.Workspace;
import kr.wisestone.owl.repository.IssueSearchRepository;
import kr.wisestone.owl.service.IssueSearchService;
import kr.wisestone.owl.service.UserService;
import kr.wisestone.owl.service.WorkspaceService;
import kr.wisestone.owl.util.MapUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.Map;
 
@Service
public class IssueSearchServiceImpl extends AbstractServiceImpl<IssueSearch, Long, JpaRepository<IssueSearch, Long>> implements IssueSearchService {
 
    private static final Logger log = LoggerFactory.getLogger(IssueSearchServiceImpl.class);
 
    @Autowired
    private IssueSearchRepository issueSearchRepository;
 
    @Autowired
    private WorkspaceService workspaceService;
 
    @Autowired
    private UserService userService;
 
    @Override
    protected JpaRepository<IssueSearch, Long> getRepository() {
        return this.issueSearchRepository;
    }
 
    //  이슈 검색 조건을 저장한다. - 이슈 번호만 저장한다.
    @Override
    @Transactional
    public IssueSearch addIssueSearch(Map<String, Object> params) {
        String conditions = MapUtil.getString(params, "conditions");
        //  해당 업무 공간에서 사용자의 이슈 검색 조건을 조회한다.
        IssueSearch saveIssueSearch = this.findByUserIdAndWorkspaceId();
 
        if (saveIssueSearch == null) {
            IssueSearch issueSearch = new IssueSearch();
            Workspace workspace = this.workspaceService.getWorkspace(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
            User user = this.userService.getUser(this.webAppUtil.getLoginId());
            issueSearch.setWorkspace(workspace);
            issueSearch.setUser(user);
            issueSearch.setConditions(conditions);
            return this.issueSearchRepository.saveAndFlush(issueSearch);
        }
        else {
            saveIssueSearch.setConditions(conditions);
            return this.issueSearchRepository.saveAndFlush(saveIssueSearch);
        }
    }
 
    //  해당 업무 공간에서 사용자의 이슈 검색 조건을 조회한다.
    @Override
    @Transactional(readOnly = true)
    public IssueSearch findByUserIdAndWorkspaceId() {
        return this.issueSearchRepository.findByUserIdAndWorkspaceId(this.webAppUtil.getLoginId(),
                this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
    }
 
    //  저장된 이슈 검색 조건을 조회 후 즉시 삭제한다 - 이슈 번호만 검색 조건 저장해서 사용
    @Override
    @Transactional
    public void detailIssueSearch(Map<String, Object> resJsonData) {
        //  해당 업무 공간에서 사용자의 이슈 검색 조건을 조회한다.
        IssueSearch issueSearch = this.findByUserIdAndWorkspaceId();
 
        if (issueSearch != null) {
            resJsonData.put(Constants.RES_KEY_CONTENTS, issueSearch.getConditions());
            issueSearch.setConditions(null);
            this.issueSearchRepository.saveAndFlush(issueSearch);
        }
        else {
            resJsonData.put(Constants.RES_KEY_CONTENTS, "");
        }
    }
 
}