ソースを参照

合同的状态做更新,显示审批人

cqpCow 1 年間 前
コミット
97c97e96cf

+ 10 - 7
app/Model/SalesOrder.php

@@ -44,6 +44,7 @@ class SalesOrder extends UseScopeBaseModel
     ];
 
     //安装件
+    const State_minus_one = -1;//驳回
     const State_zero = 0;//未确认
     const State_one = 1;//待确认
     const State_two = 2;//已确认
@@ -54,9 +55,10 @@ class SalesOrder extends UseScopeBaseModel
     const State_seven = 7;//完结 公司
     const State_eight = 8;//完结 客户
     public static $state = [
-        self::State_zero => '未确认',
-        self::State_one => '待确认',
-        self::State_two => '已确认',
+        self::State_minus_one => '已驳回',
+        self::State_zero => '待创建人确认',
+        self::State_one => '待审批人审核',
+        self::State_two => '审核通过',
         self::State_three => '已线上派单',
         self::State_four => '已门店派单',
         self::State_five => '已下施工单',
@@ -65,10 +67,11 @@ class SalesOrder extends UseScopeBaseModel
         self::State_eight => '客户完结',
     ];
     public static $state_2 = [
-        self::State_zero => '未确认',
-        self::State_one => '待确认',
-        self::State_two => '已确认',
-        self::State_three => '已确认',
+        self::State_minus_one => '已驳回',
+        self::State_zero => '待创建人确认',
+        self::State_one => '待审批人审核',
+        self::State_two => '审核通过',
+        self::State_three => '审核通过',
         self::State_four => '已门店派单',
         self::State_five => '已下施工单',
         self::State_six => '退换货',

+ 2 - 2
app/Service/CheckService.php

@@ -283,7 +283,7 @@ class CheckService extends Service
             ->first();
         if(empty($model)) return [false, '合同不存在或已被删除'];
         //安装件
-        if($model->state != SalesOrder::State_zero) return [false, '请确认合同状态,操作失败'];
+        if(! in_array($model->state, [SalesOrder::State_minus_one,SalesOrder::State_zero])) return [false, '请确认合同状态,操作失败'];
 
         SalesOrder::where('del_time',0)->where('id',$data['id'])
             ->update(['state' => SalesOrder::State_one]);
@@ -858,7 +858,7 @@ class CheckService extends Service
             $model->state = $state;
             $model->save();
         }else{
-            $model->state = SalesOrder::State_zero;
+            $model->state = SalesOrder::State_minus_one;
             $model->save();
         }
 

+ 52 - 0
app/Service/OaService.php

@@ -1030,4 +1030,56 @@ class OaService extends Service
 
         return $return;
     }
+
+    public function getOaTeamDetailList($order_no)
+    {
+        if(empty($order_no)) return [];
+        $orderNoGroups = OaOrder::whereIn('order_no', $order_no)
+            ->get()
+            ->groupBy('order_no');
+        $maxIds = $orderNoGroups->map(function ($group) {
+            return $group->max('id');
+        });
+        $map = $maxIds->toArray();
+        if(empty($map)) return [];
+        $map2 = array_flip($map);
+
+        $oa_order_id = array_values($map);
+        $list = OaOrderSub::whereIn('oa_order_id', $oa_order_id)
+            ->where('state',0)
+            ->select('id','state','oa_order_id')
+            ->orderBy('id', 'asc')
+            ->get()->toArray();
+        $subEmployeeList = OaOrderSubEmployee::whereIn('oa_order_id', $oa_order_id)
+            ->select('*')
+            ->get()->toArray();
+        $emp_id_key_list = [];
+        $employee_key_list = Employee::whereIn('id',array_unique(array_column($subEmployeeList,'employee_id')))
+            ->pluck('emp_name', 'id')
+            ->toArray();
+        foreach ($subEmployeeList as $v) {
+            $emp_id_key_list[$v['oa_order_sub_id']][] = [
+                'id' => $v['employee_id'],
+                'emp_name' => $employee_key_list[$v['employee_id']] ?? '',
+            ];
+        }
+
+        $return = [];
+        foreach ($list as $v) {
+            $order_no_tmp = $map2[$v['oa_order_id']] ?? "";
+            if($v['state'] == 0 && ! isset($return[$order_no_tmp])){
+                $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'],
+//                ];
+            }
+        }
+
+        return $return;
+    }
 }

+ 43 - 11
app/Service/SalesOrderService.php

@@ -1012,13 +1012,11 @@ class SalesOrderService extends Service
         $dispatch = $this->getDispatchData($data['data']);
 
         //指派金额
-        $fee = [];
-        $sales_o_info = SalesOrderOtherFee::where('del_time',0)
-            ->whereIn('sales_order_id',array_column($data['data'],'id'))
-            ->get()->toArray();
-        foreach ($sales_o_info as $value){
-            $fee[$value['sales_order_id']] = $value['other_fee_1'];
-        }
+        $fee = $this->getOtherMoney($data['data']);
+
+        //订单状态数据组织
+        $state_array = $this->getStateMake($data['data']);
+
         foreach ($data['data'] as $key => $value){
             $data['data'][$key]['plat_type_title'] = $basic_map[$value['plat_type']] ?? '';
             $data['data'][$key]['sales_order_type_title'] = SalesOrder::$order_type[$value['sales_order_type']] ?? '';
@@ -1034,19 +1032,29 @@ class SalesOrderService extends Service
             $data['data'][$key]['handover_time'] = $value['handover_time'] ? date('Y-m-d H:i:s',$value['handover_time']) : '';
             $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
             $data['data'][$key]['dispatch_time_second_time'] = $value['dispatch_time_second'] ? date('Y-m-d H:i:s',$value['dispatch_time_second']) : '';
-            $data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
+            $crt_name = $emp[$value['crt_id']] ?? '';
+            $data['data'][$key]['crt_name'] = $crt_name;
             $data['data'][$key]['product'] = $product[$value['id']] ?? [];
             $data['data'][$key]['employee_two_title'] = $employee_two[$value['id']] ?? "";
             $data['data'][$key]['purchase'] = $purchase[$value['id']] ?? "";
             $data['data'][$key]['fee'] = $fee[$value['id']] ?? "";
             if($value['sales_order_type'] == SalesOrder::Order_type_one){
-                if($value['model_type'] == SalesOrder::Model_type_four){
-                    $state = SalesOrder::$state[$value['state']] ?? '';
+                //安装件
+                if(! empty($state_array[$value['order_number']])){
+                    $emp_tmp = $state_array[$value['order_number']];
+                    $state = "待" . $emp_tmp . "审核";
+                }elseif($value['state'] == SalesOrder::State_zero){
+                    $state = "待" . $crt_name . "确认";
                 }else{
-                    $state = SalesOrder::$state_2[$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']] ?? '';
             }
             $data['data'][$key]['invoice_state_name'] = SalesOrder::$invoice_state[$value['invoice_state']] ?? '';
@@ -1377,4 +1385,28 @@ class SalesOrderService extends Service
 
         return $see_array;
     }
+
+    public function getOtherMoney($data){
+        $fee = [];
+        $sales_o_info = SalesOrderOtherFee::where('del_time',0)
+            ->whereIn('sales_order_id',array_column($data,'id'))
+            ->get()->toArray();
+        foreach ($sales_o_info as $value){
+            $fee[$value['sales_order_id']] = $value['other_fee_1'];
+        }
+
+        return $fee;
+    }
+
+    public function getStateMake($data){
+        if(empty($data)) return [];
+
+        $order_no = [];
+        foreach ($data as $value){
+            if($value['state'] != SalesOrder::State_one) continue;
+            $order_no[] = $value['order_number'];
+        }
+
+        return (new OaService())->getOaTeamDetailList($order_no);
+    }
 }