| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- namespace App\Services;
- use App\InventoryAccount;
- use App\InventoryAccountMission;
- use App\Sign;
- use App\Traits\ServiceAppAop;
- use Carbon\Carbon;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Cache;
- class AndroidInventoryService
- {
- use ServiceAppAop;
- //未盘任务列表
- public function getUnInventoryTaskList($taskId)
- {
- $stock_status = InventoryAccount::query()->where('id', $taskId)->value('status');
- $query = InventoryAccountMission::query()
- ->select('location')->selectRaw("count(*) count")
- ->where('inventory_account_id', $taskId)
- ->groupBy("location");
- if ($stock_status=='待盘点'||$stock_status=='盘点中'){ //初盘
- return $query->where('checked', '否')->get();
- }elseif ($stock_status=='复盘中'){ //复盘
- return $query->where('checked', '是')->whereNotNull('difference_amount')->get();
- }else{
- return collect();
- }
- }
- //根据员工姓名获取当日盘点行数
- public function getStaffSameDayInvCount(): int
- {
- return Sign::query()
- ->where('signable_type', 'inventory_account_missions')
- ->where('field', '盘点人')
- ->where('created_at', 'like', Carbon::now()->toDateString() . '%')
- ->where('mark', Auth::user()['name'])->count();
- }
- public function getLocInvPro($taskId, $location)
- {
- $ins = InventoryAccountMission::query()
- ->where('inventory_account_id', $taskId)
- ->where('location', $location)->get();
- //库位盘点任务总条数
- $total = $ins->count();
- //已盘数
- $invCount = $ins->where('checked', '<>', '否')->count();
- if ($total == 0 && $invCount == 0) {
- return 0;//库位不存在
- } else {
- return ['total' => $total, 'invCount' => $invCount];
- }
- }
- //根据盘点任务号,库位,条码 查询指定盘点任务
- public function getInventoryDetail($taskId, $location, $barcode)
- {
- $stock_status = InventoryAccount::query()->where('id', $taskId)->value('status');
- $query = InventoryAccountMission::with(['commodity.barcodes', 'stockInventoryPersons'])
- ->whereHas('commodity', function ($query) use ($barcode) {
- $query->whereHas('barcodes', function ($sql) use ($barcode) {
- $sql->where('code', '=', $barcode);
- });
- })->where('location', $location)
- ->where('inventory_account_id', $taskId);
- if ($stock_status == '待盘点' || $stock_status == '盘点中') { //初盘
- return $query->where('checked', '否')->first();
- } elseif ($stock_status == '复盘中') { //复盘
- return $query->where('checked', '是')->whereNotNull('difference_amount')->first();
- } else {
- return null;
- }
- }
- public function skipInventory($inventoryDetailId)
- {
- $inventoryAccountMission = InventoryAccountMission::query()->find($inventoryDetailId);
- if (!$inventoryAccountMission) return null;
- $inventoryAccountMission->checked = '跳过';
- $inventoryAccountMission->update();
- if ($inventoryAccountMission->checked == '跳过') {
- /** @var InventoryAccountService $inventoryService */
- $inventoryService = app('inventoryAccountService');
- $inventoryService->updateInventory($inventoryAccountMission->inventory_account_id);
- }
- return $inventoryAccountMission;
- }
- }
|