OWL ITS + 탐지시스템(인터넷 진흥원)
- api 이슈 추가시 하위 일감인 이슈만 수정 가능
- api로 이슈 수정시 수정할 이슈를 찾을때 custom_field_type 이 DATETIME 인 항목은 판단에서 제외시키도록 수정
3개 파일 변경됨
53 ■■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 31 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/IssueCustomFieldValueCondition.java 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/issue-template.xml 12 ●●●● 패치 | 보기 | raw | blame | 히스토리
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;
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;
    }
}
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>