package kr.wisestone.owl.service.impl;
|
|
import kr.wisestone.owl.domain.Issue;
|
import kr.wisestone.owl.domain.IssueRisk;
|
import kr.wisestone.owl.domain.Workspace;
|
import kr.wisestone.owl.repository.IssueRiskRepository;
|
import kr.wisestone.owl.service.IssueRiskService;
|
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.HashMap;
|
import java.util.Map;
|
|
@Service
|
public class IssueRiskServiceImpl extends AbstractServiceImpl<IssueRisk, Long, JpaRepository<IssueRisk, Long>> implements IssueRiskService {
|
|
private static final Logger log = LoggerFactory.getLogger(IssueRiskServiceImpl.class);
|
|
@Autowired
|
private IssueRiskRepository issueRiskRepository;
|
|
@Override
|
protected JpaRepository<IssueRisk, Long> getRepository() {
|
return this.issueRiskRepository;
|
}
|
|
// 이슈가 생성될 때 이슈 위험 관리도 같이 생성된다.
|
@Override
|
@Transactional
|
public IssueRisk addIssueRisk(Issue issue, Workspace workspace) {
|
IssueRisk issueRisk = new IssueRisk();
|
issueRisk.setChangeIssueStatusCount(0L);
|
issueRisk.setChangeAssigneeCount(0L);
|
issueRisk.setChangeDepartmentCount(0L);
|
issueRisk.setIssue(issue);
|
issueRisk.setWorkspace(workspace);
|
issueRisk.setIssueStatusIds(issue.getIssueStatus().getId().toString());
|
return this.issueRiskRepository.saveAndFlush(issueRisk);
|
}
|
|
// 이슈에서 담당자나 상태가 변경될 경우 이슈 위험 관리 정보를 업데이트한다.
|
/*@Override
|
@Transactional
|
public void modifyIssueRisk(Issue issue, Boolean changeIssueStatus, Boolean changeAssignee, Long issueStatusId) {
|
IssueRisk issueRisk = issue.getIssueRisk();
|
|
// 상태 변경
|
if (changeIssueStatus) {
|
String issueStatusIds = issueRisk.getIssueStatusIds();
|
issueStatusIds += "&" + issueStatusId;
|
|
Map<String, Integer> issueStatusIdMaps = new HashMap<>();
|
|
for (String key : issueStatusIds.split("&")) {
|
if (!issueStatusIdMaps.containsKey(key)) {
|
issueStatusIdMaps.put(key, 1);
|
}
|
else {
|
issueStatusIdMaps.put(key, issueStatusIdMaps.get(key) + 1);
|
}
|
}
|
|
Integer saveCount = 0;
|
|
for (Integer value : issueStatusIdMaps.values()) {
|
if (value > saveCount) {
|
saveCount = value;
|
}
|
}
|
|
issueRisk.setChangeIssueStatusCount(saveCount.longValue());
|
issueRisk.setIssueStatusIds(issueStatusIds);
|
}
|
|
// 담당자 변경
|
if (changeAssignee) {
|
issueRisk.setChangeAssigneeCount(issueRisk.getChangeAssigneeCount() + 1);
|
}
|
|
this.issueRiskRepository.saveAndFlush(issueRisk);
|
}*/
|
|
@Override
|
@Transactional
|
public void modifyIssueRisk(Issue issue, Boolean changeIssueStatus, Boolean changeDepartment, Long issueStatusId) {
|
IssueRisk issueRisk = issue.getIssueRisk();
|
|
// 상태 변경
|
if (changeIssueStatus) {
|
String issueStatusIds = issueRisk.getIssueStatusIds();
|
issueStatusIds += "&" + issueStatusId;
|
|
Map<String, Integer> issueStatusIdMaps = new HashMap<>();
|
|
for (String key : issueStatusIds.split("&")) {
|
if (!issueStatusIdMaps.containsKey(key)) {
|
issueStatusIdMaps.put(key, 1);
|
}
|
else {
|
issueStatusIdMaps.put(key, issueStatusIdMaps.get(key) + 1);
|
}
|
}
|
|
Integer saveCount = 0;
|
|
for (Integer value : issueStatusIdMaps.values()) {
|
if (value > saveCount) {
|
saveCount = value;
|
}
|
}
|
|
issueRisk.setChangeIssueStatusCount(saveCount.longValue());
|
issueRisk.setIssueStatusIds(issueStatusIds);
|
}
|
|
// 담당자 변경
|
if (changeDepartment) {
|
issueRisk.setChangeDepartmentCount(issueRisk.getChangeDepartmentCount() + 1);
|
}
|
|
this.issueRiskRepository.saveAndFlush(issueRisk);
|
}
|
}
|