$params['project_name'], 'project_code' => data_unique_code('XM'), 'nature' => $params['nature'], 'industry' => $params['industry'], 'build_unit' => $params['build_unit'] ?? '', 'build_area' => $params['build_area'], 'address' => $params['address'] ?? '', 'project_level' => $params['project_level'], 'total_investment' => $params['total_investment'], 'engineering_status' => $params['engineering_status'], 'contract_content' => $params['contract_content'] ?? '', 'project_overview' => $params['project_overview'] ?? '', 'project_requirements' => $params['project_requirements'] ?? '', 'planned_start_date' => !empty($params['planned_start_date']) ? strtotime($params['planned_start_date']) : 0, 'planned_end_date' => !empty($params['planned_end_date']) ? strtotime($params['planned_end_date']) : 0, 'actual_start_date' => !empty($params['actual_start_date']) ? strtotime($params['actual_start_date']) : 0, 'actual_end_date' => !empty($params['actual_end_date']) ? strtotime($params['actual_end_date']) : 0, 'implementation_department' => $params['implementation_department'] ?? '', 'supervision_department' => $params['supervision_department'] ?? '', 'project_manager' => $params['project_manager']??0, 'initiation_date' => !empty($params['initiation_date']) ? strtotime($params['initiation_date']) : 0, 'project_leader' => $params['project_leader'] ?? '', 'project_department' => $params['project_department'] ?? '', 'remark' => $params['remark'] ?? '', 'contract' => $params['contract'] ?? '', 'part_a_unit' => $params['part_a_unit'] ?? '', 'annex' => $params['annex'] ? json_encode($params['annex']) : null, 'create_user' => $params['create_user'], 'create_time' => !empty($params['create_time']) ? strtotime($params['actual_end_date']) : time(), ]); if ($params['contract'] > 0) { MarketingContract::where('id', $params['contract'])->update(['status' => 1]); } 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/07 10:49 */ public static function edit(array $params): bool { Db::startTrans(); try { ManageProject::where('id', $params['id'])->update([ 'project_name' => $params['project_name'], 'nature' => $params['nature'], 'industry' => $params['industry'], 'build_unit' => $params['build_unit'] ?? '', 'build_area' => $params['build_area'], 'address' => $params['address'] ?? '', 'project_level' => $params['project_level'], 'total_investment' => $params['total_investment'], 'engineering_status' => $params['engineering_status'], 'contract_content' => $params['contract_content'] ?? '', 'project_overview' => $params['project_overview'] ?? '', 'project_requirements' => $params['project_requirements'] ?? '', 'planned_start_date' => !empty($params['planned_start_date']) ? strtotime($params['planned_start_date']) : 0, 'planned_end_date' => !empty($params['planned_end_date']) ? strtotime($params['planned_end_date']) : 0, 'actual_start_date' => !empty($params['actual_start_date']) ? strtotime($params['actual_start_date']) : 0, 'actual_end_date' => !empty($params['actual_end_date']) ? strtotime($params['actual_end_date']) : 0, 'implementation_department' => $params['implementation_department'] ?? '', 'supervision_department' => $params['supervision_department'] ?? '', 'project_manager' => $params['project_manager']??0, 'initiation_date' => !empty($params['initiation_date']) ? strtotime($params['initiation_date']) : 0, 'project_leader' => $params['project_leader'] ?? '', 'project_department' => $params['project_department'] ?? '', 'remark' => $params['remark'] ?? '', 'contract' => $params['contract'] ?? '', 'part_a_unit' => $params['part_a_unit'] ?? '', 'annex' => $params['annex'] ? json_encode($params['annex']) : null, 'create_user' => $params['create_user'], 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(), 'update_time' => time() ]); 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/07 10:49 */ public static function delete(array $params): bool { //获取参建单位 $company = ManageCompany::where('project_id','in',$params['id'])->findOrEmpty(); if(!$company->isEmpty()){ self::setError('该数据关联了参建单位信息,须删除参建单位信息'); return false; } //获取计量支付信息 $metered_payment = ManageMeteredPayment::where('project_id','in',$params['id'])->findOrEmpty(); if(!$metered_payment->isEmpty()){ self::setError('该数据关联了计量支付信息,须删除计量支付信息'); return false; } //获取工程变更信息 $engineering_changes = ManageEngineeringChanges::where('project_id','in',$params['id'])->findOrEmpty(); if(!$engineering_changes->isEmpty()){ self::setError('该数据关联了工程变更信息,须删除工程变更信息'); return false; } //获取工程进度月报信息 $progress_report = ManageMonthlyProgressReport::where('project_id','in',$params['id'])->findOrEmpty(); if(!$progress_report->isEmpty()){ self::setError('该数据关联了工程进度月报信息,须删除工程进度月报信息'); return false; } //收文管理 $accept_doc = ManageAcceptDoc::where('project_id','in',$params['id'])->findOrEmpty(); if(!$accept_doc->isEmpty()){ self::setError('该数据关联了收文管理信息,须删除收文管理信息'); return false; } //发文管理 $send_doc = ManageSendDoc::where('project_id','in',$params['id'])->findOrEmpty(); if(!$send_doc->isEmpty()){ self::setError('该数据关联了发文管理信息,须删除发文管理信息'); return false; } //项目信息上报 $info_report = ManageInfoReport::where('project_id','in',$params['id'])->findOrEmpty(); if(!$info_report->isEmpty()){ self::setError('该数据关联了项目信息上报信息,须删除项目信息上报信息'); return false; } return ManageProject::destroy($params['id']); } /** * @notes 获取项目管理--项目信息详情 * @param $params * @return array * @author likeadmin * @date 2024/03/07 10:49 */ public static function detail($params): array { $data = ManageProject::withoutField('update_time,delete_time')->findOrEmpty($params['id']); $data['industry_text'] = $data->industry_text; $data['nature_text'] = $data->nature_text; $data['build_area_text'] = $data->build_area_text; $data['project_level_text'] = $data->project_level_text; $data['engineering_status_text'] = $data->engineering_status_text; $data['build_unit_name'] = $data->build_unit_name_text; $data['contract_name'] = $data->contract_name_text; $data['project_manager_name'] = $data->project_manager_name_text; $data['project_leader_name'] = $data->project_leader_name_text; $data['project_department'] = (Int)$data->project_department; $data['supervision_department'] = (Int)$data->supervision_department; $data['implementation_department'] = (Int)$data->implementation_department; $data['project_department_text'] = $data->project_department_name_text; $data['supervision_department_text'] = $data->supervision_department_name_text; $data['implementation_department_text'] = $data->implementation_department_name_text; return $data->toArray(); } public static function datas() { $datas = ManageProject::field(['id', 'project_name']) ->order(['id' => 'desc']) ->select()->each(function($data){ $data['projectinfo'] = 'ID:' . $data['id'] . ' / 名称:' . $data['project_name']; }) ->toArray(); return $datas; } }