123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 |
- <?php
- namespace App\Http\Controllers\Api;
- use App\Model\Box;
- use App\Model\BoxDetail;
- use App\Model\DispatchSub;
- use App\Model\OrdersProductProcess;
- use App\Model\Process;
- use App\Model\SaleOrdersProduct;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- class ScreenController extends BaseController
- {
- //产值数据全览
- public function output_value(Request $request){
- $currentYear = Carbon::now()->year;
- $lastYear = $currentYear - 1;
- $currentMonth = Carbon::now()->month;
- $totalValueAllTime = SaleOrdersProduct::where('del_time',0)->sum('finished_num');
- $totalValueLastYear = SaleOrdersProduct::where('del_time',0)->whereRaw("YEAR(FROM_UNIXTIME(crt_time)) = $lastYear")->sum('finished_num');
- $totalValueCurrentYearMonth = SaleOrdersProduct::where('del_time',0)->whereRaw("YEAR(FROM_UNIXTIME(crt_time)) = $currentYear AND MONTH(FROM_UNIXTIME(crt_time)) = $currentMonth")->sum('finished_num');
- return $this->json_return(200,'',['total_time'=>$totalValueAllTime, 'total_last_year'=>$totalValueLastYear, 'total_current_month'=>$totalValueCurrentYearMonth]);
- }
- //项目进度
- public function order_process1(Request $request) {
- $result = SaleOrdersProduct::where('del_time',0)
- ->select(DB::raw('sum(order_quantity) as total'), DB::raw('sum(finished_num) as finished_num'),'out_order_no as Code','customer_name as CustomerName')
- ->groupBy('out_order_no')
- ->get()->toArray();
- if(! empty($result)){
- foreach ($result as $key => $value){
- $result[$key]['rate'] = intval($value['finished_num'] / $value['total']);
- unset($result[$key]['total']);
- unset($result[$key]['finished_num']);
- }
- }
- return $this->json_return(200,'',$result);
- }
- //历史项目 在手项目
- public function project_region(Request $request){
- $all = SaleOrdersProduct::where('del_time',0)
- ->whereColumn('order_quantity','=','finished_num')
- ->select('out_order_no')
- ->groupBy('out_order_no')
- ->get()
- ->toArray();
- $all = array_column($all,'out_order_no');
- $not_all = SaleOrdersProduct::where('del_time',0)
- ->whereColumn('order_quantity','<>','finished_num')
- ->select('out_order_no')
- ->groupBy('out_order_no')
- ->get()
- ->toArray();
- $not_all = array_column($not_all,'out_order_no');
- $all = array_diff($all, $not_all);
- $arr = [
- "all_num" => count($all),
- "num" => count($not_all),
- ];
- return $this->json_return(200,'',$arr);
- }
- //本月质量
- public function output_value_month1(Request $request){
- $date = date('Ymd',time());
- $startDate = strtotime(date('Y-m-01 00:00:00', time()));
- $endDate = strtotime(date('Y-m-t 23:59:59', time()));
- //工序-----------------------------
- $model = new OrdersProductProcess(['channel' => $date]);//当前季度的数据
- $data = $model->where('del_time',0)
- ->where('status',4)
- ->select('crt_time')
- ->where('crt_time','>=',$startDate)
- ->where('crt_time','<=',$endDate)
- ->get()->toArray();
- $return = [];
- if(! empty($data)){
- foreach ($data as $value){
- $crt_time = date('Y-m-d',$value['crt_time']);
- if(isset($return[$crt_time])){
- $return[$crt_time]['num'] += 1;
- }else{
- $return[$crt_time] = [
- 'num' => 1,
- 'value' => $crt_time
- ];
- }
- }
- }
- $return = array_values($return);
- return $this->json_return(200,'',$return);
- }
- //产量趋势图
- public function output_value_efficiency(Request $request){
- // 获取当前时间戳
- $currentTimestamp = time();
- // 输出过去两周的起止时间(包括当前日期)
- $timestamp = strtotime("-13 days", $currentTimestamp);
- $startOfDay = strtotime(date('Y-m-d 00:00:00', $timestamp));
- $endOfDay = strtotime(date('Y-m-d 23:59:59', $currentTimestamp));
- $box = Box::where('del_time',0)
- ->where('crt_time','>=',$startOfDay)
- ->where('crt_time','<=',$endOfDay)
- ->select('crt_time','top_order_no','order_no')
- ->orderBy('crt_time','desc')
- ->get()->toArray();
- $result = [];
- if(! empty($box)){
- foreach ($box as $value){
- $model = new BoxDetail(['channel' => $value['top_order_no']]);
- $map = $model->where('del_time',0)
- ->where('order_no',$value['order_no'])
- ->select('order_no',DB::raw('sum(num) as num'))
- ->groupBy('order_no')
- ->pluck('num','order_no')
- ->toArray();
- $output = $map[$value['order_no']] ?? 0;
- $times = date('Y-m-d',$value['crt_time']);
- if(isset($result[$times])){
- $result[$times]['output'] += $output;
- }else{
- $result[$times] = [
- 'crt_time' => $times,
- 'output' => $output
- ];
- }
- }
- }
- $result = array_values($result);
- return $this->json_return(200,'',$result);
- }
- //工序负荷全览
- public function capacity(Request $request){
- $date = date('Ymd',time());
- //工序-----------------------------
- $model = new OrdersProductProcess(['channel' => $date]);//当前季度的数据
- $data = $model->where('del_time',0)
- ->where('status',2)
- ->select('finished_time')
- ->get()->toArray();
- $return = [];
- if(! empty($data)){
- foreach ($data as $value){
- $finished_time = date('Ymd',$value['finished_time']);
- if(isset($return[$finished_time])){
- $return[$finished_time] += 1;
- }else{
- $return[$finished_time] = 1;
- }
- }
- }
- $maxValue = empty($return) ? 0 : max($return);
- $today = $return[$date] ?? 0;
- $rate = $maxValue ? intval($today/$maxValue) : 0;
- //工序-----------------------------
- //包装-----------------------------
- $model = new BoxDetail(['channel' => $date]);//当前季度的数据
- $data = $model->where('del_time',0)
- ->select('crt_time','num')
- ->get()->toArray();
- $return = [];
- if(! empty($data)){
- foreach ($data as $value){
- $crt_time = date('Ymd',$value['crt_time']);
- if(isset($return[$crt_time])){
- $return[$crt_time] += $value['num'];
- }else{
- $return[$crt_time] = $value['num'];
- }
- }
- }
- $maxValue = empty($return) ? 0 : max($return);
- $today = $return[$date] ?? 0;
- $rate2 = $maxValue ? intval($today/$maxValue) : 0;
- //包装-----------------------------
- $arr = [
- [
- [
- "title"=> "压贴",
- "rate"=> $rate
- ],
- [
- "title"=> "包装",
- "rate"=> $rate2
- ]
- ],
- ];
- return $this->json_return(200,'',['data' => $arr]);
- }
- //设备信息 暂时不做
- public function product_num(Request $request){
- $arr = [
- [
- "machine_day_num"=> "4903.69",
- "machine_month_num"=> "139.64",
- "machine_week_num"=> "47.21",
- "break_day_num"=> "0",
- "break_month_num"=> "10",
- "break_week_num"=> "3",
- "start_time"=> date("Y-m-d H:i:s",time()),
- "day_num"=> "766",
- "week_num"=> "4598",
- "month_num"=> "14489",
- "rate"=> "72"
- ],
- [
- "machine_day_num"=> "469591.19",
- "machine_month_num"=> "107.03",
- "machine_week_num"=> "35.23",
- "break_day_num"=> 0,
- "break_month_num"=> "210",
- "break_week_num"=> "18",
- "start_time"=> date("Y-m-d H:i:s",time()),
- "day_num"=> 0,
- "week_num"=> "2353",
- "month_num"=> "6255",
- "rate"=> 0
- ],
- [
- "machine_day_num"=> "0",
- "machine_month_num"=> "14.02",
- "machine_week_num"=> "6.88",
- "break_day_num"=> "0",
- "break_month_num"=> "0",
- "break_week_num"=> "0",
- "start_time"=> date("Y-m-d H:i:s",time()),
- "day_num"=> "0",
- "week_num"=> "494",
- "month_num"=> "3058",
- "rate"=> "0"
- ],
- [
- "machine_day_num"=> "4903.77",
- "machine_month_num"=> "149.14",
- "machine_week_num"=> "56.72",
- "break_day_num"=> "0",
- "break_month_num"=> "0",
- "break_week_num"=> "0",
- "start_time"=> date("Y-m-d H:i:s",time()),
- "day_num"=> "626",
- "week_num"=> "4460",
- "month_num"=> "13034",
- "rate"=> "48"
- ]
- ];
- return $this->json_return(200,'',$arr);
- }
- //在制工单
- public function work_order(Request $request){
- // 获取当前时间戳
- $currentTimestamp = time();
- $timestamp = strtotime("-3 months", $currentTimestamp);
- $startOfDay = strtotime(date('Y-m-d 00:00:00', $timestamp));
- $endOfDay = strtotime(date('Y-m-d 23:59:59', $currentTimestamp));
- $result = DispatchSub::where('del_time',0)
- ->where('crt_time',">=", $startOfDay)
- ->where('crt_time',"<=", $endOfDay)
- ->whereColumn('dispatch_quantity','>','finished_num')
- ->select('dispatch_no as order_no','process_id','product_title','dispatch_quantity as product_num','finished_num as finish_num')
- ->get()->toArray();
- if(! empty($result)){
- $process_id = array_unique(array_column($result,'process_id'));
- $processMap = Process::whereIn('id',$process_id)
- ->pluck('title','id')
- ->toArray();
- foreach ($result as $key => $value){
- $result[$key]['procedure'] = $processMap[$value['process_id']] ?? '';
- }
- }
- return $this->json_return(200,'',$result);
- }
- //待加工
- public function nu_work_order(Request $request){
- $date = date('Ymd',time());
- //工序-----------------------------
- $model = new OrdersProductProcess(['channel' => $date]);//当前季度的数据
- $result = $model->where('del_time',0)
- ->where('status',0)
- ->select('production_no as order_no','product_title','process_id',DB::raw('count(id) as product_num'))
- ->groupBy('order_product_id')
- ->get()->toArray();
- if(! empty($result)){
- $process_id = array_unique(array_column($result,'process_id'));
- $processMap = Process::whereIn('id',$process_id)
- ->pluck('title','id')
- ->toArray();
- foreach ($result as $key => $value){
- $result[$key]['procedure'] = $processMap[$value['process_id']] ?? '';
- }
- }
- return $this->json_return(200,'',$result);
- }
- }
|