cqp 11 mesi fa
parent
commit
ab96237f5f

+ 34 - 0
app/Http/Controllers/Api/CheckController.php

@@ -0,0 +1,34 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\CheckService;
+use Illuminate\Http\Request;
+
+class CheckController extends BaseController
+{
+    public function checkAll(Request $request)
+    {
+        $service = new CheckService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->checkAll($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function getOrderDetail(Request $request){
+        $service = new CheckService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->getOrderDetail($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 4 - 57
app/Http/Controllers/Api/OaController.php

@@ -2,17 +2,13 @@
 
 namespace App\Http\Controllers\Api;
 
-
 use App\Service\OaService;
 use Illuminate\Http\Request;
 
-
 class OaController extends BaseController
 {
-
     public function oaList(Request $request)
     {
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
 
@@ -23,13 +19,10 @@ class OaController extends BaseController
         }else{
             return $this->json_return(201,$data);
         }
-
     }
 
     public function oaDetail(Request $request)
     {
-
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaDetail($request->all());
@@ -80,8 +73,6 @@ class OaController extends BaseController
 
     public function oaAdd(Request $request)
     {
-
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaAdd($request->all());
@@ -96,8 +87,6 @@ class OaController extends BaseController
 
     public function oaEdit(Request $request)
     {
-
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaEdit($request->all(),$userData);
@@ -112,8 +101,6 @@ class OaController extends BaseController
 
     public function oaDel(Request $request)
     {
-
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaDel($request->all());
@@ -123,14 +110,10 @@ class OaController extends BaseController
         }else{
             return $this->json_return(201,$data);
         }
-
     }
 
-
     public function createOaOrder(Request $request)
     {
-
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->createOaOrder($request->all());
@@ -140,16 +123,10 @@ class OaController extends BaseController
         }else{
             return $this->json_return(400,$data);
         }
-
     }
 
-
-
-
     public function oaOrderDetail(Request $request)
     {
-
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaOrderDetail($request->all(),$userData);
@@ -159,11 +136,10 @@ class OaController extends BaseController
         }else{
             return $this->json_return(201,$data);
         }
-
     }
+
     public function oaCheck(Request $request)
     {
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaCheck($request->all(),$userData,$request);
@@ -173,13 +149,10 @@ class OaController extends BaseController
         }else{
             return $this->json_return(201,$data);
         }
-
     }
 
     public function oaSubType(Request $request)
     {
-
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaSubType($request->all());
@@ -189,11 +162,9 @@ class OaController extends BaseController
         }else{
             return $this->json_return(201,$data);
         }
-
     }
 
     public function oaGetData(Request $request){
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaGetData($request);
@@ -205,10 +176,7 @@ class OaController extends BaseController
         }
     }
 
-
-
     public function oaOrderState(Request $request){
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaOrderState($request->all(),$userData);
@@ -220,11 +188,7 @@ class OaController extends BaseController
         }
     }
 
-
-
-
     public function oaOrderList(Request $request){
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaOrderList($request);
@@ -236,9 +200,7 @@ class OaController extends BaseController
         }
     }
 
-
     public function checkAllOver(Request $request){
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->checkAllOver($request);
@@ -250,10 +212,7 @@ class OaController extends BaseController
         }
     }
 
-
-
     public function oaCheckMove(Request $request){
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaCheckMove($request,$userData);
@@ -265,9 +224,7 @@ class OaController extends BaseController
         }
     }
 
-
     public function oaSubUserDetail(Request $request){
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaSubUserDetail($request->all());
@@ -280,7 +237,6 @@ class OaController extends BaseController
     }
 
     public function oaSubRemark(Request $request){
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaSubRemark($request->all());
@@ -293,7 +249,6 @@ class OaController extends BaseController
     }
 
     public function reportList(Request $request){
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->reportList($request->all(),$userData);
@@ -304,6 +259,7 @@ class OaController extends BaseController
             return $this->json_return(201,$data);
         }
     }
+
     public function reportCount(Request $request){
 
         $userData = $request->userData->toArray();
@@ -316,8 +272,8 @@ class OaController extends BaseController
             return $this->json_return(201,$data);
         }
     }
-    public function reportCheck(Request $request){
 
+    public function reportCheck(Request $request){
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->reportCheck($request->all());
@@ -328,8 +284,8 @@ class OaController extends BaseController
             return $this->json_return(201,$data);
         }
     }
-    public function reportTime(Request $request){
 
+    public function reportTime(Request $request){
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->reportTime($request->all());
@@ -341,9 +297,7 @@ class OaController extends BaseController
         }
     }
 
-
     public function oaGetTeamDetail(Request $request){
-
         $userData = $request->userData->toArray();
         $service = new OaService($userData);
         list($status,$data) = $service->oaGetTeamDetail($request->all());
@@ -363,11 +317,4 @@ class OaController extends BaseController
 
         return $this->json_return(200,'', $oa);
     }
-
-
-
-
-
-
-
 }

+ 1 - 98
app/Http/Middleware/CheckWx.php

@@ -20,104 +20,7 @@ class CheckWx
      */
     public function handle($request, Closure $next)
     {
-        $data=$request->all();
-
-        if (!isset($data['openid'])) return response()->json(['code'=> 202,'msg'=>'缺少openid','data'=>null]);
-        $openid = $data['openid'];
-        //校验openid是否绑定
-        $employee = new WxEmployee();
-        $employee = $employee->where('openid',$openid)->first();
-        if (empty($employee)) return response()->json(['code'=> 202,'msg'=>'用户信息不存在!','data'=>null]);
-        $employee = $employee->toArray();
-        if (empty($employee['mobile'])) return response()->json(['code'=> 202,'msg'=>'用户手机信息不存在!','data'=>null]);
-        if (empty($employee['employee_id'])) {
-            //找到对应的账号
-            $emp = Employee::where('del_time',0)
-                ->where('mobile',$employee['mobile'])
-                ->where('state',Employee::USE)
-                ->select('id')
-                ->first();
-            if(empty($emp)) return response()->json(['code'=> 202,'msg'=>'用户手机信息未匹配到系统账号!','data'=>null]);
-            $emp = $emp->toArray();
-            WxEmployee::where('id',$employee['id'])->update(['employee_id' => $emp['id']]);
-            $employee['employee_id'] = $emp['id'];
-        }
-
-        //当前请求接口
-        $uri = $request->path();
-        //不需要校验是否绑定账号的接口
-        $url = config('nocheck');
-
-        if(in_array($uri,$url)){
-            $request->userData = new Employee();
-        }else{
-            $employee_id = $employee['employee_id'];
-            if(empty($employee_id)) return response()->json(['code'=> 202,'msg'=>'用户未绑定账号!','data'=>null]);
-            //校验用户
-            $service = new WxEmployeeService();
-            $checkResult = $service->checkWxUser($employee_id);
-            list($state, $data) = $checkResult;
-            if(! $state) return response()->json(['code'=> 202,'msg'=>$data,'data'=>null]);
-
-            //人员角色
-            $data['role'] = EmployeeService::getPersonRole($employee_id);
-            //角色里所有菜单权限
-            $data['role_authority'] = EmployeeService::getPersonRoleQx($data['role']);
-            //角色里特殊的按钮
-            $data['special_button'] = EmployeeService::getSpecialButton($data['role'],$employee_id);
-
-            //当前门店
-            $userSetTopDepartId = $request->input('userSetTopDepartId');
-            if(empty($userSetTopDepartId)) return response()->json(['code'=>202,'msg'=>'当前门店信息缺失','data'=>null]);
-
-            $return = EmployeeService::getLoginDepart($employee_id, $userSetTopDepartId);
-            //所属部门
-            $data['rule_depart'] = $return[0] ?? [];
-            //顶级公司
-            $data['depart_top'] = $return[1] ?? [];
-            //部门对应的顶级公司
-            $data['depart_map'] = $return[2] ?? [];
-            //权限范围内的部门以及公司
-            $data['depart_range'] = $return[3] ?? [];
-            //是否有所有的部门权限
-            $data['is_all_depart'] = $return[4] ?? 0;
-            //总公司
-            $data['head'] = $return[5] ?? [];
-            //当前部门
-            $data['depart_select'] = $return[6] ?? [];
-            //是否库存校验(默认校验)
-            $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;
-
-            $query = config('morequery');
-            $url = $request->path();
-
-            //菜单ID
-            $menu = $query['menu'] ?? [];
-            if(isset($menu[$url])){
-                $param = $menu[$url];
-                if(is_array($param)){
-                    $key = $param['key'];
-                    $get = $request->input($key);
-                    $menu_id = $param['array'][$get] ?? 0;
-                }else{
-                    $menu_id = $param ?? 0;
-                }
-                $request->merge(['menu_id' => $menu_id]);
-            }
-
-            $menu2 = $query['is_list_search'] ?? [];
-            if(in_array($url, $menu2)) {
-                if(! empty($data['is_list_search']) && ! empty($request->is_list_search)){//列表页呈现
-                    $request->merge(['get_my_top_depart_data' => 0]);
-                }else{//建单据选择
-                    $request->merge(['get_my_top_depart_data' => 1]);
-                }
-            }
-
-            $request->userData = $data;
-        }
+        $data = $request->all();
 
         return $next($request);
     }

+ 2 - 0
app/Model/KqLeave.php

@@ -9,11 +9,13 @@ class KqLeave extends UseScopeBaseModel
     const UPDATED_AT = 'upd_time';
     protected $dateFormat = 'U';
 
+    const State_minus_one = -1;//驳回
     const STATE_ZERO = 0;//未审核
     const STATE_ONE = 1;//待审核
     const STATE_TWO = 2;//审核通过
     public static $prefix = 'leave';
     public static $name = [
+        self::State_minus_one => '驳回',
         self::STATE_ZERO => '未审核',
         self::STATE_ONE => '待审核',
         self::STATE_TWO => '审核通过'

+ 2 - 0
app/Model/KqOvertime.php

@@ -9,11 +9,13 @@ class KqOvertime extends UseScopeBaseModel
     const UPDATED_AT = 'upd_time';
     protected $dateFormat = 'U';
 
+    const State_minus_one = -1;//驳回
     const STATE_ZERO = 0;//未审核
     const STATE_ONE = 1;//待审核
     const STATE_TWO = 2;//审核通过
     public static $prefix = 'overtime';
     public static $name = [
+        self::State_minus_one => '驳回',
         self::STATE_ZERO => '未审核',
         self::STATE_ONE => '待审核',
         self::STATE_TWO => '审核通过'

+ 632 - 0
app/Service/CheckService.php

@@ -0,0 +1,632 @@
+<?php
+
+namespace App\Service;
+
+use App\Model\Construction;
+use App\Model\ConstructionProductInfo;
+use App\Model\InOutRecord;
+use App\Model\InvoiceOrder;
+use App\Model\InvoiceOrderInfo;
+use App\Model\KqLeave;
+use App\Model\KqOvertime;
+use App\Model\OrderOperation;
+use App\Model\PaymentReceipt;
+use App\Model\PaymentReceiptInfo;
+use App\Model\ProductInventory;
+use App\Model\ProductInventorySet;
+use App\Model\PurchaseOrder;
+use App\Model\PurchaseOrderInfo;
+use App\Model\PurchaseOrderSpecial;
+use App\Model\PurchaseOrderSpecialInfo;
+use App\Model\ReturnExchangeOrder;
+use App\Model\ReturnExchangeOrderProductInfo;
+use App\Model\SalesOrder;
+use App\Model\SalesOrderInfo;
+use App\Model\SalesOrderOtherFee;
+use App\Model\SalesOrderProductInfo;
+use App\Model\SeeRange;
+use App\Model\SportsBag;
+use App\Model\Storehouse;
+use App\Model\Supplier;
+use App\Service\OaService;
+use Illuminate\Support\Facades\DB;
+
+class CheckService extends Service
+{
+    //特殊操作数
+    const minus_one = -1;//跳出库存流水
+
+    //审批操作对应的数值
+    const one = 1;
+    const two = 2;
+    const three = 3;
+    const four = 4;
+    const five = 5;
+    const six = 6;
+    const seven = 7;
+    const eight = 8;
+    const nine = 9;
+    const ten  = 10;
+    const eve  = 11;
+    const twl  = 12;
+
+    //中文对照
+    public $map = [
+        self::one => '请假申请',
+        self::two => '加班申请',
+        self::three => '',
+        self::four => '',
+        self::five => '',
+        self::six => '',
+        self::seven => '',
+        self::eight => '',
+        self::nine => '',
+        self::ten => '',
+        self::eve => '',
+        self::twl => '',
+    ];
+
+    //入库操作
+    public static $in_opt = [
+    ];
+
+    //出库操作
+    public static $out_opt = [
+
+    ];
+
+    const TYPE_ONE = 1;//通过
+    const TYPE_TWO = 2;//不通过
+    const TYPE_THREE = 3;//通过后驳回
+
+    //改为待审核状态
+    public static $opt_1case = [
+        self::one => 'leave',
+        self::two => 'overtime',
+    ];
+
+    //改为最终状态
+    public static $opt_case = [
+        self::one => 'leave_final',
+        self::two => 'overtime_final',
+    ];
+
+    //审核通过后 弃审
+    public static $opt_case_reject = [
+
+    ];
+
+    //直接完成
+    public static $finished = [
+
+    ];
+
+    //单据库存流水
+    public static $record = [
+
+    ];
+
+    //审核通过后 驳回 产生流水
+    public static $reject_record = [
+
+    ];
+
+    //旅程日志 同意
+    public static $operation_order = [
+        self::eight => OrderOperation::three,
+    ];
+
+    //旅程日志 驳回
+    public static $operation_order_reject = [
+        self::four => OrderOperation::four,
+    ];
+
+    //以下具体方法----------------------------------------------------------------------------------------
+
+    //改为待审核---------------------------------
+    public function leave($data){
+        $model = KqLeave::where('order_number',$data['order_number'])
+            ->where('del_time',0)
+            ->first();
+        if(empty($model)) return [false, '请假申请不存在或已被删除'];
+        if($model->state != KqLeave::STATE_ZERO) return [false, '请确认请假申请状态,操作失败'];
+
+        KqLeave::where('del_time',0)
+            ->where('id',$data['id'])
+            ->update(['state' => KqLeave::STATE_ONE]);
+
+        return [true, $model->toArray()];
+    }
+
+    public function overtime($data){
+        $model = KqOvertime::where('order_number',$data['order_number'])
+            ->where('del_time',0)
+            ->first();
+        if(empty($model)) return [false, '加班申请不存在或已被删除'];
+        if($model->state != KqOvertime::STATE_ZERO) return [false, '请确认加班申请状态,操作失败'];
+
+        KqOvertime::where('del_time',0)
+            ->where('id',$data['id'])
+            ->update(['state' => KqOvertime::STATE_ONE]);
+
+        return [true, $model->toArray()];
+    }
+    //改为待审核---------------------------------
+
+
+    //改为最终结果---------------------------------
+    public function leave_final($data){
+        $model = KqLeave::where('order_number',$data['order_number'])
+            ->where('del_time',0)
+            ->first();
+        if(empty($model)) return [false, '请假申请不存在或已被删除'];
+        if($model->state != KqLeave::STATE_ONE) return [false, '请确认请假申请的状态,操作失败'];
+
+        if($data['type'] == self::TYPE_ONE){
+            //通过
+            $model->state = KqLeave::STATE_TWO;
+            $model->save();
+        }else{
+            //驳回
+            $model->state = KqLeave::State_minus_one;
+            $model->save();
+        }
+
+        return [true, $model->toArray()];
+    }
+
+    public function overtime_final($data){
+        $model = KqOvertime::where('order_number',$data['order_number'])
+            ->where('del_time',0)
+            ->first();
+        if(empty($model)) return [false, '加班申请不存在或已被删除'];
+        if($model->state != KqLeave::STATE_ONE) return [false, '请确认加班申请的状态,操作失败'];
+
+        if($data['type'] == self::TYPE_ONE){
+            //通过
+            $model->state = KqOvertime::STATE_TWO;
+            $model->save();
+        }else{
+            //驳回
+            $model->state = KqOvertime::State_minus_one;
+            $model->save();
+        }
+
+        return [true, $model->toArray()];
+    }
+    //改为最终结果---------------------------------
+
+    //通过后弃审
+
+    //通过后弃审
+
+    public function getOrderDetail($data,$user){
+        if(empty($data['order_number'])) return [false,'必传参数不能为空'];
+        $array = [];
+        foreach (Construction::$prefix as $value){
+            $array[$value] = "\App\Service\\ConstructionService";
+        }
+        foreach (ReturnExchangeOrder::$prefix as $value){
+            $array[$value] = "\App\Service\\ReturnExchangeOrderService";
+        }
+        foreach (SalesOrder::$prefix as $value){
+            $array[$value] = "\App\Service\\SalesOrderService";
+        }
+
+        $status = true;
+        $msg = [];
+        foreach ($array as $key => $value){
+            if(strpos($data['order_number'],$key) !== false) {
+                list($status, $msg) = (new $value)->detail($data);
+                return [$status, $msg];
+            }
+        }
+
+        if(strpos($data['order_number'],PurchaseOrder::prefix) !== false){
+            $service = "\App\Service\\PurchaseOrderService";
+            list($status, $msg) = (new $service)->detail($data,$user);
+            return [$status, $msg];
+        }
+
+        return [$status, $msg];
+    }
+
+    public function checkAll($data,$user){
+        if(empty($data['id']) || empty($data['order_number'])|| empty($data['opt_case'])) return [false,'必传参数不能为空或者参数值错误!'];
+
+        list($status,$msg) = $this->limitingSendRequestBackgExpire($data['order_number'] . $data['opt_case']);
+        if(! $status) return [false,$msg];
+
+        //走审批流 单据状态改为待审批方法
+        $function = self::$opt_1case[$data['opt_case']] ?? '';
+
+        //单据不走审批流 直接完成
+        $function2 = self::$finished[$data['opt_case']] ?? '';
+        try{
+            DB::beginTransaction();
+
+            //不走审批流,更新完直接返回
+            if($function2) {
+                list($bool,$msg) = $this->$function2($data,$user);
+                if($bool) {
+                    $order = $msg;
+
+                    list($bool,$err) = $this->createRecordAndInventoryMy($data,$user,$order);
+                    if($bool){
+                        DB::commit();
+                        return [true, ''];
+                    }else{
+                        DB::rollBack();
+                        return [false, $err];
+                    }
+                }else{
+                    DB::rollBack();
+                    return [false, $msg];
+                }
+            }
+
+            //需要审批流,从未审核变成待审核
+            if($function){
+                list($bool,$msg) = $this->$function($data);
+
+                if(! $bool){
+                    DB::rollBack();
+                    return [false, $msg];
+                }
+
+                //创建审批流
+                $args = [
+                    'order_no' => $data['order_number'],
+                    'menu_id' => $data['menu_id'] ?? 0,
+                    'opt_case' => $data['opt_case'],
+                    'order' => $msg,
+                ];
+
+                $oa = new OaService($user);
+                list($bool,$msg) = $oa->createOaOrder($args);
+                if(! $bool) {
+                    DB::rollBack();
+                    if($msg) return [false,$msg];
+                }
+            }
+
+            DB::commit();
+            return [true, ''];
+        }catch (\Throwable $exception){
+            DB::rollBack();
+            return [false, $exception->getMessage() . $exception->getFile(). $exception->getLine()];
+        }
+    }
+
+    //更新库存
+    public function changeInventory($data,$order,$user){
+        $number_symbol = "";
+        if(in_array($data['opt_case'],self::$in_opt)){
+            $number_symbol = ">";
+        }elseif (in_array($data['opt_case'],self::$out_opt)){
+            $number_symbol = "<";
+        }
+
+        //获取单据最新数据时间 正常审核的数据
+        $latest = InOutRecord::where('del_time',0)
+            ->where('order_number',$order['order_number'])
+            ->when(! empty($number_symbol), function ($query) use ($number_symbol) {
+                return $query->where('number', $number_symbol,0);
+            })
+            ->select('crt_time')
+            ->orderBy('crt_time', 'desc')
+            ->first();
+
+        $model = InOutRecord::where('del_time',0)
+            ->where('order_number',$order['order_number'])
+            ->when(! empty($number_symbol), function ($query) use ($number_symbol) {
+                return $query->where('number', $number_symbol,0);
+            })
+            ->select('number','crt_time','product_id','storehouse_id','top_depart_id');
+        if(! empty($latest)) {
+            $t = $latest->toArray();
+            $model->where('crt_time',$t['crt_time']);
+        }
+
+        $record = $model->get()->toArray();
+        if (empty($record)) return [false,'流水记录不存在'];
+        $top_depart_id = Storehouse::where('id', $order['storehouse_id'])->value('top_depart_id');
+        $result = $lock_number = [];
+        foreach ($record as $value){
+            $key = $value['product_id'] . $value['storehouse_id'];
+            if(isset($result[$key])){
+                $result[$key]['number'] += $value['number'];
+            }else{
+                $result[$key] = [
+                    'product_id' => $value['product_id'],
+                    'number' => $value['number'],
+                    'crt_time' => $value['crt_time'],
+                    'storehouse_id' => $value['storehouse_id'],
+                    'top_depart_id' => $top_depart_id,
+                ];
+            }
+            if($value['number'] < 0){
+                if(isset($lock_number[$key])){
+                    $lock_number[$key] += $value['number'];
+                }else{
+                    $lock_number[$key] = $value['number'];
+                }
+            }
+        }
+
+        //是否校验库存 是的话锁定数量要更新(根据当前操作人所在门店是否校验库存)
+        $lock = $user['is_check_stock'];
+
+        $result = array_values($result);
+        foreach ($result as $key => $value){
+            $keys = $value['product_id'] . $value['storehouse_id'];
+            $m = ProductInventory::where('product_id',$value['product_id'])
+                ->where('storehouse_id',$value['storehouse_id'])
+                ->select('product_id','number','storehouse_id')
+                ->first();
+
+            if(empty($m)){
+                ProductInventory::insert($result[$key]);
+            }else{
+                //锁定数量
+                $lock_number_tmp = 0;
+                if($lock && ! empty($lock_number[$keys])) $lock_number_tmp = $lock_number[$keys];
+
+                ProductInventory::where('product_id',$m->product_id)
+                    ->where('storehouse_id',$m->storehouse_id)
+                    ->lockForUpdate()
+                    ->update([
+                        'number' => DB::raw('number + ('. $value['number'] . ')'),
+                        'lock_number' => DB::raw('lock_number + ('. $lock_number_tmp . ')')
+                    ]);
+            }
+        }
+
+        return [true,''];
+    }
+
+    //业务单据审批通过后 驳回 更新库存
+    public function changeInventoryReject($data,$order,$user){
+        $number_symbol = "";
+        if(in_array($data['opt_case'],self::$in_opt)){
+            $number_symbol = "<";
+        }elseif (in_array($data['opt_case'],self::$out_opt)){
+            $number_symbol = ">";
+        }
+
+        //获取单据最新数据时间 正常审核的数据
+        $latest = InOutRecord::where('del_time',0)
+            ->where('order_number',$order['order_number'])
+            ->when(! empty($number_symbol), function ($query) use ($number_symbol) {
+                return $query->where('number', $number_symbol,0);
+            })
+            ->select('crt_time')
+            ->orderBy('crt_time', 'desc')
+            ->first();
+
+        $model = InOutRecord::where('del_time',0)
+            ->where('order_number',$order['order_number'])
+            ->when(! empty($number_symbol), function ($query) use ($number_symbol) {
+                return $query->where('number', $number_symbol,0);
+            })
+            ->select('number','crt_time','product_id','storehouse_id','top_depart_id');
+        if(! empty($latest)) {
+            $t = $latest->toArray();
+            $model->where('crt_time',$t['crt_time']);
+        }
+
+        $record = $model->get()->toArray();
+        if (empty($record)) return [false,'流水记录不存在'];
+        $top_depart_id = Storehouse::where('id', $order['storehouse_id'])->value('top_depart_id');
+        $result = $lock_number = [];
+        foreach ($record as $value){
+            $key = $value['product_id'] . $value['storehouse_id'];
+            if(isset($result[$key])){
+                $result[$key]['number'] += $value['number'];
+            }else{
+                $result[$key] = [
+                    'product_id' => $value['product_id'],
+                    'number' => $value['number'],
+                    'crt_time' => $value['crt_time'],
+                    'storehouse_id' => $value['storehouse_id'],
+                    'top_depart_id' => $top_depart_id,
+                ];
+            }
+            if($value['number'] > 0){
+                if(isset($lock_number[$key])){
+                    $lock_number[$key] += $value['number'];
+                }else{
+                    $lock_number[$key] = $value['number'];
+                }
+            }
+        }
+
+        //是否校验库存 是的话锁定数量要更新(根据当前操作人所在门店是否校验库存)
+        $lock = $user['is_check_stock'];
+
+        $result = array_values($result);
+        foreach ($result as $key => $value){
+            $keys = $value['product_id'] . $value['storehouse_id'];
+            $m = ProductInventory::where('product_id',$value['product_id'])
+                ->where('storehouse_id',$value['storehouse_id'])
+                ->select('product_id','number','storehouse_id')
+                ->first();
+
+            if(empty($m)){
+                ProductInventory::insert($result[$key]);
+            }else{
+                //锁定数量
+                $lock_number_tmp = 0;
+                if($lock && ! empty($lock_number[$keys])) $lock_number_tmp = $lock_number[$keys];
+
+                ProductInventory::where('product_id',$m->product_id)
+                    ->where('storehouse_id',$m->storehouse_id)
+                    ->lockForUpdate()
+                    ->update([
+                        'number' => DB::raw('number + ('. $value['number'] . ')'),
+                        'lock_number' => DB::raw('lock_number + ('. $lock_number_tmp . ')')
+                    ]);
+            }
+        }
+
+        return [true,''];
+    }
+
+    public function createRecordAndInventory($data = []){
+        if(empty($data['type']) || empty($data['opt_case']) || empty($data['order_number'])) return [false, '传递参数缺少'];
+        $user = $data['user_data'] ?? [];
+
+        if($data['type'] == self::TYPE_THREE){
+            //通过后弃审
+            if(! isset(self::$opt_case_reject[$data['opt_case']])) return [false, '该操作不存在'];
+
+            //具体方法
+            $function = self::$opt_case_reject[$data['opt_case']];
+
+            //流水
+            $function2 = self::$reject_record[$data['opt_case']] ?? '';
+
+            try{
+                DB::beginTransaction();
+
+                //更新单据的状态
+                list($bool,$msg) = $this->$function($data);
+                if(! $bool){
+                    DB::rollBack();
+                    return [false, $msg];
+                }
+                $order = $msg;
+
+                if($function2) {
+                    //流水
+                    list($boolean,$msg) = $this->$function2($data,$order);
+                    if(! $boolean) {
+                        DB::rollBack();
+                        return [false, $msg];
+                    }
+
+                    if($msg != self::minus_one){
+                        //库存
+                        list($bool,$msg) = $this->changeInventoryReject($data,$order,$user);
+                        if(! $bool){
+                            DB::rollBack();
+                            return [false, $msg];
+                        }
+                    }
+                }
+
+                if(! empty(self::$operation_order_reject[$data['opt_case']])){
+                    $type = self::$operation_order_reject[$data['opt_case']];
+                    (new OrderOperationService())->add([
+                        'order_number' => $order['order_number'],
+                        'msg' => OrderOperation::$type[$type],
+                        'type' => $type
+                    ],$user);
+                }
+
+                DB::commit();
+                return [true, ''];
+            }catch (\Throwable $exception){
+                DB::rollBack();
+                return [false, $exception->getMessage() . $exception->getLine() . $exception->getFile()];
+            }
+        }else{
+            //具体方法
+            $function = self::$opt_case[$data['opt_case']] ?? "";
+            $record = self::$record[$data['opt_case']] ?? "";
+
+            try{
+                DB::beginTransaction();
+
+                list($bool,$msg) = $this->$function($data);
+
+                if(! $bool){
+                    DB::rollBack();
+                    return [false, $msg];
+                }
+                $order = $msg;
+
+                if($data['type'] == self::TYPE_ONE){
+                    if($record) {
+                        //流水
+                        list($bool,$msg) = $this->$record($data, $order);
+                        if(! $bool) {
+                            DB::rollBack();
+                            return [false, $msg];
+                        }
+
+                        if($msg != self::minus_one){
+                            //库存
+                            list($bool,$msg) = $this->changeInventory($data, $order, $user);
+                            if(! $bool) {
+                                DB::rollBack();
+                                return [false, $msg];
+                            }
+                        }
+                    }
+                }
+
+                if(! empty(self::$operation_order[$data['opt_case']])){
+                    $user = $data['user_data'] ?? [];
+                    $type = self::$operation_order[$data['opt_case']];
+                    (new OrderOperationService())->add([
+                        'order_number' => $order['order_number'],
+                        'msg' => OrderOperation::$type[$type],
+                        'type' => $type
+                    ],$user);
+                }
+
+                DB::commit();
+                return [true, ''];
+            }catch (\Throwable $exception){
+                DB::rollBack();
+                return [false, $exception->getMessage() . $exception->getLine() . $exception->getFile()];
+            }
+        }
+    }
+
+    //不需要走审批流 直接调用
+    public function createRecordAndInventoryMy($data = [],$user = [],$order = []){
+        if(! empty($data['type']) && $data['type'] == self::TYPE_THREE){
+        }else{
+            //具体方法
+            $record = self::$record[$data['opt_case']] ?? "";
+            try{
+                DB::beginTransaction();
+
+                if($record) {
+                    //流水
+                    list($bool,$msg) = $this->$record($data, $order);
+                    if(! $bool) {
+                        DB::rollBack();
+                        return [false, $msg];
+                    }
+
+                    if($msg != self::minus_one){
+                        //库存
+                        list($bool,$msg) = $this->changeInventory($data, $order, $user);
+                        if(! $bool) {
+                            DB::rollBack();
+                            return [false, $msg];
+                        }
+                    }
+                }
+
+                if(! empty(self::$operation_order[$data['opt_case']])){
+                    $type = self::$operation_order[$data['opt_case']];
+                    (new OrderOperationService())->add([
+                        'order_number' => $order['order_number'],
+                        'msg' => OrderOperation::$type[$type],
+                        'type' => $type
+                    ],$user);
+                }
+
+                DB::commit();
+                return [true, ''];
+            }catch (\Throwable $exception){
+                DB::rollBack();
+                return [false, $exception->getMessage() . $exception->getLine() . $exception->getFile()];
+            }
+        }
+    }
+}

+ 0 - 14
app/Service/EmployeeService.php

@@ -519,20 +519,6 @@ class EmployeeService extends Service
         return $data;
     }
 
-    //获取当前顶级部门下人员id
-    public function getEmployee($user){
-        $top_depart_id = $user['depart_top'][0] ?? [];
-        $top_depart_id = $top_depart_id['depart_id'] ?? 0;
-        $list = Depart::where('del_time',0)->select('id','parent_id')->get()->toArray();
-        // 查找所有子级id
-        $childIds = $this->findChildIds($top_depart_id, $list);
-        $childIds[] = $top_depart_id;
-        $employee_id = EmployeeDepartPermission::whereIn('depart_id',$childIds)
-            ->select("employee_id")
-            ->get()->toArray();
-        return array_unique(array_column($employee_id,'employee_id'));
-    }
-
     /**
      * 用户参数规则
      * @param $data

+ 0 - 789
app/Service/ImportService.php

@@ -29,111 +29,6 @@ class ImportService extends Service
         'salesOnline', //线上订单
     ];
 
-    //写活的导入------------------- 暂时不好用
-    //导入入口
-    public function import($data,$user){
-        if(empty($data['type'])) return [false,'缺少导入类型,导入失败'];
-        if(! in_array($data['type'],self::$type)) return [false,'导入类型不存在,导入失败'];
-        if(empty($data['file'])) return [false,'导入文件不能为空'];
-
-        //导入的数据并且校验写入
-        list($status,$msg) = $this->importMain($data,$user);
-        if(! $status) return [false, $msg];
-
-        return [true, ''];
-    }
-
-    //主方法
-    public function importMain($data,$user){
-        //获取配置文件
-        $config = "excel." . $data['type'];
-        $config_array = config($config) ?? [];
-        if(empty($config_array)) return [false, '配置文件不存在'];
-
-        //(特殊 额外的表头数据)
-        $config_array = $this->getTableTitle($config_array,$user,$data);
-
-        //获取合并单元格范围
-        $uploadedFile = $_FILES['file']['tmp_name']; // 获取上传文件的临时路径
-        $spreadsheet = IOFactory::load($uploadedFile); // 加载上传的 Excel 文件
-        $worksheet = $spreadsheet->getActiveSheet(); // 获取第一个工作表
-        $mergedCells = $worksheet->getMergeCells(); // 获取单元格合并范围
-
-        // 需要导入的公用数据
-        $msg['user_id'] = $user['id'];
-        $msg['depart_id'] = $this->getDepart($user);
-        $msg['top_depart_id'] = $user['depart_map'][$msg['depart_id']] ?? 0;
-
-        //导入
-        $import = new Import();
-        $import->setConfig($config_array, $mergedCells,$msg);
-        \Maatwebsite\Excel\Facades\Excel::import($import,$data['file']);
-
-        //异常提示报错
-        if($import->getMsg()) return [false, $import->getMsg()];
-
-        return [true, ''];
-    }
-
-    //表头入口
-    public function getTableTitle($config_array,$user,$data){
-        if(! empty($config_array['dynamics_field'])){
-            $func = $config_array['dynamics_field']['func'];
-            return $this->$func($config_array,$user,$data);
-        }
-
-        return $config_array;
-    }
-
-    //产品导入的额外表头
-    public function productTitle($config_array,$user,$data){
-        $model = BasicType::TopClear($user,$data);
-        $result = $model->whereRaw('type = 22 And del_time = 0')->get()->toArray();
-        if(! empty($result)){
-            foreach ($result as $value){
-                $config_array['field'][$value['title']] = [
-                    "key" => $config_array['dynamics_field']['name'],
-                    "key_array" => [
-                        "basic_type_id" => $value['id'],
-                        "price" => 0,
-                    ],
-                    "rule" => "",
-                    "other_rule" => "is_numeric",
-                    "multiple" => true,
-                    "map" => [
-                        $value['title'] => "price",
-                    ],
-                ];
-            }
-        }
-
-        return $config_array;
-    }
-
-    //产品导入的额外数据
-    public function fillInsertProductData($time){
-        $last_insert_data = Product::where('crt_time',$time)
-            ->where('del_time',0)
-            ->select("id","product_category_id")
-            ->get()->toArray();
-        if(empty($last_insert_data)) return;
-
-        $list = ProductCategory::where('del_time',0)
-            ->select('id','parent_id')
-            ->get()->toArray();
-
-        foreach ($last_insert_data as $value){
-            $parentsId = $this->findParentIds($value['product_category_id'], $list);
-            array_unshift($parentsId, $value['product_category_id']);
-            $result = array_reverse($parentsId);
-            Product::where('id',$value['id'])->update([
-                'product_category' => json_encode($result)
-            ]);
-        }
-    }
-    //写活的导入------------------- 暂时不好用
-
-    //写死的导入
     public function getTableTitleXls($data,$user){
         if(empty($data['type'])) return [false,'缺少类型'];
         if(! in_array($data['type'],self::$type)) return [false,'类型不存在'];
@@ -232,689 +127,5 @@ class ImportService extends Service
 
         return [true, ''];
     }
-
-    public function customerImport($array, $user){
-        $head = $user['depart_top'][0] ?? [];
-        $head = $head['depart_id'] ?? 0;
-        if(empty($head)) return [false, '导入异常错误,门店信息丢失'];
-
-        // 去除表头
-        unset($array[0]);
-        if(empty($array)) return [false, '导入数据不能为空'];
-
-        //第一次表格数据校验 非空  已经过滤数据
-        $array_clean = $contact_info = [];
-        foreach ($array as $key => $value){
-            $rowData = array_filter($value);
-            if (empty($rowData)) {
-                unset($array[$key]);
-            } elseif(empty($value[0]) || empty($value[1])) {
-                return [false, '带*号的字段项必填'];
-            }else{
-                foreach ($value as $k => $v){
-                    $value[$k] = trim($v);
-                }
-                if(! isset(Customer::dk[$value[0]]))  return [false, '客户模板填写错误'];
-                $value[0] = Customer::dk[$value[0]];
-                if(in_array($value[1],$array_clean)) return [false, '客户名称不能重复'];
-                $array_clean[] = $value[1];
-                $array[$key] = $value;
-
-                if(! empty($value[13])){
-                    if(in_array($value[13],$contact_info)) return [false, '联系方式内容不能重复'];
-                    $contact_info[] = $value[13];
-                }
-            }
-        }unset($array_clean);
-        if(empty($array)) return [false, '导入数据不能为空'];
-
-        //客户
-        $model = Customer::Clear($user,[]);
-        $customer = $model->where('del_time',0)
-            ->whereIn('title',array_unique(array_column($array,'1')))
-            ->pluck('id','title')
-            ->toArray();
-
-        $basic = (new BasicTypeService())->getMyBasicList($user, [1,2,3,4,5,9,10,30]);
-        $basic_list = [];
-        foreach ($basic as $value){
-            if($value['type'] == 1){
-                $basic_list[2][$value['title']] = $value['id'];
-            }elseif ($value['type'] == 2){
-                $basic_list[3][$value['title']] = $value['id'];
-            }elseif ($value['type'] == 3){
-                $basic_list[41][$value['title']] = $value['id'];
-            }elseif ($value['type'] == 30){
-                $basic_list[42][$value['title']] = $value['id'];
-            }elseif ($value['type'] == 4){
-                $basic_list[12][$value['title']] = $value['id'];
-            }elseif ($value['type'] == 5){
-                $basic_list[7][$value['title']] = $value['id'];
-            }elseif ($value['type'] == 9){
-                $basic_list[8][$value['title']] = $value['id'];
-            }elseif ($value['type'] == 10){
-                $basic_list[9][$value['title']] = $value['id'];
-            }
-        }
-
-        $model = Product::ProductClear($user,[]);
-        $product = $model->where('del_time',0)
-            ->whereIn('title',array_unique(array_column($array,'6')))
-            ->pluck('id','title')
-            ->toArray();
-
-        $emp = Employee::where('del_time',0)
-            ->whereIn('number',array_unique(array_column($array,'14')))
-            ->pluck('id','number')
-            ->toArray();
-
-        $top_depart_id = $user['depart_top'][0] ?? [];
-        $top_depart_id = $top_depart_id['depart_id'] ?? 0;
-        $contact_info_array = CustomerInfo::from('customer_info as a')
-            ->join('customer as b','b.id','a.customer_id')
-            ->where('a.del_time',0)
-            ->where('b.del_time',0)
-            ->where('b.top_depart_id',$top_depart_id)
-            ->whereIn('a.contact_info', $contact_info)
-            ->select('a.contact_info')->get()->toArray();
-        $contact_info_array = array_column($contact_info_array,'contact_info');
-
-        $time = time();
-        $insert = [];
-        $insert_detail = $insert_detail2 = [];
-        foreach ($array as $value){
-            $tmp = [
-                'model_type' => '',
-                'title' => '',
-                'customer_intention' => '',
-                'customer_from' => '',
-                'customer_type' => '',
-                'car_type' => '',
-                'consulting_product' => '',
-                'intention_product' => '',
-                'progress_stage' => '',
-                'state_type' => '',
-                'address2' => '',
-                'mark' => '',
-                'depart_id' => $head,
-                'top_depart_id' => $head,
-                'crt_id' => $user['id'],
-                'crt_time' => $time,
-                'upd_time' => $time,
-            ];
-            $tmp['model_type'] = $value['0'];
-            $tmp['consulting_product'] = $value['5'];
-            $tmp['mark'] = $value['10'];
-            $tmp['address2'] = $value['11'];
-            if(! empty($customer[$value['1']])) return [false, '客户:' . $value['1'] . '已存在'];
-            $tmp['title'] = $value['1'];
-            if($value['2']){
-                if(empty($basic_list[2][$value['2']])) return [false, '客户意向度:' . $value['2'] . '不存在'];
-                $tmp['customer_intention'] = $basic_list[2][$value['2']];
-            }
-            if($value['3']){
-                if(empty($basic_list[3][$value['3']])) return [false, '客户来源:' . $value['3'] . '不存在'];
-                $tmp['customer_from'] = $basic_list[3][$value['3']];
-            }
-            if($value['4']){
-                $keys = 4 . $value[0];
-                $model_title = Customer::dk2[$value[0]] ?? "";
-                if(empty($basic_list[$keys][$value['4']])) return [false, '模板:' . $model_title . '下客户类别:' . $value['4'] . '不存在'];
-                $tmp['customer_type'] = $basic_list[$keys][$value['4']];
-            }
-            if($value['6']){
-                if(empty($product[$value['6']])) return [false, '意向产品:' . $value['6'] . '不存在'];
-                $tmp['intention_product'] = $product[$value['6']];
-            }
-            if($value['7']){
-                if(empty($basic_list[7][$value['7']])) return [false, '进展阶段:' . $value['7'] . '不存在'];
-                $tmp['progress_stage'] = $basic_list[7][$value['7']];
-            }
-            if($value['8']){
-                if(empty($basic_list[8][$value['8']])) return [false, '状态:' . $value['8'] . '不存在'];
-                $tmp['state_type'] = $basic_list[8][$value['8']];
-            }
-            if($value['9']){
-                if(empty($basic_list[9][$value['9']])) return [false, '车型:' . $value['9'] . '不存在'];
-                $tmp['car_type'] = $basic_list[9][$value['9']];
-            }
-            $contact_id = 0;
-            if($value['12']){
-                if(empty($basic_list[12][$value['12']])) return [false, '联系方式类型:' . $value['12'] . '不存在'];
-                $contact_id = $basic_list[12][$value['12']];
-            }
-            if($value['13'] && in_array($value['13'],$contact_info_array)) return [false, '联系方式内容:' . $value['13'] . '已存在'];
-            $man = 0;
-            if($value['14']){
-                if(empty($emp[$value['14']])) return [false, '负责人:' . $value['14'] . '不存在'];
-                $man = $emp[$value['14']];
-            }
-//            if($value['12']){
-//                if(empty($emp[$value['12']])) return [false, '协同人:' . $value['12'] . '不存在'];
-//                $tmp['emp_two'] = $emp[$value['12']];
-//            }
-
-            $insert[] = $tmp;
-
-            $insert_detail[] = [
-                'customer_id' => 0,
-                'contact_type' => $contact_id,
-                'contact_info' => $value['13'],
-                'crt_time' => $time,
-                'type' => CustomerInfo::type_one
-            ];
-            $insert_detail2[] = [
-                'customer_id' => 0,
-                'data_id' => $man,
-                'crt_time' => $time,
-                'type' => CustomerInfo::type_two
-            ];
-        }
-
-        try{
-            DB::beginTransaction();
-            if(! empty($insert)) Customer::insert($insert);
-
-            //获取上一次所有id
-            $last_insert_id = Customer::where('crt_time',$time)
-                ->where('crt_time',$time)
-                ->where('depart_id',$head)
-                ->where('top_depart_id',$head)
-                ->where('crt_id',$user['id'])
-                ->select('id')->get()->toArray();
-            $last_insert_id = array_column($last_insert_id,'id');
-
-            //组织数据 写入与主表的关联id
-            $insert_detail_1 = [];
-            foreach ($insert_detail as $key => $value){
-                if(empty($value['contact_type']) && empty($value['contact_info'])) continue;
-                $value['customer_id'] = $last_insert_id[$key];
-                $insert_detail_1[] = $value;
-            }unset($insert_detail);
-            $insert_detail_2 = [];
-            foreach ($insert_detail2 as $key => $value){
-                if(empty($value['data_id'])) continue;
-                $value['customer_id'] = $last_insert_id[$key];
-                $insert_detail_2[] = $value;
-            }unset($insert_detail2);
-
-            if(! empty($insert_detail_1)) CustomerInfo::insert($insert_detail_1);
-            if(! empty($insert_detail_2)) CustomerInfo::insert($insert_detail_2);
-
-            DB::commit();
-        }catch (\Exception $e){
-            DB::rollBack();
-            return [false, $e->getMessage() . $e->getLine() . $e->getCode()];
-        }
-
-        return [true, ''];
-    }
-
-    public function productImport($array, $user){
-        //当前门店
-        $depart_id = $this->getDepart($user);
-        $top_depart_id = $user['depart_map'][$depart_id] ?? 0;
-
-        // 去除表头
-        $upload = $array[0];
-        unset($array[0]);
-        if(empty($array)) return [false, '导入数据不能为空'];
-
-        //第一次表格数据校验 非空  已经过滤数据
-        $array_clean = [];
-        $search = "";
-        $map_attr = array_flip(Product::$product_attribute);
-        foreach ($array as $key => $value){
-            $rowData = array_filter($value);
-            if (empty($rowData)) {
-                unset($array[$key]);
-            } elseif(empty($value[0]) || empty($value[1]) || empty($value[2])) {
-                return [false, '带*号的字段项必填'];
-            }else{
-                foreach ($value as $k => $v){
-                    $value[$k] = trim($v);
-                }
-                $t = $value[1];
-                if(in_array($t,$array_clean)) return [false, '产品编码:'. $value[1] .'在文件中重复出现'];
-                $array_clean[] = $t;
-
-                if(! empty($value[8])){
-                    if(! isset($map_attr[$value[8]])) return [false, '产品属性不存在' . $value[8]];
-                    $value[8] = $map_attr[$value[8]];
-                }else{
-                    $value[8] = Product::Product_attribute_zero;
-                }
-                $array[$key] = $value;
-                $search .= "(binary code ='".$value[1]."') or";
-            }
-        }unset($array_clean);
-        if(empty($array)) return [false, '导入数据不能为空'];
-
-        $search = rtrim($search,' or');
-        $search = "($search)";
-        $product = Product::whereRaw($search)
-            ->where('del_time',0)
-            ->select('code','top_depart_id','id')
-            ->get()->toArray();
-        $product_array = [];
-        foreach ($product as $value){
-            $product_array[$value['code']] = [
-                'id' => $value['id'],
-                'top_depart_id' => $value['top_depart_id']
-            ];
-        }
-
-        $category_list = ProductCategory::where('del_time',0)
-            ->where('top_depart_id',$top_depart_id)
-            ->get()->toArray();
-
-        $basic = (new BasicTypeService())->getMyBasicList($user, 20);
-        $basic = array_column($basic,'id','title');
-
-        $category = ProductCategory::whereIn('title',array_unique(array_column($array,'2')))
-            ->where('del_time',0)
-            ->where('top_depart_id',$top_depart_id)
-            ->pluck('id','title')
-            ->toArray();
-        $category_parent = array_unique(array_column($category,'parent'));
-
-        $time = time();
-
-        $table_head = $this->product([],$user);
-        $heads = $table_head[1];
-        $tmp = array_column($heads,'key');
-        $tmp = array_fill_keys($tmp, '');
-        $tmp['product_category'] = '';
-        $tmp['upd_time'] = $time;
-
-        $top_message = Depart::where('parent_id',0)
-            ->pluck('title','id')
-            ->toArray();
-
-        $upload = array_flip($upload);
-        $map = [];
-        foreach ($heads as $value){
-            if(strpos($value['key'], 'table_id.') !== false && isset($upload[$value['value']])){
-                $map[$value['key']] = [
-                    'col' => $upload[$value['value']],
-                    'name' => $value['value']
-                ];
-            }
-        }
-
-        $array = array_values($array);
-        $insert = $insert2 = $update = $update2 = [];
-        foreach ($array as $value){
-            if(isset($product_array[$value['1']])){
-                $pro_tmp = $product_array[$value['1']] ?? [];
-                if($pro_tmp['top_depart_id'] != $top_depart_id){
-                    $belong = $top_message[$pro_tmp['top_depart_id']] ?? "";
-                    $now = $top_message[$top_depart_id] ?? "";
-                    return [false, '产品编码:' . $value['1'] . '属于门店:' . $belong . ',当前门店:' . $now . ',不允许跨门店操作更新产品!'];
-                }
-            }
-
-            $tmp['title'] = $value['0'];
-            $tmp['code'] = $value['1'];
-            if(empty($category[$value['2']])) return [false,'产品分类:' . $value['2'] . '不存在'];
-            $tmp['product_category_id'] = $category[$value['2']];
-            if(in_array($tmp['product_category_id'],$category_parent)) return [false,'产品分类:' . $value['2'] . '下存在子分类,请将产品建与最底层分类下'];
-            $parentsId = $this->findParentIds($tmp['product_category_id'], $category_list);
-            array_unshift($parentsId, $tmp['product_category_id']);
-            $result = array_reverse($parentsId);
-            $tmp['product_category'] = json_encode($result);
-            $tmp['size'] = $value['3'];
-            if($value['4']){
-                if(empty($basic[$value['4']])) return [false, '单位:' . $value['4'] . '不存在'];
-                $tmp['unit'] = $basic[$value['4']];
-            }
-            $tmp['bar_code'] = $value['5'];
-            $tmp['cost'] = $value['6'] ?? 0;
-            $tmp['retail_price'] = $value['7'] ?? 0;
-            $tmp['product_attribute'] = $value['8'] ?? 0;
-            foreach ($map as $m => $v){
-                if($value[$v['col']]){
-                    if(! is_numeric($value[$v['col']])) return [false,$v['name'] . ': 请输入数字且最多两位小数'];
-                    $formattedNumber = number_format($value[$v['col']], 2, '.', '');
-                    if($formattedNumber != $value[$v['col']]) return [false,$v['name'] . ': 请输入数字且最多两位小数'];
-                }
-                $tmp[$m] = $value[$v['col']];
-            }
-
-            if(isset($product_array[$value['1']])){
-                //更新
-                $pro_tmp = $product_array[$value['1']] ?? [];
-                $product_id = $pro_tmp['id'];
-
-                //产品价格子表
-                foreach ($tmp as $k => $v){
-                    if(strpos($k, 'table_id.') !== false){
-                        $tmp2 = [];
-                        $k_n = str_replace('table_id.', "", $k);
-                        $tmp2['product_id'] = $product_id;
-                        $tmp2['basic_type_id'] = $k_n;
-                        $tmp2['price'] = $v;
-                        $tmp2['crt_time'] = $time;
-                        $tmp2['upd_time'] = $time;
-                        $update2[] = $tmp2;
-                        unset($tmp[$k]);
-                    }
-                }
-
-                //产品主表
-                $update[$product_id] = $tmp;
-            }else{
-                $tmp['depart_id'] = $depart_id;
-                $tmp['top_depart_id'] = $top_depart_id;
-                $tmp['crt_id'] = $user['id'];
-                $tmp['crt_time'] = $time;
-                //产品价格子表
-                foreach ($tmp as $k => $v){
-                    if(strpos($k, 'table_id.') !== false){
-                        $tmp2 = [];
-                        $k_n = str_replace('table_id.', "", $k);
-                        $tmp2['basic_type_id'] = $k_n;
-                        $tmp2['price'] = $v;
-                        $tmp2['crt_time'] = $time;
-                        $tmp2['upd_time'] = $time;
-                        $insert2[$tmp['code']][] = $tmp2;
-                        unset($tmp[$k]);
-                    }
-                }
-
-                //产品主表
-                $insert[$tmp['code']] = $tmp;
-            }
-        }
-
-        try{
-            DB::beginTransaction();
-            //新增
-            if(! empty($insert)){
-                Product::insert($insert);
-                if(! empty($insert2)){
-                    $insert_detail = [];
-                    $last_insert_id = Product::where('crt_time',$time)
-                        ->pluck('id','code')
-                        ->toArray();
-                    foreach ($insert2 as $code => $val){
-                        foreach ($val as $v2){
-                            $v2['product_id'] = $last_insert_id[$code] ?? 0;
-                            $insert_detail[] = $v2;
-                        }
-                    }
-                    ProductPriceDetail::insert($insert_detail);
-                }
-            }
-
-            //编辑
-            if(! empty($update)){
-                foreach ($update as $p_id => $value){
-                    Product::where('id',$p_id)
-                        ->update($value);
-                }
-
-                if(! empty($update2)){
-                    $product_id_array = array_keys($update);
-                    ProductPriceDetail::whereIn('product_id',$product_id_array)
-                        ->update(['del_time' => $time]);
-                    ProductPriceDetail::insert($update2);
-                }
-            }
-            DB::commit();
-        }catch (\Exception $e){
-            DB::rollBack();
-            return [false, $e->getMessage() . $e->getLine() . $e->getCode()];
-        }
-
-        return [true, ''];
-    }
-
-    public function salesOnlineImport($array, $user){
-        $head = $user['head']['id'] ?? 0;
-
-        // 去除表头
-        unset($array[0]);
-        if(empty($array)) return [false, '导入数据不能为空'];
-
-        $basic = (new BasicTypeService())->getMyBasicList($user, [18,23,24,29]);
-        $basic_list = [];
-        foreach ($basic as $value){
-            if($value['type'] == 18){
-                $basic_list[9][$value['title']] = $value['id'];
-            }elseif ($value['type'] == 23){
-                $basic_list[10][$value['title']] = $value['id'];
-            }elseif ($value['type'] == 24){
-                $basic_list[3][$value['title']] = $value['id'];
-            }elseif ($value['type'] == 29){
-                $basic_list[2][$value['title']] = $value['id'];
-            }
-        }
-
-        $search = "";
-        $customer = [];
-        foreach ($array as $key => $value){
-            $rowData = array_filter($value);
-            if (empty($rowData)) {
-                unset($array[$key]);
-            } elseif(empty($value[0]) || empty($value[1]) || empty($value[2]) || empty($value[3]) || empty($value[4]) || empty($value[5]) || $value[6] === null) {
-                return [false, '带*号的字段项必填'];
-            }else{
-                foreach ($value as $k => $v){
-                    $value[$k] = trim($v);
-                }
-                if(! isset($basic_list[2][$value[2]])) return [false, '客户简称:' . $value[2] .'不存在'];
-                $value[2] = $basic_list[2][$value[2]];
-                if(! isset($basic_list[3][$value[3]])) return [false, '店铺(平台类型):' . $value[3] .'不存在'];
-                $value[3] = $basic_list[3][$value[3]];
-
-                if(! is_numeric($value[5])) return [false, '货品数量请填写正确的数值'];
-                if(! is_numeric($value[6])) return [false, '产品合同金额请填写正确的数值'];
-                if(! empty($value[8]) && ! is_numeric($value[8])) return [false, '订单优惠金额请填写正确的数值'];
-                if(! empty($value[9])){
-                    if(! isset($basic_list[9][$value[9]])) return [false, '安装方式:' . $value[9] .'不存在'];
-                    $value[9] = $basic_list[9][$value[9]];
-                }
-                if(! empty($value[10])){
-                    if(! isset($basic_list[10][$value[10]])) return [false, '安装地点:' . $value[10] .'不存在'];
-                    $value[10] = $basic_list[10][$value[10]];
-                }
-
-                if(! isset(SalesOrder::$order_type_name[$value[1]])) return [false, '产品类型填写错误'];
-                $value[1] = SalesOrder::$order_type_name[$value[1]];
-
-                if(! empty($value[11])) {
-                    list($status,$msg) = $this->changeAndReturnDate($value[11]);
-                    if(! $status) return [false,"施工日期请填写正确的日期格式,例如2023-05-01"];
-                    $value[11] = $msg;
-                }
-
-                if(! empty($value[12])) {
-                    list($status,$msg) = $this->changeAndReturnDate($value[12]);
-                    if(! $status) return [false,"交车日期请填写正确的日期格式,例如2023-05-01"];
-                    $value[12] = $msg;
-                }
-
-                $array[$key] = $value;
-                $search .= "(code = '".$value[4]."') or";
-
-                if(! empty($value[7]) && ! in_array($value[7], $customer)) $customer[] = $value[7];
-            }
-        }
-        if(empty($array)) return [false, '导入数据不能为空'];
-        $search = rtrim($search,' or');
-        $search = "($search)";
-        $model = Product::ProductClear($user,[]);
-        $product = $model->whereRaw($search)
-            ->where('del_time',0)
-            ->select('title','id','code','cost','retail_price')
-            ->get()->toArray();
-//        $pro = (new ProductService())->productList(['product_id' => array_column($product,'id'), 'type' => 2],$user);
-
-        $product_map = [];
-        foreach ($product as $value){
-            $product_map[$value['code']] = [
-                'id' => $value['id'],
-                'cost' => $value['cost'],
-                'retail_price' => $value['retail_price'],
-            ];
-        }
-
-        $time = time();
-
-        $model = Customer::Clear($user,[]);
-        $customer_map = $model->where('del_time',0)
-            ->whereIn('title',$customer)
-            ->pluck('id','title')
-            ->toArray();
-
-        $customer_info = CustomerInfo::where('del_time',0)
-            ->whereIn('customer_id',array_values($customer_map))
-            ->whereIn('type',[CustomerInfo::type_one,CustomerInfo::type_two])
-            ->select('customer_id','type','contact_info','data_id')
-            ->orderBy('id','asc')
-            ->get()->toArray();
-        $customer_contact = $customer_man = [];
-        foreach ($customer_info as $value){
-            if($value['type'] == CustomerInfo::type_one && ! isset($customer_contact[$value['customer_id']])){
-                $customer_contact[$value['customer_id']] = $value['contact_info'];
-            }elseif ($value['type'] == CustomerInfo::type_two){
-                $customer_man[$value['customer_id']][] = [
-                    'type' => SalesOrderInfo::type_two,
-                    'data_id' => $value['data_id'],
-                    'crt_time' => $time,
-                ];
-            }
-        }
-
-        $tmp = [
-            'model_type' => SalesOrder::Model_type_four,
-            'sales_order_type' => 0,
-            'order_number' => '',
-            'customer_short_name' => '',
-            'plat_type' => '',
-            'plat_order' => '',
-            'sign_time' => $time,
-            'product_total' => 0,
-            'contract_fee' => 0,
-            'discount_fee' => 0,
-            'cdefine29' => '',//分社施工
-            'cdefine32' => '',//达人昵称
-            'cdefine30' => '',//业务员
-            'rate' => 100,
-            'depart_id' => $head,
-            'top_depart_id' => $head,
-            'crt_id' => $user['id'],
-            'crt_time' => $time,
-            'upd_time' => $time,
-        ];
-        $tmp_detail = [
-            'sales_order_id' => 0,
-            'product_id' => 0,
-            'cost' => 0,
-            'retail_price' => 0,
-            'basic_type_id' => 0,
-            'price' => 0,
-            'final_amount' => 0,
-            'number' => '',
-            'crt_time' => $time,
-        ];
-        $insert = $insert_detail = $insert_detail_man =  [];
-        $prefix = SalesOrder::$prefix[salesOrder::Model_type_four];
-        foreach ($array as $value){
-            $product_str = $value[4];
-            if(! isset($product_map[$product_str])) return [false, '产品:' . '[' . $value[4]. ']' . '不存在'];
-            $product_tmp = $product_map[$product_str] ?? [];
-
-            $customer_tmp = 0;
-            $customer_contact_tmp = "";
-            $customer_man_tmp = [];
-            if(! empty($value[7])){
-                $customer_tmp = $customer_map[$value[7]] ?? 0;
-                $customer_contact_tmp = $customer_contact[$customer_tmp] ?? "";
-                $customer_man_tmp = $customer_man[$customer_tmp] ?? [];
-            }
-            $customer_man_tmp[] = [
-                'type' => SalesOrderInfo::type_one,
-                'data_id' => $user['id'],
-                'crt_time' => $time,
-            ];
-
-            $tmp['product_total'] = $tmp['contract_fee'] = 0;
-            $keys = $value[0] . $value[1];
-            $insert_detail_man[$keys] = $customer_man_tmp;
-            if(! isset($insert[$keys])){
-                $tmp['order_number'] = OrderNoService::createSalesOrderNumber($prefix);
-                $tmp['sales_order_type'] = $value[1];
-                $tmp['customer_short_name'] = $value[2];
-                $tmp['customer_id'] = $customer_tmp;
-                $tmp['customer_contact'] = $customer_contact_tmp;
-                $tmp['plat_type'] = $value[3];
-                $tmp['plat_order'] = $value[0];
-                $tmp['discount_fee'] = $value[8] ?: 0;
-                $tmp['cdefine29'] = $value[13] ?? "";//分社施工
-                $tmp['cdefine32'] = $value[14] ?? "";//达人昵称
-                $tmp['cdefine30'] = $value[15] ?? "";//业务员
-                $tmp['product_total'] += $value[6];
-                $tmp['contract_fee'] += $value[6] - $tmp['discount_fee'];
-                $tmp['construction_time'] = $value[11] ?? 0;
-                $tmp['handover_time'] = $value[12] ?? 0;
-                $insert[$keys] = $tmp;
-            }else{
-                $insert[$keys]['product_total'] += $value[6];
-                $insert[$keys]['contract_fee'] += $value[6];
-            }
-
-            $tmp_detail['product_id'] = $product_tmp['id'];
-            $tmp_detail['cost'] = $product_tmp['cost'];
-            $tmp_detail['retail_price'] = $product_tmp['retail_price'];
-            $tmp_detail['price'] = $product_tmp['retail_price'];
-            $tmp_detail['final_amount'] = $value[6];
-            $tmp_detail['number'] = $value[5];
-
-            $insert_detail[$keys][] = $tmp_detail;
-        }
-
-        $insert_detail = array_values($insert_detail);
-        $insert_detail_man = array_values($insert_detail_man);
-        try{
-            DB::beginTransaction();
-            if(! empty($insert)) SalesOrder::insert($insert);
-            $last_insert_id = SalesOrder::where('crt_time',$time)
-                ->select('id')
-                ->get()->toArray();
-            $last_insert_id = array_column($last_insert_id,'id');
-            if(! empty($insert_detail)){
-                $insert2 = [];
-                foreach ($last_insert_id as $key => $value){
-                    if(isset($insert_detail[$key])) {
-                        foreach ($insert_detail[$key] as $val){
-                            $val['sales_order_id'] = $value;
-                            $insert2[] = $val;
-                        }
-                    }
-                }
-                SalesOrderProductInfo::insert($insert2);
-            }
-            if(! empty($insert_detail_man)){
-                $insert3 = [];
-                foreach ($last_insert_id as $key => $value){
-                    if(isset($insert_detail_man[$key])) {
-                        foreach ($insert_detail_man[$key] as $val){
-                            $val['sales_order_id'] = $value;
-                            $insert3[] = $val;
-                        }
-                    }
-                }
-                SalesOrderInfo::insert($insert3);
-            }
-            DB::commit();
-        }catch (\Exception $e){
-            DB::rollBack();
-            return [false, $e->getMessage() . $e->getLine() . $e->getCode()];
-        }
-
-        return [true, ''];
-    }
 }
 

+ 22 - 178
app/Service/OaService.php

@@ -2,12 +2,9 @@
 
 namespace App\Service;
 
-
-use App\Model\BasicRollFilm;
 use App\Model\Construction;
 use App\Model\Depart;
 use App\Model\Employee;
-use App\Model\EmployeeDepartPermission;
 use App\Model\EmployeeTeamPermission;
 use App\Model\Oa;
 use App\Model\OaOrder;
@@ -19,23 +16,11 @@ use App\Model\OaSub;
 use App\Model\OaSubEmployee;
 use App\Model\OaSubReportEmployee;
 use App\Model\OaSubRule;
-use App\Model\RollFilm;
-use App\Model\RollFilmCombine;
-use App\Model\RollFilmCompany;
 use App\Model\SysMenu;
-use App\Model\Team;
 use App\Service\Weixin\WxSendMessageService;
-use App\Service\Wx\WxService;
-use Illuminate\Support\Facades\App;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Log;
-use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Route;
 
-/**
- * bom相关
- * @package App\Models
- */
 class OaService extends Service
 {
     public $user;
@@ -53,15 +38,6 @@ class OaService extends Service
             ->select('o.id', 'o.menu_id', 'o.crt_time', 's.title','o.channel')
             ->where('o.del_time', 0);
 
-        if(! empty($data['top_depart_id'])) {
-            $list->where('o.channel', $data['top_depart_id']);
-        }else{
-            if(! $user['is_all_depart']){
-                $top_depart_id = $user['depart_top'][0]['depart_id'] ?? 0;
-                $list->where('o.channel', $top_depart_id);
-            }
-        }
-
         $list = $this->limit($list, '', $data);
         $list = $this->fillData($list);
 
@@ -210,8 +186,6 @@ class OaService extends Service
     public function oaAdd($data)
     {
         $oa = new Oa();
-
-
         try {
             DB::beginTransaction();
             $oa->menu_id = $data['menu_id'];
@@ -249,8 +223,6 @@ class OaService extends Service
 
     public function oaEdit($data, $user)
     {
-
-
         $first = Oa::where('del_time', 0)->where('channel',$this->user['depart_top'][0]['depart_id'])->where('menu_id', $data['menu_id']);
         if (isset($data['id'])) $first = $first->where('id', '<>', $data['id']);
         if (isset($data['type'])) $first = $first->where('type', $data['type']);
@@ -258,7 +230,6 @@ class OaService extends Service
 
         if ($first) return [false, '该菜单oa已存在!'];
 
-
         try {
             DB::beginTransaction();
             if (isset($data['id'])) $oa = Oa::where('id', $data['id'])->first();
@@ -412,7 +383,6 @@ class OaService extends Service
 
     public function createOaOrder($data)
     {
-        Log::channel('request')->info('request', ['param' => $data]);
         if (!isset($data['order_number'])) $data['order_number'] = $data['order_no'];
         $orderObject = $data['order_number'];
         $menu_id = $data['menu_id'];
@@ -459,7 +429,7 @@ class OaService extends Service
                 }
                 else{
                     DB::commit();
-                    return [true, '审核成功'];
+                    return [true, ''];
                 }
             }
 
@@ -481,24 +451,8 @@ class OaService extends Service
             $oa_order_sub_id = $oa_order_sub->id;
 
             //组织数据
-            $insert = $send_data = [];
-            $emp_map = Employee::whereIn('id',$employee_ids)->pluck('emp_name','id')->toArray();
-            $sys_menu = SysMenu::where('id', $menu_id)->value('title') ?? "";
+            $insert = [];
             foreach ($employee_ids as $employee_id) {
-                $emp_tmp = $emp_map[$employee_id] ?? "";
-                $send_data[] = [
-                    'employee_id' => $employee_id,
-                    'type' => 1,
-                    'state' => 0,
-                    'menu_id' => $menu_id,
-                    'order_number' => $order_detail['order_number'],
-                    'tmp_data' => [
-                        $order_detail['order_number'],
-                        $order_detail['crt_name'].'('.$sys_menu.')',
-                        $emp_tmp,
-                        date('Y-m-d H:i:s'),
-                    ],
-                ];
                 $insert[] = [
                     'oa_order_id' => $id,
                     'oa_order_sub_id' => $oa_order_sub_id,
@@ -506,12 +460,9 @@ class OaService extends Service
                 ];
             }
             OaOrderSubEmployee::insert($insert);
-            DB::commit();
-
-            //发送消息
-            $this->sendWxOaCheckMessage($send_data);
 
-            return [true, '']; //success
+            DB::commit();
+            return [true, ''];
         } catch (\Exception $e) {
             DB::rollBack();
             $this->returnOa($order_no, 2, $type);
@@ -532,11 +483,10 @@ class OaService extends Service
         $oa_id = Oa::where('menu_id',$menu_id)->where('del_time', 0)->where('sub_type',2)->value('id');
         if(empty($oa_id)) $oa_id = Oa::where('menu_id', $menu_id)->where('channel',$this->user['depart_top'][0]['depart_id'])->where('del_time', 0)->value('id');
         $parent_ids = [$parent_id, 0];
-//        var_dump($parent_ids);
+
         if ($sort > 2) {
             $sorts = $sort - 1;
             $oa_sub_ids = OaSub::where('sort', '<', $sorts)->where('del_time', 0)->wherein('parent_id', $parent_ids)->pluck('id')->toArray();
-//            var_dump($oa_sub_ids);die;
             $parent_ids = array_merge($parent_ids, $oa_sub_ids);
         }
         $list = OaSub::where('oa_id', $oa_id)->where('del_time', 0)->where('sort', $sort)->wherein('parent_id', $parent_ids);
@@ -611,13 +561,13 @@ class OaService extends Service
             ->where('s.id', $id)
             ->select('s.oa_order_id', 'sort', 'oa_sub_id', 's.id')->first();
         if (empty($detail)) return [false, '没有审核权限'];
+
         $detail = $detail->toArray();
         $oaOrder = OaOrder::where('id', $detail['oa_order_id'])->first();
         try {
             DB::beginTransaction();
 
             $sys_menu = SysMenu::where('id', $oaOrder->menu_id)->value('title') ?? "";
-            $send_data = [];
             switch ($state) {
                 //审核通过
                 case 1:
@@ -632,23 +582,6 @@ class OaService extends Service
                             DB::rollBack();
                             return [false,$parent_msg];
                         }
-
-                        //审核通过 发送消息
-                        $send_data[] = [
-                            'employee_id' => $order_detail['crt_id'],
-                            'type' => 2,
-                            'state' => 0,
-                            'menu_id' => $oaOrder->menu_id,
-                            'order_number' => $order_detail['order_number'],
-                            'tmp_data' => [
-                                $order_detail['order_number'],
-                                $sys_menu,
-                                '通过',
-                                Employee::where('id',$user_id)->value('emp_name'),
-                                date('Y-m-d H:i:s'),
-                            ],
-                        ];
-                        $this->sendWxOaCheckMessage($send_data);
                     } else {
                         $oaOrder->state = 1;
                         $oaOrder->save();
@@ -670,73 +603,27 @@ class OaService extends Service
                                 'oa_order_sub_id' => $oa_order_sub_id,
                                 'employee_id' => $employee_id,
                             ];
-                            $send_data[] = [
-                                'employee_id' => $employee_id,
-                                'type' => 1,
-                                'state' => 0,
-                                'menu_id' => $oaOrder->menu_id,
-                                'order_number' => $order_detail['order_number'],
-                                'tmp_data' =>  [
-                                    $order_detail['order_number'],
-                                    $order_detail['crt_name'].'('.$sys_menu.')',
-                                    $emp_tmp,
-                                    date('Y-m-d H:i:s'),
-                                ],
-                            ];
                         }
                         OaOrderSubEmployee::insert($insert);
-
-                        //发送消息
-                        $this->sendWxOaCheckMessage($send_data);
                     }
                     break;
 
                 //审核驳回
                 case 2:
-                    list($employee_ids, $oa_sub_id,$order_detail) = $this->oaCommon($oaOrder->menu_id, ['order_number' => $oaOrder->order_no], 1, $detail['oa_sub_id'],$user);
-                    $tmp_data = [
-                        $oaOrder['order_no'],
-                        '拒绝',
-                        $order_detail['crt_time'],
-                        $remark ?? "(未填写原因)",
-                    ];
                     if ($detail['sort'] == 1 || true) {
                         $oaOrder->state = 3;
                         $oaOrder->save();
                         list($parent_status,$parent_msg) = $this->returnOa($oaOrder->order_no, 2, $oaOrder->opt_case);
-                        if(!$parent_status){
+                        if(! $parent_status){
                             DB::rollBack();
                             return [false,$parent_msg];
                         }
-                        $send_data[] = [
-                            'employee_id' => $order_detail['crt_id'],
-                            'type' => 3,
-                            'state' => 2,
-                            'menu_id' => $oaOrder->menu_id,
-                            'order_number' => $oaOrder['order_no'],
-                            'tmp_data' => $tmp_data,
-                        ];
-                    }else{
-                        $id = OaOrderSub::where('sort', ($detail['sort'] - 1))->where('oa_order_id', $oaOrder->id)->value('id');
-                        $employee_ids = OaOrderSubEmployee::where('oa_order_sub_id',$id)->pluck('employee_id')->toArray();
-                        foreach ($employee_ids as $v){
-                            $send_data[] = [
-                                'employee_id' => $v,
-                                'type' => 3,
-                                'state' => 2,
-                                'menu_id' => $oaOrder->menu_id,
-                                'order_number' => $oaOrder['order_no'],
-                                'tmp_data' => $tmp_data,
-                            ];
-                        }
                     }
+
                     OaOrderSub::where('sort', ($detail['sort'] - 1))->where('oa_order_id', $oaOrder->id)->update([
                         'state' => 0,
                         'remark' => $remark ?? "",
                     ]);
-
-                    //发送消息
-                    $this->sendWxOaCheckMessage($send_data);
                     break;
             }
 
@@ -746,12 +633,11 @@ class OaService extends Service
                 'remark' => $remark,
             ]);
 
-            //抄送 以及 组织发送数据
-            $send_data = $this->report($oaOrder, $detail['oa_sub_id'],$user_id,$sys_menu);
-            //发送数据
-            $this->sendWxOaCheckMessage($send_data);
+            //抄送
+            $this->report($oaOrder, $detail['oa_sub_id'],$user_id,$sys_menu);
+
             DB::commit();
-            return [true, '操作成功!'];
+            return [true, ''];
         } catch (\Exception $e) {
             DB::rollBack();
             return [false, $e->getLine() . ':' . $e->getMessage()];
@@ -775,7 +661,6 @@ class OaService extends Service
 
     public function report($oaOrder, $oa_sub_id,$user_id,$sys_menu)
     {
-        $return = [];
         $oa_sub_report_employee = OaSubReportEmployee::where('oa_sub_id', $oa_sub_id)->select('*')->get()->toArray();
         if (! empty($oa_sub_report_employee)) {
             $list = [];
@@ -784,36 +669,17 @@ class OaService extends Service
             $report->order_no = $oaOrder->order_no;
             $report->opt_case = $oaOrder->opt_case;
             $report->user_id = $user_id;
-            $report->channel = $this->user['depart_top'][0]['depart_id'];
+            $report->channel = $this->user['depart_top'][0]['depart_id'] ?? 0;
             $report->save();
 
-            //公共发送参数
-            $tmp_data = [
-                $oaOrder->order_no,
-                $sys_menu,
-                '审核通过',
-                Employee::where('id',$user_id)->value('emp_name'),
-                date('Y-m-d H:i:s'),
-            ];
             foreach ($oa_sub_report_employee as $v) {
                 $list[] = [
                     'employee_id' => $v['employee_id'],
                     'oa_report_order_id' => $report->id,
                 ];
-                $return[] = [
-                    'employee_id' => $v['employee_id'],
-                    'type' => 2,
-                    'state' => 0,
-                    'menu_id' => $oaOrder->menu_id,
-                    'order_number' => $oaOrder->order_no,
-                    'tmp_data' => $tmp_data,
-                ];
-//                $this->sendWxMsg($v['employee_id'],2,0,$oaOrder->menu_id,$tmp_data);
             }
             OaReportOrderEmployee::insert($list);
         }
-
-        return $return;
     }
 
     public function returnOa($order_no, $type, $opt_case)
@@ -843,8 +709,8 @@ class OaService extends Service
         $act = $path[$api]["act"];
         $new = new $control();
         $detail = $new->$act($request);
-//        if(!isset($detail['data']['data'][0])) $detail['data']['data'][0] = $detail['data'];
-        return $detail['data']['data'][0];
+
+        return $detail['data']['data'][0] ?? [];
     }
 
     public function getMenu()
@@ -901,8 +767,6 @@ class OaService extends Service
         if (in_array($state->state, [0, 2])) return [true, ['state' => 1, 'id' => $state->id]];
 
         return [true, ['state' => 0]];
-
-
     }
 
     public function checkAllOver($data)
@@ -910,13 +774,7 @@ class OaService extends Service
         $order_no = $data['order_number'];
         $menu_id = $data['menu_id'];
         $op_case = $data['opt_case'];
-//        $oaOrder = OaOrder::where('order_no',$order_no)->first();
-//        $id = OaOrderSub::where('oa_order_id',$oaOrder->id)->orderBy('id','desc')->value('id');
-//        OaOrderSub::where('id',$id)->update([
-//            'state' => 1
-//        ]);
-//        $oaOrder->state = 1;
-//        $oaOrder->save();
+
         list($parent_status,$parent_msg) = $this->returnOa($order_no, 3, $op_case);
         if(!$parent_status) return [false,$parent_msg];
 
@@ -937,12 +795,8 @@ class OaService extends Service
         ];
         $oaOrder = OaOrder::where('id', $oaOrderSub->oa_order_id)->first();
         OaOrderSubEmployee::insert($add);
-        Construction::where('order_number', $oaOrder->order_no)->update([
-            'is_transfer' => 1
-        ]);
-//        $this->returnOa($order_no,3,$op_case);
-        return [true, '转签成功'];
 
+        return [true, ''];
     }
 
     public function oaSubUserDetail($data)
@@ -958,8 +812,8 @@ class OaService extends Service
         foreach ($oa_order_sub_employee_ids as $v) {
             $list[] = $employee_list[$v];
         }
-        return [true, $list];
 
+        return [true, $list];
     }
 
     public function oaGetTeamDetail($data)
@@ -967,7 +821,6 @@ class OaService extends Service
         $order_no = $data['order_no'];
         $oa_order_id = OaOrder::where('order_no', $order_no)->pluck('id')->toArray();
         if (empty($oa_order_id)) return [true, []];
-//        $oa_order_id = $first->id;
         $list = OaOrderSub::wherein('oa_order_id', $oa_order_id)->select('*')->orderBy('id', 'asc')->get()->toArray();
 
         $subEmployeeList = OaOrderSubEmployee::wherein('oa_order_id', $oa_order_id)->select('*')->get()->toArray();
@@ -988,9 +841,8 @@ class OaService extends Service
                 'state' => $v['state'],
             ];
         }
-//        $this->returnOa($order_no,3,$op_case);
-        return [true, $return];
 
+        return [true, $return];
     }
 
     public function oaSubRemark($data)
@@ -1001,9 +853,7 @@ class OaService extends Service
         $oa_order_id = $first->id;
         $remark = OaOrderSub::where('oa_order_id', $oa_order_id)->orderBy('sort', 'desc')->value('remark');
 
-//        $this->returnOa($order_no,3,$op_case);
         return [true, $remark];
-
     }
 
     public function reportList($data, $user)
@@ -1019,8 +869,7 @@ class OaService extends Service
             ->select('oo.*','o.id as sid','o.check','o.user_id','ee.emp_name');
         $list = $this->limit($list,'',$data);
 
-        return [true,$list];
-
+        return [true, $list];
     }
 
     public function reportCheck($data){
@@ -1040,7 +889,8 @@ class OaService extends Service
             ->where('o.check',0)
             ->groupBy('oo.id')->orderBy('oo.id','desc')
             ->select('oo.*','o.id as sid','o.check')->get()->toArray();
-        return [true,['total'=>count($list),'list'=>$list]];
+
+        return [true, ['total'=>count($list),'list'=>$list]];
     }
 
     public function reportTime($data){
@@ -1148,12 +998,6 @@ class OaService extends Service
                 $emp_tmp = $emp_id_key_list[$v['id']] ?? [];
                 $emp_tmp_str = implode('|',array_column($emp_tmp,'emp_name'));
                 $return[$order_no_tmp] = $emp_tmp_str;
-                //                $return[$order_no_tmp][] = [
-//                    'oa_order_id' => $v['oa_order_id'],
-//                    'sort' => $v['sort'],
-//                    'team' => $emp_id_key_list[$v['id']],
-//                    'state' => $v['state'],
-//                ];
             }
         }
 

+ 0 - 5
app/Service/Service.php

@@ -393,11 +393,6 @@ class Service
         return true;
     }
 
-    public function getDepart($user){
-        if(empty($user)) return 0;
-        return $user['depart_select']['depart_id'];
-    }
-
     public function getTopId($id, $data) {
         foreach ($data as $item) {
             if ($item['id'] == $id) {

+ 27 - 0
routes/api.php

@@ -27,6 +27,33 @@ Route::any('uploadFiles/{file_name}', 'Api\FileUploadController@getFile');
 Route::any('getExport/{file_name}','Api\SysMenuController@getExport');
 
 Route::group(['middleware'=> ['checkLogin']],function ($route){
+    //oa
+    $route->any('oaGetData', 'Api\OaController@oaGetData');
+    $route->any('getOperationList', 'Api\OperationLogController@getOperationList');
+    $route->any('createOaOrder', 'Api\OaController@createOaOrder');
+    $route->any('oaCheck', 'Api\OaController@oaCheck');
+    $route->any('oaOrderList', 'Api\OaController@oaOrderList');
+    $route->any('oaList', 'Api\OaController@oaList');
+    $route->any('oaDel', 'Api\OaController@oaDel');
+    $route->any('oaEdit', 'Api\OaController@oaEdit');
+    $route->any('oaDetail', 'Api\OaController@oaDetail');
+    $route->any('setOperationList', 'Api\OperationLogController@setOperationList');
+    $route->any('oaOrderState', 'Api\OaController@oaOrderState');
+    $route->any('oaGetTeamDetail', 'Api\OaController@oaGetTeamDetail');
+    $route->any('checkAllOver', 'Api\OaController@checkAllOver');
+    $route->any('oaCheckMove', 'Api\OaController@oaCheckMove');
+    $route->any('oaSubUserDetail', 'Api\OaController@oaSubUserDetail');
+    $route->any('oaSubRemark', 'Api\OaController@oaSubRemark');
+    $route->any('reportList', 'Api\OaController@reportList');
+    $route->any('reportCount', 'Api\OaController@reportCount');
+    $route->any('reportCheck', 'Api\OaController@reportCheck');
+    $route->any('reportTime', 'Api\OaController@reportTime');
+    //审批流参数
+    $route->any('oaParamGet','Api\OaController@oaParamGet');
+
+    //触发审批
+    $route->any('checkAll', 'Api\CheckController@checkAll');
+
     //文件上传统一方法
     $route->any('uploadFile', 'Api\FileUploadController@uploadFile');
     $route->any('uploadFileForKq', 'Api\FileUploadController@uploadFileForKq');