|
|
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
|
|
|
use App\Commodity;
|
|
|
use App\CommodityBarcode;
|
|
|
use App\Exports\Export;
|
|
|
+use App\LaborReport;
|
|
|
use App\Owner;
|
|
|
use App\Process;
|
|
|
use App\ProcessDaily;
|
|
|
@@ -16,6 +17,7 @@ use App\Sign;
|
|
|
use App\Tutorial;
|
|
|
use App\UserDetail;
|
|
|
use App\UserDutyCheck;
|
|
|
+use App\UserLabor;
|
|
|
use Carbon\Carbon;
|
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
|
use Illuminate\Http\Request;
|
|
|
@@ -140,12 +142,12 @@ class ProcessController extends Controller
|
|
|
$processDailies=ProcessDaily::with(['processDailyParticipants','process'])
|
|
|
->orderBy('date','DESC')->where('process_id',$id)->get();
|
|
|
}
|
|
|
- $processDailies=$this->countManHour($processDailies);
|
|
|
+ //$processDailies=$this->countManHour($processDailies);
|
|
|
}
|
|
|
return $processDailies;
|
|
|
}
|
|
|
|
|
|
- //根据参与人查找打卡记录计算工时信息
|
|
|
+ /*//根据参与人查找打卡记录计算工时信息
|
|
|
public function countManHour($processDailies){
|
|
|
foreach ($processDailies as $processDaily){
|
|
|
$date=$processDaily->date;
|
|
|
@@ -156,19 +158,19 @@ class ProcessController extends Controller
|
|
|
}
|
|
|
}
|
|
|
return $processDailies;
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
- //计算单参与人工时信息
|
|
|
+ /*//计算单参与人工时信息
|
|
|
public function countParticipantManHour($processDailyParticipant,$date){
|
|
|
- $user=$processDailyParticipant->user_id;
|
|
|
- $userDutyCheckStart=UserDutyCheck::select('id','checked_at')->where('user_id',$user)
|
|
|
+ $user_id=$processDailyParticipant->user_id;
|
|
|
+ $userDutyCheckStart=UserDutyCheck::select('id','checked_at')->where('user_id',$user_id)
|
|
|
->where('checked_at','like',$date.'%')->where('type','登入')->orderBy('id')->first();
|
|
|
- $userDutyCheckEnd=UserDutyCheck::select('id','checked_at')->where('user_id',$user)
|
|
|
+ $userDutyCheckEnd=UserDutyCheck::select('id','checked_at')->where('user_id',$user_id)
|
|
|
->where('checked_at','like',$date.'%')->where('type','登出')->orderBy('id','desc')->first();
|
|
|
//跨日情况寻找下一天
|
|
|
if (!$userDutyCheckEnd){
|
|
|
$date=date("Y-m-d",strtotime("+1 day",strtotime($date)));
|
|
|
- $userDutyCheckEnd=UserDutyCheck::select('id','checked_at')->where('user_id',$user)
|
|
|
+ $userDutyCheckEnd=UserDutyCheck::select('id','checked_at')->where('user_id',$user_id)
|
|
|
->where('checked_at','like',$date.'%')->where('type','登出')->orderBy('id','desc')->first();
|
|
|
}
|
|
|
if (!$userDutyCheckStart || !$userDutyCheckEnd){
|
|
|
@@ -186,9 +188,9 @@ class ProcessController extends Controller
|
|
|
}
|
|
|
|
|
|
//计件工 保留
|
|
|
- /*if ($processDailyParticipant->unit_count){
|
|
|
- return $processDailyParticipant;
|
|
|
- }*/
|
|
|
+ // if ($processDailyParticipant->unit_count){
|
|
|
+ // return $processDailyParticipant;
|
|
|
+ //}
|
|
|
if ($hour&&$hour>8){
|
|
|
$processDailyParticipant->billingHour=8;
|
|
|
return $processDailyParticipant;
|
|
|
@@ -197,9 +199,9 @@ class ProcessController extends Controller
|
|
|
$processDailyParticipant->billingHour=round($hour,2);
|
|
|
}
|
|
|
return $processDailyParticipant;
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
- //打卡工时减休息时间
|
|
|
+/* //打卡工时减休息时间
|
|
|
private function isHour($userDutyCheckStart,$hour){
|
|
|
|
|
|
$date=$userDutyCheckStart->checked_at;
|
|
|
@@ -208,7 +210,7 @@ class ProcessController extends Controller
|
|
|
$hour=$hour-1;
|
|
|
}
|
|
|
return $hour;
|
|
|
- }
|
|
|
+ }*/
|
|
|
//生成二次加工单缺失时间记录及本日记录
|
|
|
private function createDeficiencyData($processDailies,$today){
|
|
|
$processDailiesArr=[];
|
|
|
@@ -276,10 +278,10 @@ class ProcessController extends Controller
|
|
|
if(!Gate::allows('二次加工管理-交接完成')){ return ['success'=>false,'data'=>'您无权进行该操作!']; }
|
|
|
$process=Process::with('processDailies')->find($request->id);
|
|
|
if (!$process)return ['success'=>false];
|
|
|
- $process->update(['status'=>'交接完成']);
|
|
|
- $process->createOperatorLog('交接完成');
|
|
|
$result=$this->statistic($process);
|
|
|
if (!$result['success'])return $result;
|
|
|
+ $process->update(['status'=>'交接完成']);
|
|
|
+ $process->createOperatorLog('交接完成');
|
|
|
$processStatistic=$result['data'];
|
|
|
$this->log(__METHOD__,"完成二次加工单_".__FUNCTION__,json_encode($process)." || ".json_encode($processStatistic),Auth::user()['id']);
|
|
|
return ['success'=>true,'data'=>'交接完成'];
|
|
|
@@ -300,13 +302,13 @@ class ProcessController extends Controller
|
|
|
$total_cost=0; //合计成本
|
|
|
foreach ($processDailies as $processDailyOne){
|
|
|
foreach ($processDailyOne->processDailyParticipants as $processDailyParticipant){
|
|
|
- $processDailyParticipant=$this->countParticipantManHour($processDailyParticipant,$processDailyOne->date);
|
|
|
- $duration_man_hours=$duration_man_hours+($processDailyParticipant->billingHour);
|
|
|
+ //$processDailyParticipant=$this->countParticipantManHour($processDailyParticipant,$processDailyOne->date);
|
|
|
+ $duration_man_hours += $processDailyParticipant->hour_count;
|
|
|
if ($processDailyParticipant->unit_count){
|
|
|
- $total_cost=$total_cost+(($processDailyParticipant->unit_count)*($processDailyParticipant->unit_price));
|
|
|
+ $total_cost += ($processDailyParticipant->unit_count)*($processDailyParticipant->unit_price);
|
|
|
continue;
|
|
|
}
|
|
|
- $total_cost=$total_cost+(($processDailyParticipant->billingHour)*($processDailyParticipant->hour_price));
|
|
|
+ $total_cost += ($processDailyParticipant->hour_count)*($processDailyParticipant->hour_price);
|
|
|
}
|
|
|
};
|
|
|
$gross_profit=$revenue-$total_cost; //毛利润
|
|
|
@@ -387,7 +389,7 @@ class ProcessController extends Controller
|
|
|
}
|
|
|
return $process_id;
|
|
|
}
|
|
|
- public function shortProcessDailyParticipant(Request $request){
|
|
|
+ public function storeProcessDailyParticipant(Request $request){
|
|
|
if(!Gate::allows('二次加工管理-登记工时')){ return redirect(url('/')); }
|
|
|
$errors=$this->validatorProcessDailyParticipant($request)->errors();
|
|
|
if (count($errors)>0)return ['status'=>"error",'data'=>$errors];
|
|
|
@@ -401,6 +403,11 @@ class ProcessController extends Controller
|
|
|
$unit_price=$request->input('unit_price');
|
|
|
$dinner_duration=$request->input('dinner_duration');
|
|
|
$remark=$request->input('remark');
|
|
|
+ $userLabor=UserLabor::find($user_id);
|
|
|
+ $processDaily=processDaily::find($daily_id);
|
|
|
+ if ($userLabor->isOccupiedAt($processDaily->date,$ended_at)){
|
|
|
+ ['status'=>"warning",'data'=>'该临时工此时间段已存在工作记录!'];
|
|
|
+ };
|
|
|
$processDailyParticipant=new ProcessDailyParticipant([
|
|
|
'process_daily_id'=>$daily_id,
|
|
|
'user_id'=>$user_id,
|
|
|
@@ -415,10 +422,17 @@ class ProcessController extends Controller
|
|
|
]);
|
|
|
$processDailyParticipant->save();
|
|
|
$this->log(__METHOD__,"添加新参与人".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
|
|
|
+ $processDailyParticipant->load(['processDaily'=>function($query){
|
|
|
+ $query->with('process');
|
|
|
+ }]);
|
|
|
+ if ($processDailyParticipant->processDaily && $processDailyParticipant->processDaily->process &&
|
|
|
+ $processDailyParticipant->processDaily->process->status=='交接完成'){
|
|
|
+ $this->statistic($processDailyParticipant->processDaily->process);
|
|
|
+ }
|
|
|
$result=[];
|
|
|
$processDaily=ProcessDaily::with('process')->select('process_id','date')->find($daily_id);
|
|
|
- $date=$processDaily->date;
|
|
|
- $processDailyParticipant=$this->countParticipantManHour($processDailyParticipant,$date);
|
|
|
+ //$date=$processDaily->date;
|
|
|
+ //$processDailyParticipant=$this->countParticipantManHour($processDailyParticipant,$date);
|
|
|
if ($processDaily->process && $processDaily->process->status=="待加工"){
|
|
|
$process=Process::find($processDaily->process_id);
|
|
|
$process->status="加工中";
|
|
|
@@ -437,26 +451,41 @@ class ProcessController extends Controller
|
|
|
//验证参与人
|
|
|
public function verifyUserName(Request $request){
|
|
|
$userName=$request->input('userName');
|
|
|
- if (!$userName) return;
|
|
|
- $result=$this->seekUserLabor($userName);
|
|
|
- return $result;
|
|
|
+ if (!$userName) return ['success'=>false,'data'=>'未输入参与者!'];
|
|
|
+ $date = $request->date;
|
|
|
+ if (!$date){
|
|
|
+ $processDailyParticipant=ProcessDailyParticipant::query()->find($request->id);
|
|
|
+ $date=$processDailyParticipant->process_daily_date;
|
|
|
+ }
|
|
|
+ return $this->seekUserLabor($userName,$date);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//根据全名查询临时工
|
|
|
- public function seekUserLabor($userName){
|
|
|
- $userDetails=UserDetail::with('user_labor')->where('type','临时工')->where('full_name',$userName)->get();
|
|
|
- if (!$userDetails)return;
|
|
|
+ public function seekUserLabor($userName,$date){
|
|
|
+ $userDetails=UserDetail::with('userLabor')->where('type','临时工')->where('full_name',$userName)->get();
|
|
|
+ if (!$userDetails)return ['success'=>false,'data'=>'未找到临时工信息!'];
|
|
|
if (count($userDetails)==1){
|
|
|
- if (!$userDetails[0]->user_labor)return;
|
|
|
- return $userDetails[0];
|
|
|
+ if (!$userDetails[0]->userLabor)return ['success'=>false,'data'=>'该员工非临时工身份!'];
|
|
|
+ $laborReport=LaborReport::where('check_in_at','like',$date.'%')->where('user_id',$userDetails[0]->user_id)->first();
|
|
|
+ if ($laborReport){
|
|
|
+ $userDetails[0]->started_at=Carbon::parse($laborReport->thisRoundOnlineStartTime)->format('H:i');
|
|
|
+ $userDetails[0]->ended_at=Carbon::parse($laborReport->thisRoundOnlineEndTime)->format('H:i');
|
|
|
+ }
|
|
|
+ return ['success'=>true,'data'=>$userDetails[0]];
|
|
|
}
|
|
|
//多个同名
|
|
|
foreach ($userDetails as $userDetail){
|
|
|
$userDutyCheck=UserDutyCheck::select('checked_at')->where("user_id",$userDetail->user_id)->orderBy('checked_at','DESC')->first();
|
|
|
+ $laborReport=LaborReport::where('check_in_at','like',$date.'%')->where('user_id',$userDetail->user_id)->first();
|
|
|
+ if ($laborReport) {
|
|
|
+ $userDetail->started_at = Carbon::parse($laborReport->thisRoundOnlineStartTime)->format('H:i');
|
|
|
+ $userDetail->ended_at = Carbon::parse($laborReport->thisRoundOnlineEndTime)->format('H:i');
|
|
|
+ }
|
|
|
if ($userDutyCheck)$userDetail->checked_at=$userDutyCheck->checked_at;
|
|
|
}
|
|
|
- if (!$userDetails)return;
|
|
|
- return $userDetails;
|
|
|
+ if (!$userDetails)return ['success'=>false,'data'=>'未找到临时工信息!'];
|
|
|
+ return ['success'=>true,'data'=>$userDetails];
|
|
|
}
|
|
|
//修改参与人
|
|
|
public function updateProcessDailyParticipant(Request $request){
|
|
|
@@ -465,8 +494,14 @@ class ProcessController extends Controller
|
|
|
if (!$id) return ['status'=>"error",'data'=>"修改失败,ID未传递"];
|
|
|
$errors=$this->validatorProcessDailyParticipant($request)->errors();
|
|
|
if (count($errors)>0)return ['status'=>"error",'data'=>$errors];
|
|
|
- $processDailyParticipant=ProcessDailyParticipant::with('processDaily')->find($id);
|
|
|
- if (!$processDailyParticipant || ! $processDailyParticipant->processDaily) return ['status'=>"error",'data'=>"修改失败,该信息不存在"];
|
|
|
+ $processDailyParticipant=ProcessDailyParticipant::with(['processDaily'=>function($query){
|
|
|
+ $query->with('process');
|
|
|
+ },'userLabor'])->find($id);
|
|
|
+ if (!$processDailyParticipant || !$processDailyParticipant->processDaily
|
|
|
+ || !$processDailyParticipant->processDaily->process || !$processDailyParticipant->userLabor) return ['status'=>"error",'data'=>"修改失败,该信息不存在"];
|
|
|
+ if ($processDailyParticipant->userLabor->isOccupiedAt($processDailyParticipant->processDaily->date,$request->started_at)){
|
|
|
+ ['status'=>"error",'data'=>"该临时工此时间段已存在工作记录"];
|
|
|
+ }
|
|
|
$processDailyParticipant->user_id=$request->input('user_id');
|
|
|
$processDailyParticipant->started_at=$request->input('started_at');
|
|
|
$processDailyParticipant->ended_at=$request->input('ended_at');
|
|
|
@@ -478,10 +513,13 @@ class ProcessController extends Controller
|
|
|
$processDailyParticipant->remark=$request->input('remark');
|
|
|
$processDailyParticipant->update();
|
|
|
$this->log(__METHOD__,"修改参与人".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
|
|
|
- $processDailyParticipant=$this->countParticipantManHour($processDailyParticipant,$processDailyParticipant->processDaily->date);
|
|
|
+ if ($processDailyParticipant->processDaily->process->status=='交接完成'){
|
|
|
+ $this->statistic($processDailyParticipant->processDaily->process);
|
|
|
+ }
|
|
|
+ //$processDailyParticipant=$this->countParticipantManHour($processDailyParticipant,$processDailyParticipant->processDaily->date);
|
|
|
return ['status'=>"success",'data'=>$processDailyParticipant];
|
|
|
}
|
|
|
- //参与人审核
|
|
|
+ /*//参与人审核
|
|
|
public function processDailyParticipantAudit($id){
|
|
|
if(!Gate::allows('人事管理-任务审核')){ return redirect(url('/')); }
|
|
|
$processDailyParticipant=ProcessDailyParticipant::select('id','status')->find($id);
|
|
|
@@ -490,7 +528,7 @@ class ProcessController extends Controller
|
|
|
$processDailyParticipant->update();
|
|
|
$this->log(__METHOD__,"登记工时参与人审核".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
|
|
|
return ['success'=>true,'processDailyParticipant'=>$processDailyParticipant];
|
|
|
- }
|
|
|
+ }*/
|
|
|
//获取全部教程
|
|
|
public function getTutorials($id){
|
|
|
$process=Process::with('tutorials')->find($id);
|