Explorar o código

临时工申请系统 修复到岗率bug

ANG YU %!s(int64=4) %!d(string=hai) anos
pai
achega
d68de153cf

+ 4 - 2
app/Http/Controllers/LaborApplyController.php

@@ -10,6 +10,7 @@ use App\Services\LaborApplyService;
 use App\UserWorkgroup;
 use App\Warehouse;
 use Illuminate\Contracts\Foundation\Application;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\Request;
 use Illuminate\Routing\Redirector;
@@ -25,6 +26,7 @@ class LaborApplyController extends Controller
 
     public function index(Request $request, LaborApplyFilters $filters)
     {
+        /** @var Builder $builder */
         $builder = LaborApply::query()
             ->filter($filters)
             ->with(['warehouse', 'userWorkGroup', 'applyUser']);
@@ -35,8 +37,8 @@ class LaborApplyController extends Controller
             $builder->where('apply_user_id', \auth()->id());
         }
         $labor_applies = $builder
-            ->orderByDesc('created_at')
-            ->paginate();
+            ->orderByDesc('id')
+            ->simplePaginate();
         return view('personnel.laborApply.index', compact('labor_applies'));
     }
 

+ 3 - 3
app/Http/Controllers/LaborCompanyDispatchController.php

@@ -7,6 +7,7 @@ use App\LaborApply;
 use App\LaborCompany;
 use App\LaborCompanyDispatch;
 use App\User;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Request;
 use Illuminate\Support\Carbon;
 use Illuminate\Support\Facades\Gate;
@@ -16,6 +17,7 @@ class LaborCompanyDispatchController extends Controller
     public function index(Request $request, LaborCompanyDispatchFilters $filters)
     {
         //按照分配日期倒序
+        /** @var Builder $builder */
         $builder = LaborCompanyDispatch::query()
             ->filter($filters)
             ->with(['laborCompany.warehouse', 'laborCompanyDispatchDetails']);
@@ -31,10 +33,8 @@ class LaborCompanyDispatchController extends Controller
             $builder->whereIn('labor_company_id', $laborCompanyIds);
         }
         $labor_company_dispatches = $builder
-            ->orderByDesc('dispatch_date')
             ->orderByDesc('id')
-            ->paginate();
-
+            ->simplePaginate();
         return view('personnel.laborApply.dispatch.index', compact('labor_company_dispatches'));
     }
 

+ 0 - 14
app/LaborApply.php

@@ -26,10 +26,6 @@ class LaborApply extends Model
         'actual_num',//到岗人数
         'remark',//用工要求
     ];
-
-
-    protected $appends = ['arrive_rate'];
-
     static public $enums = [
         'status' => [
             '' => 0,
@@ -76,16 +72,6 @@ class LaborApply extends Model
         return $this->belongsTo(User::class, 'apply_user_id', 'id');
     }
 
-    public function getArriveRateAttribute()
-    {
-        if (0 === $this->actual_num) {
-            return '0'.'%';
-        }
-        $apply_num = $this->man_num + $this->woman_num;
-        $arrive_rate = $this->actual_num / $apply_num * 100;
-        return number_format($arrive_rate, 1) . '%';
-    }
-
     public function scopeFilter($query, $filters)
     {
         return $filters->apply($query);

+ 0 - 1
app/Services/LaborApplyService.php

@@ -226,7 +226,6 @@ class LaborApplyService
             $arrived_num =
                 DB::table('labor_reports')
                     ->selectRaw("count( DISTINCT 'identity_number',identity_number) as num")//根据身份证号去重防止重复入组
-
                     ->where('user_workgroup_id', $laborApply->user_workgroup_id)
                     ->whereDate('check_in_at', $check_in_at)
                     ->where('online_duration', '>=', self::CALCULATION_ARRIVED_MAN_NUM_MIN_ONLINE_DURATION)

+ 17 - 4
resources/views/personnel/laborApply/index.blade.php

@@ -66,6 +66,22 @@
                 ],
                 selectTr: 0
             },
+            created() {
+                //计算到岗率
+                this.labor_applies.map(item => {
+                    const created_at = item.created_at;
+                    const user_workgroup_id = item.user_workgroup_id;
+                    const same_items = this.labor_applies.filter(f_item => {
+                        return f_item.created_at.slice(0, 10) === created_at.slice(0, 10) && f_item.user_workgroup_id === user_workgroup_id
+                    });
+                    const total_applied_num = same_items.reduce((sum, current) => {
+                        return sum + (current.man_num + current.woman_num);
+                    }, 0)
+                    const arrive_rate = Math.floor((item.actual_num / total_applied_num) * 100);
+                    item.arrive_rate = arrive_rate + '%';
+                    return item;
+                });
+            },
             mounted() {
                 $('#list').removeClass('d-none');
                 let _this = this;
@@ -74,9 +90,8 @@
                     [
                         {name: 'created_at_start', type: 'dateTime', tip: '选择显示创建时间的起始时间'},
                         {name: 'created_at_end', type: 'dateTime', tip: '选择显示创建时间的截止时间'},
-
                     ]
-                ]
+                ];
                 _this.form = new query({
                     el: '#form_div',
                     condition: data,
@@ -96,7 +111,6 @@
                     {name: 'actual_num', value: '到岗人数'},
                     {name: 'arrive_rate', value: '到岗率'},
                     {name: 'do', value: '操作'},
-
                 ];
                 new Header({
                     el: "table",
@@ -107,7 +121,6 @@
                     fixedTop: ($('#form_div').height()) + ($('#btn').height()) + 1,
                 }).init();
             },
-
             methods: {
                 getEditlUrl(obj) {
                     return "{{ url('personnel/laborApply') }}/" + obj.id + '/edit';