success('请求成功'); } //计划/排程/制程工单数量同步Redis public function numDbToRedis() { $numDbToRedis = []; //获取计划中的订单数量 $jhz = db('工单_基本资料') ->where('gd_statu','like','%计划中%') ->count('Gd_gdbh'); if($jhz!==false){ $numDbToRedis['jhz'] = $jhz; }else{ $numDbToRedis['jhz'] = 0; } //获取生产中的所有数据 $rows = db('工单_基本资料') ->distinct('Gd_gdbh') ->where('gd_statu','like','%生产中%') ->column('Gd_gdbh'); if($rows===false){ $numDbToRedis['pcz'] = 0; $numDbToRedis['zcz'] = 0; $bool = cache('numDbToRedis',$jhz); if($bool===false) $this->error('订单数量存入redis失败','','000001'); $this->success('请求成功'); } //查询Gy0_sj1不等于1900-01-01 00:00:00的数据 $data = db('工单_印件资料')->alias('y') ->join('工单_工艺资料 g','y.Yj_Gdbh = g.Gy0_gdbh AND y.yj_Yjno = g.Gy0_yjno') ->where('g.Gy0_sj1','<>','1900-01-01 00:00:00') ->where('y.Yj_Gdbh','in',$rows) ->group('y.Yj_Gdbh') ->column('y.Yj_Gdbh'); $zcz = count($data); $pcz = count($rows) - count($data); $numDbToRedis['pcz'] = $pcz; $numDbToRedis['zcz'] = $zcz; $bool = cache('numDbToRedis',$numDbToRedis); if($bool===false) $this->error('订单数量存入redis失败','','000002'); $this->success('同步成功'); } //获取计划中工单数量 public function getJhzByRedis() { $row = cache('numDbToRedis'); if($row){ $data = [ 'status'=>0, 'msg'=>'', 'data'=>[ 'name'=>'', 'value'=>$row['jhz'] ] ]; return json($data); }else{ $data = [ 'status'=>0, 'msg'=>'失败', 'data'=>[ 'name'=>'', 'value'=>'' ] ]; return json($data); } } //获取排程中工单数量 public function getPczByRedis() { $row = cache('numDbToRedis'); if($row){ $data = [ 'status'=>0, 'msg'=>'', 'data'=>[ 'name'=>'', 'value'=>$row['pcz'] ] ]; return json($data); }else{ $data = [ 'status'=>0, 'msg'=>'失败', 'data'=>[ 'name'=>'', 'value'=>'' ] ]; return json($data); } } //获取制程中工单数量 public function getZczByRedis() { $row = cache('numDbToRedis'); if($row){ $data = [ 'status'=>0, 'msg'=>'', 'data'=>[ 'name'=>'', 'value'=>$row['zcz'] ] ]; return json($data); }else{ $data = [ 'status'=>0, 'msg'=>'失败', 'data'=>[ 'name'=>'', 'value'=>'' ] ]; return json($data); } } //印刷车间生产进度数据同步Redis public function yscjDbToRedis() { $yscjDbToRedis = []; //获取所有印刷车间 $rows = db('设备_基本资料') ->where('使用部门','印刷车间') ->column('设备编号'); foreach($rows as $value){ $row = db('设备_产量采集')->alias('c') ->field('c.设备编号 as 机台号, c.工单编号 as 在产工单号, j.Gd_cpmc as 工单名称, c.工序名称 as 工序, g.Gy0_计划接货数 as 计划产量, g.Gy0_小时产能 as 小时产能, c.当前状态 as 机台状态 ') ->join('工单_工艺资料 g','c.设备编号 = g.Gy0_sbbh AND c.工单编号 = g.Gy0_gdbh AND c.印件号 = g.Gy0_yjno') ->join('工单_基本资料 j','j.Gd_gdbh = c.工单编号') ->where('c.设备编号',$value) ->order('c.UniqId desc') ->find(); if(!$row) continue; $cl = db('设备_产量计酬') ->where(['sczl_gdbh'=>$row['在产工单号'], 'sczl_jtbh' => $row['机台号']]) ->sum('sczl_cl'); $row['已完成产量'] = $cl; array_push($yscjDbToRedis, $row); } $bool = cache('yscjDbToRedis',$yscjDbToRedis); if($bool===false) $this->error('存入redis失败','','000002'); $this->success('同步成功'); } //印后车间生产进度数据同步Redis public function yhcjDbToRedis() { $yhcjDbToRedis = []; //获取所有印后车间 $rows = db('设备_基本资料') ->where('使用部门','印后车间') ->column('设备编号'); foreach($rows as $value){ $row = db('设备_产量采集')->alias('c') ->field('c.设备编号 as 机台号, c.工单编号 as 在产工单号, j.Gd_cpmc as 工单名称, c.工序名称 as 工序, g.Gy0_计划接货数 as 计划产量, g.Gy0_小时产能 as 小时产能, c.当前状态 as 机台状态 ') ->join('工单_工艺资料 g','c.设备编号 = g.Gy0_sbbh AND c.工单编号 = g.Gy0_gdbh AND c.印件号 = g.Gy0_yjno') ->join('工单_基本资料 j','j.Gd_gdbh = c.工单编号') ->where('c.设备编号',$value) ->order('c.UniqId desc') ->find(); if(!$row) continue; $cl = db('设备_产量计酬') ->where(['sczl_gdbh'=>$row['在产工单号'], 'sczl_jtbh' => $row['机台号']]) ->sum('sczl_cl'); $row['已完成产量'] = $cl; array_push($yhcjDbToRedis, $row); } $bool = cache('yhcjDbToRedis',$yhcjDbToRedis); if($bool===false) $this->error('存入redis失败','','000002'); $this->success('同步成功'); } //获取印刷车间生产进度数据 public function getYscjByRedis() { $row = cache('yscjDbToRedis'); $result['columns']=[ ['name'=>'机台号','id'=>'jtbh','width'=>'11','autoWrap'=>"true",'textAlign'=>'left'], ['name'=>'在产工单号','id'=>'gdbh','width'=>'15','textAlign'=>'left'], ['name'=>'工单名称','id'=>'gdmc','width'=>'35','autoWrap'=>"true",'textAlign'=>'left'], ['name'=>'工序','id'=>'gx','width'=>'15','textAlign'=>'left'], ['name'=>'计划产量','id'=>'jhcl','width'=>'8','autoWrap'=>"true",'textAlign'=>'left'], ['name'=>'已完成产量','id'=>'wccl','width'=>'9','autoWrap'=>"true",'textAlign'=>'center'], ['name'=>'小时产能','id'=>'xscn','width'=>'8','autoWrap'=>"true",'textAlign'=>'center'], ['name'=>'机台状态','id'=>'status','width'=>'8','autoWrap'=>"true",'textAlign'=>'center'], ]; if($row){ foreach($row as $k=>$v){ $result['rows'][$k]['jtbh']=$v['机台号']; $result['rows'][$k]['gdbh']=$v['在产工单号']; $result['rows'][$k]['gdmc']=$v['工单名称']; $result['rows'][$k]['gx']=$v['工序']; $result['rows'][$k]['jhcl'] = $v['计划产量']; $result['rows'][$k]['wccl'] = $v['已完成产量']; $result['rows'][$k]['xscn'] = $v['小时产能']; $result['rows'][$k]['status'] = $v['机台状态']; } } $res['status']=0; $res['msg']=''; $res['data']=$result; return json($res); } //获取印后车间生产进度数据 public function getYhcjByRedis() { $row = cache('yhcjDbToRedis'); $result['columns']=[ ['name'=>'机台号','id'=>'jtbh','width'=>'11','autoWrap'=>"true",'textAlign'=>'left'], ['name'=>'在产工单号','id'=>'gdbh','width'=>'15','textAlign'=>'left'], ['name'=>'工单名称','id'=>'gdmc','width'=>'35','autoWrap'=>"true",'textAlign'=>'left'], ['name'=>'工序','id'=>'gx','width'=>'15','textAlign'=>'left'], ['name'=>'计划产量','id'=>'jhcl','width'=>'8','autoWrap'=>"true",'textAlign'=>'left'], ['name'=>'已完成产量','id'=>'wccl','width'=>'9','autoWrap'=>"true",'textAlign'=>'center'], ['name'=>'小时产能','id'=>'xscn','width'=>'8','autoWrap'=>"true",'textAlign'=>'center'], ['name'=>'机台状态','id'=>'status','width'=>'8','autoWrap'=>"true",'textAlign'=>'center'], ]; if($row){ foreach($row as $k=>$v){ $result['rows'][$k]['jtbh']=$v['机台号']; $result['rows'][$k]['gdbh']=$v['在产工单号']; $result['rows'][$k]['gdmc']=$v['工单名称']; $result['rows'][$k]['gx']=$v['工序']; $result['rows'][$k]['jhcl'] = $v['计划产量']; $result['rows'][$k]['wccl'] = $v['已完成产量']; $result['rows'][$k]['xscn'] = $v['小时产能']; $result['rows'][$k]['status'] = $v['机台状态']; } } $res['status']=0; $res['msg']=''; $res['data']=$result; return json($res); } //车间产量数据同步Redis public function jtClDbToRedis() { $jtClDbToRedis = []; //获取机台 $rows = db('设备_基本资料') ->whereNotNull('sys_sbID') ->column('设备编号'); //获取24小时内的hour组成数组 $hour = date('H'); $arr1 = range($hour+1,'23'); $arr2 = range('00',$hour); $arr = array_merge($arr1,$arr2); $arr = array_map(function($num) { return sprintf("%02d", $num); }, $arr); foreach($rows as $value){ $brr = []; //查询该机台24内的产量数据 $row = db('设备_产量计酬') ->where('sys_rq', '>', date('Y-m-d H:i:s', strtotime('-23 hours'))) ->where('sczl_jtbh', $value) ->group('LEFT(sys_rq, 13)') ->order('sys_rq') ->column('DATE_FORMAT(sys_rq, "%H") as hour, SUM(sczl_cl) as total_cl'); //将产量数据赋值给小时 foreach($arr as $v){ $brr[$v] = array_key_exists($v,$row) ? $row[$v] : '0'; } $jtClDbToRedis[$value] = $brr; } $bool = cache('jtClDbToRedis',$jtClDbToRedis); if($bool===false) $this->error('存入redis失败','','000002'); $this->success('同步成功'); } //获取机台产量数据 public function getJtClDbByRedis() { $req = $this->request->param(); if (isset($req['jtbh']) && !empty($req['jtbh'])){ $jtbh = $req['jtbh']; }else{ $this->error('参数错误'); } $row = cache('jtClDbToRedis'); $result['categories']=[]; $result['series'][0]['name']=$jtbh; $result['series'][0]['data']=[]; if($row && array_key_exists($jtbh,$row)){ $result['categories'] = array_map('strval', array_keys($row[$jtbh])); $result['series'][0]['data'] = array_values($row[$jtbh]); } $res['status']=0; $res['msg']=''; $res['data']=$result; return json($res); } /** * 班组工作中心负荷 * @return void * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function bzDbToRedis() { $bzDbToRedis = []; //计算当天时间 $sczlTime = date('Y-m-d H:i:s',time()); if ($sczlTime>date('Y-m-d 00:00:00') && $sczlTimewhere('sys_sbID','<>','') ->where('使用部门','in',['印刷车间','印后车间']) ->field('设备编号') ->select(); //循环获取班组、工单、生产数据 foreach ($machineList as $key=>$value){ //获取正在生产工单信息 $workOrder = \db('设备_产量采集') ->where('设备编号',$value['设备编号']) ->field('工单编号,印件号,工序号,工序名称,当前状态') ->order('UniqId desc') ->find(); if (!$workOrder) continue; //获取生产信息 $list = db('设备_产量计酬') ->alias('a') ->join('工单_基本资料 b','b.Gd_gdbh = a.sczl_gdbh') ->join('工单_工艺资料 c','a.sczl_gdbh = c.Gy0_gdbh AND a.sczl_yjno = c.Gy0_yjno AND a.sczl_gxh = c.Gy0_gxh') ->field([ 'SUM(a.sczl_cl)' => '已完成产量', 'b.成品名称' => '产品名称', 'c.Gy0_计划接货数' => '计划产量', 'c.Gy0_小时产能' => '小时产能', 'a.sczl_bzdh' => '班组代号' ]) ->where([ 'a.sczl_jtbh' => $value['设备编号'], 'a.sczl_gdbh' => $workOrder['工单编号'], 'a.sczl_yjno' => $workOrder['印件号'], 'a.sczl_gxh' => $workOrder['工序号'], 'a.sczl_rq' => $time ]) ->group('a.sczl_jtbh,a.sczl_bzdh') ->select(); if (!$list) continue; foreach ($list as $v){ $v['机台号'] = $value['设备编号']; $v['机台状态'] = $workOrder['当前状态']; $v['工单编号'] = $workOrder['工单编号']; $v['印件号'] = $workOrder['印件号']; $v['工序名称'] = $workOrder['工序名称']; array_push($bzDbToRedis,$v); } } $bool = cache('bzDbToRedis',$bzDbToRedis); if($bool===false) $this->error('存入redis失败','','000002'); $this->success('同步成功'); } /** * 获取班组工作负荷数据 * @return \think\response\Json */ public function getBzByRedis() { $row = cache('bzDbToRedis'); $result['columns']=[ ['name'=>'机台号','id'=>'jtbh','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'], ['name'=>'班组','id'=>'bzdh','width'=>'16','autoWrap'=>"true",'textAlign'=>'left'], ['name'=>'在产工单号','id'=>'gdbh','width'=>'16','textAlign'=>'left'], ['name'=>'工单名称','id'=>'gdmc','width'=>'20','autoWrap'=>"true",'textAlign'=>'left'], ['name'=>'印件号','id'=>'yjno','width'=>'16','autoWrap'=>"true",'textAlign'=>'left'], ['name'=>'工序','id'=>'gx','width'=>'16','autoWrap'=>"true",'textAlign'=>'left'], ['name'=>'计划产量','id'=>'jhcl','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'], ['name'=>'已完成产量','id'=>'wccl','width'=>'14','autoWrap'=>"true",'textAlign'=>'center'], ['name'=>'小时产能','id'=>'xscn','width'=>'14','autoWrap'=>"true",'textAlign'=>'center'], ['name'=>'机台状态','id'=>'status','width'=>'14','autoWrap'=>"true",'textAlign'=>'center'], ]; if($row){ foreach($row as $k=>$v){ $result['rows'][$k]['jtbh']=$v['机台号']; $result['rows'][$k]['bzdh']=$v['班组代号']; $result['rows'][$k]['gdbh']=$v['工单编号']; $result['rows'][$k]['gdmc']=$v['产品名称']; $result['rows'][$k]['yjno']=$v['机台号']; $result['rows'][$k]['gx']=$v['工序名称']; $result['rows'][$k]['jhcl'] = $v['计划产量']; $result['rows'][$k]['wccl'] = $v['已完成产量']; $result['rows'][$k]['xscn'] = $v['小时产能']; $result['rows'][$k]['status'] = $v['机台状态']; } }else{ $result['rows'][0]['jtbh']=''; $result['rows'][0]['bzdh']=''; $result['rows'][0]['gdbh']=''; $result['rows'][0]['gdmc']=''; $result['rows'][0]['yjno']=''; $result['rows'][0]['gx']=''; $result['rows'][0]['jhcl'] = ''; $result['rows'][0]['wccl'] = ''; $result['rows'][0]['xscn'] = ''; $result['rows'][0]['status'] = ''; } $res['status']=0; $res['msg']=''; $res['data']=$result; return json($res); } }