Kaynağa Gözat

称重管理-统计-导出数据纠正

Zhouzhendong 5 yıl önce
ebeveyn
işleme
fa2ba99b0e

+ 48 - 62
app/Http/Controllers/PackageController.php

@@ -234,79 +234,65 @@ class PackageController extends Controller
         return $validator;
     }
 
-//    public function syncBatch($batch_number,$weight,$max,$centre,$min,$date,$paperBox_id){
-////        $accomplishToWMS=new Api\thirdPart\flux\PackageController();
-////        $packageBatch=Package::where('batch_number',$batch_number)->first();
-//        $newValues = ['weight' => $weight];
-//        $newValues['batch_number']=$batch_number;
-//        if($max)$newValues['length']=$max;
-//        if($centre)$newValues['width']=$centre;
-//        if($min)$newValues['height']=$min;
-//        if($date)$newValues['weighed_at']=$date;
-//        if($paperBox_id)$newValues['paper_box_id']=$paperBox_id;
-//        if($max&&$centre&&$min){
-//            $newValues['bulk']=$max*$centre*$min;
-//        }
-////        $weightChanged=$packageBatch['weight']!=$weight;
-////        Package::where('batch_number',$batch_number)->update($newValues);
-////        $packageBatch['forceUpload']=$weightChanged;
-//        Controller::logS(__METHOD__,__FUNCTION__,"批量更新时批次号传入:{$batch_number}");
-////        $result=$accomplishToWMS->markWMSOnBatch($packageBatch['batch_number']);
-////        if ($result['result']){
-////            $newValues['status']='已上传';
-////            Controller::logS(__METHOD__,'SUCCESS_'.__FUNCTION__,'批量更改波次上传成功'.json_encode($packageBatch));
-////        }else{
-////            $newValues['status']='上传异常';
-////            Controller::logS(__METHOD__,'error_'.__FUNCTION__,'批量更改波次上传异常:'.$result['message'].json_encode($packageBatch));
-////        }picktotraceid
-//        $packagesInOracle=OracleDOCWaveDetails::where('doc_wave_details.waveno',$batch_number)
-//            ->leftJoin('act_allocation_details','act_allocation_details.orderno','doc_wave_details.orderno')
-//            ->get();
-//        foreach ($packagesInOracle as $packageInOracle) {
-//            $newValues['logistic_number']=$packageInOracle['picktotraceid'];
-//            $package = Package::where('logistic_number', $packageInOracle['picktotraceid'])->first();
-//            if(!$package){
-//                Package::create($newValues);
-//            }else{
-//                $package->fill($newValues);
-//                $package->update();
-//            }
-//        }
-////        Package::where('batch_number',$batch_number)->update($newValues);
-//
-//    }
-
     public function statisticsExport(Request $request){
         if(!Gate::allows('称重管理-查询')){ return '没有权限';  }
+        /** @var PackageStatisticsService $service */
+        $service = app('packageStatisticsService');
+
         if ($request->checkAllSign){
             $params = $request->input();
             unset($params['checkAllSign']);
-            $data = app('packageStatisticsService')->get($params);
+            $data = $service->get($params);
         }else{
             /**@var PackageStatisticsService */
-            $data = app('packageStatisticsService')->get(['owner_id'=>$request->data]);
+            $data = $service->get(['owner_id'=>$request->data]);
         }
+
+        $owners=app('ownerService')->getSelection();
+        $ownerTemp = [];
+        foreach ($owners as $owner){
+            $ownerTemp[$owner->id] = $owner->name;
+        }
+
+
+        $logisticsTemp = [];
+        $ps = [];
+        foreach ($data as $package){
+            if (!($logisticsTemp[$package->logistic_id] ?? false))$logisticsTemp[$package->logistic_id] = true;
+            if ($ps[$package->owner_id] ?? false){
+                $ps[$package->owner_id][$package->logistic_id] = $package->count;
+                $ps[$package->owner_id]["sum"] += (int)$package->count;
+            }else{
+                $ps[$package->owner_id] = [
+                    $package->logistic_id => $package->count,
+                    "sum" => (int)$package->count,
+                    "owner_id" => $package->owner_id,
+                    "owner_name" => $ownerTemp[$package->owner_id]
+                ];
+            }
+        }
+
         $column = ["货主","总计"];
-        $columnMap = ["货主"=>0,"总计"=>1];
-        $row = [];
-        $rowMap = [];
-        $coordinate = [];
-        foreach ($data as $value){
-            if ($value->owner_name && $value->logistic_name){
-                if (!isset($columnMap[$value->logistic_id])){
-                    array_push($column,$value->logistic_name);
-                    $columnMap[$value->logistic_id] = count($column)-1;
-                }
-                if (!isset($rowMap[$value->owner_id])){
-                    array_push($row,$value->owner_name);
-                    $rowMap[$value->owner_id] = count($row)-1 ;
-                }
-                if (isset($coordinate[$rowMap[$value->owner_id]])){
-                    $coordinate[$rowMap[$value->owner_id]][$columnMap[$value->logistic_id]] = (string)$value->count;
-                }else $coordinate[$rowMap[$value->owner_id]] = [0 => $value->owner_name,$columnMap[$value->logistic_id] => (string)$value->count];
+
+        $columnMap = [];
+        $logistics=app('logisticService')->getSelection();
+        foreach ($logistics as $index => $logistic){
+            if (!($logisticsTemp[$logistic->id] ?? false))unset($logistics[$index]);
+            else {
+                $columnMap[] = $logistic->id;
+                $column[] = $logistic->name;
+            }
+        }
+
+        $list = [];
+        foreach ($ps as $p){
+            $row = [$p["owner_name"],$p["sum"]];
+            foreach ($columnMap as $id){
+                $row[] = $p[$id] ?? 0;
             }
+            $list[] = $row;
         }
-        $post = Http::post(config('go.export.url'),['type'=>'packageStatistic','data'=>json_encode(["row"=>$column,"list"=>$coordinate],JSON_UNESCAPED_UNICODE)]);
+        $post = Http::post(config('go.export.url'),['type'=>'base','data'=>json_encode(["row"=>$column,"list"=>$list],JSON_UNESCAPED_UNICODE)]);
         if ($post->status() == 500){
             throw new Exception($post->header("Msg"));
         }

+ 13 - 2
app/Services/PackageStatisticsService.php

@@ -23,8 +23,8 @@ Class PackageStatisticsService
                 ->selectRaw('owner_id,logistic_id');
 
         $columnQueryRules=[
-            'date_start' => ['alias' => 'created_at','startDate' => " 00:00:00"],
-            'date_end' => ['alias' => 'created_at','endDate' => " 23:59:59"],
+            'created_at_start' => ['alias' => 'created_at','startDate' => ":00"],
+            'created_at_end' => ['alias' => 'created_at','endDate' => ":59"],
             'logistic_id' => ['multi' => ','],
             'owner_id' => ['multi' => ','],
         ];
@@ -36,4 +36,15 @@ Class PackageStatisticsService
         return $this->conditionQuery($params)->get();
     }
 
+    public function getPackageStatistic(array $params)
+    {
+        $query = $this->conditionQuery($params);
+        return DB::table(DB::raw("({$query->sql()}) AS p"))->selectRaw('p.*')
+            ->leftJoin('owners','p.owner_id','owners.id')
+            ->selectRaw('owners.name owner_name')
+            ->leftJoin('logistics','p.logistic_id','logistics.id')
+            ->selectRaw('logistics.name logistic_name')
+            ->get();
+    }
+
 }

+ 1 - 0
resources/js/queryForm/queryForm.js

@@ -1211,6 +1211,7 @@ const query = function getQueryForm(data) {
         let data = (window.location.search);
         // let data = decodeURIComponent(window.location.search);
         data = decodeURIComponent(data);
+        data.replace("\\+","%20");
         if (!!data) {
             data = (data.substr(1)).split('&');
             data = convertArrayToObj(data);

+ 3 - 5
resources/views/weight/package/statistics.blade.php

@@ -32,7 +32,7 @@
                     <th v-for="logistic in logistics">@{{ logistic.value }}</th>
                 </tr>
                <tr v-for="package in packages">
-                   <td>
+                    <td>
                         <input class="checkItem" type="checkbox" :value="package.owner_id" v-model="checkData">
                     </td>
                     <th class="text-muted">@{{ package.owner_name }}</th>
@@ -62,8 +62,6 @@
                     {name:'{{$owner->id}}', value: '{{$owner->name}}'},
                     @endforeach
                 ],
-                ownersQuery : [],
-                os : [],
                 logistics:[
                     @foreach($logistics as $logistic)
                     {name:'{{$logistic->id}}', value: '{{$logistic->name}}'},
@@ -74,7 +72,7 @@
             watch:{
                 checkData:{
                     handler(){
-                        if (this.checkData.length === this.os.length){
+                        if (this.checkData.length === this.packages.length){
                             document.querySelector('#all').checked = true;
                         }else {
                             document.querySelector('#all').checked = false;
@@ -104,7 +102,7 @@
             methods: {
                 checkAll(e){
                     if (e.target.checked){
-                        this.os.forEach((el)=>{
+                        this.packages.forEach((el)=>{
                             if (this.checkData.indexOf(el.owner_id) === '-1'){
                                 this.checkData.push(el.owner_id);
                             }

+ 1 - 1
serves/excelExportGo/api/controller/controller.go

@@ -43,7 +43,7 @@ func selectCreateFormat(params map[string]string) (row []interface{}, list [][]i
 	}
 	return
 }
-
+//packageStatistic
 func selectModule(params map[string]string) (row []interface{}, list [][]interface{}, mergeRow map[string]string, mergeColumn []string) {
 	var data []map[string]string
 	switch params["type"] {

+ 3 - 0
serves/excelExportGo/logs/2020-10-20.log

@@ -0,0 +1,3 @@
+
+[ERROR]   10:07:43
+   /api/controller/controller.go:184   称重统计数据json解析失败!