cqpCow 2 years ago
parent
commit
8be59b1511

+ 18 - 0
app/Model/FinishedOrderScrapp.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ *
+ * Class Unit
+ * @package App\Models
+ */
+class FinishedOrderScrapp extends Model
+{
+    protected $table = "finished_order_scrapp"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+}

+ 40 - 0
app/Service/DispatchService.php

@@ -7,6 +7,7 @@ use App\Model\DispatchSub;
 use App\Model\Employee;
 use App\Model\EmployeeTeamPermission;
 use App\Model\Equipment;
+use App\Model\FinishedOrderSub;
 use App\Model\OrdersProduct;
 use App\Model\OrdersProductProcess;
 use App\Model\Process;
@@ -84,6 +85,9 @@ class DispatchService extends Service
 
             DispatchSub::insert($result);
 
+            //反写已派工数量
+            $this->writeDispatchQuantity(array_column($result,'order_product_id'));
+
             DB::commit();
         }catch (\Exception $e){
             DB::rollBack();
@@ -302,6 +306,7 @@ class DispatchService extends Service
             ->pluck('title','id')
             ->toArray();
 
+        $finished_map = $this->getFinishedQuantity(array_column($data['data'],'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']) : '';
@@ -313,9 +318,44 @@ class DispatchService extends Service
             $data['data'][$key]['process_name'] = $process_map[$value['process_id']] ?? '';
             $data['data'][$key]['team_name'] = $team_maps[$value['team_id']] ?? '';
             $data['data'][$key]['equipment_name'] = $equipment_map[$value['equipment_id']] ?? '';
+            $data['data'][$key]['un_finished_quantity'] = $value['dispatch_quantity'] - ($finished_map[$value['id']] ?? 0);
         }
         $data['dispatch_quantity'] = array_sum(array_column($data['data'], 'dispatch_quantity'));
 
         return $data;
     }
+
+    //反写写完工数量
+    public function writeDispatchQuantity($order_product_id){
+        if(empty($order_product_id)) return;
+
+        $result = DispatchSub::where('del_time',0)
+            ->whereIn('order_product_id',$order_product_id)
+            ->select(DB::raw("sum(dispatch_quantity) as dispatch_quantity"),'order_product_id')
+            ->groupby('order_product_id')
+            ->pluck('dispatch_quantity','order_product_id')
+            ->toArray();
+
+        if(empty($result)) return;
+
+        foreach ($result as $key => $value){
+            OrdersProduct::where('id',$key)->update([
+                'dispatch_complete_quantity' => $value
+            ]);
+        }
+    }
+
+    //返回已完工数量
+    public function getFinishedQuantity($dispatch_id = []){
+        if(empty($dispatch_id)) return [];
+
+        $result = FinishedOrderSub::where('del_time',0)
+            ->whereIn("dispatch_id",$dispatch_id)
+            ->select(DB::raw("sum(finished_num) as finished_num"),'dispatch_id')
+            ->groupby('dispatch_id')
+            ->pluck('finished_num','dispatch_id')
+            ->toArray();
+
+        return $result;
+    }
 }

+ 25 - 4
app/Service/FinishedOrderService.php

@@ -8,6 +8,7 @@ use App\Model\Employee;
 use App\Model\EmployeeTeamPermission;
 use App\Model\Equipment;
 use App\Model\FinishedOrder;
+use App\Model\FinishedOrderScrapp;
 use App\Model\FinishedOrderSub;
 use App\Model\OrdersProduct;
 use App\Model\OrdersProductProcess;
@@ -62,13 +63,14 @@ class FinishedOrderService extends Service
             date_default_timezone_set("PRC");
             foreach ($result as $key => $value){
                 $quantity_tmp = $data['quantity'][$key];
-                $quantity_tmp2 = $data['waste_quantity'][$key] ?? 0;
-                $scrapp = $data['scrapp'][$key] ?? 0;
 
+                $team_id_tmp = $data['team_id'][$key] ?? 0;
+                $equipment_id_tmp = $data['equipment_id'][$key] ?? 0;
+
+                $result[$key]['team_id'] = $team_id_tmp;
+                $result[$key]['equipment_id'] = $equipment_id_tmp;
                 $result[$key]['finished_no'] = $finished_no;
                 $result[$key]['finished_num'] = $quantity_tmp;
-                $result[$key]['waste_quantity'] = $quantity_tmp2;
-                $result[$key]['scrapp_id'] = $scrapp;
                 $result[$key]['crt_time'] = $time;
                 $result[$key]['crt_id'] = $user['id'];
 
@@ -88,6 +90,23 @@ class FinishedOrderService extends Service
 
             FinishedOrderSub::insert($result);
 
+            //获取上一次插入订单的所有id
+            $insert = [];
+            $last_insert_id = FinishedOrderSub::where('finished_no',$finished_no)->select('id')->get()->toArray();
+            $last_insert_id = array_column($last_insert_id,'id');
+            foreach ($data['waste'] as $key => $value){
+                foreach ($value as $v){
+                    if(empty($value)) continue;
+
+                    $insert[] = [
+                        'finished_order_id' => $last_insert_id[$key],
+                        'num' => $v['num'],
+                        'scrapp_id' => $v['scrapp_id']
+                    ];
+                }
+            }
+            if(!empty($insert)) FinishedOrderScrapp::insert($insert);
+
             $this->writeFinishedQuantity(array_column($result,'sale_orders_product_id'));
 
             DB::commit();
@@ -152,6 +171,8 @@ class FinishedOrderService extends Service
     public function orderRule($data){
         if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
         if($this->isEmpty($data,'quantity')) return [false,'请填写完工数量!'];
+        if($this->isEmpty($data,'team_id')) return [false,'班组不能为空!'];
+        if($this->isEmpty($data,'equipment_id')) return [false,'设备不能为空!'];
 
         $result = DispatchSub::whereIn('id',$data['id'])
             ->select('order_product_id','dispatch_no','id as dispatch_id','order_no','table_header_mark','product_no','product_title','product_size','product_unit','dispatch_quantity','technology_material','technology_name','wood_name','process_mark','table_body_mark','process_id','equipment_id','team_id','dispatch_time_start','dispatch_time_end','crt_time as dispatch_time','sale_orders_product_id','out_order_no_time')

+ 1 - 0
app/Service/ProductionOrderService.php

@@ -72,6 +72,7 @@ class ProductionOrderService extends Service
                 $result[$key]['production_no'] = $production_no;
                 $result[$key]['production_quantity'] = $quantity_tmp;
                 $result[$key]['production_time'] = $time;
+                $result[$key]['crt_id'] = $user['id'];
             }
             OrdersProduct::insert($result);