Переглянути джерело

库存管理--同步货主,盘点中的质量状态

haozi 5 роки тому
батько
коміт
139863cfe0

+ 9 - 3
app/Http/Controllers/InventoryAccountController.php

@@ -7,6 +7,7 @@ use App\InventoryAccount;
 use App\InventoryAccountMission;
 use App\InventoryAccountMission;
 use App\Owner;
 use App\Owner;
 use App\Services\InventoryAccountService;
 use App\Services\InventoryAccountService;
+use App\Services\OwnerService;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Gate;
@@ -41,11 +42,10 @@ class InventoryAccountController extends Controller
         return ['success'=>true,'data'=>$inventoryAccount];
         return ['success'=>true,'data'=>$inventoryAccount];
     }
     }
 
 
-
-
     //盘点-任务页面
     //盘点-任务页面
-    public function mission(Request $request){
+    public function mission(Request $request,OwnerService $ownerService){
         if(!Gate::allows("库存管理-盘点")){ return redirect(url('/'));  }
         if(!Gate::allows("库存管理-盘点")){ return redirect(url('/'));  }
+        $ownerService->syncOwnersData();
         $paginateParams = $request->input();
         $paginateParams = $request->input();
         $queryParam=$request->all();
         $queryParam=$request->all();
         $inventoryAccounts=app('inventoryAccountService')->paginate($queryParam);
         $inventoryAccounts=app('inventoryAccountService')->paginate($queryParam);
@@ -144,4 +144,10 @@ class InventoryAccountController extends Controller
         if ($inventoryAccount>0) return ['success'=>true,'data'=>'复盘中'];
         if ($inventoryAccount>0) return ['success'=>true,'data'=>'复盘中'];
         return ['success'=>false,'data'=>'参数错误!'];
         return ['success'=>false,'data'=>'参数错误!'];
     }
     }
+    public function syncOwners(OwnerService $ownerService){
+        if (!Gate::allows('库存管理-盘点')){return redirect(url('/')); }
+        $owners=$ownerService->syncOwnersData();
+        if (!$owners)return ['success'=>false,'data'=>'同步货主失败!'];
+        return ['success'=>true,'data'=>$owners];
+    }
 }
 }

+ 4 - 4
app/LaborReport.php

@@ -32,16 +32,16 @@ class LaborReport extends Model
         return md5('tokenOfListAll'.Carbon::now()->format('Y-m-d'));
         return md5('tokenOfListAll'.Carbon::now()->format('Y-m-d'));
     }
     }
     public function userWorkgroup(){
     public function userWorkgroup(){
-        return $this->belongsTo('App\UserWorkgroup','user_workgroup_id','id');
+        return $this->hasOne('App\UserWorkgroup','id','user_workgroup_id');
     }
     }
     public function user(){
     public function user(){
-        return $this->belongsTo('App\User','group_user_id','id');
+        return $this->hasOne('App\User','id','group_user_id');
     }
     }
     public function userDutyCheck(){
     public function userDutyCheck(){
-        return $this->belongsTo('App\UserDutyCheck','user_duty_check_id','id');
+        return $this->hasOne('App\UserDutyCheck','id','user_duty_check_id');
     }
     }
     public function laborReportStatus(){
     public function laborReportStatus(){
-        return $this->belongsTo('App\LaborReportStatus','id','labor_report_id');
+        return $this->hasMany('App\LaborReportStatus','labor_report_id','id');
     }
     }
     public function getRemarkAttribute(){
     public function getRemarkAttribute(){
         return $this->hasOne('App\Sign','signable_id','id')
         return $this->hasOne('App\Sign','signable_id','id')

+ 3 - 2
app/Owner.php

@@ -8,13 +8,14 @@ use Illuminate\Support\Facades\Auth;
 
 
 /**
 /**
  * @method static orderBy(string $string, string $string1)
  * @method static orderBy(string $string, string $string1)
- */use App\Traits\ModelTimeFormat;
+ */
+use App\Traits\ModelTimeFormat;
 
 
 class Owner extends Model
 class Owner extends Model
 {
 {
     use ModelTimeFormat;
     use ModelTimeFormat;
     use SoftDeletes;
     use SoftDeletes;
-    public $fillable = ['name','code','checking_count'];
+    public $fillable = ['name','code','checking_count','deleted_at'];
     public static function filterAuthorities(){
     public static function filterAuthorities(){
         $user=Auth::user();
         $user=Auth::user();
         if(!$user){
         if(!$user){

+ 0 - 2
app/Services/InventoryCompareService.php

@@ -36,8 +36,6 @@ class InventoryCompareService
         return DB::connection('oracle')->select($sql);
         return DB::connection('oracle')->select($sql);
     }
     }
 
 
-
-
     public function createInventoryCompare_underImport($SKU, $customLocation, $amount, $ownerId){
     public function createInventoryCompare_underImport($SKU, $customLocation, $amount, $ownerId){
         $owner=Owner::find($ownerId);
         $owner=Owner::find($ownerId);
         $ownerName=$owner['name'];
         $ownerName=$owner['name'];

+ 26 - 1
app/Services/OwnerService.php

@@ -2,7 +2,9 @@
 
 
 namespace App\Services;
 namespace App\Services;
 
 
+use App\OracleBasCustomer;
 use App\Owner;
 use App\Owner;
+use Carbon\Carbon;
 
 
 Class OwnerService
 Class OwnerService
 {
 {
@@ -13,5 +15,28 @@ Class OwnerService
     public function getSelection($column = ['id','name']){
     public function getSelection($column = ['id','name']){
         return Owner::filterAuthorities()->select($column)->get();
         return Owner::filterAuthorities()->select($column)->get();
     }
     }
-
+    /**
+     *同步WMS全部货主至WAS
+     */
+    public  function syncOwnersData(){
+        $basCustomers=OracleBasCustomer::query()
+            ->select('CUSTOMERID','DESCR_C')
+            ->where('DESCR_C','not like','%换ERP%')
+            ->where('DESCR_C','not like','%退仓%')
+            ->where('CUSTOMER_TYPE','OW')
+            ->get();
+        $ownerCount=Owner::count();
+        if(count($basCustomers)==$ownerCount)return null;
+        foreach ($basCustomers as $basCustomer){
+           $owner=Owner::withTrashed()->where('code',$basCustomer['customerid'])->first();
+           if (!isset($owner))
+               Owner::query()->create([
+              'code'=> $basCustomer['customerid'],
+               'name'=>$basCustomer['descr_c'],
+               'created_at'=>Carbon::now()->format('Y-m-d H:i:s'),
+           ]);
+        }
+        $owners=Owner::query()->select('id','name')->get();
+        return $owners;
+    }
 }
 }

+ 21 - 3
resources/views/inventory/stockInventory/inventoryMission.blade.php

@@ -49,8 +49,10 @@
         <span v-if="!listMode" class="btn  col-md-2 font-weight-bold"  style="cursor: default;max-width: 160px" :class="inventory.status=='盘点中' ||inventory.status=='待盘点'?'bg-info':'btn-outline-info disabled'">
         <span v-if="!listMode" class="btn  col-md-2 font-weight-bold"  style="cursor: default;max-width: 160px" :class="inventory.status=='盘点中' ||inventory.status=='待盘点'?'bg-info':'btn-outline-info disabled'">
             @{{ inventory.type }}
             @{{ inventory.type }}
         </span>
         </span>
-            <span v-if="!listMode && inventory.status=='盘点中' ||inventory.status=='待盘点'" class="btn  col-md-2 font-weight-bold btn-outline-secondary" style="max-width: 160px" @click="stockInventoryEnd(inventory.id)">结束</span>
-            <span v-if="!listMode && inventory.status=='复盘中'" class="btn  col-md-2 font-weight-bold" style="cursor: default;max-width: 160px" :class="inventory.status=='盘点中' ||inventory.status=='待盘点'?'btn-outline-info disabled':'bg-info'">复盘</span>
+            <span v-if="!listMode">
+            <span v-if="inventory.status=='盘点中' ||inventory.status=='待盘点'" class="btn  col-md-2 font-weight-bold btn-outline-secondary" style="max-width: 160px" @click="stockInventoryEnd(inventory.id)">结束</span>
+            <span v-if="inventory.status=='复盘中'" class="btn  col-md-2 font-weight-bold" style="cursor: default;max-width: 160px" :class="inventory.status=='盘点中' ||inventory.status=='待盘点'?'btn-outline-info disabled':'bg-info'">复盘</span>
+        </span>
         </div>
         </div>
 
 
 
 
@@ -119,7 +121,14 @@
                 <td >@{{ inventoryMission.stored_at }}</td>
                 <td >@{{ inventoryMission.stored_at }}</td>
                 <td class="text-muted">@{{ inventoryMission.batch_number }}</td>
                 <td class="text-muted">@{{ inventoryMission.batch_number }}</td>
                 <td >@{{ inventoryMission.erp_type_position }}</td>
                 <td >@{{ inventoryMission.erp_type_position }}</td>
-                <td >@{{ inventoryMission.quality }}</td>
+                <td >
+                    <span v-if="listMode">@{{ inventoryMission.quality }}</span>
+                    <select name="quality" id="quality" v-else>
+                        <option :value="inventoryMission.quality">@{{ inventoryMission.quality }}</option>
+                        <option value="ZP">ZP</option>
+                        <option value="CC">CC</option>
+                    </select>
+                </td>
                 <td >@{{ inventoryMission.stored_amount }}</td>
                 <td >@{{ inventoryMission.stored_amount }}</td>
                 <td >@{{ inventoryMission.valid_amount }}</td>
                 <td >@{{ inventoryMission.valid_amount }}</td>
                 <td>@{{ inventoryMission.verified_amount }}</td>
                 <td>@{{ inventoryMission.verified_amount }}</td>
@@ -137,6 +146,15 @@
                         <div style="transform:scale(0.9)" class="pl-0">
                         <div style="transform:scale(0.9)" class="pl-0">
                             <span class="mr-3 text-nowrap"><span class="font-weight-bold">库位:</span><span style="color:#af7651">@{{ inventoryMission.location }}</span></span>
                             <span class="mr-3 text-nowrap"><span class="font-weight-bold">库位:</span><span style="color:#af7651">@{{ inventoryMission.location }}</span></span>
                             <span class="mr-3 text-nowrap"><span class="font-weight-bold">产品名称:</span><span style="color:#af7651" v-if="inventoryMission.commodity">@{{ inventoryMission.commodity.name }}</span></span>
                             <span class="mr-3 text-nowrap"><span class="font-weight-bold">产品名称:</span><span style="color:#af7651" v-if="inventoryMission.commodity">@{{ inventoryMission.commodity.name }}</span></span>
+                            <span class="mr-3 text-nowrap">
+                                <span class="font-weight-bold">产品条码:</span>
+                                <span v-if="listMode">@{{ inventoryMission.quality }}</span>
+                    <select name="quality" id="quality" v-else>
+                        <option :value="inventoryMission.quality">@{{ inventoryMission.quality }}</option>
+                        <option value="ZP">ZP</option>
+                        <option value="CC">CC</option>
+                    </select>
+                            </span>
                             <span class="mr-3 text-nowrap"><span class="font-weight-bold">产品条码:</span><span style="color:#af7651" v-if="inventoryMission.commodity">@{{ inventoryMission.commodity.barcode }}</span></span>
                             <span class="mr-3 text-nowrap"><span class="font-weight-bold">产品条码:</span><span style="color:#af7651" v-if="inventoryMission.commodity">@{{ inventoryMission.commodity.barcode }}</span></span>
                             <div v-if="inventory.status=='复盘中'">
                             <div v-if="inventory.status=='复盘中'">
                                 <span class="mr-3 text-nowrap"><span style="color:#783000" class="font-weight-bold">盘点数量:</span><span style="color:#af7651">@{{ inventoryMission.verified_amount }}</span></span>
                                 <span class="mr-3 text-nowrap"><span style="color:#783000" class="font-weight-bold">盘点数量:</span><span style="color:#af7651">@{{ inventoryMission.verified_amount }}</span></span>

+ 20 - 8
resources/views/inventory/stockInventory/mission.blade.php

@@ -8,9 +8,10 @@
         {{--        <div id="form_div"></div>--}}
         {{--        <div id="form_div"></div>--}}
         <form class="form-inline mt-3">
         <form class="form-inline mt-3">
             <span class="form-inline ml-5">
             <span class="form-inline ml-5">
+                 <span class="btn btn-sm btn-outline-secondary" @click="syncOwners">同步货主</span>
                 <select class="form-control form-control-sm tooltipTarget" name="owner_id" id="owner_id" style="width: 150px" title="选择指定货主">
                 <select class="form-control form-control-sm tooltipTarget" name="owner_id" id="owner_id" style="width: 150px" title="选择指定货主">
                     <option value="">货主</option>
                     <option value="">货主</option>
-                    <option v-for="owner in owners" :value="owner.name">@{{ owner.value }}</option>
+                    <option v-for="owner in owners" :value="owner.id">@{{ owner.name }}</option>
                 </select>
                 </select>
             </span>
             </span>
             <span class="form-inline">
             <span class="form-inline">
@@ -98,13 +99,7 @@
             el: "#list",
             el: "#list",
             data: {
             data: {
                 inventoryAccounts:{!! $inventoryAccounts->toJson()!!}['data'],
                 inventoryAccounts:{!! $inventoryAccounts->toJson()!!}['data'],
-                owners: [
-                        @foreach($owners as $owner)
-                    {
-                        name: '{{$owner->id}}', value: '{{$owner->name}}'
-                    },
-                    @endforeach
-                ],
+                owners:{!! $owners !!},
                 checkData: [],
                 checkData: [],
                 selectedStyle:'',
                 selectedStyle:'',
                 sum:{!! $inventoryAccounts->total() !!},
                 sum:{!! $inventoryAccounts->total() !!},
@@ -232,6 +227,23 @@
                         tempTip.show('删除失败,网络链接错误!'+err);
                         tempTip.show('删除失败,网络链接错误!'+err);
                     });
                     });
                 },
                 },
+                syncOwners(){
+                    let _this=this;
+                    let url = '{{url('inventory/syncOwners')}}';
+                    axios.get(url).then(function (response) {
+                        if(!response.data.success){
+                            tempTip.setDuration(3000);
+                            tempTip.show(response.data.data);
+                        }else {
+                            _this.owners=response.data.data;
+                            tempTip.setDuration(2000);
+                            tempTip.showSuccess('同步货主成功!');
+                        }
+                    }).catch(function (err) {
+                        tempTip.setDuration(3000);
+                        tempTip.show('同步货主失败,网络链接错误!'+err);
+                    })
+                },
                 hasDateStart(){
                 hasDateStart(){
                   this.date_start=document.getElementById('date_start').value;
                   this.date_start=document.getElementById('date_start').value;
                 },
                 },

+ 2 - 0
routes/web.php

@@ -300,6 +300,8 @@ Route::group(['prefix'=>'inventory'],function (){
     //全部库存
     //全部库存
     Route::get('statement/allInventory','InventoryController@allInventory');
     Route::get('statement/allInventory','InventoryController@allInventory');
 
 
+    //同步货主
+    Route::get('syncOwners','InventoryAccountController@syncOwners');
     //库存盘点
     //库存盘点
     Route::get('stockInventory/mission','InventoryAccountController@mission');
     Route::get('stockInventory/mission','InventoryAccountController@mission');
     //创建盘点任务
     //创建盘点任务