Просмотр исходного кода

Merge branch 'master' into zengjun

# Conflicts:
#	app/Providers/AppServiceProvider.php
#	app/Services/CommodityService.php
ajun 5 лет назад
Родитель
Сommit
cd5d917309
33 измененных файлов с 776 добавлено и 100 удалено
  1. 0 1
      app/Http/Controllers/AuthorityController.php
  2. 5 5
      app/Http/Controllers/CarriersController.php
  3. 18 17
      app/Http/Controllers/ProcessController.php
  4. 32 0
      app/Http/Controllers/StoreCheckingReceiveController.php
  5. 10 0
      app/Http/Controllers/StoreCheckingReceiveItemController.php
  6. 76 9
      app/Http/Controllers/TestController.php
  7. 186 0
      app/Imports/StoreCheckingReceiveImport.php
  8. 3 1
      app/Jobs/MeasuringMachineQueue.php
  9. 1 1
      app/OracleDOCASNDetail.php
  10. 0 1
      app/OracleDOCASNHeader.php
  11. 1 1
      app/Owner.php
  12. 8 0
      app/Providers/AppServiceProvider.php
  13. 17 0
      app/Services/CommodityBarcodeService.php
  14. 16 0
      app/Services/CommodityService.php
  15. 11 0
      app/Services/StoreCheckingReceiveItemService.php
  16. 33 0
      app/Services/StoreCheckingReceiveService.php
  17. 19 0
      app/StoreCheckingReceive.php
  18. 24 0
      app/StoreCheckingReceiveItem.php
  19. 49 0
      database/migrations/2020_09_15_141310_create_store_checking_receives_table.php
  20. 42 0
      database/migrations/2020_09_16_090458_create_checking_store_receive_items_table.php
  21. 2 2
      resources/views/inventory/stockInventory/inventoryMission.blade.php
  22. 1 1
      resources/views/inventory/stockInventory/mission.blade.php
  23. 1 1
      resources/views/layouts/menu.blade.php
  24. 1 1
      resources/views/order/issue/index.blade.php
  25. 16 0
      resources/views/store/checkingReceive/menu.blade.php
  26. 166 0
      resources/views/store/checkingReceive/mission.blade.php
  27. 4 0
      resources/views/store/menu.blade.php
  28. 12 2
      routes/web.php
  29. 20 11
      serves/excelExportGo/api/controller/controller.go
  30. 0 9
      serves/excelExportGo/logs/2020-09-09.log
  31. 0 37
      serves/excelExportGo/logs/2020-09-10.log
  32. BIN
      serves/excelExportGo/main.exe
  33. 2 0
      tests/Routes/WebTest.php

+ 0 - 1
app/Http/Controllers/AuthorityController.php

@@ -4,7 +4,6 @@ namespace App\Http\Controllers;
 
 use App\Authority;
 use App\Owner;
-use App\User;
 use Exception;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;

+ 5 - 5
app/Http/Controllers/CarriersController.php

@@ -14,7 +14,7 @@ class CarriersController extends Controller
     public function index()
     {
         if(!Gate::allows('承运商-查询')){ return redirect(url('/'));  }
-            $carriers=Carrier::orderBy('id', 'DESC')->paginate(50);
+            $carriers=Carrier::query()->orderBy('id', 'DESC')->paginate(50);
             return view('maintenance.carrier.index',['carriers'=>$carriers]);
     }
 
@@ -31,7 +31,7 @@ class CarriersController extends Controller
         $id=false;
         $this->validatorCarrier($request,$id)->validate();
         $carriers=$request->input('Carrier');
-        if(Carrier::create($carriers)){
+        if(Carrier::query()->create($carriers)){
             $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return redirect('maintenance/carrier')->with('successTip','新承运商“'.$request->input('Carrier.name').'”添加成功');
         };
@@ -40,7 +40,7 @@ class CarriersController extends Controller
     public function edit($id)
     {
         if(!Gate::allows('承运商-编辑')){ return redirect(url('/'));  }
-        $carrier=Carrier::find($id);
+        $carrier=Carrier::query()->find($id);
         return view('maintenance.carrier.edit',['carrier'=>$carrier]);
     }
 
@@ -49,7 +49,7 @@ class CarriersController extends Controller
         $this->validatorCarrier($request,$id)->validate();
         if(!Gate::allows('承运商-编辑')){ return redirect(url('/'));  }
         $data=$request->input('Carrier');
-        $carrier=Carrier::find($id);
+        $carrier=Carrier::query()->find($id);
         $carrier->fill($data);
         if ($carrier->save()){
             $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
@@ -60,7 +60,7 @@ class CarriersController extends Controller
     public function destroy($id)
     {
         if(!Gate::allows('承运商-删除')){ return redirect(url('/'));  }
-        $carrier=Carrier::find($id);
+        $carrier=Carrier::query()->find($id);
         $this->log(__METHOD__,__FUNCTION__,json_encode($carrier),Auth::user()['id']);
         $result=$carrier->delete();
         return ['success'=>$result];

+ 18 - 17
app/Http/Controllers/ProcessController.php

@@ -4,7 +4,6 @@ namespace App\Http\Controllers;
 
 use App\Commodity;
 use App\CommodityBarcode;
-use App\Exports\Export;
 use App\LaborReport;
 use App\Owner;
 use App\Process;
@@ -27,7 +26,6 @@ use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Http;
 use Illuminate\Support\Facades\Validator;
-use Maatwebsite\Excel\Facades\Excel;
 use Ramsey\Uuid\Uuid;
 
 class ProcessController extends Controller
@@ -199,7 +197,7 @@ class ProcessController extends Controller
         $process=Process::with('processDailies')->find($request->id);
         if (!$process)return ['success'=>false];
         $result=$this->statistic($process);
-        if (!$result['success'])return $result;
+//        if (!$result['success'])return $result;
         $process->update(['status'=>'交接完成']);
         $process->createOperatorLog('交接完成');
         $processStatistic=$result['data'];
@@ -231,18 +229,21 @@ class ProcessController extends Controller
                 $total_cost += ($processDailyParticipant->hour_count)*($processDailyParticipant->hour_price);
             }
         };
-        if (!$revenue || !$total_cost)return ['success'=>false,'data'=>'该单未产生费用,无法计算毛利率!'];
-        $gross_profit=$revenue-$total_cost; //毛利润
-        if ($gross_profit!=0)$gross_profit_rate=$gross_profit/$revenue;  //毛利率;
-        else $gross_profit_rate=0;
         $processStatistic=ProcessStatistic::query()->find($process->id);
         $processStatistic->revenue=$revenue;
         $processStatistic->duration_days=$duration_days;
         $processStatistic->duration_man_hours=$duration_man_hours;
+        if ($sign_end) $processStatistic->ended_at = date('Y-m-d H:i:s');
+        if (!$revenue || !$total_cost){
+            $processStatistic->update();
+            return ['success'=>false,'data'=>'该单未产生费用,无法计算毛利率!'];
+        }
+        $gross_profit=$revenue-$total_cost; //毛利润
+        if ($gross_profit!=0)$gross_profit_rate=$gross_profit/$revenue;  //毛利率;
+        else $gross_profit_rate=0;
         $processStatistic->total_cost=$total_cost;
         $processStatistic->gross_profit=$gross_profit;
         $processStatistic->gross_profit_rate=$gross_profit_rate;
-        if ($sign_end) $processStatistic->ended_at = date('Y-m-d H:i:s');
         $processStatistic->update();
         $this->log(__METHOD__,"修改二次加工单统计单_".__FUNCTION__,json_encode($processStatistic),Auth::user()['id']);
         return ['success'=>true,'data'=>$processStatistic];
@@ -627,10 +628,10 @@ class ProcessController extends Controller
             if ($signUnitPrice){
                 $process->update(['unit_price' => $signUnitPrice->mark]);
                 $result = $this->statistic($process);
-                if (!$result['success']){
-                    DB::rollBack();
-                    return $result['data'];
-                }
+//                if (!$result['success']){
+//                    DB::rollBack();
+//                    return $result['data'];
+//                }
             }
             $process->createSign('财务确认');
             $process->destroySign();
@@ -643,10 +644,10 @@ class ProcessController extends Controller
             if ($signUnitPrice){
                 $process->update(['unit_price' => $signUnitPrice->mark]);
                 $result = $this->statistic($process);
-                if (!$result['success']){
-                    DB::rollBack();
-                    return $result['data'];
-                }
+//                if (!$result['success']){
+//                    DB::rollBack();
+//                    return $result['data'];
+//                }
             }
             $process->createSign('二次加工组确认');
             $process->destroySign();
@@ -847,7 +848,7 @@ class ProcessController extends Controller
         }]);
         if (count($process->processesContents) == 0)return ['success'=>false,'data'=>'没有成本单不得验收!'];
         $result=$this->statistic($process, true);
-        if (!$result['success'])return $result;
+        //if (!$result['success'])return $result;
         $process->update([
             'status'=>'待交接'
         ]);

+ 32 - 0
app/Http/Controllers/StoreCheckingReceiveController.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Imports\StoreCheckingReceiveImport;
+use App\Services\StoreCheckingReceiveService;
+use Illuminate\Http\Request;
+use Maatwebsite\Excel\Facades\Excel;
+
+class StoreCheckingReceiveController extends Controller
+{
+    public function mission(Request $request){
+        /** @var StoreCheckingReceiveService $service */
+        $service = app('storeCheckingReceiveService');
+
+        $params = $request->input();
+        $storeCheckingReceives = $service->paginate($params);
+        $owners = app('ownerService')->getSelection();
+        return view('store.checkingReceive.mission',compact('storeCheckingReceives','params','owners'));
+    }
+
+    public function import(Request $request){
+        $fileSuffix=$request->file('file')->getClientOriginalExtension();
+        if ($fileSuffix != 'xlsx' && $fileSuffix != 'xls' && $fileSuffix != 'csv')
+            return ['success'=>false,'data'=>'不支持该文件类型'];
+        $isCovering = $request->input('isCovering');
+        ini_set('max_execution_time',2500);
+        ini_set('memory_limit','1526M');
+        $fileSuffix = ucwords($fileSuffix);
+        Excel::import(new StoreCheckingReceiveImport($isCovering),$request->file('file')->path(),null,$fileSuffix);
+    }
+}

+ 10 - 0
app/Http/Controllers/StoreCheckingReceiveItemController.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+
+class StoreCheckingReceiveItemController extends Controller
+{
+    //
+}

+ 76 - 9
app/Http/Controllers/TestController.php

@@ -17,20 +17,30 @@ use App\OracleDOCOrderHeader;
 use App\OracleDocOrderPackingSummary;
 use App\OracleDOCWaveDetails;
 use App\Order;
+use App\OrderIssue;
 use App\OrderPackage;
 use App\Owner;
 use App\Package;
+use App\Process;
+use App\ProcessDaily;
+use App\ProcessStatistic;
 use App\RejectedBillItem;
 use App\Services\InventoryCompareService;
 use App\Services\LogService;
+use App\Services\OrderIssueService;
 use App\Services\OrderPackageService;
+use App\Services\OrderService;
+use App\Unit;
 use App\User;
 use App\Waybill;
 use Carbon\Carbon;
+use Exception;
 use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Cache;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Http;
 use Zttp\Zttp;
 
 class TestController extends Controller
@@ -76,6 +86,19 @@ class TestController extends Controller
 
     }
 
+    function issues()
+    {
+        /** @var OrderPackageService $orderPackageService */
+        $orderPackageService = app('orderPackageService');
+        $ids = [741,739,738,736,735,733,732,731,730,729,728,725,724,723,721,720,719,718,717,715,714,713,712,711,710,705,703,702,701,700,699,698,696,694,693,692,691,690];
+        $orderIssues = OrderIssue::query()->whereIn('id',$ids)->get();
+        $order_ids = data_get($orderIssues,'*.order_id');
+        $orders = Order::query()->whereIn('id',$order_ids)->get();
+        foreach ($orders as $item) {
+            $orderPackageService->createdByOrder($item);
+        }
+    }
+
     function t2(Request $request)
     { //x        $packagesBatch=Package::where('batch_number',$batch_number)->first();
 
@@ -330,16 +353,60 @@ class TestController extends Controller
     }
 
     function test1(){
-        $wms_code = "ASN2008120974";
-        $basCodes = OracleBasCode::query()->select('code','codename_c')
-            ->whereIn('codename_c',['部分收货','订单创建'])->where('codeid','ASN_STS')->get();
-        $basCodeMap = [];
-        foreach ($basCodes as $basCode){
-            $basCodeMap[$basCode->code] = $basCode->codename_c;
+        $statistics = ProcessStatistic::query()->whereNull('revenue')->get();
+        $id = array_column($statistics->toArray(),'process_id');
+        $processes = Process::query()->where(function (Builder $query){
+            $query->where('status','待交接')->orWhere('status','交接完成');
+        })->whereIn('process_id',$id)->get();
+        $sign_end = true;
+        foreach ($processes as $process){
+            if (count($process->processDailies)>0){
+                $completed_amount=0;
+                foreach ($process->processDailies as $processDaily){
+                    $completed_amount=$completed_amount+($processDaily->output);
+                }
+                $process->completed_amount=$completed_amount;
+            }
+            //统计:
+            $revenue=($process->unit_price)*($process->completed_amount);   //收入合计
+            $processDailies=ProcessDaily::with('processDailyParticipants')->where('process_id',$process->id)->where('output','>',0)->get();
+            $duration_days=count($processDailies);      //完成天数
+            $duration_man_hours=0;      //总工时
+            $total_cost=0;              //合计成本
+            foreach ($processDailies as $processDailyOne){
+                foreach ($processDailyOne->processDailyParticipants as $processDailyParticipant){
+                    if (!$processDailyParticipant->unit_price && !$processDailyParticipant->hour_price) continue;
+                    $duration_man_hours += $processDailyParticipant->hour_count;
+                    if ($processDailyParticipant->unit_count){
+                        $total_cost += ($processDailyParticipant->unit_count)*($processDailyParticipant->unit_price);
+                        continue;
+                    }
+                    $total_cost += ($processDailyParticipant->hour_count)*($processDailyParticipant->hour_price);
+                }
+            };
+            $processStatistic=ProcessStatistic::query()->find($process->id);
+            $processStatistic->revenue=$revenue;
+            $processStatistic->duration_days=$duration_days;
+            $processStatistic->duration_man_hours=$duration_man_hours;
+            if ($sign_end) $processStatistic->ended_at = date('Y-m-d H:i:s');
+            if (!$revenue || !$total_cost){
+                $processStatistic->update();
+                continue;
+            }
+            $gross_profit=$revenue-$total_cost; //毛利润
+            if ($gross_profit!=0)$gross_profit_rate=$gross_profit/$revenue;  //毛利率;
+            else $gross_profit_rate=0;
+            $processStatistic->total_cost=$total_cost;
+            $processStatistic->gross_profit=$gross_profit;
+            $processStatistic->gross_profit_rate=$gross_profit_rate;
+            $processStatistic->update();
+            $this->log(__METHOD__,"修改二次加工单统计单_".__FUNCTION__,json_encode($processStatistic),Auth::user()['id']);
         }
-        $docASNs=OracleDOCASNDetail::query()->where("ASNNo",$wms_code)->get();   //入库单
-        $docASNs[0]->load('oracleDocAsnHeader');
-        dd($docASNs[0]);
+    }
+
+    public function test2(){
+        $a = ["a"=>1,"b"=>2];
+        dd(array_keys($a));
     }
 
     /*1*/

+ 186 - 0
app/Imports/StoreCheckingReceiveImport.php

@@ -0,0 +1,186 @@
+<?php
+
+namespace App\Imports;
+
+use App\Services\CommodityService;
+use Illuminate\Support\Collection;
+use Maatwebsite\Excel\Concerns\ToCollection;
+use Maatwebsite\Excel\Concerns\WithHeadingRow;
+use Maatwebsite\Excel\Imports\HeadingRowFormatter;
+
+HeadingRowFormatter::default('none');
+class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
+{
+    /** @var bool $isOverride
+     *  是否覆盖
+     */
+    protected $isOverride;
+    public function __construct($isOverride)
+    {
+        $this->isOverride=$isOverride ? true : false;
+    }
+
+    /**
+    * @param Collection $collection
+     * @return array
+    */
+    public function collection(Collection $collection)
+    {
+        $row = $collection->first();
+        $header = [
+            "货主","SKU","商品名称","条码","数量","生产日期","失效日期","批号","唯一码"
+        ];
+        foreach ($header as $str){
+            if (!($row[$str] ?? false)) return ["success"=>false, "data"=>"表头不存在“".$str."”"];
+        }
+        $owner_name = null;
+        $items = [];
+        $errors = [];
+        $commodities = [];
+        $barcodes = [];
+        //去重 筛选 错误
+        foreach ($collection as $index => $item){
+            if (!$owner_name && $item["货主"]) $owner_name = $item["货主"];
+            if (!$item["条码"] || !$item["数量"] || !is_numeric($item["数量"])){
+                array_push($errors,($index+2)." 行:条码或数量不存在");
+                continue;
+            }
+            if ($item["生产日期"] && !(strtotime($item["生产日期"]) ? true : false)){
+                array_push($errors,($index+2)." 行:生产日期格式错误");
+                continue;
+            }
+            if ($item["失效日期"] && !(strtotime($item["失效日期"]) ? true : false)){
+                array_push($errors,($index+2)." 行:失效日期格式错误");
+                continue;
+            }
+            $isUniqueCommodity = isset($commodities[$item["条码"]]);
+            if ($isUniqueCommodity){
+                $line = &$items[$commodities[$item["条码"]]];
+                if ($line["produced_at"] == $item["生产日期"] && $line["invalid_at"] == $item["失效日期"]
+                    && $line["batch_code"] == $item["批号"] && $line["unique_code"] == $item["唯一码"]) {
+                    $line["imported_amount"] += $item["数量"];
+                    array_push($errors, ($index + 2) . " 行:重复数据已合并数量");
+                    continue;
+                }
+            }
+            array_push($items,[
+                "imported_amount" => $item["数量"],
+                "produced_at" => $item["生产日期"],
+                "invalid_at" => $item["失效日期"],
+                "batch_code" => $item["批号"],
+                "unique_code" => $item["唯一码"],
+                "SKU" => $item["SKU"],
+                "商品名称" => $item["商品名称"],
+                "条码" => $item["条码"],
+                "lineno" => $index+2,
+            ]);
+            if ($isUniqueCommodity){
+                if (is_array($commodities[$item["条码"]])) array_push($commodities[$item["条码"]], count($items)-1);
+                else $commodities[$item["条码"]] = [$commodities[$item["条码"]], count($items)-1];
+            }else{
+                $commodities[$item["条码"]] = count($items)-1 ;
+                array_push($barcodes,$item["条码"]);
+            }
+        }
+
+        //不存在货主
+        if (!$owner_name) return ["success"=>false, "data"=>"货主为空,不允许录入,至少为一行标明货主!"];
+
+        //使用条码获取商品ID
+        $commodityBarCodes = app('commodityBarcodeService')->getCommodities($barcodes);
+        foreach ($commodityBarCodes as $barcode){
+            if (!is_array($commodities[$barcode->code])){
+                $commodities[$barcode->code] = [$commodities[$barcode->code]];
+            }
+            foreach ($commodities[$barcode->code] as $index){
+                $items[$index]["commodity_id"] = $barcode->commodity_id;
+                unset($items[$index]["SKU"]);
+                unset($items[$index]["商品名称"]);
+                unset($items[$index]["条码"]);
+                unset($items[$index]["lineno"]);
+            }
+            unset($commodities[$barcode->code]);
+        }
+
+        $owner = app('ownerService')->firstOrCreate(["name"=>$owner_name],["name"=>$owner_name, "code"=>$owner_name]);
+
+        //填充商品ID,未找到项流转下一步,空SKU删除该行并返回错误
+        $skus = [];
+        $skuParam = [];
+        foreach ($commodities as $key => $value){
+            if (!is_array($value)){
+                $value = [$value];
+            }
+            foreach ($value as $i => $index){
+                if (!$items[$index]["SKU"]){
+                    array_push($errors, ($items[$index]["lineno"]) . " 行:条码未找到商品时SKU不得为空");
+                    unset($items[$index]);
+                    if ($i == count($value)-1) unset($commodities[$key]);
+                    continue;
+                }
+                if (isset($skus[$items[$index]["SKU"]])) array_push($skus, $index);
+                else{
+                    $skus[$items[$index]["SKU"]] = [$index];
+                    array_push($skuParam,$items[$index]["SKU"]);
+                }
+            }
+        }
+
+        //使用货主+SKU获取商品ID,将条码补录
+        $barcodes = [];
+        /** @var CommodityService $commodityService */
+        $commodityService = app('commodityService');
+        $commodities = $commodityService->get(["owner_id"=>$owner->id,"sku"=>$skuParam]);
+        foreach ($commodities as $commodity){
+            foreach ($skus[$commodity->sku] as $i => $index){
+                $items[$index]["commodity_id"] = $commodity->id;
+                if ($i == 0){
+                    array_push($barcodes,[
+                        "code" => $items[$index]["条码"],
+                        "commodity_id" => $commodity->id,
+                        "created_at" => date('Y-m-d H:i:s')
+                    ]);
+                }
+                unset($items[$index]["SKU"]);
+                unset($items[$index]["商品名称"]);
+                unset($items[$index]["条码"]);
+                unset($items[$index]["lineno"]);
+            }
+            unset($skus[$commodity->sku]);
+        }
+        if (count($barcodes) > 0) app('commodityBarcodeService')->insert($barcodes);
+
+        //未找到商品录入商品
+        $commodities = [];
+        $skuParam = [];
+        foreach ($skus as $sku => $arr){
+            $data = &$items[$arr[0]];
+            array_push($commodities,[
+                "name" => $data["商品名称"],
+                "sku" => $data["SKU"],
+                "owner_id" => $owner->id,
+                "created_at" => date('Y-m-d H:i:s'),
+            ]);
+            array_push($skuParam, $sku);
+        }
+        $commodityService->insert($commodities);
+        $commodities = $commodityService->get(["owner_id"=>$owner->id,"sku"=>$skuParam]);
+        foreach ($commodities as $commodity){
+            foreach ($skus[$commodity->sku] as $i => $index){
+                $items[$index]["commodity_id"] = $commodity->id;
+                if ($i == 0){
+                    array_push($barcodes,[
+                        "code" => $items[$index]["条码"],
+                        "commodity_id" => $commodity->id,
+                        "created_at" => date('Y-m-d H:i:s')
+                    ]);
+                }
+                unset($items[$index]["SKU"]);
+                unset($items[$index]["商品名称"]);
+                unset($items[$index]["条码"]);
+                unset($items[$index]["lineno"]);
+            }
+            unset($skus[$commodity->sku]);
+        }
+    }
+}

+ 3 - 1
app/Jobs/MeasuringMachineQueue.php

@@ -39,7 +39,9 @@ class MeasuringMachineQueue implements ShouldQueue
         if ($this->measuringMachine->updated_at<Carbon::now()->subMinutes(30)){
             $this->measuringMachine->status="离线";
             $this->measuringMachine->save();
-            $package=OrderPackage::with('owner','paperBox','measuringMachine')->
+            $package=OrderPackage::with(['order'=>function($query){
+                $query->with('owner','logistic');
+            },'paperBox','measuringMachine'])->
             where('measuring_machine_id',$this->measuringMachine->id)->orderBy('id','DESC')->first();
             if (!$package){
                 $package=new OrderPackage();

+ 1 - 1
app/OracleDOCASNDetail.php

@@ -15,6 +15,6 @@ class OracleDOCASNDetail extends Model
         return OracleBasSKU::query()->where(['sku'=>$this->sku,'customerId'=>$this->customerId])->get();
     }
     public function oracleDocAsnHeader(){
-        return $this->belongsTo('App\OracleDOCAsnHeader','asnno','asnno');
+        return $this->belongsTo('App\OracleDOCASNHeader','asnno','asnno');
     }
 }

+ 0 - 1
app/OracleDOCASNHeader.php

@@ -7,7 +7,6 @@ use Illuminate\Database\Eloquent\Model;
 
 class OracleDOCASNHeader extends Model
 {
-    //
     use ModelTimeFormat;
     protected $connection="oracle";
     protected $table="Doc_ASN_Header";

+ 1 - 1
app/Owner.php

@@ -36,7 +36,7 @@ class Owner extends Model
     }
 
     public function orderTrackingOwner(){
-        return $this->belongsTo('App\orderTrackingOwner','id','owner_id');
+        return $this->belongsTo(OrderTrackingOwner::class,'id','owner_id');
     }
 
 }

+ 8 - 0
app/Providers/AppServiceProvider.php

@@ -4,6 +4,7 @@ namespace App\Providers;
 
 use App\Http\Controllers\Controller;
 use App\Services\CommodityService;
+use App\Services\CommodityBarcodeService;
 use App\Services\InventoryCompareService;
 use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OrderIssuePerformanceService;
@@ -26,8 +27,11 @@ use App\Services\RejectedBillItemService;
 use App\Services\RejectedBillService;
 use App\Services\ShopService;
 use App\Services\RejectedService;
+use App\Services\StoreCheckingReceiveItemService;
+use App\Services\StoreCheckingReceiveService;
 use App\Services\WaybillFinancialService;
 use App\Services\WeighExceptedService;
+use App\StoreCheckingReceiveItem;
 use Illuminate\Queue\Events\JobFailed;
 use Illuminate\Support\Facades\Queue;
 use Illuminate\Support\Facades\Schema;
@@ -99,6 +103,10 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('oracleDocOrderHeaderService',OracleDOCOrderHeaderService::class);
         app()->singleton('rejectedBillService',RejectedBillService::class);
         app()->singleton('rejectedBillItemService',RejectedBillItemService::class);
+        app()->singleton('storeCheckingReceiveService',StoreCheckingReceiveService::class);
+        app()->singleton('storeCheckingReceiveItemService',StoreCheckingReceiveItemService::class);
+        app()->singleton('commodityBarcodeService',CommodityBarcodeService::class);
+        app()->singleton('commodityService',CommodityService::class);
 
         $this->loadingOrderModuleService();
         $this->loadingBasedModuleService();

+ 17 - 0
app/Services/CommodityBarcodeService.php

@@ -0,0 +1,17 @@
+<?php 
+
+namespace App\Services; 
+
+use App\CommodityBarcode;
+
+Class CommodityBarcodeService
+{ 
+    public function getCommodities(array $codes){
+        return CommodityBarcode::query()->select('code','commodity_id')->whereIn('code',$codes)->get();
+    }
+
+    public function insert(array $params){
+        return CommodityBarcode::query()->insert($params);
+    }
+
+}

+ 16 - 0
app/Services/CommodityService.php

@@ -19,6 +19,22 @@ Class CommodityService
         return Commodity::query()->updateOrCreate($param);
     }
 
+    public function get(array $params){
+        $query = Commodity::query();
+        if ($params["owner_id"] ?? false){
+            $query->where("owner_id", $params["owner_id"]);
+        }
+        if ($params["sku"] ?? false){
+            if (!is_array($params["sku"]))$params["sku"] = [$params["sku"]];
+            $query->whereIn('sku', $params["sku"]);
+        }
+        return $query->get();
+    }
+
+    public function insert(array $params){
+        return Commodity::query()->insert($params);
+    }
+
     public function  getWASCommoditiesByWMSOrderHeaders($orderHeaders)
     {
         $skus = [];

+ 11 - 0
app/Services/StoreCheckingReceiveItemService.php

@@ -0,0 +1,11 @@
+<?php 
+
+namespace App\Services; 
+
+Class StoreCheckingReceiveItemService
+{ 
+    public function insert(){
+
+    }
+
+}

+ 33 - 0
app/Services/StoreCheckingReceiveService.php

@@ -0,0 +1,33 @@
+<?php 
+
+namespace App\Services; 
+
+use App\Services\common\QueryService;
+use App\StoreCheckingReceive;
+use Illuminate\Database\Eloquent\Builder;
+
+Class StoreCheckingReceiveService
+{
+    /**
+     * @param Builder $query
+     * @param array $params
+     * @return Builder
+     */
+    private function conditionQuery(Builder $query,array $params){
+        $columnQueryRules=[
+            'created_at_start' => ['alias' => 'created_at' , 'startDate' => ' 00:00:00'],
+            'created_at_end' => ['alias' => 'created_at' , 'endDate' => ' 23:59:59'],
+            'owner_id' => ['multi' => ','],
+            'id' => ['multi' => ',']
+        ];
+        return app(QueryService::class)->query($params,$query,$columnQueryRules);
+    }
+
+    public function paginate(array $params){
+        $query = StoreCheckingReceive::query();
+        $query->with('owner');
+        $query = $this->conditionQuery($query, $params);
+        return $query->paginate($params['paginate'] ?? 50);
+    }
+
+}

+ 19 - 0
app/StoreCheckingReceive.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App;
+
+use App\Traits\ModelTimeFormat;
+use Illuminate\Database\Eloquent\Model;
+
+class StoreCheckingReceive extends Model
+{
+    use ModelTimeFormat;
+    public $timestamps=false;
+    protected $fillable=[
+        'owner_id','created_at','status','is_receive_diff','asn','is_asn_diff'
+    ];
+
+    public function owner(){
+        return $this->hasOne('App\Owner','id','owner_id');
+    }
+}

+ 24 - 0
app/StoreCheckingReceiveItem.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace App;
+
+use App\Traits\ModelTimeFormat;
+use Illuminate\Database\Eloquent\Model;
+
+class StoreCheckingReceiveItem extends Model
+{
+    use ModelTimeFormat;
+    public $timestamps=false;
+    protected $fillable=[
+        "store_checking_receive_id","bin_number","commodity_id","imported_amount","counted_amount",
+        "asn_amount","imported_diff_amount","asn_diff_amount",
+        "produced_at","invalid_at","batch_code","unique_code"
+    ];
+
+    public function commodity(){
+        return $this->hasOne('App\Commodity','id','commodity_id')->select('id','name','sku');
+    }
+    public function storeCheckingReceive(){
+        return $this->belongsTo('App\StoreCheckingReceive','store_checking_receive_id','id');
+    }
+}

+ 49 - 0
database/migrations/2020_09_15_141310_create_store_checking_receives_table.php

@@ -0,0 +1,49 @@
+<?php
+
+use App\Authority;
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateStoreCheckingReceivesTable extends Migration
+{
+
+    protected $authNames=[
+        "入库管理-盘收一体",
+        "入库管理-盘收一体-任务",
+        "入库管理-盘收一体-盘收",
+    ];
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('store_checking_receives', function (Blueprint $table) {
+            $table->id();
+            $table->bigInteger('owner_id')->index()->comment('外键货主');
+            $table->timestamp('created_at')->index()->comment('创建时间');
+            $table->enum('status',['已导入','清点中','已清点','已入库'])->default('已导入')->comment('状态');
+            $table->enum('is_receive_diff',['是','否'])->nullable()->comment('接收差异');
+            $table->string('asn')->nullable()->comment('asn单号');
+            $table->enum('is_asn_diff',['是','否'])->nullable()->comment('ASN差异');
+        });
+        foreach ($this->authNames as $name){
+            if(!Authority::query()->where('name',$name)->first())(new Authority(['name'=>$name,'alias_name'=>$name]))->save();
+        }
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('store_checking_receives');
+        foreach ($this->authNames as $name){
+            Authority::query()->where('name',$name)->delete();
+        }
+    }
+}

+ 42 - 0
database/migrations/2020_09_16_090458_create_checking_store_receive_items_table.php

@@ -0,0 +1,42 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateCheckingStoreReceiveItemsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('store_checking_receive_items', function (Blueprint $table) {
+            $table->id();
+            $table->bigInteger('store_checking_receive_id')->comment('外键任务');
+            $table->integer('bin_number')->nullable()->comment('格口号');
+            $table->bigInteger('commodity_id')->index()->comment('外键商品');
+            $table->integer('imported_amount')->nullable()->comment('导入数量');
+            $table->integer('counted_amount')->nullable()->comment('实盘数量');
+            $table->integer('asn_amount')->nullable()->comment('ASN数量');
+            $table->integer('imported_diff_amount')->nullable()->comment('导入差异');
+            $table->integer('asn_diff_amount')->nullable()->comment('ASN差异');
+            $table->timestamp('produced_at')->nullable()->comment('生产日期');
+            $table->timestamp('invalid_at')->nullable()->comment('失效日期');
+            $table->string('batch_code')->nullable()->comment('批号');
+            $table->string('unique_code')->nullable()->comment('唯一码');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('store_checking_receive_items');
+    }
+}

+ 2 - 2
resources/views/inventory/stockInventory/inventoryMission.blade.php

@@ -631,7 +631,7 @@
                     if ( _this.inventoryAccountMissions.length>1){
                         alert('该库位和产品条码下存在多条盘点任务,请选中您需要盘点的任务');
                     }else {
-                        if (_this.inventory.status!=='复盘中'){
+                        // if (_this.inventory.status!=='复盘中'){
                             _this.inventoryMissions.every(function (inventoryMission,i) {
                                 if (inventoryMission.location===location && barcode===inventoryMission.commodity.barcode){
                                     if (inventoryMission.stockInventoryPersons.length>0){
@@ -647,7 +647,7 @@
                                 }
                                 return true;
                             });
-                        }
+                        // }
                     }
                 },
                 //结束初盘任务

+ 1 - 1
resources/views/inventory/stockInventory/mission.blade.php

@@ -43,7 +43,7 @@
                     </td>
                     <td>
                         @can('库存管理-盘点')
-                            <span class="btn  btn-sm btn-outline-info" @click="enterStockInventory(inventory.id)" v-if="inventory.status!='已完成'">进入</span>
+                            <span class="btn  btn-sm btn-outline-info" @click="enterStockInventory(inventory.id)" v-if="inventory.status!='已完成'">盘点</span>
                         @endcan
                         @can('库存管理-盘点-查看')
                             <a :href="'{{url('inventory/stockInventory/enterStockInventory')}}/'+inventory.id+'?listMode=true'"><button class="btn btn-sm btn-outline-dark">查看</button></a>

+ 1 - 1
resources/views/layouts/menu.blade.php

@@ -7,7 +7,7 @@
                     <span class="fa fa-recycle" style="color: #721b6e"></span>
                     退货管理</a></li> @endcan
         @can('入库管理')
-            <li class="nav-item"><a href="{{url("store/fast/create")}}" class="nav-link"
+            <li class="nav-item"><a href="{{url("store/checkReceive/mission")}}" class="nav-link"
                                     :class="{active:isActive('store',1)}">
                     <span class="fa fa-sign-in" style="color: #721b25"></span>
                     入库管理</a></li>

+ 1 - 1
resources/views/order/issue/index.blade.php

@@ -590,7 +590,7 @@
                         data: _this.owners
                     },
                     {name: 'client_code', type: 'input', tip: '原始订单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '原始订单号'},
-                    {name: 'logistic_number', type: 'input', tip: ['输入原始运单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索'], placeholder: '原始运单号'},
+                    {name: 'logistic_number', type: 'input', tip: ['输入原始运单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索'], placeholder: '运单号'},
                     {name: 'logistic_number_return', type: 'input', tip: '退回单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '退回单号'},
                     {name: 'send_client_code', type: 'input', tip: '二次订单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '二次订单号'},
                 ], [

+ 16 - 0
resources/views/store/checkingReceive/menu.blade.php

@@ -0,0 +1,16 @@
+<div id="nav2">
+    <div class="container-fluid nav3">
+        <div class="card menu-third" >
+            <ul class="nav nav-pills">
+                @can('入库管理-盘收一体-任务')
+                    <li class="nav-item">
+                        <a class="nav-link" href="{{url('store/checkReceive/mission')}}" :class="{active:isActive('checkReceive',2)}">任务</a>
+                    </li> @endcan
+                @can('入库管理-盘收一体-盘收')
+                    <li class="nav-item">
+                        <a class="nav-link" href="{{url('store/fast')}}" :class="{active:isActive('',3)}">记录</a>
+                    </li> @endcan
+            </ul>
+        </div>
+    </div>
+</div>

+ 166 - 0
resources/views/store/checkingReceive/mission.blade.php

@@ -0,0 +1,166 @@
+@extends('layouts.app')
+@section('title')盘收一体-任务@endsection
+
+@section('content')
+<div id="container" class="d-none container-fluid">
+    <span>
+        @component('store.menu')@endcomponent
+        @component('store.checkingReceive.menu')@endcomponent
+    </span>
+    <div class="modal fade" id="import" tabindex="-1" role="dialog" aria-hidden="true">
+        <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
+            <div class="modal-content">
+                <div class="modal-body" style="text-align:center;height: 150px">
+                    <div class="custom-control custom-checkbox mt-2 mb-3">
+                        <input type="checkbox" class="custom-control-input" id="isCovering" v-model="excel.isCovering">
+                        <label class="custom-control-label" for="isCovering">覆盖原有已存在信息</label>
+                    </div>
+                    <label>
+                        <input name="file" hidden type="file" class="col-5" id="excelFile" @change="getFile($event)"
+                               accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
+                    </label>
+                    <button class="btn btn-dark col-5" @click="$('#excelFile').trigger('click');">选择Excel文件</button><br>
+                    <small class="text-primary">@{{ excel.file ? excel.file.name : '' }}</small>
+                </div>
+                <div class="modal-footer">
+                    <button class="col-12 btn btn-success" @click="importMission()">开始导入</button>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div id="form_div"></div>
+    <div class="ml-2">
+        <button class="btn btn-sm btn-outline-info" data-toggle="modal" data-target="#import">导入</button>
+    </div>
+
+    <label for="all" class="d-none" id="cloneCheckAll">
+        <input id="all" type="checkbox" @click="checkAll($event)">全选
+    </label>
+    <table class="table table-sm text-nowrap table-bordered d-none" id="headerRoll"></table>
+    <table class="table table-striped table-sm text-nowrap table-hover mt-1" id="headerParent">
+        <tr id="header"></tr>
+        <tr v-for="(storeCheckingReceive,i) in storeCheckingReceives">
+            <td>
+                <label><input class="checkItem" type="checkbox" :value="storeCheckingReceives.id" v-model="checkData" /></label>
+            </td>
+            <td>@{{ i+1 }}</td>
+            <td>@{{ storeCheckingReceives.owner_name }}</td>
+            <td>@{{ storeCheckingReceives.status }}</td>
+            <td>@{{ storeCheckingReceives.is_receive_diff }}</td>
+            <td>@{{ storeCheckingReceives.asn }}</td>
+            <td>@{{ storeCheckingReceives.is_asn_diff }}</td>
+            <td>@{{ storeCheckingReceives.created_at }}</td>
+            <td></td>
+        </tr>
+    </table>
+    {{$storeCheckingReceives->appends($params)->links()}}
+</div>
+@stop
+
+@section('lastScript')
+    <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200914.js')}}"></script>
+    <script>
+        let vue = new Vue({
+            el:"#container",
+            data:{
+                storeCheckingReceives:[
+                    @foreach($storeCheckingReceives as $storeCheckingReceive)
+                    {id:'{{$storeCheckingReceive->id}}',owner_name:'{{$storeCheckingReceive->owner ? $storeCheckingReceive->owner->name : ''}}',
+                        created_at:'{{$storeCheckingReceive->created_at}}',status:'{{$storeCheckingReceive->status}}',
+                        is_receive_diff:'{{$storeCheckingReceive->is_receive_diff}}',asn:'{{$storeCheckingReceive->asn}}',
+                        is_asn_diff:'{{$storeCheckingReceive->is_asn_diff}}',
+                    },
+                    @endforeach
+                ],
+                owners:[
+                    @foreach($owners as $owner)
+                    {name:'{{$owner->id}}',value:'{{$owner->name}}'},
+                    @endforeach
+                ],
+                checkData:[],
+                sum:Number('{{$storeCheckingReceives->total()}}'),
+                excel : {
+                    isCovering:'',
+                    file : null,
+                },
+
+
+            },
+            mounted(){
+                $('#container').removeClass('d-none');
+                $(".tooltipTarget").tooltip({'trigger':'hover'});
+                let _this = this;
+                let data = [[
+                    {name:'created_at_start',type:'dateTime',tip:'选择显示指定日期的起始时间'},
+                    {name:'created_at_end',type:'dateTime',tip:'选择显示指定日期的结束时间'},
+                    {name:'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'],
+                        placeholder:['货主','定位或多选货主'],data:_this.owners},
+                    {name:'asn',type:'input',tip:'ASN单号:可在两侧增加百分号(%)进行模糊搜索',placeholder:'ASN单号'},
+                ]];
+
+                _this.form = new query({
+                    el:'#form_div',
+                    condition:data,
+                });
+                _this.form.init();
+                let column = [
+                    {name:'cloneCheckAll',customization:true,type:'checkAll',column:'id',
+                        dom:$('#cloneCheckAll').removeClass('d-none'), neglect: true},
+                    {name:'index',value: '序号', neglect: true},
+                    {name:'owner_name',value: '货主'},
+                    {name:'status',value: '状态'},
+                    {name:'is_receive_diff',value: '收货差异'},
+                    {name:'asn',value: 'ASN单号'},
+                    {name:'is_asn_diff',value: 'ASN差异'},
+                    {name:'created_at',value: '创建时间'},
+                    {name:'operating',value: '操作', neglect: true},
+                ];
+                setTimeout(function () {
+                    let header = new Header({
+                        el: "#header",
+                        column: column,
+                        data: _this.storeCheckingReceives,
+                        restorationColumn: 'id',
+                        vue:vue,
+                    });
+                    header.init();
+                },0);
+            },
+            methods:{
+                checkAll(event){
+                    if (event.target.checked){
+                        this.packages.forEach((el)=>{
+                            if (this.checkData.indexOf(el.id) === '-1'){
+                                this.checkData.push(el.id);
+                            }
+                        });
+                    }else this.checkData = [];
+                },
+                getFile(e){
+                    this.excel.file = e.target.files[0];
+                },
+                importMission(){
+                    if (!this.excel.file){
+                        tempTip.setDuration(3000);
+                        tempTip.setIndex(1099);
+                        tempTip.showSuccess('未选择任何文件!');
+                        return;
+                    }
+                    let formData = new FormData();
+                    formData.append("isCovering",this.excel.isCovering);
+                    formData.append("file",this.excel.file);
+                    axios.post('{{url('store/checkReceive/mission/import')}}',formData,{
+                        'Content-Type':'multipart/form-data'
+                    })
+                    .then(res=>{
+
+                    }).catch(err=>{
+
+                    })
+                }
+            },
+        });
+    </script>
+@stop

+ 4 - 0
resources/views/store/menu.blade.php

@@ -2,6 +2,10 @@
 <div class="container-fluid nav2" id="nav2">
     <div class="card">
         <ul class="nav nav-pills">
+            @can('入库管理-盘收一体')
+                <li class="nav-item">
+                    <a class="nav-link"  href="{{url('store/checkReceive/mission')}}" :class="{active:isActive('checkReceive',2)}">盘收一体</a>
+                </li> @endcan
             @can('入库管理-快速入库')
                 <li class="nav-item">
                     <a class="nav-link"  href="{{url('store/fast/create')}}" :class="{active:isActive('fast',2)}">快速入库</a>

+ 12 - 2
routes/web.php

@@ -211,15 +211,25 @@ Route::resource('package','PackageController');
 
 /** 入库 */
 Route::group(['prefix'=>'store'],function(){
-    Route::resource('fast/storeItem','StoreItemsController');
+    Route::group(['prefix'=>'fast'],function() {
+        Route::resource('storeItem','StoreItemsController');
+    });
     Route::resource('fast','StoreController');
-//    Route::get('fast/index','StoreController@index');
+
     /** 盲收 */
     Route::group(['prefix'=>'blindReceive'],function(){
         Route::get('/', function () { return view('store.blindReceive.index');});
         Route::get('excels', 'StoreBlindReceiveController@index');
         Route::post('excels/apiStore', 'StoreBlindReceiveController@apiStore');
     });
+
+    /** 盘收 */
+    Route::group(['prefix'=>'checkReceive'],function(){
+        Route::group(['prefix'=>'mission'],function(){
+            Route::post('import','StoreCheckingReceiveController@import');
+        });
+        Route::get('mission','StoreCheckingReceiveController@mission');
+    });
 });
 
 /** 二次加工 */

+ 20 - 11
serves/excelExportGo/api/controller/controller.go

@@ -5,7 +5,6 @@ import (
 	"bswas/orm"
 	"bswas/utilities"
 	"encoding/json"
-	"fmt"
 	"net/http"
 )
 
@@ -16,7 +15,7 @@ func Export(w http.ResponseWriter,req *http.Request)  {
 	// 解析参数 存入map
 	e := decoder.Decode(&params)
 	if e != nil{
-		utilities.WriteLog("/api/controller/controller.go:17   参数解析失败!","ERROR")
+		utilities.WriteLog("/api/controller/controller.go:18   参数解析失败!","ERROR")
 		return
 	}
 	file := excel.CreateFile(selectModule(params))
@@ -26,14 +25,26 @@ func Export(w http.ResponseWriter,req *http.Request)  {
 		return
 	}
 	if _, err := file.WriteTo(w); err != nil {
-		utilities.WriteLog("/api/controller/controller.go:22   返回二进制流失败!","ERROR")
+		utilities.WriteLog("/api/controller/controller.go:28   返回二进制流失败!","ERROR")
 		return
 	}
 }
+type base struct {
+	ROW []interface{} `json:"row"`
+	LIST [][]interface{} `json:"list"`
+}
 
 func selectModule(params map[string]string) (row []interface{}, list [][]interface{}, mergeRow map[string]string, mergeColumn []string) {
 	var data []map[string]string
 	switch params["type"] {
+	case "base":
+		var val base
+		err := json.Unmarshal([]byte(params["data"]),&val)
+		if err != nil {
+			utilities.WriteLog("/api/controller/controller.go:44  JSON解析失败!","ERROR")
+		}
+		row = val.ROW
+		list = val.LIST
 	case "waybill":
 		data = orm.GetMysqlData(params["sql"])
 		row, list = WaybillFormat(data)
@@ -77,7 +88,7 @@ func selectModule(params map[string]string) (row []interface{}, list [][]interfa
 		}else{
 			err := json.Unmarshal([]byte(params["data"]), &data)
 			if err != nil {
-				utilities.WriteLog("/api/controller/controller.go:73   库存数据json解析失败!","ERROR")
+				utilities.WriteLog("/api/controller/controller.go:91   库存数据json解析失败!","ERROR")
 			}
 		}
 		row, list = InventoryFormat(data, true)
@@ -87,7 +98,7 @@ func selectModule(params map[string]string) (row []interface{}, list [][]interfa
 		}else{
 			err := json.Unmarshal([]byte(params["data"]), &data)
 			if err != nil {
-				utilities.WriteLog("/api/controller/controller.go:83   全部库存数据json解析失败!","ERROR")
+				utilities.WriteLog("/api/controller/controller.go:101   全部库存数据json解析失败!","ERROR")
 			}
 		}
 		row, list = InventoryFormat(data, false)
@@ -106,14 +117,14 @@ func selectModule(params map[string]string) (row []interface{}, list [][]interfa
 	case "laborReport":
 		err := json.Unmarshal([]byte(params["data"]), &data)
 		if err != nil {
-			utilities.WriteLog("/api/controller/controller.go:102   临时工报表数据json解析失败!","ERROR")
+			utilities.WriteLog("/api/controller/controller.go:120   临时工报表数据json解析失败!","ERROR")
 		}
 		row, list = LaborReportFormat(data)
 	case "orderIssue":
 		sqlList := make(map[string]string)
 		err := json.Unmarshal([]byte(params["sqlList"]), &sqlList)
 		if err != nil {
-			utilities.WriteLog("/api/controller/controller.go:110   订单问题件数据json解析失败!","ERROR")
+			utilities.WriteLog("/api/controller/controller.go:129   订单问题件数据json解析失败!","ERROR")
 		}
 		if sqlList["orderPackageSql"] == "" || sqlList["secondOrderPackageSql"] == "" || sqlList["orderIssueSql"] == "" || sqlList["rejectedBillItemSql"] == "" || sqlList["logSql"] == ""{
 			return
@@ -169,15 +180,13 @@ func selectModule(params map[string]string) (row []interface{}, list [][]interfa
 		request := paramList{}
 		err := json.Unmarshal([]byte(params["data"]), &request)
 		if err != nil {
-			utilities.WriteLog("/api/controller/controller.go:137   称重统计数据json解析失败!","ERROR")
+			utilities.WriteLog("/api/controller/controller.go:183   称重统计数据json解析失败!","ERROR")
 		}
 		row, list = PackageStatisticFormat(request.ROW, request.LIST)
 	case "inventoryAccountMission":
-		fmt.Println(params["data"])
 		err := json.Unmarshal([]byte(params["data"]), &data)
 		if err != nil {
-			fmt.Println(err)
-			utilities.WriteLog("/api/controller/controller.go:178   库存盘点数据json解析失败!","ERROR")
+			utilities.WriteLog("/api/controller/controller.go:189   库存盘点数据json解析失败!","ERROR")
 		}
 		row, list = InventoryAccountMissionFormat(data)
 	case "inventoryCompare":

+ 0 - 9
serves/excelExportGo/logs/2020-09-09.log

@@ -1,9 +0,0 @@
-
-[ERROR]   11:12:55
-   /api/controller/controller.go:17   参数解析失败!
-[ERROR]   11:12:56
-   /api/controller/controller.go:17   参数解析失败!
-[ERROR]   11:13:49
-   /api/controller/controller.go:17   参数解析失败!
-[ERROR]   11:13:49
-   /api/controller/controller.go:17   参数解析失败!

+ 0 - 37
serves/excelExportGo/logs/2020-09-10.log

@@ -1,37 +0,0 @@
-
-[ERROR]   09:29:38
-   /api/controller/controller.go:174   库存盘点数据json解析失败!
-[ERROR]   09:34:44
-   /api/controller/controller.go:174   库存盘点数据json解析失败!
-[ERROR]   09:36:14
-   /api/controller/controller.go:174   库存盘点数据json解析失败!
-[ERROR]   09:42:33
-   /api/controller/controller.go:174   库存盘点数据json解析失败!
-[ERROR]   09:47:43
-   /api/controller/controller.go:178   库存盘点数据json解析失败!
-[ERROR]   09:48:19
-   /api/controller/controller.go:178   库存盘点数据json解析失败!
-[ERROR]   10:23:27
-   /api/controller/controller.go:178   库存盘点数据json解析失败!
-[ERROR]   10:24:52
-   /api/controller/controller.go:178   库存盘点数据json解析失败!
-[ERROR]   10:29:22
-   /api/controller/controller.go:178   库存盘点数据json解析失败!
-[ERROR]   10:31:32
-   /api/controller/controller.go:178   库存盘点数据json解析失败!
-[ERROR]   10:33:15
-   /api/controller/controller.go:178   库存盘点数据json解析失败!
-[ERROR]   10:44:56
-   /api/controller/controller.go:178   库存盘点数据json解析失败!
-[ERROR]   10:46:42
-   /api/controller/controller.go:178   库存盘点数据json解析失败!
-[ERROR]   11:01:44
-   /api/controller/controller.go:178   库存盘点数据json解析失败!
-[ERROR]   11:06:02
-   /api/controller/controller.go:178   库存盘点数据json解析失败!
-[ERROR]   13:37:16
-   /orm/query.go:11   SQL执行错误!(select inventory_compares.mission_code,inventory_compares.custom_location,inventory_compares.quality,inventory_compares.amount_in_sys,inventory_compares.amount_in_compare,inventory_compares.differ,inventory_compares.created_at, owners.name owner_name, commodities.name commodity_name,commodities.sku commodity_sku, commodity_barcodes.code commodity_barcode_code from `inventory_compares` left join `owners` on `inventory_compares`.`owner_id` = `owners`.`id` left join `commodities` on `inventory_compares`.`commodity_id` = `commodities`.`id` left join `commodity_barcodes` on `commodity_barcodes`.`commodity_id` = `commodities`.`id` order by `id` desc)
-[ERROR]   13:44:31
-   /orm/query.go:11   SQL执行错误!(select inventory_compares.*, owners.name owner_name, commodities.name commodity_name,commodities.sku commodity_sku, commodity_barcodes.code commodity_barcode_code from `inventory_compares` left join `owners` on `inventory_compares`.`owner_id` = `owners`.`id` left join `commodities` on `inventory_compares`.`commodity_id` = `commodities`.`id` left join `commodity_barcodes` on `commodity_barcodes`.`commodity_id` = `commodities`.`id` where `id` = '530,529' order by `id` desc)
-[ERROR]   13:52:09
-   /orm/query.go:11   SQL执行错误!(select inventory_compares.*, owners.name owner_name, commodities.name commodity_name,commodities.sku commodity_sku, commodity_barcodes.code commodity_barcode_code from `inventory_compares` left join `owners` on `inventory_compares`.`owner_id` = `owners`.`id` left join `commodities` on `inventory_compares`.`commodity_id` = `commodities`.`id` left join `commodity_barcodes` on `commodity_barcodes`.`commodity_id` = `commodities`.`id` where `id` in ('680', '679') order by `id` desc)

BIN
serves/excelExportGo/main.exe


+ 2 - 0
tests/Routes/WebTest.php

@@ -156,6 +156,8 @@ class WebTest extends TestCase
         "order/deAllocation",
         "order/deAllocationAll",
         "order/resetLogisticsGetMark",
+        "order/createRejectedBill",
+        "order/isRejectedBillExist"
     ];
     const PUT = [