物品归还

This commit is contained in:
2026-02-04 09:28:54 +08:00
parent 6496a40679
commit a16429ff3a
8 changed files with 192 additions and 17 deletions
@@ -0,0 +1,45 @@
<?php
namespace app\admin\controller;
use app\common\controller\BaseController;
use app\common\traits\crud\CrudControllerTrait;
use app\common\service\InvRequisitionReturnService;
use support\Request;
class InvRequisitionReturnController extends BaseController
{
use CrudControllerTrait;
protected $service;
public function __construct()
{
$this->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());
}
}
}
@@ -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;
@@ -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;
}
}
@@ -52,7 +52,15 @@ class InvRequisitionService
$config['order']['id'] = 'desc';
break;
case 'index':
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':
@@ -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());
}
}
/**
* 列表页数据格式化
*
@@ -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());
}
}
/**
* 列表页数据格式化
*
@@ -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;
}
}
+18 -5
View File
@@ -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']);
});
});
});