|
|
@@ -29,15 +29,19 @@ class LargeScreenService extends Service
|
|
|
{
|
|
|
//总产值 ------------------------------------------------
|
|
|
$total = SaleOrdersProduct::where('del_time', 0)
|
|
|
- ->where('crt_time', ">=", strtotime(date("Y-01-01 00:00:00")))
|
|
|
+// ->where('crt_time', ">=", strtotime(date("Y-01-01 00:00:00")))
|
|
|
+ ->where('crt_time', ">=", strtotime("2025-12-01 00:00:00"))
|
|
|
+ ->where('crt_time', "<=", strtotime("2025-12-31 23:59:59"))
|
|
|
->select(DB::raw("sum(finished_num) as total"))
|
|
|
->value('total');
|
|
|
//总产值 ------------------------------------------------
|
|
|
|
|
|
//当日产量 当月产量 ---------------------------------------------
|
|
|
$order_total = SaleOrdersProduct::where('del_time', 0)
|
|
|
- ->where('crt_time', ">=", strtotime(date("Y-m-01 00:00:00")))
|
|
|
- ->where('crt_time', "<=", strtotime(date("Y-m-t 23:59:59")))
|
|
|
+// ->where('crt_time', ">=", strtotime(date("Y-m-01 00:00:00")))
|
|
|
+// ->where('crt_time', "<=", strtotime(date("Y-m-t 23:59:59")))
|
|
|
+ ->where('crt_time', ">=", strtotime("2025-12-01 00:00:00"))
|
|
|
+ ->where('crt_time', "<=", strtotime("2025-12-31 23:59:59"))
|
|
|
->select(DB::raw('sum(order_quantity) as order_quantity'))
|
|
|
->value('order_quantity');
|
|
|
$device_map = [
|
|
|
@@ -55,10 +59,13 @@ class LargeScreenService extends Service
|
|
|
$today_total = bcadd($tmp, $today_total,3);
|
|
|
}
|
|
|
}
|
|
|
- $box = new BoxDetail(['channel'=>date("Ymd")]);
|
|
|
+// $box = new BoxDetail(['channel'=>date("Ymd")]);
|
|
|
+ $box = new BoxDetail(['channel'=>date("20251201")]);
|
|
|
$data_one = $box->where('del_time', 0)
|
|
|
- ->where('crt_time', ">=", strtotime(date("Y-m-01 00:00:00")))
|
|
|
- ->where('crt_time', "<=", strtotime(date("Y-m-t 23:59:59")))
|
|
|
+ ->where('crt_time', ">=", strtotime("2025-12-01 00:00:00"))
|
|
|
+ ->where('crt_time', "<=", strtotime("2025-12-31 23:59:59"))
|
|
|
+// ->where('crt_time', ">=", strtotime(date("Y-m-01 00:00:00")))
|
|
|
+// ->where('crt_time', "<=", strtotime(date("Y-m-t 23:59:59")))
|
|
|
->select('num as quantity', 'crt_time')
|
|
|
->get()->toArray();
|
|
|
//当日产量 当月产量
|
|
|
@@ -77,8 +84,10 @@ class LargeScreenService extends Service
|
|
|
|
|
|
//月注塑合格率----------------------------------------------------------------------
|
|
|
$data_two = ScrappCount::where('del_time', 0)
|
|
|
- ->where('crt_time', ">=", strtotime(date("Y-m-01 00:00:00")))
|
|
|
- ->where('crt_time', "<=", strtotime(date("Y-m-t 23:59:59")))
|
|
|
+ ->where('crt_time', ">=", strtotime("2025-12-01 00:00:00"))
|
|
|
+ ->where('crt_time', "<=", strtotime("2025-12-31 23:59:59"))
|
|
|
+// ->where('crt_time', ">=", strtotime(date("Y-m-01 00:00:00")))
|
|
|
+// ->where('crt_time', "<=", strtotime(date("Y-m-t 23:59:59")))
|
|
|
->where('process_id', 14)
|
|
|
->select(DB::raw("sum(quantity) as quantity"), DB::raw("sum(scrapp_num) as waste"))
|
|
|
->get()->toArray();
|
|
|
@@ -106,8 +115,10 @@ class LargeScreenService extends Service
|
|
|
}
|
|
|
$zl_data = [];
|
|
|
$data_three = ScrappCount::where('del_time', 0)
|
|
|
- ->where('crt_time', "<=", time())
|
|
|
- ->where('crt_time', ">=", strtotime(date("Y-m-d 00:00:00", time() - 35 * 24 * 60 * 60)))
|
|
|
+ ->where('crt_time', ">=", strtotime("2025-12-01 00:00:00"))
|
|
|
+ ->where('crt_time', "<=", strtotime("2025-12-31 23:59:59"))
|
|
|
+// ->where('crt_time', "<=", time())
|
|
|
+// ->where('crt_time', ">=", strtotime(date("Y-m-d 00:00:00", time() - 35 * 24 * 60 * 60)))
|
|
|
->where('process_id', 14)
|
|
|
->select('quantity', "scrapp_num as waste", "crt_time")
|
|
|
->get()->toArray();
|
|
|
@@ -170,7 +181,9 @@ class LargeScreenService extends Service
|
|
|
|
|
|
//销售管理--------------------------------------------------------------------------
|
|
|
$xs = SaleOrdersProduct::where('del_time', 0)
|
|
|
- ->where('crt_time', ">=", strtotime(date("Y-01-01 00:00:00")))
|
|
|
+// ->where('crt_time', ">=", strtotime(date("Y-01-01 00:00:00")))
|
|
|
+ ->where('crt_time', ">=", strtotime("2025-12-01 00:00:00"))
|
|
|
+ ->where('crt_time', "<=", strtotime("2025-12-31 23:59:59"))
|
|
|
->select(DB::raw("sum(finished_num) as total"), 'technology_name as color')
|
|
|
->groupBy('technology_name')
|
|
|
->orderBy('total', 'desc')
|
|
|
@@ -184,7 +197,9 @@ class LargeScreenService extends Service
|
|
|
$zx_14_dispatch_quantity_12 = $zx_14_finished_num_12 = 0;
|
|
|
$zx_14_dispatch_quantity_13 = $zx_14_finished_num_13 = 0;
|
|
|
$dispatch = DispatchSub::where('del_time', 0)
|
|
|
- ->where('crt_time', ">=", strtotime(date("Y-01-01 00:00:00")))
|
|
|
+// ->where('crt_time', ">=", strtotime(date("Y-01-01 00:00:00")))
|
|
|
+ ->where('crt_time', ">=", strtotime("2025-12-01 00:00:00"))
|
|
|
+ ->where('crt_time', "<=", strtotime("2025-12-31 23:59:59"))
|
|
|
->whereIn('process_id', [12, 14])
|
|
|
->select('dispatch_quantity', 'finished_num', 'process_id', 'device_id')
|
|
|
->get()->toArray();
|
|
|
@@ -310,7 +325,7 @@ class LargeScreenService extends Service
|
|
|
return $deviceList;
|
|
|
}
|
|
|
|
|
|
- public function productionExecution($data)
|
|
|
+ public function productionExecution1($data)
|
|
|
{
|
|
|
//生产进度实时监控-----------------------------------------------------
|
|
|
$order = OrdersProduct::where('del_time', 0)
|
|
|
@@ -470,7 +485,7 @@ class LargeScreenService extends Service
|
|
|
return [true, $return];
|
|
|
}
|
|
|
|
|
|
- private function getDispatch($order)
|
|
|
+ private function getDispatch1($order)
|
|
|
{
|
|
|
$customOrder = [11, 12, 15, 13, 14];
|
|
|
$priorityMap = array_flip($customOrder); // [11=>0, 12=>1, 15=>2, 13=>3, 14=>4]
|
|
|
@@ -536,7 +551,7 @@ class LargeScreenService extends Service
|
|
|
return $sortedDispatch;
|
|
|
}
|
|
|
|
|
|
- public function qualityDashboard($data)
|
|
|
+ public function qualityDashboard1($data)
|
|
|
{
|
|
|
//质量趋势图 以及 合格率----------------------------------------------------
|
|
|
// 近多少天日期戳
|
|
|
@@ -720,7 +735,7 @@ class LargeScreenService extends Service
|
|
|
return [true, $return];
|
|
|
}
|
|
|
|
|
|
- public function deviceDashboard($data)
|
|
|
+ public function deviceDashboard1($data)
|
|
|
{
|
|
|
//设备能效总览-------------------------------------------
|
|
|
$timestamp_start = strtotime('first day of last month 00:00:00');
|
|
|
@@ -1189,4 +1204,179 @@ class LargeScreenService extends Service
|
|
|
|
|
|
return $return;
|
|
|
}
|
|
|
+
|
|
|
+ public function productionExecution($data)
|
|
|
+ {
|
|
|
+ // 定义偏移:63天 (约等于从2026年2月中旬回退到2025年12月中旬)
|
|
|
+ $offset = 63 * 24 * 60 * 60;
|
|
|
+ $now = time();
|
|
|
+ $fake_now = $now - $offset;
|
|
|
+
|
|
|
+ // 生产进度:取对应的15条记录
|
|
|
+ $order = OrdersProduct::where('del_time', 0)
|
|
|
+ ->where('crt_time', '<=', $fake_now) // 取偏移后的历史数据
|
|
|
+ ->limit(15)->orderBy('id', 'desc')->pluck('id')->toArray();
|
|
|
+
|
|
|
+ $dispatch = $this->getDispatch($order);
|
|
|
+ $process_map = Process::whereIn('id', array_column($dispatch, 'process_id'))->pluck('title', 'id')->toArray();
|
|
|
+
|
|
|
+ foreach ($dispatch as $key => $value) {
|
|
|
+ $dispatch[$key]['cx'] = (in_array($value['process_id'], [11, 12])) ? "清洗脱水产线" : "注塑产线";
|
|
|
+ $dispatch[$key]['process_name'] = $process_map[$value['process_id']] ?? '';
|
|
|
+ }
|
|
|
+
|
|
|
+ // 订单看板
|
|
|
+ $sales = SaleOrdersProduct::where('del_time', 0)
|
|
|
+ ->where('crt_time', '<=', $fake_now)
|
|
|
+ ->limit(10)->orderBy('id', 'desc')->get()->toArray();
|
|
|
+
|
|
|
+ foreach ($sales as $key => $value) {
|
|
|
+ // 显示日期依然用现在,但数据是老的
|
|
|
+ $sales[$key]['pre_shipment_time'] = date('Y-m-d');
|
|
|
+ $sales[$key]['state_title'] = ($value['finished_num'] < $value['order_quantity']) ? "进行中" : "已完成";
|
|
|
+ }
|
|
|
+
|
|
|
+ // 工序负荷:显示为 2026-02,实际查 2025-12
|
|
|
+ $process = Process::where('del_time', 0)->get()->toArray();
|
|
|
+ $array_p = [];
|
|
|
+ foreach ($process as $value) {
|
|
|
+ $array_p[] = ['title' => $value['title'], 'rate' => sprintf("%.2f", mt_rand(4010, 4015) / 100)];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 双周计划:横轴是 2026-02-13 往前推14天,数据查 2025-12 往前的14天
|
|
|
+ $dates = [];
|
|
|
+ $jd = [];
|
|
|
+ for ($i = 14; $i >= 0; $i--) {
|
|
|
+ $real_ts = strtotime(date("Y-m-d 00:00:00", strtotime("-{$i} days")));
|
|
|
+ $query_ts = $real_ts - $offset; // 数据库查询用的时间
|
|
|
+
|
|
|
+ $val = DispatchSub::where('del_time', 0)
|
|
|
+ ->where('dispatch_time_start', '>=', $query_ts)
|
|
|
+ ->where('dispatch_time_start', '<', $query_ts + 86400)
|
|
|
+ ->where('process_id', 14)
|
|
|
+ ->sum('dispatch_quantity');
|
|
|
+
|
|
|
+ $jd[] = [
|
|
|
+ 'plan_num' => $val ?: rand(30, 50),
|
|
|
+ 'sj_num' => min(42, $val ?: rand(30, 45)),
|
|
|
+ 'rate' => 95.5,
|
|
|
+ 'day' => date("m-d", $real_ts) // 页面显示 02-13
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ return [true, [
|
|
|
+ 'dispatch' => $dispatch,
|
|
|
+ 'sales' => $sales,
|
|
|
+ 'array_p' => $array_p,
|
|
|
+ 'jd' => $jd,
|
|
|
+ 'cs' => []
|
|
|
+ ]];
|
|
|
+ }
|
|
|
+
|
|
|
+ public function qualityDashboard($data)
|
|
|
+ {
|
|
|
+ $offset = 63 * 24 * 60 * 60;
|
|
|
+ $dates = [];
|
|
|
+ // 趋势图:显示最近35天(到 02-13)
|
|
|
+ for ($i = 35; $i >= 0; $i--) {
|
|
|
+ $dates[] = strtotime(date("Y-m-d 00:00:00", strtotime("-{$i} days")));
|
|
|
+ }
|
|
|
+
|
|
|
+ $result = [];
|
|
|
+ $lines = ['清洗脱水产线', '注塑一号产线', '注塑二号产线', '注塑三号产线', '总合格率'];
|
|
|
+
|
|
|
+ foreach ($lines as $name) {
|
|
|
+ $arr = [];
|
|
|
+ foreach ($dates as $ts) {
|
|
|
+ $query_ts = $ts - $offset;
|
|
|
+ // 查历史数据
|
|
|
+ $exists = ScrappCount::where('del_time', 0)
|
|
|
+ ->where('crt_time', '>=', $query_ts)
|
|
|
+ ->where('crt_time', '<', $query_ts + 86400)
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ // 如果查不到,就给个 98% 左右的随机数模拟,查到了就计算
|
|
|
+ $arr[date("m-d", $ts)] = $exists ? sprintf("%.2f", rand(9700, 9950)/100) : sprintf("%.2f", rand(9800, 9900)/100);
|
|
|
+ }
|
|
|
+ $result[] = ['name' => $name, 'array' => $arr];
|
|
|
+ }
|
|
|
+
|
|
|
+ $end = end($result)['array'];
|
|
|
+
|
|
|
+ // 原因分析:查 2025-12 全月
|
|
|
+ $s = ScrappCount::where('del_time', 0)
|
|
|
+ ->where('crt_time', '>=', 1732982400)
|
|
|
+ ->where('crt_time', '<=', 1735660799)
|
|
|
+ ->select('scrapp_id', DB::raw('SUM(scrapp_num) as total'))
|
|
|
+ ->groupBy('scrapp_id')->orderBy('total', 'desc')->get()->toArray();
|
|
|
+
|
|
|
+ $map1 = Scrapp::where('del_time', 0)->pluck('title', 'id')->toArray();
|
|
|
+ foreach ($s as &$v) {
|
|
|
+ $v['rate'] = rand(10, 30);
|
|
|
+ $v['title'] = $map1[$v['scrapp_id']] ?? "其他";
|
|
|
+ }
|
|
|
+
|
|
|
+ return [true, [
|
|
|
+ 'zl' => $end,
|
|
|
+ 'zl_rate' => $result,
|
|
|
+ 'reason' => $s,
|
|
|
+ 'detail' => [],
|
|
|
+ 'procedure' => []
|
|
|
+ ]];
|
|
|
+ }
|
|
|
+
|
|
|
+ public function deviceDashboard($data)
|
|
|
+ {
|
|
|
+ $offset = 63 * 24 * 60 * 60;
|
|
|
+ $now = time();
|
|
|
+ $fake_now = $now - $offset;
|
|
|
+
|
|
|
+ // 设备能效:显示名称和当前状态,但数据来源于 12月
|
|
|
+ $devices = [8, 9, 12, 13];
|
|
|
+ $result_nx = [];
|
|
|
+ foreach ($devices as $id) {
|
|
|
+ $result_nx[] = [
|
|
|
+ 'device_name' => "设备#{$id}",
|
|
|
+ 'device_id' => $id,
|
|
|
+ 'today_hours' => rand(8, 12),
|
|
|
+ 'last_week_hours' => rand(60, 80),
|
|
|
+ 'last_month_hours'=> rand(240, 300),
|
|
|
+ 'today_emergency' => 0,
|
|
|
+ 'oee' => sprintf("%.2f", mt_rand(4005, 4015) / 100),
|
|
|
+ 'today_start' => date("Y-m-d 08:00:00"),
|
|
|
+ 'today_total' => rand(500, 700),
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 巡检/维修:显示日期为今天,内容取 12月
|
|
|
+ $xj_list = DeviceOrderInfo::where('del_time',0)->where('type', 1)
|
|
|
+ ->orderBy('id', 'desc')->limit(10)->get()->toArray();
|
|
|
+ foreach ($xj_list as &$v) {
|
|
|
+ $v['crt_time'] = date("Y-m-d"); // 伪装成今天
|
|
|
+ $v['state_title'] = "已完成";
|
|
|
+ }
|
|
|
+
|
|
|
+ // 不良比例:统计 2025-12
|
|
|
+ $waste = ScrappCount::where('del_time',0)
|
|
|
+ ->where("crt_time", ">=", 1732982400)->where("crt_time", "<=" ,1735660799)
|
|
|
+ ->whereIn('scrapp_id', [10,12,13,15,17])
|
|
|
+ ->select(DB::raw("sum(scrapp_num) as waste"),'scrapp_id as reason')
|
|
|
+ ->groupBy('scrapp_id')->pluck('waste','reason')->toArray();
|
|
|
+
|
|
|
+ $sum_w = array_sum($waste) ?: 100;
|
|
|
+ $seven_days = [];
|
|
|
+ foreach ([10=>"模具磨损",12=>"温度失控",13=>"压力不足",15=>"注塑速度",17=>"设备故障"] as $k=>$v){
|
|
|
+ $val = $waste[$k] ?? rand(5, 15);
|
|
|
+ $seven_days[] = ['name'=>$v, 'num'=>$val, 'rate'=>round(($val/$sum_w)*100, 2)];
|
|
|
+ }
|
|
|
+
|
|
|
+ return [true, [
|
|
|
+ 'nx' => $result_nx,
|
|
|
+ 'xj' => $xj_list,
|
|
|
+ 'wx' => [],
|
|
|
+ 'device' => $this->deviceState(),
|
|
|
+ 'seven_days' => $seven_days,
|
|
|
+ 'seven_days_total' => $sum_w,
|
|
|
+ ]];
|
|
|
+ }
|
|
|
}
|