From d3c662dfcd180602c5740837e0cecb51e78d4cb4 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 화, 16 11월 2021 17:16:56 +0900 Subject: [PATCH] - 이슈관리 업체,ISP,호스팅 추가 완료 - 프로젝트 부서담당자 백엔드 추가 * db날리고 실행 --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 79 +++++++++--- src/main/java/kr/wisestone/owl/domain/Issue.java | 36 ++++++ src/main/java/kr/wisestone/owl/service/ProjectRoleDepartmentService.java | 15 ++ src/main/java/kr/wisestone/owl/service/ProjectRoleUserService.java | 2 src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java | 66 +++++++++++ src/main/java/kr/wisestone/owl/mapper/ProjectRoleDepartmentMapper.java | 19 +++ src/main/java/kr/wisestone/owl/service/impl/ProjectRoleUserServiceImpl.java | 7 - src/main/java/kr/wisestone/owl/web/form/IssueForm.java | 41 ++++++ src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java | 17 ++ src/main/resources/mybatis/query-template/projectRoleDepartment-template.xml | 43 +++++++ src/main/webapp/scripts/app/project/projectAdd.controller.js | 9 src/main/resources/migration/V1_1__Initial_Setup.sql | 15 ++ 12 files changed, 316 insertions(+), 33 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/domain/Issue.java b/src/main/java/kr/wisestone/owl/domain/Issue.java index 38564bb..b9ed37a 100644 --- a/src/main/java/kr/wisestone/owl/domain/Issue.java +++ b/src/main/java/kr/wisestone/owl/domain/Issue.java @@ -46,6 +46,18 @@ @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; @@ -161,6 +173,30 @@ 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; } diff --git a/src/main/java/kr/wisestone/owl/mapper/ProjectRoleDepartmentMapper.java b/src/main/java/kr/wisestone/owl/mapper/ProjectRoleDepartmentMapper.java new file mode 100644 index 0000000..7373992 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/mapper/ProjectRoleDepartmentMapper.java @@ -0,0 +1,19 @@ +package kr.wisestone.owl.mapper; + +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + * Created by wisestone on 2018-11-27. + */ +@Repository +public interface ProjectRoleDepartmentMapper { + //void insertProjectRoleDepartment(List<Map<String, Long>> projectRoleDepartmentMaps); + + //void deleteProjectRoleDepartment(Map<String, Long> projectRoleDepartmentMaps); + + List<Map<String, Object>> findProjectRoleDepartment(Map<String, Object> projectRoleDepartmentMap); + +} diff --git a/src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java b/src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java new file mode 100644 index 0000000..56f716e --- /dev/null +++ b/src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java @@ -0,0 +1,17 @@ +package kr.wisestone.owl.repository; + +import kr.wisestone.owl.domain.ProjectRoleDepartment; +import kr.wisestone.owl.domain.ProjectRoleUser; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface ProjectRoleDepartmentRepository extends JpaRepository<ProjectRoleDepartment, Long> { + List<ProjectRoleDepartment> findByProjectRoleId(@Param("projectRoleId") Long projectRoleId); + + ProjectRoleDepartment findByProjectRoleIdAndDepartmentId(@Param("projectRoleId") Long projectRoleId, @Param("departmentId") Long departmentId); + + //ProjectRoleUser findByProjectRoleIdAndDepartmentId(@Param("projectRoleId") Long projectRoleId, @Param("departmentId") Long departmentId); + +} diff --git a/src/main/java/kr/wisestone/owl/service/ProjectRoleDepartmentService.java b/src/main/java/kr/wisestone/owl/service/ProjectRoleDepartmentService.java new file mode 100644 index 0000000..0d6e0c0 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/service/ProjectRoleDepartmentService.java @@ -0,0 +1,15 @@ +package kr.wisestone.owl.service; + +import kr.wisestone.owl.domain.*; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Map; + +public interface ProjectRoleDepartmentService extends AbstractService<ProjectRoleDepartment, Long, JpaRepository<ProjectRoleDepartment, Long>>{ + List<ProjectRoleDepartment> findByProjectRoleId(Long projectRoleId); + + ProjectRoleDepartment findByProjectRoleIdAndDepartmentId(Long projectRoleId, Long departmentId); //�떞�떦遺��꽌 + + List<Map<String, Object>> findProjectRoleDepartment(Map<String, Object> projectRoleDepartmentMap); +} diff --git a/src/main/java/kr/wisestone/owl/service/ProjectRoleUserService.java b/src/main/java/kr/wisestone/owl/service/ProjectRoleUserService.java index 8cd03ea..a7afb29 100644 --- a/src/main/java/kr/wisestone/owl/service/ProjectRoleUserService.java +++ b/src/main/java/kr/wisestone/owl/service/ProjectRoleUserService.java @@ -14,8 +14,6 @@ ProjectRoleUser findByProjectRoleIdAndUserId(Long projectRoleId, Long userId); //�떞�떦�옄 - //ProjectRoleUser findByProjectRoleIdAndDepartmentId(Long projectRoleId, Long departmentId); //�떞�떦遺��꽌 - void withDrawWorkspaceManagerModifyProjectRole(Workspace workspace, User user); List<Map<String, Object>> findProjectRoleUser(Map<String, Object> projectRoleUserMap); 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 c692a5e..c6c5436 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -70,6 +70,15 @@ private SeverityService severityService; @Autowired + private CompanyFieldService companyFieldService; + + @Autowired + private IspFieldService ispFieldService; + + @Autowired + private HostingFieldService hostingFieldService; + + @Autowired private CommonConfiguration configuration; @Autowired @@ -104,6 +113,9 @@ @Autowired private ProjectRoleUserService projectRoleUserService; + + @Autowired + private ProjectRoleDepartmentService projectRoleDepartmentService; @Autowired private IssueRiskService issueRiskService; @@ -184,6 +196,23 @@ issue.setIssueType(issueType); 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); @@ -247,18 +276,25 @@ issueMap.put("issueTypeName", issue.getIssueType().getName()); issueMap.put("issueStatusName", issue.getIssueStatus().getName()); - // �떞�떦遺��꽌 + // �떞�떦�옄 StringBuilder assigneeBuilder = new StringBuilder(); - for (IssueDepartment issueDepartment : issue.getIssueDepartments()) { - //assigneeBuilder.append(issueUser.getUser().getName()); - assigneeBuilder.append(issueDepartment.getDepartment().getDepartmentName()); - /*assigneeBuilder.append("("); + for (IssueUser issueUser : issue.getIssueUsers()) { + assigneeBuilder.append(issueUser.getUser().getName()); + assigneeBuilder.append("("); assigneeBuilder.append(CommonUtil.decryptAES128(issueUser.getUser().getAccount())); - assigneeBuilder.append(")");*/ + assigneeBuilder.append(")"); assigneeBuilder.append("\n"); } - issueMap.put("assignees", assigneeBuilder.toString()); + + // �떞�떦遺��꽌 + StringBuilder departsBuilder = new StringBuilder(); + for (IssueDepartment issueDepartment : issue.getIssueDepartments()) { + departsBuilder.append(issueDepartment.getDepartment().getDepartmentName()); + departsBuilder.append("\n"); + } + issueMap.put("departsBuilder", departsBuilder.toString()); + // 湲곌컙 if (!StringUtils.isEmpty(issue.getStartDate())) { issueMap.put("period", issue.getStartDate() + " ~ " + issue.getCompleteDate()); @@ -763,6 +799,7 @@ this.setAttachedFiles(issue, issueVo); // 泥⑤� �뙆�씪 �젙蹂� �뀑�똿 this.setIssueCustomFields(issue, issueVo); // �궗�슜�옄 �젙�쓽 �븘�뱶 媛� �젙蹂� �뀑�똿 this.setRelationIssue(issue, issueVo); //�뿰愿� �씪媛� �뀑�똿 + break; case "02": // �봽濡쒖젥�듃, �씠�뒋 �쑀�삎, �씠�뒋 �긽�깭, �슦�꽑�닚�쐞, 以묒슂�룄, �떞�떦�옄, 泥⑤��뙆�씪, �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂�, �뙎湲�, 湲곕줉�쓣 �뀑�똿�븳�떎. @@ -934,7 +971,7 @@ // �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎. this.workspaceService.checkUseWorkspace(); // �씠�뒋 �닔�젙 沅뚰븳 泥댄겕 - //this.verifyIssueModifyPermission(issueForm.getId()); + this.verifyIssueModifyPermission(issueForm.getId()); // �봽濡쒖젥�듃 �쑀�슚�꽦 泥댄겕 Project project = this.projectService.getProject(issueForm.getProjectId()); // �씠�뒋 �긽�깭 �쑀�슚�꽦 泥댄겕 @@ -950,8 +987,10 @@ // �궇吏� �쑀�슚�꽦 泥댄겕 this.checkStartCompleteDate(issueForm.getStartDate(), issueForm.getCompleteDate()); - // �떞�떦�옄 �쑀�슚�꽦 泥댄겕 => �떞�떦遺��꽌濡� 蹂�寃� + // �떞�떦�옄 �쑀�슚�꽦 泥댄겕 //this.verifyIssueAssignee(project, issueForm); + // �떞�떦遺��꽌 �쑀�슚�꽦 泥댄겕 + this.verifyIssueDepartment(project, issueForm); Issue issue = this.getIssue(issueForm.getId()); @@ -1057,35 +1096,35 @@ } // �씠�뒋 �떞�떦遺��꽌濡� 吏��젙�맆 遺��꽌媛� �빐�떦 �봽濡쒖젥�듃�뿉 李몄뿬 �븯怨� �엳�뒗 遺��꽌�씤吏� �솗�씤 - private void verifyIssueAssignee(Project project, IssueForm issueForm) { + private void verifyIssueDepartment(Project project, IssueForm issueForm) { if (issueForm.getDepartmentIds().size() > 0) { List<Long> trustDepartmentIds = Lists.newArrayList(); // 李몄뿬 �솗�씤�맂 遺��꽌 for (Long departmentId : issueForm.getDepartmentIds()) { boolean includeProject = false; - /*for (ProjectRole projectRole : project.getProjectRoles()) { - ProjectRoleUser projectRoleUser = this.projectRoleUserService.findByProjectRoleIdAndDepartmentId(projectRole.getId(), departmentId); + for (ProjectRole projectRole : project.getProjectRoles()) { + ProjectRoleDepartment projectRoleDepartment = this.projectRoleDepartmentService.findByProjectRoleIdAndDepartmentId(projectRole.getId(), departmentId); - if (projectRoleUser != null) { + if (projectRoleDepartment != null) { includeProject = true; trustDepartmentIds.add(departmentId); break; } - }*/ + } // �뜲�씠�꽣 蹂댁젙 �옉�뾽 - �봽濡쒖젥�듃�뿉�꽌 �젣�쇅�맂 �궗�슜�옄�뒗 �떞�떦�옄�뿉�꽌 �젣�쇅 �맆 �닔 �엳�룄濡� 泥섎━ - /*if (!includeProject) { + if (!includeProject) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.PROJECT_NOT_INCLUDE_USER)); - }*/ + } } // 李몄뿬 �솗�씤�맂 遺��꽌濡� �떞�떦遺��꽌 蹂�寃� issueForm.setDepartmentIds(trustDepartmentIds); } } - /*// �씠�뒋 �떞�떦�옄濡� 吏��젙�맆 �궗�슜�옄媛� �빐�떦 �봽濡쒖젥�듃�뿉 李몄뿬 �븯怨� �엳�뒗 �궗�슜�옄 �씤吏� �솗�씤 + // �씠�뒋 �떞�떦�옄濡� 吏��젙�맆 �궗�슜�옄媛� �빐�떦 �봽濡쒖젥�듃�뿉 李몄뿬 �븯怨� �엳�뒗 �궗�슜�옄 �씤吏� �솗�씤 private void verifyIssueAssignee(Project project, IssueForm issueForm) { if (issueForm.getUserIds().size() > 0) { List<Long> trustUserIds = Lists.newArrayList(); // 李몄뿬 �솗�씤�맂 �궗�슜�옄 @@ -1104,15 +1143,15 @@ } // �뜲�씠�꽣 蹂댁젙 �옉�뾽 - �봽濡쒖젥�듃�뿉�꽌 �젣�쇅�맂 �궗�슜�옄�뒗 �떞�떦�옄�뿉�꽌 �젣�쇅 �맆 �닔 �엳�룄濡� 泥섎━ - *//*if (!includeProject) { + if (!includeProject) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.PROJECT_NOT_INCLUDE_USER)); - }*//* + } } // 李몄뿬 �솗�씤�맂 �궗�슜�옄濡� �떞�떦�옄 蹂�寃� issueForm.setUserIds(trustUserIds); } - }*/ + } // �씠�뒋 �닔�젙 沅뚰븳 泥댄겕 private void verifyIssueModifyPermission(Long issueId) { diff --git a/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java new file mode 100644 index 0000000..b9d6163 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java @@ -0,0 +1,66 @@ +package kr.wisestone.owl.service.impl; + +import com.google.common.collect.Lists; +import kr.wisestone.owl.constant.MsgConstants; +import kr.wisestone.owl.domain.*; +import kr.wisestone.owl.exception.OwlRuntimeException; +import kr.wisestone.owl.mapper.ProjectRoleDepartmentMapper; +import kr.wisestone.owl.mapper.ProjectRoleUserMapper; +import kr.wisestone.owl.repository.ProjectRoleDepartmentRepository; +import kr.wisestone.owl.repository.ProjectRoleUserRepository; +import kr.wisestone.owl.service.ProjectRoleDepartmentService; +import kr.wisestone.owl.service.ProjectRoleService; +import kr.wisestone.owl.service.UserWorkspaceService; +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.List; +import java.util.Map; + +@Service +public class ProjectRoleDepartmentServiceImpl extends AbstractServiceImpl<ProjectRoleDepartment, Long, JpaRepository<ProjectRoleDepartment, Long>> implements ProjectRoleDepartmentService { + + private static final Logger log = LoggerFactory.getLogger(ProjectRoleDepartmentServiceImpl.class); + + @Autowired + private ProjectRoleDepartmentRepository projectRoleDepartmentRepository; + + @Autowired + private ProjectRoleService projectRoleService; + + @Autowired + private UserWorkspaceService userWorkspaceService; + + @Autowired + private ProjectRoleDepartmentMapper projectRoleDepartmentMapper; + + @Override + protected JpaRepository<ProjectRoleDepartment, Long> getRepository() { + return this.projectRoleDepartmentRepository; + } + + @Override + @Transactional(readOnly = true) + public List<ProjectRoleDepartment> findByProjectRoleId(Long projectRoleId) { + return this.projectRoleDepartmentRepository.findByProjectRoleId(projectRoleId); + } + + // �빐�떦 遺��꽌媛� �듅�젙 �뿭�븷�뿉 �냼�냽�릺�뼱 �엳�뒗吏� �솗�씤�븳�떎. + @Override + @Transactional(readOnly = true) + public ProjectRoleDepartment findByProjectRoleIdAndDepartmentId(Long projectRoleId, Long departmentId) { + return this.projectRoleDepartmentRepository.findByProjectRoleIdAndDepartmentId(projectRoleId, departmentId); + } + + // �봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 �궗�슜�옄, �봽濡쒖젥�듃 愿�由ъ옄瑜� �뙆�씪誘명꽣�뿉 �뵲�씪 議고쉶�븳�떎. + @Override + @Transactional(readOnly = true) + public List<Map<String, Object>> findProjectRoleDepartment(Map<String, Object> projectRoleDepartmentMap) { + return this.projectRoleDepartmentMapper.findProjectRoleDepartment(projectRoleDepartmentMap); + } +} diff --git a/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleUserServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleUserServiceImpl.java index 2b581ca..f158fe0 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleUserServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleUserServiceImpl.java @@ -54,13 +54,6 @@ return this.projectRoleUserRepository.findByProjectRoleIdAndUserId(projectRoleId, userId); } - // �빐�떦 遺��꽌媛� �듅�젙 �뿭�븷�뿉 �냼�냽�릺�뼱 �엳�뒗吏� �솗�씤�븳�떎. - /*@Override - @Transactional(readOnly = true) - public ProjectRoleUser findByProjectRoleIdAndDepartmentId(Long projectRoleId, Long departmentId) { - return this.projectRoleUserRepository.findByProjectRoleIdAndDepartmentId(projectRoleId, departmentId); - }*/ - // �뾽臾� 怨듦컙�쓣 �깉�눜�븳 �궗�슜�옄媛� �떎瑜� �뾽臾� 怨듦컙�쓽 �봽濡쒖젥�듃 愿�由ъ옄, �씪諛� �궗�슜�옄濡� �엳�쓣 寃쎌슦 �젣嫄고븳�떎. @Override @Transactional 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 ebd2662..094aed4 100644 --- a/src/main/java/kr/wisestone/owl/web/form/IssueForm.java +++ b/src/main/java/kr/wisestone/owl/web/form/IssueForm.java @@ -37,6 +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; //�샇�뒪�똿�븘�뱶 public IssueForm() { } @@ -93,6 +96,20 @@ form.setIds(MapUtil.getLongs(params, "ids")); } + // �뾽泥� �븘�뱶 �젙蹂� + if (MapUtil.getLongs(params, "companyFieldId") != null){ + form.setCompanyId(MapUtil.getLong(params, "companyFieldId")); + } + + // ISP �븘�뱶 �젙蹂� + if (MapUtil.getLongs(params, "ispFieldId") != null){ + form.setIspId(MapUtil.getLong(params, "ispFieldId")); + } + + // HOSTING �븘�뱶 �젙蹂� + if (MapUtil.getLongs(params, "hostingFieldId") != null){ + form.setHostingId(MapUtil.getLong(params, "hostingFieldId")); + } return form; } @@ -271,4 +288,28 @@ public void setComment(String comment) { this.comment = comment; } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } + + public Long getIspId() { + return ispId; + } + + public void setIspId(Long ispId) { + this.ispId = ispId; + } + + public Long getHostingId() { + return hostingId; + } + + public void setHostingId(Long hostingId) { + this.hostingId = hostingId; + } } diff --git a/src/main/resources/migration/V1_1__Initial_Setup.sql b/src/main/resources/migration/V1_1__Initial_Setup.sql index 0ea3a43..54b934e 100644 --- a/src/main/resources/migration/V1_1__Initial_Setup.sql +++ b/src/main/resources/migration/V1_1__Initial_Setup.sql @@ -545,6 +545,21 @@ CREATE TABLE IF NOT EXISTS `project_role_department` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `project_role_id` bigint(20) NOT NULL, + `department_id` bigint(20) NOT NULL, + `register_id` bigint(20) NOT NULL, + `register_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `modify_id` bigint(20) NOT NULL, + `modify_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', + PRIMARY KEY (`id`), + KEY `projectRoleIdAndDepartmentIdIndex` (`project_role_id`,`department_id`), + KEY `departmentIdIndex` (`department_id`), + KEY `projectRoleIdIndex` (`project_role_id`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- �뀒�씠釉� owl_en_1.5.project_role_department 援ъ“ �궡蹂대궡湲� +CREATE TABLE IF NOT EXISTS `project_role_department` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `project_role_id` bigint(20) NOT NULL, `department_id` bigint(20) NULL, `register_id` bigint(20) NOT NULL, `register_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, diff --git a/src/main/resources/mybatis/query-template/projectRoleDepartment-template.xml b/src/main/resources/mybatis/query-template/projectRoleDepartment-template.xml new file mode 100644 index 0000000..20643a0 --- /dev/null +++ b/src/main/resources/mybatis/query-template/projectRoleDepartment-template.xml @@ -0,0 +1,43 @@ +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + +<mapper namespace="kr.wisestone.owl.mapper.ProjectRoleUserMapper"> + + <!-- �봽濡쒖젥�듃 �뿭�븷怨� �궗�슜�옄瑜� �뿰寃고븳�떎. --> + <insert id="insertProjectRoleDepartment" keyColumn="id" keyProperty="id" useGeneratedKeys="true" parameterType="java.util.HashMap"> + INSERT INTO project_role_department(project_role_id, department_id, register_id, modify_id, register_date, modify_date) + VALUES + <foreach collection="list" item="map" index="index" separator="," open="" close=""> + (#{map.projectRoleId}, #{map.departmentId}, #{map.registerId}, #{map.registerId}, NOW(), NOW()) + </foreach> + </insert> + + <!-- �봽濡쒖젥�듃 �뿭�븷怨� �궗�슜�옄 �뿰寃� �젙蹂대�� �궘�젣�븳�떎. --> + <delete id="deleteProjectRoleDepartment" parameterType="java.util.HashMap"> + DELETE FROM project_role_department WHERE project_role_id = #{projectRoleId} AND department_id = #{departmentId} + </delete> + + <!-- �봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 遺��꽌瑜� 議고쉶�븳�떎. --> + <select id="findProjectRoleDepartment" resultType="java.util.HashMap" parameterType="java.util.HashMap"> + SELECT + DISTINCT d.id as id, + d.department_name as name + FROM + project p + INNER JOIN project_role pr on p.id = pr.project_id + INNER JOIN project_role_department prd on prd.project_role_id = pr.id + INNER JOIN department d on d.id = prd.department_id + WHERE 1=1 + <choose> + <when test="statuses.size != 0"> + AND pr.role_type IN + <foreach collection="statuses" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + AND p.id = #{id} + </select> + + +</mapper> \ No newline at end of file diff --git a/src/main/webapp/scripts/app/project/projectAdd.controller.js b/src/main/webapp/scripts/app/project/projectAdd.controller.js index a729af7..25711d7 100644 --- a/src/main/webapp/scripts/app/project/projectAdd.controller.js +++ b/src/main/webapp/scripts/app/project/projectAdd.controller.js @@ -93,12 +93,13 @@ }); return managerIds; })(), - userIds : (function () { - var userIds = []; + //遺��꽌id 異붽� �븘�슂 + departmentIds : (function () { + var departmentIds = []; angular.forEach($scope.vm.form.users, function (user) { - userIds.push(user.id); + departmentIds.push(user.id); }); - return userIds; + return departmentIds; })() }; -- Gitblit v1.8.0