소스 검색

二次分拣增加与JAVA服务端通知交互

Zhouzhendong 3 년 전
부모
커밋
2e480ccaad

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

@@ -29,7 +29,6 @@ use App\Store;
 use App\UserWorkgroup;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Request;
-use Illuminate\Http\Response;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Validator;

+ 45 - 4
app/Http/Controllers/TestController.php

@@ -10,9 +10,11 @@ use App\Services\WaybillService;
 use App\User;
 use App\Waybill;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Hash;
 use Illuminate\Support\Facades\Http;
+use Zttp\Zttp;
 
 class TestController extends Controller
 {
@@ -35,10 +37,49 @@ class TestController extends Controller
     }
     public function test()
     {
-        $url = config('api.java.base').config('api.java.device.picking.getContainerOfWave');
-        $request = Http::get($url, ["container" => "1"]);
-        $result = $request->json();
-        dd($result);
+        $json = <<<json
+{
+                    "request": [
+                        {
+                            "ORDERNUMBERCODE": "ASN2205270586",
+                            "CUSTOMERID": "JIANSHANG",
+                            "ASNTYPE": "THRK",
+                            "ASNREFERENCE1": "92052644969",
+                            "ADDWHO": "WCS",
+                            "USERDEFINE1": "",
+                            "USERDEFINE2": "",
+                            "USERDEFINE3": "",
+                            "SKU_LIST": [
+                        {
+                            "ORDERNUMBERCODE": "ASN2205270586",
+                            "ASNLINENO": "1",
+                            "SKUCODE": "6213100205402",
+                            "QUANTITY": "1",
+                            "LOTATT04": "",
+                            "LOTATT05": "MJ-CP",
+                            "STATUS": "CC",
+                            "PRODUCTION DATE": "",
+                            "EXPIRATION DATE": "",
+                            "USERDEFINE1": "JIANSHANG02",
+                            "USERDEFINE2": "",
+                            "USERDEFINE3": "",
+                            "UNIQUE_CODE_LIST": []
+                        }
+                    ]
+                        }
+                    ]
+                }
+json;
+
+        $sendingJson = json_decode($json,true);
+        $url=url(config('api.flux.receive.new'));
+        try{
+            $response = Zttp::post($url, $sendingJson);
+            dd($response->json());
+        }catch (\Exception $exception){
+            Controller::logS(__METHOD__,'Exception_'.__FUNCTION__,'CURL请求异常:'.$exception->getMessage(),null);
+            dd($exception);
+        }
     }
 }
 

+ 29 - 10
app/Http/Controllers/api/thirdPart/haochuang/SortingController.php

@@ -13,6 +13,7 @@ use App\Services\LogService;
 use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OrderCommodityService;
 use App\Services\OrderService;
+use App\Services\WaveService;
 use App\SortingStation;
 use App\User;
 use App\UserToken;
@@ -63,25 +64,31 @@ class SortingController extends Controller
         $token = trim($request->input('token'));
         $station_id = $request->input('station_id');
         $batch_id = $request->input('batch_id');
+        app('LogService')->log("浩创",  "process", '分拨墙播种请求:'.json_encode($request->all()));
 
         // 二次分拣拆分波次
         $childIndex = null;
-        $arr = explode('-',$batch_id);
-        if (count($arr)==2){
-            $batch_id = $arr[0];
-            $childIndex = (int)$arr[1];
-            $request->offsetSet("batch_id",$batch_id);
-        }
+
+        $ownerId = null;// 货主ID
+        $warehouseId = null;// 仓库ID
+        $number = 0;// 总拣数量
         // 容器号获取波次
         if (strlen($batch_id) != 13 && substr($batch_id, 0, 1) != 'W') {
             // 请求JAVA端获取对应波次号
             $url = config('api.java.base').config('api.java.device.picking.getContainerOfWave');
             $get = Http::get($url, ["container" => $batch_id]);
             $result = $get->json();
-            if ($result != 200) {
+            if ($result["code"] != 200) {
                 return response()->json(['result'=>'failure','fail_info'=>$result["message"]])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
             }
             $request->offsetSet("batch_id",$result["data"]);
+        } else {
+            $arr = explode('-',$batch_id);
+            if (count($arr)==2){
+                $batch_id = $arr[0];
+                $childIndex = (int)$arr[1];
+                $request->offsetSet("batch_id",$batch_id);
+            }
         }
 
         $errors=$this->processValidator($request->all())->errors();
@@ -118,11 +125,18 @@ SQL;
         $ordersSorted=$orders->sortBy(function(Order $order){
             return $order->bin->number;
         });
-        $ordersSorted->each(function(Order $order)use(&$data,$request,$childIndex,$batch){
+        $ordersSorted->each(function(Order $order)use(&$data,$request,$childIndex,$batch,&$ownerId,&$warehouseId,&$number){
             if($order['status']=='取消')return;
+            $owner = $order->owner;
+            if ($ownerId == null && $owner != null) {
+                $ownerId = $owner->id;
+            }
+            if ($warehouseId == null) {
+                $warehouseId = $order['warehouse_id'];
+            }
             $orderData=[
                 'order_id'=>$order['code'],
-                'owner'=>$order->owner->code,
+                'owner'=>$owner->code,
                 'status'=>$order['status']=='未处理'?'available':$order['status'],
                 'created_at'=>$order['created_at']->toDateTimeString(),
                 'bin'=>(function()use($order,$childIndex,$batch){
@@ -136,7 +150,7 @@ SQL;
                 })(),
                 'barcodes'=>[]
             ];
-            $order->orderCommodities->each(function(OrderCommodity $orderCommodity)use(&$orderData,$request){
+            $order->orderCommodities->each(function(OrderCommodity $orderCommodity)use(&$orderData,$request,&$number){
                 $commodity=$orderCommodity->commodity;
                 if(!$commodity){
                     app('LogService')->log(__METHOD__, 'error' . __FUNCTION__, '播种位数据准备出错,找不到订单对应的Commodity id的对象'.$orderCommodity['commodity_id'].',是否表数据在波次生成后丢失?'.json_encode($request->all()));
@@ -147,6 +161,7 @@ SQL;
                 })->filter(function($code){
                     return $code&&(!preg_match('/[\x{4e00}-\x{9fa5}]/u',$code));
                 })->join(',');
+                $number += (int)$orderCommodity['amount'] ?? 0;
                 $orderData['barcodes'][]=[
                     'id'=>$orderCommodity['id']??'',
                     'barcode_id'=>$barcodeStr??'',
@@ -167,6 +182,10 @@ SQL;
 
         $station = SortingStation::findOrCreate($station_id);
         $station->setProcessingBatch($batch);
+
+        $messageId = $batch_id.($childIndex == null ? '' : '#'.$childIndex);
+        (new WaveService())->sendPiece("HC-ST-".$messageId, UserToken::getUser($token)->id ?? '0', $ownerId,
+                                            $warehouseId, date("Y-m-d H:i:s"), $number);
         return $data;
     }
 

+ 28 - 0
app/Services/WaveService.php

@@ -8,6 +8,7 @@ use App\OracleDOCWaveHeader;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
 use App\Traits\ServiceAppAop;
+use Illuminate\Support\Facades\Http;
 
 
 class WaveService
@@ -218,4 +219,31 @@ class WaveService
         $count = OracleDOCWaveHeader::whereIn('WaveNo', $ids)->where('UdfPrintFlag2', 'Y')->count();
         return $count == 0;
     }
+
+    public function sendPiece($messageId, $userId, $ownerId, $warehouseId, $date, $number) {
+        $url = config('api.java.base').config('api.java.piece.log.record');
+        $request = [
+            "user_type" => 0,
+            "job_type" => "二次分拣",
+            "job_name" => "二次分拣",
+            "form_number" => 1,
+
+            "piece_time" => $date,
+            "message_id" => $messageId,
+            "user_id" => $userId,
+            "warehouse_id" => $warehouseId,
+            "owner_id" => $ownerId,
+            "item_number" => $number,
+        ];
+        app('LogService')->log("二次分拣计件",  "通知服务端", json_encode($request));
+        $http = Http::post($url, $request);
+        if (!$http->successful()) {
+            app('LogService')->log("二次分拣计件",  "sendPiece", '发送失败:'.$http->body());
+            return;
+        }
+        $result = $http->json();
+        if ($result["code"] != 200) {
+            app('LogService')->log("二次分拣计件",  "sendPiece", '服务端错误:'.$http->body());
+        }
+    }
 }

+ 5 - 0
config/api.php

@@ -105,6 +105,11 @@ return [
             "picking" => [
                 "getContainerOfWave" => "api/device/check/picking/getContainerOfWave",
             ]
+        ],
+        "piece" => [
+            "log" => [
+                "record" => "api/piece/user/record/create",
+            ]
         ]
     ]
 ];