success('请求成功'); } /** * 设置机台状态 * @ApiMethod POST * @params */ public function setMachineStatus(){ if (Request::instance()->isPost() == false){ $this->error('非法请求'); } $params = Request::instance()->post(); if (!isset($params['machine']) || empty($params['machine'])){ $this->error('参数不能为空'); } $machine = $params['machine'].'#'; $data = []; // $lastData = \db('设备_产量采集')->where('设备编号',$machine)->order('UniqId desc')->find(); $lastData = \db('设备_产量采集') // ->where('设备编号',$machine) ->order('UniqId desc') ->find(); $id = $lastData['UniqId'] + 1; if (empty($params['order'])){ unset($lastData['UniqId']); $data = $lastData; $data['当前状态'] = $params['status']; }else{ $data['当前状态'] = $params['status']; $data['时间'] = date('Y-m-d H:i:s'); $data['设备编号'] = $machine; $data['工单编号'] = $params['order']; $data['印件号'] = $params['yjno']; $data['工序号'] = (int)substr($params['gy_name'],0,2); $data['工序名称'] = $params['gy_name']; $data['当班产量'] = $params['production_now']; $data['累计产量'] = $params['production_all']; $class = explode(',',$params['class']); $where = []; $where['sczl_jtbh'] = $machine; for ($i=1;$i<=count($class);$i++){ $where['sczl_bh'.$i] = $class[$i-1]; } // $classData = \db('设备_班组资料')->where($where)->field('sczl_bzdh,UniqId')->find(); $classData = \db('设备_班组资料')->where($where)->field('sczl_bzdh,UniqId')->find(); $data['班组编号'] = $classData['sczl_bzdh']; $data['班组ID'] = $classData['UniqId']; // 获取当前时间 $current_time = time(); // 设置时间范围 $start_time1 = strtotime(date('Y-m-d') . ' 08:30:00'); $end_time1 = strtotime(date('Y-m-d') . ' 20:30:00'); $end_time2 = strtotime(date('Y-m-d') . ' 24:00:00'); $start_time3 = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 08:30:00'); // 判断当前时间属于哪个时间范围 if ($current_time >= $start_time1 && $current_time <= $end_time1) { $data['开工时间'] = date('Y-m-d') . ' 08:30:00'; } elseif ($current_time > $end_time1 && $current_time <= $end_time2) { $data['开工时间'] = date('Y-m-d') . ' 20:30:00'; } elseif ($current_time > $end_time1 && $current_time <= $start_time3) { $data['开工时间'] = date('Y-m-d',strtotime('+1 day')) . ' 08:30:00'; } $option['Gy0_gdbh'] = $params['order']; $option['Gy0_yjno'] = $params['yjno']; $option['Gy0_gxh'] = $data['工序号']; $data['任务ID'] = \db('工单_工艺资料')->where($option)->value('UniqId'); } $data['UniqId'] = $id; // $sql = \db('设备_产量采集')->fetchSql(true)->insert($data); $sql = \db('设备_产量采集')->fetchSql(true)->insert($data); $res = Db::query($sql); if ($res === false){ $this->error('设置失败'); }else{ $this->success('设置成功'); } } /** * 设置工单工序完工 * @ApiMethod POST * @params string order * @params string yjno * @params string gxh */ public function setProcessStatus(){ if (Request::instance()->isPost() == false){ $this->error('非法请求'); } $params = Request::instance()->post(); if (!isset($params['order']) || empty($params['order'])){ $this->error('参数不能为空'); } if (!isset($params['yjno']) || empty($params['yjno'])){ $this->error('参数不能为空'); } if (!isset($params['gxh']) || empty($params['gxh'])){ $this->error('参数不能为空'); } $where['Gy0_gdbh'] = $params['order']; $where['Gy0_yjno'] = $params['yjno']; $where['Gy0_gxh'] = $params['gxh']; $date = date('Y-m-d H:i:s'); $res = \db('工单_工艺资料')->where($where)->setField('PD_WG',$date); if ($res === false){ $this->error('设置失败'); }else{ $this->success('设置成功'); } } /** * 根据机台获取生产信息 * @ApiMethod GET * @params string machine */ public function getProduceInfo(){ if (Request::instance()->isGet() == false) { $this->error('非法请求'); } $params = Request::instance()->param(); if (!isset($params['machine']) || empty($params['machine'])) { $this->error('参数错误'); } $machine = $params['machine'].'#'; $data = \db('设备_产量采集')->where('设备编号',$machine)->order('UniqId desc')->find(); $list = []; $list['order'] = $data['工单编号']; $list['yjno'] = $data['印件号']; $name = \db('工单_基本资料')->where('Gd_Gdbh',$data['工单编号'])->value('成品名称'); $list['product_name'] = rtrim($name); $where['Gy0_gdbh'] = $data['工单编号']; $where['Gy0_yjno'] = $data['印件号']; $where['Gy0_gxh'] = $data['工序号']; $gxmc = \db('工单_工艺资料')->where($where)->value('Gy0_gxmc'); $list['gxmc'] = rtrim($gxmc); $this->success('请求成功',$list); } /** * 根据员工编号获取姓名 * @ApiMethod GET * @params string code */ public function getStaffName(){ if (Request::instance()->isGet() == false) { $this->error('非法请求'); } $params = Request::instance()->param(); if (!isset($params['code']) || empty($params['code'])) { $this->error('参数错误'); } $data = \db('人事_基本资料')->where('员工编号',$params['code'])->value('员工姓名'); if (empty($data)){ $data = \db('人事_基本资料')->where('pycode',$params['code'])->value('员工姓名'); } $this->success('请求成功',rtrim($data)); } /** * 根据员工编号获取姓名-优化 * @ApiMethod GET * @params string code */ public function getStaffNameTwo(){ if (Request::instance()->isGet() == false) { $this->error('非法请求'); } $params = Request::instance()->param(); if (!isset($params['code']) || empty($params['code'])) { $this->error('参数错误'); } $data = \db('人事_基本资料')->where('员工编号',$params['code'])->field('员工姓名')->select(); if (empty($data)){ $data = \db('人事_基本资料')->where('pycode',$params['code'])->field('rtrim(员工姓名) as 员工姓名')->select(); } $num = count($data); $res['total'] = $num; $res['data'] = $data; $this->success('请求成功',$res); } /** * 提交巡查记录 * @ApiMethod POST * @params */ public function submitPatrolRecord(){ if (Request::instance()->isPost() == false){ $this->error('非法请求'); } $params = Request::instance()->post(); if (empty($params['machine']) || empty($params['type']) || empty($params['order'])) { $this->error('参数错误'); } if (empty($params['yjno']) || empty($params['process']) || empty($params['no'])) { $this->error('参数错误'); } $data = []; $data['类别'] = $params['type']; $data['工单编号'] = $params['order']; $data['印件号'] = $params['yjno']; $data['工序名称'] = ''; $data['班组编号'] = ''; $data['开工时间'] = ''; $data['流程单号'] = $params['process']; $data['设备编号'] = $params['machine'].'#'; $data['检验项目'] = '['.$params['no'].'/'.$params['name'].']'; $data['检验备注'] = $params['remark']; $data['提交时间'] = date('Y-m-d H:i:s'); $data['sys_rq'] = date('Y-m-d H:i:s'); $produce = \db('设备_产量采集')->where('设备编号',$params['machine'].'#')->where('工单编号',$params['order'])->order('UniqId desc')->find(); // $produce = \db('设备_产量采集')->where('设备编号',$params['machine'].'#')->where('工单编号',$params['order'])->order('UniqId desc')->find(); if (!empty($produce)){ $data['工序名称'] = $produce['工序名称']; $data['班组编号'] = rtrim($produce['班组编号']); $data['开工时间'] = $produce['开工时间']; } // $res = \db('制程检验_记录')->field('UniqId')->order('UniqId desc')->find(); $res = \db('制程检验_记录')->field('UniqId')->order('UniqId desc')->find(); if (empty($res['UniqId'])){ $data['UniqId'] = 1; }else{ $data['UniqId'] = $res['UniqId'] + 1; } // $sql = \db('制程检验_记录')->fetchSql(true)->insert($data); $sql = \db('制程检验_记录')->fetchSql(true)->insert($data); $result = Db::query($sql); if ($result === false){ $this->error('提交失败'); }else{ $this->success('提交成功'); } } /** * 获取报工单其他信息 * @ApiMethod Get * @params string machine */ public function getMachineReportInfo(){ if (Request::instance()->isGet() == false) { $this->error('非法请求'); } $params = Request::instance()->param(); if (!isset($params['machine']) || empty($params['machine'])) { $this->error('参数错误'); } $machine = $params['machine'].'#'; $data = []; $produce = \db('设备_产量采集')->where('设备编号',$machine)->order('UniqId desc')->find(); if (empty($produce)){ $this->error('无此设备数据'); } $data['order_info']['order'] = $produce['工单编号']; $data['order_info']['yjno'] = $produce['印件号']; $data['order_info']['gxh'] = $produce['工序号']; $data['order_info']['gxmc'] = $produce['工序名称']; $data['order_info']['dedh'] = \db('dic_lzde')->where('适用机型',$machine)->value('sys_bh'); $product = \db('工单_基本资料')->alias('a') ->join('工单_工艺资料 b','a.Gd_Gdbh = b.Gy0_gdbh','left') ->join('工单_印件资料 c','a.Gd_Gdbh = c.Yj_gdbh','left') ->field('a.成品名称,b.Gy0_gxmc,b.Gy0_ms,b.Gy0_ls,c.yj_yjmc') ->where('a.Gd_Gdbh',$produce['工单编号']) ->where('b.Gy0_yjno',$produce['印件号']) ->where('b.Gy0_gxh',$produce['工序号']) ->where('c.Yj_yjno',$produce['印件号']) ->select(); if (empty($product)){ $this->error('无此工单数据'); } $data['order_info']['product_name'] = ''; $data['order_info']['yj_name'] = ''; $data['order_info']['gy_name'] = ''; if (!empty($product)){ $data['order_info']['product_name'] = rtrim($product[0]['成品名称']); $data['order_info']['yj_name'] = rtrim($product[0]['yj_yjmc']); $data['order_info']['gy_name'] = rtrim($product[0]['Gy0_gxmc']); $data['order_info']['Gy0_ms'] = rtrim($product[0]['Gy0_ms']); $data['order_info']['Gy0_ls'] = rtrim($product[0]['Gy0_ls']); } $class = \db('设备_班组资料')->where('UniqId',$produce['班组ID'])->find(); for ($i=1;$i<11;$i++){ $name = ''; if (!empty($class['sczl_bh'.$i])){ $name = \db('人事_基本资料')->where('员工编号',$class['sczl_bh'.$i])->value('员工姓名'); } $class['sczl_name'.$i] = rtrim($name); } $data['class'] = $class; $where['st_gdbh'] = $produce['工单编号']; $machine = substr($machine,0,2); if ($machine == 'JY' || $machine == 'QZ'){ $where['st_dpt'] = '胶印车间'; }elseif ($machine == 'WY' || $machine == 'DW'){ $where['st_dpt'] = '凹印车间'; }elseif ($machine == 'SY' || $machine == 'PM'){ $where['st_dpt'] = '丝印车间'; }elseif ($machine == 'MQ' || $machine == 'TJ'){ $where['st_dpt'] = '烫模车间'; }elseif ($machine == 'JP'){ $where['st_dpt'] = '检验车间'; } $material = \db('物料_收发记录') ->alias('a') ->join('工单_bom资料 b', 'a.st_gdbh = b.BOM_工单编号 AND a.st_wlbh = b.BOM_物料编码','left') ->where($where) ->field('RTRIM(a.供方批次) as batch, rtrim(采购单号) as 采购单号, st_wlbh, MIN(a.Uniqid) AS Uniqid, rtrim(b.BOM_物料名称) as BOM_物料名称') ->group('batch') ->order('a.st_wlbh') ->select(); $data['bom'] = $material; $this->success('请求成功',$data); } /** * 日产量上报 * @ApiMethod POST * @params array data */ public function submitDailyProduction(){ if (Request::instance()->isPost() == false){ $this->error('非法请求'); } $params = Request::instance()->post(); $time = date('Y-m-d 00:00:00',time()-86400); if ($params['sczl_sj2']date('Y-m-d 00:00:00')){ $params['sczl_rq'] = $time; } $machine = $params['sczl_jtbh'].'#'; $batchData = []; //批次追踪数据 $batch = $params['bom']; $data = $params;//产量数据 $data['sczl_type'] = $params['sczl_gxmc']; $data['sczl_前工序废'] = $params['last_fp']; $data['sczl_来料少数'] = $params['less_sl']; $data['sczl_装版总工时'] = $params['zb_time']; $data['sczl_打样总工时'] = $params['dy_time']; $data['sczl_设备运行工时'] = $params['run_time']; $data['sczl_jtbh'] = $machine; $data['码包'] = $params['code']; $data['主电表'] = $params['main_meter']; $data['辅电表'] = $params['auxiliary_meter']; unset($data['last_fp']); unset($data['less_sl']); unset($data['zb_time']); unset($data['dy_time']); unset($data['run_time']); unset($data['code']); unset($data['main_meter']); unset($data['auxiliary_meter']); unset($data['bom']); $start_time = \db('设备_产量采集')->where('设备编号',$machine)->order('UniqId desc')->find(); if (!empty($start_time)){ $data['开工时间'] = $start_time['开工时间']; }else{ $data['开工时间'] = ''; } $sys_id = \db('设备_基本资料')->where('设备编号',$machine)->value('sys_sbID'); $data['sys_id'] = '['.$sys_id.'/'.$machine.']'; $UniqId = \db('设备_产量计酬')->order('UniqId desc')->value('UniqId'); if ($UniqId < 10000000){ $data['UniqId'] = 10000000; }else{ $data['UniqId'] = $UniqId + 1; } $data['sczl_Pgcl'] = 0; $data['sczl_oil'] = 0; $data['sczl_计产系数'] = 0; $data['sczl_工价系数'] = 0; $data['sczl_装版工时'] = 0; $data['sczl_保养工时'] = 0; $data['sczl_打样工时'] = 0; $data['sczl_异常停机工时'] = 0; $data['sczl_异常工时1'] = 0; $data['sczl_异常类型1'] = ''; $data['sczl_废品率系数'] = ''; $data['sczl_desc'] = ''; $data['sczl_wgsj'] = '1900-01-01 00:00:00'; $data['码开始行'] = 0; $data['码结束行'] = 0; $data['mod_rq'] = '1900-01-01 00:00:00'; $data['sys_rq'] = date('Y-m-d H:i:s'); if (!empty($batch)){ $batchData = explode(',',$batch); $newData = []; $batchUniqId = \db('物料_批次跟踪')->order('UniqId desc')->value('UniqId'); if ($batchUniqId < 10000000){ $batchUniqId = 10000000; } foreach ($batchData as $key=>$item){ $batchUniqId++; $val = explode('-',$item); $newData[$key]['wlbh'] = $val[0]; $newData[$key]['wlBatch'] = $val[1]; $newData[$key]['sczl_gdbh'] = $data['sczl_gdbh']; $newData[$key]['sczl_yjno'] = $data['sczl_yjno']; $newData[$key]['sczl_gxh'] = $data['sczl_gxh']; $newData[$key]['sczl_gxmc'] = $data['sczl_gxmc']; $newData[$key]['sczl_num'] = $data['sczl_num']; $newData[$key]['sys_id'] = $data['sys_id']; $newData[$key]['sys_rq'] = $data['sys_rq']; $newData[$key]['UniqID'] = $batchUniqId; } } $res = false; $batch_res = false; Db::startTrans(); try { $sql = \db('设备_产量计酬')->fetchSql(true)->insert($data); $res = Db::query($sql); if (!empty($batch)){ $batch_sql = \db('物料_批次跟踪')->fetchSql(true)->insertAll($newData); $batch_res = Db::query($batch_sql); }else{ $batch_res = true; } Db::commit(); cache('MachineProductReport-getList',null); }catch (\Exception $e){ Db::rollback(); } if ($res === false || $batch_res === false){ $this->error('报工失败'); }else{ $this->success('报工成功'); } } /** * 获取机台编号 * @ApiMethod POST * @params string addr */ public function getMachineMac(){ if (Request::instance()->isGet() == false){ $this->error('非法请求'); } $params = Request::instance()->get(); if (empty($params['addr'])){ $this->error('参数不能为空'); } $data = \db('设备_基本资料')->where('sys_sbID',$params['addr'])->field('设备编号,rtrim(使用部门) as 使用部门')->find(); $this->success('请求成功',$data); } /** * 6获取拉料人员 * @ApiMethod GET * @params department */ public function getMaterialStrippingPeople(){ if (Request::instance()->isGet() == false) { $this->error('非法请求'); } $params = Request::instance()->param(); $where = []; if (!isset($params['department']) || empty($params['department'])) { $this->error('参数错误'); }if (!isset($params['search']) || !empty($params['search'])) { $where['员工编号|员工姓名'] = array('like','%'.$params['search'].'%'); } $where['职称职务'] = '拉纸工'; $where['在职状态'] = '在职'; $where['U8在职'] = '在职'; if ($params['department'] == 1){ $where['所在部门'] = '生产部'; }else{ $where['所在部门'] = '检验车间'; } $list[0]['员工编号'] = '000000'; $list[0]['员工姓名'] = '自备'; $data = \db('人事_基本资料')->where($where)->field('rtrim(员工编号) as 员工编号,rtrim(员工姓名) as 员工姓名')->order('班组代号 desc')->select(); if (!empty($data)){ foreach ($data as $item){ array_push($list,$item); } } $this->success('请求成功',$list); } /** * 设置当前生产工单 * @return void * @throws \think\Exception * @throws \think\db\exception\BindParamException * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @throws \think\exception\PDOException */ public function MachineWorkOrderEdit() { if (Request::instance()->isPost() === false) { $this->error('非法请求'); } $params = Request::instance()->post(); $list = \db('工单_基本资料') ->alias('a') ->field([ 'RTRIM( b.Gy0_sj1 )' => 'sj1', 'RTRIM( b.Gy0_sj2 )' => 'sj2', 'RTRIM( b.UniqId )' => 'id' ]) ->join('工单_工艺资料 b', 'a.Gd_gdbh = b.Gy0_gdbh') ->where([ 'a.gd_statu' => '2-生产中', 'a.行号' => '1', 'b.Gy0_sbbh' => ['LIKE', '%' . $params['machine'] . '%'], 'b.PD_WG' => '1900-01-01 00:00:00', 'b.Gy0_sj1' => ['>', '1900-01-01 00:00:00'], ]) ->where('b.Gy0_sj1', '<', '2099-01-01 00:00:00') ->group('a.Gd_gdbh,b.Gy0_yjno,b.Gy0_gxh') ->order('Gy0_sj1') ->select(); $start = date('Y-m-d H:i:s', time()); if ($start < date('Y-m-d H:15:00', time())) { $start = date('Y-m-d H:00:00', time()); } elseif ($start > date('Y-m-d H:45:00', time())) { $start = date('Y-m-d H:00:00', time()); } else { $start = date('Y-m-d H:30:00', time()); } $data = $time = []; $i = 0; foreach ($list as $key => $value) { if ($value['id'] === $params['UniqId']) { $time = [ 'Gy0_sj1' => $start, 'Gy0_sj2' => date('Y-m-d H:i:s', strtotime($start) + (strtotime($value['sj1']) - strtotime($value['sj2']))), 'id' => $value['id'] ]; unset($list[$key]); } } $arr = array_values($list); $data[0] = $time; foreach ($arr as $key => $value){ $workTime = [ 'Gy0_sj1' => $data[$key]['Gy0_sj2'], 'Gy0_sj2' => date('Y-m-d H:i:s', strtotime($data[$key]['Gy0_sj2']) + (strtotime($value['sj1']) - strtotime($value['sj2']))), 'id' => $value['id'] ]; array_push($data,$workTime); } foreach ($data as $key=>$value){ unset($value['id']); $sql = \db('工单_工艺资料') ->where('UniqId',$data[$key]['id']) ->fetchSql(true) ->update($value); $res = \db()->query($sql); if ($res === false){ $i++; } } if ($i !== 0){ $this->error('失败'); }else{ $this->success('成功'); } } /** * 检品机报工 * @return void * @throws \think\db\exception\BindParamException * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @throws \think\exception\PDOException */ public function JpUploade() { if (Request::instance()->isPost() == false){ $this->error('非法请求'); } $params = Request::instance()->post(); $time = date('Y-m-d 00:00:00',time()-86400); $data = $params; $data['sczl_装版总工时'] = $params['sczl_装版工时']; $data['sczl_sj1'] = '1900-01-01 00:00:00'; $data['sczl_sj2'] = date('Y-m-d H:i:s',time()); if ($data['sczl_sj2']date('Y-m-d 00:00:00')){ $data['sczl_rq'] = $time; } $start_time = \db('设备_产量采集')->where('设备编号',$data['sczl_jtbh'])->order('UniqId desc')->find(); if (!empty($start_time)){ $data['开工时间'] = $start_time['开工时间']; }else{ $data['开工时间'] = '1900-01-01 00:00:00'; } $sys_id = \db('设备_基本资料')->where('设备编号',$data['sczl_jtbh'])->value('sys_sbID'); $data['sys_id'] = '['.$sys_id.'/'.$data['sczl_jtbh'].']'; $UniqId = \db('设备_产量计酬')->order('UniqId desc')->value('UniqId'); $data['UniqId'] = $UniqId + 1; $data['sczl_ls'] = 1; $data['sczl_zcfp'] = 0; $data['sczl_zccp'] = 0; $data['sczl_前工序废'] = 0; $data['sczl_来料少数'] = 0; $data['sczl_ms'] = 0; $data['sczl_oil'] = 0; $data['sczl_计产系数'] = 0; $data['sczl_工价系数'] = 0; $data['sczl_保养工时'] = 0; $data['sczl_打样工时'] = 0; $data['sczl_异常停机工时'] = 0; $data['sczl_异常工时1'] = 0; $data['sczl_异常类型1'] = ''; $data['sczl_desc'] = ''; $data['sczl_wgsj'] = '1900-01-01 00:00:00'; $data['码开始行'] = 0; $data['码结束行'] = 0; $data['码包'] = 0; $data['主电表'] = 0; $data['辅电表'] = 0; $data['mod_rq'] = '1900-01-01 00:00:00'; $data['sys_rq'] = date('Y-m-d H:i:s'); $sql = \db('设备_产量计酬')->fetchSql(true)->insert($data); $res = \db()->query($sql); if ($res === false){ $this->error('添加失败'); }else{ $this->success('成功'); } } //获取当前日期和时间 public function getTime() { $data = [ 'date' => date('Y-m-d',time()), 'hours' => date('Y-m-d H:i:s',time()) ]; $this->success('成功',$data); } }