From 92f9398c74424b513379e19e7035e1f1285791d4 Mon Sep 17 00:00:00 2001 From: TaehunPark Date: Tue, 25 Oct 2022 11:36:32 +0900 Subject: [PATCH] =?UTF-8?q?fix:=EA=B2=AC=EB=AC=B8=ED=86=B5=EA=B3=84=20?= =?UTF-8?q?=EC=A4=91=EA=B0=84=EC=A0=80=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../faisp/fpiMgt/affair/AffairController.java | 66 ++- .../fpiMgt/affair/mapper/AffairMapper.java | 13 +- .../fpiMgt/affair/model/TypeStatistics.java | 13 +- .../fpiMgt/affair/service/AffairService.java | 25 +- .../resources/mybatisMapper/AffairMapper.xml | 471 +++++++++++++----- .../resources/static/css/affair/affair.css | 6 + src/main/resources/static/css/common.css | 18 + src/main/resources/static/js/common.js | 8 + .../igActivities/fpiMgt/affair/statistics.js | 119 ++++- .../fpiMgt/affair/affairStatistics.html | 160 ++---- .../fpiMgt/affair/fieldStatistics.html | 111 +++++ .../fpiMgt/affair/ratingStatistics.html | 71 +++ .../resources/templates/layout/layout.html | 3 + 13 files changed, 791 insertions(+), 293 deletions(-) create mode 100644 src/main/resources/static/css/affair/affair.css create mode 100644 src/main/resources/templates/igActivities/fpiMgt/affair/fieldStatistics.html create mode 100644 src/main/resources/templates/igActivities/fpiMgt/affair/ratingStatistics.html diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/affair/AffairController.java b/src/main/java/com/dbnt/faisp/fpiMgt/affair/AffairController.java index ed6b6157..f61fe493 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/affair/AffairController.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/affair/AffairController.java @@ -234,10 +234,15 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관 @GetMapping("/statistics") public ModelAndView statistics(@AuthenticationPrincipal UserInfo loginUser, TypeStatistics typeStatistics){ ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affair/affairStatistics"); - List type1 = affairService.selectType1List(typeStatistics); - List type2 = affairService.selectType2List(typeStatistics); - List type3 = affairService.selectType3List(typeStatistics); - List type4 = affairService.selectType4List(typeStatistics); + mav.addObject("mgtOrganList", loginUser.getDownOrganCdList()); + mav.addObject("searchParams", typeStatistics); + + return mav; + } + + @PostMapping("/fieldStatistics") + public ModelAndView fieldStatistics(@AuthenticationPrincipal UserInfo loginUser, TypeStatistics typeStatistics){ + ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affair/fieldStatistics"); List totalList = affairService.selectStatusTotal(typeStatistics); List type1List = affairService.selecType1ListCnt(typeStatistics); List type2List = affairService.selecType2ListCnt(typeStatistics); @@ -254,30 +259,47 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관 totalList.add(total); } mav.addObject("totalList", totalList); - type1List = addTotalRow(type1, type1List); - type2List = addTotalRow(type2, type2List); - type3List = addTotalRow(type3, type3List); - type4List = addTotalRow(type4, type4List); - mav.addObject("type1", type1); - mav.addObject("type2", type2); - mav.addObject("type3", type3); - mav.addObject("type4", type4); + type1List = addTotalRow(typeStatistics.getCategory1(), type1List); + type2List = addTotalRow(typeStatistics.getCategory2(), type2List); + type3List = addTotalRow(typeStatistics.getCategory3(), type3List); + type4List = addTotalRow(typeStatistics.getCategory4(), type4List); mav.addObject("type1List", type1List); mav.addObject("type2List", type2List); mav.addObject("type3List", type3List); mav.addObject("type4List", type4List); - mav.addObject("searchParams", typeStatistics); - //메뉴권한 확인 - String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/translator/info").get(0).getAccessAuth(); - mav.addObject("accessAuth", accessAuth); - mav.addObject("mgtOrganList", loginUser.getDownOrganCdList()); + mav.addObject("searchParams", typeStatistics); return mav; } - private List addTotalRow(List type, List typeList){ + @PostMapping("/ratingStatistics") + public ModelAndView ratingStatistics(@AuthenticationPrincipal UserInfo loginUser, TypeStatistics typeStatistics){ + ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affair/ratingStatistics"); + List totalList = affairService.selectRatingStatusTotal(typeStatistics); + List sangboCntList = affairService.selectSangboTotal(typeStatistics); + List arrCntList = affairService.selectArrCntList(typeStatistics); + if(!totalList.isEmpty()) { + TypeStatistics total = new TypeStatistics(); + total.setItemValue("누계"); + total.setWrtOrgan("total"); + total.setCnt(0); + for(TypeStatistics stat: totalList) { + total.setCnt(total.getCnt()+stat.getCnt()); + } + totalList.add(total); + } + sangboCntList = addTotalRow(typeStatistics.getSangbo(), sangboCntList); + arrCntList = addTotalRow(typeStatistics.getRating(), arrCntList); + mav.addObject("totalList", totalList); + mav.addObject("sangboList", sangboCntList); + mav.addObject("arrCntList", arrCntList); + mav.addObject("searchParams", typeStatistics); + return mav; + } + + private List addTotalRow(List type, List typeList){ Map totalMap = new HashMap<>(); - for(TypeStatistics t: type) { - totalMap.put(t.getAffairType(), 0); + for(String t: type) { + totalMap.put(t, 0); } for(TypeStatistics t: typeList) { totalMap.put(t.getAffairType(), totalMap.get(t.getAffairType())+t.getCnt()); @@ -291,9 +313,9 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관 total.setAffairType(affairType); total.setCnt(cnt); typeList.add(total); - } - + } return typeList; } + } diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/affair/mapper/AffairMapper.java b/src/main/java/com/dbnt/faisp/fpiMgt/affair/mapper/AffairMapper.java index a77d7417..40336580 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/affair/mapper/AffairMapper.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/affair/mapper/AffairMapper.java @@ -16,13 +16,6 @@ public interface AffairMapper { String selectHashTags(Integer affairKey); - List selectType1List(TypeStatistics typeStatistics); - - List selectType2List(TypeStatistics typeStatistics); - - List selectType3List(TypeStatistics typeStatistics); - - List selectType4List(TypeStatistics typeStatistics); List selectStatusTotal(TypeStatistics typeStatistics); @@ -33,4 +26,10 @@ public interface AffairMapper { List selecType3ListCnt(TypeStatistics typeStatistics); List selecType4ListCnt(TypeStatistics typeStatistics); + + List selectRatingStatusTotal(TypeStatistics typeStatistics); + + List selectSangboTotal(TypeStatistics typeStatistics); + + List selectArrCntList(TypeStatistics typeStatistics); } diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/affair/model/TypeStatistics.java b/src/main/java/com/dbnt/faisp/fpiMgt/affair/model/TypeStatistics.java index 05f470a5..9366af8f 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/affair/model/TypeStatistics.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/affair/model/TypeStatistics.java @@ -24,6 +24,10 @@ public class TypeStatistics extends BaseModel { @Transient private Integer cnt; @Transient + private String userNm; + @Transient + private List rating; + @Transient private List category1; @Transient private List category2; @@ -33,11 +37,18 @@ public class TypeStatistics extends BaseModel { private List category4; @Transient private List organList; + @Transient + private List sangbo; @Override public String toString() { return "TypeStatistics [wrtOrgan=" + wrtOrgan + ", itemValue=" + itemValue + ", affairType=" + affairType + ", cnt=" - + cnt + ", category1=" + category1 + "]"; + + cnt + ", rating=" + rating + ", category1=" + category1 + ", category2=" + category2 + ", category3=" + + category3 + ", category4=" + category4 + ", organList=" + organList + "]"; } + + + + } diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/affair/service/AffairService.java b/src/main/java/com/dbnt/faisp/fpiMgt/affair/service/AffairService.java index f9a095bf..28a68642 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/affair/service/AffairService.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/affair/service/AffairService.java @@ -157,22 +157,6 @@ public class AffairService extends BaseService { // 견문보고 return affairFileRepository.findById(new AffairFile.AffairFileId(parentKey, fileSeq)).orElse(null); } - public List selectType1List(TypeStatistics typeStatistics) { - return affairMapper.selectType1List(typeStatistics); - } - - public List selectType2List(TypeStatistics typeStatistics) { - return affairMapper.selectType2List(typeStatistics); - } - - public List selectType3List(TypeStatistics typeStatistics) { - return affairMapper.selectType3List(typeStatistics); - } - - public List selectType4List(TypeStatistics typeStatistics) { - return affairMapper.selectType4List(typeStatistics); - } - public List selectStatusTotal(TypeStatistics typeStatistics) { return affairMapper.selectStatusTotal(typeStatistics); } @@ -192,4 +176,13 @@ public class AffairService extends BaseService { // 견문보고 public List selecType4ListCnt(TypeStatistics typeStatistics) { return affairMapper.selecType4ListCnt(typeStatistics); } + public List selectRatingStatusTotal(TypeStatistics typeStatistics) { + return affairMapper.selectRatingStatusTotal(typeStatistics); + } + public List selectSangboTotal(TypeStatistics typeStatistics) { + return affairMapper.selectSangboTotal(typeStatistics); + } + public List selectArrCntList(TypeStatistics typeStatistics) { + return affairMapper.selectArrCntList(typeStatistics); + } } diff --git a/src/main/resources/mybatisMapper/AffairMapper.xml b/src/main/resources/mybatisMapper/AffairMapper.xml index d4ae9da5..e19b0660 100644 --- a/src/main/resources/mybatisMapper/AffairMapper.xml +++ b/src/main/resources/mybatisMapper/AffairMapper.xml @@ -118,81 +118,96 @@ group by a.affair_key) aa - + + + and wrt_user_nm like '%'||#{userNm}||'%' + + + and wrt_dt >= #{startDate}::date + + + and wrt_dt <= #{endDate}::date+1 + + + and affair_key in ( + select affair_key + from affair_rating aa + inner join organ_config ab + on aa.rating_organ = ab.organ_cd + + + and aa.affair_rate in + + #{item} + + + + and aa.organ_up = 'T' + and ab.organ_type in + + #{item} + + + + ) + + - + + + + and item_cd in + + #{item} + + + + and item_cd not in (select item_cd from code_mgt where category_cd = 'DC01') + + + - + + + + and item_cd in + + #{item} + + + + and item_cd not in (select item_cd from code_mgt where category_cd = 'DC02') + + + - + + + + and item_cd in + + #{item} + + + + and item_cd not in (select item_cd from code_mgt where category_cd = 'DC03') + + + + + + + + and item_cd in + + #{item} + + + + and item_cd not in (select item_cd from code_mgt where category_cd = 'DC04') + + + + + + + + and ar.organ_up = 'T' + and oc.organ_type in + + #{item} + + + + and oc.organ_type not in ('OGC002','OGC003') + + + + + and affair_type1 in + + #{item} + + + + and affair_type1 not in (select item_cd from code_mgt where category_cd = 'DC01') + + + + + and affair_type2 in + + #{item} + + + + and affair_type2 not in (select item_cd from code_mgt where category_cd = 'DC02') + + + + + and affair_type3 in + + #{item} + + + + and affair_type3 not in (select item_cd from code_mgt where category_cd = 'DC03') + + + + + and affair_type4 in + + #{item} + + + + and affair_type4 not in (select item_cd from code_mgt where category_cd = 'DC04') + + + + + and affair_rate in + + #{item} + + + + and affair_rate not in (select item_cd from code_mgt where category_cd = 'AAR') + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/css/affair/affair.css b/src/main/resources/static/css/affair/affair.css new file mode 100644 index 00000000..93715b80 --- /dev/null +++ b/src/main/resources/static/css/affair/affair.css @@ -0,0 +1,6 @@ +/*로그인 폼*/ +.affair-scroll{ + max-height: 200px; + overflow-y: auto; +} + diff --git a/src/main/resources/static/css/common.css b/src/main/resources/static/css/common.css index fd8f5e86..df682d4c 100644 --- a/src/main/resources/static/css/common.css +++ b/src/main/resources/static/css/common.css @@ -16,6 +16,24 @@ background-color: #ffffff; } +#fadeSearchDiv{ + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + background-color: #00000050; + z-index: 2090; +} + +#fadeSearchDiv > div{ + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + background-color: #ffffff; +} + .activeTr{ --bs-bg-opacity: 0.25; background-color: rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important; diff --git a/src/main/resources/static/js/common.js b/src/main/resources/static/js/common.js index 2fc61d56..6154c7c3 100644 --- a/src/main/resources/static/js/common.js +++ b/src/main/resources/static/js/common.js @@ -8,6 +8,14 @@ function contentFade(action){ } } +function searchFade(action){ + if(action === "in"){ + $("#fadeSearchDiv").show() + }else{ + $("#fadeSearchDiv").hide() + } +} + $(document).on('click', '.allChk', function (){ $(this).parents('table').find('[type="checkbox"]').prop("checked", this.checked); }) diff --git a/src/main/resources/static/js/igActivities/fpiMgt/affair/statistics.js b/src/main/resources/static/js/igActivities/fpiMgt/affair/statistics.js index be5b3576..ac9da5b0 100644 --- a/src/main/resources/static/js/igActivities/fpiMgt/affair/statistics.js +++ b/src/main/resources/static/js/igActivities/fpiMgt/affair/statistics.js @@ -1,3 +1,9 @@ +$(function(){ + $("#dateSelectorDiv").datepicker({ + format: "yyyy-mm-dd", + language: "ko" + }); +}) $(document).on('click', '#downExcel', function (){ exportExcel(); @@ -49,4 +55,115 @@ function getToday(){ var day = ("0" + date.getDate()).slice(-2); return year + "-" + month + "-" + day; -} \ No newline at end of file +} + +$(document).on('click', '#fieldSearch', function (){ + goFieldStatistics(); +}) + +$(document).on('click', '#fieldTab', function (){ + goFieldStatistics(); +}) + +function goFieldStatistics(){ + searchFade("in"); + const formData = new FormData($("#searchFm")[0]); + $.ajax({ + url: '/affair/fieldStatistics', + data: formData, + type: 'POST', + dataType:"html", + contentType: false, + processData: false, + success: function(html){ + $("#statisticsBody").empty().append(html) + $("#statisticsBody").show(); + $(".statisticsMenu").hide(); + searchFade("out"); + }, + error:function(){ + searchFade("out"); + + } + }); +} + +$(document).on('click', '#ratingSearch', function (){ + goRatingStatistics(); +}) +$(document).on('click', '#ratingTab', function (){ + goRatingStatistics(); +}) + +function goRatingStatistics(){ + searchFade("in"); + const formData = new FormData($("#searchFm")[0]); + $.ajax({ + url: '/affair/ratingStatistics', + data: formData, + type: 'POST', + dataType:"html", + contentType: false, + processData: false, + success: function(html){ + $("#statisticsBody").empty().append(html) + $("#statisticsBody").show(); + $(".statisticsMenu").hide(); + searchFade("out"); + }, + error:function(){ + searchFade("out"); + } + }); +} + +$(document).on('click', '#showMenu', function (){ + $(".statisticsMenu").show(); +}) + +$(document).ready(function() { + $("#organAll").click(function() { + if($("#organAll").is(":checked")){ + $("input[name=organList]").prop("checked", true); + } else{ + $("input[name=organList]").prop("checked", false); + } + }); + $("#ratingAll").click(function() { + if($("#ratingAll").is(":checked")){ + $("input[name=rating]").prop("checked", true); + } else{ + $("input[name=rating]").prop("checked", false); + } + }); + $("#category1All").click(function() { + if($("#category1All").is(":checked")){ + $("input[name=category1]").prop("checked", true); + } else{ + $("input[name=category1]").prop("checked", false); + } + }); + $("#category2All").click(function() { + if($("#category2All").is(":checked")){ + $("input[name=category2]").prop("checked", true); + } else{ + $("input[name=category2]").prop("checked", false); + } + }); + $("#category3All").click(function() { + if($("#category3All").is(":checked")){ + $("input[name=category3]").prop("checked", true); + } else{ + $("input[name=category3]").prop("checked", false); + } + }); + $("#category4All").click(function() { + if($("#category4All").is(":checked")){ + $("input[name=category4]").prop("checked", true); + } else{ + $("input[name=category4]").prop("checked", false); + } + }); + +}); + diff --git a/src/main/resources/templates/igActivities/fpiMgt/affair/affairStatistics.html b/src/main/resources/templates/igActivities/fpiMgt/affair/affairStatistics.html index 18d44b78..283f2efb 100644 --- a/src/main/resources/templates/igActivities/fpiMgt/affair/affairStatistics.html +++ b/src/main/resources/templates/igActivities/fpiMgt/affair/affairStatistics.html @@ -5,6 +5,9 @@ + + +

견문통계

@@ -14,10 +17,11 @@
-
-
+ + +
@@ -25,146 +29,82 @@
-
+
+ +
+
+
+
+

소속

  • - - - + +
-
-
+
+

평가

+
    +
  • + + +
  • +
+
+
+

분야1

  • - - +
-
+
+

분야2

  • - - - + +
-
+
+

분야3

  • - - - + + +
  • +
+
+
+

분야4

+
    +
  • + +
-
    -
  • - - - -
  • -
+ 경찰서상보
+ 지방청상보
-
- + +
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
구분누계분류1분류2분류3분류4
-
-
+
diff --git a/src/main/resources/templates/igActivities/fpiMgt/affair/fieldStatistics.html b/src/main/resources/templates/igActivities/fpiMgt/affair/fieldStatistics.html new file mode 100644 index 00000000..07bc76d8 --- /dev/null +++ b/src/main/resources/templates/igActivities/fpiMgt/affair/fieldStatistics.html @@ -0,0 +1,111 @@ + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
구분누계분류1분류2분류3분류4
+
+
\ No newline at end of file diff --git a/src/main/resources/templates/igActivities/fpiMgt/affair/ratingStatistics.html b/src/main/resources/templates/igActivities/fpiMgt/affair/ratingStatistics.html new file mode 100644 index 00000000..1a99645a --- /dev/null +++ b/src/main/resources/templates/igActivities/fpiMgt/affair/ratingStatistics.html @@ -0,0 +1,71 @@ + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
구분누계상보평과결과별
지방청경찰서
+
+
\ No newline at end of file diff --git a/src/main/resources/templates/layout/layout.html b/src/main/resources/templates/layout/layout.html index 7f190a3d..bd0a55e8 100644 --- a/src/main/resources/templates/layout/layout.html +++ b/src/main/resources/templates/layout/layout.html @@ -63,6 +63,9 @@ + \ No newline at end of file