Ver Fonte

Merge remote-tracking branch 'origin/master'

gogs há 1 ano atrás
pai
commit
ba1d3284b9
40 ficheiros alterados com 1130 adições e 467 exclusões
  1. 27 0
      app/Exports/MultiSheetExport.php
  2. 30 0
      app/Exports/SingleSheetExport.php
  3. 8 8
      app/Http/Controllers/Api/FileUploadController.php
  4. 13 0
      app/Http/Controllers/Api/ProductInventoryController.php
  5. 17 0
      app/Http/Controllers/Api/SysMenuController.php
  6. 5 2
      app/Http/Middleware/CheckLogin.php
  7. 5 2
      app/Http/Middleware/CheckWx.php
  8. 1 1
      app/Jobs/ProcessDataJob.php
  9. 1 1
      app/Model/CustomerInfo.php
  10. 9 5
      app/Model/OrderOperation.php
  11. 6 2
      app/Model/ProductInventorySet.php
  12. 5 0
      app/Model/RoleMenu.php
  13. 15 4
      app/Model/SalesOrder.php
  14. 410 279
      app/Service/CheckService.php
  15. 19 29
      app/Service/ConstructionService.php
  16. 23 2
      app/Service/CustomerService.php
  17. 63 1
      app/Service/DeleteService.php
  18. 1 1
      app/Service/FileUploadService.php
  19. 44 16
      app/Service/InvoiceOrderService.php
  20. 1 1
      app/Service/OaService.php
  21. 80 32
      app/Service/ProductInventoryService.php
  22. 17 1
      app/Service/ProductService.php
  23. 26 0
      app/Service/PurchaseOrderService.php
  24. 13 0
      app/Service/ReturnExchangeOrderService.php
  25. 38 33
      app/Service/SalesOrderService.php
  26. 54 18
      app/Service/ScheduleService.php
  27. 15 0
      app/Service/Service.php
  28. 89 0
      app/Service/SysMenuService.php
  29. 13 2
      app/Service/TableHeadService.php
  30. 26 17
      app/Service/U8ServerService.php
  31. 15 0
      app/Service/Wx/Service.php
  32. 1 1
      config/header/37.php
  33. 2 2
      config/header/38.php
  34. 1 1
      config/header/43.php
  35. 17 2
      config/header/45.php
  36. 1 1
      config/logging.php
  37. 2 2
      config/nocheck.php
  38. 1 1
      config/oa.php
  39. 6 0
      routes/api.php
  40. 10 0
      routes/wx.php

+ 27 - 0
app/Exports/MultiSheetExport.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace App\Exports;
+
+
+use Maatwebsite\Excel\Concerns\WithMultipleSheets;
+
+class MultiSheetExport implements WithMultipleSheets
+{
+    protected $data;
+
+    public function __construct(array $data)
+    {
+        $this->data = $data;
+    }
+
+    public function sheets(): array
+    {
+        $sheets = [];
+
+        foreach ($this->data as $sheetName => $sheetData) {
+            $sheets[] = new SingleSheetExport($sheetData, $sheetName);
+        }
+
+        return $sheets;
+    }
+}

+ 30 - 0
app/Exports/SingleSheetExport.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Exports;
+
+
+use Maatwebsite\Excel\Concerns\FromCollection;
+use Maatwebsite\Excel\Concerns\WithTitle;
+use Illuminate\Support\Collection;
+
+class SingleSheetExport implements FromCollection,WithTitle
+{
+    protected $data;
+    protected $sheetName;
+
+    public function __construct(array $data, string $sheetName)
+    {
+        $this->data = $data;
+        $this->sheetName = $sheetName;
+    }
+
+    public function collection()
+    {
+        return new Collection($this->data);
+    }
+
+    public function title(): string
+    {
+        return $this->sheetName;
+    }
+}

+ 8 - 8
app/Http/Controllers/Api/FileUploadController.php

@@ -22,13 +22,13 @@ class FileUploadController extends BaseController
     //获取文件的位置
     public function getFile($file_name){
         $path = storage_path() . "/app/public/upload_files/".$file_name;
-        $ext = '';
-        foreach (FileUploadService::FILE_TYPE as $value){
-            if(file_exists($path. '.' . $value)){
-                $ext = $value;
-            }
-        }
-        if(empty($ext)) return '';
-        return response()->file($path.'.'.$ext);
+//        $ext = '';
+//        foreach (FileUploadService::FILE_TYPE as $value){
+//            if(file_exists($path. '.' . $value)){
+//                $ext = $value;
+//            }
+//        }
+//        if(empty($ext)) return ''; .'.'.$ext
+        return response()->file($path);
     }
 }

+ 13 - 0
app/Http/Controllers/Api/ProductInventoryController.php

@@ -60,4 +60,17 @@ class ProductInventoryController extends BaseController
             return $this->json_return(201,$data);
         }
     }
+
+    public function getMySetting(Request $request)
+    {
+        $service = new ProductInventoryService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->getMySetting($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
 }

+ 17 - 0
app/Http/Controllers/Api/SysMenuController.php

@@ -69,4 +69,21 @@ class SysMenuController extends BaseController
             return $this->json_return(201,$data);
         }
     }
+
+    public function menuExport(Request $request){
+        $service = new SysMenuService();
+        list($status,$data) = $service->export($request->all());
+
+        if($status){
+            return $this->json_return(200,'',['file'=>$data]);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    //获取文件的位置
+    public function getExport($file_name){
+        $path = storage_path() . "/app/public/export/".$file_name;
+        return response()->file($path)->deleteFileAfterSend(true);
+    }
 }

+ 5 - 2
app/Http/Middleware/CheckLogin.php

@@ -3,6 +3,7 @@
 namespace App\Http\Middleware;
 
 use App\Model\Depart;
+use App\Model\ProductInventorySet;
 use App\Service\EmployeeService;
 use Closure;
 use App\Service\TokenService;
@@ -57,8 +58,10 @@ class CheckLogin
         $data['head'] = $return[5] ?? [];
         //是否是总公司下的人
         $data['is_behind_main'] = $return[6] ?? 0;
-        //是否库存校验
-        $data['is_check_stock'] = true;
+        //是否库存校验(默认校验)
+        $my_top = $data['depart_top'][0] ?? [];
+        $is_check_stock = empty($my_top['is_stock']) ? ProductInventorySet::type_one : $my_top['is_stock'];
+        $data['is_check_stock'] = $is_check_stock;
 
         //写入user信息
         $request->userData = $data;

+ 5 - 2
app/Http/Middleware/CheckWx.php

@@ -3,6 +3,7 @@
 namespace App\Http\Middleware;
 
 use App\Model\Employee;
+use App\Model\ProductInventorySet;
 use App\Model\WxEmployee;
 use App\Service\EmployeeService;
 use App\Service\Wx\WxEmployeeService;
@@ -77,8 +78,10 @@ class CheckWx
             $data['head'] = $return[5] ?? [];
             //是否是总公司下的人
             $data['is_behind_main'] = $return[6] ?? 0;
-            //是否库存校验
-            $data['is_check_stock'] = true;
+            //是否库存校验(默认校验)
+            $my_top = $data['depart_top'][0] ?? [];
+            $is_check_stock = empty($my_top['is_stock']) ? ProductInventorySet::type_one : $my_top['is_stock'];
+            $data['is_check_stock'] = $is_check_stock;
 
             $request->userData = $data;
         }

+ 1 - 1
app/Jobs/ProcessDataJob.php

@@ -44,7 +44,7 @@ class ProcessDataJob implements ShouldQueue
 
             //调用同步方法
             $this->$function();
-        } catch (\Exception $e) {
+        } catch (\Throwable $e) {
             $this->delete();
         }
     }

+ 1 - 1
app/Model/CustomerInfo.php

@@ -11,7 +11,7 @@ class CustomerInfo extends Model
     const UPDATED_AT = 'upd_time';
     protected $dateFormat = 'U';
     const type_one = 1; // 客户联系方式
-    const type_two = 2; // 销售sa/负责 
+    const type_two = 2; // 负责人
     const type_three = 3; // 协同人
     const type_four = 4; // 联系人
     const type_five = 5; // 图片

+ 9 - 5
app/Model/OrderOperation.php

@@ -13,6 +13,7 @@ class OrderOperation extends Model
     protected $dateFormat = 'U';
 
     //审批操作对应的数值
+    const zero = 0;
     const one = 1;
     const two = 2;
     const three = 3;
@@ -32,10 +33,12 @@ class OrderOperation extends Model
     const seventeen = 17;
     const eighteen = 18;
     const nineteen = 19;
+    const twenty = 20;
 
     public static $type = [
-        self::one => '指派销售',
-        self::two => '指派总社或分社',
+        self::zero => '系统设置变更 ',
+        self::one => '线上派单',
+        self::two => '门店派单',
         self::three => '合同确认',
         self::four => '合同弃审',
         self::five => '合同公司完结',
@@ -47,11 +50,12 @@ class OrderOperation extends Model
         self::eve => '施工单审核通过',
         self::twl => '施工单弃审',
         self::thi => '采购确认',
-        self::fourteen => '采购入库审核通过',
+        self::fourteen => '采购入库',
         self::fif => '采购入库弃审',
         self::sixty => '合同修改负责人',
         self::seventeen => '合同修改协同人',
-        self::eighteen => '合同分配人',
-        self::nineteen => '合同移交人',
+        self::eighteen => '合同分配',
+        self::nineteen => '合同移交',
+        self::twenty => '采购确认弃审',
     ];
 }

+ 6 - 2
app/Model/ProductInventorySet.php

@@ -11,6 +11,10 @@ class ProductInventorySet extends UseScopeBaseModel
     const CREATED_AT = 'crt_time';
     const UPDATED_AT = 'upd_time';
     protected $dateFormat = 'U';
-    const type_one = 1;//校验锁定
-    const type_two = 2;//不校验锁定
+    const type_one = 1;//校验库存
+    const type_two = 2;//不校验证库存
+    public static $type_name = [
+        self::type_one => '是',
+        self::type_two => '否',
+    ];
 }

+ 5 - 0
app/Model/RoleMenu.php

@@ -14,4 +14,9 @@ class RoleMenu extends Model
     const type_one = 1;//个人
     const type_two = 2;//部门
     const type_three = 3;//所有
+    public static $type_name = [
+        self::type_one => '我创建的',
+        self::type_two => '我的部门权限范围内',
+        self::type_three => '所有',
+    ];
 }

+ 15 - 4
app/Model/SalesOrder.php

@@ -53,8 +53,19 @@ class SalesOrder extends UseScopeBaseModel
         self::State_zero => '未确认',
         self::State_one => '待确认',
         self::State_two => '已确认',
-        self::State_three => '已派销售',
-        self::State_four => '已派总设或分社',
+        self::State_three => '已线上派单',
+        self::State_four => '已门店派单',
+        self::State_five => '已下施工单',
+        self::State_six => '退换货',
+        self::State_seven => '公司完结',
+        self::State_eight => '客户完结',
+    ];
+    public static $state_2 = [
+        self::State_zero => '未确认',
+        self::State_one => '待确认',
+        self::State_two => '已确认',
+        self::State_three => '已确认',
+        self::State_four => '已门店派单',
         self::State_five => '已下施工单',
         self::State_six => '退换货',
         self::State_seven => '公司完结',
@@ -65,8 +76,8 @@ class SalesOrder extends UseScopeBaseModel
     const State2_zero = 0;//未发货
     const State2_one = 1;//已发货
     public static $state2 = [
-        self::State2_zero => '未发货',
-        self::State2_one => '已发货',
+        self::State2_zero => '未确认',
+        self::State2_one => '已确认',
     ];
 
     //发货状态

Diff do ficheiro suprimidas por serem muito extensas
+ 410 - 279
app/Service/CheckService.php


+ 19 - 29
app/Service/ConstructionService.php

@@ -75,6 +75,11 @@ class ConstructionService extends Service
             ConstructionProductInfo::where('del_time',0)
                 ->where('construction_id',$data['id'])
                 ->update(['del_time' => $time]);
+            $old = ConstructionFile::where('del_time',0)
+                ->where('construction_id',$data['id'])
+                ->select('file')
+                ->get()->toArray();
+            $old = array_column($old,'file');
             ConstructionFile::where('del_time',0)
                 ->where('construction_id',$data['id'])
                 ->update(['del_time' => $time]);
@@ -131,6 +136,7 @@ class ConstructionService extends Service
 
             if(! empty($data['schedule_info_id'])) ScheduleInfo::where('id',$data['schedule_info_id'])->update(['is_use' => 1]);
 
+            $new = [];
             if(! empty($data['file'])){
                 $insert = [];
                 foreach ($data['file'] as $value){
@@ -142,6 +148,7 @@ class ConstructionService extends Service
                         'mark' => $value['mark'] ?? "",
                         'crt_time' => $time,
                     ];
+                    $new[]= $value['url'];
                 }
                 ConstructionFile::insert($insert);
             }
@@ -152,6 +159,8 @@ class ConstructionService extends Service
             return [false,$exception->getMessage()];
         }
 
+        $this->delStorageFile($old, $new);
+
         return [true,''];
     }
 
@@ -298,6 +307,12 @@ class ConstructionService extends Service
             ConstructionInfo::where('del_time',0)
                 ->where('construction_id',$data['id'])
                 ->update(['del_time' => time()]);
+            $old = ConstructionFile::where('del_time',0)
+                ->where('construction_id',$data['id'])
+                ->select('file')
+                ->get()->toArray();
+            $old = array_column($old,'file');
+
             ConstructionFile::where('del_time',0)
                 ->where('construction_id',$data['id'])
                 ->update(['del_time' => time()]);
@@ -324,6 +339,8 @@ class ConstructionService extends Service
             return [false,$exception->getMessage()];
         }
 
+        $this->delStorageFile($old);
+
         return [true,''];
     }
 
@@ -347,6 +364,8 @@ class ConstructionService extends Service
         }
         if(empty($construction)) return [false,'施工订单不存在或已被删除'];
         $construction = $construction->toArray();
+        $construction['state_title'] = Construction::$name[$construction['state']] ?? '';
+        $construction['pq_state_title'] = Construction::$pq_name[$construction['pq_state']] ?? '';
         $address = '';
         if(! empty($construction['address1'])) {
             $tmp = json_decode($construction['address1'],true);
@@ -560,8 +579,6 @@ class ConstructionService extends Service
 //            if(empty($data['construction_contact'])) return [false,'联系方式不能为空'];
 //            if(empty($data['address1']) || empty($data['address2'])) return [false,'地址不能为空'];
         }
-        //校验排班 todo
-//        if(empty($data['schedule_id']) ||empty($data['day_stamp']) || empty($data['day_start_stamp']) || empty($data['day_end_stamp'])) return [false,'排班时间信息不能为空'];
 
         //所属部门 以及  顶级部门
         if(empty($data['depart_id'])) {
@@ -620,17 +637,6 @@ class ConstructionService extends Service
                 ->where('end_time', '>=', $data['start_time'])
                 ->exists();
             if($bool) return [false,'合同:' . $sale['order_number'] . '在' . $start_time . '——' . $end_time . '已下施工单'];
-
-//            $schedule = ScheduleInfo::where('del_time',0)
-//                ->where('day',$data['day_stamp'])
-//                ->where('start_time',$data['day_start_stamp'])
-//                ->where('end_time',$data['day_end_stamp'])
-//                ->where('is_use',ScheduleInfo::not_use)
-//                ->first();
-//            if(! empty($schedule)) return [false,'该时间段排班已满或不存在!'];
-//            $data['schedule_info_id'] = $schedule->id;
-//            list($status,$msg) = $this->limitingSendRequestBackg(ScheduleInfo::limit_key . $schedule->id);
-//            if(! $status) return [false,'操作频繁,请稍等!'];
         }else{
             if(empty($data['id'])) return [false,'ID不能为空'];
             $bool = Construction::where('del_time',0)
@@ -640,22 +646,6 @@ class ConstructionService extends Service
                 ->where('end_time', '>=', $data['start_time'])
                 ->exists();
             if($bool)  return [false,'合同:' . $sale['order_number'] . '在' . $start_time . '——' . $end_time . '已下施工单'];
-
-//            $construction = Construction::where('id',$data['id'])->first();
-//            if(empty($construction)) return [false,'施工单不存在或已被删除'];
-//            $construction = $construction->toArray();
-//            if($construction['day_stamp'] != $data['day_stamp'] || $construction['day_start_stamp'] != $data['day_start_stamp'] && $construction['day_end_stamp'] != $data['day_end_stamp']) {
-//                $schedule = ScheduleInfo::where('del_time',0)
-//                    ->where('day',$data['day_stamp'])
-//                    ->where('start_time',$data['day_start_stamp'])
-//                    ->where('end_time',$data['day_end_stamp'])
-//                    ->where('is_use',ScheduleInfo::not_use)
-//                    ->first();
-//                if(! empty($schedule)) return [false,'该时间段排班已满或不存在!'];
-//                $data['schedule_info_id'] = $schedule->id;
-//                list($status,$msg) = $this->limitingSendRequestBackg(ScheduleInfo::limit_key . $schedule->id);
-//                if(! $status) return [false,'操作频繁,请稍等!'];
-//            }
         }
 
         return [true, [$product_submit, $product_save]];

+ 23 - 2
app/Service/CustomerService.php

@@ -51,6 +51,12 @@ class CustomerService extends Service
             $model->save();
             $time = time();
 
+            $old = CustomerInfo::where('del_time',0)
+                ->where('customer_id',$data['id'])
+                ->whereIn('type',[CustomerInfo::type_five,CustomerInfo::type_six])
+                ->select('file')
+                ->get()->toArray();
+            $old = array_column($old,'file');
             CustomerInfo::where('del_time',0)
                 ->where('customer_id',$data['id'])
                 ->update(['del_time' => $time]);
@@ -108,6 +114,7 @@ class CustomerService extends Service
                 CustomerInfo::insert($insert);
             }
 
+            $new = [];
             if(! empty($data['img'])){
                 $insert = [];
                 foreach ($data['img'] as $value){
@@ -118,6 +125,7 @@ class CustomerService extends Service
                         'name' => $value['name'],
                         'crt_time' => $time,
                     ];
+                    $new[] = $value['url'];
                 }
                 CustomerInfo::insert($insert);
             }
@@ -132,6 +140,7 @@ class CustomerService extends Service
                         'name' => $value['name'],
                         'crt_time' => $time,
                     ];
+                    $new[] = $value['url'];
                 }
                 CustomerInfo::insert($insert);
             }
@@ -142,6 +151,8 @@ class CustomerService extends Service
             return [false,$exception->getMessage()];
         }
 
+        $this->delStorageFile($old, $new);
+
         return [true,''];
     }
 
@@ -287,6 +298,13 @@ class CustomerService extends Service
             Customer::where('id',$data['id'])->update([
                 'del_time'=> time()
             ]);
+            $old = CustomerInfo::where('del_time',0)
+                ->where('customer_id',$data['id'])
+                ->whereIn('type',[CustomerInfo::type_five,CustomerInfo::type_six])
+                ->select('file')
+                ->get()->toArray();
+            $old = array_column($old,'file');
+
             CustomerInfo::where('del_time',0)
                 ->where('customer_id',$data['id'])
                 ->update(['del_time' => time()]);
@@ -299,6 +317,8 @@ class CustomerService extends Service
             return [false,$exception->getMessage()];
         }
 
+        $this->delStorageFile($old);
+
         return [true,''];
     }
 
@@ -561,8 +581,9 @@ class CustomerService extends Service
         $customer_info_map = [];
         if(! empty($ergs['customer_detail'])){
             $customer_info = CustomerInfo::where('del_time',0)
-                ->where('customer_id',array_column($data['data'],'customer_id'))
-                ->where('contact_type','contact_info','customer_id')
+                ->whereIn('customer_id',array_column($data['data'],'id'))
+                ->where('contact_type','>',0)
+                ->select('contact_type','contact_info','customer_id')
                 ->get()->toArray();
             $basic_maps = BasicType::where('id',array_unique(array_column($customer_info,'contact_type')))->pluck('title','id')->toArray();
             foreach ($customer_info as $key=>$value){

+ 63 - 1
app/Service/DeleteService.php

@@ -3,6 +3,8 @@
 namespace App\Service;
 
 use App\Model\Construction;
+use App\Model\Customer;
+use App\Model\CustomerInfo;
 use App\Model\Employee;
 use App\Model\OrderOperation;
 use App\Model\SalesOrder;
@@ -89,7 +91,10 @@ class DeleteService extends Service
             DB::beginTransaction();
             if($data['type'] == 1){
                 $this->fpSaleOrderMan($data,$user);
+            }elseif ($data['type'] == 2){
+                $this->fpCustomerMan($data,$user);
             }
+
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -123,6 +128,30 @@ class DeleteService extends Service
         }
     }
 
+    public function fpCustomerMan($data,$user){
+        $time = time();
+        if(! empty($data['man'])){
+            $insert = [];
+            foreach ($data['man'] as $value){
+                $insert[] = [
+                    'customer_id' => $data['id'],
+                    'data_id' => $value,
+                    'type' => CustomerInfo::type_two,
+                    'crt_time' => $time,
+                ];
+            }
+            CustomerInfo::insert($insert);
+
+//            $order = Customer::where('id',$data['id'])->first();
+//            $order = $order->toArray();
+//            (new OrderOperationService())->add([
+//                'order_number' => $order['order_number'],
+//                'msg' => OrderOperation::$type[OrderOperation::eighteen] ?? "",
+//                'type' => OrderOperation::eighteen
+//            ],$user);
+        }
+    }
+
     public function yj($data,$user){
         if(empty($data['id']) || empty($data['type']) || empty($data['man'])) return [false, '必填参数不能为空!'];
 
@@ -130,7 +159,10 @@ class DeleteService extends Service
             DB::beginTransaction();
             if($data['type'] == 1){
                 $this->yjSaleOrderMan($data,$user);
+            }elseif ($data['type'] == 2){
+                $this->yjCustomerMan($data,$user);
             }
+
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -170,6 +202,35 @@ class DeleteService extends Service
         }
     }
 
+    public function yjCustomerMan($data,$user){
+        $time = time();
+
+        CustomerInfo::where('del_time',0)
+            ->where('customer_id',$data['id'])
+            ->where('type', CustomerInfo::type_two)
+            ->update(['del_time' => $time]);
+        if(! empty($data['man'])){
+            $insert = [];
+            foreach ($data['man'] as $value){
+                $insert[] = [
+                    'customer_id' => $data['id'],
+                    'data_id' => $value,
+                    'type' => CustomerInfo::type_two,
+                    'crt_time' => $time,
+                ];
+            }
+            CustomerInfo::insert($insert);
+
+//            $order = Customer::where('id',$data['id'])->first();
+//            $order = $order->toArray();
+//            (new OrderOperationService())->add([
+//                'order_number' => $order['order_number'],
+//                'msg' => OrderOperation::$type[OrderOperation::nineteen] ?? "",
+//                'type' => OrderOperation::nineteen
+//            ],$user);
+        }
+    }
+
     public function pq($data,$user){
         list($status,$msg) = $this->pqRule($data,$user);
         if(! $status) return [false,$msg];
@@ -193,6 +254,7 @@ class DeleteService extends Service
                 'day_stamp' => $data['day_stamp'],
                 'day_start_stamp' => $data['day_start_stamp'],
                 'day_end_stamp' => $data['day_end_stamp'],
+                'pq_state' => Construction::STATE_ONE
             ]);
 
             if(! empty($data['schedule_info_id'])) ScheduleInfo::where('id',$data['schedule_info_id'])->update(['is_use' => 1]);
@@ -224,7 +286,7 @@ class DeleteService extends Service
                 ->where('end_time',$data['day_end_stamp'])
                 ->where('is_use',ScheduleInfo::not_use)
                 ->first();
-            if(! empty($schedule_info)) return [false,'该时间段排班已满或不存在!'];
+            if(empty($schedule_info)) return [false,'该时间段排班已满或不存在!'];
             $data['schedule_info_id'] = $schedule_info->id;
             list($status,$msg) = $this->limitingSendRequestBackg(ScheduleInfo::limit_key . $data['schedule_info_id']);
             if(! $status) return [false,'操作频繁,请稍等!'];

+ 1 - 1
app/Service/FileUploadService.php

@@ -41,6 +41,6 @@ class FileUploadService extends Service
         // 使用我们新建的uploads本地存储空间(目录)
         Storage::disk('public')->put('upload_files/'.$filename, file_get_contents($realPath));
 
-        return [true,'/api/uploadFiles/'.$file_name];
+        return [true,'/api/uploadFiles/'.$filename];
     }
 }

+ 44 - 16
app/Service/InvoiceOrderService.php

@@ -30,14 +30,16 @@ class InvoiceOrderService extends Service
             DB::beginTransaction();
             $material_model = InvoiceOrder::where('order_number',$data['order_number'])->first();
             $material_model->sales_order_id = $data['sales_order_id'];
-            $material_model->send = $data['send'];
-            $material_model->send_time = $data['send_time'];
-            $material_model->take = $data['take'];
-            $material_model->take_address = $data['take_address'];
-            $material_model->take_phone = $data['take_phone'];
-            $material_model->logistics_company = $data['logistics_company'];
-            $material_model->logistics_number = $data['logistics_number'];
-            $material_model->mark = $data['mark'];
+            $material_model->send = $data['send'] ?? 0;
+            $material_model->send_time = $data['send_time'] ?? 0;
+            $material_model->take = $data['take'] ?? "";
+            $material_model->take_address = $data['take_address'] ?? "";
+            $material_model->take_phone = $data['take_phone'] ?? "";
+            $material_model->logistics_company = $data['logistics_company'] ?? "";
+            $material_model->logistics_number = $data['logistics_number'] ?? "";
+            $material_model->depart_id = $data['depart_id'] ?? 0;
+            $material_model->top_depart_id = $data['top_depart_id'] ?? 0;
+            $material_model->mark = $data['mark'] ?? "";
             $material_model->storehouse_id = $data['storehouse_id'];
             $material_model->save();
 
@@ -86,16 +88,16 @@ class InvoiceOrderService extends Service
             $material_model = new InvoiceOrder();
             $material_model->order_number = $data['order_number'];
             $material_model->sales_order_id = $data['sales_order_id'];
-            $material_model->send = $data['send'];
-            $material_model->send_time = $data['send_time'];
-            $material_model->take = $data['take'];
-            $material_model->take_address = $data['take_address'];
-            $material_model->take_phone = $data['take_phone'];
-            $material_model->logistics_company = $data['logistics_company'];
-            $material_model->logistics_number = $data['logistics_number'];
+            $material_model->send = $data['send'] ?? 0;
+            $material_model->send_time = $data['send_time'] ?? 0;
+            $material_model->take = $data['take'] ?? "";
+            $material_model->take_address = $data['take_address'] ?? "";
+            $material_model->take_phone = $data['take_phone'] ?? "";
+            $material_model->logistics_company = $data['logistics_company'] ?? "";
+            $material_model->logistics_number = $data['logistics_number'] ?? "";
             $material_model->depart_id = $data['depart_id'] ?? 0;
             $material_model->top_depart_id = $data['top_depart_id'] ?? 0;
-            $material_model->mark = $data['mark'];
+            $material_model->mark = $data['mark'] ?? "";
             $material_model->crt_id = $user['id'];
             $material_model->storehouse_id = $data['storehouse_id'];
             $material_model->save();
@@ -306,6 +308,7 @@ class InvoiceOrderService extends Service
     public function orderRule(&$data, $user, $is_check = true){
         if($this->isEmpty($data,'send')) return [false,'发货人不能为空!'];
         if($this->isEmpty($data,'product')) return [false,'产品不能为空!'];
+        if(empty($data['logistics_number'])) return [false,'物流单号不能为空'];
         if(empty($data['storehouse_id'])) return [false,'请选择仓库'];
         if(! empty($data['send_time'])) $data['send_time'] = $this->changeDateToDateMin($data['send_time']);
         if(! empty($data['sales_order_id'])) {
@@ -380,4 +383,29 @@ class InvoiceOrderService extends Service
 
         return $product_save;
     }
+
+    //分社向总社采购的合同的发货单号
+    public function getInvoiceData($data){
+        $sale_order = SalesOrder::where('del_time',0)
+            ->whereIn('contact_order_no', array_column($data,'order_number'))
+            ->select('contact_order_no','id')
+            ->get()->toArray();
+        if(empty($sale_order)) return [];
+        $sale_order_map = array_column($sale_order,'contact_order_no','id');
+
+        $invoice = InvoiceOrder::where('del_time',0)
+            ->whereIn('sales_order_id',array_column($sale_order,'id'))
+            ->select('sales_order_id','order_number','logistics_number')
+            ->get()->toArray();
+
+        $return = [];
+        foreach ($invoice as $value){
+            if(isset($sale_order_map[$value['sales_order_id']])){
+                $purchase_order_number = $sale_order_map[$value['sales_order_id']];
+                $return[$purchase_order_number][] = $value['logistics_number'];
+            }
+        }
+
+        return $return;
+    }
 }

+ 1 - 1
app/Service/OaService.php

@@ -637,8 +637,8 @@ class OaService extends Service
                     'oa_report_order_id' => $report->id,
                 ];
             }
+            OaReportOrderEmployee::insert($list);
         }
-        OaReportOrderEmployee::insert($list);
     }
 
     public function returnOa($order_no, $type, $opt_case)

+ 80 - 32
app/Service/ProductInventoryService.php

@@ -9,6 +9,7 @@ use App\Model\Depart;
 use App\Model\InOutRecord;
 use App\Model\InvoiceOrder;
 use App\Model\InvoiceOrderInfo;
+use App\Model\OrderOperation;
 use App\Model\Product;
 use App\Model\ProductCategory;
 use App\Model\ProductInventory;
@@ -93,24 +94,28 @@ class ProductInventoryService extends Service
         return $return;
     }
 
+    //暂时关闭 没用
     public static function is_check(&$user,$data){
+        return;
         //是否校验库存
         $top_depart_id = $user['head']['id'] ?? 0;//总公司id
-        if($data['top_depart_id'] == $top_depart_id) $user['is_check_stock'] = false;
+        if($data['top_depart_id'] == $top_depart_id) {
+            $user['is_check_stock'] = false;
+        }else{
+            $set = ProductInventorySet::where('top_depart_id',$data['top_depart_id'])
+                ->where('del_time',0)
+                ->first();
+            if(! empty($set) && ! $set->param_one) $user['is_check_stock'] = false;
+        }
     }
 
     //更新锁定库存
     //$user 当前登录人的信息
     //$submit_total (提交的数据)  $save_total(保存过的数据)
     public static function changeLockNumber($user, $submit_total = [], $save_total = []){
-        if(empty($user['is_check_stock'])) return; //不校验库存
+        if($user['is_check_stock'] == ProductInventorySet::type_two) return; //不校验库存
         if(empty($submit_total) && empty($save_total)) return;
 
-        //是否使用锁定库存校验  默认使用
-        $depart = array_shift($user['rule_depart']);
-        $is_stock = empty($depart['is_stock']) ? 1 : $depart['is_stock'];
-        if($is_stock == ProductInventorySet::type_two) return;
-
         //产品数扣减
         if(! empty($save_total)){
             foreach ($save_total as $key => $value){
@@ -133,45 +138,49 @@ class ProductInventoryService extends Service
 
     //比较库存
     public static function compareStock($user, $product_id = [],$product_submit = [], $product_save = []){
-        if(empty($user['is_check_stock'])) return [true,'']; //不校验库存
+        if($user['is_check_stock'] == ProductInventorySet::type_two) return [true,'']; //不校验库存
         if(empty($product_id) || empty($product_submit)) return [false,'比较参数不能为空'];
 
         //库存
         $array = ProductInventory::whereIn('product_id', $product_id)
             ->select('id','product_id','number','crt_time','lock_number','storehouse_id')
             ->get()->toArray();
-        if(empty($array)) return [false,'产品库存数据不存在'];
+        if(empty($array)) return [false,'产品库存不存在'];
+        //产品库存字典
         $stock = [];
         foreach ($array as $value){
             $key = $value['product_id'] . ',' . $value['storehouse_id'];
             $stock[$key] = $value;
         }
 
-        $pro = Product::whereIn('id',$product_id)
+        //仓库
+        $store_map = Storehouse::whereIn('id',array_unique(array_column($array,'storehouse_id')))
             ->pluck('title','id')
             ->toArray();
 
-        //是否使用锁定库存校验  默认使用
-        $depart = array_shift($user['rule_depart']);
-        $is_stock = empty($depart['is_stock']) ? 1 : $depart['is_stock'];
-
+        //产品字典
+        $pro = Product::whereIn('id',$product_id)
+            ->pluck('title','id')
+            ->toArray();
         foreach ($product_submit as $key => $value){
             $tmp = explode(',',$key);
+            //产品ID
             $product_id = $tmp[0];
+            //仓库id
+            $storehouse_id = $tmp[1];
+            $storehouse_title = $store_map[$storehouse_id] ?? "";
+            //产品名称
             $pro_title = $pro[$product_id] ?? '';
             if(! $pro_title) return [false,'异常产品数据'];
-            if(! isset($stock[$key])) return [false,'产品:'. $pro_title .'库存不存在'];
+            if(! isset($stock[$key])) return [false,'当前仓库' . $storehouse_title .' 的产品:'. $pro_title .'暂无库存'];
+            //产品库存
             $stock_product = $stock[$key];
 
-            if($is_stock == ProductInventorySet::type_one){
-                //校验锁定库存
-                $save_data = $product_save[$key] ?? 0;//已保存数量
-                $tmp_lock = ($stock_product['lock_number'] > 0 ? $stock_product['lock_number'] : 0) - $save_data;
-                $number = $stock_product['number'] - ($tmp_lock > 0 ? $tmp_lock : 0);
-            }else{
-                $number = $stock_product['number'];
-            }
-            if($value > $number) return [false, $pro_title. '数量不足,当前数量:' . $number];
+            //校验 =》 锁定库存
+            $save_data = $product_save[$key] ?? 0;//已保存数量
+            $tmp_lock = ($stock_product['lock_number'] > 0 ? $stock_product['lock_number'] : 0) - $save_data;
+            $number = $stock_product['number'] - ($tmp_lock > 0 ? $tmp_lock : 0);
+            if($value > $number) return [false, $pro_title. '数量不足,当前仓库:'. $storehouse_title . '的有效库存数量:' . $number];
         }
 
         return [true,''];
@@ -370,27 +379,66 @@ class ProductInventoryService extends Service
     //库存设置
     public function productInventorySet($data, $user){
         if(empty($data['id'])) return [false, 'ID不能为空'];
+        $set = ProductInventorySet::where('id',$data['id'])->first();
+        if(empty($set)) return [false,'系统设置不存在或已被删除'];
 
+        $msg = "";
         if(isset($data['param_one'])){
-            ProductInventorySet::where('id',$data['id'])
-                ->update(['param_one' => $data['param_one']]);
+            if(! isset(ProductInventorySet::$type_name[$data['param_one']])) return [false,'系统设置参数错误'];
+            if($set->param_one != $data['param_one']) {
+                $set->param_one = $data['param_one'];
+                $msg .= "库存校验状态变更为:" . ProductInventorySet::$type_name[$data['param_one']];
+            }
         }
 
         if(isset($data['param_two'])){
             $res = $this->checkNumber($data['param_two']);
             if(! $res) return [false, '整单扣除率请输入不超过两位小数并且大于0的数值'];
-            ProductInventorySet::where('id',$data['id'])
-                ->update(['param_two' => $data['param_two']]);
+            if($set->param_two != $data['param_two']) {
+                $set->param_two = $data['param_two'];
+                $msg .= ",整单扣除率变更为:" . $data['param_two'];
+            }
         }
 
         if(isset($data['param_three'])){
             $res = $this->checkNumber($data['param_three']);
-            if(! $res) return [false, '比例请输入不超过两位小数并且大于0的数值'];
-            if($data['param_three'] < 3) return [false,'比例不能小于3%'];
-            ProductInventorySet::where('id',$data['id'])
-                ->update(['param_three' => $data['param_three']]);
+            if(! $res) return [false, '施工费用比例请输入不超过两位小数并且大于0的数值'];
+            if($data['param_three'] < 3) return [false,'施工费用比例不能小于3%'];
+            if($set->param_three != $data['param_three']) {
+                $set->param_three = $data['param_three'];
+                $msg .= ",施工费用比例变更为:" . $data['param_three'];
+            }
+        }
+
+        if(! empty($msg)){
+            $set->save();
+            (new OrderOperationService())->add([
+                'order_number' => $data['id'],
+                'msg' => OrderOperation::$type[OrderOperation::zero] . $msg,
+                'type' => OrderOperation::zero
+            ],$user);
         }
 
         return [true, ''];
     }
+
+    //获取每个账号对应的系统设置
+    public function getMySetting($data, $user){
+        //顶级部门
+        $depart = ! empty($user['depart_top'][0]) ? $user['depart_top'][0]: [];
+        $depart_id = $depart['depart_id'] ?? 0;
+
+        $model = new ProductInventorySet();
+        $model = $model->where('del_time',0)
+            ->select('id','top_depart_id','param_one','param_two','param_three')
+            ->orderby('id', 'desc');
+        if($depart_id) $model->where('top_depart_id',$depart_id);
+        $list = $model->get()->toArray();
+
+        $map = Depart::whereIn('id',array_column($list,'top_depart_id'))->pluck('title','id')->toArray();
+        foreach ($list as $key => $value){
+            $list[$key]['top_depart_title'] = $map[$value['top_depart_id']] ?? "";
+        }
+        return [true, $list];
+    }
 }

+ 17 - 1
app/Service/ProductService.php

@@ -208,10 +208,16 @@ class ProductService extends Service
                 $models->save();
             }
 
+            $old = ProductInfo::where('del_time',0)
+                ->where('product_id',$data['id'])
+                ->select('file')
+                ->get()->toArray();
+            $old = array_column($old,'file');
             ProductInfo::where('del_time',0)
                 ->where('product_id',$data['id'])
                 ->update(['del_time' => $time]);
 
+            $new = [];
             if(! empty($data['img'])){
                 $insert = [];
                 foreach ($data['img'] as $value){
@@ -222,10 +228,10 @@ class ProductService extends Service
                         'name' => $value['name'],
                         'crt_time' => $time,
                     ];
+                    $new[] = $value['url'];
                 }
                 ProductInfo::insert($insert);
             }
-
             if(! empty($data['file'])){
                 $insert = [];
                 foreach ($data['file'] as $value){
@@ -236,6 +242,7 @@ class ProductService extends Service
                         'name' => $value['name'],
                         'crt_time' => $time,
                     ];
+                    $new[] = $value['url'];
                 }
                 ProductInfo::insert($insert);
             }
@@ -263,6 +270,8 @@ class ProductService extends Service
             return [false,$exception->getMessage()];
         }
 
+        $this->delStorageFile($old, $new);
+
         return [true,''];
     }
 
@@ -375,6 +384,12 @@ class ProductService extends Service
                 ->where('del_time',0)
                 ->update(['del_time' => $time]);
 
+            $old = ProductInfo::where('del_time',0)
+                ->where('product_id',$data['id'])
+                ->select('file')
+                ->get()->toArray();
+            $old = array_column($old,'file');
+
             ProductInfo::where('del_time',0)
                 ->where('product_id',$data['id'])
                 ->update(['del_time' => $time]);
@@ -391,6 +406,7 @@ class ProductService extends Service
             return [false,$exception->getMessage()];
         }
 
+        $this->delStorageFile($old,[]);
         return [true,''];
     }
 

+ 26 - 0
app/Service/PurchaseOrderService.php

@@ -75,9 +75,16 @@ class PurchaseOrderService extends Service
                 PurchaseOrderInfo::insert($sub);
             }
 
+            $old = PurchaseOrderFile::where('del_time',0)
+                ->where('purchase_order_id',$data['id'])
+                ->whereIn('type',[PurchaseOrderFile::type_one])
+                ->select('file')
+                ->get()->toArray();
+            $old = array_column($old,'file');
             PurchaseOrderFile::where('order_number',$data['order_number'])
                 ->where('del_time',0)
                 ->update(['del_time' => time()]);
+            $new = [];
             if(! empty($data['file'])){
                 $insert = [];
                 foreach ($data['file'] as $value){
@@ -89,6 +96,7 @@ class PurchaseOrderService extends Service
                         'name' => $value['name'],
                         'crt_time' => $time,
                     ];
+                    $new[] = $value['url'];
                 }
                 PurchaseOrderFile::insert($insert);
             }
@@ -99,6 +107,8 @@ class PurchaseOrderService extends Service
             return [false,$e->getMessage()];
         }
 
+        $this->delStorageFile($old,$new);
+
         return [true,''];
     }
 
@@ -282,6 +292,13 @@ class PurchaseOrderService extends Service
             PurchaseOrderInfo::where('order_number',$data['order_number'])->where('del_time',0)->update([
                 'del_time'=>time()
             ]);
+            $old = PurchaseOrderFile::where('del_time',0)
+                ->where('purchase_order_id',$order['id'])
+                ->whereIn('type',[PurchaseOrderFile::type_one])
+                ->select('file')
+                ->get()->toArray();
+            $old = array_column($old,'file');
+
             PurchaseOrderFile::where('order_number',$data['order_number'])
                 ->where('del_time',0)
                 ->update(['del_time' => time()]);
@@ -293,6 +310,8 @@ class PurchaseOrderService extends Service
             return [false,$e->getMessage()];
         }
 
+        $this->delStorageFile($old);
+
         return [true,''];
     }
 
@@ -411,6 +430,8 @@ class PurchaseOrderService extends Service
         }
         //获取金额列表
         $money = (new BookingListService())->getAllAmount(array_column($data['data'],'id'), BookingList::data_type_two);
+        //获取发货信息
+        $invoice_map = (new InvoiceOrderService())->getInvoiceData($data['data']);
         foreach ($data['data'] as $key => $value){
             $supplier_tmp = $supplier_map[$value['supplier']] ?? [];
             $data['data'][$key]['crt_time'] = $value['crt_time'] ? date("Y-m-d H:i:s",$value['crt_time']) : '';
@@ -439,6 +460,11 @@ class PurchaseOrderService extends Service
             $data['data'][$key]['fee3'] = $fee2;
             //最终金额
             $data['data'][$key]['fee4'] = $value['purchase_total'] + $fee4 - $fee3;
+
+            //发货信息 分社向总社采购
+            $invoice_state = "未发货";
+            if(! empty($invoice_map[$value['order_number']])) $invoice_state = implode(',',$invoice_map[$value['order_number']]);
+            $data['data'][$key]['state_message'] = "订单状态:" . $data['data'][$key]['state_title'] . "\n"."是否发货:" . $invoice_state;
         }
 
         return $data;

+ 13 - 0
app/Service/ReturnExchangeOrderService.php

@@ -275,6 +275,19 @@ class ReturnExchangeOrderService extends Service
             $id = $this->getDataId($search,$user,$data);
             $model->whereIn('data_id',$id);
         }
+        if(! empty($data['time_type'])) {
+            if($data['time_type'] == 1) {
+                $start = strtotime('today');
+                $end = strtotime('tomorrow') - 1;
+            }elseif ($data['time_type'] == 2){
+                $start = strtotime('this week',strtotime('today'));
+                $end = strtotime('this week +6 days 23:59:59', strtotime('today'));
+            }
+            if(! empty($start) && ! empty($end)) {
+                $model->where('crt_time','>=',$start);
+                $model->where('crt_time','<=',$end);
+            }
+        }
 
         $list = $this->limit($model,'',$data);
         $list = $this->fillListData($list);

+ 38 - 33
app/Service/SalesOrderService.php

@@ -75,6 +75,13 @@ class SalesOrderService extends Service
             $model->save();
             $time = time();
 
+            $old = SalesOrderInfo::where('del_time',0)
+                ->where('sales_order_id',$data['id'])
+                ->whereIn('type',[SalesOrderInfo::type_four])
+                ->select('file')
+                ->get()->toArray();
+            $old = array_column($old,'file');
+
             SalesOrderInfo::where('del_time',0)
                 ->where('sales_order_id',$data['id'])
                 ->update(['del_time' => $time]);
@@ -121,6 +128,7 @@ class SalesOrderService extends Service
                 SalesOrderInfo::insert($insert);
             }
 
+            $new = [];
             if(! empty($data['file'])){
                 $insert = [];
                 foreach ($data['file'] as $value){
@@ -131,6 +139,7 @@ class SalesOrderService extends Service
                         'type' => SalesOrderInfo::type_four,
                         'crt_time' => $time,
                     ];
+                    $new[] = $value['url'];
                 }
                 SalesOrderInfo::insert($insert);
             }
@@ -165,6 +174,8 @@ class SalesOrderService extends Service
             return [false,$exception->getMessage()];
         }
 
+        $this->delStorageFile($old, $new);
+
         if(! empty($data['check'])) {
             list($status,$msg) = (new CheckService())->checkAll([
                 "id" => $data['id'],
@@ -341,6 +352,14 @@ class SalesOrderService extends Service
 
             SalesOrder::where('del_time',0)
                 ->where('id',$data['id'])->update(['del_time'=> time()]);
+
+            $old = SalesOrderInfo::where('del_time',0)
+                ->where('sales_order_id',$data['id'])
+                ->whereIn('type',[SalesOrderInfo::type_four])
+                ->select('file')
+                ->get()->toArray();
+            $old = array_column($old,'file');
+
             SalesOrderInfo::where('del_time',0)
                 ->where('sales_order_id',$data['id'])
                 ->update(['del_time' => time()]);
@@ -358,6 +377,8 @@ class SalesOrderService extends Service
             return [false,$exception->getMessage()];
         }
 
+        $this->delStorageFile($old);
+
         return [true,''];
     }
 
@@ -391,6 +412,8 @@ class SalesOrderService extends Service
             $sales['order_type'],
             $sales['car_type'],
             $sales['pay_way'],
+            $sales['install_method'],
+            $sales['install_position'],
         ];
         $basic_map = BasicType::whereIn('id',$array)
             ->pluck('title','id')
@@ -401,6 +424,8 @@ class SalesOrderService extends Service
             $sales[$key]['order_type_title'] = $basic_map[$value['order_type']] ?? '';
             $sales[$key]['car_type_title'] = $basic_map[$value['car_type']] ?? '';
             $sales[$key]['pay_way_title'] = $basic_map[$value['pay_way']] ?? '';
+            $sales[$key]['install_method_title'] = $basic_map[$value['install_method']] ?? '';
+            $sales[$key]['install_position_title'] = $basic_map[$value['install_position']] ?? '';
         }
         $sales = $sales[0];
 
@@ -758,7 +783,12 @@ class SalesOrderService extends Service
             $data['data'][$key]['product'] = $product[$value['id']] ?? [];
             $data['data'][$key]['fee'] = $fee[$value['id']] ?? "";
             if($value['sales_order_type'] == SalesOrder::Order_type_one){
-                $data['data'][$key]['state_title'] = SalesOrder::$state[$value['state']] ?? '';
+                if($value['model_type'] == SalesOrder::Model_type_four){
+                    $state = SalesOrder::$state[$value['state']] ?? '';
+                }else{
+                    $state = SalesOrder::$state_2[$value['state']] ?? '';
+                }
+                $data['data'][$key]['state_title'] = $state;
             }else{
                 $data['data'][$key]['state_title'] = SalesOrder::$state2[$value['state']] ?? '';
             }
@@ -810,18 +840,10 @@ class SalesOrderService extends Service
             DB::beginTransaction();
             $time = time();
 
-            if(empty($data['is_company'])){
-                SalesOrder::where('del_time',0)->where('id',$msg['id'])->update([
-                    'state' => SalesOrder::State_three,
-                    'dispatch_time_first' => $time,
-                ]);
-            }else{
-                SalesOrder::where('del_time',0)->where('id',$msg['id'])->update([
-                    'state' => SalesOrder::State_four,
-                    'dispatch_time_first' => $time,
-                    'dispatch_time_second' => $time,
-                ]);
-            }
+            SalesOrder::where('del_time',0)->where('id',$msg['id'])->update([
+                'state' => SalesOrder::State_three,
+                'dispatch_time_first' => $time,
+            ]);
 
             SeeRange::where('del_time',0)
                 ->where('data_id',$msg['id'])
@@ -857,18 +879,6 @@ class SalesOrderService extends Service
                 SeeRange::insert($insert);
             }
 
-            if(! empty($data['is_company'])){
-                $insert = [];
-                $insert[] = [
-                    'data_id' => $msg['id'],
-                    'data_type' => SeeRange::type_seven,
-                    'param_id' => $data['is_company'],
-                    'type' => SeeRange::data_three,
-                    'crt_time' => $time,
-                ];
-                SeeRange::insert($insert);
-            }
-
             (new OrderOperationService())->add([
                 'order_number' => $msg['order_number'],
                 'msg' => OrderOperation::$type[OrderOperation::one],
@@ -905,11 +915,6 @@ class SalesOrderService extends Service
         if(! $bool) return [false,'合同产品不能为空'];
         if(empty($data['dispatch_depart_one']) && empty($data['dispatch_employee'])) return [false, '请指派部门或人员'];
 
-        //如果是分社的合同 派销售以后直接 分社结束
-        $top_depart_id = $user['head'] ?? [];
-        $top_depart_id = $top_depart_id['id'] ?? 0;
-        if($top_depart_id != $sale['top_depart_id']) $data['is_company'] = $sale['top_depart_id'];
-
         return [true, $sale];
     }
 
@@ -987,7 +992,7 @@ class SalesOrderService extends Service
         if(empty($sale)) return [false,'合同不存在或已被删除'];
         $sale = $sale->toArray();
         if($sale['sales_order_type'] != SalesOrder::Order_type_one) return [false,'非安装件合同,操作失败'];
-        if($sale['state'] < SalesOrder::State_three) return [false,'合同还未指派销售,操作失败'];
+        if($sale['state'] < SalesOrder::State_three) return [false,'请确认合同状态,操作失败'];
         if($sale['state'] > SalesOrder::State_four) return [false,'请确认合同状态,操作失败'];
         $product = SalesOrderProductInfo::where('del_time',0)
             ->where('sales_order_id',$data['id'])
@@ -1054,11 +1059,11 @@ class SalesOrderService extends Service
 
         $invoice = InvoiceOrder::where('del_time',0)
             ->whereIn('sales_order_id',$search_id)
-            ->select('sales_order_id','order_number')
+            ->select('sales_order_id','order_number','logistics_number')
             ->get()->toArray();
         $invoice_array = [];
         foreach ($invoice as $value){
-            $invoice_array[$value['sales_order_id']][] = $value['order_number'];
+            $invoice_array[$value['sales_order_id']][] = $value['logistics_number'];
         }
 
         return $invoice_array;

+ 54 - 18
app/Service/ScheduleService.php

@@ -379,7 +379,9 @@ class ScheduleService extends Service
     }
 
     public function getScheduleSetting($data,$user){
-        if(empty($data['schedule'])) return [true,''];
+        $result['time'] = [];
+        $result['time_detail'] = [];
+        if(empty($data['schedule'])) return [true,$result];
         // 获取指定年月的开始日期时间戳
         $startTimestamp = strtotime($data['schedule'] . "-01");
         // 获取下个月的开始日期时间戳,然后减去一秒得到本月的结束日期时间戳
@@ -391,7 +393,7 @@ class ScheduleService extends Service
             ->where('end_time', '<=', $endTimestamp)
             ->select('id','mark','start_time','end_time')
             ->get()->toArray();
-        if(empty($schedule)) return [true,''];
+        if(empty($schedule)) return [true,$result];
         $schedule_array = $schedule_map = [];
         foreach ($schedule as $value){
             for ($i = $value['start_time']; $i <= $value['end_time']; $i += 86400) { // 每天86400秒
@@ -400,33 +402,67 @@ class ScheduleService extends Service
             }
         }
 
-        $schedule_detail_list = ScheduleDetail::where('del_time',0)
-            ->whereIn('schedule_id',array_column($schedule,'id'))
-            ->select('schedule_id','num','start_time','end_time')
+        $schedule_id = array_column($schedule,'id');
+        $schedule_detail_info_list = ScheduleInfo::where('del_time',0)
+            ->whereIn('schedule_id',$schedule_id)
+            ->select('schedule_id','day','start_time','end_time')
+            ->where('is_use',ScheduleInfo::not_use)
             ->get()->toArray();
-        if(empty($schedule_detail_list)) return [true,''];
-        $schedule_detail_list_map = [];
-        foreach ($schedule_detail_list as $value){
-            $schedule_detail_list_map[$value['schedule_id']][] = $value;
+        $schedule_detail_info_list_map = [];
+        $count = [];
+        if(! empty($schedule_detail_info_list)) {
+            foreach ($schedule_detail_info_list as $value){
+                $keys = $value['schedule_id'] . $value['start_time'] . $value['end_time'];
+                if(isset($count[$keys])) continue;
+                $count[$keys] = 1;
+                $schedule_detail_info_list_map[$value['schedule_id']][] = [
+                    "schedule_id" => $value['schedule_id'],
+                    "day" => date('Y-m-d',$value['day']),
+                    "start_time" => date("H:i",$value['start_time']),
+                    "end_time" => date("H:i",$value['end_time']),
+                    "day_stamp" => $value['day'],
+                    "day_start_stamp" => $value['start_time'],
+                    "day_end_stamp" => $value['end_time'],
+                ];
+            }
         }
+
+        //每个设置时间的数据
         $return = [];
         foreach ($schedule_map as $key => $value){
-            if(isset($schedule_detail_list_map[$key])){
+            if(isset($schedule_detail_info_list_map[$key])){
                 foreach ($value as $v){
-                    $return[] = [
-                        'time' => $v,
-                        'detail' => $schedule_detail_list_map[$key]
-                    ];
+                    $tmp = [];
+                    foreach ($schedule_detail_info_list_map[$key] as $vv){
+                        if($v == $vv['day']){
+                            $tmp[] = [
+                                "start_time" => $vv['start_time'],
+                                "end_time" => $vv['end_time'],
+                                "schedule_id" => $vv['schedule_id'],
+                                "day_stamp" => $vv['day_stamp'],
+                                "day_start_stamp" => $vv['day_start_stamp'],
+                                "day_end_stamp" => $vv['day_end_stamp'],
+                            ];
+                        }
+                    }
+                    if(! empty($tmp)){
+                        $return[$v] = [
+                            'time' => $v,
+                            'detail' => $tmp
+                        ];
+                    }
                 }
             }
         }
 
-        foreach ($schedule as $key => $value){
-            $schedule[$key]['detail'] = $schedule_detail_list_map[$value['id']] ?? [];
+        //已满日期
+        $full = [];
+        foreach ($schedule_array as $value){
+            if(! isset($return[$value])) $full[] = $value;
         }
 
-        $result['time'] = $schedule_array;
-        $result['detail'] = $return;
+        $result['time'] = $full;
+        $result['time_detail'] = array_values($return);
 
         return [true, $result];
     }

+ 15 - 0
app/Service/Service.php

@@ -6,6 +6,7 @@ namespace App\Service;
 use App\Jobs\OperationLog;
 use App\Model\Employee;
 use Illuminate\Support\Facades\Redis;
+use Illuminate\Support\Facades\Storage;
 
 /**
  * 公用的公共服务
@@ -461,4 +462,18 @@ class Service
 
         return true;
     }
+
+    public function delStorageFile($old, $new = [], $dir = "upload_files/"){
+        foreach ($old as $value){
+            if(! in_array($value, $new)){
+                $filename_rep = "/api/uploadFiles/";
+                $filename = str_replace($filename_rep, "", $value);
+                $filePath = $dir . $filename;
+                if (Storage::disk('public')->exists($filePath)) {
+                    // 文件存在 进行删除操作
+                    Storage::disk('public')->delete($filePath);
+                }
+            }
+        }
+    }
 }

+ 89 - 0
app/Service/SysMenuService.php

@@ -2,12 +2,19 @@
 
 namespace App\Service;
 
+use App\Exports\ExportRule;
+use App\Exports\MultiSheetExport;
+use App\Exports\MyExport;
 use App\Model\Employee;
+use App\Model\Role;
 use App\Model\RoleMenu;
 use App\Model\RoleMenuButton;
 use App\Model\SysMenu;
 use App\Model\SysMenuButton;
 use Illuminate\Support\Facades\DB;
+use Maatwebsite\Excel\Excel;
+use Maatwebsite\Excel\Files\TemporaryFileFactory;
+use Maatwebsite\Excel\Writer;
 
 class SysMenuService extends Service
 {
@@ -257,4 +264,86 @@ class SysMenuService extends Service
         }
         return $data;
     }
+
+    public function export($data){
+        //(共有的)  菜单 =》 按钮
+        $sys_menu = SysMenu::where('del_time',0)
+            ->select('title','uri','parent_id','sort','id','is_authority')
+            ->orderBy('sort','desc')
+            ->get()->toArray();
+        $sys_menu_button = $this->fillMenuButton($sys_menu);
+
+        $role = Role::where('del_time',0)
+            ->select('id','title')
+            ->orderBy('id','desc')
+            ->get()->toArray();
+        $role_menu = RoleMenu::where('del_time',0)
+            ->whereIn('role_id',array_column($role,'id'))
+            ->select('menu_id','role_id','type')
+            ->get()->toArray();
+        $role_menu_map = [];
+        foreach ($role_menu as $value){
+            $role_menu_map[$value['role_id']][] = $value;
+        }
+
+        $role_menu_button = RoleMenuButton::where('del_time',0)
+            ->whereIn('role_id',array_column($role,'id'))
+            ->select('menu_id','role_id','button_id')
+            ->get()->toArray();
+        $role_menu_button_map = [];
+        foreach ($role_menu_button as $value){
+            $role_menu_button_map[$value['role_id']][] = $value;
+        }
+
+        $result = [];
+        foreach ($role as $value){
+            $tmp = $sys_menu_button;
+            $role_menu_tmp = $role_menu_map[$value['id']] ?? [];
+            $role_menu_button_tmp = $role_menu_button_map[$value['id']] ?? [];
+            $menu_button = [];
+            $data_array = [];
+            $data_array[] = ['菜单名称','是否勾选菜单','菜单按钮','数据范围'];
+            foreach ($role_menu_button_tmp as $v){
+                $menu_button[$v['menu_id']][] = $v['button_id'];
+            }
+            foreach ($tmp as $k => $v){
+                $v['has_menu'] = 0;
+                $v['type'] = 0;
+                foreach ($role_menu_tmp as $v2){
+                    //菜单
+                    if($v2['menu_id'] == $v['id']) {
+                        $v['has_menu'] = 1;
+                        $v['type'] = $v2['type'];
+                    }
+
+                    //菜单下的按钮
+                    if(! empty($tmp[$k]['button'])){
+                        $button_tmp = $menu_button[$v['id']] ?? [];
+                        $str = "";
+                        foreach ($tmp[$k]['button'] as $v_b){
+                            if(in_array($v_b['id'],$button_tmp)){
+                                $str .= $v_b['title'] . ",";
+                            }
+                        }
+                        $v['button'] = rtrim($str,',');
+                    }else{
+                        $v['button'] = "";
+                    }
+                }
+
+                $rule = RoleMenu::$type_name[$v['type']] ?? "";
+                $data_array[] = [
+                    $v['title'],
+                    $v['has_menu'] ? "√" : "×",
+                    $v['button'],
+                    $rule
+                ];
+            }
+            $result[$value['title']] = $data_array;
+        }
+
+        $filename = date("Ymd").time().rand(1000,9999) . ".xlsx";
+        \Maatwebsite\Excel\Facades\Excel::store(new MultiSheetExport($result),"/public/export/{$filename}", null, 'Xlsx', []);
+        return [true,$filename];
+    }
 }

+ 13 - 2
app/Service/TableHeadService.php

@@ -26,6 +26,7 @@ class TableHeadService extends Service
                 'is_show' => $value['is_show'],
                 'is_click_detail' => $value['is_click_detail'] ?? 0,
                 'float' => $value['float'],
+                'width' => $value['width'] ?? 150,
                 'menu_id' => $data['menu_id'],
                 'crt_time' => $time,
                 'crt_id' => $user['id'],
@@ -55,7 +56,7 @@ class TableHeadService extends Service
         $header = TableSetting::where('del_time',0)
             ->where('menu_id',$data['menu_id'])
             ->where('crt_id',$user['id'])
-            ->select('key','value','sort','is_show','is_click_detail','menu_id','float')
+            ->select('key','value','sort','is_show','is_click_detail','menu_id','float','width')
             ->get()->toArray();
         $header_map = array_column($header,null,'key');
 
@@ -68,14 +69,24 @@ class TableHeadService extends Service
                 $header_default[$key]['is_show'] = $tmp['is_show'];
                 $header_default[$key]['is_click_detail'] = $tmp['is_click_detail'];
                 $header_default[$key]['float'] = $tmp['float'];
+                $header_default[$key]['width'] = $tmp['width'];
             }else{
                 $header_default[$key]['sort'] = $key + 1;
                 $header_default[$key]['is_show'] = 1;
-                $header_default[$key]['is_click_detail'] = 0;
                 $header_default[$key]['float'] = 0;
+                $is_click_detail = 0;
+                if($value['key'] == "order_number") $is_click_detail = 1;
+                //默认选中
+                $header_default[$key]['is_click_detail'] = $is_click_detail;
+                $header_default[$key]['width'] = 150;
             }
         }
 
+        //时间排序
+        usort($header_default, function($a, $b) {
+            return $a['sort'] - $b['sort'];
+        });
+
         return [true, $header_default];
     }
 }

+ 26 - 17
app/Service/U8ServerService.php

@@ -121,6 +121,7 @@ class U8ServerService extends Service
 
     //采购订单保存
     public function U8PO_PomainSave($data){
+        if(! is_array($data)) $data = [$data];
         $id = $data;
 
         //映射ip是否通畅
@@ -198,11 +199,13 @@ class U8ServerService extends Service
                 "cmaker"=>"admin",
                 "cmaketime"=>$time,
                 "IsExamine"=>false,
+                "cptname"=>$value['cptname']??"",//采购类型
                 "cvencode"=>"", //供应商编码
                 "cvenname"=>$value['cvenname'], //供应商名称
                 "cdepcode"=>"", //部门编号
-                "cdepname"=>$value['cdepname'], //部门名称
-                "cpersoncode"=>$value['cpersoncode'], //业务员编码
+                "cdepname"=>"", //部门名称 $value['cdepname']
+                "cpersoncode"=>"", //业务员编码jobnumber
+                "jobnumber"=>$value['jobnumber'], //业务员编码
                 "cdefine1"=>"",
                 "cdefine2"=>"",
                 "cdefine3"=>"",
@@ -249,6 +252,7 @@ class U8ServerService extends Service
 
     //销售订单(合同)保存
     public function U8SaleOrderSave($data){
+        if(! is_array($data)) $data = [$data];
         $id = $data;
 
         //映射ip是否通畅
@@ -276,8 +280,8 @@ class U8ServerService extends Service
         foreach ($result as $value){
             $bodys = [];
 
-            $cdefine31 = "";
-            if(! empty($value['cstname']) && $value['cstname'] == "线下销售") $cdefine31 = $value['cstname'];
+//            $cdefine31 = "";
+//            if(! empty($value['cstname']) && $value['cstname'] == "线下销售") $cdefine31 = $value['cstname'];
             foreach ($value['product'] as $son){
                 //子表数据
                 $bodys[] = [
@@ -311,7 +315,7 @@ class U8ServerService extends Service
                     "cdefine28"=>$son['cdefine28'], //平台单号
                     "cdefine29"=>$son['cdefine29'], //分社施工
                     "cdefine30"=>$son['cdefine30'], //业务员
-                    "cdefine31"=>$cdefine31, //客户名称
+                    "cdefine31"=>$son['cdefine31'], //客户名称
                     "cdefine32"=>$son['cdefine32'], //直播销售
                     "cdefine33"=>"",
                     "cdefine34"=>"",
@@ -343,8 +347,9 @@ class U8ServerService extends Service
                 "ccuscode"=>"",
                 "ccusabbname"=>$value['ccusabbname'], //客户简称
                 "cdepcode"=>"",
-                "cdepname"=>$value['cdepname'], // 部门名称
+                "cdepname"=>"", // 部门名称 $value['cdepname']
                 "cpersoncode"=>"", //业务员编码 暂时不要
+                "jobnumber"=>$value['jobnumber'],//业务员工号
                 "itaxrate"=>"0",
                 "cmemo"=>"T9销售订单:". $value['order_number'],
                 "cdefine1"=>"",
@@ -398,7 +403,7 @@ class U8ServerService extends Service
         $insert = [];
 
         U8Job::where('del_time',0)
-            ->where('data_type',U8Job::one)
+            ->where('data_type',$data_type)
             ->whereIn('data',$data)
             ->update(['del_time' => $time]);
         foreach ($data as $value){
@@ -431,9 +436,9 @@ class U8ServerService extends Service
         $supplier = Supplier::whereIn('id',array_unique(array_column($main,'supplier')))
             ->pluck('title','id')
             ->toArray();
-        $depart = Depart::whereIn('id',array_unique(array_column($main,'depart_id')))
-            ->pluck('title','id')
-            ->toArray();
+//        $depart = Depart::whereIn('id',array_unique(array_column($main,'depart_id')))
+//            ->pluck('title','id')
+//            ->toArray();
         $emp = Employee::whereIn('id',array_unique(array_column($main,'purchase_id')))
             ->pluck('number','id')
             ->toArray();
@@ -482,8 +487,9 @@ class U8ServerService extends Service
         foreach ($main as $key => $value){
             $main[$key]['cptname'] = $code_map[$value['purchase_type']] ?? "";
             $main[$key]['cvenname'] = $supplier[$value['supplier']] ?? "";
-            $main[$key]['cdepname'] = $depart[$value['depart_id']] ?? "";
-            $main[$key]['cpersoncode'] = $emp[$value['purchase_id']] ?? "";
+//            $main[$key]['cdepname'] = $depart[$value['depart_id']] ?? "";
+//            $main[$key]['cpersoncode'] = $emp[$value['purchase_id']] ?? "";
+            $main[$key]['jobnumber'] = $emp[$value['purchase_id']] ?? "";
             $main[$key]['product'] = $sub_map[$value['id']] ?? [];
         }
 
@@ -502,8 +508,8 @@ class U8ServerService extends Service
         $product = Product::whereIn('id',array_unique(array_column($sub,'product_id')))
             ->get()->toArray();
         $product_map = array_column($product,null,'id');
-
-        $code_map = BasicType::whereIn('id',array_unique(array_merge_recursive(array_column($main,'sale_type'),array_column($main,'plat_type'))))
+        $code_id = array_filter(array_unique(array_merge_recursive(array_column($main,'sale_type'),array_column($main,'plat_type'))));
+        $code_map = BasicType::whereIn('id',$code_id)
             ->pluck('title','id')
             ->toArray();
         $customer_map = Customer::whereIn('id',array_unique(array_column($main,'customer_id')))
@@ -554,8 +560,10 @@ class U8ServerService extends Service
             $top_depart_id = $see[$value['sales_order_id']] ?? 0;
             $value['cdefine29'] = $depart[$top_depart_id] ?? "";//分社施工
             $value['cdefine32'] = "";//直播销售 暂时没有
-            $value['cdefine31'] = "";//客户名称(线上的时候就是空  线下的话就是表头的客户简称)
-            $value['cdefine22'] = "";//手机号码 暂时没有
+            $value['cdefine31'] = $customer_map[$main_tmp['customer_id']] ?? "";//客户名称
+            $value['cdefine22'] = $main_tmp['customer_contact'] ?? "";//手机号码
+//            $value['cdefine31'] = "";//客户名称(线上的时候就是空  线下的话就是表头的客户简称)
+//            $value['cdefine22'] = "";//手机号码 暂时没有
             $value['cdefine30'] = $emp[$main_tmp['crt_id']] ?? "";//业务员
             $value['code'] = $product_tmp['code'];//存货编码
 
@@ -565,8 +573,9 @@ class U8ServerService extends Service
             $main[$key]['cbustype'] = "普通销售"; //业务类型(本身就是中文)
             $main[$key]['cstname'] = $code_map[$value['sale_type']] ?? ""; //销售类型
             $main[$key]['ccusabbname'] = $customer_map[$value['customer_id']] ?? "";//客户简称
-            $main[$key]['cdepname'] = $depart[$value['top_depart_id']] ?? "";//部门名称
+//            $main[$key]['cdepname'] = $depart[$value['top_depart_id']] ?? "";//部门名称
 //            $main[$key]['cpersoncode'] = $emp[$value['crt_id']] ?? "";//业务员
+            $main[$key]['jobnumber'] = $emp[$value['crt_id']] ?? "";
             $main[$key]['product'] = $sub_map[$value['id']] ?? [];
         }
 

+ 15 - 0
app/Service/Wx/Service.php

@@ -4,6 +4,7 @@ namespace App\Service\Wx;
 
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Redis;
+use Illuminate\Support\Facades\Storage;
 
 
 /**
@@ -131,4 +132,18 @@ class Service
 
         return [false,'操作频繁, 请在 ' . $ttl . '秒后重试'];
     }
+
+    public function delStorageFile($old, $new = [], $dir = "upload_files/"){
+        foreach ($old as $value){
+            if(! in_array($value, $new)){
+                $filename_rep = "/api/uploadFiles/";
+                $filename = str_replace($filename_rep, "", $value);
+                $filePath = $dir . $filename;
+                if (Storage::disk('public')->exists($filePath)) {
+                    // 文件存在 进行删除操作
+                    Storage::disk('public')->delete($filePath);
+                }
+            }
+        }
+    }
 }

+ 1 - 1
config/header/37.php

@@ -96,7 +96,7 @@ return [
     ],
     [
         'key' => 'dispatch_company',
-        'value' => '派遣公司',
+        'value' => '派遣门店',
     ],
     [
         'key' => 'pay_way_title',

+ 2 - 2
config/header/38.php

@@ -64,7 +64,7 @@ return [
         'value' => '创建时间',
     ],
     [
-        'key' => 'crt_time',
-        'value' => '创建时间',
+        'key' => 'crt_name',
+        'value' => '创建',
     ],
 ];

+ 1 - 1
config/header/43.php

@@ -96,7 +96,7 @@ return [
     ],
     [
         'key' => 'dispatch_company',
-        'value' => '派遣公司',
+        'value' => '派遣门店',
     ],
     [
         'key' => 'pay_way_title',

+ 17 - 2
config/header/45.php

@@ -54,13 +54,28 @@ return [
         'key' => 'fee4',
         'value' => '最终金额',
     ],
-
+//    [
+//        'key' => 'state_title',
+//        'value' => '状态',
+//    ],
+//    [
+//        'key' => 'invoice_state_name',
+//        'value' => '发货状态',
+//    ],
+//    [
+//        'key' => 'invoice_arr',
+//        'value' => '发货单号',
+//    ],
     [
-        'key' => 'state_title',
+        'key' => 'state_message',
         'value' => '状态',
     ],
     [
         'key' => 'crt_time',
         'value' => '创建时间',
     ],
+    [
+        'key' => 'crt_name',
+        'value' => '创建人',
+    ],
 ];

+ 1 - 1
config/logging.php

@@ -111,7 +111,7 @@ return [
             'driver' => 'daily',
             'path' => storage_path('logs/request.log'),
             'level' => 'debug',
-            'days' => 31,
+            'days' => 7,
         ],
     ],
 

+ 2 - 2
config/nocheck.php

@@ -2,7 +2,7 @@
 
 return [
     "wx/saleOrderList",
-    "wx/uploadFile",
-    "wx/checkAll"
+//    "wx/uploadFile",
+//    "wx/checkAll"
 ];
 

+ 1 - 1
config/oa.php

@@ -115,7 +115,7 @@ return [
             ],
             [
                 'key' => 'dispatch_company',
-                'title' => '派遣公司',
+                'title' => '派遣门店',
             ],
         ]
     ],

+ 6 - 0
routes/api.php

@@ -22,6 +22,8 @@ Route::any('test', 'Api\TestController@aa');
 Route::any('getHeaderWord', 'Api\HeaderWordController@getHeaderWord');
 //文件获取
 Route::any('uploadFiles/{file_name}', 'Api\FileUploadController@getFile');
+//获取导出规则
+Route::any('getExport/{file_name}','Api\SysMenuController@getExport');
 
 Route::group(['middleware'=> ['checkLogin']],function ($route){
     //oa
@@ -245,6 +247,8 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('productInAndOutList', 'Api\ProductInventoryController@productInAndOutList');
     //设置列表
     $route->any('productInventorySetList', 'Api\ProductInventoryController@productInventorySetList');
+    $route->any('getMySetting', 'Api\ProductInventoryController@getMySetting');
+
     //设置开关
     $route->any('productInventorySet', 'Api\ProductInventoryController@productInventorySet');
     //可见范围
@@ -260,6 +264,8 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
 
     //导入
     $route->any('import','Api\ImportController@import');
+    //保存规则
+    $route->any('menuExport','Api\SysMenuController@menuExport');
 
     //获取默认表头
     $route->any('getTableHead','Api\TableHeadController@tableHeadGet');

+ 10 - 0
routes/wx.php

@@ -17,6 +17,10 @@ Route::any('wxSetMobile', 'Api\WxController@setMobile');
 Route::any('wxLogin', 'Api\WxController@login');
 
 Route::group(['middleware'=> ['checkWx']],function ($route){
+    $route->any('oaCheck', 'Api\OaController@oaCheck');
+    $route->any('oaOrderState', 'Api\OaController@oaOrderState');
+    $route->any('checkAllOver', 'Api\OaController@checkAllOver');
+
     //不需要账号登录的
     //文件上传统一方法
     $route->any('uploadFile', 'Api\FileUploadController@uploadFile');
@@ -78,4 +82,10 @@ Route::group(['middleware'=> ['checkWx']],function ($route){
     $route->any('getScheduleSetting', 'Api\ScheduleController@getScheduleSetting');
     //排期
     $route->any('pq','Api\DeleteController@pq');
+
+    $route->any('menuList', 'Api\SysMenuController@menuList');
+
+    //设置列表
+    $route->any('productInventorySetList', 'Api\ProductInventoryController@productInventorySetList');
+    $route->any('getMySetting', 'Api\ProductInventoryController@getMySetting');
 });

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff