cqpCow 1 anno fa
parent
commit
2d6f9f593e

+ 8 - 0
app/Model/PurchaseOrderInfo.php

@@ -10,4 +10,12 @@ class PurchaseOrderInfo extends Model
     const CREATED_AT = 'crt_time';
     const UPDATED_AT = 'upd_time';
     protected $dateFormat = 'U';
+    const STATE_ZERO = 0;//未发货
+    const STATE_ONE = 1;//部分已发货
+    const STATE_TWO = 2;//已发货
+    public static $name = [
+        0 => '未发货',
+        1 => '部分已发货',
+        2 => '已发货'
+    ];
 }

+ 1 - 1
app/Service/FollowUpRecordService.php

@@ -92,7 +92,7 @@ class FollowUpRecordService extends Service
         if(! $is_add){
             if($this->isEmpty($data,'id')) return [false,'ID不能为空!'];
         }
-        $data['visit_time'] = $this->changeDateToDate($data['visit_time']);
+        $data['visit_time'] = $this->changeDateToDateMin($data['visit_time']);
 
         return [true,''];
     }

+ 52 - 171
app/Service/PurchaseOrderService.php

@@ -4,6 +4,7 @@ namespace App\Service;
 
 
 use App\Model\Company;
+use App\Model\Depart;
 use App\Model\Employee;
 use App\Model\FoursShop;
 use App\Model\FoursShopStorehouse;
@@ -38,20 +39,18 @@ class PurchaseOrderService extends Service
             PurchaseOrderInfo::where('order_number',$data['order_number'])
                 ->where('del_time',0)
                 ->update(['del_time' => time()]);
-            if(! empty($data['product'])){
-                if(!empty($data['product'])){
-                    $sub = [];
-                    foreach ($data['product'] as $value){
-                        $sub[] = [
-                            'order_number' => $data['order_number'],
-                            'depart_id' => $data['depart_id'],
-                            'product_id' => $value['product_id'],
-                            'number' => $value['number'],
-                            'mark' => $value['mark'] ?? '',
-                        ];
-                    }
-                    PurchaseOrderInfo::insert($sub);
+            if(!empty($data['product'])){
+                $sub = [];
+                foreach ($data['product'] as $value){
+                    $sub[] = [
+                        'order_number' => $data['order_number'],
+                        'depart_id' => $data['depart_id'],
+                        'product_id' => $value['product_id'],
+                        'number' => $value['number'],
+                        'mark' => $value['mark'] ?? '',
+                    ];
                 }
+                PurchaseOrderInfo::insert($sub);
             }
 
             DB::commit();
@@ -75,20 +74,18 @@ class PurchaseOrderService extends Service
             $material_model->crt_id = $user['id'];
             $material_model->save();
 
-            if(! empty($data['product'])){
-                if(!empty($data['product'])){
-                    $sub = [];
-                    foreach ($data['product'] as $value){
-                        $sub[] = [
-                            'order_number' => $data['order_number'],
-                            'depart_id' => $data['depart_id'],
-                            'product_id' => $value['product_id'],
-                            'number' => $value['number'],
-                            'mark' => $value['mark'] ?? '',
-                        ];
-                    }
-                    PurchaseOrderInfo::insert($sub);
+            if(!empty($data['product'])){
+                $sub = [];
+                foreach ($data['product'] as $value){
+                    $sub[] = [
+                        'order_number' => $data['order_number'],
+                        'depart_id' => $data['depart_id'],
+                        'product_id' => $value['product_id'],
+                        'number' => $value['number'],
+                        'mark' => $value['mark'] ?? '',
+                    ];
                 }
+                PurchaseOrderInfo::insert($sub);
             }
 
             DB::commit();
@@ -103,84 +100,34 @@ class PurchaseOrderService extends Service
     public function detail($data){
         if($this->isEmpty($data,'order_number')) return [false,'请选择数据'];
 
-        $order = MaterialOrder::where('order_number',$data['order_number'])
-            ->select('id','order_number','four_shop_id','company_id','regional_manager','contract_phone','is_cash','is_give','apply_status','send_status','take_status','in_status')
-            ->first()->toArray();
-
-        $apply = MaterialOrderApply::where('del_time',0)
-            ->where('order_number',$data['order_number'])
-            ->select('id','apply_time','apply_id','area','check_id','check_time','mark')
-            ->first()->toArray();
-        $apply['status'] = $order['apply_status'];
-        $apply_sub = MaterialOrderApplySub::from('material_order_apply_sub as a')
-            ->leftJoin('basic_roll_film as b','b.id','a.basic_roll_film_id')
-            ->leftJoin('roll_film as c','c.id','a.roll_film_id')
-            ->where('a.order_number',$data['order_number'])
-            ->where('a.del_time',0)
-            ->select('a.roll_film_id','a.apply_number','a.basic_roll_film_id','a.mark','b.title as b_r_f_name','c.title','c.code')
-            ->get()->toArray();
-        $apply['apply_sub'] = $apply_sub;
-
-        $send = MaterialOrderSend::where('del_time',0)
-            ->where('order_number',$data['order_number'])
-            ->select('id','send','send_time','take','take_address','take_phone','logistics_company','logistics_number','check_id','check_time','mark')
-            ->first()->toArray();
-        $send['status'] = $order['send_status'];
-        $send_sub = MaterialOrderSendSub::from('material_order_send_sub as a')
-            ->leftJoin('basic_roll_film as b','b.id','a.basic_roll_film_id')
-            ->leftJoin('roll_film as c','c.id','a.roll_film_id')
-            ->where('a.order_number',$data['order_number'])
-            ->where('a.del_time',0)
-            ->select('a.id as sub_id','a.mark','a.roll_film_id','a.apply_number','a.roll_film_number','a.send_number','a.basic_roll_film_id','b.title as b_r_f_name','c.title','c.code')
-            ->get()->toArray();
-        $send['send_sub'] = $send_sub;
-
-        $take = MaterialOrderTake::where('del_time',0)
-            ->where('order_number',$data['order_number'])
-            ->select('id','take_time','take','check_id','check_time','mark')
-            ->first()->toArray();
-        $take['status'] = $order['take_status'];
-        $take_sub = MaterialOrderTakeSub::from('material_order_take_sub as a')
-            ->leftJoin('basic_roll_film as b','b.id','a.basic_roll_film_id')
-            ->leftJoin('roll_film as c','c.id','a.roll_film_id')
-            ->where('a.order_number',$data['order_number'])
-            ->where('a.del_time',0)
-            ->select('a.roll_film_id','a.mark','a.apply_number','a.roll_film_number','a.send_number','a.basic_roll_film_id','a.take_number','b.title as b_r_f_name','c.title','c.code')
-            ->get()->toArray();
-        $take['take_sub'] = $take_sub;
+        $order = PurchaseOrder::where('order_number',$data['order_number'])
+            ->where('del_time',0)
+            ->select('id','order_number','depart_id','mark','state','crt_id')
+            ->first();
+        if(empty($order)) return [false, '采购订单不存在或已被删除'];
 
-        $in = MaterialOrderIn::where('del_time',0)
+        $info = PurchaseOrderInfo::where('del_time',0)
             ->where('order_number',$data['order_number'])
-            ->select('id','in_time','in')
-            ->first()->toArray();
-        $in['status'] = $order['in_status'];
-        $in_sub = MaterialOrderInSub::from('material_order_in_sub as a')
-            ->leftJoin('basic_roll_film as b','b.id','a.basic_roll_film_id')
-            ->leftJoin('roll_film as c','c.id','a.roll_film_id')
-            ->where('a.order_number',$data['order_number'])
-            ->where('a.del_time',0)
-            ->select('a.roll_film_id','a.mark','a.apply_number','a.roll_film_number','a.basic_roll_film_id','a.send_number','a.take_number','a.in_number','b.title as b_r_f_name','c.title','c.code')
+            ->select('id','order_number','depart_id','product_id','number','mark')
             ->get()->toArray();
-        $in['in_sub'] = $in_sub;
+        $order['product'] = $info;
 
-        $order['apply'] = $apply;
-        $order['send'] = $send;
-        $order['take'] = $take;
-        $order['in'] = $in;
-
-        return [true,$order];
+        return [true, $order];
     }
 
     public function del($data){
         if($this->isEmpty($data,'order_number')) return [false,'请选择数据!'];
 
-        $bool = MaterialOrder::whereIn('order_number',$data['order_number'])
-            ->where('apply_status','>',MaterialOrder::STATE_ZERO)->exists();
-        if($bool) return [false,'领料单的申领单已审核,删除失败!'];
+        $bool = PurchaseOrder::where('order_number',$data['order_number'])
+            ->where('state','>',PurchaseOrder::STATE_ZERO)->exists();
+        if($bool) return [false,'采购订单已审核,删除失败!'];
 
         try{
             DB::beginTransaction();
-            MaterialOrder::whereIn('order_number',$data['order_number'])->update([
+            PurchaseOrder::where('order_number',$data['order_number'])->update([
+                'del_time'=>time()
+            ]);
+            PurchaseOrderInfo::where('order_number',$data['order_number'])->update([
                 'del_time'=>time()
             ]);
 
@@ -190,37 +137,21 @@ class PurchaseOrderService extends Service
             return [false,$e->getMessage()];
         }
 
-        return [true,'删除成功'];
+        return [true,''];
     }
 
     public function getList($data,$user){
-        $model = MaterialOrder::where('del_time',0)
-            ->select('order_number','id','four_shop_id','regional_manager','crt_time','company_id','apply_status','send_status','take_status','crt_id')
+        $model = PurchaseOrder::where('del_time',0)
+            ->select('order_number','id','depart_id','mark','crt_time','state','crt_id')
             ->orderby('id', 'desc');
         if(! empty($data['order_number'])) $model->where('order_number', 'LIKE', '%'.$data['order_number'].'%');
-        if(! empty($data['four_shop_id'])) $model->where('four_shop_id', $data['four_shop_id']);
+        if(! empty($data['depart_id'])) $model->where('depart_id', $data['depart_id']);
         if(! empty($data['company_id'])) $model->where('company_id', $data['company_id']);
-        if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) $model->whereBetween('crt_time',[$data['crt_time'][0],$data['crt_time'][1]]);
-        if(isset($data['apply_status'])) $model->where('apply_status',$data['apply_status']);
-        if(isset($data['send_status'])) $model->where('send_status',$data['send_status']);
-        if(isset($data['take_status'])) $model->where('take_status',$data['take_status']);
-        if(! empty($data['upd_time'][0]) && ! empty($data['upd_time'][1])) {
-            $model->whereBetween('upd_time',[$data['upd_time'][0],$data['upd_time'][1]]);
-            $model->where('take_status',MaterialOrder::STATE_TWO);
-        }
-        if(! empty($data['roll_film_number'])){
-            $order_numbers = RollFilmCompare::where('del_time',0)
-                ->where('roll_film_number', 'LIKE', '%'.$data['roll_film_number'].'%')
-                ->select('order_number')
-                ->get()->toArray();
-            $model->whereIn('order_number',array_column($order_numbers,'order_number'));
-        }
-        if(empty($user['four_shop'])){
-            $model->whereIn('four_shop_id',[]);
-        }else{
-            if($user['four_shop'][0] != FoursShop::RULE_FOUR_SHOP) $model->whereIn('four_shop_id',$user['four_shop']);
+        if(isset($data['state'])) $model->where('state',$data['state']);
+        if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
+            $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
+            $model->whereBetween('crt_time',[$return[0],$return[1]]);
         }
-        if(! empty($data['storehouse_id'])) $model->where('storehouse_id',$data['storehouse_id']);
 
         $list = $this->limit($model,'',$data);
         $list = $this->fillListData($list);
@@ -231,69 +162,19 @@ class PurchaseOrderService extends Service
     public function fillListData($data){
         if(empty($data['data'])) return $data;
 
-        $four_shop_id = array_unique(array_column($data['data'],'four_shop_id'));
-        $four_shop_map = FoursShop::whereIn('id',$four_shop_id)
-            ->pluck('title','id')
-            ->toArray();
-
-        $fours_shops = FoursShopStorehouse::from('fours_shop_storehouse as a')
-            ->leftJoin('storehouse as b','b.id','a.storehouse_id')
-            ->where('a.del_time',0)
-            ->whereIn('a.four_shop_id',$four_shop_id)
-            ->select('a.four_shop_id','b.title')
-            ->pluck('b.title','a.four_shop_id')
-            ->toArray();
-
-        $company_map = Company::whereIn('id',array_unique(array_column($data['data'],'company_id')))
+        $depart_id = array_unique(array_column($data['data'],'depart_id'));
+        $depart_map = Depart::whereIn('id',$depart_id)
             ->pluck('title','id')
             ->toArray();
 
-        $order_number = array_column($data['data'],'order_number');
-        $apply_map = [];
-        $apply = MaterialOrderApply::whereIn('order_number',$order_number)
-            ->select('apply_id','order_number')
-            ->where('del_time',0)
-            ->get()
-            ->toArray();
-
-        $send_map = [];
-        $send = MaterialOrderSend::whereIn('order_number',$order_number)
-            ->select('send','take','order_number')
-            ->where('del_time',0)
-            ->get()
-            ->toArray();
-        $emp_id = array_unique(array_merge_recursive(array_column($send,'send'),array_column($data['data'],'regional_manager'),array_column($apply,'apply_id'),array_column($data['data'],'crt_id')));
+        $emp_id = array_unique(array_column($data['data'],'crt_id'));
         $emp_map = Employee::whereIn('id',$emp_id)
                     ->pluck('emp_name','id')
                     ->toArray();
 
-        if(! empty($send)){
-            foreach ($send as $value){
-                $send_map[$value['order_number']]['send'] = $value['send'] ?? '';
-                $send_map[$value['order_number']]['take'] = $value['take'] ?? '';
-                $send_map[$value['order_number']]['send_name'] = $emp_map[$value['send']] ?? '';
-            }
-        }
-        if(! empty($apply)){
-            foreach ($apply as $value){
-                $apply_map[$value['order_number']] = $emp_map[$value['apply_id']] ?? '';
-            }
-        }
-
-        date_default_timezone_set('PRC');
         foreach ($data['data'] as $key => $value){
-            $data['data'][$key]['crt_time'] = $value['crt_time'] ? date("Y-m-d",$value['crt_time']) : '';
-            $data['data'][$key]['four_shop_name'] = $four_shop_map[$value['four_shop_id']] ?? '';
-            $data['data'][$key]['company_name'] = $company_map[$value['company_id']] ?? '';
-            $data['data'][$key]['apply_name'] = $apply_map[$value['order_number']] ?? '';
-            $data['data'][$key]['regional_manager_name'] = $emp_map[$value['regional_manager']] ?? '';
-            $data['data'][$key]['send'] = $send_map[$value['order_number']]['send'] ?? '';
-            $data['data'][$key]['take'] = $send_map[$value['order_number']]['take'] ?? '';
-            $data['data'][$key]['send_name'] = $send_map[$value['order_number']]['send_name'] ?? '';
-            $data['data'][$key]['storehouse_name'] = $fours_shops[$value['four_shop_id']] ?? '';
-            $data['data'][$key]['apply_status_name'] = MaterialOrderApply::$status[$value['apply_status']] ?? '';
-            $data['data'][$key]['send_status_name'] = MaterialOrderSend::$status[$value['send_status']] ?? '';
-            $data['data'][$key]['take_status_name'] = MaterialOrderTake::$status[$value['take_status']] ?? '';
+            $data['data'][$key]['crt_time'] = $value['crt_time'] ? date("Y-m-d H:i:s",$value['crt_time']) : '';
+            $data['data'][$key]['depart_name'] = $depart_map[$value['depart_id']] ?? '';
             $data['data'][$key]['crt_name'] = $emp_map[$value['crt_id']] ?? '';
         }
 

+ 1 - 1
app/Service/Service.php

@@ -313,7 +313,7 @@ class Service
 
     //前端传来的时间 转为时间戳
     //精确到分
-    function changeDateToDate($time){
+    function changeDateToDateMin($time){
         if(empty($time)) return '';
 
         // 创建一个 DateTime 对象并设置时区为 UTC