cqp 4 недель назад
Родитель
Сommit
2e3f3f0bf2

+ 7 - 0
app/Model/RD.php

@@ -13,4 +13,11 @@ class RD extends UseScopeBaseModel
     public static $field = ['order_number','id','item_id','start_time_hour','crt_time','order_time','crt_id','start_time_min','end_time_hour','end_time_min','total_hours'];
 
     protected $dateFormat = 'U';
+
+    const type_one = 1;
+    const type_two = 2;
+    public static $type_name = [
+        self::type_one => '研发人员工时单',
+        self::type_two => '研发设备工时单',
+    ];
 }

+ 5 - 1
app/Service/DeviceService.php

@@ -84,6 +84,7 @@ class DeviceService extends Service
                     'device_id' => $id,
                     'time' => $value['time'],
                     'total_hours' => $value['total_hours'],
+                    'total_hours_2' => $value['total_hours_2'],
                     'crt_time' => $time,
                 ];
             }
@@ -101,6 +102,7 @@ class DeviceService extends Service
             $unit[] = [
                 'time' => date("Y-m",$value['time']),
                 'total_hours' => $value['total_hours'],
+                'total_hours_2' => $value['total_hours_2'],
             ];
         }
 
@@ -207,7 +209,9 @@ class DeviceService extends Service
                 if(empty($value['time'])) return [false, '设备年月不能为空'];
                 $data['details'][$key]['time'] = $this->changeDateToMonth($value['time']);
                 $res = $this->checkNumber($value['total_hours'],0,'positive');
-                if(! $res['valid']) return [false,'总工时:' . $res['error']];
+                if(! $res['valid']) return [false,'满勤工时:' . $res['error']];
+                $res = $this->checkNumber($value['total_hours_2'],0,'positive');
+                if(! $res['valid']) return [false,'实际工时:' . $res['error']];
             }
         }
 

+ 5 - 2
app/Service/EmployeeService.php

@@ -134,6 +134,7 @@ class EmployeeService extends Service
                         'employee_id' => $model->id,
                         'time' => $value['time'],
                         'total_hours' => $value['total_hours'],
+                        'total_hours_2' => $value['total_hours_2'],
                     ];
                 }
                 EmployeeDetails::insert($details);
@@ -268,7 +269,7 @@ class EmployeeService extends Service
         $user = $return['data'][0] ?? [];
         $details = EmployeeDetails::where('del_time',0)
             ->where('employee_id',$data['id'])
-            ->select('time','total_hours')
+            ->select('time','total_hours','total_hours_2')
             ->get()->toArray();
         foreach ($details as $key => $value){
             $details[$key]['time'] = date("Y-m", $value['time']);
@@ -440,7 +441,9 @@ class EmployeeService extends Service
                 if(empty($value['time'])) return [false, '人员年月不能为空'];
                 $data['details'][$key]['time'] = $this->changeDateToMonth($value['time']);
                 $res = $this->checkNumber($value['total_hours'],0,'positive');
-                if(! $res['valid']) return [false,'总工时:' . $res['error']];
+                if(! $res['valid']) return [false,'满勤工时:' . $res['error']];
+                $res = $this->checkNumber($value['total_hours_2'],0,'positive');
+                if(! $res['valid']) return [false,'实际工时:' . $res['error']];
             }
         }
 

+ 8 - 5
app/Service/ItemService.php

@@ -244,12 +244,13 @@ class ItemService extends Service
         if(empty($data['is_use'])) return [false, '是否启用不能为空'];
         if(! isset(Item::Use[$data['is_use']])) return [false, '是否启用错误'];
 
-        if(! empty($data['man_list'])){
-            foreach ($data['man_list'] as $value){
-                if(empty($value['type'])) return [false, '类型不能为空'];
-                if(empty($value['data_id'])) return [false, '数据ID不能为空'];
-            }
+        if(empty($data['man_list'])) return [false, '研发人员不能为空'];
+        foreach ($data['man_list'] as $value){
+            if(empty($value['type'])) return [false, '类型不能为空'];
+            if(empty($value['data_id'])) return [false, '研发人员不能为空'];
         }
+        list($status, $msg) = $this->checkArrayRepeat($data['man_list'],'data_id','研发人员');
+        if(! $status) return [false, $msg];
 
         if(! empty($data['device_list'])){
             foreach ($data['device_list'] as $value){
@@ -377,6 +378,7 @@ class ItemService extends Service
 //                'work_days' => $data['work_days'],
 //                'each_day_hours' => $data['each_day_hours'],
                 'total_hours' => $data['total_hours'],
+                'total_hours_2' => $data['total_hours'],
                 'crt_time' => $time,
             ];
         }
@@ -397,6 +399,7 @@ class ItemService extends Service
 //                'work_days' => $data['work_days'],
 //                'each_day_hours' => $data['each_day_hours'],
                 'total_hours' => $data['total_hours'],
+                'total_hours_2' => $data['total_hours'],
                 'crt_time' => $time,
             ];
         }

+ 24 - 14
app/Service/RDService.php

@@ -19,6 +19,7 @@ class RDService extends Service
             DB::beginTransaction();
 
             $model = RD::where('id',$data['id'])->first();
+            $model->type = $data['type'] ?? 0;
             $model->item_id = $data['item_id'] ?? 0;
             $model->order_time = $data['order_time'] ?? 0;
             $model->start_time_hour = $data['start_time_hour'] ?? 0;
@@ -52,6 +53,7 @@ class RDService extends Service
 
             $model = new RD();
             $model->order_number = $this->generateOrderNumber();
+            $model->type = $data['type'] ?? 0;
             $model->item_id = $data['item_id'] ?? 0;
             $model->order_time = $data['order_time'] ?? 0;
             $model->start_time_hour = $data['start_time_hour'] ?? 0;
@@ -207,6 +209,7 @@ class RDService extends Service
             ->select($field)
             ->orderby('id', 'desc');
 
+        if(! empty($data['type'])) $model->where('type', $data['type']);
         if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%');
         if(! empty($data['order_number'])) $model->where('order_number', 'LIKE', '%'.$data['order_number'].'%');
         if(! empty($data['id'])) $model->whereIn('id', $data['id']);
@@ -241,23 +244,30 @@ class RDService extends Service
     }
 
     public function rdRule(&$data, $user, $is_add = true){
+        if(empty($data['type'])) return [false, '工时单类型不能为空'];
+        if(! isset(RD::$type_name[$data['type']])) return [false, '工时单类型错误'];
+        $type_title = RD::$type_name[$data['type']];
         if(empty($data['order_time'])) return [false, '订单日期不能为空'];
         $data['order_time'] = $this->changeDateToDate($data['order_time']);
-        if(empty($data['man_list'])) return [false, '研发人员不能为空'];
-        foreach ($data['man_list'] as $value){
-            if(empty($value['type'])) return [false, '类型不能为空'];
-            if(empty($value['data_id'])) return [false, '数据ID不能为空'];
-        }
-        if(empty($data['device_list'])) return [false, '研发设备不能为空'];
-        foreach ($data['device_list'] as $value){
-            if(empty($value['type'])) return [false, '类型不能为空'];
-            if(empty($value['data_id'])) return [false, '数据ID不能为空'];
+
+        if($data['type'] == RD::type_one){
+            if(empty($data['man_list'])) return [false, '研发人员不能为空'];
+            foreach ($data['man_list'] as $value){
+                if(empty($value['type'])) return [false, '类型不能为空'];
+                if(empty($value['data_id'])) return [false, '数据ID不能为空'];
+            }
+            list($status, $msg) = $this->checkArrayRepeat($data['man_list'],'data_id','研发人员');
+            if(! $status) return [false, $msg];
+        }else{
+            if(empty($data['device_list'])) return [false, '研发设备不能为空'];
+            foreach ($data['device_list'] as $value){
+                if(empty($value['type'])) return [false, '类型不能为空'];
+                if(empty($value['data_id'])) return [false, '数据ID不能为空'];
+            }
+            list($status, $msg) = $this->checkArrayRepeat($data['device_list'],'data_id','研发设备');
+            if(! $status) return [false, $msg];
         }
 
-        list($status, $msg) = $this->checkArrayRepeat($data['man_list'],'data_id','研发人员');
-        if(! $status) return [false, $msg];
-        list($status, $msg) = $this->checkArrayRepeat($data['device_list'],'data_id','研发设备');
-        if(! $status) return [false, $msg];
         if(empty($data['item_id'])) return [false,'项目不能为空'];
         $res = $this->checkNumber($data['start_time_hour'],0,'non-negative');
         if(! $res['valid']) return [false,'研发时段开始点:' . $res['error']];
@@ -277,7 +287,7 @@ class RDService extends Service
             $bool = RD::where('id',$data['id'])
                 ->where('del_time',0)
                 ->exists();
-            if(! $bool) return [false, '研发工时单不存在或已被删除'];
+            if(! $bool) return [false, $type_title . '不存在或已被删除'];
         }
 
         return [true, $data];

+ 34 - 0
config/header/80.php

@@ -0,0 +1,34 @@
+<?php
+/**
+ * '菜单ID' => [
+ *     '字段英文名' =》 '字段中文名'
+ * ]
+ */
+
+return [
+    [
+        'key' =>'order_number',
+        'value' => '订单号',
+    ],
+    [
+        'key' =>'order_time',
+        'value' => '单据日期',
+    ],
+    [
+        'key' =>'item_title',
+        'value' => '项目名称',
+    ],
+    [
+        'key' =>'start_time',
+        'value' => '研发开始时间',
+    ],
+    [
+        'key' =>'end_time',
+        'value' => '研发结束时间',
+    ],
+    [
+        'key' =>'total_hours',
+        'value' => '工时',
+        'sum' => 1,
+    ]
+];

+ 34 - 0
config/header/81.php

@@ -0,0 +1,34 @@
+<?php
+/**
+ * '菜单ID' => [
+ *     '字段英文名' =》 '字段中文名'
+ * ]
+ */
+
+return [
+    [
+        'key' =>'order_number',
+        'value' => '订单号',
+    ],
+    [
+        'key' =>'order_time',
+        'value' => '单据日期',
+    ],
+    [
+        'key' =>'item_title',
+        'value' => '项目名称',
+    ],
+    [
+        'key' =>'start_time',
+        'value' => '研发开始时间',
+    ],
+    [
+        'key' =>'end_time',
+        'value' => '研发结束时间',
+    ],
+    [
+        'key' =>'total_hours',
+        'value' => '工时',
+        'sum' => 1,
+    ]
+];

+ 2 - 0
routes/api.php

@@ -111,6 +111,8 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
 
     //研发工时
     $route->any('rdList', 'Api\RDController@rdList');
+    $route->any('rdManList', 'Api\RDController@rdList');
+    $route->any('rdDeviceList', 'Api\RDController@rdList');
     $route->any('rdEdit', 'Api\RDController@rdEdit');
     $route->any('rdAdd', 'Api\RDController@rdAdd');
     $route->any('rdDel', 'Api\RDController@rdDel');