效果:
代码:
php
电子看板
生产任务看板
近半年良率、不良率
0) {
?>
月份
良品数量
不良数量
良品率 (%)
不良率 (%)
$value) {
$goodnum1[] = $value['total_transaction_quantity'];
$badnum1[] = $value['total_bad_quantity'];
$arr_good_quantity1[] = $value['good_rate'];
$arr_bad_quantity1[] = $value['bad_rate'];
$arrvendor1[] = $value['operation_code'];
}
} else {
$goodnum1[] = 0;
$badnum1[] = 0;
$arr_good_quantity1[] = 0;
$arr_bad_quantity1[] = 0;
$arrvendor1[] = 0;
}
echo "";
//计算机半年内的总良品和不良
$sql2 = "SELECT
SUM(IFNULL(transaction_quantity, 0)) AS total_transaction_quantity,
SUM(IFNULL(bad_quantity, 0)) AS total_bad_quantity,
CASE
WHEN (SUM(IFNULL(transaction_quantity, 0)) + SUM(IFNULL(bad_quantity, 0))) = 0 THEN 0
ELSE ROUND((SUM(IFNULL(transaction_quantity, 0)) / (SUM(IFNULL(transaction_quantity, 0)) + SUM(IFNULL(bad_quantity, 0)))*100), 2)
END AS good_rate,
CASE
WHEN (SUM(IFNULL(transaction_quantity, 0)) + SUM(IFNULL(bad_quantity, 0))) = 0 THEN 0
ELSE ROUND((SUM(IFNULL(bad_quantity, 0)) / (SUM(IFNULL(transaction_quantity, 0)) + SUM(IFNULL(bad_quantity, 0)))*100), 2)
END AS bad_rate,
DATE(DATE_SUB(DATE_FORMAT(NOW(), '%Y-%m-%d'), INTERVAL 6 MONTH)) AS six_months_ago
FROM
wip_transactions
WHERE
transaction_date >= UNIX_TIMESTAMP(DATE_SUB(DATE_FORMAT(NOW(), '%Y-%m-%d'), INTERVAL 6 MONTH))
AND transaction_date <= UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%Y-%m-%d'));
";
$result2 = DB_query($sql2, $db);
if ($array2 = mysqli_fetch_assoc($result2)) {
$good_rate2 = $array2['good_rate'];
$bad_rate2 = $array2['bad_rate'];
$six_months_ago2 = $array2['six_months_ago'];
} else {
$good_rate2 = 0;
$bad_rate2 = 0;
$six_months_ago2 = 0;
}
$array2 = array(
(object)array('value' => $good_rate2, 'name' => '良品率'),
(object)array('value' => $bad_rate2, 'name' => '不良率')
);
echo "";
//计算总的良品和不良
$sql3 = "SELECT
SUM( IFNULL( transaction_quantity, 0 ) ) AS total_transaction_quantity,
SUM( IFNULL( bad_quantity, 0 ) ) AS total_bad_quantity,
CASE
WHEN (SUM(IFNULL(transaction_quantity, 0)) + SUM(IFNULL(bad_quantity, 0))) = 0 THEN 0
ELSE ROUND((SUM(IFNULL(transaction_quantity, 0)) / (SUM(IFNULL(transaction_quantity, 0)) + SUM(IFNULL(bad_quantity, 0)))*100), 2)
END AS good_rate,
CASE
WHEN (SUM(IFNULL(transaction_quantity, 0)) + SUM(IFNULL(bad_quantity, 0))) = 0 THEN 0
ELSE ROUND((SUM(IFNULL(bad_quantity, 0)) / (SUM(IFNULL(transaction_quantity, 0)) + SUM(IFNULL(bad_quantity, 0)))*100), 2)
END AS bad_rate
FROM wip_transactions";
$result3 = DB_query($sql3, $db);
if ($array3 = mysqli_fetch_assoc($result3)) {
$good_rate3 = $array3['good_rate'];
$bad_rate3 = $array3['bad_rate'];
$goodnum3 = $array3['total_transaction_quantity'];
$badnum3 = $array3['total_bad_quantity'];
} else {
$good_rate3 = 0;
$bad_rate3 = 0;
$goodnum3 = 0;
$badnum3 = 0;
}
$array3 = array(
(object)array('value' => $good_rate3, 'name' => '良品率'),
(object)array('value' => $bad_rate3, 'name' => '不良率')
);
echo "";
//计算总的良品和不良
$sql4 = "SELECT
wt.employee_num,
he.employee_name,
SUM(IFNULL(wt.transaction_quantity, 0)) AS total_transaction_quantity,
SUM(IFNULL(wt.bad_quantity, 0)) AS total_bad_quantity,
CASE
WHEN (SUM(IFNULL(transaction_quantity, 0)) + SUM(IFNULL(bad_quantity, 0))) = 0 THEN 0
ELSE ROUND((SUM(IFNULL(transaction_quantity, 0)) / (SUM(IFNULL(transaction_quantity, 0)) + SUM(IFNULL(bad_quantity, 0)))*100), 2)
END AS good_rate,
CASE
WHEN (SUM(IFNULL(transaction_quantity, 0)) + SUM(IFNULL(bad_quantity, 0))) = 0 THEN 0
ELSE ROUND((SUM(IFNULL(bad_quantity, 0)) / (SUM(IFNULL(transaction_quantity, 0)) + SUM(IFNULL(bad_quantity, 0)))*100), 2)
END AS bad_rate
FROM
wip_transactions wt, hr_employees he
WHERE
wt.employee_num = he.employee_num
GROUP BY
wt.employee_num
ORDER BY
bad_rate desc
";
$result4 = DB_query($sql4, $db);
while ($array4 = mysqli_fetch_assoc($result4)) {
$arrays4[] = $array4;
}
if (is_array($arrays4)) {
foreach ($arrays4 as $key => $value) {
$good_rate4[] = $value['good_rate'];
$bad_rate4[] = $value['bad_rate'];
$goodnum4[] = $value['total_transaction_quantity'];
$badnum4[] = $value['total_bad_quantity'];
$employee_name[] = $value['employee_name'];
}
} else {
$good_rate4[] = 0;
$bad_rate4[] = 0;
$goodnum4[] = 0;
$badnum4[] = 0;
$employee_name[] = 0;
}
echo "";
//员工工时
$sql6 = "SELECT
wt.employee_num,he.employee_name,
SUM((end_date - begin_date) / 3600) AS total_hours,
SUM((end_date - begin_date) / (3600 * 24)) AS total_days,
SUM((end_date - begin_date) / (3600 * 24 * 365)) AS total_years
FROM wip_transactions wt, hr_employees he
WHERE wt.employee_num = he.employee_num
GROUP BY wt.employee_num";
$result6 = DB_query($sql6, $db);
while ($array6 = mysqli_fetch_assoc($result6)) {
$arrays6[] = $array6;
}
if (is_array($arrays6)) {
foreach ($arrays6 as $key => $value) {
$total_hours6[] = $value['total_hours'];
$total_days6[] = $value['total_days'];
$total_years6[] = $value['total_years'];
$employee_name6[] = $value['employee_name'];
}
} else {
$total_hours6[] = 0;
$total_days6[] = 0;
$total_years6[] = 0;
$employee_name6[] = 0;
}
echo "";
// 待生产工时统计
$sql7 = "SELECT a.operation_code,operation_name,sum(begin_quantity*standard_time) as paipei,sum(a.output_quantity*standard_time) wancheng,sum((begin_quantity-a.output_quantity)*standard_time) wait
from wip_operation_plan a,bom_parameters b,wip_jobs_all c
where a.operation_code=b.operation_code
and begin_quantity>a.output_quantity
and standard_time>0
and a.wip_entity_name=c.wip_entity_name
GROUP BY a.operation_code,operation_name
order by a.operation_code desc";
$result7 = DB_query($sql7, $db);
while ($array7 = mysqli_fetch_assoc($result7)) {
$arrays7[] = $array7;
}
if (is_array($arrays7)) {
foreach ($arrays7 as $key => $value) {
$arramount7[] = $value['wait'];
$arrvendor7[] = $value['operation_name'];
}
} else {
$arramount7[] = 0;
$arrvendor7[] = 0;
}
echo "";
css
body {
background: linear-gradient(25deg, #0f2249, #182e5a 20%, #0f2249 40%, #182e5a 60%, #0f2249 80%, #182e5a 100%);
padding: 0px;
margin: 0px;
}
ul {
padding: 0px;
margin: 0px;
}
.head {
/* height: 40px; */
background: url(../../images/head_bg.png) no-repeat center center;
background-size: 100% 100%;
position: relative;
margin-bottom: 20px;
border: 1px solid rgb(255, 255, 255, 0);
}
.head h1 {
color: #bde4ff;
text-align: center;
font-size: 25px;
/* line-height: 40px; */
letter-spacing: .06rem;
}
.head h1 img {
width: 1.5rem;
display: inline-block;
vertical-align: middle;
margin-right: .2rem
}
.all_title {
background: linear-gradient(to top, #56c3ec, #b2f3f5);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-align: center;
letter-spacing: 2px;
font-family: '微软雅黑';
font-weight: bold;
/* font-size: 32px; */
}
.kanban_all {
/* border: 1px solid black; */
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.kanban_all_position {
/* border: 1px solid red; */
width: 98%;
display: flex;
flex-wrap: wrap;
}
.kanban_item {
/* border: 1px solid red; */
width: calc(50% - 2%);
margin: 0 1% 1% 1%;
}
.kanban_line {
height: 280px;
border: 1px solid #3486da;
background: rgba(0, 70, 190, .1);
padding: .15rem;
position: relative;
margin-bottom: .25rem;
z-index: 10;
/* width: calc(50% - 3%); */
margin: 0 1% 1% 1%;
}
.kanban_line:before,
.kanban_line:after {
position: absolute;
/* width: .15rem;
height: .15rem; */
content: "";
border-top: 3px solid #3486da;
top: -2px;
}
.kanban_line:before,
.kanban_line:after,
.kanban_title {
height: 20px;
padding: 1%;
font-family: '华文细黑';
font-weight: bold;
background: linear-gradient(to right, rgba(48, 82, 174, 1), rgba(48, 82, 174, 0));
color: #fff;
font-size: 14px;
}
.kanban_content {
height: 220px;
padding: 1%;
display: flex;
justify-content: center;
/* border: 1px solid red; */
}
.kanban_content table {
width: 100%;
/* border: 1px solid red; */
}
.kanban_content_left {
/* border: 1px solid red; */
width: 65%;
}
.kanban_content_right {
width: 35%;
/* border: 1px solid green; */
}
.kanban_content_right li {
margin-top: 15%;
font-family: '微软雅黑';
}
.kanban_content table td {
width: 100%;
/* 或者您可以根据需求设置其他百分比值,例如33.33% */
}
.kanban_line_double {
/* border: 1px solid blue; */
display: flex;
justify-content: center;
width: 100%;
height: 100%;
}
.kanban_line_double .left {
/* border: 1px solid red; */
width: 48%;
height: 100%;
}
.kanban_line_double .left .kanban_title {
padding: 2%;
}
.kanban_line_double .middle {
background: none;
width: 3%;
}
.kanban_line_double .right {
/* border: 1px solid black; */
width: 48%;
height: 100%;
}
.kanban_line_double .right .kanban_title {
padding: 2%;
}
/* 表格 */
.table {
text-align: center;
/* border: 1px solid black; */
border-collapse: collapse;
}
.table tr th {
width: 20%;
/* border: 1px solid black; */
color: #c0dcf0;
font-weight: bold;
}
.table tr td {
width: 20%;
text-align: center;
padding-top: 1%;
color: #8faade;
}
.quantity_show {
width: 100%;
font-size: 20px;
letter-spacing: 2px;
font-family: '微软雅黑';
text-align: center;
color: white;
display: flex;
align-items: center;
justify-content: center;
}
.quantity_show_position {
width: 100%;
}
.quantity_show div {
padding: 1%;
color: white;
}
.quantity_show .quantity_line2 {
color: white;
font-size: 30px;
}
.quantity_show .quantity_line3 ul {
display: flex;
/* border: 1px solid red; */
justify-content: center;
/* 水平居中 */
align-items: center;
/* 垂直居中 */
}
.quantity_show .quantity_line3 ul li {
margin: 0 5%;
/* border: 1px solid black; */
list-style: none;
}
.quantity_show .quantity_line3 ul li:nth-child(1):before {
content: "";
display: inline-block;
width: 12px;
/* 设置图标宽度 */
height: 12px;
/* 设置图标高度 */
background-color: red;
border-radius: 50%;
/* 设置图标背景颜色 */
margin-right: 5px;
/* 调整图标与文本之间的间距 */
}
.quantity_show .quantity_line3 ul li:nth-child(2):before {
content: "";
display: inline-block;
width: 12px;
/* 设置图标宽度 */
height: 12px;
/* 设置图标高度 */
background-color: green;
border-radius: 50%;
/* 设置图标背景颜色 */
margin-right: 5px;
/* 调整图标与文本之间的间距 */
}
.quantity_show .quantity_line3 span {
color: #fff;
}
echarts下载参照官网:快速上手 - Handbook - Apache ECharts