293 lines
12 KiB
PHP
293 lines
12 KiB
PHP
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | likeadmin快速开发前后端分离管理后台(PHP版)
|
||
// +----------------------------------------------------------------------
|
||
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
||
// | 开源版本可自由商用,可去除界面版权logo
|
||
// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
|
||
// | github下载:https://github.com/likeshop-github/likeadmin
|
||
// | 访问官网:https://www.likeadmin.cn
|
||
// | likeadmin团队 版权所有 拥有最终解释权
|
||
// +----------------------------------------------------------------------
|
||
// | author: likeadminTeam
|
||
// +----------------------------------------------------------------------
|
||
|
||
namespace app\adminapi\logic\consult_basic;
|
||
|
||
|
||
use app\common\logic\BaseLogic;
|
||
use app\common\model\auth\Admin;
|
||
use app\common\model\consult_basic\ConsultProject;
|
||
use app\common\model\consult_build\ConsultAccept;
|
||
use app\common\model\consult_build\ConsultSceneExecute;
|
||
use app\common\model\consult_build\ConsultSceneOrg;
|
||
use app\common\model\consult_build\ConsultScenePrepare;
|
||
use app\common\model\consult_strategy\ConsultContract;
|
||
use app\common\model\consult_strategy\ConsultCost;
|
||
use app\common\model\consult_strategy\ConsultDeclare;
|
||
use app\common\model\consult_strategy\ConsultDesign;
|
||
use app\common\model\consult_strategy\ConsultProcure;
|
||
use app\common\model\consult_target\ConsultControl;
|
||
use app\common\model\consult_target\ConsultDecision;
|
||
use app\common\model\consult_target\ConsultDemand;
|
||
use app\common\model\consult_target\ConsultReceive;
|
||
use app\common\model\marketing\MarketingContract;
|
||
use think\facade\Db;
|
||
|
||
|
||
/**
|
||
* 基本信息逻辑
|
||
* Class ConsultProjectLogic
|
||
* @package app\adminapi\logic\consult_basic
|
||
*/
|
||
class ConsultProjectLogic extends BaseLogic
|
||
{
|
||
|
||
|
||
/**
|
||
* @notes 添加基本信息
|
||
* @param array $params
|
||
* @return bool
|
||
* @author likeadmin
|
||
* @date 2024/03/11 09:25
|
||
*/
|
||
public static function add(array $params): bool
|
||
{
|
||
Db::startTrans();
|
||
try {
|
||
ConsultProject::create([
|
||
'project_name' => $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;
|
||
}
|
||
} |