$params['project_name'], 'project_code' => data_unique_code('XMZX'), 'industry' => $params['industry'], 'nature' => $params['nature'], 'company' => $params['company'] ?? '', 'build_area' => $params['build_area'], 'address' => $params['address'] ?? '', 'project_level' => $params['project_level'], 'total_investment' => $params['total_investment'], 'initiation_date' => !empty($params['initiation_date']) ? strtotime($params['initiation_date']) : 0, 'contract' => $params['contract'] ?? '', 'contract_amount' => $params['contract_amount'] ?? 0, 'contract_content' => $params['contract_content'] ?? '', 'project_overview' => $params['project_overview'] ?? '', 'consult_content' => $params['consult_content'] ?? '', 'remark' => $params['remark'] ?? '', 'consult_start_date' => !empty($params['consult_start_date']) ? strtotime($params['consult_start_date']) : 0, 'consult_end_date' => !empty($params['consult_end_date']) ? strtotime($params['consult_end_date']) : 0, 'engineering_status' => $params['engineering_status'], 'consult_type' => $params['consult_type'], 'telephone' => $params['telephone'] ?? '', 'consult_user' => $params['consult_user'] ?? '', 'supervision_department' => $params['supervision_department'] ?? '', 'implementation_department' => $params['implementation_department'] ?? '', 'project_department' => $params['project_department'] ?? '', 'project_manager' => $params['project_manager'] ?? '', 'part_a_unit' => $params['part_a_unit'] ?? '', 'project_archiving' => $params['project_archiving'] ? json_encode($params['project_archiving']) : null, 'archiving_directory' => $params['archiving_directory'] ?? '', 'annex' => $params['annex'] ? json_encode($params['annex']) : null, 'create_user' => $params['create_user'], 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : 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/11 09:25 */ public static function edit(array $params): bool { Db::startTrans(); try { ConsultProject::where('id', $params['id'])->update([ 'project_name' => $params['project_name'], 'industry' => $params['industry'], 'nature' => $params['nature'], 'company' => $params['company'] ?? '', 'build_area' => $params['build_area'], 'address' => $params['address'] ?? '', 'project_level' => $params['project_level'], 'total_investment' => $params['total_investment'], 'initiation_date' => !empty($params['initiation_date']) ? strtotime($params['initiation_date']) : 0, 'contract' => $params['contract'] ?? '', 'contract_amount' => $params['contract_amount'] ?? 0, 'contract_content' => $params['contract_content'] ?? '', 'project_overview' => $params['project_overview'] ?? '', 'consult_content' => $params['consult_content'] ?? '', 'remark' => $params['remark'] ?? '', 'consult_start_date' => !empty($params['consult_start_date']) ? strtotime($params['consult_start_date']) : 0, 'consult_end_date' => !empty($params['consult_end_date']) ? strtotime($params['consult_end_date']) : 0, 'engineering_status' => $params['engineering_status'], 'consult_type' => $params['consult_type'], 'telephone' => $params['telephone'] ?? '', 'consult_user' => $params['consult_user'] ?? '', 'supervision_department' => $params['supervision_department'] ?? '', 'implementation_department' => $params['implementation_department'] ?? '', 'project_department' => $params['project_department'] ?? '', 'project_manager' => $params['project_manager'] ?? '', 'part_a_unit' => $params['part_a_unit'] ?? '', 'project_archiving' => $params['project_archiving'] ? json_encode($params['project_archiving']) : null, 'archiving_directory' => $params['archiving_directory'] ?? '', 'annex' => $params['annex'] ? json_encode($params['annex']) : null, 'create_user' => $params['create_user'], 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : 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/11 09:25 */ public static function delete(array $params): bool { //决策管理信息 $decision = ConsultDecision::where('project_id', 'in', $params['id'])->findOrEmpty(); if ($decision->isEmpty()) { self::setError('此数据关联了决策管理信息,需删除决策管理信息'); return false; } //需求研究及管理 $demand = ConsultDemand::where('project_id', 'in', $params['id'])->findOrEmpty(); if ($demand->isEmpty()) { self::setError('此数据关联了需求研究管理信息,需删除需求研究管理信息'); return false; } //总控管理 $control = ConsultControl::where('project_id', 'in', $params['id'])->findOrEmpty(); if ($control->isEmpty()) { self::setError('此数据关联了总控管理信息,需删除总控管理信息'); return false; } //接收管理 $receive = ConsultReceive::where('project_id', 'in', $params['id'])->findOrEmpty(); if ($receive->isEmpty()) { self::setError('此数据关联了接收管理信息,需删除接收管理信息'); return false; } //报建管理 $declare = ConsultDeclare::where('project_id', 'in', $params['id'])->findOrEmpty(); if ($declare->isEmpty()) { self::setError('此数据关联了报建管理信息,需删除报建管理信息'); return false; } //招采管理 $procure = ConsultProcure::where('project_id', 'in', $params['id'])->findOrEmpty(); if ($procure->isEmpty()) { self::setError('此数据关联了招采管理信息,需删除招采管理信息'); return false; } //合同管理 $contract = ConsultContract::where('project_id', 'in', $params['id'])->findOrEmpty(); if ($contract->isEmpty()) { self::setError('此数据关联了合同管理信息,需删除合同管理信息'); return false; } //造价管理 $cost = ConsultCost::where('project_id', 'in', $params['id'])->findOrEmpty(); if ($cost->isEmpty()) { self::setError('此数据关联了造价管理信息,需删除造价管理信息'); return false; } //设计管理 $design = ConsultDesign::where('project_id', 'in', $params['id'])->findOrEmpty(); if ($design->isEmpty()) { self::setError('此数据关联了设计管理信息,需删除设计管理信息'); return false; } //现场准备 $scene_prepare = ConsultScenePrepare::where('project_id', 'in', $params['id'])->findOrEmpty(); if ($scene_prepare->isEmpty()) { self::setError('此数据关联了现场准备信息,需删除现场准备信息'); return false; } //现场组织建设 $scene_org = ConsultSceneOrg::where('project_id', 'in', $params['id'])->findOrEmpty(); if ($scene_org->isEmpty()) { self::setError('此数据关联了现场组织建设信息,需删除现场组织建设信息'); return false; } //现场实施管理 $scene_execute = ConsultSceneExecute::where('project_id', 'in', $params['id'])->findOrEmpty(); if ($scene_execute->isEmpty()) { self::setError('此数据关联了现场实施管理信息,需删除现场实施管理信息'); return false; } //验收管理 $accept = ConsultAccept::where('project_id', 'in', $params['id'])->findOrEmpty(); if ($accept->isEmpty()) { self::setError('此数据关联了验收管理信息,需删除验收管理信息'); return false; } return ConsultProject::destroy($params['id']); } /** * @notes 获取基本信息详情 * @param $params * @return array * @author likeadmin * @date 2024/03/11 09:25 */ public static function detail($params): array { $data = ConsultProject::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['consult_type_text'] = $data->consult_type_text; $data['project_archiving_text'] = $data->project_archiving_text; $data['company_name'] = $data->company_name_text; $data['project_manager_name'] = $data->project_manager_name_text; $data['contract_name'] = $data->contract_name_text; $data['nature'] = (int)$data->nature; $data['build_area'] = (int)$data->build_area; $data['project_department'] = (int)$data->project_department; $data['supervision_department'] = (int)$data->supervision_department; $data['implementation_department'] = (int)$data->implementation_department; $admin = Admin::field('name')->where('id', $data['consult_user'])->findOrEmpty(); $data['consult_user_name'] = $admin?->name; return $data->toArray(); } public static function datas() { $datas = ConsultProject::field(['id', 'project_name']) ->order(['id' => 'desc']) ->select()->each(function ($data) { $data['projectinfo'] = 'ID:' . $data['id'] . ' / 名称:' . $data['project_name']; }) ->toArray(); return $datas; } }