From a3ccec7a8ad583c345c11979fe71729266ce46e8 Mon Sep 17 00:00:00 2001 From: jhjang <jhjang@maprex.co.kr> Date: 화, 07 12월 2021 16:33:57 +0900 Subject: [PATCH] - api 이슈 추가시 하위 일감인 이슈만 수정 가능 - api로 이슈 수정시 수정할 이슈를 찾을때 custom_field_type 이 DATETIME 인 항목은 판단에서 제외시키도록 수정 --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 31 +++++++++++++++++++++++++++++-- src/main/resources/mybatis/query-template/issue-template.xml | 12 ++++++++++-- src/main/java/kr/wisestone/owl/web/condition/IssueCustomFieldValueCondition.java | 10 ++++++++++ 3 files changed, 49 insertions(+), 4 deletions(-) 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 1c33b93..4bc411d 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -238,7 +238,7 @@ issueForm.setSeverityId(issueApiDefault.getSeverity().getId()); } - // 以묐났 媛� �븯�쐞 �씠�뒋濡� 泥섎━�븯湲� + // 以묐났 媛� �긽�쐞 �씠�뒋�쓽 �븯�쐞 �씠�뒋濡� 泥섎━�븯湲� CustomFieldApiOverlapForm customFieldApiOverlapForm = new CustomFieldApiOverlapForm(); customFieldApiOverlapForm.setUserId(user.getId()); customFieldApiOverlapForm.setIssueTypeId(issueForm.getIssueTypeId()); @@ -307,14 +307,25 @@ return issues; } + // �긽�쐞 �씠�뒋 媛��졇�삤湲� + private IssueVo getParentIssueVo(Long parentIssueId) { + if (parentIssueId != null) { + Issue parentIssue = this.getIssue(parentIssueId); + return ConvertUtil.copyProperties(parentIssue, IssueVo.class); + } + return null; + } + // 以묐났�맂 �긽�쐞 �씠�뒋 寃��깋 private List<IssueVo> findIssue(IssueApiForm issueApiForm, List<CustomFieldApiOverlap> customFieldApiOverlaps, Long userId) { List<IssueVo> resultIssueVos = new ArrayList<>(); + if (customFieldApiOverlaps != null && customFieldApiOverlaps.size() > 0) { for (CustomFieldApiOverlap customFieldApiOverlap : customFieldApiOverlaps) { for (IssueCustomFieldValueForm issueCustomFieldValue : issueApiForm.getIssueCustomFieldValues()) { IssueCustomFieldValueCondition issueCustomFieldValueCondition = new IssueCustomFieldValueCondition(); + issueCustomFieldValueCondition.setUseParentIssueId(true); if (customFieldApiOverlap.getCustomField().getId().equals(issueCustomFieldValue.getCustomFieldId())) { issueCustomFieldValueCondition.setUseValue(issueCustomFieldValue.getUseValue()); @@ -1419,12 +1430,20 @@ @Override @Transactional public List<IssueVo> findIssue(IssueApiForm issueApiform) { + List<IssueCustomFieldValueForm> issueCustomFieldValueForms = issueApiform.getIssueCustomFieldValues(); List<IssueVo> resultIssueVos = new ArrayList<>(); IssueCustomFieldValueCondition issueCustomFieldValueCondition = new IssueCustomFieldValueCondition(); + issueCustomFieldValueCondition.setUseParentIssueId(false); if (issueCustomFieldValueForms.size() > 0) { for (IssueCustomFieldValueForm issueCustomFieldValueForm : issueCustomFieldValueForms) { + + CustomField customField = this.customFieldService.getCustomField(issueCustomFieldValueForm.getCustomFieldId()); + CustomFieldType customFieldType = CustomFieldType.DATETIME; + if (customFieldType.equals(customField.getCustomFieldType())) { + continue; + } // issueCustomFieldValueCondition.addUseValue(issueCustomFieldValueForm.getUseValue()); issueCustomFieldValueCondition.setUseValue(issueCustomFieldValueForm.getUseValue()); List<Map<String, Object>> results = this.issueMapper.findByCustomFieldValue(issueCustomFieldValueCondition); @@ -1434,6 +1453,8 @@ resultIssueVos.clear(); for (Map<String, Object> result : results) { IssueVo issueVo = ConvertUtil.convertMapToClass(result, IssueVo.class); + + issueVo.setParentIssueVo(this.getParentIssueVo(MapUtil.getLong(result, "parentIssueId"))); if (findIssueVos.size() == 0) { resultIssueVos.add(issueVo); @@ -1472,11 +1493,17 @@ User user = this.convertToUser(issueApiForm.getToken()); IssueForm issueForm = this.convertToIssueForm(issueApiForm, user); + List<IssueVo> issueVos = this.findIssue(issueApiForm); if (issueVos != null && issueVos.size() > 0) { List<Issue> issue = Lists.newArrayList(); for (IssueVo issueVo : issueVos) { - issueForm.setId(issueVo.getId()); + IssueVo parentIssueVo = issueVo.getParentIssueVo(); + if (parentIssueVo != null) { + issueForm.setId(parentIssueVo.getId()); + } else { + issueForm.setId(issueVo.getId()); + } issue.add(this.modifyIssueForApi(user, issueForm, files)); } return issue; diff --git a/src/main/java/kr/wisestone/owl/web/condition/IssueCustomFieldValueCondition.java b/src/main/java/kr/wisestone/owl/web/condition/IssueCustomFieldValueCondition.java index 478b78d..9231e18 100644 --- a/src/main/java/kr/wisestone/owl/web/condition/IssueCustomFieldValueCondition.java +++ b/src/main/java/kr/wisestone/owl/web/condition/IssueCustomFieldValueCondition.java @@ -18,6 +18,7 @@ private String customFieldType; private List<String> useValues = Lists.newArrayList(); // �떒�씪, �떎以� �씪�븣 寃��깋 媛� private String useValue; // �뀓�뒪�듃 �븘�뱶�씪 �븣 寃��깋 媛� + private boolean useParentIssueId = true; public IssueCustomFieldValueCondition(){} @@ -103,4 +104,13 @@ public void setCustomFieldType(String customFieldType) { this.customFieldType = customFieldType; } + + public boolean isUseParentIssueId() { + return useParentIssueId; + } + + public void setUseParentIssueId(boolean useParentIssueId) { + this.useParentIssueId = useParentIssueId; + } + } diff --git a/src/main/resources/mybatis/query-template/issue-template.xml b/src/main/resources/mybatis/query-template/issue-template.xml index bbf5ef7..980a1ed 100644 --- a/src/main/resources/mybatis/query-template/issue-template.xml +++ b/src/main/resources/mybatis/query-template/issue-template.xml @@ -959,12 +959,20 @@ <!-- �듅�젙 �궗�슜�옄 �젙�쓽 �븘�뱶 媛믪씠 媛숈� �씠�뒋瑜� 議고쉶 --> <select id="findByCustomFieldValue" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueCustomFieldValueCondition"> SELECT - issue_custom.issue_id as id + issue_custom.issue_id as id, + iss.parent_issue_id as parentIssueId FROM issue_custom_field_value issue_custom INNER JOIN issue iss ON iss.id = issue_custom.issue_id WHERE 1=1 - AND iss.parent_issue_id IS NULL AND issue_custom.use_value = #{useValue} + <choose> + <when test="useParentIssueId.equals(true)"> + AND iss.parent_issue_id IS NULL + </when> + <otherwise> + AND iss.parent_issue_id IS NOT NULL + </otherwise> + </choose> </select> </mapper> -- Gitblit v1.8.0