Files
wace_plm/WebContent/WEB-INF/view/project/dashBoard.jsp
chpark da06c4684c Initial commit: WACE PLM with database initialization features
- Add Docker Compose configurations for dev, prod, and standalone environments
- Add database initialization scripts (init-db.sh, init-db-docker.sh)
- Add enhanced start-docker-linux.sh with DB init support
- Add comprehensive database initialization guide
- Support for automatic dbexport.pgsql import on first run
- Include safety checks for production environment
2025-08-29 15:46:08 +09:00

842 lines
27 KiB
Plaintext

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.pms.common.utils.*"%>
<%@ page import="java.util.*" %>
<%@include file= "/init.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><%=Constants.SYSTEM_NAME%></title>
<script>
$(document).ready(function(){
//차종별 예상매출액 상세보기 팝업
$(".blue_btn").click(function(){
window.open("/dashboard/expectSalesAccountPopUp.do", "", "width=995, height=680");
});
//수주활동 Chart
fn_setGrid1Data();
fn_setGrid2Data();
//차종별 Task 진행현황 pie chart구성
$("input[type=radio]").click(function(){
var carObjId = $(this).val();
var carCode = $(this).attr("data-CAR_CODE");
fn_getTaskStatusInfo(carObjId);
$("#title").text(carCode+" Task 진행현황");
});
$("input[type=radio]").eq(0).trigger("click");
//chart2
//사전원가 시스템 연동 예상매출액 Chart
fn_getCostSystemEstimatedSalesChart();
//chart4
var chart4List = ${empty chart4?'[]':chart4};
if(chart4List != null){
setChart4("chart4", chart4List);
}else{
var noData = "<div id=\"chart4MessageArea\" style=\"width:100%;height:50%;padding-top:10%;text-align:center;\">조회된 정보가 없습니다.</div>";
$("#chart4").html(noData);
}
//문제점 팝업
$(".btnProblemList").click(function(){
var oemObjId = $(this).attr("data-OEM_OBJID");
var carObjId = $(this).attr("data-CAR_OBJID");
var status = $(this).attr("data-STATUS");
//Swal.fire("carObjId : "+carObjId+", status : "+status);
var params = "?search_oemObjId="+oemObjId+"&search_carObjId="+carObjId+"&search_status="+status;
window.open("/dashboard/problemListPopUp.do"+params, "", "width=1700, height=585");
});
$(".btnOpenTask").click(function(){
var oemObjId = $(this).attr("data-OEM_OBJID");
var carObjId = $(this).attr("data-CAR_OBJID");
var taskType = $(this).attr("data-TASK_TYPE");
if(taskType != null && taskType != ""){
var params = "?search_oem="+oemObjId+"&search_carType="+carObjId+"&search_status_type="+taskType;
window.open("/project/taskList.do"+params, "taskPopup", "width=1520, height=800");
}else{
var params = "?search_oem="+oemObjId+"&search_carType="+carObjId;
window.open("/project/taskList.do"+params, "taskPopup", "width=1520, height=800");
}
});
//수주활동 연도별 PopUp
$(".btnProjectDetail").click(function(){
var year = fnc_checkNull($(this).attr("data-YEAR"));
var region = fnc_checkNull($(this).attr("data-REGION"));
var bidding = fnc_checkNull($(this).attr("data-BIDDING"));
var status = fnc_checkNull($(this).attr("data-STATUS"));
var params = "?search_submit_yearly="+year+"&search_region="+region+"&search_bidding="+bidding+"&search_status="+status;
window.open("/projectConcept/getProjectConceptProductList.do"+params,"projectFormPopUp","width=1700, height=800");
});
//수주활동 제품별 PopUp
$(".btnProjectProductDetail").click(function(){
//var product = fnc_checkNull($(this).attr("data-PRODUCT"));
var prodGroupObjId = fnc_checkNull($(this).attr("data-PRODUCT_GROUP"));
var submitFromDate = fnc_checkNull($("#search_fromDate").val());
var submitToDate = fnc_checkNull($("#search_toDate").val());
var bidding = fnc_checkNull($(this).attr("data-BIDDING"));
var params = "?search_productGroup="+prodGroupObjId+"&search_fromDate="+submitFromDate+"&search_toDate="+submitToDate+"&search_bidding="+bidding;
//+"&search_productType="+product
window.open("/projectConcept/getProjectConceptProductList.do"+params,"projectFormPopUp","width=1700, height=800");
});
});
</script>
<script>
//수주활동 PopUp
function fn_openProjectList(obj){
var seriesName = obj.series.name;
var year = fnc_checkNullDefaultValue(obj.category);
var bidding = "";
var region = "";
var status = "";
if(seriesName == '수주(국내)'){
region = "D";
bidding = "Y";
status = "complete";
} else if(seriesName == "수주(해외)"){
region = "F";
bidding = "Y";
status = "complete";
} else if(seriesName == "비수주"){
bidding = "N";
status="complete";
} else{
status="create";
}
var params = "?search_submit_yearly="+year+"&search_region="+region+"&search_bidding="+bidding+"&search_status="+status;
window.open("/projectConcept/getProjectConceptProductList.do"+params,"projectFormPopUp","width=1700, height=800");
}
//Task List Popup을 호출한다.
function fn_openTaskList(obj){
var oemObjId = obj.options.oemObjId;
var carObjId = obj.options.carObjId;
var taskType = obj.options.taskType;
if(taskType != null && taskType != ""){
var params = "?search_oem="+oemObjId+"&search_carType="+carObjId+"&search_status_type="+taskType;
}else{
var params = "?search_oem="+oemObjId+"&search_carType="+carObjId;
}
window.open("/project/taskList.do"+params, "", "width=1700, height=800");
}
//수주활동 Grid1, Chart1
function fn_setGrid1Data(){
$.ajax({
url:"/dashboard/projectConceptStatus_chart1.do",
type:"POST",
data:{},
dataType:"json",
async:false,
success:function(data){
//set grid
$("#grid1").children().remove();
var appendHtml = "";
$.each(data, function(i){
var submit_year_title = fnc_checkNullDefaultValue(data[i].ESTIMATE_SUBMIT_YEAR, 'ETC');
var submit_year = fnc_checkNullDefaultValue(data[i].ESTIMATE_SUBMIT_YEAR);
appendHtml += "<tr>";
appendHtml += "<td>"+submit_year_title+"</td>";
appendHtml += "<td><a href='#' class='btnProjectDetail' data-YEAR='"+submit_year+"'>"+data[i].ALL_CNT+"</a></td>";
appendHtml += "<td><a href='#' class='btnProjectDetail' data-YEAR='"+submit_year+"' data-BIDDING = 'Y' data-REGION='D'>"+data[i].D_OK_CNT+"</a></td>";
appendHtml += "<td><a href='#' class='btnProjectDetail' data-YEAR='"+submit_year+"' data-BIDDING = 'Y' data-REGION='F'>"+data[i].F_OK_CNT+"</a></td>";
appendHtml += "<td><a href='#' class='btnProjectDetail' data-YEAR='"+submit_year+"' data-STATUS='create'>"+data[i].ONGOING_CNT+"</a></td>";
appendHtml += "<td><a href='#' class='btnProjectDetail' data-YEAR='"+submit_year+"' data-BIDDING = 'N' data-STATUS='complete'>"+data[i].NG_CNT+"</a></td>";
appendHtml += "</tr>";
});
$("#grid1").append(appendHtml);
//set chart
setChart1("chart1", data);
},
error: function(jqxhr, status, error){
}
});
}
//수주활동 Grid2
function fn_setGrid2Data(){
$.ajax({
url:"/dashboard/projectConceptStatus_chart2.do",
type:"POST",
data:$("#form1").serialize(),
dataType:"json",
async:false,
success:function(data){
//set grid
$("#grid2").children().remove();
var appendHtml = "";
var okCnt = 0;
$.each(data, function(i){
var prodGroupObjId = fnc_checkNullDefaultValue(data[i].PROD_GROUP_OBJID);
appendHtml += "<tr>";
appendHtml += "<td>"+data[i].PROD_GROUP_NAME+"</td>";
appendHtml += "<td><a href='#' class='btnProjectProductDetail' data-PRODUCT_GROUP='"+prodGroupObjId+"' data-BIDDING='Y'>"+data[i].OK_CNT+"</a></td>";
appendHtml += "</tr>";
okCnt += Number(fnc_checkNullDefaultValue(data[i].OK_CNT, 0));
});
$("#grid2").append(appendHtml);
},
error: function(jqxhr, status, error){
}
});
}
//수주활동 Chart1
function setChart1(divId, resultList){
var name = [];
var allCnt = [];
var dOkCnt = [];
var fOkCnt = [];
var ongoingCnt = [];
var ngCnt = [];
$.each(resultList , function(i){
name[i] = fnc_checkNullDefaultValue(resultList[i].ESTIMATE_SUBMIT_YEAR, 'ETC');
allCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].ALL_CNT, 0));
dOkCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].D_OK_CNT, 0));
fOkCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].F_OK_CNT, 0));
ongoingCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].ONGOING_CNT, 0));
ngCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].NG_CNT, 0));
//Swal.fire("name["+i+"] : "+name[i]+", cnt["+i+"] : "+cnt[i]);
});
//Swal.fire("name : "+name+", allCnt : "+allCnt+", completeCnt : "+completeCnt);
$('#'+divId).highcharts({
colors: ['#558ed5', '#9bbb59', '#b6a6ca','#ff6d6d'],
chart: {
zoomType: 'xy'
, type : 'column'
},
title: {
text: ''
},
xAxis: [{
categories: name
}],
yAxis: [{ // Primary yAxis
min : 0
, labels: {
format: '{value}'
}
, stackLabels: {
enabled : true
}
, title : ''
}],
tooltip: {
headerFormat: '<b>{point.x}</b><br/>',
pointFormat: '{series.name}: {point.y}<br/>Total: {point.stackTotal}',
useHTML: true
},
legend: {
align: 'right',
verticalAlign: 'top',
floating: true,
y:-17
},
series: [
/* {
name: '전체'
, data: allCnt
}, */
{
name: '수주(국내)'
, data : dOkCnt
}, {
name: '수주(해외)'
, data : fOkCnt
}, {
name: '진행중'
, data : ongoingCnt
}, {
name: '비수주'
, data : ngCnt
}
],
plotOptions:{
column : {
stacking : 'normal'
, dataLabels : {
enabled : true
}
}
, series:{
cursor:'pointer',
point:{
events:{
click:function(){
console.log(this);
fn_openProjectList(this);
}
}
}
}
}
});
}
//task 진행현황 (pie chart3)
function fn_getTaskStatusInfo(carObjId){
$.ajax({
url:"/dashboard/getTaskStatusList.do",
type:"POST",
data:{"carObjId":carObjId},
dataType:"json",
success:function(data){
//set chart
setCarTaskStatusChart("chart3", data);
},
error: function(jqxhr, status, error){
}
});
}
//task 진행현황(pie chart3)
function setCarTaskStatusChart(divId, resultList){
var name = [];
var allCnt = [];
var completeCnt = [];
var planCnt = [];
var ongoingCnt = [];
var delayCnt = [];
var oemObjId = [];
var carObjId = [];
$.each(resultList , function(i){
name[i] = resultList[i].CAR_CODE;
oemObjId[i] = resultList[i].OEM_OBJID;
carObjId[i] = resultList[i].CAR_OBJID;
allCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].ALL_CNT, 0));
completeCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].COMPLETE_CNT, 0));
planCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].PLAN_CNT, 0));
ongoingCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].ONGOING_CNT, 0));
delayCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].DELAY_CNT, 0));
//Swal.fire("name["+i+"] : "+name[i]+", cnt["+i+"] : "+cnt[i]);
});
//Swal.fire("name : "+name+", allCnt : "+allCnt+", completeCnt : "+completeCnt);
$('#'+divId).highcharts({
colors: ['#558ed5', '#b6a6ca', '#90ff7d', '#ff6d6d'] ,
chart: {
type : 'pie'
},
title: {
text: ''
},
plotOptions:{
series: {
dataLabels: {
enabled: true,
format: '{point.name}: {point.y}건'
},
cursor:'pointer',
point:{
events:{
click:function(){
console.log(this);
fn_openTaskList(this);
}
}
}
}
},
"series": [
{
name: '건수'
, data : [
{
'name' : '완료',
'y' : completeCnt[0]
, oemObjId : oemObjId
, carObjId : carObjId
, taskType : 'complete'
},
{
'name' : '계획',
'y' : planCnt[0]
, oemObjId : oemObjId
, carObjId : carObjId
, taskType : 'plan'
},
{
'name' : '진행',
'y' : ongoingCnt[0]
, oemObjId : oemObjId
, carObjId : carObjId
, taskType : 'ongoing'
},
{
'name' : '지연',
'y' : delayCnt[0]
, oemObjId : oemObjId
, carObjId : carObjId
, taskType : 'delay'
}
]
}
]
});
}
//사전원가 시스템 예상매출액 Chart (pie chart3)
function fn_getCostSystemEstimatedSalesChart(){
$.ajax({
url:"/dashboard/getCostSystemEstimatedSalesChart.do",
type:"POST",
dataType:"json",
success:function(data){
//set chart
setChart2("chart2", data);
},
error: function(jqxhr, status, error){
}
});
}
//char2
function setChart2(divId, resultList){
var carNames = [];
var estimateSales = [];
var biddingBaseSales = [];
var currentSales = [];
$.each(resultList , function(i){
carNames[i] = resultList[i].CD3;
estimateSales[i] = Number(fnc_checkNullDefaultValue(resultList[i].R01, 0));
biddingBaseSales[i] = Number(fnc_checkNullDefaultValue(resultList[i].R02, 0));
currentSales[i] = Number(fnc_checkNullDefaultValue(resultList[i].R04, 0));
});
$('#'+divId).highcharts({
colors: ['#558ed5','#90ff7d'],
chart: {
zoomType: 'xy'
},
title: {
text: ''
},
subtitle: {
text: ''
},
xAxis: [{
categories: carNames,
crosshair: true
}],
yAxis: [{ // Primary yAxis
min:0,
max:100,
labels: {
format: '{value}%',
style: {
color: Highcharts.getOptions().colors[2]
}
},
title: {
text: '',
style: {
color: Highcharts.getOptions().colors[2]
}
},
opposite: true
}, { // Secondary yAxis
gridLineWidth: 0,
title: {
text: '예상매출액(백만원)',
style: {
color: Highcharts.getOptions().colors[0]
}
},
labels: {
format: '{value}백만원',
style: {
color: Highcharts.getOptions().colors[0]
}
}
}, { // Tertiary yAxis
min:0,
max:100,
gridLineWidth: 0,
title: {
text: '예상수익률',
style: {
color: Highcharts.getOptions().colors[1]
}
},
labels: {
format: '{value}%',
style: {
color: Highcharts.getOptions().colors[1]
}
},
opposite: true
}],
tooltip: {
shared: true
},
legend: {
/*
layout: 'vertical',
align: 'right',
x: -80,
verticalAlign: 'bottom',
y: 55,
floating: true,
backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'
*/
},
series: [{
name: '예상매출액(백만원)',
type: 'column',
yAxis: 1,
data: estimateSales,
tooltip: {
valueSuffix: '백만원'
}
}, {
name: '입찰단계 예상 수익률',
type: 'spline',
yAxis: 2,
data: biddingBaseSales,
color: '#00cc99',
marker: {
enabled: false
},
dashStyle: 'shortdot',
tooltip: {
valueSuffix: '%'
}
}, {
name: '현단계 예상 수익률',
type: 'spline',
colors: ['#ff6d6d'],
data: currentSales,
color: '#fe8888',
tooltip: {
valueSuffix: '%'
}
}]
});
}
//chart4
function setChart4(divId, resultList){
var name = [];
var allCnt = [];
var completeCnt = [];
var ongoingCnt = [];
var oemObjId = [];
var carObjId = [];
$.each(resultList , function(i){
name[i] = resultList[i].CAR_CODE;
allCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].ALL_CNT, 0));
completeCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].COMPLETE_CNT, 0));
ongoingCnt[i] = Number(fnc_checkNullDefaultValue(resultList[i].ONGOING_CNT, 0));
carObjId[i] = Number(fnc_checkNullDefaultValue(resultList[i].CAR_OBJID, 0));
oemObjId[i] = Number(fnc_checkNullDefaultValue(resultList[i].OEM_OBJID, 0));
//Swal.fire("name["+i+"] : "+name[i]+", allCnt["+i+"] : "+allCnt[i]+", completeCnt["+i+"] : "+completeCnt[i]+", ongoingCnt["+i+"] : "+ongoingCnt[i]);
});
//Swal.fire("name : "+name+", allCnt : "+allCnt+", completeCnt : "+completeCnt);
$('#'+divId).highcharts({
colors: ['#558ed5','#90ff7d'],
chart: {
zoomType: 'xy'
, type : 'column'
},
title: {
text: ''
},
xAxis: [{
categories: name
}],
yAxis: [{ // Primary yAxis
min : 0
, labels: {
format: '{value}'
}
, stackLabels: {
enabled : true
}
, title : ''
}],
tooltip: {
headerFormat: '<b>{point.x}</b><br/>',
pointFormat: '{series.name}: {point.y}<br/>Total: {point.stackTotal}',
useHTML: true
},
legend: {
align: 'right',
verticalAlign: 'top',
floating: true,
y:15
},
series: [
/* {
name: '전체'
, data: allCnt
}, */
{
name: '완료'
, data : completeCnt
, carObjId:carObjId
, oemObjId:oemObjId
}, {
name: '미결'
, data : ongoingCnt
, carObjId:carObjId
, oemObjId:oemObjId
}
],
plotOptions:{
column : {
stacking : 'normal'
, dataLabels : {
enabled : true
}
}
, series:{
cursor:'pointer',
point:{
events:{
click:function(){
console.log(this);
fn_openProblemList_byCar(this);
}
}
}
}
}
});
}
</script>
</head>
<body>
<form name="form1" action="" method="post">
<div style="min-width:1500px; height:100%; position:relative;">
<div style="position:absolute; top:0; left:51%; width:1px; height:100%; background:#eee; z-index:996;"></div>
<div style="position:absolute; top:530px; left:0%; width:100%; height:1px; background:#eee; z-index:99;"></div>
<div class="dashboard_img" style="position:absolute; top:0; left:0; z-index:999;"></div>
<div class="contents_page_basic_margin" style="padding-top:130px;">
<div class="dashboard_div" style="width:50%;">
<div class="title_div">수주활동 현황</div>
<div id="chart1" style="width:90%; height:200px;"></div>
<div class="plm_table_wrap" style="width:48%; float:left; border-bottom: 1px solid #eee;">
<div style="overflow-y:scroll;">
<table class="plm_table dashboard_table" style="width:100%;">
<thead>
<tr class="plm_thead">
<td rowspan="2" title="년도">년도</td>
<td rowspan="2" title="입찰건수">입찰건수</td>
<td colspan="2" title="수주">수주</td>
<td rowspan="2" title="진행중">진행중</td>
<td rowspan="2" title="비수주">비수주</td>
</tr>
<tr class="plm_sub_thead">
<td>국내</td>
<td>해외</td>
</tr>
</thead>
</table>
</div>
<div class="plm_scroll_table" style="width:100%; height:100px;">
<table class="plm_table dashboard_table">
<tbody id="grid1">
</tbody>
</table>
</div>
</div>
<div style="width:39%; float:left; margin-left:10px;">
<div class="plm_table_wrap" style="border-bottom: 1px solid #eee;">
<div style="overflow-y:scroll;">
<table class="plm_table dashboard_table" style="width:100%;">
<thead>
<tr class="plm_thead">
<td title="제품">제품</td>
<td title="수주확정 건수">수주확정 건수</td>
</tr>
</thead>
</table>
</div>
<div class="plm_scroll_table" style="width:100%; height:120px;">
<table class="plm_table dashboard_table">
<tbody id="grid2">
</tbody>
</table>
</div>
</div>
</div>
</div>
<div style="width:48%; height:373px; float:right; margin:20px 0 0 10px;">
<div class="title_div" style="position:relative;">차종별 예상매출액</div>
<!-- <input type="button" value="상세보기" class="blue_btn" onclick="" style="position:absolute; top:-5px; left:135px;"> -->
<div id="chart2" style="width:90%; height:300px; margin:50px 0 0 0;"></div>
</div>
<div style="width:50%; float:left;">
<div class="dashboard_div" style="width:48%; float:left;">
<div class="title_div">Task진행현황</div>
<div class="plm_table_wrap" style="border-bottom: 1px solid #eee;">
<div style="overflow-y:scroll;">
<table class="plm_table dashboard_table" style="width:100%;">
<colgroup>
<col width="10%">
<col width="15%">
<col width="*">
<col width="*">
<col width="*">
<col width="*">
<col width="*">
<col width="*">
</colgroup>
<thead>
<tr class="plm_thead">
<td rowspan="2" title="선택">선택</td>
<td rowspan="2" title="차종">차종</td>
<td colspan="6" title="Task진행현황">Task진행현황</td>
</tr>
<tr class="plm_sub_thead">
<td title="진행율(%)">진행율(%)</td>
<td title="전체">전체</td>
<td title="완료">완료</td>
<td title="계획">계획</td>
<td title="진행">진행</td>
<td title="지연">지연</td>
</tr>
</thead>
</table>
</div>
<div class="plm_scroll_table" style="width:100%; height:219px;">
<table class="plm_table gate_status_table">
<colgroup>
<col width="10%">
<col width="15%">
<col width="*">
<col width="*">
<col width="*">
<col width="*">
<col width="*">
<col width="*">
</colgroup>
<tbody>
<c:choose>
<c:when test="${!empty grid3}">
<c:forEach var="info" items="${grid3}" varStatus="status">
<tr>
<td><input type="radio" name="car" value="${info.CAR_OBJID}" data-CAR_CODE="${info.CAR_CODE}"></td>
<td title="${info.CAR_CODE}">${info.CAR_CODE}</td>
<td>${info.TASK_RATIO}</td>
<td><a href="#" class="btnOpenTask" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" >${info.TASK_ALL_CNT}</a></td>
<td><a href="#" class="btnOpenTask" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-TASK_TYPE="complete">${info.TASK_COMPLETE_CNT}</a></td>
<td><a href="#" class="btnOpenTask" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-TASK_TYPE="plan">${info.TASK_PLAN_CNT}</a></td>
<td><a href="#" class="btnOpenTask" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-TASK_TYPE="ongoing">${info.TASK_ONGOING_CNT}</a></td>
<td><a href="#" class="btnOpenTask" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-TASK_TYPE="delay">${info.TASK_DELAY_CNT}</a></td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="8" align="center">조회된 정보가 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
</div>
<div style="width:40%; float:left; margin:40px 0;">
<div class="plm_thead" style="width:100%; height:26px; text-align:center; line-height:26px; font-size:13px;" id="title">Task 진행현황</div>
<div class="dashboard_div" id="chart3" style="width:100%; height:250px; float:left; margin: 0 auto;"></div>
</div>
</div>
<div style="width:48%; float:right;">
<div class="dashboard_div" style="width:43%;">
<div class="title_div">문제점 현황</div>
<div class="plm_table_wrap" style="border-bottom: 1px solid #eee;">
<div style="overflow-y:scroll;">
<table class="plm_table dashboard_table" style="width:100%;">
<colgroup>
<col width="*">
<col width="*">
<col width="*">
<col width="*">
<col width="*">
</colgroup>
<thead>
<tr class="plm_thead">
<td rowspan="2" title="차종">차종</td>
<td colspan="4" title="문제점 현황">문제점 현황</td>
</tr>
<tr class="plm_sub_thead">
<td title="조치율(%)">조치율(%)</td>
<td title="발생">발생</td>
<td title="조치">조치</td>
<td title="미결">미결</td>
</tr>
</thead>
</table>
</div>
<div class="plm_scroll_table" style="width:100%; height:219px;">
<table class="plm_table gate_status_table">
<colgroup>
<col width="*">
<col width="*">
<col width="*">
<col width="*">
<col width="*">
</colgroup>
<tbody>
<c:choose>
<c:when test="${!empty grid4}">
<c:forEach var="info" items="${grid4}" varStatus="status">
<tr>
<td>${info.CAR_CODE}</td>
<td>${info.COMPLETE_RATIO}</td>
<td><a href="#" class="btnProblemList" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-STATUS="">${info.ALL_CNT}</a></td>
<td><a href="#" class="btnProblemList" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-STATUS="complete">${info.COMPLETE_CNT}</a></td>
<td><a href="#" class="btnProblemList" data-OEM_OBJID="${info.OEM_OBJID}" data-CAR_OBJID="${info.CAR_OBJID}" data-STATUS="create">${info.ONGOING_CNT}</a></td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="5" align="center">조회된 정보가 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
</div>
<div style="width:50%; float:left; margin:40px 0;">
<div class="plm_thead" style="width:100%; height:26px; text-align:center; line-height:26px; font-size:13px;">문제점 발생/조치 현황</div>
<div class="dashboard_div" id="chart4" style="width:90%; float:left; height:250px; margin: 0 auto;"></div>
</div>
</div>
</div>
</div>
</form>
</body>
</html>