|
|
@@ -1,473 +1,341 @@
|
|
|
<?php
|
|
|
-
|
|
|
namespace app\api\controller;
|
|
|
-
|
|
|
use app\common\controller\Api;
|
|
|
-
|
|
|
+use think\Controller;
|
|
|
+use think\Db;
|
|
|
/**
|
|
|
- * 首页接口
|
|
|
+ * 达成大屏数据接口
|
|
|
*/
|
|
|
-class Index extends Api
|
|
|
-{
|
|
|
+class Index extends Controller{
|
|
|
protected $noNeedLogin = ['*'];
|
|
|
protected $noNeedRight = ['*'];
|
|
|
+ /**首页*/
|
|
|
+ public function index(){$this->success('成功');}
|
|
|
|
|
|
/**
|
|
|
- * 首页
|
|
|
- *
|
|
|
+ *近30天班组生产效率完成情况【缓存】
|
|
|
*/
|
|
|
- public function index()
|
|
|
- {
|
|
|
- $this->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);
|
|
|
+ public function bzDbToRedis(){
|
|
|
+ //存缓存Redis
|
|
|
+ $redis = redis();
|
|
|
+ $redis_key = md5('bzDbToRedis');
|
|
|
|
|
|
- $numDbToRedis['pcz'] = $pcz;
|
|
|
- $numDbToRedis['zcz'] = $zcz;
|
|
|
- $bool = cache('numDbToRedis',$numDbToRedis);
|
|
|
- if($bool===false) $this->error('订单数量存入redis失败','','000002');
|
|
|
- $this->success('同步成功');
|
|
|
+ // 获取当天的日期
|
|
|
+ $todays = date('Y-8-d');
|
|
|
+ $today = date('Y-m-d');
|
|
|
+ // 查询设备_产量计酬表,当日班组报工产量情况,排除车缝班组,按班组和日期分组并累计数量
|
|
|
+ $res = db('设备_产量计酬')
|
|
|
+ ->alias('c')
|
|
|
+ ->where('c.sczl_bh', 'not like', '%车缝%') // 排除车缝班组
|
|
|
+ ->where('c.sys_rq', '>=', $todays . ' 00:00:00') // 当日开始时间
|
|
|
+ ->where('c.sys_rq', '<=', $today . ' 23:59:59') // 当日结束时间
|
|
|
+ ->whereNull('c.mod_rq') // 删除日期为空
|
|
|
+ ->field('c.sczl_bh, SUM(c.ci_num) as total_num, DATE(c.sys_rq) as date') // 班组编号,数量累计,日期
|
|
|
+ ->group('c.sczl_bh, DATE(c.sys_rq)') // 按班组编号和日期分组
|
|
|
+ ->select();
|
|
|
+ $redis->set($redis_key, json_encode($res));
|
|
|
+ echo date("Y-m-d H:i:s").'存进去了';
|
|
|
+ return $res;
|
|
|
}
|
|
|
|
|
|
- //获取计划中工单数量
|
|
|
- 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);
|
|
|
- }
|
|
|
+ /**
|
|
|
+ *近30天班组生产效率完成情况【接口】
|
|
|
+ */
|
|
|
+ public function getBzByRedis(){
|
|
|
+ $redis = redis();
|
|
|
+ $row = json_decode($redis->get(md5('bzDbToRedis')), true);
|
|
|
+ echo "<pre>";
|
|
|
+ print_r($row);
|
|
|
+ echo "<pre>";
|
|
|
}
|
|
|
|
|
|
- //获取排程中工单数量
|
|
|
- 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 numDbToRedis(){
|
|
|
+ //存缓存Redis
|
|
|
+ $redis = redis();
|
|
|
+ $redis_key = md5('numDbToRedis');
|
|
|
|
|
|
- //获取制程中工单数量
|
|
|
- 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);
|
|
|
- }
|
|
|
+ // 获取当天的日期
|
|
|
+ $todays = date('Y-8-d');
|
|
|
+ $today = date('Y-m-d');
|
|
|
+ // 查询设备_产量计酬表,当日班组报工产量情况,排除车缝班组,按班组和日期分组并累计数量
|
|
|
+ $res = db('设备_产量计酬')
|
|
|
+ ->alias('c')
|
|
|
+ ->where('c.sczl_bh', 'not like', '%车缝%') // 排除车缝班组
|
|
|
+ ->where('c.sys_rq', '>=', $todays . ' 00:00:00') // 当日开始时间
|
|
|
+ ->where('c.sys_rq', '<=', $today . ' 23:59:59') // 当日结束时间
|
|
|
+ ->whereNull('c.mod_rq')
|
|
|
+ ->field('c.sczl_bh, SUM(c.ci_num) as total_num, DATE(c.sys_rq) as date') // 班组编号,数量累计,日期
|
|
|
+ ->group('c.sczl_bh, DATE(c.sys_rq)') // 按班组编号和日期分组
|
|
|
+ ->select();
|
|
|
+ echo "<pre>";
|
|
|
+ print_r($res);
|
|
|
+ echo "<pre>";die;
|
|
|
+ $redis->set($redis_key, json_encode($res));
|
|
|
+ echo date("Y-m-d H:i:s").'存进去了';
|
|
|
+ return $res;
|
|
|
}
|
|
|
|
|
|
- //印刷车间生产进度数据同步Redis
|
|
|
- public function yscjDbToRedis()
|
|
|
- {
|
|
|
- $yscjDbToRedis = [];
|
|
|
-
|
|
|
- //获取所有印刷车间
|
|
|
- $rows = db('设备_基本资料')
|
|
|
- ->where('使用部门','印刷车间')
|
|
|
- ->column('设备编号');
|
|
|
+ /**
|
|
|
+ *当日班组报工产量【接口】
|
|
|
+ */
|
|
|
+ public function getPczByRedis(){
|
|
|
+// $list=['categories'=>[$list2021['rq'],$list2022['rq'],$list2023['rq']],'series'=>[['name'=>'色令数',
|
|
|
+// 'data'=>[round($list2021['nyssl']/10000),round($list2022['nyssl']/10000),round($list2023['nyssl']/10000)]]]];
|
|
|
+// $res['status']=0;
|
|
|
+// $res['msg']='';
|
|
|
+// $res['data']=$list;
|
|
|
+// $redis->set($redis_key, json_encode($res));
|
|
|
+// return json_encode($res);
|
|
|
|
|
|
- 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 = redis();
|
|
|
+ $row = json_decode($redis->get(md5('numDbToRedis')), true);
|
|
|
+ echo "<pre>";
|
|
|
+ print_r($row);
|
|
|
+ echo "<pre>";
|
|
|
}
|
|
|
|
|
|
- //印后车间生产进度数据同步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 getJhzByRedis(){
|
|
|
+ //存缓存Redis
|
|
|
+ $redis = redis();
|
|
|
+ $redis_key = md5('getJhzByRedis');
|
|
|
|
|
|
- //获取印刷车间生产进度数据
|
|
|
- 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['机台状态'];
|
|
|
+ $startTime = date('Y-m-d', strtotime('-30 days'));
|
|
|
+ $endTime = date('Y-m-d');
|
|
|
+ // 修改查询条件为近30天
|
|
|
+ $where['b.Sys_rq'] = ['between', [$startTime, $endTime]];
|
|
|
+ $list = \db('设备_产量计酬')
|
|
|
+ ->alias('a')
|
|
|
+ ->join('工单_基本资料 b','a.订单编号 = b.订单编号')
|
|
|
+ ->join('工单_印件资料 c','a.订单编号 = c.订单编号 AND a.子订单编号 = c.子订单编号')
|
|
|
+ ->field('c.订单编号,c.子订单编号,c.款号,c.颜色,c.zdtotal as 制单总数,c.sctotal as 裁切总数,c.ck_rq as 出库日期,
|
|
|
+ SUM(a.数量) as 产量,a.工序名称,b.客户编号,b.单位')
|
|
|
+ ->where($where)
|
|
|
+ ->group('a.订单编号,a.工序名称')
|
|
|
+ ->order('c.Uniqid')
|
|
|
+ ->select();
|
|
|
+ $orderList = \db('设备_产量计酬')
|
|
|
+ ->alias('a')
|
|
|
+ ->join('工单_基本资料 b','a.订单编号 = b.订单编号')
|
|
|
+ ->join('工单_印件资料 c','a.订单编号 = c.订单编号 AND a.子订单编号 = c.子订单编号')
|
|
|
+ ->field('c.订单编号,c.子订单编号,c.款号,c.颜色,c.zdtotal as 制单总数,c.sctotal as 裁切总数,c.ck_rq as 出库日期,b.客户编号,b.单位')
|
|
|
+ ->where($where)
|
|
|
+ ->group('a.子订单编号')
|
|
|
+ ->order('c.Uniqid')
|
|
|
+ ->select();
|
|
|
+ foreach ($orderList as $key=>$value){
|
|
|
+ $data[$key] = $value;
|
|
|
+ foreach ($list as $k=>$v){
|
|
|
+ if ($value['子订单编号'] === $v['子订单编号']){
|
|
|
+ if (isset($data[$key][$v['工序名称']]) === false){
|
|
|
+ $data[$key][$v['工序名称']] = $v['产量'];
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- $res['status']=0;
|
|
|
- $res['msg']='';
|
|
|
- $res['data']=$result;
|
|
|
- return json($res);
|
|
|
+ $redis->set($redis_key, json_encode($data));
|
|
|
+ echo date("Y-m-d H:i:s").'存进去了';
|
|
|
+ return $data;
|
|
|
}
|
|
|
|
|
|
- //获取印后车间生产进度数据
|
|
|
- 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'],
|
|
|
+ /**
|
|
|
+ * 在产订单工序完工详情【接口】
|
|
|
+ */
|
|
|
+ public function getZczByRedis(){
|
|
|
+ $redis = redis();
|
|
|
+ $row = json_decode($redis->get(md5('getJhzByRedis')), true);
|
|
|
+
|
|
|
+ // 列定义
|
|
|
+ $result['columns'] = [
|
|
|
+ ['name' => '订单编号', 'id' => 'order', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'left'],
|
|
|
+ ['name' => '客户', 'id' => 'kehu', 'width' => '16', 'textAlign' => 'left'],
|
|
|
+ ['name' => '制单总数', 'id' => 'zdnum', 'width' => '20', 'autoWrap' => "true", 'textAlign' => 'left'],
|
|
|
+ ['name' => '单位', 'id' => 'dw', 'width' => '16', 'autoWrap' => "true", 'textAlign' => 'left'],
|
|
|
+ ['name' => '出库确认', 'id' => 'chuku', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'left'],
|
|
|
+ ['name' => '裁切', 'id' => 'caiqie', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'center'],
|
|
|
+ ['name' => '缝制小烫', 'id' => 'fegnzhi', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'center'],
|
|
|
+ ['name' => '后道收样', 'id' => 'houdao', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'center'],
|
|
|
+ ['name' => '大烫', 'id' => 'datang', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'center'],
|
|
|
+ ['name' => '总检', 'id' => 'zongjian', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'center'],
|
|
|
+ ['name' => '包装', 'id' => 'baozhaung', 'width' => '14', '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['机台状态'];
|
|
|
+
|
|
|
+ if ($row) {
|
|
|
+ foreach ($row as $k => $v) {
|
|
|
+ $result['rows'][$k]['order'] = $v['订单编号'];
|
|
|
+ $result['rows'][$k]['kehu'] = $v['客户编号'];
|
|
|
+ $result['rows'][$k]['zdnum'] = $v['制单总数'];
|
|
|
+ $result['rows'][$k]['dw'] = $v['单位'];
|
|
|
+
|
|
|
+ // 判断出库日期,设置出库确认
|
|
|
+ $result['rows'][$k]['chuku'] = isset($v['出库日期']) && !empty($v['出库日期']) ? '已出库' : '未出库';
|
|
|
+
|
|
|
+ $result['rows'][$k]['caiqie'] = $v['裁切'] ?? '';
|
|
|
+ $result['rows'][$k]['fegnzhi'] = $v['缝制小烫'] ?? '';
|
|
|
+ $result['rows'][$k]['houdao'] = $v['后道收样'] ?? '';
|
|
|
+ $result['rows'][$k]['datang'] = $v['大烫'] ?? '';
|
|
|
+ $result['rows'][$k]['zongjian'] = $v['总检'] ?? '';
|
|
|
+ $result['rows'][$k]['baozhaung'] = $v['包装'] ?? '';
|
|
|
}
|
|
|
+ } else {
|
|
|
+ // 如果没有数据,初始化空行
|
|
|
+ $result['rows'][0] = [
|
|
|
+ 'order' => '', 'kehu' => '', 'zdnum' => '', 'dw' => '', 'chuku' => '',
|
|
|
+ 'caiqie' => '', 'fegnzhi' => '', 'houdao' => '', 'datang' => '', 'zongjian' => '', 'baozhaung' => ''
|
|
|
+ ];
|
|
|
}
|
|
|
-
|
|
|
- $res['status']=0;
|
|
|
- $res['msg']='';
|
|
|
- $res['data']=$result;
|
|
|
+// echo "<pre>";print_r($result);echo "<pre>";die;
|
|
|
+
|
|
|
+ // 构造最终的返回数据
|
|
|
+ $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);
|
|
|
+ /**
|
|
|
+ *已制单样衣未审、已审核待生产、生产中未完成【缓存】
|
|
|
+ */
|
|
|
+ public function yscjDbToRedis(){
|
|
|
+ //存缓存Redis
|
|
|
+ $redis = redis();
|
|
|
+ $redis_key = md5('yscjDbToRedis');
|
|
|
+ $res = \db('工单_基本资料')
|
|
|
+ ->where('sys_rq', '>=', date('Y-m-d', strtotime('-30 days')))
|
|
|
+ ->select();
|
|
|
+ $redis->set($redis_key, json_encode($res));
|
|
|
+ echo date("Y-m-d H:i:s").'存进去了';
|
|
|
+ return $res;
|
|
|
+ }
|
|
|
|
|
|
- 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';
|
|
|
+ /**
|
|
|
+ *已制单样衣未审【接口】
|
|
|
+ */
|
|
|
+ public function yhcjDbToRedis(){
|
|
|
+ $redis = redis();
|
|
|
+ // 从 Redis 中获取数据
|
|
|
+ $row = json_decode($redis->get(md5('yscjDbToRedis')), true);
|
|
|
+ // 初始化计数器
|
|
|
+ $count = 0;
|
|
|
+ // 遍历数据,统计审核日期为空、mod_rq 为空、审核状态为空的数据
|
|
|
+ foreach ($row as $item) {
|
|
|
+ if (empty($item['审核日期']) && empty($item['Mod_rq']) && empty($item['审核'])) {
|
|
|
+ $count++;
|
|
|
}
|
|
|
- $jtClDbToRedis[$value] = $brr;
|
|
|
}
|
|
|
- $bool = cache('jtClDbToRedis',$jtClDbToRedis);
|
|
|
- if($bool===false) $this->error('存入redis失败','','000002');
|
|
|
- $this->success('同步成功');
|
|
|
+ // 构造返回数据
|
|
|
+ $result = [
|
|
|
+ 'name' => '已制单样衣未审',
|
|
|
+ 'value' => $count,
|
|
|
+ ];
|
|
|
+ // 构造最终的返回结构
|
|
|
+ $res = [
|
|
|
+ 'status' => 0,
|
|
|
+ 'msg' => '',
|
|
|
+ 'data' => [$result],
|
|
|
+ ];
|
|
|
+ // 返回JSON格式的结果
|
|
|
+ return json($res);
|
|
|
}
|
|
|
|
|
|
- //获取机台产量数据
|
|
|
- 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]);
|
|
|
+ /**
|
|
|
+ *已审核待生产【接口】
|
|
|
+ */
|
|
|
+ public function getYscjByRedis(){
|
|
|
+ $redis = redis();
|
|
|
+ // 从 Redis 中获取数据
|
|
|
+ $row = json_decode($redis->get(md5('yscjDbToRedis')), true);
|
|
|
+ // 初始化计数器
|
|
|
+ $count = 0;
|
|
|
+ // 遍历数据,统计审核日期为空、mod_rq 为空、审核状态为空的数据
|
|
|
+ foreach ($row as $item) {
|
|
|
+ if (empty($item['出库日期'])) {
|
|
|
+ $count++;
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- $res['status']=0;
|
|
|
- $res['msg']='';
|
|
|
- $res['data']=$result;
|
|
|
+ // 构造返回数据
|
|
|
+ $result = [
|
|
|
+ 'name' => '已审核待生产',
|
|
|
+ 'value' => $count,
|
|
|
+ ];
|
|
|
+ // 构造最终的返回结构
|
|
|
+ $res = [
|
|
|
+ 'status' => 0,
|
|
|
+ 'msg' => '',
|
|
|
+ 'data' => [$result],
|
|
|
+ ];
|
|
|
+ // 返回JSON格式的结果
|
|
|
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') && $sczlTime<date('Y-m-d 08:30:00')){
|
|
|
- $time = date('Y-m-d 00:00:00',time()-86400);
|
|
|
- }else{
|
|
|
- $time = date('Y-m-d 00:00:00');
|
|
|
- }
|
|
|
- //获取所有机台数据
|
|
|
- $machineList = db('设备_基本资料')
|
|
|
- ->where('sys_sbID','<>','')
|
|
|
- ->where('使用部门','in',['印刷车间','印后车间'])
|
|
|
- ->field('设备编号')
|
|
|
+ public function getJtClDbByRedis(){
|
|
|
+ //存缓存Redis
|
|
|
+ $redis = redis();
|
|
|
+ $redis_key = md5('getJtClDbByRedis');
|
|
|
+ $res = \db('工单_排程班次')
|
|
|
+ ->alias('a')
|
|
|
+ ->join('工单_印件资料 b','b.订单编号 = a.订单编号 AND a.子订单编号 = a.子订单编号')
|
|
|
+ ->join('设备_产量计酬 c','a.订单编号 = c.订单编号 AND a.子订单编号 = c.子订单编号','LEFT')
|
|
|
+ ->field('a.订单编号,a.子订单编号,b.款号,b.颜色,b.船样,b.zdtotal as 制单数,SUM(c.数量) as 已完成')
|
|
|
+ ->where('a.mod_rq',null)
|
|
|
->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('同步成功');
|
|
|
+ $redis->set($redis_key, json_encode($res));
|
|
|
+ echo date("Y-m-d H:i:s").'存进去了';
|
|
|
+ return $res;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取班组工作负荷数据
|
|
|
- * @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['机台状态'];
|
|
|
+ public function getYhcjByRedis(){
|
|
|
+ $redis = redis();
|
|
|
+ // 从 Redis 中获取数据
|
|
|
+ $row = json_decode($redis->get(md5('getJtClDbByRedis')), true);
|
|
|
+ // 初始化计数器
|
|
|
+ $count = 0;
|
|
|
+ // 遍历数据,统计未完成的记录条数
|
|
|
+ foreach ($row as $item) {
|
|
|
+ // 假设 '制单数' 是生产总数,'已完成' 是完成的数量
|
|
|
+ if (isset($item['制单数']) && isset($item['已完成'])) {
|
|
|
+ // 判断未完成数量是否大于0
|
|
|
+ if ($item['制单数'] > $item['已完成']) {
|
|
|
+ $count++;
|
|
|
+ }
|
|
|
}
|
|
|
- }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;
|
|
|
+ // 构造返回数据
|
|
|
+ $result = [
|
|
|
+ 'name' => '生产中未完成',
|
|
|
+ 'value' => $count,
|
|
|
+ ];
|
|
|
+ // 构造最终的返回结构
|
|
|
+ $res = [
|
|
|
+ 'status' => 0,
|
|
|
+ 'msg' => '',
|
|
|
+ 'data' => [$result],
|
|
|
+ ];
|
|
|
+ // 返回JSON格式的结果
|
|
|
return json($res);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public function jtClDbToRedis(){
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|