input('id/d',0), 'title' => input('title','','trim'), 'spec' => input('spec','','trim'), 'price' => input('price/f',0), 'org_id' => input('orgId/d',0), 'cate_id' => input('cateId/d',0), 'unit_id' => input('unitId/d',0), 'add_id' => input('addId/d',0), 'class_id' => input('classId/d',0), 'company_id' => input('companyId/d',0), 'buy_time' => input('buyTime','','trim'), 'nums' => input('nums/d',0), 'remark' => input('remark','','trim'), 'brand' => input('brand','','trim'), 'address' => input('address','','trim'), 'used' => input('used','','trim'), 'print' => input('print/d',0), 'enable' => input('enable/d',1), 'remark2' => input('remark2','','trim'), 'remark3' => input('remark3','','trim'), 'remark4' => input('remark4','','trim'), 'remark5' => input('remark5','','trim'), 'dep_id' => input('depId/d',0), 'user_id' => input('uid/d',0), 'finance_sn' => input('financeSn','','trim'), 'sn' => input('sn','','trim') ]; if($data['id'] == 0){ $data['sn'] = ''; } $logdata = json_encode($data); $result = validate('AssetItems')->check($data,[],''); if(true !== $result){ HelpHander::error(validate('AssetItems')->getError()); } $id = $data['id']; if($id > 0){ //已拆分的不能修改数量 $info = Db::name('asset_items')->where('id',$id)->where('del',0)->find(); if(!$info){ HelpHander::error('记录不存在'); } if($data['nums'] != $info['nums'] && $info['nums'] == 1){ HelpHander::error('该记录已拆分,不能修改数量'); } } unset($data['id']); if($id > 0){ $data['update_time'] = date('Y-m-d H:i:s'); $ret = $this->allowField(true)->save($data,['id'=>$id]); if(!$ret){ HelpHander::error('操作失败'); } }else{ $data['create_time'] = date('Y-m-d H:i:s'); Db::startTrans(); try{ // 去当天最大编号 $max = Db::name('asset_items') ->where('org_id',$data['org_id']) ->where('create_time','>=',date('Y-m-d').' 00:00:00') ->where('create_time','<=',date('Y-m-d').' 23:59:59') ->where('sn','like',date('Ymd').'%') ->max('sn'); $maxinit = $max?$max:date('Ymd').'0000'; // 添加是不再拆分 $data['sn'] = $maxinit + 1; $ret = Db::name('asset_items')->insert($data); if(!$ret){ \exception('操作失败'); } /*$nums = $data['nums']; // 拆分程序 $data['nums'] = 1; for ($i=1;$i<=$nums;$i++){ $data['sn'] = $maxinit + $i; $ret = Db::name('asset_items')->insert($data); if(!$ret){ \exception('操作失败'); } }*/ Db::commit(); }catch (Exception $e){ Db::rollback(); HelpHander::error($e->getMessage()); } } if($id > 0){ $content = '修改资产'; }else{ $content = '添加资产'; } model('ActionLog')->add(12,$content,0,$logdata); return true; } public function split($id){ $info = $this->info($id); if($info['nums'] == 1){ HelpHander::error('该资产不能再拆分'); } $time = date('Y-m-d',strtotime($info['create_time'])); $max = Db::name('asset_items') ->where('org_id',$info['org_id']) ->where('create_time','>=',$time.' 00:00:00') ->where('create_time','<=',$time.' 23:59:59') ->order('id desc') ->value('sn'); $maxinit = $max?$max:date('Ymd').'0000'; $nums = $info['nums'] - 1; Db::startTrans(); try{ $ret = Db::name('asset_items')->where('id',$info['id'])->update(['nums' => 1,'update_time' => date('Y-m-d H:i:s')]); if(!$ret){ \exception('操作失败'); } $data = $info; $data['nums'] = 1; unset($data['id']); for ($i=1;$i<=$nums;$i++){ $data['sn'] = $maxinit + $i; $ret = Db::name('asset_items')->insert($data); if(!$ret){ \exception('操作失败'); } } Db::commit(); return true; }catch (Exception $e){ Db::rollback(); HelpHander::error($e->getMessage()); } } public function info($id){ $info = $this->where('id',$id)->find(); if(!$info){ HelpHander::error('数据不存在'); } return $info->toArray(); } public function lists($orgId){ $page = input('page/d',1); $size = input('size/d',10); $title = input('title','','trim'); $cateId = input('cateId/d',0); $companyId = input('companyId/d',0); $addId = input('addId/d',0); $classId = input('classId/d',0); $enable = input('enable/d',-1); $spec = input('spec','','trim'); $brand = input('brand','','trim'); $remark = input('remark','','trim'); $address = input('address','','trim'); $dep = input('dep','','trim'); $user = input('user','','trim'); $startTime = input('startTime','','trim'); $endTime = input('endTime','','trim'); $financeSn = input('financeSn','','trim'); $price = input('price','','trim'); $maxPrice = input('maxPrice','','trim'); $map[] = ['org_id','=',$orgId]; $map[] = ['del','=',0]; if($cateId > 0){ $map[] = ['cate_id','=',$cateId]; } if($dep){ $map[] = ['dep_id','in',explode(',',$dep)]; } if($user){ $map[] = ['user_id','in',explode(',',$user)]; } if($title){ $map[] = ['sn|title','like','%'.$title.'%']; } if($spec){ $map[] = ['spec','like','%'.$spec.'%']; } if($brand){ $map[] = ['brand','like','%'.$brand.'%']; } if($remark){ $map[] = ['remark','like','%'.$remark.'%']; } if($address){ $map[] = ['address','like','%'.$address.'%']; } if($companyId > 0){ $map[] = ['company_id','=',$companyId]; } if($addId > 0){ $map[] = ['add_id','=',$addId]; } if($classId > 0){ $map[] = ['class_id','=',$classId]; } if($enable >= 0){ $map[] = ['enable','=',$enable]; } if($startTime && $endTime){ $map[] = ['buy_time','>=',$startTime]; $map[] = ['buy_time','<=',$endTime]; } if($financeSn){ $map[] = ['finance_sn','like','%'.$financeSn.'%']; } if($price != ''){ $map[] = ['price','>=',$price]; } if($maxPrice != ''){ $map[] = ['price','<=',$maxPrice]; } $lists = $this ->where($map) ->page($page,$size) ->order('id desc') ->select(); $lists = $lists?$lists->toArray():[]; foreach ($lists as $k=>$v){ $lists[$k]['cate_name'] = Db::name('asset_cate')->where('id',$v['cate_id'])->value('title'); $lists[$k]['unit_name'] = Db::name('asset_unit')->where('id',$v['unit_id'])->value('title'); $lists[$k]['company_name'] = Db::name('company')->where('id',$v['company_id'])->value('title'); $lists[$k]['class_name'] = Db::name('asset_class')->where('id',$v['class_id'])->value('title'); $lists[$k]['add_name'] = Db::name('asset_add')->where('id',$v['add_id'])->value('title'); $lists[$k]['user_name'] = ''; $lists[$k]['dep_name'] = ''; if($v['user_id'] > 0){ $lists[$k]['user_name'] = Db::name('user_info')->where('user_id',$v['user_id'])->value('name'); } if($v['dep_id'] > 0){ $lists[$k]['dep_name'] = Db::name('dep')->where('id',$v['dep_id'])->value('name'); } } $total = $this->where($map)->count(); $totalPrice = $this->where($map)->sum('price*nums'); $data = [ 'total' => $total, 'list' => $lists, 'totalPrice' => $totalPrice ]; return $data; } public function exportLists($mb,$selectData,$orgId,$all){ $map[] = ['org_id','=',$orgId]; $map[] = ['del','=',0]; if($all == 1){ $title = input('title','','trim'); $cateId = input('cateId/d',0); $companyId = input('companyId/d',0); $addId = input('addId/d',0); $classId = input('classId/d',0); $enable = input('enable/d',-1); $spec = input('spec','','trim'); $brand = input('brand','','trim'); $remark = input('remark','','trim'); $address = input('address','','trim'); $dep = input('dep','','trim'); $user = input('user','','trim'); $startTime = input('startTime','','trim'); $endTime = input('endTime','','trim'); $financeSn = input('financeSn','','trim'); $price = input('price','','trim'); $maxPrice = input('maxPrice','','trim'); if($cateId > 0){ $map[] = ['cate_id','=',$cateId]; } if($dep){ $map[] = ['dep_id','in',explode(',',$dep)]; } if($user){ $map[] = ['user_id','in',explode(',',$user)]; } if($title){ $map[] = ['sn|title','like','%'.$title.'%']; } if($spec){ $map[] = ['spec','like','%'.$spec.'%']; } if($brand){ $map[] = ['brand','like','%'.$brand.'%']; } if($remark){ $map[] = ['remark','like','%'.$remark.'%']; } if($address){ $map[] = ['address','like','%'.$address.'%']; } if($companyId > 0){ $map[] = ['company_id','=',$companyId]; } if($addId > 0){ $map[] = ['add_id','=',$addId]; } if($classId > 0){ $map[] = ['class_id','=',$classId]; } if($enable >= 0){ $map[] = ['enable','=',$enable]; } if($startTime && $endTime){ $map[] = ['buy_time','>=',$startTime]; $map[] = ['buy_time','<=',$endTime]; } if($financeSn){ $map[] = ['finance_sn','like','%'.$financeSn.'%']; } if($price != ''){ $map[] = ['price','>=',$price]; } if($maxPrice != ''){ $map[] = ['price','<=',$maxPrice]; } }else{ $map[] = ['id','in',$selectData]; } $lists = $this ->where($map) ->order('id desc') ->select(); $lists = $lists?$lists->toArray():[]; foreach ($lists as $k=>$v){ $lists[$k]['cate_name'] = Db::name('asset_cate')->where('id',$v['cate_id'])->value('title'); $lists[$k]['unit_name'] = Db::name('asset_unit')->where('id',$v['unit_id'])->value('title'); $lists[$k]['company_name'] = Db::name('company')->where('id',$v['company_id'])->value('title'); $lists[$k]['class_name'] = Db::name('asset_class')->where('id',$v['class_id'])->value('title'); $lists[$k]['add_name'] = Db::name('asset_add')->where('id',$v['add_id'])->value('title'); $lists[$k]['user_name'] = ''; $lists[$k]['dep_name'] = ''; if($v['user_id'] > 0){ $lists[$k]['user_name'] = Db::name('user_info')->where('user_id',$v['user_id'])->value('name'); } if($v['dep_id'] > 0){ $lists[$k]['dep_name'] = Db::name('dep')->where('id',$v['dep_id'])->value('name'); } if($v['enable'] == 1){ $lists[$k]['enableText'] = '在库'; }else if($v['enable'] == 2){ $lists[$k]['enableText'] = '使用'; }else if($v['enable'] == 4){ $lists[$k]['enableText'] = '维修'; }else if($v['enable'] == 5){ $lists[$k]['enableText'] = '处置'; }else{ $lists[$k]['enableText'] = ''; } $lists[$k]['printText'] = $v['print'] == 1?"是":"否"; } $columns = []; foreach ($mb as $k=>$v){ if($v['select']){ $title = $v['title2']?$v['title2']:$v['title']; $columns[] = [ "title" => $title, "key" => $v['name'] ]; } } // $columns = [ // ["title" => "编号","key" => "sn"], // ["title" => "名称","key" => "title"], // ["title" => "规格","key" => "spec"], // ["title" => "所属公司","key" => "companyName"], // ["title" => "数量","key" => "nums"], // ["title" => "单位","key" => "unitName"], // ["title" => "状态","key" => "enableText"], // ["title" => "使用部门","key" => "depName"], // ["title" => "使用人员","key" => "userName"], // ["title" => "类型","key" => "cateName"], // ["title" => "类别","key" => "className"], // ["title" => "增加方式","key" => "addName"], // ["title" => "品牌","key" => "brand"], // ["title" => "原值","key" => "price"], // ["title" => "存放地点","key" => "address"], // ["title" => "资产用途","key" => "used"], // ["title" => "购置日期","key" => "buyTime"], // ["title" => "是否打印标签","key"=>"printText"], // ["title" => "备注","key" => "remark"], // ]; $data = [ 'columns' => $columns, 'list' => $lists ]; return $data; } // type 0=全部在库和使用 1=在库 2=使用 // 去除掉正在审批中的物品 public function selectlists($page,$size,$title,$cateId,$companyId,$addId,$classId,$userId,$orgId,$type=0){ $map[] = ['a.org_id','=',$orgId]; $map[] = ['a.del','=',0]; $map[] = ['a.nums','=',1]; $dep = input('dep','','trim'); // $map[] = ['is_check','=',0]; // 不取盘库中的物品 // $ids = $this->itemsuse($orgId); // if($ids){ // $map[] = ['id','not in',$ids]; // } if($dep){ $map[] = ['a.dep_id','in',explode(',',$dep)]; } if($cateId > 0){ $map[] = ['a.cate_id','=',$cateId]; } if($title){ $map[] = ['a.sn|a.title|b.name','like','%'.$title.'%']; } if($companyId > 0){ $map[] = ['a.company_id','=',$companyId]; } if($addId > 0){ $map[] = ['a.add_id','=',$addId]; } if($classId > 0){ $map[] = ['a.class_id','=',$classId]; } if($type == 1){ $map[] = ['a.enable','=',1]; } else if($type == 2){ $map[] = ['a.enable','=',2]; // $map[] = ['user_id','=',$userId]; }else{ $map[] = ['a.enable','in','1,2']; } $lists = $this ->alias('a') ->join('user_info b','a.user_id = b.user_id','left') ->field('a.*,b.name as user_name') ->where($map) ->page($page,$size) ->order('a.id desc') ->select(); $lists = $lists?$lists->toArray():[]; foreach ($lists as $k=>$v){ $lists[$k]['cate_name'] = Db::name('asset_cate')->where('id',$v['cate_id'])->value('title'); $lists[$k]['unit_name'] = Db::name('asset_unit')->where('id',$v['unit_id'])->value('title'); $lists[$k]['company_name'] = Db::name('company')->where('id',$v['company_id'])->value('title'); $lists[$k]['class_name'] = Db::name('asset_class')->where('id',$v['class_id'])->value('title'); $lists[$k]['add_name'] = Db::name('asset_add')->where('id',$v['add_id'])->value('title'); $lists[$k]['user_name'] = $lists[$k]['user_name']? $lists[$k]['user_name']:''; $lists[$k]['dep_name'] = ''; // if($v['user_id'] > 0){ // $lists[$k]['user_name'] = Db::name('user_info')->where('user_id',$v['user_id'])->value('name'); // } if($v['dep_id'] > 0){ $lists[$k]['dep_name'] = Db::name('dep')->where('id',$v['dep_id'])->value('name'); } } $total = $this->where($map) ->alias('a') ->join('user_info b','a.user_id = b.user_id','left') ->count(); $data = [ 'total' => $total, 'list' => $lists ]; return $data; } // 正在审核中的物品 public function itemsuse($orgId){ $map[] = ['b.status','=',0]; $map[] = ['b.org_id','=',$orgId]; $ids1 = Db::name('asset_receive_items') ->alias('a') ->join('asset_receive b','a.receive_id = b.id') ->where($map) ->column('a.items_id'); $ids1 = $ids1?$ids1:[]; $ids2 = Db::name('asset_withdraw_items') ->alias('a') ->join('asset_withdraw b','a.withdraw_id = b.id') ->where($map) ->column('a.items_id'); $ids2 = $ids2?$ids2:[]; $ids3 = Db::name('asset_repair_items') ->alias('a') ->join('asset_repair b','a.repair_id = b.id') ->where($map) ->column('a.items_id'); $ids3 = $ids3?$ids3:[]; $ids4 = Db::name('asset_disposal_items') ->alias('a') ->join('asset_disposal b','a.disposal_id = b.id') ->where($map) ->column('a.items_id'); $ids4 = $ids4?$ids4:[]; return array_unique(array_merge($ids1,$ids2,$ids3,$ids4)); } public function del($id){ // 检查是否已被使用 $info = Db::name('office_receive_items') ->where('items_id',$id) ->find(); if($info){ HelpHander::error('已被使用,无法删除'); } $ret = $this->where('id',$id)->setField('del',1); if(!$ret){ HelpHander::error('删除失败'); } $logdata = json_encode(['id' => $id]); model('ActionLog')->add(12,'删除资产',0,$logdata); return true; } // 获取资产数量 public function getCountByCompany($companyId){ $map[] = ['del','=',0]; $map[] = ['enable','>',0]; $map[] = ['company_id','=',$companyId]; $count = Db::name('asset_items') ->where($map) ->sum('nums'); return $count; } public function getMoneyByCompany($companyId){ $map[] = ['del','=',0]; $map[] = ['enable','>',0]; $map[] = ['company_id','=',$companyId]; $count = Db::name('asset_items') ->where($map) ->sum('price*nums'); return $count; } // 我领取的资产 public function myLists($page,$size,$title,$userId,$orgId){ $map[] = ['org_id','=',$orgId]; $map[] = ['del','=',0]; if($title){ $map[] = ['sn|title','like','%'.$title.'%']; } if($userId > 0){ $map[] = ['user_id','=',$userId]; } $lists = $this ->where($map) ->page($page,$size) ->order('id desc') ->select(); $lists = $lists?$lists->toArray():[]; foreach ($lists as $k=>$v){ $lists[$k]['cate_name'] = Db::name('asset_cate')->where('id',$v['cate_id'])->value('title'); $lists[$k]['unit_name'] = Db::name('asset_unit')->where('id',$v['unit_id'])->value('title'); $lists[$k]['company_name'] = Db::name('company')->where('id',$v['company_id'])->value('title'); $lists[$k]['class_name'] = Db::name('asset_class')->where('id',$v['class_id'])->value('title'); $lists[$k]['add_name'] = Db::name('asset_add')->where('id',$v['add_id'])->value('title'); $lists[$k]['user_name'] = ''; $lists[$k]['dep_name'] = ''; if($v['user_id'] > 0){ $lists[$k]['user_name'] = Db::name('user_info')->where('user_id',$v['user_id'])->value('name'); } if($v['dep_id'] > 0){ $lists[$k]['dep_name'] = Db::name('dep')->where('id',$v['dep_id'])->value('name'); } } $total = $this->where($map)->count(); $totalPrice = $this->where($map)->sum('price'); $data = [ 'total' => $total, 'list' => $lists, 'totalPrice' => $totalPrice ]; return $data; } }