package kr.wisestone.owl.service.impl;
|
|
import kr.wisestone.owl.constant.Constants;
|
import kr.wisestone.owl.domain.*;
|
import kr.wisestone.owl.repository.IssueTableConfigRepository;
|
import kr.wisestone.owl.service.IssueService;
|
import kr.wisestone.owl.service.IssueTableConfigService;
|
import kr.wisestone.owl.service.UserService;
|
import kr.wisestone.owl.service.WorkspaceService;
|
import kr.wisestone.owl.util.ConvertUtil;
|
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.List;
|
import java.util.Map;
|
|
@Service
|
public class IssueTableConfigServiceImpl extends AbstractServiceImpl<IssueTableConfig, Long, JpaRepository<IssueTableConfig, Long>> implements IssueTableConfigService {
|
|
private static final Logger log = LoggerFactory.getLogger(IssueTableConfigServiceImpl.class);
|
|
@Autowired
|
private IssueTableConfigRepository issueTableConfigRepository;
|
|
@Autowired
|
private WorkspaceService workspaceService;
|
|
@Autowired
|
private UserService userService;
|
|
@Override
|
protected JpaRepository<IssueTableConfig, Long> getRepository() {
|
return this.issueTableConfigRepository;
|
}
|
|
Long issueTypeId;
|
int issueTableType = 0; //issueTableType 초기값 설정
|
|
// add 중복코드 제거
|
public IssueTableConfig addIssueTableConfig(Map<String, Object> params, Long issueTypeId, int issueTableType) {
|
String issueTableConfigs = MapUtil.getString(params, "issueTableConfigs");
|
IssueTableConfig issueTableConfig = this.findByUserIdAndWorkspaceIdAndIssueTypeIdAndIssueTableType(issueTypeId, issueTableType);
|
|
// 아직 테이블 컬럼 설정을 하지 않았을 경우
|
if (issueTableConfig == null) {
|
issueTableConfig = new IssueTableConfig();
|
Workspace workspace = this.workspaceService.getWorkspace(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
|
User user = this.userService.getUser(this.webAppUtil.getLoginId());
|
issueTableConfig.setWorkspace(workspace);
|
issueTableConfig.setUser(user);
|
issueTableConfig.setIssueTypeId(issueTypeId);
|
issueTableConfig.setIssueTableType(issueTableType);
|
issueTableConfig.setIssueTableConfigs(issueTableConfigs);
|
}else {
|
issueTableConfig.setIssueTableConfigs(issueTableConfigs);
|
}
|
return this.issueTableConfigRepository.saveAndFlush(issueTableConfig);
|
}
|
|
// 이슈 테이블 컬럼 설정 정보를 저장한다.
|
@Override
|
@Transactional
|
public IssueTableConfig addIssueTableConfig(Map<String, Object> params) {
|
issueTypeId = MapUtil.getLong(params, "issueTypeId");
|
issueTableType = 1; //메인
|
return this.addIssueTableConfig(params, issueTypeId, issueTableType);
|
}
|
// 연관 이슈 테이블 설정 정보 저장
|
@Override
|
public IssueTableConfig addRelationIssueTableConfig(Map<String, Object> params) {
|
issueTypeId = MapUtil.getLong(params, "issueTypeId");
|
issueTableType = 2; //연관
|
return this.addIssueTableConfig(params, issueTypeId, issueTableType);
|
}
|
// 하위 이슈 테이블 설정 정보 저장
|
@Override
|
public IssueTableConfig addDownIssueTableConfig(Map<String, Object> params) {
|
issueTypeId = MapUtil.getLong(params, "issueTypeId");
|
issueTableType = 3; //하위
|
return this.addIssueTableConfig(params, issueTypeId, issueTableType);
|
}
|
|
|
// 해당 업무 공간에서 사용자의 이슈 테이블 설정을 조회한다.
|
@Override
|
@Transactional(readOnly = true)
|
public IssueTableConfig findByUserIdAndWorkspaceIdAndIssueTypeIdAndIssueTableType(Long issueTypeId, int issueTableType) {
|
List<IssueTableConfig> issueTableConfigList = null;
|
if (issueTypeId != null) {
|
issueTableConfigList = this.issueTableConfigRepository.findByUserIdAndWorkspaceIdAndIssueTypeIdAndIssueTableType(this.webAppUtil.getLoginId(),
|
this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId(), issueTypeId, issueTableType);
|
} else {
|
issueTableConfigList = this.issueTableConfigRepository.findByUserIdAndWorkspaceIdAndIssueTableType(this.webAppUtil.getLoginId(),
|
this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId(), issueTableType);
|
}
|
|
if (issueTableConfigList != null && issueTableConfigList.size() > 0) {
|
return issueTableConfigList.get(0);
|
}
|
return null;
|
}
|
|
//이슈타입 Id와 IssueTableType 조회
|
@Override
|
@Transactional(readOnly = true)
|
public IssueTableConfig findByIssueTypeIdAndIssueTableType(Long issueTypeId, int issueTableType) {
|
List<IssueTableConfig> issueTableConfigs = this.issueTableConfigRepository.findByIssueTypeIdAndIssueTableType(issueTypeId, issueTableType);
|
if (issueTableConfigs != null && issueTableConfigs.size() > 0){
|
return issueTableConfigs.get(0);
|
}
|
return null;
|
}
|
|
@Override
|
public void detailIssueTableConfig(Map<String, Object> params, Map<String, Object> resJsonData) {
|
Long issueTypeId = MapUtil.getLong(params,"issueTypeId");
|
int issueTableType = MapUtil.getInteger(params,"issueTableType");
|
|
IssueTableConfig issueTableConfig = this.findByUserIdAndWorkspaceIdAndIssueTypeIdAndIssueTableType(issueTypeId, issueTableType);
|
|
if (issueTableConfig != null) {
|
resJsonData.put(Constants.RES_KEY_CONTENTS, issueTableConfig.getIssueTableConfigs());
|
}
|
else {
|
resJsonData.put(Constants.RES_KEY_CONTENTS, "");
|
}
|
}
|
}
|