From 60bc5095237cb08de2626f29b2871d1c21ad4d3f Mon Sep 17 00:00:00 2001 From: chenbo <709206448@qq.com> Date: Mon, 26 Feb 2024 17:21:45 +0800 Subject: [PATCH] update --- .../lists/task/TaskAllocationLists.php | 152 +++++++++--------- app/adminapi/lists/task/TaskTypeLists.php | 11 +- app/adminapi/logic/TaskDetailLogic.php | 12 +- .../logic/cost_project/CostProjectLogic.php | 4 +- .../logic/task/TaskAllocationLogic.php | 49 ++++-- 5 files changed, 125 insertions(+), 103 deletions(-) diff --git a/app/adminapi/lists/task/TaskAllocationLists.php b/app/adminapi/lists/task/TaskAllocationLists.php index e17f92389..e5483d0b7 100644 --- a/app/adminapi/lists/task/TaskAllocationLists.php +++ b/app/adminapi/lists/task/TaskAllocationLists.php @@ -1,77 +1,77 @@ - ['project'], - ]; - } - - - /** - * @notes 获取列表 - * @return array - * @throws \think\db\exception\DataNotFoundException - * @throws \think\db\exception\DbException - * @throws \think\db\exception\ModelNotFoundException - * @author likeadmin - * @date 2024/02/22 10:47 - */ - public function lists(): array - { - return TaskAllocation::where($this->searchWhere) - ->field(['id', 'dataid', 'num', 'project', 'project_num', 'head', 'apptime', 'annex']) - ->limit($this->limitOffset, $this->limitLength) - ->order(['id' => 'desc']) - ->select() - ->toArray(); - } - - - /** - * @notes 获取数量 - * @return int - * @author likeadmin - * @date 2024/02/22 10:47 - */ - public function count(): int - { - return TaskAllocation::where($this->searchWhere)->count(); - } - + ['project'], + + ]; + } + + + /** + * @notes 获取列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2024/02/22 10:47 + */ + public function lists(): array + { + return TaskAllocation::where($this->searchWhere) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select() + ->toArray(); + } + + + /** + * @notes 获取数量 + * @return int + * @author likeadmin + * @date 2024/02/22 10:47 + */ + public function count(): int + { + return TaskAllocation::where($this->searchWhere)->count(); + } + } \ No newline at end of file diff --git a/app/adminapi/lists/task/TaskTypeLists.php b/app/adminapi/lists/task/TaskTypeLists.php index 41fed2514..68a967603 100644 --- a/app/adminapi/lists/task/TaskTypeLists.php +++ b/app/adminapi/lists/task/TaskTypeLists.php @@ -38,7 +38,8 @@ class TaskTypeLists extends BaseAdminDataLists implements ListsSearchInterface public function setSearch(): array { return [ - + '=' => ['cost_project_id'], + '%like%' => ['superior_sort', 'name'], ]; } @@ -54,8 +55,14 @@ class TaskTypeLists extends BaseAdminDataLists implements ListsSearchInterface */ public function lists(): array { + $startTime = $this->request->param('start_time', ''); + $endTime = $this->request->param('end_time', ''); return TaskType::where($this->searchWhere) - ->field(['id', 'dataid', 'cost_project_id', 'num', 'name', 'superior_sort', 'level', 'remarks']) + ->where(function ($query) use($startTime, $endTime) { + if ($startTime && $endTime) { + $query->whereBetweenTime('create_time', $startTime.' 00:00:00', $endTime.' 23:59:59'); + }}) + ->field(['id', 'dataid', 'cost_project_id', 'num', 'name', 'superior_sort', 'level', 'remarks','create_time']) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select() diff --git a/app/adminapi/logic/TaskDetailLogic.php b/app/adminapi/logic/TaskDetailLogic.php index df25beeb6..bbdc0298c 100644 --- a/app/adminapi/logic/TaskDetailLogic.php +++ b/app/adminapi/logic/TaskDetailLogic.php @@ -41,11 +41,9 @@ class TaskDetailLogic extends BaseLogic Db::startTrans(); try { TaskDetail::create([ - 'task_allocation_dataid' => $params['task_allocation_dataid'], - 'task_name' => $params['task_name'], - 'task_name_id' => $params['task_name_id'], - 'process' => $params['process'], + 'task_allocation_id' => $params['task_allocation_dataid'], 'task_type_id' => $params['task_type_id'], + 'process' => $params['process'], 'professional_type' => $params['professional_type'], 'engineer' => $params['engineer'], 'engineer_id' => $params['engineer_id'], @@ -91,11 +89,9 @@ class TaskDetailLogic extends BaseLogic Db::startTrans(); try { TaskDetail::where('id', $params['id'])->update([ - 'task_allocation_dataid' => $params['task_allocation_dataid'], - 'task_name' => $params['task_name'], - 'task_name_id' => $params['task_name_id'], - 'process' => $params['process'], + 'task_allocation_id' => $params['task_allocation_dataid'], 'task_type_id' => $params['task_type_id'], + 'process' => $params['process'], 'professional_type' => $params['professional_type'], 'engineer' => $params['engineer'], 'engineer_id' => $params['engineer_id'], diff --git a/app/adminapi/logic/cost_project/CostProjectLogic.php b/app/adminapi/logic/cost_project/CostProjectLogic.php index cb9b01982..08fc4feb2 100644 --- a/app/adminapi/logic/cost_project/CostProjectLogic.php +++ b/app/adminapi/logic/cost_project/CostProjectLogic.php @@ -41,7 +41,7 @@ class CostProjectLogic extends BaseLogic Db::startTrans(); try { CostProject::create([ - 'project_num' => $params['project_num'], + 'project_num' => generate_sn(CostProject::class, 'project_num'), 'project_name' => $params['project_name'], 'contract_id' => $params['contract_id'], 'types' => $params['types'], @@ -176,7 +176,7 @@ class CostProjectLogic extends BaseLogic public static function createProject($data) { return CostProject::create([ - 'project_num' => generate_sn('cost_project'), + 'project_num' => generate_sn(CostProject::class, 'project_num'), 'project_name' => $data['project_name'], 'contract_id' => $data['contract_id'], 'types' => $data['types'], diff --git a/app/adminapi/logic/task/TaskAllocationLogic.php b/app/adminapi/logic/task/TaskAllocationLogic.php index cacdc41d5..e234f317c 100644 --- a/app/adminapi/logic/task/TaskAllocationLogic.php +++ b/app/adminapi/logic/task/TaskAllocationLogic.php @@ -15,8 +15,10 @@ namespace app\adminapi\logic\task; +use app\adminapi\logic\TaskDetailLogic; use app\common\model\task\TaskAllocation; use app\common\logic\BaseLogic; +use app\common\model\task\TaskType; use think\facade\Db; @@ -38,18 +40,31 @@ class TaskAllocationLogic extends BaseLogic */ public static function add(array $params): bool { + // 项目id关联任务类别 + $projectId = $params['project_id']; + // 任务 + $taskType = TaskType::where('cost_project_id', $projectId)->findOrEmpty(); + if ($taskType->isEmpty()) { + self::setError('项目未配置任务类别'); + } Db::startTrans(); try { - TaskAllocation::create([ - 'dataid' => $params['dataid'], - 'num' => $params['num'], - 'project' => $params['project'], - 'project_num' => $params['project_num'], - 'head' => $params['head'], + // 任务分配 + $taskAllocation = TaskAllocation::create([ + 'dataid' => generate_sn(self::class, 'dataid'), + 'num' => generate_sn(self::class, 'num'), + 'task_type_id' => $taskType['id'], // 任务类别id + 'cost_project_id' => $taskType['cost_project_id'], // 项目id 'apptime' => $params['apptime'], 'annex' => $params['annex'], ]); - + // 任务明细 + $taskDetail = $params['task_detail']; + foreach ($taskDetail as $item) { + $item['task_allocation_id'] = $taskAllocation->id; + $item['task_type_id'] = $taskType['id']; + TaskDetailLogic::add($item); + } Db::commit(); return true; } catch (\Exception $e) { @@ -69,18 +84,22 @@ class TaskAllocationLogic extends BaseLogic */ public static function edit(array $params): bool { + // 项目id关联任务类别 + $projectId = $params['project_id']; + // 任务 + $taskType = TaskType::where('cost_project_id', $projectId)->findOrEmpty(); + if ($taskType->isEmpty()) { + self::setError('项目未配置任务类别'); + } Db::startTrans(); try { TaskAllocation::where('id', $params['id'])->update([ - 'dataid' => $params['dataid'], - 'num' => $params['num'], - 'project' => $params['project'], - 'project_num' => $params['project_num'], - 'head' => $params['head'], - 'apptime' => $params['apptime'], - 'annex' => $params['annex'], + 'num' => generate_sn(self::class, 'num'), + 'task_type_id' => $taskType['id'], // 任务类别id + 'cost_project_id' => $taskType['cost_project_id'], // 项目id + 'apptime' => $params['apptime'], + 'annex' => $params['annex'], ]); - Db::commit(); return true; } catch (\Exception $e) {