From eee313007ce5c4f0879d764d56d3a1ba93f6fb37 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 수, 01 12월 2021 16:33:49 +0900
Subject: [PATCH] 대시보드 - 멤버별 진행률 완료 및 오류 수정

---
 src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java |   10 ++++
 src/main/webapp/scripts/app/widget/widgetDashBoard.controller.js   |   38 +++++++++++++++++++
 src/main/resources/mybatis/query-template/widget-template.xml      |   61 ++++++++++++++++--------------
 src/main/webapp/WEB-INF/i18n/code_ko_KR.properties                 |    1 
 4 files changed, 80 insertions(+), 30 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java
index 4a8a84d..df9aac1 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java
@@ -486,6 +486,7 @@
             List<Map<String, Object>> projectMemberIssues = this.widgetMapper.findProjectMemberIssue(widgetCondition);
 
             for (Map<String, Object> projectMemberIssue : projectMemberIssues) {
+                //String departmentName = MapUtil.getString(projectMemberIssue, "departmentName");
                 Long completeCount = MapUtil.getLong(projectMemberIssue, "completeCount");
                 Long remainCount = MapUtil.getLong(projectMemberIssue, "remainCount");
                 //projectMemberIssue.put("account", CommonUtil.decryptAES128(MapUtil.getString(projectMemberIssue, "account")));
@@ -1037,6 +1038,7 @@
         excelInfo.setDatas(assigneeIssues);
         excelInfo.addAttrInfos(new ExportExcelAttrVo("issueKey", this.messageAccessor.message("common.issueKey"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // �씠�뒋 踰덊샇
         excelInfo.addAttrInfos(new ExportExcelAttrVo("registerDate", this.messageAccessor.message("common.registerDate"), 8, ExportExcelAttrVo.ALIGN_CENTER)); // �벑濡앹씪
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("projectName", this.messageAccessor.message("common.project"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // �봽濡쒖젥�듃
         excelInfo.addAttrInfos(new ExportExcelAttrVo("title", this.messageAccessor.message("common.issueTitle"), 40, ExportExcelAttrVo.ALIGN_LEFT)); // �씠�뒋
         excelInfo.addAttrInfos(new ExportExcelAttrVo("issueStatusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // �긽�깭
         excelInfo.addAttrInfos(new ExportExcelAttrVo("completeDate", this.messageAccessor.message("common.endDate"), 15, ExportExcelAttrVo.ALIGN_CENTER)); // 醫낅즺�씪
@@ -1104,6 +1106,7 @@
         excelInfo.setDatas(riskIssues);
         excelInfo.addAttrInfos(new ExportExcelAttrVo("issueKey", this.messageAccessor.message("common.issueKey"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // �씠�뒋 踰덊샇
         excelInfo.addAttrInfos(new ExportExcelAttrVo("riskType", this.messageAccessor.message("common.division"), 15, ExportExcelAttrVo.ALIGN_CENTER)); // 援щ텇
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("projectName", this.messageAccessor.message("common.project"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // �봽濡쒖젥�듃
         excelInfo.addAttrInfos(new ExportExcelAttrVo("title", this.messageAccessor.message("common.issueTitle"), 40, ExportExcelAttrVo.ALIGN_LEFT)); // �씠�뒋
         excelInfo.addAttrInfos(new ExportExcelAttrVo("issueStatusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // �긽�깭
         excelInfo.addAttrInfos(new ExportExcelAttrVo("issueUsers", this.messageAccessor.message("common.assignee"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // �떞�떦�옄
@@ -1137,6 +1140,7 @@
         excelInfo.setDatas(registerIssues);
         excelInfo.addAttrInfos(new ExportExcelAttrVo("issueKey", this.messageAccessor.message("common.issueKey"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // �씠�뒋 踰덊샇
         excelInfo.addAttrInfos(new ExportExcelAttrVo("issueStatusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // �긽�깭
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("projectName", this.messageAccessor.message("common.project"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // �봽濡쒖젥�듃
         excelInfo.addAttrInfos(new ExportExcelAttrVo("title", this.messageAccessor.message("common.issueTitle"), 40, ExportExcelAttrVo.ALIGN_LEFT)); // �씠�뒋
         excelInfo.addAttrInfos(new ExportExcelAttrVo("period", this.messageAccessor.message("common.period"), 15, ExportExcelAttrVo.ALIGN_CENTER)); // 湲곌컙
         return excelInfo;
@@ -1182,6 +1186,7 @@
         excelInfo.setDatas(delayIssues);
         excelInfo.addAttrInfos(new ExportExcelAttrVo("issueKey", this.messageAccessor.message("common.issueKey"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // �씠�뒋 踰덊샇
         excelInfo.addAttrInfos(new ExportExcelAttrVo("delayDay", this.messageAccessor.message("common.delayDate"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // 吏��뿰�씪
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("projectName", this.messageAccessor.message("common.project"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // �봽濡쒖젥�듃
         excelInfo.addAttrInfos(new ExportExcelAttrVo("title", this.messageAccessor.message("common.issueTitle"), 40, ExportExcelAttrVo.ALIGN_LEFT)); // �씠�뒋
         excelInfo.addAttrInfos(new ExportExcelAttrVo("issueStatusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // �긽�깭
         excelInfo.addAttrInfos(new ExportExcelAttrVo("period", this.messageAccessor.message("common.period"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 湲곌컙
@@ -1223,7 +1228,9 @@
         excelInfo.setFileName(this.messageAccessor.message("common.progressByMember")); // 硫ㅻ쾭蹂� 吏꾪뻾瑜�
         excelInfo.setDatas(members);
 
-        excelInfo.addAttrInfos(new ExportExcelAttrVo("byName", this.messageAccessor.message("common.teamMember"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // ���썝
+        //excelInfo.addAttrInfos(new ExportExcelAttrVo("byName", this.messageAccessor.message("common.teamMember"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // ���썝
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("projectName", this.messageAccessor.message("common.project"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // �봽濡쒖젥�듃
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("departmentName", this.messageAccessor.message("common.teamDepartment"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // �떞�떦遺��꽌
         excelInfo.addAttrInfos(new ExportExcelAttrVo("projectProgressPercent", this.messageAccessor.message("common.progressPercent"), 6, ExportExcelAttrVo.ALIGN_LEFT)); // 吏꾪뻾瑜�
         excelInfo.addAttrInfos(new ExportExcelAttrVo("issueCount", this.messageAccessor.message("common.assignedIssue"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // �떞�떦 �씠�뒋
         excelInfo.addAttrInfos(new ExportExcelAttrVo("delayCount", this.messageAccessor.message("common.delaying"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 吏��뿰以�
@@ -1300,6 +1307,7 @@
         excelInfo.setDatas(severityIssue);
         excelInfo.addAttrInfos(new ExportExcelAttrVo("issueKey", this.messageAccessor.message("common.issueKey"), 8, ExportExcelAttrVo.ALIGN_CENTER));    //�씠�뒋 踰덊샇
         excelInfo.addAttrInfos(new ExportExcelAttrVo("severityName", this.messageAccessor.message("common.importance"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 以묒슂�룄
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("projectName", this.messageAccessor.message("common.project"), 15, ExportExcelAttrVo.ALIGN_LEFT)); // �봽濡쒖젥�듃
         excelInfo.addAttrInfos(new ExportExcelAttrVo("title", this.messageAccessor.message("common.issueTitle"), 40, ExportExcelAttrVo.ALIGN_CENTER)); // �씠�뒋�젣紐�
         excelInfo.addAttrInfos(new ExportExcelAttrVo("issueStatusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER));  //�씠�뒋 �긽�깭
         excelInfo.addAttrInfos(new ExportExcelAttrVo("period", this.messageAccessor.message("common.period"), 15, ExportExcelAttrVo.ALIGN_CENTER)); // 湲곌컙
diff --git a/src/main/resources/mybatis/query-template/widget-template.xml b/src/main/resources/mybatis/query-template/widget-template.xml
index 37ab4d1..b482c87 100644
--- a/src/main/resources/mybatis/query-template/widget-template.xml
+++ b/src/main/resources/mybatis/query-template/widget-template.xml
@@ -15,7 +15,7 @@
         WHERE EXISTS(SELECT 1 FROM issue_status iss WHERE iss.issue_status_type != 'CLOSE' AND i.issue_status_id =
         iss.id)
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -31,7 +31,7 @@
         COUNT(i.id) FROM issue i where
         exists(select 1 from issue_status iss where iss.id = i.issue_status_id and iss.issue_status_type != 'CLOSE')
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -86,7 +86,7 @@
         </choose>
         ) AND EXISTS(SELECT 1 FROM issue_status iss WHERE iss.id = i.issue_status_id and iss.issue_status_type != 'CLOSE')
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -102,7 +102,7 @@
         count(i.id) as todayCount from issue i where
         i.register_id = #{loginUserId}
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -140,7 +140,7 @@
         WHERE
         EXISTS(select 1 from issue_status iss where iss.id = i.issue_status_id and iss.issue_status_type != 'CLOSE')
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -158,7 +158,7 @@
         inner join issue_status iss on iss.id = i.issue_status_id
         where iss.issue_status_type = 'CLOSE'
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -180,7 +180,7 @@
         where iss.issue_status_type = 'CLOSE'
         and i.modify_date between #{searchStartDate} and #{searchEndDate}
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -197,7 +197,7 @@
         inner join issue_status iss on iss.id = i.issue_status_id
         where 1=1
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -277,7 +277,7 @@
         left outer join issue_status iss on iss.id = i.issue_status_id
         WHERE 1=1
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND p.id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -389,7 +389,7 @@
         and id.register_date
         BETWEEN (CURDATE()) AND (CURDATE() + INTERVAL 1 DAY))
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -429,7 +429,7 @@
         inner join issue_status iss on iss.id = i.issue_status_id
         WHERE 1=1
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -502,7 +502,7 @@
         inner join project p on p.id = i.project_id
         WHERE 1=1
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND p.id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -562,7 +562,7 @@
         inner join issue_status iss on iss.id = i.issue_status_id
         where iss.issue_status_type != 'CLOSE'
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -607,14 +607,15 @@
         (case when ir.change_issue_status_count > 3 then true else false end) as changeIssueStatusType,
         CONCAT(p.project_key, '-', i.issue_number) AS issueKey,
         i.issue_number as issueNumber,
-        p.project_key as projectKey
+        p.project_key as projectKey,
+        p.name as projectName
         from issue i
         inner join issue_risk ir on ir.issue_id = i.id
         inner join issue_status iss on iss.id = i.issue_status_id
         inner join project p on p.id = i.project_id
         where iss.issue_status_type != 'CLOSE'
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND p.id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -637,7 +638,7 @@
         inner join issue_status iss on iss.id = i.issue_status_id
         where iss.issue_status_type != 'CLOSE'
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -675,7 +676,7 @@
         WHERE 1=1
         AND i.register_id = #{loginUserId}
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -706,7 +707,7 @@
             AND EXISTS (SELECT 1 FROM issue_status iss WHERE iss.id = i.issue_status_id AND iss.issue_status_type != 'CLOSE')
         </if>
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -744,7 +745,7 @@
         </if>
         WHERE 1=1
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -770,7 +771,7 @@
         </if>
         WHERE 1=1
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -807,7 +808,7 @@
         inner join issue_status iss on iss.id = i.issue_status_id
         where 1=1
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -851,6 +852,7 @@
             parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
         select
         d.department_name as departmentName,
+        p.name as projectName,
         (select count(*) from issue i
         inner join issue_department id on id.issue_id = i.id
         inner join issue_status iss on iss.id = i.issue_status_id
@@ -870,7 +872,7 @@
         inner join project p on p.id = pr.project_id
         WHERE
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 p.id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -894,7 +896,7 @@
         'CLOSE') AND
         i.register_id = #{loginUserId}
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -912,7 +914,7 @@
         'CLOSE')
         AND i.register_id = #{loginUserId}
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -959,7 +961,7 @@
         </choose>
         and iss.issue_status_type = 'CLOSE'
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -1006,7 +1008,7 @@
             </otherwise>
         </choose>
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -1046,7 +1048,7 @@
         WHERE w.id = #{workspaceId}
         AND iss.issue_status_type != 'CLOSE'
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -1066,6 +1068,7 @@
         replace(i.complete_date, "-", ".")  AS completeDate,
         i.issue_number AS issueNumber,
         p.project_key AS projectKey,
+        p.name AS projectName,
         iss.name AS issueStatusName,
         CONCAT(p.project_key, '-', i.issue_number) AS issueKey
         FROM issue i
@@ -1077,7 +1080,7 @@
         AND s.id = #{severityId}
         AND iss.issue_status_type != 'CLOSE'
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -1102,7 +1105,7 @@
         AND s.id = #{severityId}
         AND iss.issue_status_type != 'CLOSE'
         <choose>
-            <when test="meAndDownProjectIds.size != 0">
+            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                 AND i.project_id IN
                 <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
diff --git a/src/main/webapp/WEB-INF/i18n/code_ko_KR.properties b/src/main/webapp/WEB-INF/i18n/code_ko_KR.properties
index 70ef9b3..d0355db 100644
--- a/src/main/webapp/WEB-INF/i18n/code_ko_KR.properties
+++ b/src/main/webapp/WEB-INF/i18n/code_ko_KR.properties
@@ -29,6 +29,7 @@
 common.registerDate=\uB4F1\uB85D\uC77C
 common.admin=\uAD00\uB9AC\uC790
 common.teamMember=\uD300\uC6D0
+common.teamDepartment=\uB2F4\uB2F9\uBD80\uC11C
 common.registration=\uB4F1\uB85D
 common.assigned=\uB2F4\uB2F9
 common.progressPercent=\uC9C4\uD589\uB960
diff --git a/src/main/webapp/scripts/app/widget/widgetDashBoard.controller.js b/src/main/webapp/scripts/app/widget/widgetDashBoard.controller.js
index 0bab9d8..d4702ad 100644
--- a/src/main/webapp/scripts/app/widget/widgetDashBoard.controller.js
+++ b/src/main/webapp/scripts/app/widget/widgetDashBoard.controller.js
@@ -51,6 +51,44 @@
                             $scope.vm.riskIssueWidget = result.data.riskIssueWidget;
                             //  �굹�쓽 �씠�뒋 �쁽�솴 �젙蹂대�� ���옣�븳�떎.
                             $scope.vm.myIssueWidget = result.data.myIssueWidget;
+
+                            const members = result.data.memberProgressWidget.members;
+                            var filterMembers = members.filter(function(item, idx){
+                                return members.findIndex(function(item2, idx2){
+                                    return item.departmentName === item2.departmentName
+                                }) == idx;
+                            });
+
+                            var departmentNames = [];
+                            angular.forEach(filterMembers, function (member) {
+                                departmentNames.push(member.departmentName);
+                            });
+                            var completeCounts = [];
+                            var delayCounts = [];
+                            var remainCounts = [];
+
+                            for(var j=0; j<departmentNames.length; j++){ //諛곗뿴 珥덇린媛� �꽑�뼵
+                                completeCounts[j] = 0;
+                                delayCounts[j] = 0;
+                                remainCounts[j] = 0;
+                            }
+
+                            for(var i=0; i<members.length; i++){
+                                for(var j=0; j<departmentNames.length; j++){
+                                    if(members[i].departmentName === departmentNames[j]){
+                                        completeCounts[j] += members[i].completeCount;
+                                        delayCounts[j] += members[i].delayCount;
+                                        remainCounts[j] += members[i].remainCount;
+                                    }
+                                }
+                            }
+                            for(var i=0; i<filterMembers.length; i++){
+                                filterMembers[i].completeCount = completeCounts[i]
+                                filterMembers[i].delayCount = delayCounts[i]
+                                filterMembers[i].remainCount = remainCounts[i]
+                            }
+                            result.data.memberProgressWidget.members = filterMembers;
+
                             //  硫ㅻ쾭蹂� 吏꾪뻾瑜좎쓣 ���옣�븳�떎.
                             $scope.vm.memberProgressWidget = result.data.memberProgressWidget;
                             //  �쟾泥� �씠�뒋 泥섎━ �쁽�솴 �젙蹂대�� ���옣�븳�떎.

--
Gitblit v1.8.0