cqp 2 bulan lalu
induk
melakukan
0347562f4a

+ 117 - 24
app/Http/Controllers/Api/DingTalkController.php

@@ -3,7 +3,9 @@
 namespace App\Http\Controllers\Api;
 
 use App\Jobs\ProcessDataJob;
+use App\Model\DDEmployee;
 use App\Model\Record;
+use App\Model\U8State;
 use App\Service\DingCallbackCrypto;
 use App\Service\DingService;
 use Illuminate\Http\Request;
@@ -89,13 +91,14 @@ class DingTalkController extends BaseController
     }
 
     /**
-     * 钉钉事件回调
+     * 浙江 钉钉事件回调
      */
     public function dinCallback(Request $request)
     {
-        $token  = config('dingtalk.token');    // 钉钉事件订阅 token
-        $aesKey = config('dingtalk.aes_key');  // 钉钉事件订阅 aes_key
-        $corpid = config('dingtalk.app_key');  // 钉钉事件订阅 corpid
+        $type = DDEmployee::type_one;
+        $token  = config("dingtalk.{$type}.token");    // 钉钉事件订阅 token
+        $aesKey = config("dingtalk.{$type}.aes_key");  // 钉钉事件订阅 aes_key
+        $corpid = config("dingtalk.{$type}.app_key");
 
         $crypt = new DingCallbackCrypto($token, $aesKey, $corpid);
 
@@ -152,18 +155,124 @@ class DingTalkController extends BaseController
 
     private function settleData($type, $result, $processInstanceId, $staffId){
         try {
-//            ProcessDataJob::dispatch(Record::where('id',71)->first()->toArray())->onQueue(Record::$job);dd(1);
             $record = Record::where("del_time",0)
+                ->where('login_type', DDEmployee::type_one)
                 ->where('process_instance_id', $processInstanceId)
                 ->first();
             if(empty($record)) return;
 
             $record->userid = $staffId;
+
             switch ($type) {
-//                case 'start': // 审批实例开始
-//                    $record->del_time = 9; // 自定义标记,待审批
-//                    break;
+                case 'finish': // 审批正常结束(同意 / 拒绝)
+                    if ($result === 'agree') {
+                        $record->del_time = 2; // 成功
+                    } elseif ($result === 'refuse') {
+                        $record->del_time = 1; // 驳回
+                    }
+                    break;
+
+                case 'terminate': // 审批终止(发起人撤销)
+                    $record->del_time = 1; // 终止
+                    break;
 
+                case 'delete': // 审批实例删除
+                    $record->del_time = 1; // 删除
+                    break;
+            }
+
+            $record->save();
+
+            $record_array = $record->toArray();
+            if($record_array['del_time'] == 2) {
+                //通过后 =》 逻辑
+                ProcessDataJob::dispatch($record_array)->onQueue(Record::$job);
+            }elseif ($record_array['del_time'] == 1){
+                //其他环节 =》 更新表状态为中
+                U8State::updateOrCreate(
+                    ['order_number' => $record_array['order_number'], 'login_type' => $record_array['login_type'], 'type' => $record_array['type']],
+                    ['state' => U8State::state_two]
+                );
+            }
+
+        } catch (\Throwable $exception) {
+            Log::channel('apiLog')->info('钉钉回调处理数据保存异常', ['msg' => $exception->getMessage()]);
+        }
+    }
+
+    /**
+     * 杭州 钉钉事件回调
+     */
+    public function dinCallbackH(Request $request)
+    {
+        $type = DDEmployee::type_two;
+        $token  = config("dingtalk.{$type}.token");    // 钉钉事件订阅 token
+        $aesKey = config("dingtalk.{$type}.aes_key");  // 钉钉事件订阅 aes_key
+        $corpid = config("dingtalk.{$type}.app_key");
+
+        $crypt = new DingCallbackCrypto($token, $aesKey, $corpid);
+
+        try {
+            $encrypt = $request->input('encrypt');
+            $msgSignature = $request->get('msg_signature');
+            $timeStamp = $request->get('timestamp');
+            $nonce = $request->get('nonce');
+
+            // 1️⃣ 解密
+            $event = $crypt->getDecryptMsg($msgSignature, $timeStamp, $nonce, $encrypt);
+            $event = json_decode($event, true);
+//            Log::info('钉钉回调解密后的数据', $event);
+
+            // 2️⃣ 处理事件
+            if (isset($event['EventType'])) {
+                switch ($event['EventType']) {
+                    case 'bpms_instance_change':
+                        $processInstanceId = $event['processInstanceId'] ?? null;
+                        $result = $event['result'] ?? null;
+                        $type   = $event['type'] ?? null;   // start/finish/terminate/delete
+                        $staffId = $event['staffId'] ?? "";
+
+                        // 动作导致流程成功 或 流程终止
+                        $this->settleData($type, $result, $processInstanceId, $staffId);
+//                        Log::info('审批实例变更', compact('processInstanceId','result'));
+
+//                        Log::info("最后一个节点审核通过,审批完成", compact('processInstanceId'));
+//                        Log::info("审批流程被驳回或终止", compact('processInstanceId','result'));
+                        break;
+                    case 'bpms_task_change':
+                        $processInstanceId = $event['processInstanceId'] ?? null;
+                        $taskId = $event['taskId'] ?? null;
+                        $result = $event['result'] ?? null;
+                        $approverUserId = $event['staffId'] ?? null;
+
+                        // 捕获节点被驳回
+                        if ($result === 'refuse') {
+//                            Log::info("节点被驳回", compact('processInstanceId','taskId','approverUserId'));
+                        }
+                        break;
+                }
+            }
+
+            // 3️⃣ 返回加密 success
+            $res = $crypt->getEncryptedMap('success');
+            return response($res, 200)->header('Content-Type', 'application/json');
+
+        } catch (\Exception $e) {
+            Log::channel('apiLog')->info('钉钉回调解密异常', ['msg' => $e->getMessage()]);
+            return response()->json(['errcode'=>1, 'errmsg'=>'解密失败']);
+        }
+    }
+
+    private function settleDataH($type, $result, $processInstanceId, $staffId){
+        try {
+            $record = Record::where("del_time",0)
+                ->where('login_type', DDEmployee::type_two)
+                ->where('process_instance_id', $processInstanceId)
+                ->first();
+            if(empty($record)) return;
+
+            $record->userid = $staffId;
+            switch ($type) {
                 case 'finish': // 审批正常结束(同意 / 拒绝)
                     if ($result === 'agree') {
                         $record->del_time = 2; // 成功
@@ -189,21 +298,5 @@ class DingTalkController extends BaseController
         } catch (\Throwable $exception) {
             Log::channel('apiLog')->info('钉钉回调处理数据保存异常', ['msg' => $exception->getMessage()]);
         }
-
-//        try {
-//            $record = Record::where("del_time",0)
-//                ->where('process_instance_id', $processInstanceId)
-//                ->first();
-//            if(empty($record)) return;
-//
-//            if ($result === 'agree') {
-//                $record->del_time = 2; //成功
-//            }elseif ($result == "refuse") {
-//                $record->del_time = 1; //驳回
-//            }
-//            $record->save();
-//        }catch (\Throwable $exception){
-//            Log::channel('apiLog')->info('钉钉回调处理数据保存异常', ['msg' => $exception->getMessage()]);
-//        }
     }
 }

+ 26 - 0
app/Http/Controllers/Api/U8Controller.php

@@ -143,6 +143,19 @@ class U8Controller extends BaseController
         }
     }
 
+    public function inventoryDetail(Request $request)
+    {
+        $userData = $request->userData;
+        $service = new U8XkyServerService();
+        list($status,$data) = $service->inventoryDetail($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
     public function inventoryDel(Request $request)
     {
         $userData = $request->userData;
@@ -195,6 +208,19 @@ class U8Controller extends BaseController
         }
     }
 
+    public function vendorDetail(Request $request)
+    {
+        $userData = $request->userData;
+        $service = new U8XkyServerService();
+        list($status,$data) = $service->vendorDetail($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
     public function vendorDel(Request $request)
     {
         $userData = $request->userData;

+ 24 - 10
app/Jobs/ProcessDataJob.php

@@ -4,6 +4,7 @@ namespace App\Jobs;
 
 use App\Model\DDEmployee;
 use App\Model\Record;
+use App\Model\U8State;
 use App\Service\U8DatabaseServerService;
 use Illuminate\Bus\Queueable;
 use Illuminate\Contracts\Queue\ShouldQueue;
@@ -45,7 +46,10 @@ class ProcessDataJob implements ShouldQueue
     private function syncApprovedRecords($record)
     {
         try {
-            $service = new U8DatabaseServerService(['zt_database' => $record['database']]);
+            $LoginType = $record['login_type'];
+            $database = $record['database'];
+
+            $service = new U8DatabaseServerService(['zt_database' => $database]);
             if ($service->error) return [false, $service->error];
 
             $time = date("Y-m-d H:i:s");
@@ -54,21 +58,21 @@ class ProcessDataJob implements ShouldQueue
             if($record['del_time'] == 2){
                 $type = $record['type'];
                 $order_number = $record['order_number'];
-
                 $system_name = "system";
-                $name = DDEmployee::where('userid', $record['userid'])->value('name');
+                $name = DDEmployee::where('userid', $record['userid'])->where('login_type', $LoginType)->value('name');
                 if(! empty($name)) $system_name = $name;
-                if($type == 1){
+
+                if($type == Record::type_one){
                     $service->db->table("PO_Pomain")
                         ->where("cPOID", $order_number)
                         ->update([
                             "cVerifier" => $system_name,
-                            "iverifystateex"   => 1,
+                            "iverifystateex" => 1,
                             "cState" => 1,
                             "cAuditTime" => $time . ".000",
                             "cAuditDate" => $time1 . ".000",
                         ]);
-                }elseif($type == 2){
+                }elseif($type == Record::type_two){
                     $service->db->table("PU_AppVouch")
                         ->where("cCode", $order_number)
                         ->update([
@@ -76,7 +80,7 @@ class ProcessDataJob implements ShouldQueue
                             "cAuditTime" => $time . ".000",
                             "cAuditDate" => $time1 . ".000",
                         ]);
-                }else{
+                }elseif($type == Record::type_three){
                     $service->db->table("RdRecord01")
                         ->where("cCode", $order_number)
                         ->update([
@@ -84,11 +88,21 @@ class ProcessDataJob implements ShouldQueue
                             "dnverifytime" => $time . ".000",
                             "dVeriDate" => $time1 . ".000",
                         ]);
+                }elseif($type == Record::type_four){
+
+                }elseif($type == Record::type_five){
+
                 }
-            }
 
-            // 更新本地数据
-            Record::where("id", $record['id'])->update(['del_time' => 3]);
+                // 更新本地数据 通过状态
+                Record::where("id", $record['id'])->update(['del_time' => 3]);
+
+                // 更新状态为 通过状态
+                U8State::updateOrCreate(
+                    ['order_number' => $record['order_number'], 'login_type' => $record['login_type'], 'type' => $record['type']],
+                    ['state' => U8State::state_one]
+                );
+            }
 
             $service->close();
         } catch (\Throwable $e) {

+ 0 - 1
app/Jobs/WxProcessDataJob.php

@@ -3,7 +3,6 @@
 namespace App\Jobs;
 
 use App\Model\EnterpriseRecord;
-use App\Model\Record;
 use App\Service\EnterpriseWechatService;
 use Illuminate\Bus\Queueable;
 use Illuminate\Contracts\Queue\ShouldQueue;

+ 4 - 3
app/Model/Record.php

@@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Model;
 
 class Record extends Model
 {
+    protected $guarded = [];
     protected $table = "record";
     const CREATED_AT = 'crt_time';
     const UPDATED_AT = 'upd_time';
@@ -22,8 +23,8 @@ class Record extends Model
         self::type_one => '采购订单',
         self::type_two => '采购请购单',
         self::type_three => '采购入库单',
-        self::type_four => '存货',
-        self::type_five => '供应商',
+        self::type_four => '存货档案',
+        self::type_five => '供应商档案',
     ];
 
     const state_minus_one = -1;
@@ -35,6 +36,6 @@ class Record extends Model
         self::state_minus_one => '未发起审批',
         self::state_zero => '待审核',
         self::state_one => '审核通过',
-        self::state_two => '审核驳回',
+        self::state_two => '审核驳回|终止|删除',
     ];
 }

+ 40 - 0
app/Model/U8State.php

@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class U8State extends Model
+{
+    protected $guarded = [];
+    protected $table = "u8_state";
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+    const type_one = 1;
+    const type_two = 2;
+    const type_three = 3;
+    const type_four = 4;
+    const type_five = 5;
+
+    const type_name = [
+        self::type_one => '采购订单',
+        self::type_two => '采购请购单',
+        self::type_three => '采购入库单',
+        self::type_four => '存货档案',
+        self::type_five => '供应商档案',
+    ];
+
+    const state_minus_one = -1;
+    const state_zero = 0;
+    const state_one = 1;
+    const state_two = 2;
+
+    const state_name = [
+        self::state_minus_one => '未发起审批',
+        self::state_zero => '待审核',
+        self::state_one => '审核通过',
+        self::state_two => '审核驳回|终止|删除',
+    ];
+}

+ 44 - 9
app/Service/DingService.php

@@ -4,6 +4,7 @@ namespace App\Service;
 
 use App\Model\DDEmployee;
 use App\Model\Record;
+use App\Model\U8State;
 use Illuminate\Support\Facades\Redis;
 
 class DingService extends Service
@@ -114,7 +115,7 @@ class DingService extends Service
     {
         if(empty($data['type'])) return [false, '单据类型不能为空'];
         $type = $data['type'];
-        if(empty($data['order_number'])) return [false,'单号不能为空'];
+        if(empty($data['order_number'])) return [false,'单号不能为空'];
         [$success, $msg] = $this->checkCreateProcessInstance($data, $user);
         if(! $success) return [false, $msg];
 
@@ -152,26 +153,60 @@ class DingService extends Service
             'database' => $user['zt_database'],
             'order_number'=> $data['order_number'],
             'crt_time' => time(),
-            'process_instance_id' => $process_instance_id
+            'process_instance_id' => $process_instance_id,
+            'state' => Record::state_zero
         ]);
 
+        //保证
+        U8State::updateOrCreate(
+            ['order_number' => $data['order_number'], 'login_type' => $user['login_type'], 'type' => $type],
+            ['state' => U8State::state_zero]
+        );
+
         return [true, ''];
     }
 
     private function checkCreateProcessInstance($data, $user){
-        list($status,$msg) = $this->limitingSendRequestBackgExpire($data['order_number'].$data['type'].$user['zt_database']);
+        list($status,$msg) = $this->limitingSendRequestBackgExpire($data['order_number'].$data['type'].$user['login_type']);
         if(! $status) return [false,$msg];
 
         $type = $data['type'];
-        $login_type = $data['login_type'];
+        $login_type = $user['login_type'];
 
-        $bool = Record::where('del_time',0)
+//        // 1. 获取该单号最新的一条记录
+//        $lastRecord = Record::where('del_time', 0)
+//            ->where('type', $type)
+//            ->where('login_type', $login_type)
+//            ->where('order_number', $data['order_number'])
+//            ->latest('id') // 按 ID 倒序,取最新
+//            ->first(['state']); // 只取状态字段
+//
+//        // 2. 逻辑判断
+//        if ($lastRecord) {
+//            $text_o = Record::type_name[$type];
+//            // 如果状态是 0 (待审核) 或 1 (审核通过),拦截
+//            if (in_array($lastRecord->state, [Record::state_zero, Record::state_one])) {
+//                $text = Record::state_name[$lastRecord->state];
+//                return [false, $text_o . ' (' . $data['order_number'] . ') ' . $text . ',操作失败'];
+//            }
+//        }
+
+        // 1. 获取该单号最新的一条记录
+        $lastRecord = U8State::where('del_time', 0)
             ->where('type', $type)
             ->where('login_type', $login_type)
-            ->where('database', $user['zt_database'])
-            ->where('order_number',$data['order_number'])
-            ->exists();
-        if($bool) return [false, '单号' . $data['order_number'] . '已创建审批流'];
+            ->where('order_number', $data['order_number'])
+            ->first(['state']); // 只取状态字段
+
+        // 2. 逻辑判断
+        if ($lastRecord) {
+            $text_o = U8State::type_name[$type];
+            // 如果状态是 0 (待审核) 或 1 (审核通过),拦截
+            if (in_array($lastRecord->state, [U8State::state_zero, U8State::state_one])) {
+                $text = U8State::state_name[$lastRecord->state];
+                return [false, $text_o . ' (' . $data['order_number'] . ') 处于' . $text . ',操作失败'];
+            }
+        }
 
         return [true, ''];
     }

+ 36 - 7
app/Service/U8ServerService.php

@@ -6,6 +6,7 @@ use App\Model\DDEmployee;
 use App\Model\FieldData;
 use App\Model\Inventory;
 use App\Model\Record;
+use App\Model\U8State;
 use App\Model\Vendor;
 use Illuminate\Support\Facades\DB;
 
@@ -81,7 +82,7 @@ class U8ServerService extends Service
             ->orderBy('a.POID', 'desc');
 
         $list = $this->limit($model, '', $data);
-        $list = $this->fillAll($list, 1, $user['login_type']);
+        $list = $this->fillAll($list, U8State::type_one, $user['login_type']);
 
         return [true, $list];
     }
@@ -114,6 +115,7 @@ class U8ServerService extends Service
 
         if(empty($order)) return [false, '采购单不存在'];
         $order = (array) $order;
+        $order = $this->fillDetail($order, U8State::type_one, $user['login_type']);
 
         // 获取明细
         $detail = $this->databaseService->table('PO_Podetails as a')
@@ -185,7 +187,7 @@ class U8ServerService extends Service
             ->orderBy('a.ID','desc');
 
         $list = $this->limit($model,'',$data);
-        $list = $this->fillAll($list, 2, $user['login_type']);
+        $list = $this->fillAll($list, U8State::type_two, $user['login_type']);
 
         return [true , $list];
     }
@@ -212,6 +214,7 @@ class U8ServerService extends Service
 
         if(empty($order)) return [false, '采购请购单不存在'];
         $order = (array) $order;
+        $order = $this->fillDetail($order, U8State::type_two, $user['login_type']);
 
         $detail = $this->databaseService->table('PU_AppVouchs as a')
             ->leftJoin('Inventory as b', 'b.cInvCode', 'a.cInvCode')
@@ -286,7 +289,7 @@ class U8ServerService extends Service
             ->orderBy('a.ID','desc');
 
         $list = $this->limit($model,'',$data);
-        $list = $this->fillAll($list, 3, $user['login_type']);
+        $list = $this->fillAll($list, U8State::type_three, $user['login_type']);
 
         return [true , $list];
     }
@@ -324,6 +327,7 @@ class U8ServerService extends Service
 
         if(empty($order)) return [false, '采购入库单不存在'];
         $order = (array) $order;
+        $order = $this->fillDetail($order, U8State::type_three, $user['login_type']);
 
         $detail = $this->databaseService->table('rdrecords01 as a')
             ->leftJoin('Inventory as b', 'b.cInvCode', 'a.cInvCode')
@@ -405,16 +409,17 @@ class U8ServerService extends Service
     private function fillAll($list, $type, $login_type){
         if(empty($list['data'])) return $list;
 
-        $map = Record::where('del_time',0)
+        $map = U8State::where('del_time', 0)
             ->where('type', $type)
             ->where('login_type', $login_type)
-            ->whereIn('order_number',array_column($list['data'],'order_number'))
-            ->pluck('id','order_number')
+            ->whereIn('order_number', array_column($list['data'], 'order_number'))
+            ->pluck('state', 'order_number')
             ->toArray();
 
         foreach ($list['data'] as $key => $value){
             if(isset($map[$value->order_number])) {
-                $state = $value->state;
+                $m = $map[$value->order_number];
+                $state = $m['state'];
                 $state_title = Record::state_name[$state];
             }else{
                 $state = Record::state_minus_one;
@@ -427,6 +432,30 @@ class U8ServerService extends Service
         return $list;
     }
 
+    private function fillDetail($list, $type, $login_type){
+        if(empty($list)) return $list;
+
+        $map = U8State::where('del_time', 0)
+            ->where('type', $type)
+            ->where('login_type', $login_type)
+            ->where('order_number', $list['order_number'])
+            ->pluck('state', 'order_number')
+            ->toArray();
+
+        if(isset($map[$list['order_number']])) {
+            $m = $map[$list['order_number']];
+            $state = $m['state'];
+            $state_title = Record::state_name[$state];
+        }else{
+            $state = Record::state_minus_one;
+            $state_title = Record::state_name[$state];
+        }
+        $list['state'] = $state;
+        $list['state_title'] = $state_title;
+
+        return $list;
+    }
+
     public function stockList($data, $user)
     {
         try {

+ 36 - 15
app/Service/U8XkyServerService.php

@@ -6,6 +6,7 @@ use App\Model\DDEmployee;
 use App\Model\FieldData;
 use App\Model\Inventory;
 use App\Model\Record;
+use App\Model\U8State;
 use App\Model\Vendor;
 use Illuminate\Support\Facades\DB;
 
@@ -182,6 +183,14 @@ class U8XkyServerService extends Service
         return $model;
     }
 
+    public function inventoryDetail($data, $user){
+       if(empty($data['id'])) return [false, 'ID不能为空'];
+       list($status, $msg) = $this->inventoryList($data, $user);
+       $return = $msg['data'][0] ?? [];
+
+       return [true, $return];
+    }
+
     public function inventoryList($data, $user){
         $model = $this->inventoryCommon($data, $user);
         $list = $this->limit($model,'',$data);
@@ -193,12 +202,8 @@ class U8XkyServerService extends Service
     public function fillInventoryData($data, $user){
         if(empty($data['data'])) return $data;
 
-        $map = Record::where('del_time',0)
-            ->where('type', Record::type_four)
-            ->where('login_type', $user['login_type'])
-            ->whereIn('order_number',array_column($data['data'],'order_number'))
-            ->pluck('id','order_number')
-            ->toArray();
+        //状态
+        $map = $this->returnState($data, Record::type_four, $user['login_type']);
 
         $e_map = DDEmployee::whereIn('crt_id', array_unique(array_column($data['data'], 'crt_id')))
             ->where('login_type', $user['login_type'])
@@ -207,7 +212,6 @@ class U8XkyServerService extends Service
         foreach ($data['data'] as $key => $value){
             $data['data'][$key]['crt_name'] = $e_map[$value['crt_id']] ?? "";
             $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
-            $data['data'][$key]['status_title'] = Inventory::$name[$value['status']] ?? '';
             $data['data'][$key]['bSale'] = $value['bSale'] ? '是' : '否';
             $data['data'][$key]['bExpSale'] = $value['bExpSale'] ? '是' : '否';
             $data['data'][$key]['bPurchase'] = $value['bPurchase'] ? '是' : '否';
@@ -215,7 +219,8 @@ class U8XkyServerService extends Service
             $data['data'][$key]['bComsume'] = $value['bComsume'] ? '是' : '否';
 
             if(isset($map[$value['order_number']])) {
-                $state = $map[$value['order_number']];
+                $m = $map[$value['order_number']];
+                $state = $m['state'];
                 $state_title = Record::state_name[$state];
             }else{
                 $state = Record::state_minus_one;
@@ -380,12 +385,8 @@ class U8XkyServerService extends Service
     public function fillVendorData($data, $user){
         if(empty($data['data'])) return $data;
 
-        $map = Record::where('del_time',0)
-            ->where('type', Record::type_five)
-            ->where('login_type', $user['login_type'])
-            ->whereIn('order_number',array_column($data['data'],'order_number'))
-            ->pluck('id','order_number')
-            ->toArray();
+        //状态
+        $map = $this->returnState($data, Record::type_five, $user['login_type']);
 
         $e_map = DDEmployee::whereIn('crt_id', array_unique(array_column($data['data'], 'crt_id')))
             ->where('login_type', $user['login_type'])
@@ -396,7 +397,8 @@ class U8XkyServerService extends Service
             $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
 
             if(isset($map[$value['order_number']])) {
-                $state = $map[$value['order_number']];
+                $m = $map[$value['order_number']];
+                $state = $m['state'];
                 $state_title = Record::state_name[$state];
             }else{
                 $state = Record::state_minus_one;
@@ -409,6 +411,14 @@ class U8XkyServerService extends Service
         return $data;
     }
 
+    public function vendorDetail($data, $user){
+        if(empty($data['id'])) return [false, 'ID不能为空'];
+        list($status, $msg) = $this->vendorList($data, $user);
+        $return = $msg['data'][0] ?? [];
+
+        return [true, $return];
+    }
+
     public function vendorDel($data){
         if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
 
@@ -840,4 +850,15 @@ class U8XkyServerService extends Service
 
         return [true, $list];
     }
+
+    private function returnState($list, $type, $login_type){
+        if(empty($list['data'])) return [];
+
+        return U8State::where('del_time', 0)
+            ->where('type', $type)
+            ->where('login_type', $login_type)
+            ->whereIn('order_number', array_column($list['data'], 'order_number'))
+            ->pluck('state', 'order_number')
+            ->toArray();
+    }
 }

+ 2 - 0
routes/api.php

@@ -126,11 +126,13 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('inventoryAdd', 'Api\U8Controller@inventoryAdd');
     $route->any('inventoryEdit', 'Api\U8Controller@inventoryEdit');
     $route->any('inventoryDel', 'Api\U8Controller@inventoryDel');
+    $route->any('inventoryDetail', 'Api\U8Controller@inventoryDetail');
     $route->any('inventoryList', 'Api\U8Controller@inventoryList');
 
     //供应商新增编辑(到本地)
     $route->any('vendorAdd', 'Api\U8Controller@vendorAdd');
     $route->any('vendorEdit', 'Api\U8Controller@vendorEdit');
     $route->any('vendorDel', 'Api\U8Controller@vendorDel');
+    $route->any('vendorDetail', 'Api\U8Controller@vendorDetail');
     $route->any('vendorList', 'Api\U8Controller@vendorList');
 });