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

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

View File

@ -17,8 +17,6 @@
use app\common\model\auth\Admin;
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\ProjectManagerAppointment;
use app\common\model\project\ProjectTypeSet;
@ -39,8 +37,6 @@
*/
protected $rule = [
'id' => 'require|checkData',
'org_id' => 'require|checkOrg',
'dept_id' => 'require|checkDept',
'project_id' => 'require|checkProject',
'contract_id' => 'require|checkContract',
'project_type_id' => 'require|checkProjectType',
@ -53,8 +49,6 @@
protected $message = [
'id.require' => '缺少必要参数',
'org_id.require' => '请选择组织',
'dept_id.require' => '请选择部门',
'project_id.require' => '请选择项目',
'contract_id.require' => '请选择合同',
'project_type_id.require' => '请选择项目类型',
@ -79,8 +73,6 @@
'id' => 'id',
'project_id' => '项目id',
'contract_id' => '合同id',
'org_id' => '组织id',
'dept_id' => '部门id',
'project_type_id' => '项目类型',
'project_manager' => '项目经理',
'amount' => '项目金额',
@ -147,27 +139,6 @@
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
{
$data = Project::where('id', $value)->findOrEmpty();

View File

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