From 988b102742495caf8e347986ab402a7512d6fc17 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 목, 16 12월 2021 18:03:06 +0900
Subject: [PATCH] 이슈목록 - 테이블표시설정에 프로젝트에서 설정한 사용자정의필드만 가져오기

---
 src/main/java/kr/wisestone/owl/service/IssueTypeCustomFieldService.java                 |    2 +
 src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js                     |    6 +-
 src/main/java/kr/wisestone/owl/web/condition/IssueTypeCustomFieldCondition.java         |   10 +++++
 src/main/java/kr/wisestone/owl/service/impl/IssueTypeCustomFieldServiceImpl.java        |   23 +++++++++++
 src/main/webapp/scripts/components/issueTypeCustomField/issueTypeCustomField.service.js |    6 +++
 src/main/resources/mybatis/query-template/issueTypeCustomField-template.xml             |   20 ++++++++++
 src/main/java/kr/wisestone/owl/mapper/IssueTypeCustomFieldMapper.java                   |   15 +++++++
 src/main/java/kr/wisestone/owl/web/controller/IssueTypeCustomFieldController.java       |   12 ++++++
 8 files changed, 91 insertions(+), 3 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/mapper/IssueTypeCustomFieldMapper.java b/src/main/java/kr/wisestone/owl/mapper/IssueTypeCustomFieldMapper.java
new file mode 100644
index 0000000..28c8262
--- /dev/null
+++ b/src/main/java/kr/wisestone/owl/mapper/IssueTypeCustomFieldMapper.java
@@ -0,0 +1,15 @@
+package kr.wisestone.owl.mapper;
+
+import kr.wisestone.owl.vo.IssueTypeCustomFieldVo;
+import kr.wisestone.owl.web.condition.IssueTypeCustomFieldCondition;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * Created by wisestone on 2018-05-29.
+ */
+@Repository
+public interface IssueTypeCustomFieldMapper {
+    List<IssueTypeCustomFieldVo> findByIssueType(IssueTypeCustomFieldCondition condition);
+}
diff --git a/src/main/java/kr/wisestone/owl/service/IssueTypeCustomFieldService.java b/src/main/java/kr/wisestone/owl/service/IssueTypeCustomFieldService.java
index d246363..785ccd3 100644
--- a/src/main/java/kr/wisestone/owl/service/IssueTypeCustomFieldService.java
+++ b/src/main/java/kr/wisestone/owl/service/IssueTypeCustomFieldService.java
@@ -14,6 +14,8 @@
 
     List<IssueTypeCustomFieldVo> findIssueTypeCustomField(Map<String, Object> resJsonData, IssueTypeCustomFieldCondition condition);
 
+    List<IssueTypeCustomFieldVo> findCustomFieldByIssueType(Map<String, Object> resJsonData, IssueTypeCustomFieldCondition condition);
+
     List<IssueTypeCustomField> findByProjectIdAndIssueTypeId(Long projectId, Long issueTypeId);
 
     IssueTypeCustomField findByProjectIdAndIssueTypeIdAndCustomFieldId(Long projectId, Long issueTypeId, Long customFieldId);
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeCustomFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeCustomFieldServiceImpl.java
index 8c4dc82..78286d0 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeCustomFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeCustomFieldServiceImpl.java
@@ -3,6 +3,7 @@
 import com.google.common.collect.Lists;
 import kr.wisestone.owl.constant.Constants;
 import kr.wisestone.owl.domain.*;
+import kr.wisestone.owl.mapper.IssueTypeCustomFieldMapper;
 import kr.wisestone.owl.repository.IssueTypeCustomFieldRepository;
 import kr.wisestone.owl.service.*;
 import kr.wisestone.owl.util.ConvertUtil;
@@ -30,10 +31,16 @@
     private IssueTypeCustomFieldRepository issueTypeCustomFieldRepository;
 
     @Autowired
+    private IssueTypeCustomFieldMapper issueTypeCustomFieldMapper;
+
+    @Autowired
     private ProjectService projectService;
 
     @Autowired
     private IssueTypeService issueTypeService;
+
+    @Autowired
+    private UserService userService;
 
     @Autowired
     private CustomFieldService customFieldService;
@@ -183,6 +190,22 @@
         return issueTypeCustomFieldVos;
     }
 
+    @Override
+    @Transactional(readOnly = true)
+    public List<IssueTypeCustomFieldVo> findCustomFieldByIssueType(Map<String, Object> resJsonData, IssueTypeCustomFieldCondition condition) {
+        List<IssueTypeCustomFieldVo> issueTypeCustomFieldVos = Lists.newArrayList();
+
+        IssueType issueType = this.issueTypeService.getIssueType(condition.getIssueTypeId());
+        condition.setIssueTypeId(issueType.getId());
+        condition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
+        List<IssueTypeCustomFieldVo> issueTypeCustomFieldVo = this.issueTypeCustomFieldMapper.findByIssueType(condition);
+        if (issueTypeCustomFieldVo != null && issueTypeCustomFieldVo.size() > 0) {
+            issueTypeCustomFieldVos.addAll(issueTypeCustomFieldVo);
+        }
+        resJsonData.put(Constants.RES_KEY_CONTENTS, issueTypeCustomFieldVos);
+        return issueTypeCustomFieldVos;
+    }
+
     //  �씠�뒋 excel template download �뿉�꽌 �궗�슜
     @Override
     @Transactional(readOnly = true)
diff --git a/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCustomFieldCondition.java b/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCustomFieldCondition.java
index 90debdb..e9b922f 100644
--- a/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCustomFieldCondition.java
+++ b/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCustomFieldCondition.java
@@ -11,6 +11,8 @@
     private Long projectId;
     private Long issueTypeId;
 
+    private Long workspaceId;
+
     public IssueTypeCustomFieldCondition(){}
 
     public static IssueTypeCustomFieldCondition make(Map<String, Object> conditions) {
@@ -33,4 +35,12 @@
     public void setIssueTypeId(Long issueTypeId) {
         this.issueTypeId = issueTypeId;
     }
+
+    public Long getWorkspaceId() {
+        return workspaceId;
+    }
+
+    public void setWorkspaceId(Long workspaceId) {
+        this.workspaceId = workspaceId;
+    }
 }
diff --git a/src/main/java/kr/wisestone/owl/web/controller/IssueTypeCustomFieldController.java b/src/main/java/kr/wisestone/owl/web/controller/IssueTypeCustomFieldController.java
index dc19893..da79a26 100644
--- a/src/main/java/kr/wisestone/owl/web/controller/IssueTypeCustomFieldController.java
+++ b/src/main/java/kr/wisestone/owl/web/controller/IssueTypeCustomFieldController.java
@@ -48,4 +48,16 @@
         return this.setSuccessMessage(resJsonData);
     }
 
+    //  �씠�뒋 ���엯 蹂� �궗�슜�옄 �젙�쓽 �븘�뱶 �뿰寃� 議고쉶
+    @RequestMapping(value = "/issueTypeCustomField/findByIssueType", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
+    public
+    @ResponseBody
+    Map<String, Object> findByIssueType(@RequestBody Map<String, Map<String, Object>> params) {
+        Map<String, Object> resJsonData = new HashMap<>();
+
+        this.issueTypeCustomFieldService.findCustomFieldByIssueType(resJsonData, IssueTypeCustomFieldCondition.make(params.get(Constants.REQ_KEY_CONTENT)));
+
+        return this.setSuccessMessage(resJsonData);
+    }
+
 }
diff --git a/src/main/resources/mybatis/query-template/issueTypeCustomField-template.xml b/src/main/resources/mybatis/query-template/issueTypeCustomField-template.xml
new file mode 100644
index 0000000..28cd687
--- /dev/null
+++ b/src/main/resources/mybatis/query-template/issueTypeCustomField-template.xml
@@ -0,0 +1,20 @@
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="kr.wisestone.owl.mapper.IssueTypeCustomFieldMapper">
+
+    <select id="findByIssueType" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueTypeCustomFieldCondition">
+        SELECT
+        cf.id AS id,
+        cf.name AS name,
+        cf.custom_field_type as customFieldType,
+        cf.default_value as defaultValue
+        FROM issue_type_custom_field it
+        INNER JOIN custom_field cf ON cf.id = it.custom_field_id
+        INNER JOIN workspace ws on cf.workspace_id = ws.id
+        WHERE cf.use_flag = 'Y'
+        AND it.issue_type_id = #{issueTypeId}
+        AND ws.id = #{workspaceId}
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js b/src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js
index 912fcc2..8f9eb74 100644
--- a/src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js
@@ -8,8 +8,8 @@
         'angular'
     ],
     function (app, angular) {
-        app.controller('issueAddTableConfigController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance', 'SweetAlert', '$timeout', 'IssueTableConfig', 'CustomField', '$q', '$filter', 'parameter',
-            function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, SweetAlert, $timeout, IssueTableConfig, CustomField, $q, $filter, parameter) {
+        app.controller('issueAddTableConfigController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance', 'SweetAlert', '$timeout', 'IssueTableConfig', 'IssueTypeCustomField', '$q', '$filter', 'parameter',
+            function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, SweetAlert, $timeout, IssueTableConfig, IssueTypeCustomField, $q, $filter, parameter) {
 
                 //  �븿�닔 紐⑥쓬
                 $scope.fn = {
@@ -139,7 +139,7 @@
                 function getCustomFields() {
                     var deferred = $q.defer();
 
-                    CustomField.find($resourceProvider.getContent({},
+                    IssueTypeCustomField.findByIssueType($resourceProvider.getContent({issueTypeId : $rootScope.getCurrentIssueTypeId()},
                         $resourceProvider.getPageContent(0, 1000))).then(function (result) {
                         if (result.data.message.status !== "success") {
                             SweetAlert.error($filter("translate")("issue.failedToUserDefinedFieldListLookup"), result.data.message.message); // �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉 議고쉶 �떎�뙣
diff --git a/src/main/webapp/scripts/components/issueTypeCustomField/issueTypeCustomField.service.js b/src/main/webapp/scripts/components/issueTypeCustomField/issueTypeCustomField.service.js
index 1caa2be..223686a 100644
--- a/src/main/webapp/scripts/components/issueTypeCustomField/issueTypeCustomField.service.js
+++ b/src/main/webapp/scripts/components/issueTypeCustomField/issueTypeCustomField.service.js
@@ -14,6 +14,12 @@
                     return response;
                 });
             },
+            findByIssueType : function (conditions) {
+                return $http.post("issueTypeCustomField/findByIssueType", conditions).then(function (response) {
+                    $log.debug("�씠�뒋 �쑀�삎 蹂� �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉 �뜲�씠�꽣 : ", response);
+                    return response;
+                });
+            },
             modify : function (conditions) {
                 return $http.post("issueTypeCustomField/modify", conditions).then(function (response) {
                     $log.debug("�씠�뒋 �쑀�삎 �궗�슜�옄 �젙�쓽 �븘�뱶 �닔�젙 寃곌낵 : ", response);

--
Gitblit v1.8.0