package kr.wisestone.owl.service.impl; import kr.wisestone.owl.constant.Constants; import kr.wisestone.owl.domain.Issue; import kr.wisestone.owl.domain.IssueHistory; import kr.wisestone.owl.domain.IssueRelation; import kr.wisestone.owl.domain.enumType.IssueHistoryType; import kr.wisestone.owl.repository.IssueRelationRepository; import kr.wisestone.owl.service.IssueHistoryService; import kr.wisestone.owl.service.IssueRelationService; import kr.wisestone.owl.service.IssueService; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.util.MapUtil; import kr.wisestone.owl.vo.IssueRelationVo; import kr.wisestone.owl.vo.IssueVo; import kr.wisestone.owl.vo.ResPage; import kr.wisestone.owl.web.condition.IssueCondition; import kr.wisestone.owl.web.condition.IssueRelationCondition; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Service; import javax.transaction.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Map; @Service public class IssueRelationServiceImpl extends AbstractServiceImpl> implements IssueRelationService { @Autowired private IssueRelationRepository issueRelationRepository; @Autowired private IssueService issueService; @Autowired private IssueHistoryService issueHistoryService; @Override protected IssueRelationRepository getRepository() { return this.issueRelationRepository; } // 연관 일감 추가 @Override public void addRelationIssue(Map resJsonData, IssueRelationCondition condition) { if (condition != null) { Issue issue = this.issueService.getIssue(condition.getIssueId()); IssueRelation issueRelation = new IssueRelation(); issueRelation.setIssue(issue); issueRelation.setRelationIssue(issueService.getIssue(condition.getRelationIssueId())); issueRelation.setRelationIssueType(condition.getRelationIssueType()); issueRelationRepository.saveAndFlush(issueRelation); StringBuilder sb = new StringBuilder(); issueHistoryService.detectRelationIssue(IssueHistoryType.ADD, issueRelation, sb); issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString()); } } // 연관 일감 가져오기 @Override public List findRelationIssue(Map resJsonData, IssueRelationCondition condition, Pageable pageable) { List issueVos = findRelationIssue(condition.getIssueId()); resJsonData.put(Constants.RES_KEY_CONTENTS, issueVos); resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(), 1, issueVos.size())); return issueVos; } // 연관 일감 가져오기 @Override public List findRelationIssue(Long issueId) { List issueRelations = issueRelationRepository.findAllByIssueId(issueId); List issueVos = new ArrayList<>(); if (issueRelations != null) { for (IssueRelation issueRelation : issueRelations) { issueVos.add(ConvertUtil.copyProperties(issueRelation.getRelationIssue(), IssueVo.class)); } } return issueVos; } // 연관 일감 삭제 @Override @Transactional public boolean removeRelationIssue(Map resJsonData, IssueRelationCondition condition) { //Long id = condition.getId(); List relRemoveIds = condition.getRemoveIds(); if (relRemoveIds != null && relRemoveIds.size() > 0) { for (Long relId : relRemoveIds) { IssueRelation issueRelation = findOne(relId); if (issueRelation != null) { StringBuilder sb = new StringBuilder(); issueHistoryService.detectRelationIssue(IssueHistoryType.DELETE, issueRelation, sb); issueHistoryService.addIssueHistory(issueRelation.getIssue(), IssueHistoryType.MODIFY, sb.toString()); this.issueRelationRepository.deleteById(relId); } } return true; } return false; } }