generate_sn(CostProject::class, 'project_num'), 'project_name' => $params['project_name'], 'contract_id' => $params['contract_id'], 'types' => $params['types'], 'industry' => $params['industry'], 'province' => $params['province'], 'city' => $params['city'], 'address' => $params['address'], 'starting' => !empty($params['starting']) ? strtotime($params['starting']) : 0, 'endtime' => !empty($params['endtime']) ? strtotime($params['endtime']) : 0, 'jhgq' => $params['jhgq'], 'depar' => $params['depar'], 'principal' => $params['principal'], 'person' => $params['person'] ? json_encode($params['person']) : null, 'invest' => $params['invest'], 'budget' => $params['budget'], 'cost' => $params['cost'], 'approval' => $params['approval'], 'aunit' => $params['aunit'], 'js_unit' => $params['js_unit'], 'Acontact' => $params['Acontact'], 'acontactnum' => $params['acontactnum'], 'date' => !empty($params['date']) ? strtotime($params['date']) : 0, 'generalize' => $params['generalize'], 'note' => $params['note'], 'remark' => $params['remark'], 'annex' => $params['annex'] ? json_encode($params['annex']) : null, ]); if ($params['contract_id'] > 0) { MarketingContract::where('id', $params['contract_id'])->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/02/21 09:23 */ public static function edit(array $params): bool { Db::startTrans(); try { CostProject::where('id', $params['id'])->update([ 'project_num' => generate_sn(CostProject::class, 'project_num'), 'project_name' => $params['project_name'], 'contract_id' => $params['contract_id'], 'types' => $params['types'], 'industry' => $params['industry'], 'province' => $params['province'], 'city' => $params['city'], 'address' => $params['address'], 'starting' => !empty($params['starting']) ? strtotime($params['starting']) : 0, 'endtime' => !empty($params['endtime']) ? strtotime($params['endtime']) : 0, 'jhgq' => $params['jhgq'], 'depar' => $params['depar'], 'principal' => $params['principal'], 'person' => $params['person'] ? json_encode($params['person']) : null, 'invest' => $params['invest'], 'budget' => $params['budget'], 'cost' => $params['cost'], 'approval' => $params['approval'], 'aunit' => $params['aunit'], 'js_unit' => $params['js_unit'], 'Acontact' => $params['Acontact'], 'acontactnum' => $params['acontactnum'], 'date' => !empty($params['date']) ? strtotime($params['date']) : 0, 'generalize' => $params['generalize'], 'note' => $params['note'], 'remark' => $params['remark'], 'annex' => $params['annex'] ? json_encode($params['annex']) : null, ]); Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } /** * @notes 获取造价项目台账详情 * @param $params * @return array * @author likeadmin * @date 2024/02/21 09:23 */ public static function detail($params): array { $res = CostProject::withoutField('update_time,delete_time')->findOrEmpty($params['id']); $contract = MarketingContract::field('contract_name')->where('id', $res['contract_id'])->findOrEmpty(); $province = GeoProvince::field('province_name')->where('province_code', $res['province'])->findOrEmpty(); $city = GeoCity::field('city_name')->where('city_code', $res['city'])->findOrEmpty(); $dept = Dept::field('name')->where('id', $res['depar'])->findOrEmpty(); $admin = Admin::field('name')->where('id', $res['principal'])->findOrEmpty(); $custom = MarketingCustom::field('name')->where('id', $res['aunit'])->findOrEmpty(); $res['contract_name'] = $contract?->contract_name; $res['types_text'] = $res->types_text; $res['industry_text'] = $res->industry_text; $res['province_name'] = $province?->province_name; $res['city_name'] = $city?->city_name; $res['dept_name'] = $dept?->name; $res['principal_name'] = $admin?->name; $res['person_text'] = $res->person_text; $res['aunit_name'] = $custom?->name; return $res->toArray(); } public static function datas($name) { $datas = CostProject::where(function ($query) use ($name) { if ($name) { $query->where('project_name', 'like', '%' . $name . '%'); } }) ->field(['id', 'project_num', 'project_name']) ->order(['id' => 'desc']) ->select() ->toArray(); foreach ($datas as &$item) { $item['projectinfo'] = 'ID:' . $item['id'] . ' / 名称:' . $item['project_name']; } return $datas; } // public static function createProject($data) // { // Db::startTrans(); // try { // $res = CostProject::create([ // 'project_num' => generate_sn(CostProject::class, 'project_num'), // 'project_name' => $data['project_name'], // 'contract_id' => $data['contract_id'], // 'types' => $data['types'], // 'industry' => $data['industry'], // 'province' => $data['province'], // 'city' => $data['city'], // 'address' => $data['address'], // 'starting' => $data['starting'], // 'endtime' => $data['endtime'], // 'jhgq' => $data['jhgq'], // 'depar' => $data['depar'], // 'principal' => $data['principal'], // 'invest' => $data['invest'], // 'budget' => $data['budget'], // 'cost' => $data['cost'], // 'approval' => $data['approval'], // 'aunit' => $data['aunit'], // 'Acontact' => $data['Acontact'], // 'acontactnum' => $data['acontactnum'], // 'date' => $data['date'], // 'generalize' => $data['generalize'], // 'note' => $data['note'], // 'remark' => $data['remark'], // 'annex' => $data['annex'] // ]); // if ($data['person_id']) { // $arr = []; // $person_id = explode(',', $data['person_id']); // (new CostProjectPerson)->delete($person_id); // foreach ($person_id as $k => $v) { // $arr[] = ['cost_project_id' => $data->id, $v]; // } // $arr ?? (new CostProjectPerson)->saveAll($arr); // } // return $res; // } catch (\Exception $e) { // return false; // } // } /** * @notes 删除造价项目台账 * @param array $params * @return bool * @author likeadmin * @date 2024/02/21 09:23 */ public static function delete(array $params): bool { //任务类别 $task_type = TaskType::where('cost_project_id', 'in', $params['id'])->findOrEmpty(); if (!$task_type->isEmpty()) { self::setError('此数据关联了任务类别信息,须删除任务类别信息'); return false; } //任务分配 $task_allocation = TaskAllocation::where('cost_project_id', 'in', $params['id'])->findOrEmpty(); if (!$task_allocation->isEmpty()) { self::setError('此数据关联了任务分配信息,须删除任务分配信息'); return false; } //任务办理与三级审核 $task_handling_three_level_review = TaskHandlingThreeLevelReview::where('project_id', 'in', $params['id'])->findOrEmpty(); if (!$task_handling_three_level_review->isEmpty()) { self::setError('此数据关联了任务办理与三级审核信息,须删除任务办理与三级审核信息'); return false; } //成果文件审定、签发列表 $approval_issuance_achievement_documents = ApprovalIssuanceAchievementDocuments::where('project_id', 'in', $params['id'])->findOrEmpty(); if (!$approval_issuance_achievement_documents->isEmpty()) { self::setError('此数据关联了成果文件审定签发信息,须删除成果文件审定签发信息'); return false; } //资料接收 $data_reception = DataReception::where('project_id', 'in', $params['id'])->findOrEmpty(); if (!$data_reception->isEmpty()) { self::setError('此数据关联了资料接收信息,须删除资料接收信息'); return false; } //项目提成 $project_commission = ProjectCommission::where('project_id', 'in', $params['id'])->findOrEmpty(); if (!$project_commission->isEmpty()) { self::setError('此数据关联了项目提成信息,须删除项目提成信息'); return false; } //项目变更签证 $project_change_visa = ProjectChangeVisa::where('project_id', 'in', $params['id'])->findOrEmpty(); if (!$project_change_visa->isEmpty()) { self::setError('此数据关联了项目变更签证信息,须删除项目变更签证信息'); return false; } //项目踏勘会签 $project_survey_signature = ProjectSurveySignature::where('project_id', 'in', $params['id'])->findOrEmpty(); if (!$project_survey_signature->isEmpty()) { self::setError('此数据关联了项目踏勘会签信息,须删除项目踏勘会签信息'); return false; } //项目整改 $project_rectification = ProjectRectification::where('project_id', 'in', $params['id'])->findOrEmpty(); if (!$project_rectification->isEmpty()) { self::setError('此数据关联了项目整改信息,须删除项目整改信息'); return false; } //项目进度汇报 $jianli_project_progress_report = JianliProjectProgressReport::where('project_id', 'in', $params['id'])->findOrEmpty(); if (!$jianli_project_progress_report->isEmpty()) { self::setError('此数据关联了项目进度汇报信息,须删除项目进度汇报信息'); return false; } //项目进度款 $project_progress_payment = ProjectProgressPayment::where('project_id', 'in', $params['id'])->findOrEmpty(); if (!$project_progress_payment->isEmpty()) { self::setError('此数据关联了项目进度款信息,须删除项目进度款信息'); return false; } //用章申请 $apply_with_seal = ApplyWithSeal::where('project_id', 'in', $params['id'])->findOrEmpty(); if (!$apply_with_seal->isEmpty()) { self::setError('此数据关联了用章申请信息,须删除用章申请信息'); return false; } return CostProject::destroy($params['id']); } }