대시보드 지역별 현장수집 데이터 현황 지표 추가.

master
강석 최 2022-03-08 14:03:39 +09:00
parent 958b407558
commit 741dd2b2bf
12 changed files with 148 additions and 96 deletions

View File

@ -102,12 +102,17 @@ public class AdminController {
searchVO.setSearchStartDate(searchStartDate.minusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
model.addAttribute("monthLoginCount", logService.selectLoginCnt(searchVO));
//일별 지도사용 추이 데이터
//일별 지도사용
UseHistorySearchVO useHistorySearchVO = new UseHistorySearchVO();
useHistorySearchVO.setSearchEndDate(searchVO.getSearchEndDate());
useHistorySearchVO.setSearchStartDate(searchStartDate.minusDays(14).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
List<UseHistoryChartVO> dataList = useHistoryService.selectDayMapUseData(useHistorySearchVO);
model.addAttribute("dayMapUseDataList", dataList);
List<ChartVO> dayMapUseDataList = useHistoryService.selectDayMapUseData(useHistorySearchVO);
model.addAttribute("dayMapUseDataList", dayMapUseDataList);
// 지역별 현장수집 데이터 수
List<ChartVO> areaDataList = fieldDataService.selectAreaDataList();
model.addAttribute("areaDataList", areaDataList);
return "admin/dashBoard";
} catch (Exception e) {
@ -128,18 +133,14 @@ public class AdminController {
@ResponseBody
public JSONArray dayMapUseData(@ModelAttribute("UseRequestSearchVO") UseHistorySearchVO useHistorySearchVO, Model model) throws Exception {
try {
List<UseHistoryChartVO> dataList = useHistoryService.selectDayMapUseData(useHistorySearchVO);
List<ChartVO> dataList = useHistoryService.selectDayMapUseData(useHistorySearchVO);
JSONArray returnAry = new JSONArray();
for(UseHistoryChartVO chartVO: dataList){
for(ChartVO chartVO: dataList){
JSONArray temp = new JSONArray();
temp.put(chartVO.getDateStr());
temp.put(chartVO.getUseCnt());
temp.put(chartVO.getParam01());
temp.put(chartVO.getValue01());
returnAry.put(temp);
// JSONObject temp = new JSONObject();
// temp.put("date", chartVO.getDateStr());
// temp.put("useCnt", chartVO.getUseCnt());
// returnAry.put(temp);
}
System.out.println("결과 배열 수 : "+returnAry.length());
return returnAry;

View File

@ -2,6 +2,7 @@ package com.mca.map.mapper;
import java.util.List;
import com.mca.map.vo.ChartVO;
import com.mca.map.vo.FieldDataSearchVO;
import com.mca.map.vo.FieldDataVO;
@ -15,4 +16,6 @@ public interface FieldDataMapper {
int selectFieldDataCnt(FieldDataSearchVO fieldDataSearchVO);
FieldDataVO selectFieldData(String id);
List<ChartVO> selectAreaDataList();
}

View File

@ -2,7 +2,7 @@ package com.mca.map.mapper;
import java.util.List;
import com.mca.map.vo.UseHistoryChartVO;
import com.mca.map.vo.ChartVO;
import com.mca.map.vo.UseHistorySearchVO;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
@ -14,5 +14,5 @@ public interface UseHistoryMapper {
int selectUseHistoryCnt(UseHistorySearchVO useHistorySearchVO);
List<UseHistoryChartVO> selectDayMapUseData(UseHistorySearchVO useHistorySearchVO);
List<ChartVO> selectDayMapUseData(UseHistorySearchVO useHistorySearchVO);
}

View File

@ -5,6 +5,7 @@ import java.util.List;
import javax.annotation.Resource;
import com.mca.map.vo.ChartVO;
import org.springframework.stereotype.Service;
import com.mca.map.mapper.FieldDataMapper;
@ -31,4 +32,8 @@ public class FieldDataService {
// TODO Auto-generated method stub
return fieldDataMapper.selectFieldData(id);
}
public List<ChartVO> selectAreaDataList() {
return fieldDataMapper.selectAreaDataList();
}
}

View File

@ -4,7 +4,7 @@ import java.util.List;
import javax.annotation.Resource;
import com.mca.map.vo.UseHistoryChartVO;
import com.mca.map.vo.ChartVO;
import org.springframework.stereotype.Service;
import com.mca.map.mapper.UseHistoryMapper;
import com.mca.map.vo.UseHistorySearchVO;
@ -26,7 +26,7 @@ public class UseHistoryService {
return useHistoryMapper.selectUseHistoryList(useHistorySearchVO);
}
public List<UseHistoryChartVO> selectDayMapUseData(UseHistorySearchVO useHistorySearchVO) {
public List<ChartVO> selectDayMapUseData(UseHistorySearchVO useHistorySearchVO) {
return useHistoryMapper.selectDayMapUseData(useHistorySearchVO);
}
}

View File

@ -0,0 +1,41 @@
package com.mca.map.vo;
public class ChartVO {
private String param01;
private String param02;
private Integer value01;
private Integer value02;
public String getParam01() {
return param01;
}
public void setParam01(String param01) {
this.param01 = param01;
}
public String getParam02() {
return param02;
}
public void setParam02(String param02) {
this.param02 = param02;
}
public Integer getValue01() {
return value01;
}
public void setValue01(Integer value01) {
this.value01 = value01;
}
public Integer getValue02() {
return value02;
}
public void setValue02(Integer value02) {
this.value02 = value02;
}
}

View File

@ -1,22 +0,0 @@
package com.mca.map.vo;
public class UseHistoryChartVO {
private String dateStr;
private Integer useCnt;
public String getDateStr() {
return dateStr;
}
public void setDateStr(String dateStr) {
this.dateStr = dateStr;
}
public Integer getUseCnt() {
return useCnt;
}
public void setUseCnt(Integer useCnt) {
this.useCnt = useCnt;
}
}

View File

@ -110,4 +110,11 @@
map_field_data
WHERE id = #{id}
</select>
<select id="selectAreaDataList" resultType="ChartVO">
select substring_index(region, ' ', 1) as param01,
count(*) as value01
from map_field_data
group by param01
</select>
</mapper>

View File

@ -50,12 +50,12 @@
</if>
</select>
<select id="selectDayMapUseData" parameterType="useHistorySearchVO" resultType="UseHistoryChartVO" >
select DATE_FORMAT(log_date ,'%m-%d') as dateStr,
count(*) as useCnt
<select id="selectDayMapUseData" parameterType="useHistorySearchVO" resultType="ChartVO" >
select DATE_FORMAT(log_date ,'%m-%d') as param01,
count(*) as value01
from map_use_history
where log_date >= CONCAT(#{searchStartDate}, ' 00:00:00')
and log_date &lt;= CONCAT(#{searchEndDate}, ' 23:59:59')
group by dateStr
group by param01
</select>
</mapper>

View File

@ -14,7 +14,7 @@
<typeAlias alias="useRequestSearchVO" type="com.mca.map.vo.UseRequestSearchVO" />
<typeAlias alias="useHistoryVO" type="com.mca.map.vo.UseHistoryVO"/>
<typeAlias alias="useHistorySearchVO" type="com.mca.map.vo.UseHistorySearchVO" />
<typeAlias alias="useHistoryChartVO" type="com.mca.map.vo.UseHistoryChartVO" />
<typeAlias alias="ChartVO" type="com.mca.map.vo.ChartVO" />
<typeAlias alias="fieldDataVO" type="com.mca.map.vo.FieldDataVO"/>
<typeAlias alias="fieldDataSearchVO" type="com.mca.map.vo.FieldDataSearchVO" />

View File

@ -8,10 +8,16 @@
<script type="text/javascript" src="<c:out value="/js/admin/dashBoard.js"/>"></script>
<script type="text/javascript">
const dayMapUseDataList = [];
const areaDataList = [];
</script>
<c:forEach var="data" items="${dayMapUseDataList}">
<script type="text/javascript">
dayMapUseDataList.push(['${data.dateStr}',${data.useCnt}])
dayMapUseDataList.push(['${data.param01}',${data.value01}])
</script>
</c:forEach>
<c:forEach var="data" items="${areaDataList}">
<script type="text/javascript">
areaDataList.push(['${data.param01}',${data.value01}])
</script>
</c:forEach>
<div class="container">
@ -52,28 +58,6 @@
</div>
</div>
</div>
<%--<div class="card my-2">
<div class="card-body row">
<div class="col-auto">
<img src="/images/icon/icon_002.png" width="60" height="60" alt="">
</div>
<div class="col-auto">
<p class="mb-0 text-black-50">-</p>
<h3>0</h3>
</div>
</div>
</div>
<div class="card my-2">
<div class="card-body row">
<div class="col-auto">
<img src="/images/icon/icon_002.png" width="60" height="60" alt="">
</div>
<div class="col-auto">
<p class="mb-0 text-black-50">-</p>
<h3>0</h3>
</div>
</div>
</div>--%>
<div class="card my-2">
<div class="card-body row">
<div class="col-auto">
@ -98,20 +82,26 @@
</div>
</div>
<div class="col-lg-9">
<div class="row">
<div class="col-12">
<div class="card my-2">
<div class="card-body">
<p class="mb-0 text-black-50">지도사용 이력 추이</p>
<div id="mapUseFromDayChart"></div>
</div>
</div>
<%--<div class="card my-2">
</div>
<div class="col-5">
<div class="card my-2">
<div class="card-body">
<div class="col-auto">
<p class="mb-0 text-black-50">-</p>
그래프
<p class="mb-0 text-black-50">지역별 현장수집 데이터 현황</p>
<div id="areaDonutChart"></div>
</div>
</div>
</div>
</div>
<div class="col-7">
<div class="card my-2">
<div class="card-body">
<div class="col-auto">
@ -119,7 +109,9 @@
그래프
</div>
</div>
</div>--%>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,16 +1,29 @@
$(function (){
google.charts.load('current', {packages: ['corechart', 'line']});
google.charts.setOnLoadCallback(drawMapUseFromDayChart);
google.charts.load("current", {packages:["corechart"]});
google.charts.setOnLoadCallback(drawAreaDonutChart);
})
function drawMapUseFromDayChart() {
var dataHeader = [['날짜', '사용량']];
var chartData = google.visualization.arrayToDataTable(dataHeader.concat(dayMapUseDataList));
var view = new google.visualization.DataView(chartData);
view.setColumns([0, 1,
{ calc: "stringify",
sourceColumn: 1,
type: "string",
role: "annotation" }]);
var options = {
legend: { position: 'bottom' }
bar: {groupWidth: "95%"},
legend: { position: "bottom" },
};
var chart = new google.visualization.LineChart(document.getElementById('mapUseFromDayChart'));
chart.draw(chartData, options);
var chart = new google.visualization.ColumnChart(document.getElementById("mapUseFromDayChart"));
chart.draw(view, options);
/*$.ajax({
url: "/admin/dayMapUseData",
type: "GET",
@ -35,3 +48,15 @@ function drawMapUseFromDayChart() {
}
});*/
}
function drawAreaDonutChart() {
var dataHeader = [['지역', '수집 건 수']];
var data = google.visualization.arrayToDataTable(dataHeader.concat(areaDataList));
var options = {
pieHole: 0.4,
};
var chart = new google.visualization.PieChart(document.getElementById('areaDonutChart'));
chart.draw(data, options);
}