success('请求新华接口成功'); } /** 定义的函数方法 $this->方法名调取*/ //当年一月份 public function year_January(){ return date("Y-01"); } //开始时间方法--当年01月01日 public function start_time(){ return gettimeinfo(); } //结束时间方法--当年12月31日 public function end_time(){ return gettimeinfo(1); } //开始时间方法--去年01月01日 public function qstart_time(){ return getLastYear(); } //去年的今天 public function qday(){ // 获取当前日期 $today = date('Y-m-d 23:59:59'); // 使用strtotime计算去年的今天 $lastYearToday = date('Y-m-d 23:59:59', strtotime($today . ' -1 year')); // 输出去年的今天 return $lastYearToday; } //结束时间方法--去年12月31日 public function qend_time(){ return getLastYear(1); } //开始时间方法--前年01月01日 public function qianstart_time(){ return getPreviousYear(); } //结束时间方法--前年12月31日 public function qianend_time(){ return getPreviousYear(1); } //前年的今天 public function qianday(){ // 获取当前日期 $today = date('Y-m-d 23:59:59'); // 使用strtotime计算前年的今天 $beforeLastYearToday = date('Y-m-d 23:59:59', strtotime($today . ' -2 years')); // 输出前年的今天 return $beforeLastYearToday; } // '{$this->qstart_time()}' AND '{$this->end_time()}')gs // public function removeNames($result) { // foreach ($result as &$item) { // // 使用正则表达式去掉名字部分,只保留潮流编号和班次 // $item['班组名称'] = preg_replace('/^[^\n]*\n/', '', $item['班组名称']); // } // foreach ($result as &$item) { // $item['班组名称'] = str_replace(['(', ')', '班'], '', $item['班组名称']); // // 检查字符串长度是否大于4 // $num = 3; // if (mb_strlen($item['班组名称']) > $num) { // $item['班组名称'] = mb_substr($item['班组名称'], 0, $num) . "\n" . mb_substr($item['班组名称'], $num); // } // } // foreach ($result as &$item) { // $item['班组产量'] = round($item['班组产量'] / 10000, 2); // Retain two decimal places // } // return $result; // } // 小森八色02机班组产量【缓存】 public function bb_Machines_redis(){ $redis = redis(); $redis_key = md5('bb_Monthachines_redis'); $one = date('Y-m-01'); $data = date('Y-m-d'); $sql = "SELECT DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') AS 月份, a.cMachineName, Name_WorkGroup AS 班组, SUM(a.nAmount) AS 工作量, COUNT(a.cMJobCode) AS 品种数, SUM(a.nsl) AS 色令, SUM(a.nzl) AS 纸令 FROM QL_Report_FeedBack_Day a INNER JOIN scDayRpt_Teams b ON b.ID = a.ID_Teams WHERE DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y-%m-%d') BETWEEN '{$one}' AND '{$data}' AND a.cMachineName IN ( '小森八色01号机','小森八色02号机') GROUP BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y'), a.cMachineName, Name_WorkGroup ORDER BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') DESC, a.cMachineName, Name_WorkGroup;"; $result=Db::query($sql); if ($result) { $redis->set($redis_key, json_encode($result)); echo date("Y-m-d H:i:s").' 存进去了'; return $result; } } // 小森八色02机班组产量【接口】 public function bb_Machines() { $redis = redis(); $result = json_decode($redis->get(md5('bb_Monthachines_redis')), true); // 定义班组简写映射 $res = [ '小森八色02号机(乙班)' => '小森八色02号机乙班', '小森八色02号机(甲班)' => '小森八色02号机甲班', // 可以继续添加其他班组的映射... ]; // 初始化结果数组为空时的补全逻辑 if (empty($result)) { $result = []; } // 创建一个新的结果数组并对班组进行映射 $mappedResult = []; foreach ($result as $item) { if (isset($res[$item['班组']])) { $mappedResult[] = [ '班组' => $res[$item['班组']], '纸令' => round((float)$item['纸令']) // 确保纸令为浮点数 ]; } } // 补全未出现的班组,并设置纸令为 0 foreach ($res as $originalName => $shortName) { $found = false; foreach ($mappedResult as $item) { if ($item['班组'] === $shortName) { $found = true; break; } } if (!$found) { $mappedResult[] = [ '班组' => $shortName, '纸令' => 0 ]; } } // 按照 $res 中定义的顺序排序 usort($mappedResult, function ($a, $b) use ($res) { $order = array_values($res); // 按定义顺序排序 $posA = array_search($a['班组'], $order); $posB = array_search($b['班组'], $order); return $posA - $posB; }); // 按需换行(将班组名称切割) // foreach ($mappedResult as &$item) { // $num = 3; // 规定的换行长度 // if (mb_strlen($item['班组']) > $num) { // $item['班组'] = mb_substr($item['班组'], 0, $num) . "\n" . mb_substr($item['班组'], $num); // } // } // 提取 categories 和 series 数据 $categories = array_column($mappedResult, "班组"); $seriesData = array_column($mappedResult, "纸令"); // 组装返回的数据 $data = [ "status" => 0, "msg" => "", "data" => [ "categories" => $categories, "series" => [ [ "name" => "班组产量", "data" => $seriesData ] ] ] ]; return json_encode($data, JSON_UNESCAPED_UNICODE); } //胶订精密达3号班组产量【缓存】 public function hdbsmyi_Machines_redis(){ $redis = redis(); $redis_key = md5('hdbsmyi_Monthachines_redis'); $one = date('Y-m-01'); $data = date('Y-m-d'); $sql = "SELECT DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') AS 月份, a.cMachineName, Name_WorkGroup AS 班组, SUM(a.nAmount) AS 工作量, COUNT(a.cMJobCode) AS 品种数, SUM(a.nsl) AS 色令, SUM(a.nzl) AS 纸令 FROM QL_Report_FeedBack_Day a INNER JOIN scDayRpt_Teams b ON b.ID = a.ID_Teams WHERE DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y-%m-%d') BETWEEN '{$one}' AND '{$data}' AND a.cMachineName LIKE'%胶订精密达%' GROUP BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y'), a.cMachineName, Name_WorkGroup ORDER BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') DESC, a.cMachineName, Name_WorkGroup;"; $result=Db::query($sql); $redis->set($redis_key, json_encode($result)); echo date("Y-m-d H:i:s").' 存进去了'; return $result; } //胶订精密达3号班组产量【接口】 public function hdbsmyi_Machines(){ $redis = redis(); $result = json_decode($redis->get(md5('hdbsmyi_Monthachines_redis')), true); // 定义班组简写映射 $res = [ '胶订精密达1号(乙班)' => '精密达1号乙', '胶订精密达1号(甲班)' => '精密达1甲', '胶订精密达2号(乙班)' => '精密达2乙', '胶订精密达2号(甲班)' => '精密达2甲', '胶订精密达3号(乙班)' => '精密达3乙', '胶订精密达3号(甲班)' => '精密达3甲', // 可以继续添加其他班组的映射... ]; // 初始化结果数组为空时的补全逻辑 if (empty($result)) { $result = []; } // 创建一个新的结果数组并对班组进行映射 $mappedResult = []; foreach ($result as $item) { if (isset($res[$item['班组']])) { $mappedResult[] = [ '班组' => $res[$item['班组']], '工作量' => round((float)$item['工作量'])// 确保纸令为浮点数 ]; } } // 补全未出现的班组,并设置纸令为 0 foreach ($res as $originalName => $shortName) { $found = false; foreach ($mappedResult as $item) { if ($item['班组'] === $shortName) { $found = true; break; } } if (!$found) { $mappedResult[] = [ '班组' => $shortName, '工作量' => 0 ]; } } // 按照 $res 中定义的顺序排序 usort($mappedResult, function ($a, $b) use ($res) { $order = array_values($res); // 按定义顺序排序 $posA = array_search($a['班组'], $order); $posB = array_search($b['班组'], $order); return $posA - $posB; }); // 按需换行(将班组名称切割) foreach ($mappedResult as &$item) { $num = 3; // 规定的换行长度 if (mb_strlen($item['班组']) > $num) { $item['班组'] = mb_substr($item['班组'], 0, $num) . "\n" . mb_substr($item['班组'], $num); } } // 提取 categories 和 series 数据 $categories = array_column($mappedResult, "班组"); $seriesData = array_column($mappedResult, "工作量"); // 组装返回的数据 $data = [ "status" => 0, "msg" => "", "data" => [ "categories" => $categories, "series" => [ [ "name" => "班组产量", "data" => $seriesData ] ] ] ]; return json_encode($data, JSON_UNESCAPED_UNICODE); } //四色机班组产量【缓存】 public function hdbsmer_Machines_redis(){ $redis = redis(); $redis_key = md5('hdbsmer_Monthachines_redis'); $one = date('Y-m-01'); $data = date('Y-m-d'); $sql = "SELECT DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') AS 月份, a.cMachineName, Name_WorkGroup AS 班组, SUM(a.nAmount) AS 工作量, COUNT(a.cMJobCode) AS 品种数, SUM(a.nsl) AS 色令, SUM(a.nzl) AS 纸令 FROM QL_Report_FeedBack_Day a INNER JOIN scDayRpt_Teams b ON b.ID = a.ID_Teams WHERE DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y-%m-%d') BETWEEN '{$one}' AND '{$data}' AND a.cMachineName IN ( '海德堡01号机','海德堡5+L 01号机','三菱机01号机','三菱机02号机','四色机02号机','三菱机01号机') GROUP BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y'), a.cMachineName, Name_WorkGroup ORDER BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') DESC, a.cMachineName, Name_WorkGroup;"; $result=Db::query($sql); if ($result) { $redis->set($redis_key, json_encode($result)); echo date("Y-m-d H:i:s").' 存进去了'; return $result; } } //四色机班组产量【接口】 public function hdbsmer_Machines(){ $redis = redis(); $result = json_decode($redis->get(md5('hdbsmer_Monthachines_redis')), true); // 定义班组简写映射 $res = [ '四色机01号机(乙班)' => '四色1乙', '四色机01号机(甲班)' => '四色1甲', '四色机02号机(乙班)' => '四色2乙', '四色机02号机(甲班)' => '四色2甲', '三菱机01号机(乙班)' => '三菱机1乙', '三菱机01号机(甲班)' => '三菱机1甲', '三菱机02号机(乙班)' => '三菱机2乙', '三菱机02号机(甲班)' => '三菱机2甲', '海德堡01号机(乙班)' => '海德堡1乙', '海德堡01号机(甲班)' => '海德堡1甲', '海德堡5+L 01号机(乙班)' => '海德堡5+L乙', '海德堡5+L 01号机(甲班)' => '海德堡5+L甲', // 可以继续添加其他班组的映射... ]; // 初始化结果数组为空时的补全逻辑 if (empty($result)) { $result = []; } // 创建一个新的结果数组并对班组进行映射 $mappedResult = []; foreach ($result as $item) { if (isset($res[$item['班组']])) { $mappedResult[] = [ '班组' => $res[$item['班组']], '纸令' => round((float)$item['纸令']) // 确保纸令为浮点数 ]; } } // 补全未出现的班组,并设置纸令为 0 foreach ($res as $originalName => $shortName) { $found = false; foreach ($mappedResult as $item) { if ($item['班组'] === $shortName) { $found = true; break; } } if (!$found) { $mappedResult[] = [ '班组' => $shortName, '纸令' => 0 ]; } } // 按照 $res 中定义的顺序排序 usort($mappedResult, function ($a, $b) use ($res) { $order = array_values($res); // 按定义顺序排序 $posA = array_search($a['班组'], $order); $posB = array_search($b['班组'], $order); return $posA - $posB; }); // 按需换行(将班组名称切割) foreach ($mappedResult as &$item) { $num = 3; // 规定的换行长度 if (mb_strlen($item['班组']) > $num) { $item['班组'] = mb_substr($item['班组'], 0, $num) . "\n" . mb_substr($item['班组'], $num); } } // 提取 categories 和 series 数据 $categories = array_column($mappedResult, "班组"); $seriesData = array_column($mappedResult, "纸令"); // 组装返回的数据 $data = [ "status" => 0, "msg" => "", "data" => [ "categories" => $categories, "series" => [ [ "name" => "班组产量", "data" => $seriesData ] ] ] ]; return json_encode($data, JSON_UNESCAPED_UNICODE); } //标规商业轮转机班组产量【缓存】 public function hdbyi_Machines_redis(){ $redis = redis(); $redis_key = md5('hdber_Monthachines_redis'); $one = date('Y-m-01'); $data = date('Y-m-d'); $sql = "SELECT DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') AS 月份, a.cMachineName, Name_WorkGroup AS 班组, SUM(a.nAmount) AS 工作量, COUNT(a.cMJobCode) AS 品种数, SUM(a.nsl) AS 色令, SUM(a.nzl) AS 纸令 FROM QL_Report_FeedBack_Day a INNER JOIN scDayRpt_Teams b ON b.ID = a.ID_Teams WHERE DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y-%m-%d') BETWEEN '{$one}' AND '{$data}' AND a.cMachineName IN ( '标规204胶轮1号','标规高斯轮转1号','标规高斯轮转2号','标规三菱商轮1号','标规三菱商轮2号','标规小森商轮1号','标规小森商轮2号') GROUP BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y'), a.cMachineName, Name_WorkGroup ORDER BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') DESC, a.cMachineName, Name_WorkGroup;"; $result=Db::query($sql); $redis->set($redis_key, json_encode($result)); echo date("Y-m-d H:i:s").' 存进去了'; return $result; } //标规商业轮转机班组产量【接口】 public function hdbyi_Machines(){ $redis = redis(); $result = json_decode($redis->get(md5('hdber_Monthachines_redis')), true); // 定义班组简写映射 $res = [ '标规三菱商轮1号(乙班)' => '三菱1乙', '标规三菱商轮1号(甲班)' => '三菱1甲', '标规三菱商轮2号(乙班)' => '三菱2乙', '标规三菱商轮2号(甲班)' => '三菱2甲', '标规小森商轮1号(乙班)' => '小森1乙', '标规小森商轮1号(甲班)' => '小森1甲', '标规小森商轮2号(乙班)' => '小森2乙', '标规小森商轮2号(甲班)' => '小森2甲', '标规高斯轮转1号(乙班)' => '高斯1乙', '标规高斯轮转1号(甲班)' => '高斯1甲', '标规高斯轮转2号(乙班)' => '高斯2乙', '标规高斯轮转2号(甲班)' => '高斯2甲', // 可以继续添加其他班组的映射... ]; // 初始化结果数组为空时的补全逻辑 if (empty($result)) { $result = []; } // 创建一个新的结果数组并对班组进行映射 $mappedResult = []; foreach ($result as $item) { if (isset($res[$item['班组']])) { $mappedResult[] = [ '班组' => $res[$item['班组']], '纸令' => round((float)$item['纸令']) // 确保纸令为浮点数 ]; } } // 补全未出现的班组,并设置纸令为 0 foreach ($res as $originalName => $shortName) { $found = false; foreach ($mappedResult as $item) { if ($item['班组'] === $shortName) { $found = true; break; } } if (!$found) { $mappedResult[] = [ '班组' => $shortName, '纸令' => 0 ]; } } // 按照 $res 中定义的顺序排序 usort($mappedResult, function ($a, $b) use ($res) { $order = array_values($res); // 按定义顺序排序 $posA = array_search($a['班组'], $order); $posB = array_search($b['班组'], $order); return $posA - $posB; }); // 按需换行(将班组名称切割) foreach ($mappedResult as &$item) { $num = 3; // 规定的换行长度 if (mb_strlen($item['班组']) > $num) { $item['班组'] = mb_substr($item['班组'], 0, $num) . "\n" . mb_substr($item['班组'], $num); } } // 提取 categories 和 series 数据 $categories = array_column($mappedResult, "班组"); $seriesData = array_column($mappedResult, "纸令"); // 组装返回的数据 $data = [ "status" => 0, "msg" => "", "data" => [ "categories" => $categories, "series" => [ [ "name" => "班组产量", "data" => $seriesData ] ] ] ]; return json_encode($data, JSON_UNESCAPED_UNICODE); } //大规商业轮转机班组产量【缓存】 public function hdbwyi_Machines_redis(){ $redis = redis(); $redis_key = md5('hdbwyi_Monthachines_redis'); $one = date('Y-m-01'); $data = date('Y-m-d'); $sql = "SELECT DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') AS 月份, a.cMachineName, Name_WorkGroup AS 班组, SUM(a.nAmount) AS 工作量, COUNT(a.cMJobCode) AS 品种数, SUM(a.nsl) AS 色令, SUM(a.nzl) AS 纸令 FROM QL_Report_FeedBack_Day a INNER JOIN scDayRpt_Teams b ON b.ID = a.ID_Teams WHERE DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y-%m-%d') BETWEEN '{$one}' AND '{$data}' AND a.cMachineName IN ( '大规高斯轮转1号','大规三菱商轮1号','大规小森商轮1号') GROUP BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y'), a.cMachineName, Name_WorkGroup ORDER BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') DESC, a.cMachineName, Name_WorkGroup;"; $result=Db::query($sql); $redis->set($redis_key, json_encode($result)); echo date("Y-m-d H:i:s").' 存进去了'; return $result; } //大规商业轮转机班组产量【接口】 public function hdbwyi_Machines() { $redis = redis(); $result = json_decode($redis->get(md5('hdbwyi_Monthachines_redis')), true); // 定义班组简写映射及顺序 $res = [ '大规小森商轮1号(乙班)' => '大小森1乙', '大规小森商轮1号(甲班)' => '大小森1甲', '大规高斯轮转1号(乙班)' => '大高斯1乙', '大规高斯轮转1号(甲班)' => '大高斯1甲', '大规三菱商轮1号(乙班)' => '大三菱1乙', '大规三菱商轮1号(甲班)' => '大三菱甲', // 可以继续添加其他班组的映射... ]; // 初始化结果数组为空时的补全逻辑 if (empty($result)) { $result = []; } // 创建一个新的结果数组并对班组进行映射 $mappedResult = []; foreach ($result as $item) { if (isset($res[$item['班组']])) { $mappedResult[] = [ '班组' => $res[$item['班组']], '纸令' => round((float)$item['纸令']) // 确保纸令为浮点数 ]; } } // 补全未出现的班组,并设置纸令为 0 foreach ($res as $originalName => $shortName) { $found = false; foreach ($mappedResult as $item) { if ($item['班组'] === $shortName) { $found = true; break; } } if (!$found) { $mappedResult[] = [ '班组' => $shortName, '纸令' => 0 ]; } } // 按照 $res 中定义的顺序排序 usort($mappedResult, function ($a, $b) use ($res) { $order = array_values($res); // 按定义顺序排序 $posA = array_search($a['班组'], $order); $posB = array_search($b['班组'], $order); return $posA - $posB; }); // 按需换行(将班组名称切割) foreach ($mappedResult as &$item) { $num = 3; // 规定的换行长度 if (mb_strlen($item['班组']) > $num) { $item['班组'] = mb_substr($item['班组'], 0, $num) . "\n" . mb_substr($item['班组'], $num); } } // 提取 categories 和 series 数据 $categories = array_column($mappedResult, "班组"); $seriesData = array_column($mappedResult, "纸令"); // 组装返回的数据 $data = [ "status" => 0, "msg" => "", "data" => [ "categories" => $categories, "series" => [ [ "name" => "班组产量", "data" => $seriesData ] ] ] ]; return json_encode($data, JSON_UNESCAPED_UNICODE); } //单双色机班组产量【缓存】 public function ssjer_Machines_redis(){ $redis = redis(); $redis_key = md5('ssjer_Monthachines_redis'); $one = date('Y-m-01'); $data = date('Y-m-d'); $sql = "SELECT DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') AS 月份, a.cMachineName, Name_WorkGroup AS 班组, SUM(a.nAmount) AS 工作量, COUNT(a.cMJobCode) AS 品种数, SUM(a.nsl) AS 色令, SUM(a.nzl) AS 纸令 FROM QL_Report_FeedBack_Day a INNER JOIN scDayRpt_Teams b ON b.ID = a.ID_Teams WHERE DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y-%m-%d') BETWEEN '{$one}' AND '{$data}' AND a.cMachineName IN ( 'BB机02号','BB机04号','BB机05号','海德堡SM1号','海德堡SM2号','如钰01号机') GROUP BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y'), a.cMachineName, Name_WorkGroup ORDER BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') DESC, a.cMachineName, Name_WorkGroup;"; $result=Db::query($sql); if ($result) { $redis->set($redis_key, json_encode($result)); echo date("Y-m-d H:i:s").' 存进去了'; return $result; } } //单双色机班组产量【 接口】 public function ssjer_Machines(){ $redis = redis(); $result = json_decode($redis->get(md5('ssjer_Monthachines_redis')), true); // 定义班组简写映射 $res = [ 'BB机04号(乙班)' => 'BB机4乙', 'BB机04号(甲班)' => 'BB机4甲', '如钰01号机(乙班)' => '如钰1乙', '如钰01号机(甲班)' => '如钰1甲', '海德堡SM1号(乙班)' => 'SM1号乙', '海德堡SM1号(甲班)' => 'SM1号甲', '海德堡SM2号(乙班)' => 'SM2号乙', '海德堡SM2号(甲班)' => 'SM2号甲', // 可以继续添加其他班组的映射... ]; // 初始化结果数组为空时的补全逻辑 if (empty($result)) { $result = []; } // 创建一个新的结果数组并对班组进行映射 $mappedResult = []; foreach ($result as $item) { if (isset($res[$item['班组']])) { $mappedResult[] = [ '班组' => $res[$item['班组']], '纸令' => round((float)$item['纸令']) // 确保纸令为浮点数 ]; } } // 补全未出现的班组,并设置纸令为 0 foreach ($res as $originalName => $shortName) { $found = false; foreach ($mappedResult as $item) { if ($item['班组'] === $shortName) { $found = true; break; } } if (!$found) { $mappedResult[] = [ '班组' => $shortName, '纸令' => 0 ]; } } // 按照 $res 中定义的顺序排序 usort($mappedResult, function ($a, $b) use ($res) { $order = array_values($res); // 按定义顺序排序 $posA = array_search($a['班组'], $order); $posB = array_search($b['班组'], $order); return $posA - $posB; }); // 按需换行(将班组名称切割) foreach ($mappedResult as &$item) { $num = 3; // 规定的换行长度 if (mb_strlen($item['班组']) > $num) { $item['班组'] = mb_substr($item['班组'], 0, $num) . "\n" . mb_substr($item['班组'], $num); } } // 提取 categories 和 series 数据 $categories = array_column($mappedResult, "班组"); $seriesData = array_column($mappedResult, "纸令"); // 组装返回的数据 $data = [ "status" => 0, "msg" => "", "data" => [ "categories" => $categories, "series" => [ [ "name" => "班组产量", "data" => $seriesData ] ] ] ]; return json_encode($data, JSON_UNESCAPED_UNICODE); } //胶订联动线班组产量【缓存】 public function xsbsyi_Machines_redis(){ $redis = redis(); $redis_key = md5('xsbsyi_Monthachines_redis'); $one = date('Y-m-01'); $data = date('Y-m-d'); $sql = "SELECT DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') AS 月份, a.cMachineName, Name_WorkGroup AS 班组, SUM(a.nAmount) AS 工作量, COUNT(a.cMJobCode) AS 品种数, SUM(a.nsl) AS 色令, SUM(a.nzl) AS 纸令 FROM QL_Report_FeedBack_Day a INNER JOIN scDayRpt_Teams b ON b.ID = a.ID_Teams WHERE DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y-%m-%d') BETWEEN '{$one}' AND '{$data}' AND a.cMachineName IN ( '胶订潮流1号','胶订潮流2号','胶订精工1号','胶订精密达1号','胶订精密达2号','胶订精密达3号') GROUP BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y'), a.cMachineName, Name_WorkGroup ORDER BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') DESC, a.cMachineName, Name_WorkGroup;"; $result=Db::query($sql); if ($result) { $redis->set($redis_key, json_encode($result)); echo date("Y-m-d H:i:s").' 存进去了'; return $result; } } //胶订联动线班组产量【接口】 public function xsbsyi_Mcahines(){ $redis = redis(); $result = json_decode($redis->get(md5('xsbsyi_Monthachines_redis')), true); // 定义班组简写映射 $res = [ '胶订潮流1号(乙班)' => '潮流1乙', '胶订潮流1号(甲班)' => '潮流1甲', '胶订潮流2号(乙班)' => '潮流2乙', '胶订潮流2号(甲班)' => '潮流2甲', '胶订精密达1号(乙班)' => '精1乙', '胶订精密达1号(甲班)' => '精1甲', '胶订精密达2号(乙班)' => '精2乙', '胶订精密达2号(甲班)' => '精2甲', '胶订精密达3号(乙班)' => '精3乙', '胶订精密达3号(甲班)' => '精3甲', // 可以继续添加其他班组的映射... ]; // 初始化结果数组为空时的补全逻辑 if (empty($result)) { $result = []; } // 创建一个新的结果数组并对班组进行映射 $mappedResult = []; foreach ($result as $item) { if (isset($res[$item['班组']])) { $mappedResult[] = [ '班组' => $res[$item['班组']], '工作量' => round((float)$item['工作量']) // 确保纸令为浮点数 ]; } } // 补全未出现的班组,并设置纸令为 0 foreach ($res as $originalName => $shortName) { $found = false; foreach ($mappedResult as $item) { if ($item['班组'] === $shortName) { $found = true; break; } } if (!$found) { $mappedResult[] = [ '班组' => $shortName, '工作量' => 0 ]; } } // 按照 $res 中定义的顺序排序 usort($mappedResult, function ($a, $b) use ($res) { $order = array_values($res); // 按定义顺序排序 $posA = array_search($a['班组'], $order); $posB = array_search($b['班组'], $order); return $posA - $posB; }); // 按需换行(将班组名称切割) foreach ($mappedResult as &$item) { $num = 3; // 规定的换行长度 if (mb_strlen($item['班组']) > $num) { $item['班组'] = mb_substr($item['班组'], 0, $num) . "\n" . mb_substr($item['班组'], $num); } } // 提取 categories 和 series 数据 $categories = array_column($mappedResult, "班组"); $seriesData = array_column($mappedResult, "工作量"); // 组装返回的数据 $data = [ "status" => 0, "msg" => "", "data" => [ "categories" => $categories, "series" => [ [ "name" => "班组产量", "data" => $seriesData ] ] ] ]; return json_encode($data, JSON_UNESCAPED_UNICODE); } //骑马联动线班组产量【缓存】 public function xsbser_Machines_redis(){ $redis = redis(); $redis_key = md5('xsbser_Monthachines_redis'); $one = date('Y-m-01'); $data = date('Y-m-d'); $sql = "SELECT DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') AS 月份, a.cMachineName, Name_WorkGroup AS 班组, SUM(a.nAmount) AS 工作量, COUNT(a.cMJobCode) AS 品种数, SUM(a.nsl) AS 色令, SUM(a.nzl) AS 纸令 FROM QL_Report_FeedBack_Day a INNER JOIN scDayRpt_Teams b ON b.ID = a.ID_Teams WHERE DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y-%m-%d') BETWEEN '{$one}' AND '{$data}' AND a.cMachineName IN ( '骑马联动01号','骑马联动02号','骑马联动03号') GROUP BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y'), a.cMachineName, Name_WorkGroup ORDER BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') DESC, a.cMachineName, Name_WorkGroup;"; $result=Db::query($sql); if ($result) { $redis->set($redis_key, json_encode($result)); echo date("Y-m-d H:i:s").' 存进去了'; return $result; } } //骑马联动线班组产量【接口】 public function xsbser_Machines(){ $redis = redis(); $result = json_decode($redis->get(md5('xsbser_Monthachines_redis')), true); // 定义班组简写映射 $res = [ '骑马联动01号(乙班)' => '骑1乙', '骑马联动01号(甲班)' => '骑1甲', '骑马联动02号(乙班)' => '骑2乙', '骑马联动02号(甲班)' => '骑2甲', '骑马联动03号(乙班)' => '骑3乙', '骑马联动03号(甲班)' => '骑3甲', // 可以继续添加其他班组的映射... ]; // 初始化结果数组为空时的补全逻辑 if (empty($result)) { $result = []; } // 创建一个新的结果数组并对班组进行映射 $mappedResult = []; foreach ($result as $item) { if (isset($res[$item['班组']])) { $mappedResult[] = [ '班组' => $res[$item['班组']], '工作量' => round((float)$item['工作量']) // 确保纸令为浮点数 ]; } } // 补全未出现的班组,并设置纸令为 0 foreach ($res as $originalName => $shortName) { $found = false; foreach ($mappedResult as $item) { if ($item['班组'] === $shortName) { $found = true; break; } } if (!$found) { $mappedResult[] = [ '班组' => $shortName, '工作量' => 0 ]; } } // 按照 $res 中定义的顺序排序 usort($mappedResult, function ($a, $b) use ($res) { $order = array_values($res); // 按定义顺序排序 $posA = array_search($a['班组'], $order); $posB = array_search($b['班组'], $order); return $posA - $posB; }); // 按需换行(将班组名称切割) foreach ($mappedResult as &$item) { $num = 3; // 规定的换行长度 if (mb_strlen($item['班组']) > $num) { $item['班组'] = mb_substr($item['班组'], 0, $num) . "\n" . mb_substr($item['班组'], $num); } } // 提取 categories 和 series 数据 $categories = array_column($mappedResult, "班组"); $seriesData = array_column($mappedResult, "工作量"); // 组装返回的数据 $data = [ "status" => 0, "msg" => "", "data" => [ "categories" => $categories, "series" => [ [ "name" => "班组产量", "data" => $seriesData ] ] ] ]; return json_encode($data, JSON_UNESCAPED_UNICODE); } //精装联动线班组产量【缓存】 public function bggslzyi_Machines_redis(){ $redis = redis(); $redis_key = md5('bggslzyi_Monthachines_redis'); $one = date('Y-m-01'); $data = date('Y-m-d'); $sql = "SELECT DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') AS 月份, a.cMachineName, Name_WorkGroup AS 班组, SUM(a.nAmount) AS 工作量, COUNT(a.cMJobCode) AS 品种数, SUM(a.nsl) AS 色令, SUM(a.nzl) AS 纸令 FROM QL_Report_FeedBack_Day a INNER JOIN scDayRpt_Teams b ON b.ID = a.ID_Teams WHERE DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y-%m-%d') BETWEEN '{$one}' AND '{$data}' AND a.cMachineName IN ( '精装联动线01号') GROUP BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y'), a.cMachineName, Name_WorkGroup ORDER BY DATE_FORMAT( CASE WHEN DATE_FORMAT(b.dOnDuty, '%H:%i') < '06:30' THEN DATE_SUB(b.dOnDuty, INTERVAL 1 DAY) ELSE b.dOnDuty END, '%Y') DESC, a.cMachineName, Name_WorkGroup;"; $result=Db::query($sql); if ($result) { $redis->set($redis_key, json_encode($result)); echo date("Y-m-d H:i:s").' 存进去了'; return $result; } } //精装联动线班组产量【接口】 public function bggslzyi_Machines(){ $redis = redis(); $result = json_decode($redis->get(md5('bggslzyi_Monthachines_redis')), true); // 定义班组简写映射 $res = [ '精装联动线01号(乙班)' => '精装联动线01号乙', '精装联动线01号(甲班)' => '精装联动线01号甲', // 可以继续添加其他班组的映射... ]; // 初始化结果数组为空时的补全逻辑 if (empty($result)) { $result = []; } // 创建一个新的结果数组并对班组进行映射 $mappedResult = []; foreach ($result as $item) { if (isset($res[$item['班组']])) { $mappedResult[] = [ '班组' => $res[$item['班组']], '工作量' => round((float)$item['工作量']) // 确保纸令为浮点数 ]; } } // 补全未出现的班组,并设置纸令为 0 foreach ($res as $originalName => $shortName) { $found = false; foreach ($mappedResult as $item) { if ($item['班组'] === $shortName) { $found = true; break; } } if (!$found) { $mappedResult[] = [ '班组' => $shortName, '工作量' => 0 ]; } } // 按照 $res 中定义的顺序排序 usort($mappedResult, function ($a, $b) use ($res) { $order = array_values($res); // 按定义顺序排序 $posA = array_search($a['班组'], $order); $posB = array_search($b['班组'], $order); return $posA - $posB; }); // 按需换行(将班组名称切割) // foreach ($mappedResult as &$item) { // $num = 3; // 规定的换行长度 // if (mb_strlen($item['班组']) > $num) { // $item['班组'] = mb_substr($item['班组'], 0, $num) . "\n" . mb_substr($item['班组'], $num); // } // } // 提取 categories 和 series 数据 $categories = array_column($mappedResult, "班组"); $seriesData = array_column($mappedResult, "工作量"); // 组装返回的数据 $data = [ "status" => 0, "msg" => "", "data" => [ "categories" => $categories, "series" => [ [ "name" => "班组产量", "data" => $seriesData ] ] ] ]; return json_encode($data, JSON_UNESCAPED_UNICODE); } }