WasteRecord.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800
  1. <?php
  2. namespace app\common\model;
  3. use function PHPSTORM_META\map;
  4. use think\Db;
  5. use think\Exception;
  6. class WasteRecord extends Base {
  7. public $table = 'waste_record';
  8. protected $validateName = 'WasteRecord';
  9. public $status = [
  10. '已收取',
  11. '已交接',
  12. '已转运',
  13. '医废异常',
  14. '未转运',
  15. ];
  16. public function updates($type=0){ //type=0克 type=1千克
  17. $data = request()->post();
  18. $data['org_id'] = cur_org_id();
  19. if($data['cateid'] < 1){
  20. $this->error ='类型不能为空';
  21. return false;
  22. }
  23. //
  24. // if($data['waste_device_id'] < 1){
  25. // $this->error ='收取地点不能为空';
  26. // return false;
  27. // }
  28. if($data['user_id'] < 1){
  29. $this->error ='收取人不能为空';
  30. return false;
  31. }
  32. if($data['weight'] < 0.1){
  33. $this->error ='重量不能为空';
  34. return false;
  35. }
  36. if(!$data['create_time']){
  37. $this->error ='收取时间不能为空';
  38. return false;
  39. }
  40. if($type == 1){
  41. $data['weight'] = $data['weight']*1000;
  42. }
  43. $data['serial_number'] = get_unique_id();
  44. $data['create_yyyy'] = date('Y',strtotime($data['create_time']));
  45. $data['create_yyyymm'] = date('Ym',strtotime($data['create_time']));
  46. $data['create_yyyymmdd'] = date('Ymd',strtotime($data['create_time']));
  47. $id = $data['id'];
  48. unset($data['id']);
  49. $data['status'] = 1;
  50. $ret = $this->allowField(true)->save($data);
  51. $waste_record_id = $this->id;
  52. $sdata[] = [
  53. 'status' => 0,
  54. 'create_time' => $data['create_time'],
  55. 'user_id' => $data['user_id'],
  56. 'waste_record_id' => $waste_record_id,
  57. ];
  58. $sdata[] = [
  59. 'status' => 1,
  60. 'create_time' => $data['create_time'],
  61. 'user_id' => $data['user_id'],
  62. 'waste_record_id' => $waste_record_id,
  63. ];
  64. $res = Db::name('waste_record_user')->insertAll( $sdata);
  65. if(!$res){
  66. $this->error = '操作失败';
  67. return false;
  68. }
  69. if(!$ret){
  70. $this->error = '操作失败';
  71. return false;
  72. }
  73. return true;
  74. }
  75. /**
  76. * 医废记录详情
  77. *
  78. * @author wst
  79. * @date 2021/9/8 17:32
  80. * @return array
  81. */
  82. public function info($id,$orgId){
  83. $info = $this->getOne($id,$orgId);
  84. if($info){
  85. $info['real_name'] = Db::name('user')
  86. ->where('id',$info['user_id'])
  87. ->value('real_name');
  88. $info['waste_device'] = Db::name('address')
  89. ->where('id',$info['waste_device_id'])
  90. ->value('title');
  91. $info['cate'] = Db::name('waste_type')
  92. ->where('id',$info['cateid'])
  93. ->value('title');
  94. $info['weight'] =round($info['weight']/1000,2);
  95. $info['status'] =$this->status[$info['status']];
  96. $rlist = Db::name('waste_record_user')
  97. ->alias('waste_record_user')
  98. ->join('user user','user.id = waste_record_user.user_id')
  99. ->where('waste_record_user.waste_record_id',$info['id'])
  100. ->field('waste_record_user.*,user.real_name')
  101. ->order('status', 'asc')
  102. ->select();
  103. $info['rlist'] = $rlist?$rlist:array();
  104. $info = json_decode(json_encode($info),true);
  105. }
  106. return $info;
  107. }
  108. //转运
  109. public function finish($id,$user_id){
  110. $this->startTrans();
  111. try{
  112. $ret = $this
  113. ->where('id', $id)
  114. ->update(['status'=>2]);
  115. if(!$ret){
  116. throw new Exception('更新状态失败');
  117. }
  118. $ret2 = Db::name('waste_record_user')->insert(array(
  119. 'waste_record_id' => $id,
  120. 'user_id' => $user_id,
  121. 'status' => 2,
  122. 'create_time' => getTime()
  123. ));
  124. if(!$ret2){
  125. throw new exception('保存操作记录失败');
  126. }
  127. $this->commit();
  128. return true;
  129. }catch (exception $e){
  130. $this->rollback();
  131. $this->error=$e->getMessage();
  132. return false;
  133. }
  134. }
  135. public function getOne($id,$orgId=0){
  136. $info = $this
  137. ->where('id',$id)
  138. ->where('org_id',$orgId)
  139. ->whereOr('serial_number',$id)
  140. ->find()
  141. ->toArray();
  142. return $info;
  143. }
  144. /*----------------api----------------*/
  145. public function recordInfo($serialNum,$orgId){
  146. $map[] = ['serial_number','=',$serialNum];
  147. $map[] = ['org_id','=',$orgId];
  148. $map[] = ['del','=',0];
  149. $info = $this->field('id,serial_number,org_id,waste_device_id,user_id,cateid,weight,status,create_time,reason,is_print,weight2')
  150. ->where($map)->find();
  151. $info = $info?$info->toArray():[];
  152. if(!$info){
  153. $this->error = '记录不存在';
  154. return false;
  155. }
  156. $org = Db::name('org')
  157. ->where('id',$info['org_id'])
  158. ->field('name')->find();
  159. $info['org_name'] = $org?$org['name']:'';
  160. $user = Db::name('user')
  161. ->where('id',$info['user_id'])
  162. ->field('real_name')->find();
  163. $info['real_name'] = $user?$user['real_name']:'';
  164. $wasteDevice = Db::name('address')
  165. ->where('id',$info['waste_device_id'])
  166. ->field('title')
  167. ->find();
  168. $info['title'] = $wasteDevice?$wasteDevice['title']:'';
  169. $info['cate_id'] = $info['cateid'];
  170. $info['cate_name'] =Db::name('waste_type')
  171. ->where('id',$info['cateid'])->value('title');
  172. unset($info['cateid']);
  173. $lists = Db::name('waste_record_user')
  174. ->alias('wru')
  175. ->where('wru.waste_record_id',$info['id'])
  176. ->join('user u','u.id = wru.user_id')
  177. ->field('u.real_name,wru.status,wru.create_time')
  178. ->order('wru.id asc')
  179. ->select();
  180. $data = [
  181. 'type' => 1, // 1=医废记录详情 2=医废包详情
  182. 'info' => $info,
  183. 'status_list' => $lists?$lists:[]
  184. ];
  185. return $data;
  186. }
  187. public function queryIsPrint($id){
  188. $ret=$this
  189. ->where('id',$id)
  190. ->field('is_print')
  191. ->find()->toArray();
  192. return $ret;
  193. }
  194. public function wasteRecordList($orgId,$status,$createTime,$page,$size){
  195. $offset= ($page - 1) * $size;
  196. $starttime=$createTime.' 00:00:00';
  197. $endtime=$createTime.' 23:59:59';
  198. $where[] = ['create_time','between',[$starttime,$endtime]];
  199. $list=$this
  200. ->field('waste_device_id,cateid,create_time,is_print,serial_number,id,weight')
  201. ->where([
  202. 'org_id'=>$orgId,
  203. 'status'=>$status,
  204. 'del'=>0,
  205. ])
  206. ->where($where)
  207. ->order('id desc')
  208. ->limit($offset,$size)
  209. ->select()->toArray();
  210. $ret['list']=$list;
  211. foreach ($list as $k=>$v){
  212. $title=Db::name('address')
  213. ->where([
  214. 'id'=>$v['waste_device_id'],
  215. 'del'=>0,
  216. 'enable'=>1,
  217. ])->value('title');
  218. $ret['list'][$k]['title']= $title;
  219. $cate = Db::name('waste_type')
  220. ->where('id',$v['cateid'])
  221. ->value('title');
  222. $ret['list'][$k]['cate_title']= $cate;
  223. }
  224. return $ret;
  225. }
  226. public function unTransportList($orgId,$createTime){
  227. $where = [];
  228. if($createTime){
  229. $starttime=$createTime.' 00:00:00';
  230. $endtime=$createTime.' 23:59:59';
  231. $where[] = ['create_time','between',[$starttime,$endtime]];
  232. }
  233. $list=$this
  234. ->field('waste_device_id,cateid,create_time,is_print,serial_number,id,weight')
  235. ->where('org_id',$orgId)
  236. ->where('del',0)
  237. ->where($where)
  238. ->where('status','in',[0,1])
  239. ->order('id','desc')
  240. ->select()
  241. ->toArray();
  242. $ret['list']=$list;
  243. foreach ($list as $k=>$v){
  244. $title=Db::name('address')
  245. ->where([
  246. 'id'=>$v['waste_device_id'],
  247. 'del'=>0,
  248. 'enable'=>1,
  249. ])->value('title');
  250. $ret['list'][$k]['title']= $title;
  251. $cate =Db::name('waste_type')
  252. ->where('id',$v['cateid'])
  253. ->value('title');;
  254. $ret['list'][$k]['cate_title']= $cate;
  255. }
  256. return $ret;
  257. }
  258. public function saveRecord($data){
  259. $curtime = getTime();
  260. $data['serial_number'] = get_unique_id();
  261. $data['create_time'] = $curtime;
  262. $data['create_yyyy'] = date('Y');
  263. $data['create_yyyymm'] = date('Ym');
  264. $data['create_yyyymmdd'] = date('Ymd');
  265. $this->startTrans();
  266. try{
  267. $waste_record_id = $this->insertGetId($data);
  268. if (!$waste_record_id) {
  269. throw new Exception('保存记录失败');
  270. }
  271. $sdata = [
  272. 'status' => 0,
  273. 'create_time' => $curtime,
  274. 'user_id' => $data['user_id'],
  275. 'waste_record_id' => $waste_record_id,
  276. ];
  277. $res = Db::name('waste_record_user')->insert( $sdata);
  278. if (!$res) {
  279. throw new Exception('保存操作记录失败');
  280. }
  281. $this->commit();
  282. return $waste_record_id;
  283. }catch (Exception $e){
  284. $this->error = $e->getMessage();
  285. $this->rollback();
  286. return false;
  287. }
  288. }
  289. public function saveStatus($data){
  290. $info = $this->
  291. where('serial_number',$data['serialNumber'])
  292. ->find();
  293. if(!$info){
  294. $this->error = '记录不存在';
  295. return false;
  296. }
  297. $curTime = date('Y-m-d H:i:s');
  298. $this->startTrans();
  299. try{
  300. $rdata = [
  301. 'weight2' => isset($data['weight2'])?$data['weight2']:0,
  302. 'status' => $data['status'],
  303. 'reason' => isset($data['reason'])?$data['reason']:'',
  304. 'package_id' => 0 // 有任何变化,都删除与包的关系
  305. ];
  306. $ret = $this
  307. ->where('id',$info['id'])
  308. ->update( $rdata);
  309. if (!$ret) {
  310. \exception('操作失败1');
  311. }
  312. $sdata = [
  313. 'status' => $data['status'],
  314. 'create_time' => $curTime,
  315. 'user_id' => $data['userId'],
  316. 'waste_record_id' => $info['id'],
  317. ];
  318. $res = Db::name('waste_record_user')
  319. ->insert($sdata);
  320. if (!$res) {
  321. \exception('操作失败');
  322. }
  323. // 如果在保内,检查包内是否还有可以记录,没有则删除包记录
  324. if($info['package_id'] > 0){
  325. $count = $this
  326. ->where('package_id',$info['package_id'])
  327. ->where('id','<>',$info['id'])
  328. ->count();
  329. if($count == 0){
  330. $res = Db::name('waste_package')->
  331. where('id',$info['package_id'])
  332. ->update(['del' => 1]);
  333. if (!$res) {
  334. \exception('操作失败');
  335. }
  336. }
  337. }
  338. $this->commit();
  339. }catch (Exception $e){
  340. $this->error = '操作失败'.$e->getMessage();
  341. $this->rollback();
  342. return false;
  343. }
  344. return true;
  345. }
  346. public function lists($orgId,$depId,$date,$page,$size,$userId){
  347. $offset= ($page - 1) * $size;
  348. $map[]= ['wr.org_id','=',$orgId];
  349. $map[]= ['wr.sign','=',0];
  350. $map[]= ['wr.del','=',0];
  351. $map1[]= ['wr.user_id','=',$userId];
  352. if($depId){
  353. $map1[]= ['wd.dep_id','=',$depId];
  354. }
  355. if($date){
  356. $date = date('Ymd',strtotime($date));
  357. $map[]= ['wr.create_yyyymmdd','=',$date];
  358. }
  359. $list = $this
  360. ->alias('wr')
  361. ->join('address wd','wd.id = wr.waste_device_id')
  362. ->where(function ($query) use ($map1) {
  363. $query->whereOr($map1);
  364. })->where($map)->field('wr.waste_device_id,wr.cateid,wr.create_time,wr.is_print,wr.serial_number,wr.id,wr.weight,wr.sign')
  365. ->order('wr.id','desc')
  366. ->limit($offset,$size)->select();
  367. $list = $list?$list->toArray():[];
  368. foreach ($list as $k=>$v){
  369. $title=Db::name('address')
  370. ->where('id',$v['waste_device_id'])
  371. ->value('title');
  372. $list[$k]['waste_device_name'] = $title;
  373. $cate = Db::name('waste_type')->
  374. where('id',$v['cateid'])->value('title');
  375. $list[$k]['cate_title']= $cate?$cate:'';
  376. }
  377. $ret['list']=$list?$list:[];
  378. return $ret;
  379. }
  380. public function savePackage($post){
  381. $curTime =getTime();
  382. $data = [
  383. 'org_id' => $post['org_id'],
  384. 'user_id' => $post['user_id'],
  385. 'ids' => $post['ids'],
  386. 'create_time' => $curTime,
  387. ];
  388. // 检查是否符合要求
  389. $count = Db::name('waste_record')
  390. ->where('del',0)
  391. ->where('status',0)
  392. ->where('package_id',0)
  393. ->where('user_id',$data['user_id'])
  394. ->where('id','in',$data['ids'])
  395. ->count();
  396. if($count != count($data['ids'])){
  397. $this->error = '有不符合要求的医废记录';
  398. return false;
  399. }
  400. $this->startTrans();
  401. try{
  402. $pData = [
  403. 'org_id' => $post['org_id'],
  404. 'user_id' => $post['user_id'],
  405. 'record' => implode(',',$post['ids']),
  406. 'create_time' => $curTime,
  407. 'sn' => get_unique_id2()
  408. ];
  409. $id= Db::name('waste_package')
  410. ->insertGetId($pData);
  411. if (!$id) {
  412. exception('操作失败');
  413. }
  414. $sData = [
  415. 'package_id' => $id,
  416. ];
  417. $res = $this->where('id','in',$data['ids'])
  418. ->update( $sData);
  419. if (!$res) {
  420. exception('操作失败');
  421. }
  422. $this->commit();
  423. }catch (Exception $e){
  424. $this->error = $e->getMessage();
  425. $this->rollback();
  426. return false;
  427. }
  428. return $id;
  429. }
  430. public function packInfo($serialNum,$orgId){
  431. $map[] = ['sn','=',$serialNum];
  432. $map[] = ['org_id','=',$orgId];
  433. $map[] = ['del','=',0];
  434. $info = Db::name('waste_package')
  435. ->where($map)
  436. ->field('id,sn,org_id,user_id,status,create_time,jj_time,zy_time,jj_user_id,zy_user_id')
  437. ->find();
  438. if(!$info){
  439. $this->error = '记录不存在';
  440. return false;
  441. }
  442. $org = Db::name('org')
  443. ->where('id',$info['org_id'])
  444. ->field('name')->find();
  445. $info['org_name'] = $org?$org['name']:'';
  446. $user = Db::name('user')
  447. ->where('id',$info['user_id'])
  448. ->field('real_name')->find();
  449. $info['real_name'] = $user?$user['real_name']:'';
  450. $info['jj_time'] = $info['jj_time']?$info['jj_time']:'';
  451. $info['zy_time'] = $info['zy_time']?$info['zy_time']:'';
  452. if($info['jj_user_id'] > 0){
  453. $user = Db::name('user')
  454. ->where('id',$info['jj_user_id'])
  455. ->field('real_name')->find();
  456. $info['jj_real_name'] = $user?$user['real_name']:'';
  457. }
  458. if($info['zy_user_id'] > 0){
  459. $user = Db::name('user')
  460. ->where('id',$info['zy_user_id'])
  461. ->field('real_name')->find();
  462. $info['zy_real_name'] = $user?$user['real_name']:'';
  463. }
  464. $weight =$this
  465. ->where('package_id',$info['id'])
  466. ->sum('weight');
  467. // $info['weight'] = $weight?round($weight/1000,2):0;
  468. $info['weight'] = $weight;
  469. $count = $this->where('package_id',$info['id'])
  470. ->count();
  471. $info['count'] = $count?$count:0;
  472. $record = Db::name('waste_record')
  473. ->alias('wr')
  474. ->where('wr.del',0)
  475. ->where('wr.package_id',$info['id'])
  476. ->field('wr.waste_device_id,wr.cateid,wr.create_time,wr.is_print,wr.serial_number,wr.id,wr.weight,wr.sign')
  477. ->order('wr.id desc')
  478. ->select();
  479. foreach ($record as $k=>$v){
  480. $title=Db::name('address')
  481. ->field('title')
  482. ->where('id',$v['waste_device_id'])
  483. ->find();
  484. $record[$k]['title'] = $title?$title['title']:'';
  485. $record[$k]['cate_name'] =Db::name('waste_type')
  486. ->where('id',$v['cateid'])->value('title');
  487. // $record[$k]['weight'] = $v['weight']?round($v['weight']/1000,2):0;
  488. $record[$k]['weight'] = $v['weight']?$v['weight']:0;
  489. }
  490. $data = [
  491. 'type' => 2,
  492. 'pinfo' => $info,
  493. 'record' => $record?$record:[]
  494. ];
  495. return $data;
  496. }
  497. public function packagesLists($orgId,$page,$size,$userId){
  498. $offset= ($page - 1) * $size;
  499. $map[] = ['org_id','=',$orgId];
  500. $map[] = ['user_id','=',$userId];
  501. $map[] = ['del','=',0];
  502. $list = Db::name('waste_package')
  503. ->field('id,sn,org_id,user_id,status,create_time')
  504. ->order('id desc')
  505. ->where($map)
  506. ->limit($offset,$size)
  507. ->select();
  508. foreach ($list as $k=>$v){
  509. $user = Db::name('user')
  510. ->where('id',$v['user_id'])
  511. ->field('real_name')
  512. ->find();
  513. $list[$k]['real_name'] = $user?$user['real_name']:'';
  514. $weight = $this->where('package_id',$v['id'])
  515. ->sum('weight');
  516. $list[$k]['weight'] = $weight?$weight:0;
  517. $count = $this->where('package_id',$v['id'])
  518. ->count();
  519. $list[$k]['count'] = $count?$count:0;
  520. }
  521. return $list?$list:[];
  522. }
  523. public function delpackage($orgId,$userId,$id,$recordId){
  524. $info = $this
  525. ->where('del',0)
  526. ->where('org_id',$orgId)
  527. ->where('package_id',$id)
  528. ->where('id',$recordId)
  529. ->find();
  530. if(!$info){
  531. $this->error = '记录不存在';
  532. return false;
  533. }
  534. $this->startTrans();
  535. try{
  536. $res = $this->where('id',$recordId)
  537. ->update(['package_id' => 0]);
  538. if (!$res) {
  539. exception('操作失败');
  540. }
  541. // 如果在保内,检查包内是否还有可以记录,没有则删除包记录
  542. if($info['package_id'] > 0){
  543. $count = $this
  544. ->where('package_id',$id)
  545. ->where('id','<>',$recordId)
  546. ->count();
  547. if($count == 0){
  548. $res = Db::name('waste_package')
  549. ->where('id',$id)
  550. ->update(['del' => 1]);
  551. if (!$res) {
  552. exception('操作失败');
  553. }
  554. }
  555. }
  556. $this->commit();
  557. return true;
  558. }catch (Exception $e){
  559. $this->error = '操作失败'.$e->getmessage();
  560. $this->rollback();
  561. return false;
  562. }
  563. }
  564. // 交接
  565. public function jjpackage($orgId,$userId,$id){
  566. $info = Db::name('waste_package')
  567. ->where('del',0)
  568. ->where('org_id',$orgId)
  569. ->where('id',$id)
  570. ->find();
  571. if(!$info){
  572. $this->error = '记录不存在';
  573. return false;
  574. }
  575. if($info['status'] != 0){
  576. $this->error = '无权限操作';
  577. return false;
  578. }
  579. $lists = $this
  580. ->where('package_id',$id)
  581. ->where('del',0)
  582. ->select();
  583. $lists = $lists?$lists->toArray():[];
  584. if(count($lists) == 0){
  585. $this->error = '无可操作的医废记录';
  586. return false;
  587. }
  588. $ids = [];
  589. foreach ($lists as $k=>$v){
  590. $ids[] = $v['id'];
  591. }
  592. $this->startTrans();
  593. try{
  594. $rData = [
  595. 'jj_time' => getTime(),
  596. 'status' => 1,
  597. 'jj_user_id' => $userId,
  598. 'jj_record' => implode(',',$ids)
  599. ];
  600. $ret = Db::name('waste_package')
  601. ->where('id',$id)
  602. ->update($rData);
  603. if (!$ret) {
  604. exception('操作失败1');
  605. }
  606. foreach ($lists as $k=>$v){
  607. $rrData = [
  608. 'weight2' => 0,
  609. 'status' => 1,
  610. 'reason' => '',
  611. ];
  612. $ret = $this
  613. ->where('id',$v['id'])
  614. ->update($rrData);
  615. if (!$ret) {
  616. exception('操作失败');
  617. }
  618. $sData = [
  619. 'status' => 1,
  620. 'create_time' => getTime(),
  621. 'user_id' => $userId,
  622. 'waste_record_id' => $v['id'],
  623. ];
  624. $res = Db::name('waste_record_user')
  625. ->insert($sData);
  626. if (!$res) {
  627. exception('操作失败');
  628. }
  629. }
  630. $this->commit();
  631. return true;
  632. }catch (Exception $e){
  633. $this->error = '操作失败'.$e->getmessage();
  634. $this->rollback();
  635. return false;
  636. }
  637. }
  638. // 转运
  639. public function zypackage($orgId,$userId,$id){
  640. $info = Db::name('waste_package')
  641. ->where('del',0)
  642. ->where('org_id',$orgId)
  643. ->where('id',$id)
  644. ->find();
  645. if(!$info){
  646. $this->error = '记录不存在';
  647. return false;
  648. }
  649. if($info['status'] != 1){
  650. $this->error = '无权限操作';
  651. return false;
  652. }
  653. $lists = $this
  654. ->where('package_id',$id)
  655. ->where('del',0)
  656. ->select();
  657. $lists = $lists?$lists->toArray():[];
  658. if(count($lists) == 0){
  659. $this->error = '无可操作的医废记录';
  660. return false;
  661. }
  662. $ids = [];
  663. foreach ($lists as $k=>$v){
  664. $ids[] = $v['id'];
  665. }
  666. $this->startTrans();
  667. try{
  668. $rData = [
  669. 'zy_time' => date('Y-m-d H:i:s'),
  670. 'status' => 2,
  671. 'zy_user_id' => $userId,
  672. 'zy_record' => implode(',',$ids)
  673. ];
  674. $ret = Db::name('waste_package')
  675. ->where('id',$id)
  676. ->update($rData);
  677. if (!$ret) {
  678. throw new exception('操作失败');
  679. }
  680. foreach ($lists as $k=>$v){
  681. $rrdata = [
  682. 'weight2' => 0,
  683. 'status' => 2,
  684. 'reason' => '',
  685. ];
  686. $ret = $this
  687. ->where('id',$v['id'])
  688. ->update($rrdata);
  689. if (!$ret) {
  690. exception('操作失败');
  691. }
  692. $sdata = [
  693. 'status' => 2,
  694. 'create_time' => getTime(),
  695. 'user_id' => $userId,
  696. 'waste_record_id' => $v['id'],
  697. ];
  698. $res = Db::name('waste_record_user')
  699. ->insert($sdata);
  700. if (!$res) {
  701. exception('操作失败');
  702. }
  703. }
  704. $this->commit();
  705. return true;
  706. }catch (Exception $e){
  707. $this->error = '操作失败'.$e->getmessage();
  708. $this->rollback();
  709. return false;
  710. }
  711. }
  712. public function yflist($orgId,$userId){
  713. $map[] = ['wr.org_id','=',$orgId];
  714. $map[] = ['wr.user_id','=',$userId];
  715. $map[] = ['wr.package_id','=',0];
  716. $map[] = ['wr.del','=',0];
  717. $map[] = ['wr.status','=',0];
  718. $list=$this->alias('wr')
  719. ->where($map)
  720. ->field('wr.waste_device_id,wr.cateid,wr.create_time,wr.is_print,wr.serial_number,wr.id,wr.weight,wr.sign')
  721. ->order('wr.id desc')
  722. ->select();
  723. $list = $list?$list->toArray():[];
  724. foreach ($list as $k=>$v){
  725. $title=Db::name('address')
  726. ->field('title')
  727. ->where('id',$v['waste_device_id'])
  728. ->find();
  729. $list[$k]['title'] = $title?$title['title']:'';
  730. $list[$k]['cate_name'] =Db::name('waste_type')
  731. ->where('id',$v['cateid'])->value('title');
  732. }
  733. return $list?$list:[];
  734. }
  735. }