From a16429ff3ab9057240591912012f0f46280c8025 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Wed, 4 Feb 2026 09:28:54 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E5=93=81=E5=BD=92=E8=BF=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InvRequisitionReturnController.php | 45 +++++++++++++++ .../InvRequisitionItemReturnService.php | 16 +++++- .../service/InvRequisitionReturnService.php | 57 +++++++++++++++++++ app/common/service/InvRequisitionService.php | 10 +++- .../controller/InvRequisitionController.php | 19 +++++++ .../InvRequisitionItemReturnController.php | 19 +++++++ .../InvRequisitionReturnController.php | 20 ++++--- config/route.php | 23 ++++++-- 8 files changed, 192 insertions(+), 17 deletions(-) create mode 100644 app/admin/controller/InvRequisitionReturnController.php diff --git a/app/admin/controller/InvRequisitionReturnController.php b/app/admin/controller/InvRequisitionReturnController.php new file mode 100644 index 0000000..9f4faef --- /dev/null +++ b/app/admin/controller/InvRequisitionReturnController.php @@ -0,0 +1,45 @@ +service = new InvRequisitionReturnService(); + } + +// /** +// * 列表页数据格式化 +// * +// * @param array $data +// * @return array +// */ +// protected function indexFormat($data) +// { +// if (isset($data['created_at'])) +// $data['created_at'] = date('Y-m-d H:i:s', $data['created_at']); +// if (isset($data['updated_at'])) +// $data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']); +// return $data; +// } + + public function returnConfirm(Request $request){ + try { + // 处理申请逻辑 + $result = $this->service->serviceReturnConfirm($request); + + return $this->success($result, '申请提交成功'); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } +} \ No newline at end of file diff --git a/app/common/service/InvRequisitionItemReturnService.php b/app/common/service/InvRequisitionItemReturnService.php index d9fb66a..7200a8a 100644 --- a/app/common/service/InvRequisitionItemReturnService.php +++ b/app/common/service/InvRequisitionItemReturnService.php @@ -178,6 +178,9 @@ class InvRequisitionItemReturnService $created = $this->logicCreate($item); } $this->processRequisitionItemReturnAttachment($res, $attachment); + InvRequisition::where('id',$request->post('requisition_id'))->update( + ['status' => 14] //审批状态:10默认、11审批中、12已审批(待归还)、13拒绝、14申请归还、15归还审核中、16部分归还、17已全部归还、18已拒绝 + ); $this->postProcess('Store', $created); return $res; }); @@ -406,6 +409,7 @@ class InvRequisitionItemReturnService // 全部非耗材都已归还 $affected = InvRequisition::where('id', $requisitionId)->update([ 'is_returned' => 1, + 'status' => 17, 'updated_at' => time(), ]); @@ -413,6 +417,12 @@ class InvRequisitionItemReturnService if ($affected === 0) { throw new BusinessException('更新领用单状态失败,可能记录不存在'); } + }else{ + // 非耗材未全部都已归还 + $affected = InvRequisition::where('id', $requisitionId)->update([ + 'status' => 16, + 'updated_at' => time(), + ]); } // 7. 返回处理结果(保持你原来的 postProcess 习惯) @@ -444,13 +454,13 @@ class InvRequisitionItemReturnService $config['where']['id'] = $p['requisition_item_return_id']; break; case 'index': - $config['where']['status'] = 1; - $config['order']['sort'] = 'desc'; + if(isset($p['status'])){ + $config['where']['status'] = $p['status']; + } $config['order']['id'] = 'desc'; break; case 'show': $config['where']['id'] = $p['id']; - $config['where']['status'] = 1; break; case 'store': break; diff --git a/app/common/service/InvRequisitionReturnService.php b/app/common/service/InvRequisitionReturnService.php index e2f1d13..eef5322 100644 --- a/app/common/service/InvRequisitionReturnService.php +++ b/app/common/service/InvRequisitionReturnService.php @@ -5,6 +5,8 @@ namespace app\common\service; use app\common\validate\InvRequisitionReturnValidate; use app\common\traits\crud\CrudServiceTrait; use app\common\model\InvRequisitionReturn; +use support\exception\BusinessException; +use support\Request; class InvRequisitionReturnService { @@ -28,4 +30,59 @@ class InvRequisitionReturnService { return new $this->validator; } + + public function serviceReturnConfirm(Request$request) + { + $status = $request->post('status'); + if(in_array($status,[1,2])){ + throw new BusinessException("状态不正确"); + } + $requisitionReturn = InvRequisitionReturn::where(['id' => $request['id']])->first(); + if (!$requisitionReturn && $requisitionReturn->handler_id == $request->user->uid) { + $requisitionReturn->status = $status; + return $requisitionReturn->save(); + }else{ + throw new BusinessException("审核示例不正确或非物品管理员"); + } + } + + + /** + * 构建查询配置 + * + * @param Request $request + * @param string $scene + * @return array + */ + protected function buildQueryConfig(Request $request, string $scene = 'default'): array + { + $p = $request->all(); + + $config = []; + $config['model'] = $this->modelClass; + switch ($scene) { + case 'returnConfirm': + $config['where']['id'] = $p['requisition_item_return_id']; + break; + case 'index': + if(isset($p['status'])){ + $config['where']['status'] = $p['status']; + } + $config['order']['id'] = 'desc'; + break; + case 'show': + $config['where']['id'] = $p['id']; + break; + case 'store': + break; + case 'update': + $config['where']['id'] = $p['id']; + break; + case 'destroy': + $config['where']['id'] = $p['id']; + break; + } + + return $config; + } } \ No newline at end of file diff --git a/app/common/service/InvRequisitionService.php b/app/common/service/InvRequisitionService.php index 1c23acb..5e49baf 100644 --- a/app/common/service/InvRequisitionService.php +++ b/app/common/service/InvRequisitionService.php @@ -52,7 +52,15 @@ class InvRequisitionService $config['order']['id'] = 'desc'; break; case 'index': - $config['where']['applicant_id'] = $request->user->uid; + if(isset($p['status']) && $p['status']){ + $config['where']['status'] = $p['status']; + } + if(isset($p['applicant_id']) && $p['applicant_id'] == 'self'){ + $config['where']['applicant_id'] = $request->user->uid; + + }elseif(isset($p['applicant_id']) && $p['applicant_id']){ + $config['where']['applicant_id'] = $p['applicant_id']; + } $config['order']['id'] = 'desc'; break; case 'show': diff --git a/app/mobile/controller/InvRequisitionController.php b/app/mobile/controller/InvRequisitionController.php index 0508ace..033c7e5 100644 --- a/app/mobile/controller/InvRequisitionController.php +++ b/app/mobile/controller/InvRequisitionController.php @@ -43,6 +43,25 @@ class InvRequisitionController extends BaseController } } + /** + * 获取列表 + * + * @param Request $request 请求对象 + * @return mixed 返回分页数据及总数 + */ + public function index(Request $request) + { + try { + $raw = $this->service->serviceList($request); + $data = $this->transformData($raw, method_exists($this, 'indexFormat') + ? [$this, 'indexFormat'] + : null); + return $this->success($data); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } + /** * 列表页数据格式化 * diff --git a/app/mobile/controller/InvRequisitionItemReturnController.php b/app/mobile/controller/InvRequisitionItemReturnController.php index 77ffae5..a5d8dd1 100644 --- a/app/mobile/controller/InvRequisitionItemReturnController.php +++ b/app/mobile/controller/InvRequisitionItemReturnController.php @@ -17,6 +17,25 @@ class InvRequisitionItemReturnController extends BaseController $this->service = new InvRequisitionItemReturnService(); } + /** + * 获取列表 + * + * @param Request $request 请求对象 + * @return mixed 返回分页数据及总数 + */ + public function index(Request $request) + { + try { + $raw = $this->service->serviceList($request); + $data = $this->transformData($raw, method_exists($this, 'indexFormat') + ? [$this, 'indexFormat'] + : null); + return $this->success($data); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } + /** * 列表页数据格式化 * diff --git a/app/mobile/controller/InvRequisitionReturnController.php b/app/mobile/controller/InvRequisitionReturnController.php index 1885fb3..bee45ad 100644 --- a/app/mobile/controller/InvRequisitionReturnController.php +++ b/app/mobile/controller/InvRequisitionReturnController.php @@ -2,6 +2,7 @@ namespace app\mobile\controller; use app\common\controller\BaseController; +use app\common\model\InvRequisitionItem; use app\common\traits\crud\CrudControllerTrait; use app\common\service\InvRequisitionReturnService; @@ -22,12 +23,15 @@ class InvRequisitionReturnController extends BaseController * @param array $data * @return array */ - // protected function indexFormat($data) - // { - // if (isset($data['created_at'])) - // $data['created_at'] = date('Y-m-d H:i:s', $data['created_at']); - // if (isset($data['updated_at'])) - // $data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']); - // return $data; - // } + protected function indexFormat($data) + { + if (isset($data['id'])) { + $data['item'] = InvRequisitionItem::where('requisition_id', $data['id'])->get(); + } + if (isset($data['created_at'])) + $data['created_at'] = date('Y-m-d H:i:s', $data['created_at']); + if (isset($data['updated_at'])) + $data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']); + return $data; + } } \ No newline at end of file diff --git a/config/route.php b/config/route.php index 58a4ec6..e892c3e 100644 --- a/config/route.php +++ b/config/route.php @@ -520,6 +520,9 @@ Route::group('/admin', function () { Route::any('/show', [app\admin\controller\InvRequisitionController::class, 'show']); Route::any('/approve', [app\admin\controller\InvRequisitionController::class, 'approve']); }); + // 物品归还 + Route::any('/requisition/return', [app\admin\controller\InvRequisitionReturnController::class, 'store']); +// Route::any('/requisition/return', [app\admin\controller\InvRequisitionReturnController::class, 'returnConfirm']); }); }); @@ -652,14 +655,24 @@ Route::group('/mobile', function () { Route::any('/item/preset', [app\mobile\controller\InvItemController::class, 'preset']); // 物品领用申请 - Route::any('/requisition/list', [app\mobile\controller\InvRequisitionController::class, 'index']); - Route::any('/requisition/show', [app\mobile\controller\InvRequisitionController::class, 'show']); +// Route::any('/requisition/list', [app\mobile\controller\InvRequisitionController::class, 'index']); +// Route::any('/requisition/show', [app\mobile\controller\InvRequisitionController::class, 'show']); Route::any('/requisition/apply', [app\mobile\controller\InvRequisitionController::class, 'apply']); Route::any('/requisition/update', [app\mobile\controller\InvRequisitionController::class, 'update']); + + + Route::group('/requisition', function () { + Route::any('/list', [app\mobile\controller\InvRequisitionController::class, 'index']); + Route::any('/show', [app\mobile\controller\InvRequisitionController::class, 'show']); +// Route::any('/approve', [app\mobile\controller\InvRequisitionController::class, 'approve']); + }); // 物品归还 - Route::any('/requisition/item/return', [app\mobile\controller\InvRequisitionItemReturnController::class, 'store']); - Route::any('/requisition/item/return/update', [app\mobile\controller\InvRequisitionItemReturnController::class, 'update']); - Route::any('/requisition/item/return/confirm', [app\mobile\controller\InvRequisitionItemReturnController::class, 'returnConfirm']); + Route::group('/requisition/return', function () { + Route::any('/store', [app\mobile\controller\InvRequisitionItemReturnController::class, 'store']); + Route::any('/update', [app\mobile\controller\InvRequisitionItemReturnController::class, 'update']); + Route::any('/list', [app\mobile\controller\InvRequisitionItemReturnController::class, 'index']); + Route::any('/confirm', [app\mobile\controller\InvRequisitionItemReturnController::class, 'returnConfirm']); + }); }); }); \ No newline at end of file