This commit is contained in:
weiz 2024-03-23 15:30:03 +08:00
parent f9cfccf69c
commit e65b612140
3 changed files with 160 additions and 195 deletions

View File

@ -12,134 +12,132 @@
// | author: likeadminTeam // | author: likeadminTeam
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
namespace app\adminapi\logic\project; namespace app\adminapi\logic\project;
use app\common\model\auth\Admin; use app\common\logic\BaseLogic;
use app\common\model\contract\Contract; use app\common\model\auth\Admin;
use app\common\model\custom\Custom; use app\common\model\contract\Contract;
use app\common\model\project\Project; use app\common\model\custom\Custom;
use app\common\model\project\ProjectManagerAppointment; use app\common\model\project\Project;
use app\common\logic\BaseLogic; use app\common\model\project\ProjectManagerAppointment;
use app\common\model\project\ProjectTypeSet; use app\common\model\project\ProjectTypeSet;
use think\facade\Db; use think\facade\Db;
/** /**
* 项目经理委任逻辑 * 项目经理委任逻辑
* Class ProjectManagerAppointmentLogic * Class ProjectManagerAppointmentLogic
* @package app\adminapi\logic\project * @package app\adminapi\logic\project
*/ */
class ProjectManagerAppointmentLogic extends BaseLogic class ProjectManagerAppointmentLogic extends BaseLogic
{ {
/** /**
* @notes 添加项目经理委任 * @notes 添加项目经理委任
* @param array $params * @param array $params
* @return bool * @return bool
* @author likeadmin * @author likeadmin
* @date 2023/12/15 15:22 * @date 2023/12/15 15:22
*/ */
public static function add(array $params): bool public static function add(array $params): bool
{ {
Db::startTrans(); Db::startTrans();
try { try {
ProjectManagerAppointment::create([ ProjectManagerAppointment::create([
'org_id' => $params['org_id'], 'project_id' => $params['project_id'],
'dept_id' => $params['dept_id'], 'contract_id' => $params['contract_id'],
'project_id' => $params['project_id'], 'project_type_id' => $params['project_type_id'],
'contract_id' => $params['contract_id'], 'project_manager' => $params['project_manager'],
'project_type_id' => $params['project_type_id'], 'amount' => $params['amount'],
'project_manager' => $params['project_manager'], 'project_approval_date' => strtotime($params['project_approval_date']),
'amount' => $params['amount'], 'start_date' => strtotime($params['start_date']),
'project_approval_date' => strtotime($params['project_approval_date']), 'delivery_date' => strtotime($params['delivery_date']),
'start_date' => strtotime($params['start_date']), 'remark' => $params['remark'],
'delivery_date' => strtotime($params['delivery_date']), 'annex' => $params['annex'] ? json_encode($params['annex']) : null,
'remark' => $params['remark'], ]);
'annex' => $params['annex']? json_encode($params['annex']) : null, Project::where('id', $params['project_id'])->update([
]); 'status' => 4,
Project::where('id',$params['project_id'])->update([ 'update_time' => time(),
'status' => 4, ]);
'update_time' => time(), Db::commit();
]); return true;
Db::commit(); } catch (\Exception $e) {
return true; Db::rollback();
} catch (\Exception $e) { self::setError($e->getMessage());
Db::rollback(); return false;
self::setError($e->getMessage()); }
return false; }
}
}
/** /**
* @notes 编辑项目经理委任 * @notes 编辑项目经理委任
* @param array $params * @param array $params
* @return bool * @return bool
* @author likeadmin * @author likeadmin
* @date 2023/12/15 15:22 * @date 2023/12/15 15:22
*/ */
public static function edit(array $params): bool public static function edit(array $params): bool
{ {
Db::startTrans(); Db::startTrans();
try { try {
ProjectManagerAppointment::where('id', $params['id'])->update([ ProjectManagerAppointment::where('id', $params['id'])->update([
'project_id' => $params['project_id'], 'project_id' => $params['project_id'],
'contract_id' => $params['contract_id'], 'contract_id' => $params['contract_id'],
'project_type_id' => $params['project_type_id'], 'project_type_id' => $params['project_type_id'],
'project_manager' => $params['project_manager'], 'project_manager' => $params['project_manager'],
'amount' => $params['amount'], 'amount' => $params['amount'],
'project_approval_date' => strtotime($params['project_approval_date']), 'project_approval_date' => strtotime($params['project_approval_date']),
'start_date' => strtotime($params['start_date']), 'start_date' => strtotime($params['start_date']),
'delivery_date' => strtotime($params['delivery_date']), 'delivery_date' => strtotime($params['delivery_date']),
'remark' => $params['remark'], 'remark' => $params['remark'],
'annex' => $params['annex']? json_encode($params['annex']) : null, 'annex' => $params['annex'] ? json_encode($params['annex']) : null,
]); ]);
Db::commit(); Db::commit();
return true; return true;
} catch (\Exception $e) { } catch (\Exception $e) {
Db::rollback(); Db::rollback();
self::setError($e->getMessage()); self::setError($e->getMessage());
return false; return false;
} }
} }
/** /**
* @notes 删除项目经理委任 * @notes 删除项目经理委任
* @param array $params * @param array $params
* @return bool * @return bool
* @author likeadmin * @author likeadmin
* @date 2023/12/15 15:22 * @date 2023/12/15 15:22
*/ */
public static function delete(array $params): bool public static function delete(array $params): bool
{ {
return ProjectManagerAppointment::destroy($params['id']); return ProjectManagerAppointment::destroy($params['id']);
} }
/** /**
* @notes 获取项目经理委任详情 * @notes 获取项目经理委任详情
* @param $params * @param $params
* @return array * @return array
* @author likeadmin * @author likeadmin
* @date 2023/12/15 15:22 * @date 2023/12/15 15:22
*/ */
public static function detail($params): array public static function detail($params): array
{ {
$data = ProjectManagerAppointment::field('id,project_id,contract_id,project_type_id,project_manager,amount,project_approval_date,start_date,delivery_date,remark,annex')->findOrEmpty($params['id'])->toArray(); $data = ProjectManagerAppointment::field('id,project_id,contract_id,project_type_id,project_manager,amount,project_approval_date,start_date,delivery_date,remark,annex')->findOrEmpty($params['id'])->toArray();
$project = Project::field('name,project_code,custom_id')->where('id',$data['project_id'])->findOrEmpty(); $project = Project::field('name,project_code,custom_id')->where('id', $data['project_id'])->findOrEmpty();
$custom = Custom::field('name')->where('id',$project['custom_id'])->findOrEmpty(); $custom = Custom::field('name')->where('id', $project['custom_id'])->findOrEmpty();
$contract = Contract::field('contract_code')->where('id',$data['contract_id'])->findOrEmpty(); $contract = Contract::field('contract_code')->where('id', $data['contract_id'])->findOrEmpty();
$projectType = ProjectTypeSet::field('name')->where('id',$data['project_type_id'])->findOrEmpty(); $projectType = ProjectTypeSet::field('name')->where('id', $data['project_type_id'])->findOrEmpty();
$admin = Admin::field('name')->where('id',$data['project_manager'])->findOrEmpty(); $admin = Admin::field('name')->where('id', $data['project_manager'])->findOrEmpty();
$data['project_name'] = $project['name']; $data['project_name'] = $project['name'];
$data['project_code'] = $project['project_code']; $data['project_code'] = $project['project_code'];
$data['custom_name'] = $custom['name']; $data['custom_name'] = $custom['name'];
$data['contract_code'] = $contract['contract_code']; $data['contract_code'] = $contract['contract_code'];
$data['project_type_name'] = $projectType['name']; $data['project_type_name'] = $projectType['name'];
$data['project_manager_name'] = $admin['name']; $data['project_manager_name'] = $admin['name'];
return $data; return $data;
} }
} }

View File

@ -17,8 +17,6 @@
use app\common\model\auth\Admin; use app\common\model\auth\Admin;
use app\common\model\contract\Contract; use app\common\model\contract\Contract;
use app\common\model\dept\Dept;
use app\common\model\dept\Orgs;
use app\common\model\project\Project; use app\common\model\project\Project;
use app\common\model\project\ProjectManagerAppointment; use app\common\model\project\ProjectManagerAppointment;
use app\common\model\project\ProjectTypeSet; use app\common\model\project\ProjectTypeSet;
@ -39,8 +37,6 @@
*/ */
protected $rule = [ protected $rule = [
'id' => 'require|checkData', 'id' => 'require|checkData',
'org_id' => 'require|checkOrg',
'dept_id' => 'require|checkDept',
'project_id' => 'require|checkProject', 'project_id' => 'require|checkProject',
'contract_id' => 'require|checkContract', 'contract_id' => 'require|checkContract',
'project_type_id' => 'require|checkProjectType', 'project_type_id' => 'require|checkProjectType',
@ -53,8 +49,6 @@
protected $message = [ protected $message = [
'id.require' => '缺少必要参数', 'id.require' => '缺少必要参数',
'org_id.require' => '请选择组织',
'dept_id.require' => '请选择部门',
'project_id.require' => '请选择项目', 'project_id.require' => '请选择项目',
'contract_id.require' => '请选择合同', 'contract_id.require' => '请选择合同',
'project_type_id.require' => '请选择项目类型', 'project_type_id.require' => '请选择项目类型',
@ -79,8 +73,6 @@
'id' => 'id', 'id' => 'id',
'project_id' => '项目id', 'project_id' => '项目id',
'contract_id' => '合同id', 'contract_id' => '合同id',
'org_id' => '组织id',
'dept_id' => '部门id',
'project_type_id' => '项目类型', 'project_type_id' => '项目类型',
'project_manager' => '项目经理', 'project_manager' => '项目经理',
'amount' => '项目金额', 'amount' => '项目金额',
@ -147,27 +139,6 @@
return true; return true;
} }
public function checkOrg($value): bool|string
{
$data = Orgs::where('id', $value)->findOrEmpty();
if ($data->isEmpty()) {
return '组织不存在';
}
return true;
}
public function checkDept($value, $rule, $data): bool|string
{
$dept = Dept::where('id', $value)->findOrEmpty();
if ($dept->isEmpty()) {
return '部门不存在';
}
if ($data['org_id'] != $dept['org_id']) {
return '部门不属于当前选择的组织';
}
return true;
}
public function checkProject($value): bool|string public function checkProject($value): bool|string
{ {
$data = Project::where('id', $value)->findOrEmpty(); $data = Project::where('id', $value)->findOrEmpty();

View File

@ -12,41 +12,37 @@
// | author: likeadminTeam // | author: likeadminTeam
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
namespace app\common\model\project; namespace app\common\model\project;
use app\common\model\BaseModel; use app\common\model\BaseModel;
use think\model\concern\SoftDelete; use think\model\concern\SoftDelete;
/** /**
* 项目经理委任模型 * 项目经理委任模型
* Class ProjectManagerAppointment * Class ProjectManagerAppointment
* @package app\common\model\project * @package app\common\model\project
*/ */
class ProjectManagerAppointment extends BaseModel class ProjectManagerAppointment extends BaseModel
{
use SoftDelete;
protected $name = 'project_manager_appointment';
protected $deleteTime = 'delete_time';
public function getProjectApprovalDateAttr($value)
{ {
return !empty($value) ? date('Y-m-d',$value) : ''; use SoftDelete;
}
public function getStartDateAttr($value) protected $name = 'project_manager_appointment';
{ protected $deleteTime = 'delete_time';
return !empty($value) ? date('Y-m-d',$value) : '';
}
public function getDeliveryDateAttr($value) public function getProjectApprovalDateAttr($value)
{ {
return !empty($value) ? date('Y-m-d',$value) : ''; return !empty($value) ? date('Y-m-d', $value) : '';
} }
public function getAnnexAttr($value) public function getStartDateAttr($value)
{ {
return !empty($value) ? json_decode($value,true) : ''; return !empty($value) ? date('Y-m-d', $value) : '';
}
public function getDeliveryDateAttr($value)
{
return !empty($value) ? date('Y-m-d', $value) : '';
}
} }
}