| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024 |
- <?php
- namespace app\api\controller;
- use think\Log;
- use app\common\controller\Api;
- /**
- * 首页接口
- */
- class Index extends Api
- {
- protected $noNeedLogin = ['*'];
- protected $noNeedRight = ['*'];
- /**
- * 首页
- *
- */
- public function index()
- {
- $this->success('请求成功');
- }
- /**
- * vocs
- * 创建
- */
- public function vocs()
- {
- $req=$this->request->param();
- Log::record($req);
- $time = date('Y/m/d H:i:s');
- $rows = $req;
- if($req[0]=='C'){
- //查询匹配主表数据
- foreach($rows as $k=>$v){
- preg_match('/数据文件/', $v, $matches);
- if(count($matches)){
- $res['data_txt_name'] = trim(substr($v,strripos($v,'\\')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/样品名称/', $v, $matches);
- if(count($matches)){
- $res['name'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/仪器/', $v, $matches);
- if(count($matches)){
- $res['remak'] = trim($v);
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/操作者/', $v, $matches);
- if(count($matches)){
- $res['author'] = trim(substr($v,stripos($v,':')+1,strripos($v,'序列号')-1-stripos($v,':')));
- $res['line'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/仪器/', $v, $matches);
- if(count($matches)){
- $res['instrument'] = trim(substr($v,stripos($v,':')+1,strripos($v,'位置')-1-stripos($v,':')));
- $res['position'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/进样日期/', $v, $matches);
- if(count($matches)){
- $res['in_date'] = trim(substr($v,stripos($v,':')+1,strripos($v,'进样次数')-1-stripos($v,':')));
- $res['in_times'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/进样量/', $v, $matches);
- if(count($matches)){
- $res['in_type'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/采集方法/', $v, $matches);
- if(count($matches)){
- $res['gather_method'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- foreach($rows as $k=>$v){
- preg_match('/最后修改/', $v, $matches);
- if(count($matches)){
- $res['update_date_one'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/分析方法/', $v, $matches);
- if(count($matches)){
- $res['analysis_method'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/最后修改/', $v, $matches);
- if(count($matches)){
- $res['update_date_two'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/方法信息/', $v, $matches);
- if(count($matches)){
- $res['method_info'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/附加信息/', $v, $matches);
- if(count($matches)){
- $res['add_info'] = trim(mb_substr($v,5));
- unset($rows[$k]);
- break;
- }
- }
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/序列文件/', $v, $matches);
- if(count($matches)){
- $res['sequence_file'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- foreach($rows as $k=>$v){
- preg_match('/方法/', $v, $matches);
- if(count($matches)){
- $res['method'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/最后修改/', $v, $matches);
- if(count($matches)){
- $res['update_date_two'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/方法信息/', $v, $matches);
- if(count($matches)){
- $res['method_info'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/附加信息/', $v, $matches);
- if(count($matches)){
- $res['add_info'] = trim(mb_substr($v,5));
- unset($rows[$k]);
- break;
- }
- }
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/排序/', $v, $matches);
- if(count($matches)){
- $res['sort'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/校正数据修改时间/', $v, $matches);
- if(count($matches)){
- $res['check_data_time'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/乘积因子/', $v, $matches);
- if(count($matches)){
- $res['sample_product_factor'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/稀释因子/', $v, $matches);
- if(count($matches)){
- $res['dilution_factor'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/信号/', $v, $matches);
- if(count($matches)){
- $res['signal_one'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- $res['machine'] = 'GC';
- $res['create'] = $time;
- //查询记录是否存在
- $bool = db()->name('gather_txt_gc')->where('data_txt_name',$res['data_txt_name'])->find();
- if($bool){
- return '已存在';
- }
- //开启事务
- db()->startTrans();
- try {
- //连接数据库, 将数据插入主表gather_txt_gc取得pid
- $pid = db()->name('gather_txt_gc')->insertGetId($res);
- //获取子表开始结束索引
- $srart = $end = 0;
- $rows = array_values($rows);
- foreach($rows as $k=>$v){
- preg_match('/-------/', $v, $matches);
- if(count($matches)){
- $srart = $k;
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/总量/', $v, $matches);
- if(count($matches)){
- $end = $k;
- break;
- }
- }
- //截取数据
- $arr = array_slice($rows,$srart+1,$end-$srart-1);
- foreach($arr as $k=>$v){
- preg_match('/\?/', $v, $matches);
- if(count($matches)){
- unset($arr[$k]);
- }else{
- $arr[$k] = preg_split('/\s+/', $v);
- }
- }
- $arr = array_values($arr);
- //处理数据
- $row = [];
- foreach ($arr as $k=>$v){
- if (count($v)==6){
- $row[$k]['pid'] = $pid;
- $row[$k]['time'] = $v[0];
- $row[$k]['type'] = $v[1];
- $row[$k]['peak_area'] = $v[2];
- ($v[2] == '-')?$row[$k]['peak_area'] = '-':$row[$k]['peak_area'] = floatval($v[2]);
- ($v[3] == '-')?$row[$k]['val'] = '-':$row[$k]['val'] = floatval($v[3]);
- ($v[4] == '-')?$row[$k]['potency'] = '-':$row[$k]['potency'] = floatval($v[4]);
- preg_match('/邻(-)?二甲苯$/', $v[5], $matches);
- if(count($matches)){
- $row[$k]['chemical_compound'] = '邻-二甲苯';
- }
- preg_match('/间(、)?对二甲苯$/', $v[5], $matches);
- if(count($matches)){
- $row[$k]['chemical_compound'] = '间对二甲苯';
- }
- if(!array_key_exists('chemical_compound',$row[$k])){
- $row[$k]['chemical_compound'] = $v[5];
- }
- $row[$k]['create'] = $time;
- }else{
- $row[$k]['pid'] = $pid;
- $row[$k]['time'] = $v[0];
- $row[$k]['type'] = '';
- ($v[1] == '-')?$row[$k]['peak_area'] = '-':$row[$k]['peak_area'] = floatval($v[1]);
- ($v[2] == '-')?$row[$k]['val'] = '-':$row[$k]['val'] = floatval($v[2]);
- ($v[3] == '-')?$row[$k]['potency'] = '-':$row[$k]['potency'] = floatval($v[3]);
- preg_match('/邻(-)?二甲苯$/', $v[4], $matches);
- if(count($matches)){
- $row[$k]['chemical_compound'] = '邻-二甲苯';
- }
- preg_match('/间(、)?对二甲苯$/', $v[4], $matches);
- if(count($matches)){
- $row[$k]['chemical_compound'] = '间对二甲苯';
- }
- if(!array_key_exists('chemical_compound',$row[$k])){
- $row[$k]['chemical_compound'] = $v[4];
- }
- $row[$k]['create'] = $time;
- }
- }
- //将检测数据插入子表gather_txt_check_gc
- db()->name('gather_txt_check_gc')->insertAll($row);
- //提交事务
- db()->commit();
- return json_encode(['code'=>'0','msg'=>'成功','time'=>$time,'data'=>[$res,$row]]);
- } catch (\Exception $e){
- //失败回滚
- db()->rollback();
- Log::record($e->getMessage());
- return $e->getMessage();
- }
- }else{
- foreach($rows as $k=>$v){
- preg_match('/样品/', $v, $matches);
- if(count($matches)){
- $bach = '';
- $string = trim(substr($v,stripos($v,':')+1));
- if (preg_match('/\w*\d+-?\d?\.?\d*$/', $string, $matches)) {
- $bach = $matches[0];
- }
- $name = str_replace($bach,'',$string);
- $res['name'] = $name;
- $res['bach'] = $bach;
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/数据路径/', $v, $matches);
- if(count($matches)){
- $res['data_txt_path'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/数据文件/', $v, $matches);
- if(count($matches)){
- $res['data_txt_name'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/采集/', $v, $matches);
- if(count($matches)){
- $res['gather_time'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/操作者/', $v, $matches);
- if(count($matches)){
- $res['author'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/其他/', $v, $matches);
- if(count($matches)){
- $res['other'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/样品瓶/', $v, $matches);
- if(count($matches)){
- $res['ALS'] = trim(substr($v,stripos($v,':')+1,strripos($v,'样品乘积因子')-1-stripos($v,':')));
- $res['sample_product_factor'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/定量时间/', $v, $matches);
- if(count($matches)){
- $res['quantify_time'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/定量方法标题/', $v, $matches);
- if(count($matches)){
- $res['title'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/定量方法/', $v, $matches);
- if(count($matches)){
- $res['quantify_method'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/上一次定量更新/', $v, $matches);
- if(count($matches)){
- $res['last_quantify_time'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/响应方式/', $v, $matches);
- if(count($matches)){
- $res['response'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- $res['machine'] = 'GCMS';
- $res['create'] = $time;
- //查询记录是否存在
- $bool = db()->name('gather_txt_gcms')->where('data_txt_name',$res['data_txt_name'])->find();
- if($bool){
- return '已存在';
- }
- //开启事务
- db()->startTrans();
- try {
- //连接数据库, 将数据插入主表gather_txt_gc取得pid
- $pid = db()->name('gather_txt_gcms')->insertGetId($res);
- //获取子表开始结束索引
- $srart = $end = 0;
- $rows = array_values($rows);
- foreach($rows as $k=>$v){
- preg_match('/-------/', $v, $matches);
- if(count($matches)){
- $srart = $k;
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/--------/', $v, $matches);
- if(count($matches)){
- $end = $k;
- break;
- }
- }
- //截取数据
- $arr = array_slice($rows,$srart+1,$end-$srart-1);
- foreach($arr as $k=>$v){
- $v = trim($v);
- preg_match('/^\d/', $v, $matches);
- if(count($matches)){
- $arr[$k] = preg_split('/\s+/', $v);
- }else{
- unset($arr[$k]);
- }
- }
- $arr = array_values($arr);
- //处理数据
- $row = [];
- foreach ($arr as $k=>$v){
- if (count($v)==8){
- $row[$k]['pid'] = $pid;
- $row[$k]['chemical_compound'] = $v[1];
- $row[$k]['persist_time'] = $v[2];
- $row[$k]['quantitative_ion'] = $v[3];
- $row[$k]['response_value'] = $v[4];
- $row[$k]['potency'] = $v[5];
- $row[$k]['unit'] = $v[6];
- $row[$k]['quanlitative_ion'] = $v[7];
- $row[$k]['create'] = $time;
- }else{
- $row[$k]['pid'] = $pid;
- $row[$k]['chemical_compound'] = $v[1];
- $row[$k]['persist_time'] = $v[2];
- $row[$k]['quantitative_ion'] = $v[3];
- $row[$k]['response_value'] = $v[3];
- $row[$k]['potency'] = $v[3];
- $row[$k]['unit'] = $v[3];
- $row[$k]['quanlitative_ion'] = $v[3];
- $row[$k]['create'] = $time;
- }
- }
- //将检测数据插入子表gather_txt_check_gc
- $id = db()->name('gather_txt_check_gcms')->insertAll($row);
- //提交事务
- db()->commit();
- return json_encode(['code'=>'0','msg'=>'成功','time'=>$time,'data'=>[$res,$row]]);
- } catch (\Exception $e){
- //失败回滚
- db()->rollback();
- Log::record($e->getMessage());
- return $e->getMessage();
- }
- }
- }
- /**
- * vocs
- * 修改
- */
- public function updateVocs()
- {
- $req=$this->request->param();
- Log::record($req);
- $time = date('Y/m/d H:i:s');
- $rows = $req;
- if($req[0]=='C'){
- //查询匹配主表数据
- foreach($rows as $k=>$v){
- preg_match('/数据文件/', $v, $matches);
- if(count($matches)){
- $res['data_txt_name'] = trim(substr($v,strripos($v,'\\')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/样品名称/', $v, $matches);
- if(count($matches)){
- $res['name'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/仪器/', $v, $matches);
- if(count($matches)){
- $res['remak'] = trim($v);
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/操作者/', $v, $matches);
- if(count($matches)){
- $res['author'] = trim(substr($v,stripos($v,':')+1,strripos($v,'序列号')-1-stripos($v,':')));
- $res['line'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/仪器/', $v, $matches);
- if(count($matches)){
- $res['instrument'] = trim(substr($v,stripos($v,':')+1,strripos($v,'位置')-1-stripos($v,':')));
- $res['position'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/进样日期/', $v, $matches);
- if(count($matches)){
- $res['in_date'] = trim(substr($v,stripos($v,':')+1,strripos($v,'进样次数')-1-stripos($v,':')));
- $res['in_times'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/进样量/', $v, $matches);
- if(count($matches)){
- $res['in_type'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/采集方法/', $v, $matches);
- if(count($matches)){
- $res['gather_method'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- foreach($rows as $k=>$v){
- preg_match('/最后修改/', $v, $matches);
- if(count($matches)){
- $res['update_date_one'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/分析方法/', $v, $matches);
- if(count($matches)){
- $res['analysis_method'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/最后修改/', $v, $matches);
- if(count($matches)){
- $res['update_date_two'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/方法信息/', $v, $matches);
- if(count($matches)){
- $res['method_info'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/附加信息/', $v, $matches);
- if(count($matches)){
- $res['add_info'] = trim(mb_substr($v,5));
- unset($rows[$k]);
- break;
- }
- }
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/序列文件/', $v, $matches);
- if(count($matches)){
- $res['sequence_file'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- foreach($rows as $k=>$v){
- preg_match('/方法/', $v, $matches);
- if(count($matches)){
- $res['method'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/最后修改/', $v, $matches);
- if(count($matches)){
- $res['update_date_two'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/方法信息/', $v, $matches);
- if(count($matches)){
- $res['method_info'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/附加信息/', $v, $matches);
- if(count($matches)){
- $res['add_info'] = trim(mb_substr($v,5));
- unset($rows[$k]);
- break;
- }
- }
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/排序/', $v, $matches);
- if(count($matches)){
- $res['sort'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/校正数据修改时间/', $v, $matches);
- if(count($matches)){
- $res['check_data_time'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/乘积因子/', $v, $matches);
- if(count($matches)){
- $res['sample_product_factor'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/稀释因子/', $v, $matches);
- if(count($matches)){
- $res['dilution_factor'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/信号/', $v, $matches);
- if(count($matches)){
- $res['signal_one'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- $res['create'] = $time;
- $id = db()->name('gather_txt_gc')->field('id')->where('data_txt_name',$res['data_txt_name'])->find();
- if($id){
- //开启事务
- db()->startTrans();
- try {
- //根据id修改主表数据
- $bool = db()->name('gather_txt_gc')->where('id',$id['id'])->update($res);
- if($bool){
- //根据pid删除子表数据
- db()->name('gather_txt_check_gc')->where('pid',$id['id'])->delete();
- //获取子表开始结束索引
- $srart = $end = 0;
- $rows = array_values($rows);
- foreach($rows as $k=>$v){
- preg_match('/-------/', $v, $matches);
- if(count($matches)){
- $srart = $k;
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/总量/', $v, $matches);
- if(count($matches)){
- $end = $k;
- break;
- }
- }
- //截取数据
- $arr = array_slice($rows,$srart+1,$end-$srart-1);
- foreach($arr as $k=>$v){
- preg_match('/\?/', $v, $matches);
- if(count($matches)){
- unset($arr[$k]);
- }else{
- $arr[$k] = preg_split('/\s+/', $v);
- }
- }
- $arr = array_values($arr);
- //处理数据
- $row = [];
- foreach ($arr as $k=>$v){
- if (count($v)==6){
- $row[$k]['pid'] = $id['id'];
- $row[$k]['time'] = $v[0];
- $row[$k]['type'] = $v[1];
- $row[$k]['peak_area'] = $v[2];
- ($v[2] == '-')?$row[$k]['peak_area'] = '-':$row[$k]['peak_area'] = floatval($v[2]);
- ($v[3] == '-')?$row[$k]['val'] = '-':$row[$k]['val'] = floatval($v[3]);
- ($v[4] == '-')?$row[$k]['potency'] = '-':$row[$k]['potency'] = floatval($v[4]);
- preg_match('/邻(-)?二甲苯$/', $v[5], $matches);
- if(count($matches)){
- $row[$k]['chemical_compound'] = '邻-二甲苯';
- }
- preg_match('/间(、)?对二甲苯$/', $v[5], $matches);
- if(count($matches)){
- $row[$k]['chemical_compound'] = '间对二甲苯';
- }
- if(!array_key_exists('chemical_compound',$row[$k])){
- $row[$k]['chemical_compound'] = $v[5];
- }
- $row[$k]['create'] = $time;
- }else{
- $row[$k]['pid'] = $id['id'];
- $row[$k]['time'] = $v[0];
- $row[$k]['type'] = '';
- ($v[1] == '-')?$row[$k]['peak_area'] = '-':$row[$k]['peak_area'] = floatval($v[1]);
- ($v[2] == '-')?$row[$k]['val'] = '-':$row[$k]['val'] = floatval($v[2]);
- ($v[3] == '-')?$row[$k]['potency'] = '-':$row[$k]['potency'] = floatval($v[3]);
- preg_match('/邻(-)?二甲苯$/', $v[4], $matches);
- if(count($matches)){
- $row[$k]['chemical_compound'] = '邻-二甲苯';
- }
- preg_match('/间(、)?对二甲苯$/', $v[4], $matches);
- if(count($matches)){
- $row[$k]['chemical_compound'] = '间对二甲苯';
- }
- if(!array_key_exists('chemical_compound',$row[$k])){
- $row[$k]['chemical_compound'] = $v[4];
- }
- $row[$k]['create'] = $time;
- }
- }
- //将检测数据插入子表gather_txt_check_gc
- db()->name('gather_txt_check_gc')->insertAll($row);
- //提交事务
- db()->commit();
- return json_encode(['code'=>'0','msg'=>'修改成功','time'=>$time,'data'=>[$res,$row]]);
- }
- } catch (\Exception $e){
- //失败回滚
- db()->rollback();
- Log::record($e->getMessage());
- return $e->getMessage();
- }
- }else{
- return '找不到记录';
- }
- }else{
- foreach($rows as $k=>$v){
- preg_match('/样品/', $v, $matches);
- if(count($matches)){
- $bach = '';
- $string = trim(substr($v,stripos($v,':')+1));
- if (preg_match('/\w*\d+-?\d?\.?\d*$/', $string, $matches)) {
- $bach = $matches[0];
- }
- $name = str_replace($bach,'',$string);
- $res['name'] = $name;
- $res['bach'] = $bach;
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/数据路径/', $v, $matches);
- if(count($matches)){
- $res['data_txt_path'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/数据文件/', $v, $matches);
- if(count($matches)){
- $res['data_txt_name'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/采集/', $v, $matches);
- if(count($matches)){
- $res['gather_time'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/操作者/', $v, $matches);
- if(count($matches)){
- $res['author'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/其他/', $v, $matches);
- if(count($matches)){
- $res['other'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/样品瓶/', $v, $matches);
- if(count($matches)){
- $res['ALS'] = trim(substr($v,stripos($v,':')+1,strripos($v,'样品乘积因子')-1-stripos($v,':')));
- $res['sample_product_factor'] = trim(substr($v,strripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/定量时间/', $v, $matches);
- if(count($matches)){
- $res['quantify_time'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/定量方法标题/', $v, $matches);
- if(count($matches)){
- $res['title'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/定量方法/', $v, $matches);
- if(count($matches)){
- $res['quantify_method'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/上一次定量更新/', $v, $matches);
- if(count($matches)){
- $res['last_quantify_time'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/响应方式/', $v, $matches);
- if(count($matches)){
- $res['response'] = trim(substr($v,stripos($v,':')+1));
- unset($rows[$k]);
- break;
- }
- }
- $res['create'] = $time;
- $id = db()->name('gather_txt_gcms')->field('id')->where('data_txt_name',$res['data_txt_name'])->find();
- if($id){
- //开启事务
- db()->startTrans();
- try {
- //根据id修改主表数据
- $bool = db()->name('gather_txt_gcms')->where('id',$id['id'])->update($res);
- if($bool) {
- //根据pid删除子表数据
- db()->name('gather_txt_check_gcms')->where('pid', $id['id'])->delete();
- //获取子表开始结束索引
- $srart = $end = 0;
- $rows = array_values($rows);
- foreach($rows as $k=>$v){
- preg_match('/-------/', $v, $matches);
- if(count($matches)){
- $srart = $k;
- break;
- }
- }
- foreach($rows as $k=>$v){
- preg_match('/--------/', $v, $matches);
- if(count($matches)){
- $end = $k;
- break;
- }
- }
- //截取数据
- $arr = array_slice($rows,$srart+1,$end-$srart-1);
- foreach($arr as $k=>$v){
- $v = trim($v);
- preg_match('/^\d/', $v, $matches);
- if(count($matches)){
- $arr[$k] = preg_split('/\s+/', $v);
- }else{
- unset($arr[$k]);
- }
- }
- $arr = array_values($arr);
- //处理数据
- $row = [];
- foreach ($arr as $k=>$v){
- if (count($v)==8){
- $row[$k]['pid'] = $id['id'];
- $row[$k]['chemical_compound'] = $v[1];
- $row[$k]['persist_time'] = $v[2];
- $row[$k]['quantitative_ion'] = $v[3];
- $row[$k]['response_value'] = $v[4];
- $row[$k]['potency'] = $v[5];
- $row[$k]['unit'] = $v[6];
- $row[$k]['quanlitative_ion'] = $v[7];
- $row[$k]['create'] = $time;
- }else{
- $row[$k]['pid'] = $id['id'];
- $row[$k]['chemical_compound'] = $v[1];
- $row[$k]['persist_time'] = $v[2];
- $row[$k]['quantitative_ion'] = $v[3];
- $row[$k]['response_value'] = $v[3];
- $row[$k]['potency'] = $v[3];
- $row[$k]['unit'] = $v[3];
- $row[$k]['quanlitative_ion'] = $v[3];
- $row[$k]['create'] = $time;
- }
- }
- //将检测数据插入子表gather_txt_check_gc
- db()->name('gather_txt_check_gcms')->insertAll($row);
- //提交事务
- db()->commit();
- return json_encode(['code'=>'0','msg'=>'修改成功','time'=>$time,'data'=>[$res,$row]]);
- }
- } catch (\Exception $e){
- //失败回滚
- db()->rollback();
- Log::record($e->getMessage());
- return $e->getMessage();
- }
- }else{
- return '找不到记录';
- }
- }
- }
- }
|