$params['theme'], 'code' => data_unique_code('FYSQ'), 'days' => $params['days'], 'remark' => $params['remark'], 'create_user' => $params['create_user'], 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(), ]); if (!empty($params['detail'])) { foreach ($params['detail'] as $v) { FinancialFeeApplicationDetail::create([ 'fee_application_id' => $res->id, 'subject_category' => $v['subject_category'], 'bill_num' => $v['bill_num'], 'amount' => $v['amount'], 'remark' => $v['remark'], ]); } } Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } /** * @notes 编辑财务管理--费用申请 * @param array $params * @return bool * @author likeadmin * @date 2024/03/27 14:53 */ public static function edit(array $params): bool { Db::startTrans(); try { FinancialFeeApplication::where('id', $params['id'])->update([ 'theme' => $params['theme'], 'days' => $params['days'], 'remark' => $params['remark'], 'create_user' => $params['create_user'], 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(), 'update_time' => time() ]); if (!empty($params['detail'])) { foreach ($params['detail'] as $v) { if (!empty($v['id'])) { FinancialFeeApplicationDetail::where('id', $v['id'])->update([ 'fee_application_id' => $params['id'], 'subject_category' => $v['subject_category'], 'bill_num' => $v['bill_num'], 'amount' => $v['amount'], 'remark' => $v['remark'], 'update_time' => time(), ]); } else { FinancialFeeApplicationDetail::create([ 'fee_application_id' => $params['id'], 'subject_category' => $v['subject_category'], 'bill_num' => $v['bill_num'], 'amount' => $v['amount'], 'remark' => $v['remark'], ]); } } } Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } /** * @notes 删除财务管理--费用申请 * @param array $params * @return bool * @author likeadmin * @date 2024/03/27 14:53 */ public static function delete(array $params): bool { $detail = FinancialFeeApplicationDetail::where('fee_application_id', 'in', $params['id'])->findOrEmpty(); if (!$detail->isEmpty()) { self::setError('此数据关联了申请明细信息,需删除申请明细信息'); return false; } return FinancialFeeApplication::destroy($params['id']); } /** * @notes 获取财务管理--费用申请详情 * @param $params * @return array * @author likeadmin * @date 2024/03/27 14:53 */ public static function detail($params): array { $data = FinancialFeeApplication::withoutField('update_time,delete_time')->findOrEmpty($params['id']); $data['total_bill_num'] = FinancialFeeApplicationDetail::where('fee_application_id', $data['id'])->sum('bill_num'); $data['total_amount'] = FinancialFeeApplicationDetail::where('fee_application_id', $data['id'])->sum('amount'); return $data->toArray(); } }