From 729564acfd97630060acdd77694da87cc1c67979 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 목, 18 11월 2021 09:41:41 +0900 Subject: [PATCH] 이슈관리 추가 완료 *DB날리고 실행 --- src/main/java/kr/wisestone/owl/vo/IssueVo.java | 76 +- src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java | 72 +++ src/main/java/kr/wisestone/owl/repository/IssueIspRepository.java | 12 src/main/java/kr/wisestone/owl/domain/Issue.java | 69 +- src/main/resources/migration/V1_11__Alter_Table.sql | 51 ++ src/main/java/kr/wisestone/owl/web/form/IssueForm.java | 54 + src/main/resources/mybatis/query-template/issueIsp-template.xml | 27 + src/main/java/kr/wisestone/owl/mapper/IssueCompanyMapper.java | 16 src/main/java/kr/wisestone/owl/mapper/IssueHostingMapper.java | 16 src/main/java/kr/wisestone/owl/vo/IssueIspVo.java | 63 ++ src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java | 69 ++ src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 119 +++- src/main/resources/mybatis/query-template/issueCompany-template.xml | 27 + src/main/java/kr/wisestone/owl/vo/IssueCompanyVo.java | 63 ++ src/main/java/kr/wisestone/owl/domain/IssueHosting.java | 105 ++++ src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java | 39 + src/main/java/kr/wisestone/owl/mapper/IssueIspMapper.java | 16 src/main/resources/migration/V1_1__Initial_Setup.sql | 3 src/main/resources/mybatis/query-template/issueHosting-template.xml | 27 + src/main/webapp/scripts/app/issue/issueAdd.controller.js | 72 -- src/main/java/kr/wisestone/owl/repository/IssueHostingRepository.java | 12 src/main/java/kr/wisestone/owl/service/IssueCompanyService.java | 15 src/main/java/kr/wisestone/owl/service/IssueHostingService.java | 15 src/main/java/kr/wisestone/owl/domain/IssueCompany.java | 105 ++++ src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java | 70 ++ src/main/java/kr/wisestone/owl/repository/IssueCompanyRepository.java | 12 src/main/java/kr/wisestone/owl/domain/IssueIsp.java | 105 ++++ src/main/java/kr/wisestone/owl/service/IssueIspService.java | 15 src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java | 1 src/main/java/kr/wisestone/owl/vo/IssueHostingVo.java | 63 ++ 30 files changed, 1,233 insertions(+), 176 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/domain/Issue.java b/src/main/java/kr/wisestone/owl/domain/Issue.java index c2738c0..6f57e22 100644 --- a/src/main/java/kr/wisestone/owl/domain/Issue.java +++ b/src/main/java/kr/wisestone/owl/domain/Issue.java @@ -46,18 +46,6 @@ @JoinColumn(name = "severity_id") private Severity severity; - @ManyToOne(fetch=FetchType.LAZY) - @JoinColumn(name = "company_id") - private CompanyField companyField; - - @ManyToOne(fetch=FetchType.LAZY) - @JoinColumn(name = "hosting_id") - private HostingField hostingFieldId; - - @ManyToOne(fetch=FetchType.LAZY) - @JoinColumn(name = "isp_id") - private IspField ispFieldId; - @OneToOne(mappedBy = "issue", cascade = {CascadeType.ALL}, orphanRemoval = true) private IssueRisk issueRisk; @@ -87,6 +75,15 @@ @OneToMany(mappedBy = "issue", cascade = { CascadeType.ALL }, orphanRemoval = true) private Set<IssueCustomFieldValue> issueCustomFieldValues = new HashSet<>(); + + @OneToMany(mappedBy = "issue", cascade = { CascadeType.ALL }, orphanRemoval = true) + private Set<IssueCompany> issueCompanies = new HashSet<>(); + + @OneToMany(mappedBy = "issue", cascade = { CascadeType.ALL }, orphanRemoval = true) + private Set<IssueIsp> issueIsps = new HashSet<>(); + + @OneToMany(mappedBy = "issue", cascade = { CascadeType.ALL }, orphanRemoval = true) + private Set<IssueHosting> issueHostings = new HashSet<>(); @OneToMany(mappedBy = "issue", cascade = { CascadeType.ALL }, orphanRemoval = true) private Set<IssueVersion> issueVersions = new HashSet<>(); @@ -177,30 +174,6 @@ this.severity = severity; } - public CompanyField getCompanyField() { - return companyField; - } - - public void setCompanyField(CompanyField companyField) { - this.companyField = companyField; - } - - public HostingField getHostingFieldId() { - return hostingFieldId; - } - - public void setHostingFieldId(HostingField hostingFieldId) { - this.hostingFieldId = hostingFieldId; - } - - public IspField getIspFieldId() { - return ispFieldId; - } - - public void setIspFieldId(IspField ispFieldId) { - this.ispFieldId = ispFieldId; - } - public IssueRisk getIssueRisk() { return issueRisk; } @@ -273,6 +246,30 @@ this.issueCustomFieldValues = issueCustomFieldValues; } + public Set<IssueCompany> getIssueCompanies() { + return issueCompanies; + } + + public void setIssueCompanies(Set<IssueCompany> issueCompanies) { + this.issueCompanies = issueCompanies; + } + + public Set<IssueIsp> getIssueIspFields() { + return issueIsps; + } + + public void setIssueIspFields(Set<IssueIsp> issueIsps) { + this.issueIsps = issueIsps; + } + + public Set<IssueHosting> getIssueHostingFields() { + return issueHostings; + } + + public void setIssueHostingFields(Set<IssueHosting> issueHostings) { + this.issueHostings = issueHostings; + } + public String getStartDate() { return startDate; } diff --git a/src/main/java/kr/wisestone/owl/domain/IssueCompany.java b/src/main/java/kr/wisestone/owl/domain/IssueCompany.java new file mode 100644 index 0000000..6fd025d --- /dev/null +++ b/src/main/java/kr/wisestone/owl/domain/IssueCompany.java @@ -0,0 +1,105 @@ +package kr.wisestone.owl.domain; + +import javax.persistence.*; +import java.io.Serializable; + +/** + * Created by wisestone on 2018-03-07. + */ +@Entity +public class IssueCompany extends BaseEntity implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + private String manager; + private String tel; + private String email; + private String memo; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "issue_id") + private Issue issue; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "company_id") + private CompanyField companyField; + + public IssueCompany(){} + + public IssueCompany(Issue issue, CompanyField companyField, String name, String manager, String tel, String email, String memo){ + this.issue = issue; + this.companyField = companyField; + this.name = name; + this.manager = manager; + this.tel = tel; + this.email = email; + this.memo = memo; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getManager() { + return manager; + } + + public void setManager(String manager) { + this.manager = manager; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getMemo() { + return memo; + } + + public void setMemo(String memo) { + this.memo = memo; + } + + public Issue getIssue() { + return issue; + } + + public void setIssue(Issue issue) { + this.issue = issue; + } + + public CompanyField getCompanyField() { + return companyField; + } + + public void setCompanyField(CompanyField companyField) { + this.companyField = companyField; + } +} diff --git a/src/main/java/kr/wisestone/owl/domain/IssueHosting.java b/src/main/java/kr/wisestone/owl/domain/IssueHosting.java new file mode 100644 index 0000000..c7cd429 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/domain/IssueHosting.java @@ -0,0 +1,105 @@ +package kr.wisestone.owl.domain; + +import javax.persistence.*; +import java.io.Serializable; + +/** + * Created by wisestone on 2018-03-07. + */ +@Entity +public class IssueHosting extends BaseEntity implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + private String manager; + private String tel; + private String email; + private String memo; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "issue_id") + private Issue issue; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "hosting_id") + private HostingField hostingField; + + public IssueHosting(){} + + public IssueHosting(Issue issue, HostingField hostingField, String name, String manager, String tel, String email, String memo){ + this.issue = issue; + this.hostingField = hostingField; + this.name = name; + this.manager = manager; + this.tel = tel; + this.email = email; + this.memo = memo; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getManager() { + return manager; + } + + public void setManager(String manager) { + this.manager = manager; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getMemo() { + return memo; + } + + public void setMemo(String memo) { + this.memo = memo; + } + + public Issue getIssue() { + return issue; + } + + public void setIssue(Issue issue) { + this.issue = issue; + } + + public HostingField getHostingField() { + return hostingField; + } + + public void setHostingField(HostingField hostingField) { + this.hostingField = hostingField; + } +} diff --git a/src/main/java/kr/wisestone/owl/domain/IssueIsp.java b/src/main/java/kr/wisestone/owl/domain/IssueIsp.java new file mode 100644 index 0000000..681e980 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/domain/IssueIsp.java @@ -0,0 +1,105 @@ +package kr.wisestone.owl.domain; + +import javax.persistence.*; +import java.io.Serializable; + +/** + * Created by wisestone on 2018-03-07. + */ +@Entity +public class IssueIsp extends BaseEntity implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + private String manager; + private String tel; + private String email; + private String memo; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "issue_id") + private Issue issue; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "isp_id") + private IspField ispField; + + public IssueIsp(){} + + public IssueIsp(Issue issue, IspField ispField, String name, String manager, String tel, String email, String memo){ + this.issue = issue; + this.ispField = ispField; + this.name = name; + this.manager = manager; + this.tel = tel; + this.email = email; + this.memo = memo; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getManager() { + return manager; + } + + public void setManager(String manager) { + this.manager = manager; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getMemo() { + return memo; + } + + public void setMemo(String memo) { + this.memo = memo; + } + + public Issue getIssue() { + return issue; + } + + public void setIssue(Issue issue) { + this.issue = issue; + } + + public IspField getIspField() { + return ispField; + } + + public void setIspField(IspField ispField) { + this.ispField = ispField; + } +} diff --git a/src/main/java/kr/wisestone/owl/mapper/IssueCompanyMapper.java b/src/main/java/kr/wisestone/owl/mapper/IssueCompanyMapper.java new file mode 100644 index 0000000..1abebe9 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/mapper/IssueCompanyMapper.java @@ -0,0 +1,16 @@ +package kr.wisestone.owl.mapper; + +import kr.wisestone.owl.web.condition.IssueCondition; +import kr.wisestone.owl.web.condition.IssueCustomFieldValueCondition; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + * Created by wisestone on 2018-06-07. + */ +@Repository +public interface IssueCompanyMapper { + List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition); +} diff --git a/src/main/java/kr/wisestone/owl/mapper/IssueHostingMapper.java b/src/main/java/kr/wisestone/owl/mapper/IssueHostingMapper.java new file mode 100644 index 0000000..1f79d07 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/mapper/IssueHostingMapper.java @@ -0,0 +1,16 @@ +package kr.wisestone.owl.mapper; + +import kr.wisestone.owl.web.condition.IssueCondition; +import kr.wisestone.owl.web.condition.IssueCustomFieldValueCondition; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + * Created by wisestone on 2018-06-07. + */ +@Repository +public interface IssueHostingMapper { + List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition); +} diff --git a/src/main/java/kr/wisestone/owl/mapper/IssueIspMapper.java b/src/main/java/kr/wisestone/owl/mapper/IssueIspMapper.java new file mode 100644 index 0000000..1546cfe --- /dev/null +++ b/src/main/java/kr/wisestone/owl/mapper/IssueIspMapper.java @@ -0,0 +1,16 @@ +package kr.wisestone.owl.mapper; + +import kr.wisestone.owl.web.condition.IssueCondition; +import kr.wisestone.owl.web.condition.IssueCustomFieldValueCondition; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + * Created by wisestone on 2018-06-07. + */ +@Repository +public interface IssueIspMapper { + List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition); +} diff --git a/src/main/java/kr/wisestone/owl/repository/IssueCompanyRepository.java b/src/main/java/kr/wisestone/owl/repository/IssueCompanyRepository.java new file mode 100644 index 0000000..1ac1e92 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/repository/IssueCompanyRepository.java @@ -0,0 +1,12 @@ +package kr.wisestone.owl.repository; + +import kr.wisestone.owl.domain.IssueCompany; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface IssueCompanyRepository extends JpaRepository<IssueCompany, Long> { + + List<IssueCompany> findByIssueId(@Param("issueId") Long issueId); +} diff --git a/src/main/java/kr/wisestone/owl/repository/IssueHostingRepository.java b/src/main/java/kr/wisestone/owl/repository/IssueHostingRepository.java new file mode 100644 index 0000000..17235b4 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/repository/IssueHostingRepository.java @@ -0,0 +1,12 @@ +package kr.wisestone.owl.repository; + +import kr.wisestone.owl.domain.IssueHosting; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface IssueHostingRepository extends JpaRepository<IssueHosting, Long> { + + List<IssueHosting> findByIssueId(@Param("issueId") Long issueId); +} diff --git a/src/main/java/kr/wisestone/owl/repository/IssueIspRepository.java b/src/main/java/kr/wisestone/owl/repository/IssueIspRepository.java new file mode 100644 index 0000000..9a2d0df --- /dev/null +++ b/src/main/java/kr/wisestone/owl/repository/IssueIspRepository.java @@ -0,0 +1,12 @@ +package kr.wisestone.owl.repository; + +import kr.wisestone.owl.domain.IssueIsp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface IssueIspRepository extends JpaRepository<IssueIsp, Long> { + + List<IssueIsp> findByIssueId(@Param("issueId") Long issueId); +} diff --git a/src/main/java/kr/wisestone/owl/service/IssueCompanyService.java b/src/main/java/kr/wisestone/owl/service/IssueCompanyService.java new file mode 100644 index 0000000..1739482 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/service/IssueCompanyService.java @@ -0,0 +1,15 @@ +package kr.wisestone.owl.service; + +import kr.wisestone.owl.domain.Issue; +import kr.wisestone.owl.domain.IssueCompany; +import kr.wisestone.owl.web.condition.IssueCondition; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Map; + +public interface IssueCompanyService extends AbstractService<IssueCompany, Long, JpaRepository<IssueCompany, Long>>{ + void modifyIssueCompanyField(Issue issue, List<Map<String, Object>> issueCompanyField); + + List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition); +} diff --git a/src/main/java/kr/wisestone/owl/service/IssueHostingService.java b/src/main/java/kr/wisestone/owl/service/IssueHostingService.java new file mode 100644 index 0000000..d62ec59 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/service/IssueHostingService.java @@ -0,0 +1,15 @@ +package kr.wisestone.owl.service; + +import kr.wisestone.owl.domain.Issue; +import kr.wisestone.owl.domain.IssueHosting; +import kr.wisestone.owl.web.condition.IssueCondition; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Map; + +public interface IssueHostingService extends AbstractService<IssueHosting, Long, JpaRepository<IssueHosting, Long>>{ + void modifyIssueHostingField(Issue issue, List<Map<String, Object>> issueHostingField); + + List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition); +} diff --git a/src/main/java/kr/wisestone/owl/service/IssueIspService.java b/src/main/java/kr/wisestone/owl/service/IssueIspService.java new file mode 100644 index 0000000..071ff49 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/service/IssueIspService.java @@ -0,0 +1,15 @@ +package kr.wisestone.owl.service; + +import kr.wisestone.owl.domain.Issue; +import kr.wisestone.owl.domain.IssueIsp; +import kr.wisestone.owl.web.condition.IssueCondition; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Map; + +public interface IssueIspService extends AbstractService<IssueIsp, Long, JpaRepository<IssueIsp, Long>>{ + void modifyIssueIspField(Issue issue, List<Map<String, Object>> issueIspField); + + List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition); +} diff --git a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java index 3f1fd72..648bfdb 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java @@ -169,7 +169,6 @@ throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_EXIST)); } - CompanyField companyField = this.findOne(id); if (companyField == null) { diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java new file mode 100644 index 0000000..aa9ff25 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java @@ -0,0 +1,70 @@ +package kr.wisestone.owl.service.impl; + +import kr.wisestone.owl.domain.*; +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 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) { + IssueCompany newIssueCompany = ConvertUtil.convertMapToClass(param, IssueCompany.class); + newIssueCompany.setIssue(issue); + CompanyField companyField = this.companyFieldService.getCompany(MapUtil.getLong(param, "companyId")); + newIssueCompany.setCompanyField(companyField); + + Set<IssueCompany> issueCompanies = issue.getIssueCompanies(); + if (issueCompanies != null && issueCompanies.size() > 0) { + IssueCompany oldIssueCompany = issueCompanies.iterator().next(); + ConvertUtil.copyProperties(newIssueCompany, oldIssueCompany); + } + + this.issueCompanyRepository.saveAndFlush(newIssueCompany); + + } + } + } + } + + @Override + @Transactional(readOnly = true) + public List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition) { + return this.issueCompanyMapper.findInIssueIds(issueCondition); + } +} diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java new file mode 100644 index 0000000..84c62c8 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java @@ -0,0 +1,72 @@ +package kr.wisestone.owl.service.impl; + +import kr.wisestone.owl.domain.*; +import kr.wisestone.owl.mapper.HostingFieldMapper; +import kr.wisestone.owl.mapper.IssueHostingMapper; +import kr.wisestone.owl.repository.IssueHostingRepository; +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 IssueHostingServiceImpl extends AbstractServiceImpl<IssueHosting, Long, JpaRepository<IssueHosting, Long>> implements IssueHostingService { + + private static final Logger log = LoggerFactory.getLogger(IssueHostingServiceImpl.class); + + @Autowired + private IssueHostingRepository issueHostingRepository; + + @Autowired + private HostingFieldService hostingFieldService; + + @Autowired + private IssueHostingMapper issueHostingMapper; + + @Override + protected JpaRepository<IssueHosting, Long> getRepository() { + return this.issueHostingRepository; + } + + // �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �뾽泥� 媛믪쓣 �뾽�뜲�씠�듃�븳�떎. + @Override + @Transactional + public void modifyIssueHostingField(Issue issue, List<Map<String, Object>> issueIspFields) { + if (issue != null) { + if (issueIspFields != null && issueIspFields.size() > 0) { + Map<String, Object> param = issueIspFields.get(0); + + if (param != null) { + IssueHosting newIssueHosting = ConvertUtil.convertMapToClass(param, IssueHosting.class); + newIssueHosting.setIssue(issue); + HostingField hostingField = this.hostingFieldService.getHosting(MapUtil.getLong(param, "hostingId")); + newIssueHosting.setHostingField(hostingField); + + Set<IssueHosting> issueHostings = issue.getIssueHostingFields(); + if (issueHostings != null && issueHostings.size() > 0) { + IssueHosting oldIssueHosting = issueHostings.iterator().next(); + ConvertUtil.copyProperties(newIssueHosting, oldIssueHosting); + } + + this.issueHostingRepository.saveAndFlush(newIssueHosting); + } + } + } + } + + @Override + @Transactional(readOnly = true) + public List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition) { + return issueHostingMapper.findInIssueIds(issueCondition); + } + + +} diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java new file mode 100644 index 0000000..1d7dbc7 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java @@ -0,0 +1,69 @@ +package kr.wisestone.owl.service.impl; + +import kr.wisestone.owl.domain.*; +import kr.wisestone.owl.mapper.IssueIspMapper; +import kr.wisestone.owl.repository.IssueIspRepository; +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 IssueIspServiceImpl extends AbstractServiceImpl<IssueIsp, Long, JpaRepository<IssueIsp, Long>> implements IssueIspService { + + private static final Logger log = LoggerFactory.getLogger(IssueIspServiceImpl.class); + + @Autowired + private IssueIspRepository issueIspRepository; + + @Autowired + private IspFieldService ispFieldService; + + @Autowired + private IssueIspMapper issueIspMapper; + + @Override + protected JpaRepository<IssueIsp, Long> getRepository() { + return this.issueIspRepository; + } + + // �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �뾽泥� 媛믪쓣 �뾽�뜲�씠�듃�븳�떎. + @Override + @Transactional + public void modifyIssueIspField(Issue issue, List<Map<String, Object>> issueIspFields) { + if (issue != null) { + if (issueIspFields != null && issueIspFields.size() > 0) { + Map<String, Object> param = issueIspFields.get(0); + + if (param != null) { + IssueIsp newIssueIsp = ConvertUtil.convertMapToClass(param, IssueIsp.class); + newIssueIsp.setIssue(issue); + IspField ispField = this.ispFieldService.getIsp(MapUtil.getLong(param, "ispId")); + newIssueIsp.setIspField(ispField); + + Set<IssueIsp> issueIsps = issue.getIssueIspFields(); + if (issueIsps != null && issueIsps.size() > 0) { + IssueIsp oldIssueIsp = issueIsps.iterator().next(); + ConvertUtil.copyProperties(newIssueIsp, oldIssueIsp); + } + + this.issueIspRepository.saveAndFlush(newIssueIsp); + } + } + } + } + + @Override + @Transactional(readOnly = true) + public List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition) { + return this.issueIspMapper.findInIssueIds(issueCondition); + } +} diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java index 1fdcfc3..800e2e7 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -44,7 +44,6 @@ import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.*; -import java.util.concurrent.locks.Condition; @Service public class IssueServiceImpl extends AbstractServiceImpl<Issue, Long, JpaRepository<Issue, Long>> implements IssueService { @@ -89,6 +88,15 @@ @Autowired private IssueCustomFieldValueService issueCustomFieldValueService; + + @Autowired + private IssueCompanyService issueCompanyService; + + @Autowired + private IssueIspService issueIspService; + + @Autowired + private IssueHostingService issueHostingService; @Autowired private IssueUserService issueUserService; @@ -197,22 +205,6 @@ issue.setPriority(priority); issue.setSeverity(severity); - // �뾽泥� �븘�뱶 �쑀�슚�꽦 泥댄겕 - if(issueForm.getCompanyId() != null){ - CompanyField companyField = this.companyFieldService.getCompany(issueForm.getCompanyId()); - issue.setCompanyField(companyField); - } - // ISP �븘�뱶 �쑀�슚�꽦 泥댄겕 - if(issueForm.getIspId() != null) { - IspField ispField = this.ispFieldService.getIsp(issueForm.getIspId()); - issue.setIspFieldId(ispField); - } - // HOSTING �븘�뱶 �쑀�슚�꽦 泥댄겕 - if (issueForm.getHostingId() != null){ - HostingField hostingField = this.hostingFieldService.getHosting(issueForm.getHostingId()); - issue.setHostingFieldId(hostingField); - } - issue.setIssueNumber(this.issueNumberGeneratorService.generateIssueNumber(project)); // 媛� �봽濡쒖젥�듃�쓽 怨좎쑀 �씠�뒋 踰덊샇 �깮�꽦 this.issueRepository.saveAndFlush(issue); @@ -241,6 +233,12 @@ this.reservationIssueEmail(issue.getId(), EmailType.ISSUE_ADD); // �궗�슜�옄 �떆�뒪�뀥 湲곕뒫 �궗�슜 �젙蹂� �닔吏� log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_ADD)); + // �뾽泥� �젙蹂� ���옣 + this.issueCompanyService.modifyIssueCompanyField(issue, issueForm.getIssueCompanyFields()); + // ISP �젙蹂� ���옣 + this.issueIspService.modifyIssueIspField(issue, issueForm.getIssueIspFields()); + // HOSTING �젙蹂� ���옣 + this.issueHostingService.modifyIssueHostingField(issue, issueForm.getIssueHostingFields()); return issue; } @@ -345,6 +343,9 @@ issueMap.put("customFields", customFields); issueMap.put("description", issue.getDescription()); + + //�뾽泥�,ISP,HOSTING 異붽� + StringBuilder attachedFileBuilder = new StringBuilder(); @@ -454,7 +455,7 @@ @Override @Transactional(readOnly = true) public List<IssueVo> findChartIssue(Map<String, Object> resJsonData, - IssueCondition issueCondition, Pageable pageable) { + IssueCondition issueCondition, Pageable pageable) { // 寃��깋 議곌굔�쓣 留뚮뱺�떎 if (!this.makeIssueSearchCondition(issueCondition,Lists.newArrayList("01", "02", "03"), pageable)) { @@ -564,9 +565,16 @@ // �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂� 異붽� this.setIssueCustomFieldValue(issueVos, issueCondition); + // �뾽泥� �젙蹂� 異붽� + //this.setIssueCompanyField(issueVos, issueCondition); + // ISP �젙蹂� 異붽� + //this.setIssueIspField(issueVos, issueCondition); + // HOSTING �젙蹂� 異붽� + //this.setIssueHostingField(issueVos, issueCondition); + } - // 寃��깋 議곌굔�쓣 留뚮뱺�떎 + // 寃��깋 議곌굔�쓣 留뚮뱺�떎 private boolean makeIssueSearchCondition(IssueCondition condition, List<String> projectStatues, Pageable pageable) { if (pageable != null) { condition.setPage(pageable.getPageNumber() * pageable.getPageSize()); @@ -792,9 +800,6 @@ issueVo.setIssueStatusVo(ConvertUtil.copyProperties(issue.getIssueStatus(), IssueStatusVo.class)); issueVo.setPriorityVo(ConvertUtil.copyProperties(issue.getPriority(), PriorityVo.class)); issueVo.setSeverityVo(ConvertUtil.copyProperties(issue.getSeverity(), SeverityVo.class)); - issueVo.setCompanyFieldVo(ConvertUtil.copyProperties(issue.getCompanyField(), CompanyFieldVo.class)); - issueVo.setIspFieldVo(ConvertUtil.copyProperties(issue.getIspFieldId(), IspFieldVo.class)); - issueVo.setHostingFieldVo(ConvertUtil.copyProperties(issue.getHostingFieldId(), HostingFieldVo.class)); this.setRegister(issue, issueVo); // �벑濡앹옄 �젙蹂� �뀑�똿 //this.setIssueUser(issue, issueVo); // �떞�떦�옄 �젙蹂� �뀑�똿 @@ -836,9 +841,6 @@ issueVo.setIssueStatusVo(issueStatusVo); issueVo.setPriorityVo(ConvertUtil.copyProperties(issue.getPriority(), PriorityVo.class)); issueVo.setSeverityVo(ConvertUtil.copyProperties(issue.getSeverity(), SeverityVo.class)); - issueVo.setCompanyFieldVo(ConvertUtil.copyProperties(issue.getCompanyField(), CompanyFieldVo.class)); - issueVo.setIspFieldVo(ConvertUtil.copyProperties(issue.getIspFieldId(), IspFieldVo.class)); - issueVo.setHostingFieldVo(ConvertUtil.copyProperties(issue.getHostingFieldId(), HostingFieldVo.class)); this.setRegister(issue, issueVo); // �벑濡앹옄 �젙蹂� �뀑�똿 //this.setIssueUser(issue, issueVo); // �떞�떦�옄 �젙蹂� �뀑�똿 this.setIssueDepartment(issue, issueVo); // �떞�떦遺��꽌 �젙蹂� �뀑�똿 @@ -1612,6 +1614,69 @@ } } + // �뾽泥� �젙蹂� 異붽� + private void setIssueCompanyField(List<IssueVo> issueVos, IssueCondition issueCondition) { + // �씠�뒋�뿉�꽌 ���옣�븳 �뾽泥� 媛믪쓣 議고쉶�븳�떎. + List<Map<String, Object>> issueCompanyFields = this.issueCompanyService.findInIssueIds(issueCondition); + + for (IssueVo issueVo : issueVos) { + for (Map<String, Object> issueCompanyField : issueCompanyFields) { + if (issueVo.getId().equals(MapUtil.getLong(issueCompanyField, "issueId"))) { + IssueCompanyVo issueCompanyVo = new IssueCompanyVo(); + issueCompanyVo.setName(MapUtil.getString(issueCompanyField, "companyName")); + issueCompanyVo.setManager(MapUtil.getString(issueCompanyField, "companyManager")); + issueCompanyVo.setTel(MapUtil.getString(issueCompanyField, "companyTel")); + issueCompanyVo.setEmail(MapUtil.getString(issueCompanyField, "companyEmail")); + issueCompanyVo.setMemo(MapUtil.getString(issueCompanyField, "companyMemo")); + + issueVo.addIssueCompanyFieldVo(issueCompanyVo); + } + } + } + } + + // Isp �젙蹂� 異붽� + private void setIssueIspField(List<IssueVo> issueVos, IssueCondition issueCondition) { + // �씠�뒋�뿉�꽌 ���옣�븳 ISP 媛믪쓣 議고쉶�븳�떎. + /*List<Map<String, Object>> issueIspFields = this.issueIspFieldService.findInIssueIds(issueCondition);*/ + + /*for (IssueVo issueVo : issueVos) { + for (Map<String, Object> issueIspField : issueIspFields) { + if (issueVo.getId().equals(MapUtil.getLong(issueIspField, "issueId"))) { + IssueIspFieldVo issueIspFieldVo = new IssueIspFieldVo(); + issueIspFieldVo.setName(MapUtil.getString(issueIspField, "name")); + issueIspFieldVo.setManager(MapUtil.getString(issueIspField, "manager")); + issueIspFieldVo.setTel(MapUtil.getString(issueIspField, "tel")); + issueIspFieldVo.setEmail(MapUtil.getString(issueIspField, "email")); + issueIspFieldVo.setMemo(MapUtil.getString(issueIspField, "memo")); + + issueVo.addIssueIspFieldVo(issueIspFieldVo); + } + } + }*/ + } + + // Hosting �젙蹂� 異붽� + private void setIssueHostingField(List<IssueVo> issueVos, IssueCondition issueCondition) { + // �씠�뒋�뿉�꽌 ���옣�븳 Hosting 媛믪쓣 議고쉶�븳�떎. + List<Map<String, Object>> issueHostingFields = this.issueHostingService.findInIssueIds(issueCondition); + + for (IssueVo issueVo : issueVos) { + for (Map<String, Object> issueHostingField : issueHostingFields) { + if (issueVo.getId().equals(MapUtil.getLong(issueHostingField, "issueId"))) { + IssueHostingVo issueHostingVo = new IssueHostingVo(); + issueHostingVo.setName(MapUtil.getString(issueHostingField, "name")); + issueHostingVo.setManager(MapUtil.getString(issueHostingField, "manager")); + issueHostingVo.setTel(MapUtil.getString(issueHostingField, "tel")); + issueHostingVo.setEmail(MapUtil.getString(issueHostingField, "email")); + issueHostingVo.setMemo(MapUtil.getString(issueHostingField, "memo")); + + issueVo.addIssueHostingFieldVo(issueHostingVo); + } + } + } + } + // �뿰愿��씪媛� �젙蹂� 異붽� private void setRelationIssue(IssueVo issueVo, Long issueId) { List<IssueVo> relationIssues = this.issueRelationService.findRelationIssue(issueId); @@ -1665,6 +1730,8 @@ result.put("customField_" + issueCustomFieldValueVo.getCustomFieldVo().getId().toString(), useValue + ", " + issueCustomFieldValueVo.getUseValue()); } } + + //�뾽泥�, ISP, �샇�뒪�똿 異붽� results.add(result); } catch (Exception e) { @@ -1830,6 +1897,8 @@ this.bulkInsertIssueCustomFieldValue(issueForms, issueTypeCustomFieldMaps); // 3.628 - 3.445 + // �뾽泥�,ISP,�샇�뒪�똿 異붽� + /*serviceStart.stop(); log.debug("2李� ���옣 �떆媛� : " + serviceStart.getTime());*/ diff --git a/src/main/java/kr/wisestone/owl/vo/IssueCompanyVo.java b/src/main/java/kr/wisestone/owl/vo/IssueCompanyVo.java new file mode 100644 index 0000000..816143e --- /dev/null +++ b/src/main/java/kr/wisestone/owl/vo/IssueCompanyVo.java @@ -0,0 +1,63 @@ +package kr.wisestone.owl.vo; + +/** + * Created by wisestone on 2018-06-01. + */ +public class IssueCompanyVo extends BaseVo{ + private Long id; + private String name; + private String manager; + private String tel; + private String email; + private String memo; + + public IssueCompanyVo(){} + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getManager() { + return manager; + } + + public void setManager(String manager) { + this.manager = manager; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getMemo() { + return memo; + } + + public void setMemo(String memo) { + this.memo = memo; + } +} diff --git a/src/main/java/kr/wisestone/owl/vo/IssueHostingVo.java b/src/main/java/kr/wisestone/owl/vo/IssueHostingVo.java new file mode 100644 index 0000000..c5ca3ae --- /dev/null +++ b/src/main/java/kr/wisestone/owl/vo/IssueHostingVo.java @@ -0,0 +1,63 @@ +package kr.wisestone.owl.vo; + +/** + * Created by wisestone on 2018-06-01. + */ +public class IssueHostingVo extends BaseVo{ + private Long id; + private String name; + private String manager; + private String tel; + private String email; + private String memo; + + public IssueHostingVo(){} + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getManager() { + return manager; + } + + public void setManager(String manager) { + this.manager = manager; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getMemo() { + return memo; + } + + public void setMemo(String memo) { + this.memo = memo; + } +} diff --git a/src/main/java/kr/wisestone/owl/vo/IssueIspVo.java b/src/main/java/kr/wisestone/owl/vo/IssueIspVo.java new file mode 100644 index 0000000..ee07126 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/vo/IssueIspVo.java @@ -0,0 +1,63 @@ +package kr.wisestone.owl.vo; + +/** + * Created by wisestone on 2018-06-01. + */ +public class IssueIspVo extends BaseVo{ + private Long id; + private String name; + private String manager; + private String tel; + private String email; + private String memo; + + public IssueIspVo(){} + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getManager() { + return manager; + } + + public void setManager(String manager) { + this.manager = manager; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getMemo() { + return memo; + } + + public void setMemo(String memo) { + this.memo = memo; + } +} diff --git a/src/main/java/kr/wisestone/owl/vo/IssueVo.java b/src/main/java/kr/wisestone/owl/vo/IssueVo.java index ab9768d..c616527 100644 --- a/src/main/java/kr/wisestone/owl/vo/IssueVo.java +++ b/src/main/java/kr/wisestone/owl/vo/IssueVo.java @@ -1,6 +1,7 @@ package kr.wisestone.owl.vo; import com.google.common.collect.Lists; + import java.util.ArrayList; import java.util.List; @@ -35,9 +36,6 @@ private PriorityVo priorityVo; // �씠�뒋 �긽�꽭�뿉�꽌 �궗�슜 private SeverityVo severityVo; // �씠�뒋 �긽�꽭�뿉�꽌 �궗�슜 private UserVo registerVo; // �씠�뒋 �긽�꽭�뿉�꽌 �궗�슜 - private CompanyFieldVo companyFieldVo; // �씠�뒋 �긽�꽭�뿉�꽌 �궗�슜 - private IspFieldVo ispFieldVo; // �씠�뒋 �긽�꽭�뿉�꽌 �궗�슜 - private HostingFieldVo hostingFieldVo; // �씠�뒋 �긽�꽭�뿉�꽌 �궗�슜 private Boolean modifyPermissionCheck = Boolean.FALSE; private List<UserVo> userVos = Lists.newArrayList(); private List<DepartmentVo> departmentVos = Lists.newArrayList(); //�떞�떦遺��꽌 異붽� @@ -52,9 +50,11 @@ private Long attachedFileCount; private Long issueCommentCount; private String modifyByName; // 蹂�寃쎌옄 �젙蹂� - �씠�뒋 蹂�寃� �젙蹂� �긽�꽭 �솗�씤�뿉�꽌 �궗�슜 - private String byName; // 蹂�寃쎌옄 �젙蹂� - �씠�뒋 蹂�寃� �젙蹂� �긽�꽭 �솗�씤�뿉�꽌 �궗�슜 private WorkflowStatusVo workflowStatusVo; private Long parentIssueId; // �긽�쐞 �씪媛� + private List<IssueCompanyVo> issueCompanyVos = Lists.newArrayList(); + private List<IssueIspVo> issueIspVos = Lists.newArrayList(); + private List<IssueHostingVo> issueHostingVos = Lists.newArrayList(); public IssueVo(){} @@ -314,6 +314,42 @@ this.issueCustomFieldValueVos.add(issueCustomFieldValueVo); } + public List<IssueCompanyVo> getIssueCompanyFieldVos() { + return issueCompanyVos; + } + + public void setIssueCompanyFieldVos(List<IssueCompanyVo> issueCompanyVos) { + this.issueCompanyVos = issueCompanyVos; + } + + public void addIssueCompanyFieldVo(IssueCompanyVo issueCompanyVo) { + this.issueCompanyVos.add(issueCompanyVo); + } + + public List<IssueIspVo> getIssueIspFieldVos() { + return issueIspVos; + } + + public void setIssueIspFieldVos(List<IssueIspVo> issueIspVos) { + this.issueIspVos = issueIspVos; + } + + public void addIssueIspFieldVo(IssueIspVo issueIspVo) { + this.issueIspVos.add(issueIspVo); + } + + public List<IssueHostingVo> getIssueHostingFieldVos() { + return issueHostingVos; + } + + public void setIssueHostingFieldVos(List<IssueHostingVo> issueHostingVos) { + this.issueHostingVos = issueHostingVos; + } + + public void addIssueHostingFieldVo(IssueHostingVo issueHostingVo) { + this.issueHostingVos.add(issueHostingVo); + } + public Long getAttachedFileCount() { return attachedFileCount; } @@ -338,30 +374,6 @@ this.registerVo = registerVo; } - public CompanyFieldVo getCompanyFieldVo() { - return companyFieldVo; - } - - public void setCompanyFieldVo(CompanyFieldVo companyFieldVo) { - this.companyFieldVo = companyFieldVo; - } - - public IspFieldVo getIspFieldVo() { - return ispFieldVo; - } - - public void setIspFieldVo(IspFieldVo ispFieldVo) { - this.ispFieldVo = ispFieldVo; - } - - public HostingFieldVo getHostingFieldVo() { - return hostingFieldVo; - } - - public void setHostingFieldVo(HostingFieldVo hostingFieldVo) { - this.hostingFieldVo = hostingFieldVo; - } - public List<IssueHistoryVo> getIssueHistoryVos() { return issueHistoryVos; } @@ -376,14 +388,6 @@ public void setModifyByName(String modifyByName) { this.modifyByName = modifyByName; - } - - public String getByName() { - return byName; - } - - public void setByName(String byName) { - this.byName = byName; } public void setWorkflowStatusVo(WorkflowStatusVo workflowStatusVo) { diff --git a/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java b/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java index adaf960..2399de7 100644 --- a/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java +++ b/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java @@ -44,6 +44,9 @@ private List<Long> registerIds = Lists.newArrayList(); private List<String> issueIds = Lists.newArrayList(); // �씠�뒋 紐⑸줉 寃��깋�뿉�꽌 �궗�슜�옄 �젙�쓽 �븘�뱶濡� 1李� 寃��깋�븳 寃곌낵瑜� �떞�쓣�븣 �궗�슜 private List<Map<String, Object>> issueCustomFields = Lists.newArrayList(); + private List<Map<String, Object>> issueCompanyField = Lists.newArrayList(); + private List<Map<String, Object>> issueIspField = Lists.newArrayList(); + private List<Map<String, Object>> issueHostingField = Lists.newArrayList(); private List<Long> statusIds = Lists.newArrayList(); private List<Long> excludeIds = Lists.newArrayList(); @@ -84,6 +87,18 @@ if (MapUtil.getObject(conditions, "issueCustomFields") != null) { condition.setIssueCustomFields((List)MapUtil.getObject(conditions, "issueCustomFields")); + } + + if (MapUtil.getObject(conditions, "issueCompanyField") != null) { + condition.setIssueCompanyField((List)MapUtil.getObject(conditions, "issueCompanyField")); + } + + if (MapUtil.getObject(conditions, "issueIspField") != null) { + condition.setIssueIspField((List)MapUtil.getObject(conditions, "issueIspField")); + } + + if (MapUtil.getObject(conditions, "issueHostingField") != null) { + condition.setIssueHostingField((List)MapUtil.getObject(conditions, "issueHostingField")); } if (StringUtils.hasText(MapUtil.getString(conditions, "beginRegisterDate"))) { @@ -355,6 +370,30 @@ this.issueCustomFields = issueCustomFields; } + public List<Map<String, Object>> getIssueCompanyField() { + return issueCompanyField; + } + + public void setIssueCompanyField(List<Map<String, Object>> issueCompanyField) { + this.issueCompanyField = issueCompanyField; + } + + public List<Map<String, Object>> getIssueIspField() { + return issueIspField; + } + + public void setIssueIspField(List<Map<String, Object>> issueIspField) { + this.issueIspField = issueIspField; + } + + public List<Map<String, Object>> getIssueHostingField() { + return issueHostingField; + } + + public void setIssueHostingField(List<Map<String, Object>> issueHostingField) { + this.issueHostingField = issueHostingField; + } + public List<String> getIssueIds() { return issueIds; } diff --git a/src/main/java/kr/wisestone/owl/web/form/IssueForm.java b/src/main/java/kr/wisestone/owl/web/form/IssueForm.java index 1350967..9f3a6cc 100644 --- a/src/main/java/kr/wisestone/owl/web/form/IssueForm.java +++ b/src/main/java/kr/wisestone/owl/web/form/IssueForm.java @@ -37,9 +37,9 @@ private List<Long> removeIds = Lists.newArrayList(); private List<Long> ids = Lists.newArrayList(); // �씠�뒋 �떎以� �긽�깭 蹂�寃쎌뿉�꽌 �궗�슜 private String comment; // �씠�뒋 �긽�깭 蹂�寃쎌뿉�꽌 蹂�寃� �궗�쑀瑜� �엯�젰�븷 �븣 �궗�슜 - private Long companyId; //�뾽泥댄븘�뱶 - private Long ispId; //ISP�븘�뱶 - private Long hostingId; //�샇�뒪�똿�븘�뱶 + private List<Map<String, Object>> issueCompanyFields = Lists.newArrayList(); + private List<Map<String, Object>> issueIspFields = Lists.newArrayList(); + private List<Map<String, Object>> issueHostingFields = Lists.newArrayList(); private Long parentIssueId; // �긽�쐞 �씠�뒋 public IssueForm() { @@ -98,18 +98,18 @@ } // �뾽泥� �븘�뱶 �젙蹂� - if (MapUtil.getLongs(params, "companyFieldId") != null){ - form.setCompanyId(MapUtil.getLong(params, "companyFieldId")); + if (MapUtil.getObject(params, "issueCompanyFields") != null){ + form.setIssueCompanyFields((List)MapUtil.getObject(params, "issueCompanyFields")); } // ISP �븘�뱶 �젙蹂� - if (MapUtil.getLongs(params, "ispFieldId") != null){ - form.setIspId(MapUtil.getLong(params, "ispFieldId")); + if (MapUtil.getObject(params, "issueIspFields") != null){ + form.setIssueIspFields((List)MapUtil.getObject(params, "issueIspFields")); } // HOSTING �븘�뱶 �젙蹂� - if (MapUtil.getLongs(params, "hostingFieldId") != null){ - form.setHostingId(MapUtil.getLong(params, "hostingFieldId")); + if (MapUtil.getObject(params, "issueHostingFields") != null){ + form.setIssueHostingFields((List)MapUtil.getObject(params, "issueHostingFields")); } return form; } @@ -290,28 +290,40 @@ this.comment = comment; } - public Long getCompanyId() { - return companyId; + public List<Map<String, Object>> getIssueCompanyFields() { + return issueCompanyFields; } - public void setCompanyId(Long companyId) { - this.companyId = companyId; + public void setIssueCompanyFields(List<Map<String, Object>> issueCompanyFields) { + this.issueCompanyFields = issueCompanyFields; } - public Long getIspId() { - return ispId; + public void addissueCompanyField(Map<String, Object> issueCompanyFields) { + this.issueCompanyFields.add(issueCompanyFields); } - public void setIspId(Long ispId) { - this.ispId = ispId; + public List<Map<String, Object>> getIssueIspFields() { + return issueIspFields; } - public Long getHostingId() { - return hostingId; + public void setIssueIspFields(List<Map<String, Object>> issueIspFields) { + this.issueIspFields = issueIspFields; } - public void setHostingId(Long hostingId) { - this.hostingId = hostingId; + public void addIssueIspField(Map<String, Object> issueIspFields) { + this.issueIspFields.add(issueIspFields); + } + + public List<Map<String, Object>> getIssueHostingFields() { + return issueHostingFields; + } + + public void setIssueHostingFields(List<Map<String, Object>> issueHostingFields) { + this.issueHostingFields = issueHostingFields; + } + + public void addIssueHostingField(Map<String, Object> issueHostingFields) { + this.issueHostingFields.add(issueHostingFields); } public Long getParentIssueId() { diff --git a/src/main/resources/migration/V1_11__Alter_Table.sql b/src/main/resources/migration/V1_11__Alter_Table.sql index caf331d..e2de0ac 100644 --- a/src/main/resources/migration/V1_11__Alter_Table.sql +++ b/src/main/resources/migration/V1_11__Alter_Table.sql @@ -129,3 +129,54 @@ -- �긽�쐞 �씠�뒋 ALTER TABLE `issue` ADD COLUMN `parent_issue_id` BIGINT(11) NULL; + +CREATE TABLE `issue_company` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `issue_id` bigint(20) NOT NULL, + `company_id` bigint(20) DEFAULT NULL, + `name` VARCHAR(50) NULL, + `manager` VARCHAR(50) NULL, + `tel` VARCHAR (50) NULL, + `email` VARCHAR (255) NULL, + `memo` VARCHAR(255) NULL, + `register_id` bigint(20) NOT NULL COMMENT 'register_id', + `register_date` timestamp NULL DEFAULT NULL COMMENT 'register_date', + `modify_id` bigint(20) NOT NULL COMMENT 'modify_id', + `modify_date` timestamp NULL DEFAULT NULL COMMENT 'modify_date', + PRIMARY KEY (`id`) USING BTREE, + INDEX `companyIdIndex` (`company_id`) USING BTREE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE `issue_hosting` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `issue_id` bigint(20) NOT NULL, + `hosting_id` bigint(20) DEFAULT NULL, + `name` VARCHAR(50) NULL, + `manager` VARCHAR(50) NULL, + `tel` VARCHAR (50) NULL, + `email` VARCHAR (255) NULL, + `memo` VARCHAR(255) NULL, + `register_id` bigint(20) NOT NULL COMMENT 'register_id', + `register_date` timestamp NULL DEFAULT NULL COMMENT 'register_date', + `modify_id` bigint(20) NOT NULL COMMENT 'modify_id', + `modify_date` timestamp NULL DEFAULT NULL COMMENT 'modify_date', + PRIMARY KEY (`id`) USING BTREE, + INDEX `hostingIdIndex` (`hosting_id`) USING BTREE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE `issue_isp` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `issue_id` bigint(20) NOT NULL, + `isp_id` bigint(20) DEFAULT NULL, + `name` VARCHAR(50) NULL, + `manager` VARCHAR(50) NULL, + `tel` VARCHAR (50) NULL, + `email` VARCHAR (255) NULL, + `memo` VARCHAR(255) NULL, + `register_id` bigint(20) NOT NULL COMMENT 'register_id', + `register_date` timestamp NULL DEFAULT NULL COMMENT 'register_date', + `modify_id` bigint(20) NOT NULL COMMENT 'modify_id', + `modify_date` timestamp NULL DEFAULT NULL COMMENT 'modify_date', + PRIMARY KEY (`id`) USING BTREE, + INDEX `ispIdIndex` (`isp_id`) USING BTREE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/src/main/resources/migration/V1_1__Initial_Setup.sql b/src/main/resources/migration/V1_1__Initial_Setup.sql index 54b934e..6474c42 100644 --- a/src/main/resources/migration/V1_1__Initial_Setup.sql +++ b/src/main/resources/migration/V1_1__Initial_Setup.sql @@ -80,9 +80,6 @@ `project_id` bigint(20) DEFAULT NULL, `priority_id` bigint(20) DEFAULT NULL, `severity_id` bigint(20) DEFAULT NULL, - `company_id` bigint(20) DEFAULT NULL, - `hosting_id` bigint(20) DEFAULT NULL, - `isp_id` bigint(20) DEFAULT NULL, `title` varchar(300) DEFAULT NULL, `description` mediumtext COMMENT 'description', `reverse_index` bigint(20) DEFAULT NULL, diff --git a/src/main/resources/mybatis/query-template/issueCompany-template.xml b/src/main/resources/mybatis/query-template/issueCompany-template.xml new file mode 100644 index 0000000..5f1bab4 --- /dev/null +++ b/src/main/resources/mybatis/query-template/issueCompany-template.xml @@ -0,0 +1,27 @@ +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + +<mapper namespace="kr.wisestone.owl.mapper.IssueCompanyMapper"> + + <select id="findInIssueIds" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueCondition"> + SELECT + ic.issue_id as issueId, + ic.company_id as companyId, + ic.name as companyName, + ic.manager as companyManager, + ic.tel as companyTel, + ic.email as companyEmail, + ic.memo as companyMemo + FROM issue_company ic + WHERE 1=1 + <choose> + <when test="issueIds.size != 0"> + AND ic.issue_id IN + <foreach collection="issueIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + </select> + +</mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/query-template/issueHosting-template.xml b/src/main/resources/mybatis/query-template/issueHosting-template.xml new file mode 100644 index 0000000..6acbbc9 --- /dev/null +++ b/src/main/resources/mybatis/query-template/issueHosting-template.xml @@ -0,0 +1,27 @@ +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + +<mapper namespace="kr.wisestone.owl.mapper.IssueHostingMapper"> + + <select id="findInIssueIds" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueCondition"> + SELECT + ih.issue_id as issueId, + ih.hosting_id as hostingId, + ih.name as hostingName, + ih.manager as hostingManager, + ih.tel as hostingTel, + ih.email as hostingEmail, + ih.memo as hostingMemo + FROM issue_hosting ih + WHERE 1=1 + <choose> + <when test="issueIds.size != 0"> + AND ih.issue_id IN + <foreach collection="issueIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + </select> + +</mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/query-template/issueIsp-template.xml b/src/main/resources/mybatis/query-template/issueIsp-template.xml new file mode 100644 index 0000000..2d70cb5 --- /dev/null +++ b/src/main/resources/mybatis/query-template/issueIsp-template.xml @@ -0,0 +1,27 @@ +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + +<mapper namespace="kr.wisestone.owl.mapper.IssueIspMapper"> + + <select id="findInIssueIds" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueCondition"> + SELECT + ii.issue_id as issueId, + ii.isp_id as ispId, + ii.name as ispName, + ii.manager as ispManager, + ii.tel as ispTel, + ii.email as ispEmail, + ii.memo as ispMemo + FROM issue_isp ii + WHERE 1=1 + <choose> + <when test="issueIds.size != 0"> + AND ii.issue_id IN + <foreach collection="issueIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + </select> + +</mapper> \ No newline at end of file diff --git a/src/main/webapp/scripts/app/issue/issueAdd.controller.js b/src/main/webapp/scripts/app/issue/issueAdd.controller.js index 14a3616..56c98ce 100644 --- a/src/main/webapp/scripts/app/issue/issueAdd.controller.js +++ b/src/main/webapp/scripts/app/issue/issueAdd.controller.js @@ -340,6 +340,7 @@ // �뾽泥댁젙蹂� 寃곌낵 媛� Event 泥섎━(set) $scope.$on("companyFieldEvent", function (event, result) { + $scope.vm.companyId = result[0].id; $scope.vm.companyManager = result[0].manager; $scope.vm.companyTel = result[0].tel; $scope.vm.companyEmail = result[0].email; @@ -349,6 +350,7 @@ // ISP�젙蹂� 寃곌낵 媛� Event 泥섎━(set) $scope.$on("ispFieldEvent", function (event, result) { + $scope.vm.ispId = result[0].id; $scope.vm.ispCode = result[0].code; $scope.vm.ispManager = result[0].manager; $scope.vm.ispTel = result[0].tel; @@ -358,6 +360,7 @@ // �샇�뒪�똿�젙蹂� 寃곌낵 媛� Event 泥섎━(set) $scope.$on("hostingFieldEvent", function (event, result) { + $scope.vm.hostingId = result[0].id; $scope.vm.hostingCode = result[0].code; $scope.vm.hostingManager = result[0].manager; $scope.vm.hostingTel = result[0].tel; @@ -457,74 +460,35 @@ startCompleteDateRange : $scope.vm.form.startCompleteDateRange, detectingDateRange : $scope.vm.form.detectingDateRange, - companyFields : (function () { + issueCompanyFields : (function () { var companyFields = []; - angular.forEach($scope.vm.form.companyFields, function (companyField) { - var useValues = []; - - if (angular.isArray(companyField.useValues)) { - angular.forEach(companyField.useValues, function (useValue) { - useValues.push(useValue.value); - }); - } - else { - useValues.push(companyField.useValues); - } - - // useValues 瑜� 諛곗뿴濡� 蹂��솚�븳�떎. - var temp = angular.copy(companyField); - temp.useValues = useValues; - companyFields.push(temp); - }); + var companyField = $scope.vm.form.companyFields[0]; + companyField.companyId = companyField.id; + companyField.id = null; + companyFields.push(companyField); return companyFields; })(), - ispFields : (function () { + issueIspFields : (function () { var ispFields = []; - angular.forEach($scope.vm.form.ispFields, function (ispField) { - var useValues = []; - - if (angular.isArray(ispField.useValues)) { - angular.forEach(ispField.useValues, function (useValue) { - useValues.push(useValue.value); - }); - } - else { - useValues.push(ispField.useValues); - } - - // useValues 瑜� 諛곗뿴濡� 蹂��솚�븳�떎. - var temp = angular.copy(ispField); - temp.useValues = useValues; - ispFields.push(temp); - }); + var ispField = $scope.vm.form.ispFields[0]; + ispField.ispId = ispField.id; + ispField.id = null; + ispFields.push(ispField); return ispFields; })(), - hostingFields : (function () { + issueHostingFields : (function () { var hostingFields = []; - angular.forEach($scope.vm.form.hostingFields, function (hostingField) { - var useValues = []; - - if (angular.isArray(hostingField.useValues)) { - angular.forEach(hostingField.useValues, function (useValue) { - useValues.push(useValue.value); - }); - } - else { - useValues.push(hostingField.useValues); - } - - // useValues 瑜� 諛곗뿴濡� 蹂��솚�븳�떎. - var temp = angular.copy(hostingField); - temp.useValues = useValues; - hostingFields.push(temp); - }); + var hostingField = $scope.vm.form.hostingFields[0]; + hostingField.hostingId = hostingField.id; + hostingField.id = null; + hostingFields.push(hostingField); return hostingFields; })(), -- Gitblit v1.8.0