$orgId, 'user_id' => $userId, 'apply_id' => $id, 'dep_id' => $extra['depId'], 'create_time' => date('Y-m-d H:i:s'), 'status' => 0, ]; $items = []; foreach ($formJson as $k=>$v){ if($v['componentName'] == 'ddassetdisposalfield'){ foreach ($v['components'] as $key=>$val){ switch ($val['idx']){ case '0': $items = json_decode($val['values'],true); break; case '1': $data['remark'] = $val['values']; break; } } break; } } $amount = 0; foreach ($items as $k=>$v){ $amount += $v['snums']*$v['price']; } $data['amount'] = $amount; $receiveId = Db::name('asset_disposal')->insertGetId($data); $sitems = []; foreach ($items as $k=>$v){ $sitems[] = [ 'disposal_id' => $receiveId, 'items_id' => $v['id'], 'nums' => $v['snums'] ]; } $count = Db::name('asset_disposal_items')->insertAll($sitems); if($count != count($sitems)){ return false; } return true; } public function advancedEndAssetDisposal($id,$orgId,$userId,$formJson){ $data = [ 'update_time' => date('Y-m-d H:i:s'), 'status' => 1 ]; $info = Db::name('asset_disposal')->where('apply_id',$id)->find(); if(!$info || $info['status'] != 0){ return false; } $ret = Db::name('asset_disposal')->where('apply_id',$id)->update($data); if(!$ret){ return false; } // 删除使用者和使用部门 $itemsids = Db::name('asset_disposal_items')->where('disposal_id',$info['id'])->column('items_id'); Db::name('asset_items')->where('id','in',$itemsids)->update([ 'enable' => 5, 'update_time' => date('Y-m-d H:i:s') ]); return $ret?true:false; } public function advancedDisagreeAssetDisposal($id){ $data = [ 'update_time' => date('Y-m-d H:i:s'), 'status' => 2 ]; $ret = Db::name('asset_disposal')->where('apply_id',$id)->update($data); if(!$ret){ return false; } return true; } public function lists($page,$size,$title,$start,$end,$orgId){ $map[] = ['or.org_id','=',$orgId]; if($title){ $map[] = ['ui.name','like','%'.$title.'%']; } if($start&&$end){ $map[] = ['or.create_time','egt',$start]; $map[] = ['or.create_time','elt',$end]; } $lists = Db::name('asset_disposal') ->alias('or') ->join('user_info ui','ui.user_id = or.agent_user_id') ->field('or.*,ui.name as user_name') ->where($map) ->page($page,$size) ->order('or.id desc') ->select(); $lists = $lists?$lists:[]; foreach ($lists as $k=>$v){ $lists[$k]['agent_dep_name'] = Db::name('dep')->where('id',$v['agent_dep_id'])->value('name'); $lists[$k]['way_name'] = Db::name('asset_way')->where('id',$v['way_id'])->value('title'); } $total = Db::name('asset_disposal') ->alias('or') ->join('user_info ui','ui.user_id = or.agent_user_id') ->where($map)->count(); $data = [ 'total' => $total, 'list' => $lists ]; return $data; } public function add(){ $data = [ 'id' => input('id/d',0), 'org_id' => input('orgId/d',0), 'agent_user_id' => input('agentUserId/d',0), 'agent_dep_id' => input('agentDepId/d',0), 'way_id' => input('wayId/d',0), 'reason' => input('reason','','trim'), 'result' => input('result','','trim'), 'remark' => input('remark','','trim'), 'files' => input('files','','trim'), 'items' => input('items','','trim') ]; $result = validate('AssetDisposal')->check($data,[],''); if(true !== $result){ HelpHander::error(validate('AssetDisposal')->getError()); } $id = $data['id']; unset($data['id']); if($id > 0){ $data['update_time'] = date('Y-m-d H:i:s'); unset($data['items']); $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{ $data['sn'] = $this->getSn($data['org_id']); $items = json_decode($data['items'],true); unset($data['items']); $receiveId = Db::name('AssetDisposal')->insertGetId($data); if(!$receiveId){ \exception('操作失败'); } $d = []; $itemids = []; foreach ($items as $k=>$v){ $iteminfo = Db::name('asset_items') ->where('id',$v['id']) ->field('id,user_id,dep_id') ->find(); $d[] = [ 'disposal_id' => $receiveId, 'items_id' => $v['id'], 'user_id' => $iteminfo['user_id'], 'dep_id' => $iteminfo['dep_id'], ]; $itemids[] = $v['id']; } $res = Db::name('asset_disposal_items')->insertAll($d); if($res != count($d)){ \exception('操作失败'); } $sd = [ 'enable' => 5, 'update_time' => date('Y-m-d H:i:s') ]; $res = Db::name('asset_items')->where('id','in',$itemids)->update($sd); if($res != count($itemids)){ \exception('操作失败'); } Db::commit(); }catch (Exception $e){ Db::rollback(); HelpHander::error($e->getMessage()); } } return true; } public function getSn($orgId){ $max = Db::name('asset_disposal') ->where('org_id',$orgId) ->where('create_time','>=',date('Y-m-d').' 00:00:00') ->order('id desc') ->value('sn'); $maxinit = $max?$max:date('Ymd').'0000'; return $maxinit + 1; } public function info($id){ $info = $this->where('id',$id)->find(); if(!$info){ HelpHander::error('数据不存在'); } $data = $info->toArray(); $data['agentDepName'] = Db::name('dep')->where('id',$info['agent_dep_id'])->value('name'); $data['agentUserName'] = Db::name('user_info')->where('user_id',$info['agent_user_id'])->value('name'); $data['way_name'] = Db::name('asset_way')->where('id',$info['way_id'])->value('title'); $items = Db::name('asset_disposal_items') ->alias('ari') ->join('asset_items ai','ai.id = ari.items_id') ->join('asset_unit au','au.id = ai.unit_id') ->where('ari.disposal_id',$id) ->field('ai.*,au.title as unitName') ->select(); $data['items'] = $items?$items:[]; $items = Db::name('asset_disposal_items') ->alias('ari') ->join('asset_items ai','ai.id = ari.items_id') ->join('asset_unit au','au.id = ai.unit_id') ->where('ari.disposal_id',$id) ->field('ai.*,au.title as unitName,ari.user_id as old_user_id,ari.dep_id as old_dep_id') ->select(); foreach ($items as $k=>$v){ $items[$k]['userName'] = Db::name('user_info')->where('user_id',$v['old_user_id'])->value('name'); $items[$k]['depName'] = Db::name('dep')->where('id',$v['old_dep_id'])->value('name'); } $data['items'] = $items?$items:[]; return $data; } }