package kr.wisestone.owl.service.impl;
|
|
import kr.wisestone.owl.domain.*;
|
import kr.wisestone.owl.domain.enumType.IssueHistoryType;
|
import kr.wisestone.owl.mapper.IssueCompanyMapper;
|
import kr.wisestone.owl.repository.IssueCompanyRepository;
|
import kr.wisestone.owl.service.*;
|
import kr.wisestone.owl.util.ConvertUtil;
|
import kr.wisestone.owl.util.MapUtil;
|
import kr.wisestone.owl.web.condition.IssueCondition;
|
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.*;
|
|
@Service
|
public class IssueCompanyServiceImpl extends AbstractServiceImpl<IssueCompany, Long, JpaRepository<IssueCompany, Long>> implements IssueCompanyService {
|
|
private static final Logger log = LoggerFactory.getLogger(IssueCompanyServiceImpl.class);
|
|
@Autowired
|
private IssueCompanyRepository issueCompanyRepository;
|
|
@Autowired
|
private CompanyFieldService companyFieldService;
|
|
@Autowired
|
private IssueHistoryService issueHistoryService;
|
|
@Autowired
|
private IssueCompanyMapper issueCompanyMapper;
|
|
@Override
|
protected JpaRepository<IssueCompany, Long> getRepository() {
|
return this.issueCompanyRepository;
|
}
|
|
// 이슈에서 사용되는 업체 값을 업데이트한다.
|
@Override
|
@Transactional
|
public void modifyIssueCompanyField(Issue issue, List<Map<String, Object>> issueCompanyFields) {
|
if (issue != null) {
|
if (issueCompanyFields != null && issueCompanyFields.size() > 0) {
|
Map<String, Object> param = issueCompanyFields.get(0);
|
|
if (param != null && param.get("companyId") != null && param.get("companyId") != "") {
|
CompanyField companyField = this.companyFieldService.getCompany(MapUtil.getLong(param, "companyId")); //companyId 가져오기
|
|
Set<IssueCompany> issueCompanies = issue.getIssueCompanies();
|
IssueCompany issueCompany = null;
|
if (issueCompanies != null && issueCompanies.size() > 0) { //수정 할 경우
|
issueCompany = issueCompanies.iterator().next();
|
// 변경 이력
|
StringBuilder sb = new StringBuilder();
|
issueHistoryService.detectIssueCompany(IssueHistoryType.MODIFY, param, issueCompany, sb);
|
issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
|
|
issueCompany.setCompanyField(companyField);
|
issueCompany.setName(MapUtil.getString(param, "name"));
|
issueCompany.setEmail(MapUtil.getString(param, "email"));
|
issueCompany.setUrl(MapUtil.getString(param, "url"));
|
issueCompany.setManager(MapUtil.getString(param, "manager"));
|
issueCompany.setTel(MapUtil.getString(param, "tel"));
|
issueCompany.setMemo(MapUtil.getString(param, "memo"));
|
} else { //추가 할 경우
|
issueCompany = ConvertUtil.convertMapToClass(param, IssueCompany.class);
|
issueCompany.setIssue(issue);
|
if (companyField != null) {
|
issueCompany.setCompanyField(companyField);
|
}
|
// 추가 이력
|
StringBuilder sb = new StringBuilder();
|
issueHistoryService.detectIssueCompany(IssueHistoryType.ADD, param, issueCompany, sb);
|
issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
|
}
|
this.issueCompanyRepository.saveAndFlush(issueCompany);
|
} else {
|
this.issueCompanyRepository.deleteById(MapUtil.getLong(param, "id"));
|
}
|
}
|
}
|
}
|
|
@Override
|
@Transactional(readOnly = true)
|
public List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition) {
|
return this.issueCompanyMapper.findInIssueIds(issueCondition);
|
}
|
}
|