financeRule($data,false); if(!$status) return [$status,$msg]; return [true,'保存成功!']; } public function financeAdd($data,$user){ list($status,$msg) = $this->financeRule($data); if(!$status) return [$status,$msg]; return [true,'保存成功!']; } public function financeRule($data,$is_add = true){ return [true,'']; } public function financeDel($data){ if($this->isEmpty($data,'id')) return [false,'ID必须!']; Finance::where('id',$data['id'])->update([ 'del_time'=>time() ]); FinanceDetail::where('id',$data['finance_id'])->update([ 'del_time'=>time() ]); return [true,'删除成功']; } public function financeList($data){ $model = Finance::where('del_time',0) ->select('id','finance_account_name','account','ifsc','amount','crt_id','crt_time') ->orderBy('id','desc'); if(! empty($data['finance_account_name'])) $model->where('finance_account_name', 'LIKE', '%'.$data['finance_account_name'].'%'); if(! empty($data['account'])) $model->where('account', 'LIKE', '%'.$data['account'].'%'); if(! empty($data['ifsc'])) $model->where('ifsc', 'LIKE', '%'.$data['ifsc'].'%'); if(! empty($data['amount'])) $model->where('amount', $data['amount']); if(! empty($data['crt_id'])) $model->where('crt_id', $data['crt_id']); if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) $model->whereBetween('crt_time',[$data['crt_time'][0],$data['crt_time'][1]]); $list = $this->limit($model,'',$data); $list = $this->fillFinanceList($list); return [200,$list]; } public function fillFinanceList($data){ if(empty($data['data'])) return $data; $map = Employee::whereIn('id',array_unique(array_column($data['data'],'crt_id'))) ->pluck('emp_name','id') ->toArray(); date_default_timezone_set('PRC'); foreach ($data['data'] as $key => $value){ $data['data'][$key]['crt_name'] = $map[$value['crt_id']] ?? ''; $data['data'][$key]['crt_time'] = $value['crt_time'] ? date("Y-m-d",$value['crt_time']) : ''; } return $data; } public function financeDetailList($data){ $model = FinanceDetail::where('del_time',0) ->select('id','finance_id','amount','crt_time') ->orderBy('id','desc'); if(! empty($data['finance_account_name']) || ! empty($data['account']) || ! empty($data['ifsc']) || ! empty($data['crt_id']) || ! empty($data['total_amount'])){ $search = ''; if(! empty($data['finance_account_name'])) $search .= "(finance_account_name LIKE '%" . $data['finance_account_name'] . "%') AND "; if(! empty($data['account'])) $search .= "(account LIKE '%" . $data['account'] . "%') AND "; if(! empty($data['ifsc'])) $search .= "(ifsc LIKE '%" . $data['ifsc'] . "%') AND "; if(! empty($data['crt_id'])) $search .= "(crt_id = {$data['crt_id']}) AND "; if(! empty($data['total_amount'])) $search .= "(amount = {$data['total_amount']}) AND "; $search = rtrim($search,'AND '); $search = "({$search})"; $result = Finance::where('del_time',0) ->whereRaw($search) ->select('id') ->get()->toArray(); $model->whereIn('finance_id', array_column($result,'id')); } if(! empty($data['amount'])) $model->where('amount', $data['amount']); if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) $model->whereBetween('crt_time',[$data['crt_time'][0],$data['crt_time'][1]]); $list = $this->limit($model,'',$data); $list = $this->fillFinanceDetailList($list); return [200,$list]; } public function fillFinanceDetailList($data){ if(empty($data['data'])) return $data; //主表信息 $finance = Finance::whereIn('id',array_unique(array_column($data['data'],'finance_id'))) ->select('id','finance_account_name','account','ifsc','amount as total_amount','crt_id') ->get()->toArray(); $finance_map = array_column($finance,null,'id'); $map = Employee::whereIn('id',array_unique(array_column($finance,'crt_id'))) ->pluck('emp_name','id') ->toArray(); date_default_timezone_set('PRC'); foreach ($data['data'] as $key => $value){ $tmp = $finance_map[$value['finance_id']] ?? []; unset($tmp['id']); $data['data'][$key]['crt_name'] = $map[$tmp['crt_id']] ?? ''; $data['data'][$key]['crt_time'] = $value['crt_time'] ? date("Y-m-d",$value['crt_time']) : ''; $data['data'][$key] = array_merge_recursive($data['data'][$key],$tmp); } return $data; } public function financeImport($data,$user){ $import = new Import(); //设置导入人id $import->setCrt($user['id']); //导入 \Maatwebsite\Excel\Facades\Excel::import($import,$data['file']); if($import->getMsg()) return [false, $import->getMsg()]; return [true, '']; } }