|
|
@@ -2,19 +2,27 @@
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
-use App\Commodity;
|
|
|
use App\Exports\WaybillExport;
|
|
|
use App\Owner;
|
|
|
use App\Process;
|
|
|
use App\ProcessDaily;
|
|
|
-use App\User;
|
|
|
+use App\ProcessDailyParticipant;
|
|
|
+use App\ProcessesContent;
|
|
|
+use App\ProcessMethod;
|
|
|
+use App\ProcessStatistic;
|
|
|
+use App\Tutorial;
|
|
|
+use App\UserDetail;
|
|
|
use App\UserDutyCheck;
|
|
|
use Carbon\Carbon;
|
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
use Illuminate\Support\Facades\Gate;
|
|
|
+use Illuminate\Support\Facades\Validator;
|
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
|
+use PDO;
|
|
|
+use Ramsey\Uuid\Uuid;
|
|
|
|
|
|
class ProcessController extends Controller
|
|
|
{
|
|
|
@@ -24,8 +32,12 @@ class ProcessController extends Controller
|
|
|
$today=Carbon::now()->subDays(15);
|
|
|
if ($request->input('commodity_barcode')){
|
|
|
$barcode=$request->input('commodity_barcode');
|
|
|
- $processes=$processes->with('commodity')->whereHas('commodity',function (Builder $query)use($barcode){
|
|
|
- $query->where('barcode','like',$barcode.'%');
|
|
|
+ $processes=$processes->whereHas('processesContents',function ($query)use($barcode){
|
|
|
+ $query->whereHas('commodity',function ($builder)use($barcode){
|
|
|
+ $builder->whereHas('barcodes',function ($builder)use($barcode){
|
|
|
+ $builder->where('code','like',$barcode.'%');
|
|
|
+ });
|
|
|
+ });
|
|
|
});
|
|
|
}
|
|
|
if ($request->input('date_start')){
|
|
|
@@ -37,8 +49,16 @@ class ProcessController extends Controller
|
|
|
if ($request->input('owner_id')){
|
|
|
$processes=$processes->where('owner_id',$request->input('owner_id'));
|
|
|
}
|
|
|
+ if ($request->input('status')){
|
|
|
+ $processes=$processes->where('status',$request->input('status'));
|
|
|
+ }
|
|
|
if ($request->input('wms_code')){
|
|
|
- $processes=$processes->where('wms_code','like','%'.$request->input('wms_code').'%')->where('created_at','>',$today->format('Y-m-d'));
|
|
|
+ $wms_code=$request->input('wms_code');
|
|
|
+ $date=$today->format('Y-m-d');
|
|
|
+ $processes=$processes->whereHas('processesContents',function ($builder)use ($wms_code,$date){
|
|
|
+ $builder->where('wms_code','like','%'.$wms_code.'%')
|
|
|
+ ->where('created_at','>',$date);
|
|
|
+ });
|
|
|
}
|
|
|
$processes=$processes->paginate($request->input('paginate')??50);
|
|
|
return $processes;
|
|
|
@@ -52,14 +72,18 @@ class ProcessController extends Controller
|
|
|
public function index(Request $request)
|
|
|
{
|
|
|
if(!Gate::allows('二次加工管理-查询')){ return redirect(url('/')); }
|
|
|
- $processes=Process::with('tutorials')->orderBy('processes.id','DESC');
|
|
|
+ $processes=Process::with(['tutorials','processesContents'=>function($query){
|
|
|
+ return $query->with(['commodity'=>function($query){
|
|
|
+ return $query->with('barcodes');
|
|
|
+ }]);
|
|
|
+ }])->orderBy('processes.id','DESC');
|
|
|
if ($request->input('checkSign')){
|
|
|
$excel=$this->isExport($request,$processes);
|
|
|
return $excel;
|
|
|
}
|
|
|
$processes=$this->conditionQuery($request,$processes);
|
|
|
$owners=Owner::select('id','name')->get();
|
|
|
- return view('process.index',['processes'=>$processes,'owners'=>$owners]);
|
|
|
+ return view('process.index',['processes'=>$processes,'owners'=>$owners,'request'=>$request->input()]);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -80,10 +104,16 @@ class ProcessController extends Controller
|
|
|
//获取每日参与人
|
|
|
public function getDailyParticipant(Request $request){
|
|
|
if(!Gate::allows('二次加工管理-登记工时')){ return redirect(url('/')); }
|
|
|
+ $today=Carbon::now()->format('Y-m-d');
|
|
|
$id=$request->input('id');
|
|
|
- $processDailies=ProcessDaily::with('processDailyParticipants')->orderBy('time','DESC')
|
|
|
+ $processDailies=ProcessDaily::with(['processDailyParticipants','process'])->orderBy('date','DESC')
|
|
|
->where('process_id',$id)->get();
|
|
|
- if ($processDailies){
|
|
|
+ if (count($processDailies)>0){
|
|
|
+ $result=$this->createDeficiencyData($processDailies,$today);
|
|
|
+ if ($result){
|
|
|
+ $processDailies=ProcessDaily::with(['processDailyParticipants','process'])
|
|
|
+ ->orderBy('date','DESC')->where('process_id',$id)->get();
|
|
|
+ }
|
|
|
$processDailies=$this->countManHour($processDailies);
|
|
|
}
|
|
|
return $processDailies;
|
|
|
@@ -91,54 +121,58 @@ class ProcessController extends Controller
|
|
|
|
|
|
//根据参与人查找打卡记录计算工时信息
|
|
|
public function countManHour($processDailies){
|
|
|
- $today=Carbon::now()->format('Y-m-d');
|
|
|
- $date=date("Y-m-d",strtotime('+'.strval(5)." day",strtotime($today)));
|
|
|
- $processDailyOne=$processDailies[count($processDailies)-1];
|
|
|
- $startDate=Carbon::parse($processDailyOne->time);
|
|
|
- $diffDay=$startDate->diffInDays($today,true);
|
|
|
foreach ($processDailies as $processDaily){
|
|
|
- $date=$processDaily->time;
|
|
|
+ $date=$processDaily->date;
|
|
|
foreach ($processDaily->processDailyParticipants as $processDailyParticipant){
|
|
|
- $user=$processDailyParticipant->user_id;
|
|
|
- $userDutyCheckStart=UserDutyCheck::select('id','checked_at')->where('user_id',$user)
|
|
|
- ->where('checked_at','like',$date.'%')->where('type','登入')->orderBy('id')->first();
|
|
|
- $userDutyCheckEnd=UserDutyCheck::select('id','checked_at')->where('user_id',$user)
|
|
|
- ->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)
|
|
|
- ->where('checked_at','like',$date.'%')->where('type','登出')->orderBy('id','desc')->first();
|
|
|
- }
|
|
|
- if (!$userDutyCheckStart || !$userDutyCheckEnd){
|
|
|
- continue;
|
|
|
- }
|
|
|
- $dateStart=Carbon::parse($userDutyCheckStart->checked_at);
|
|
|
- $dateEnd=Carbon::parse($userDutyCheckEnd->checked_at);
|
|
|
- $hour=($dateEnd->diffInSeconds($dateStart))/3600; //打卡工时
|
|
|
- if ($processDailyParticipant->dinner_duration)$hour=$hour-(($processDailyParticipant->dinner_duration)/60); //减晚饭时间
|
|
|
- $hour=$this->isHour($userDutyCheckStart,$hour); //去除休息时间
|
|
|
- $processDailyParticipant->hour=round($hour,2);
|
|
|
- if ($hour&&$processDailyParticipant->hour_count){
|
|
|
- $diff=abs(round($processDailyParticipant->hour_count-$hour,2));
|
|
|
- $processDailyParticipant->diff=$diff;
|
|
|
- }
|
|
|
- //计件工
|
|
|
- if ($processDailyParticipant->unit_price){
|
|
|
- continue;
|
|
|
- }
|
|
|
- if ($hour&&$hour>8){
|
|
|
- $processDailyParticipant->billingHour=8;
|
|
|
- continue;
|
|
|
- }
|
|
|
- if ($hour&&$hour<=8){
|
|
|
- $processDailyParticipant->billingHour=round($hour,2);
|
|
|
- }
|
|
|
+ $processDailyParticipant->started_at=Carbon::parse($processDailyParticipant->started_at)->format('H:i');
|
|
|
+ $processDailyParticipant->ended_at=Carbon::parse($processDailyParticipant->ended_at)->format('H:i');
|
|
|
+ $processDailyParticipant=$this->countParticipantManHour($processDailyParticipant,$date);
|
|
|
}
|
|
|
}
|
|
|
return $processDailies;
|
|
|
}
|
|
|
|
|
|
+ //计算单参与人工时信息
|
|
|
+ public function countParticipantManHour($processDailyParticipant,$date){
|
|
|
+ $user=$processDailyParticipant->user_id;
|
|
|
+ $userDutyCheckStart=UserDutyCheck::select('id','checked_at')->where('user_id',$user)
|
|
|
+ ->where('checked_at','like',$date.'%')->where('type','登入')->orderBy('id')->first();
|
|
|
+ $userDutyCheckEnd=UserDutyCheck::select('id','checked_at')->where('user_id',$user)
|
|
|
+ ->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)
|
|
|
+ ->where('checked_at','like',$date.'%')->where('type','登出')->orderBy('id','desc')->first();
|
|
|
+ }
|
|
|
+ if (!$userDutyCheckStart || !$userDutyCheckEnd){
|
|
|
+ return $processDailyParticipant;
|
|
|
+ }
|
|
|
+ $dateStart=Carbon::parse($userDutyCheckStart->checked_at);
|
|
|
+ $dateEnd=Carbon::parse($userDutyCheckEnd->checked_at);
|
|
|
+ $hour=($dateEnd->diffInSeconds($dateStart))/3600; //打卡工时
|
|
|
+ if ($processDailyParticipant->dinner_duration)$hour=$hour-(($processDailyParticipant->dinner_duration)/60); //减晚饭时间
|
|
|
+ $hour=$this->isHour($userDutyCheckStart,$hour); //去除休息时间
|
|
|
+ $processDailyParticipant->hour=round($hour,2);
|
|
|
+ if ($hour&&$processDailyParticipant->hour_count){
|
|
|
+ $diff=abs(round($processDailyParticipant->hour_count-$hour,2));
|
|
|
+ $processDailyParticipant->diff=$diff;
|
|
|
+ }
|
|
|
+
|
|
|
+ //计件工 保留
|
|
|
+ /*if ($processDailyParticipant->unit_count){
|
|
|
+ return $processDailyParticipant;
|
|
|
+ }*/
|
|
|
+ if ($hour&&$hour>8){
|
|
|
+ $processDailyParticipant->billingHour=8;
|
|
|
+ return $processDailyParticipant;
|
|
|
+ }
|
|
|
+ if ($hour&&$hour<=8){
|
|
|
+ $processDailyParticipant->billingHour=round($hour,2);
|
|
|
+ }
|
|
|
+ return $processDailyParticipant;
|
|
|
+ }
|
|
|
+
|
|
|
//打卡工时减休息时间
|
|
|
public function isHour($userDutyCheckStart,$hour){
|
|
|
|
|
|
@@ -149,6 +183,34 @@ class ProcessController extends Controller
|
|
|
}
|
|
|
return $hour;
|
|
|
}
|
|
|
+ //生成二次加工单缺失时间记录及本日记录
|
|
|
+ public function createDeficiencyData($processDailies,$today){
|
|
|
+ $processDailiesArr=[];
|
|
|
+ foreach ($processDailies as $processDaily){
|
|
|
+ $processDailiesArr[$processDaily->date]=$processDaily;
|
|
|
+ }
|
|
|
+ $processDailyOne=$processDailies[count($processDailies)-1];
|
|
|
+ $startDate=Carbon::parse($processDailyOne->date);
|
|
|
+ $diffDay=$startDate->diffInDays($today,true);
|
|
|
+ $remain=$processDailyOne->remain;
|
|
|
+ $processId=$processDailyOne->process_id;
|
|
|
+ for ($i=1;$i<=$diffDay;$i++){
|
|
|
+ $date=date("Y-m-d",strtotime('+'.strval($i)." day",strtotime($startDate)));
|
|
|
+ if (!isset($processDailiesArr[$date])){
|
|
|
+ $processDaily=new ProcessDaily([
|
|
|
+ 'process_id'=>$processId,
|
|
|
+ 'date'=>$date,
|
|
|
+ 'output'=>0,
|
|
|
+ 'remain'=>$remain
|
|
|
+ ]);
|
|
|
+ $processDaily->save();
|
|
|
+ }
|
|
|
+ if (isset($processDailiesArr[$date])){
|
|
|
+ $remain=$remain-($processDailiesArr[$date]->output);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
//驳回二次加工单
|
|
|
public function reject($id){
|
|
|
@@ -162,8 +224,17 @@ class ProcessController extends Controller
|
|
|
//接单
|
|
|
public function receive($id){
|
|
|
if(!Gate::allows('二次加工管理-接单与驳回')){ return redirect(url('/')); }
|
|
|
- $process=Process::select('id','status')->find($id);
|
|
|
- $process->status="接单";
|
|
|
+ $process=Process::select('id','status','amount')->find($id);
|
|
|
+ $amount=$process->amount;
|
|
|
+ $today=Carbon::now()->format('Y-m-d');
|
|
|
+ $processDaily=new ProcessDaily([
|
|
|
+ 'process_id'=>$id,
|
|
|
+ 'date'=>$today,
|
|
|
+ 'output'=>0,
|
|
|
+ 'remain'=>$amount,
|
|
|
+ ]);
|
|
|
+ $processDaily->save();
|
|
|
+ $process->status="待加工";
|
|
|
$process->update();
|
|
|
$this->log(__METHOD__,"接单二次加工单_".__FUNCTION__,json_encode($process),Auth::user()['id']);
|
|
|
return $process;
|
|
|
@@ -171,12 +242,269 @@ class ProcessController extends Controller
|
|
|
//完成
|
|
|
public function accomplish($id){
|
|
|
if(!Gate::allows('二次加工管理-验收完成')){ return redirect(url('/')); }
|
|
|
- $process=Process::select('id','status')->find($id);
|
|
|
+ $process=Process::with('processDailies')->find($id);
|
|
|
+ if (count($process->processDailies)>0){
|
|
|
+ $completed_amount=0;
|
|
|
+ foreach ($process->processDailies as $processDaily){
|
|
|
+ $completed_amount=$completed_amount+($processDaily->output);
|
|
|
+ }
|
|
|
+ $process->completed_amount=$completed_amount;
|
|
|
+ }
|
|
|
$process->status="已完成";
|
|
|
$process->update();
|
|
|
- $this->log(__METHOD__,"完成二次加工单_".__FUNCTION__,json_encode($process),Auth::user()['id']);
|
|
|
+
|
|
|
+ //统计:
|
|
|
+ $revenue=($process->unit_price)*($process->completed_amount); //收入合计
|
|
|
+ $processDailies=ProcessDaily::with('processDailyParticipants')->where('process_id',$id)->where('output','>',0)->get();
|
|
|
+ $duration_days=count($processDailies); //完成天数
|
|
|
+ $duration_man_hours=0; //总工时
|
|
|
+ $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);
|
|
|
+ if ($processDailyParticipant->unit_count){
|
|
|
+ $total_cost=$total_cost+(($processDailyParticipant->unit_count)*($processDailyParticipant->unit_price));
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $total_cost=$total_cost+(($processDailyParticipant->billingHour)*($processDailyParticipant->hour_price));
|
|
|
+ }
|
|
|
+ };
|
|
|
+ $gross_profit=$revenue-$total_cost; //毛利润
|
|
|
+ $gross_profit_rate=$gross_profit/$revenue; //毛利率
|
|
|
+ $processStatistic=ProcessStatistic::find($id);
|
|
|
+ $processStatistic->revenue=$revenue;
|
|
|
+ $processStatistic->duration_days=$duration_days;
|
|
|
+ $processStatistic->duration_man_hours=$duration_man_hours;
|
|
|
+ $processStatistic->total_cost=$total_cost;
|
|
|
+ $processStatistic->gross_profit=$gross_profit;
|
|
|
+ $processStatistic->gross_profit_rate=$gross_profit_rate;
|
|
|
+ $processStatistic->update();
|
|
|
+ $this->log(__METHOD__,"完成二次加工单_".__FUNCTION__,json_encode($process)." || ".json_encode($processStatistic),Auth::user()['id']);
|
|
|
return $process;
|
|
|
}
|
|
|
+
|
|
|
+ //修改当日产量
|
|
|
+ public function updateDailyOutput(Request $request){
|
|
|
+ if(!Gate::allows('二次加工管理-登记工时')){ return redirect(url('/')); }
|
|
|
+ $errors=$this->validator($request)->errors();
|
|
|
+ if (count($errors)>0)return ['status'=>"error",'data'=>$errors];
|
|
|
+ $id=$request->input('id');
|
|
|
+ $output=$request->input('output');
|
|
|
+ $processDaily=ProcessDaily::with('process')->find($id);
|
|
|
+ $processDaily->output=$output;
|
|
|
+ $processDaily->update();
|
|
|
+ $result=$this->countRemains($processDaily);
|
|
|
+ $processDailies=$result['processDailies'];
|
|
|
+ //$remain=$this->countRemain($processDaily);
|
|
|
+ //$processDaily->remain=$remain;
|
|
|
+ $this->log(__METHOD__,"修改当日产量".__FUNCTION__,json_encode($processDaily),Auth::user()['id']);
|
|
|
+ $response=[];
|
|
|
+ $response['status']='success';
|
|
|
+ $response['data']=$processDailies;
|
|
|
+ if (isset($result['process'])){$response['process']=$result['process'];}
|
|
|
+ return $response;
|
|
|
+ }
|
|
|
+ //每次修改,去查询该单下全部日期,逐个替换,前一天剩余减当天产量为当天剩余,无前天记录去拿单子预期产量
|
|
|
+ public function countRemains($processDaily){
|
|
|
+ if (!$processDaily || !$processDaily->process) return;
|
|
|
+ $processDailies=ProcessDaily::where('process_id',$processDaily->process_id)->orderBy('date')->get();
|
|
|
+ for ($i=0;$i<count($processDailies);$i++){
|
|
|
+ if ($i==0&&$processDailies[$i]->date>=$processDaily->date){
|
|
|
+ $processDailies[$i]->remain=($processDaily->process->amount)-$processDailies[$i]->output;
|
|
|
+ $processDailies[$i]->update();
|
|
|
+ }
|
|
|
+ if ($i>0&&$processDailies[$i]->date>=$processDaily->date){
|
|
|
+ $processDailies[$i]->remain=($processDailies[$i-1]->remain)-$processDailies[$i]->output;
|
|
|
+ $processDailies[$i]->update();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //同步二次加工单统计
|
|
|
+ $processDailiesStatistic=$processDailies->where('output','>',0);
|
|
|
+ $processStatistic=ProcessStatistic::find($processDaily->process_id); //如非录入渠道建单不生成统计单,报错
|
|
|
+ $processStatistic->top_capacity=$processDailiesStatistic->max('output');
|
|
|
+ $processStatistic->bottom_capacity=$processDailiesStatistic->min('output');
|
|
|
+ $processStatistic->average_capacity=$processDailiesStatistic->avg('output');
|
|
|
+ $processStatistic->update();
|
|
|
+ //修改二次加工单状态
|
|
|
+ $result=[];
|
|
|
+ if (count($processDailies)>0 && ($processDailies[(count($processDailies)-1)]->remain)<=0){
|
|
|
+ $result['process']=$this->changeProcessCheck($processDaily->process_id);
|
|
|
+ }
|
|
|
+ $result['processDailies']=$processDailies;
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ //剩余小于等于0,状态待验收
|
|
|
+ public function changeProcessCheck($process_id){
|
|
|
+ $process=Process::select('id','status')->find($process_id);
|
|
|
+ if ($process->status=="加工中"){
|
|
|
+ $process->status="待验收";
|
|
|
+ $process->update();
|
|
|
+ $processStatistic=ProcessStatistic::find($process_id);
|
|
|
+ $processStatistic->ended_at=date('Y-m-d H:i:s');
|
|
|
+ $processStatistic->update();
|
|
|
+ $this->log(__METHOD__,"二次加工单待验收".__FUNCTION__,json_encode($process)." || ".json_encode($processStatistic),Auth::user()['id']);
|
|
|
+ }
|
|
|
+ return $process_id;
|
|
|
+ }
|
|
|
+ /*//计算当日剩余 根据日期
|
|
|
+ public function countRemain($processDaily){
|
|
|
+ if (!$processDaily || !$processDaily->process) return;
|
|
|
+ $processDailies=ProcessDaily::where('process_id',$processDaily->process_id)
|
|
|
+ ->where('date','<=',$processDaily->date)->get();
|
|
|
+ $sum=0;
|
|
|
+ foreach ($processDailies as $processDaily){
|
|
|
+ $sum=$sum+($processDaily->output);
|
|
|
+ }
|
|
|
+ return ($processDaily->process->amount)-$sum;
|
|
|
+ }*/
|
|
|
+ //添加参与人
|
|
|
+ public function shortProcessDailyParticipant(Request $request){
|
|
|
+ if(!Gate::allows('二次加工管理-登记工时')){ return redirect(url('/')); }
|
|
|
+ $errors=$this->validatorProcessDailyParticipant($request)->errors();
|
|
|
+ if (count($errors)>0)return ['status'=>"error",'data'=>$errors];
|
|
|
+ $user_id=$request->input('user_id');
|
|
|
+ $started_at=$request->input('started_at');
|
|
|
+ $ended_at=$request->input('ended_at');
|
|
|
+ $daily_id=$request->input('daily_id');
|
|
|
+ $hour_count=$request->input('hour_count');
|
|
|
+ $unit_count=$request->input('unit_count');
|
|
|
+ $hour_price=$request->input('hour_price');
|
|
|
+ $unit_price=$request->input('unit_price');
|
|
|
+ $dinner_duration=$request->input('dinner_duration');
|
|
|
+ $remark=$request->input('remark');
|
|
|
+ $processDailyParticipant=new ProcessDailyParticipant([
|
|
|
+ 'process_daily_id'=>$daily_id,
|
|
|
+ 'user_id'=>$user_id,
|
|
|
+ 'started_at'=>$started_at,
|
|
|
+ 'ended_at'=>$ended_at,
|
|
|
+ 'hour_price'=>$hour_price,
|
|
|
+ 'hour_count'=>$hour_count,
|
|
|
+ 'unit_price'=>$unit_price,
|
|
|
+ 'unit_count'=>$unit_count,
|
|
|
+ 'dinner_duration'=>$dinner_duration,
|
|
|
+ 'remark'=>$remark,
|
|
|
+ ]);
|
|
|
+ $processDailyParticipant->save();
|
|
|
+ $this->log(__METHOD__,"添加新参与人".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
|
|
|
+ $result=[];
|
|
|
+ $processDaily=ProcessDaily::with('process')->select('process_id','date')->find($daily_id);
|
|
|
+ $date=$processDaily->date;
|
|
|
+ $processDailyParticipant=$this->countParticipantManHour($processDailyParticipant,$date);
|
|
|
+ if ($processDaily->process && $processDaily->process->status=="待加工"){
|
|
|
+ $process=Process::find($processDaily->process_id);
|
|
|
+ $process->status="加工中";
|
|
|
+ $process->update();
|
|
|
+ $result['process']=$processDaily->process_id;
|
|
|
+ $processStatistic=ProcessStatistic::find($processDaily->process_id);
|
|
|
+ $processStatistic->started_at=date('Y-m-d H:i:s');
|
|
|
+ $processStatistic->update();
|
|
|
+ $this->log(__METHOD__,"二次加工单加工中".__FUNCTION__,json_encode($process)." || ".json_encode($processStatistic),Auth::user()['id']);
|
|
|
+ }
|
|
|
+ $result['status']="success";
|
|
|
+ $result['data']=$processDailyParticipant;
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ //验证参与人
|
|
|
+ public function verifyUserName(Request $request){
|
|
|
+ $userName=$request->input('userName');
|
|
|
+ if (!$userName) return;
|
|
|
+ $result=$this->seekUserLabor($userName);
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ //根据全名查询临时工
|
|
|
+ public function seekUserLabor($userName){
|
|
|
+ $userDetails=UserDetail::with('user_labor')->where('type','临时工')->where('full_name',$userName)->get();
|
|
|
+ if (!$userDetails)return;
|
|
|
+ if (count($userDetails)==1){
|
|
|
+ if (!$userDetails[0]->user_labor)return;
|
|
|
+ return $userDetails[0];
|
|
|
+ }
|
|
|
+ //多个同名
|
|
|
+ foreach ($userDetails as $userDetail){
|
|
|
+ $userDutyCheck=UserDutyCheck::select('checked_at')->where("user_id",$userDetail->user_id)->orderBy('checked_at','DESC')->first();
|
|
|
+ if ($userDutyCheck)$userDetail->checked_at=$userDutyCheck->checked_at;
|
|
|
+ }
|
|
|
+ if (!$userDetails)return;
|
|
|
+ return $userDetails;
|
|
|
+ }
|
|
|
+ //修改参与人
|
|
|
+ public function updateProcessDailyParticipant(Request $request){
|
|
|
+ if(!Gate::allows('二次加工管理-登记工时')){ return redirect(url('/')); }
|
|
|
+ $id=$request->input('id');
|
|
|
+ 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->user_id=$request->input('user_id');
|
|
|
+ $processDailyParticipant->started_at=$request->input('started_at');
|
|
|
+ $processDailyParticipant->ended_at=$request->input('ended_at');
|
|
|
+ $processDailyParticipant->hour_count=$request->input('hour_count');
|
|
|
+ $processDailyParticipant->unit_count=$request->input('unit_count');
|
|
|
+ $processDailyParticipant->hour_price=$request->input('hour_price');
|
|
|
+ $processDailyParticipant->unit_price=$request->input('unit_price');
|
|
|
+ $processDailyParticipant->dinner_duration=$request->input('dinner_duration');
|
|
|
+ $processDailyParticipant->remark=$request->input('remark');
|
|
|
+ $processDailyParticipant->update();
|
|
|
+ $this->log(__METHOD__,"修改参与人".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
|
|
|
+ $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);
|
|
|
+ if (!$processDailyParticipant) return ['success'=>false];
|
|
|
+ $processDailyParticipant->status='已审核';
|
|
|
+ $processDailyParticipant->update();
|
|
|
+ $this->log(__METHOD__,"登记工时参与人审核".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
|
|
|
+ return ['success'=>true,'processDailyParticipant'=>$processDailyParticipant];
|
|
|
+ }
|
|
|
+ /*//临时工详情
|
|
|
+ public function showUserDetail(Request $request){
|
|
|
+ $id=$request->input('user_id');
|
|
|
+ $userDetail=UserDetail::with('user_labor')->find($id);
|
|
|
+ if (!$userDetail) return ['success'=>'false'];
|
|
|
+ return ['success'=>'true','userDetail'=>$userDetail];
|
|
|
+ }*/
|
|
|
+ //获取全部教程
|
|
|
+ public function getTutorials($id){
|
|
|
+ $process=Process::with('tutorials')->find($id);
|
|
|
+ $tutorials_id=[];
|
|
|
+ if ($process->tutorials){
|
|
|
+ foreach ($process->tutorials as $tutorial){
|
|
|
+ array_push($tutorials_id,$tutorial->id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $tutorials=Tutorial::where('owner_id',$process->owner_id)->get();
|
|
|
+ if ($tutorials_id && $tutorials) $tutorials=$tutorials->diff(Tutorial::whereIn('id',$tutorials_id)->get());
|
|
|
+ return ['success'=>true,'data'=>$tutorials];
|
|
|
+ }
|
|
|
+ //添加教程关联
|
|
|
+ public function selectedTutorial(Request $request){
|
|
|
+ $process_id=$request->input('process_id');
|
|
|
+ $tutorial_id=$request->input('tutorial_id');
|
|
|
+ if (!$process_id || !$tutorial_id) return ['success'=>false,'data'=>'二次加工或教程传递错误!'];
|
|
|
+ $tutorial=Tutorial::find($tutorial_id);
|
|
|
+ if (!$tutorial)return ['success'=>false,'data'=>'未找到相关教程!'];
|
|
|
+ $tutorial->processes()->syncWithoutDetaching([$process_id]);
|
|
|
+ $this->log(__METHOD__,"添加教程关联".__FUNCTION__,json_encode($process_id),Auth::user()['id']);
|
|
|
+ return ['success'=>true,'data'=>$tutorial];
|
|
|
+ }
|
|
|
+ //删除教程关联
|
|
|
+ public function deleteTutorial(Request $request){
|
|
|
+ $process_id=$request->input('process_id');
|
|
|
+ $tutorial_id=$request->input('tutorial_id');
|
|
|
+ if (!$process_id || !$tutorial_id) return ['success'=>false,'data'=>'二次加工或教程传递错误!'];
|
|
|
+ DB::table('process_tutorial')->where('process_id',$process_id)->where('tutorial_id',$tutorial_id)->delete();
|
|
|
+ $this->log(__METHOD__,"删除教程关联".__FUNCTION__,json_encode($process_id),Auth::user()['id']);
|
|
|
+ return ['success'=>true];
|
|
|
+ }
|
|
|
/**
|
|
|
* Show the form for creating a new resource.
|
|
|
*
|
|
|
@@ -184,18 +512,181 @@ class ProcessController extends Controller
|
|
|
*/
|
|
|
public function create()
|
|
|
{
|
|
|
- //
|
|
|
+ $processMethods=ProcessMethod::get();
|
|
|
+ return view('process/create',['processMethods'=>$processMethods]);
|
|
|
+ }
|
|
|
+
|
|
|
+ //货主ID获取教程
|
|
|
+ public function ownerGetTutorials($owner_id){
|
|
|
+ $tutorials=Tutorial::where('owner_id',$owner_id)->get();
|
|
|
+ return $tutorials;
|
|
|
+ }
|
|
|
+
|
|
|
+ //考勤
|
|
|
+ public function createReplenishClock(){
|
|
|
+ return view('process/checking-in/createReplenishClock');
|
|
|
+ }
|
|
|
+ //搜索临时工下打卡信息
|
|
|
+ public function checkUserLabors(Request $request){
|
|
|
+ $full_name=$request->input('full_name');
|
|
|
+ $userDetail=UserDetail::with(['userDutyChecks'=>function ($query){
|
|
|
+ return $query->orderBy('checked_at','DESC')->limit(5);
|
|
|
+ }])->where('full_name',$full_name)->get();
|
|
|
+ return ['success'=>true,'data'=>$userDetail];
|
|
|
+ }
|
|
|
+ //录入补卡
|
|
|
+ public function storeReplenishClock(Request $request){
|
|
|
+ $errors=$this->validatorUserDutyCheck($request)->errors();
|
|
|
+ if (count($errors)>0)return ['success'=>false,'data'=>$errors];
|
|
|
+ $user_id=$request->input('user_id');
|
|
|
+ $checked_at=$request->input('checked_at');
|
|
|
+ $type=$request->input('type');
|
|
|
+ $userDutyCheck=new UserDutyCheck([
|
|
|
+ 'user_id'=>$user_id,
|
|
|
+ 'checked_at'=>$checked_at,
|
|
|
+ 'type'=>$type,
|
|
|
+ 'source'=>'补入',
|
|
|
+ ]);
|
|
|
+ $userDutyCheck->save();
|
|
|
+ $this->log(__METHOD__,"录入补卡".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
|
|
|
+ return ['success'=>true,'data'=>$userDutyCheck];
|
|
|
+ }
|
|
|
+
|
|
|
+ //去往打卡审核
|
|
|
+ public function clockAudit(){
|
|
|
+ $date=date('Y-m-d');
|
|
|
+ $userDutyChecks=UserDutyCheck::with('userDetail')->where('checked_at','like',$date."%")->get();
|
|
|
+ return view('process/checking-in/clockAudit',['userDutyChecks'=>$userDutyChecks]);
|
|
|
+ }
|
|
|
+ //打卡审核
|
|
|
+ public function storeClockAudit(Request $request){
|
|
|
+ $id=$request->input('id');
|
|
|
+ $type=$request->input('type');
|
|
|
+ $userDutyCheck=UserDutyCheck::find($id);
|
|
|
+ $userDutyCheck->type=$type;
|
|
|
+ $userDutyCheck->verify_user_id=Auth::user()['id'];
|
|
|
+ $userDutyCheck->update();
|
|
|
+ $this->log(__METHOD__,"打卡审核".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
|
|
|
+ return $userDutyCheck->verify_user_id;
|
|
|
+ }
|
|
|
+ //打卡审核时判断是否异常
|
|
|
+ public function isException(Request $request){
|
|
|
+ $id=$request->input('id');
|
|
|
+ $checked_at=$request->input('checked_at');
|
|
|
+ $type=$request->input('type');
|
|
|
+ $user_id=$request->input('user_id');
|
|
|
+ if (!$id || !$checked_at || !$type || !$user_id)return ['exception'=>'数据异常!','duration_man_hour'=>''];
|
|
|
+ $userDutyCheck=UserDutyCheck::where('user_id',$user_id)->where('checked_at','<',$checked_at)->first();
|
|
|
+ if (!$userDutyCheck)return ['exception'=>'','duration_man_hour'=>''];
|
|
|
+ $dateStart=Carbon::parse($userDutyCheck->checked_at);
|
|
|
+ $dateEnd=Carbon::parse($checked_at);
|
|
|
+ $minute=($dateEnd->diffInMinutes($dateStart));
|
|
|
+ if ($type=="登入"&&$userDutyCheck->type=="登入"&&$minute>30){
|
|
|
+ return ['exception'=>'无出场纪录!','duration_man_hour'=>''];
|
|
|
+ }
|
|
|
+ if ($type=="登出"&&$userDutyCheck->type=="登出"&&$minute>30){
|
|
|
+ return ['exception'=>'无入场纪录!','duration_man_hour'=>''];
|
|
|
+ }
|
|
|
+ if ($type=="登出"&&$userDutyCheck->type=="登入"&&$minute>=720){
|
|
|
+ return ['exception'=>'时间异常!','duration_man_hour'=>''];
|
|
|
+ }
|
|
|
+ if ($type=="登出"&&$userDutyCheck->type=="登入"){
|
|
|
+ return ['exception'=>'','duration_man_hour'=>$minute/60];
|
|
|
+ }
|
|
|
+ return ['exception'=>'','duration_man_hour'=>''];
|
|
|
+ }
|
|
|
+
|
|
|
+ //去往任务审核
|
|
|
+ public function missionAudit(Request $request){
|
|
|
+ $processDailyParticipants=ProcessDailyParticipant::with(['processDaily','user_detail'])
|
|
|
+ ->orderBy('id','DESC');
|
|
|
+ $start_date=$request->input('start_date');
|
|
|
+ $end_date=$request->input('end_date');
|
|
|
+ $full_name=$request->input('full_name');
|
|
|
+ $mobile_phone=$request->input('mobile_phone');
|
|
|
+ if ($start_date) {
|
|
|
+ $processDailyParticipants->whereHas('processDaily',function (Builder $builder)use($start_date){
|
|
|
+ $builder->where('date','>=',$start_date);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if ($end_date) {
|
|
|
+ $processDailyParticipants->whereHas('processDaily',function (Builder $builder)use($end_date){
|
|
|
+ $builder->where('date','<=',$end_date);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if ($full_name){
|
|
|
+ $processDailyParticipants->whereHas('user_detail',function (Builder $builder)use($full_name){
|
|
|
+ $builder->where('full_name',$full_name);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if ($mobile_phone){
|
|
|
+ $processDailyParticipants->whereHas('user_detail',function (Builder $builder)use($mobile_phone){
|
|
|
+ $builder->where('mobile_phone',$mobile_phone);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ $processDailyParticipants=$processDailyParticipants->paginate($request->input('paginate')?$request->input('paginate'):50);
|
|
|
+ foreach ($processDailyParticipants as $processDailyParticipant){
|
|
|
+ if ($processDailyParticipant->processDaily){
|
|
|
+ $processDailyParticipant=$this->countParticipantManHour($processDailyParticipant,$processDailyParticipant->processDaily->date);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return view('process/checking-in/missionAudit',['processDailyParticipants'=>$processDailyParticipants,'request'=>$request->input()]);
|
|
|
+ }
|
|
|
+
|
|
|
+ //任务审核
|
|
|
+ public function storeMissionAudit(Request $request){
|
|
|
+ $id=$request->input('id');
|
|
|
+ if (!$id)return ['error'=>'提交审核失败!'];
|
|
|
+ $processDailyParticipant=ProcessDailyParticipant::find($id);
|
|
|
+ if (!$id)return ['error'=>'未找到对应记录!'];
|
|
|
+ $processDailyParticipant->status='已审核';
|
|
|
+ $processDailyParticipant->update();
|
|
|
+ $this->log(__METHOD__,"任务审核".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * Store a newly created resource in storage.
|
|
|
- *
|
|
|
- * @param \Illuminate\Http\Request $request
|
|
|
- * @return \Illuminate\Http\Response
|
|
|
- */
|
|
|
public function store(Request $request)
|
|
|
{
|
|
|
- //
|
|
|
+ if(!Gate::allows('二次加工管理-录入')){ return redirect(url('/')); }
|
|
|
+ $errors=$this->validatorProcess($request)->errors();
|
|
|
+ if (count($errors)>0)return ['error'=>$errors,'data'=>"process"];
|
|
|
+ $errors=[];
|
|
|
+ foreach ($request->input('processContents') as $processContent){
|
|
|
+ if ($processContent['addBtnShow'])continue;
|
|
|
+ $error=$this->validatorProcessContent($processContent)->errors();
|
|
|
+ if (count($error)>0)$errors[$processContent['wms_code']]=$error;
|
|
|
+ }
|
|
|
+ if (count($errors)>0)return ['error'=>$errors];
|
|
|
+ $process=new Process([
|
|
|
+ 'code'=>Uuid::uuid1(),
|
|
|
+ 'owner_id'=>$request->input('owner_id'),
|
|
|
+ 'process_method_id'=>$request->input('process_method_id'),
|
|
|
+ 'unit_price'=>$request->input('unit_price'),
|
|
|
+ 'remark'=>$request->input('remark'),
|
|
|
+ 'amount'=>$request->input('amount'),
|
|
|
+ ]);
|
|
|
+ $process->save();
|
|
|
+ $process->code='P'.date ("Ymd").str_pad($process->id,3,"0",STR_PAD_LEFT);
|
|
|
+ $process->update();
|
|
|
+ $processStatistic=new ProcessStatistic([
|
|
|
+ 'process_id'=>$process->id,
|
|
|
+ ]);
|
|
|
+ $processStatistic->save();
|
|
|
+ $this->log(__METHOD__,"录入二次加工单".__FUNCTION__,json_encode($process)." || ".json_encode($processStatistic),Auth::user()['id']);
|
|
|
+ foreach ($request->input('processContents') as $processContent){
|
|
|
+ if ($processContent['addBtnShow'])continue;
|
|
|
+ $processContentOne=new ProcessesContent([
|
|
|
+ 'process_id'=>$process->id,
|
|
|
+ 'bill_type'=>$processContent['bill_type'],
|
|
|
+ 'commodity_id'=>$processContent['commodity_id'],
|
|
|
+ 'wms_code'=>$processContent['wms_code'],
|
|
|
+ 'amount'=>$processContent['amount'],
|
|
|
+ ]);
|
|
|
+ $processContentOne->save();
|
|
|
+ $this->log(__METHOD__,"录入二次加工单内容单".__FUNCTION__,json_encode($processContentOne),Auth::user()['id']);
|
|
|
+ }
|
|
|
+ if ($request->input('tutorials'))$process->tutorials()->sync($request->input('tutorials'));
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -217,7 +708,13 @@ class ProcessController extends Controller
|
|
|
*/
|
|
|
public function edit($id)
|
|
|
{
|
|
|
- //
|
|
|
+ $process=Process::with(['processesContents'=>function($query){
|
|
|
+ return $query->with(['commodity'=>function($query){
|
|
|
+ return $query->with('barcodes');
|
|
|
+ }]);
|
|
|
+ }])->find($id);
|
|
|
+ $processMethods=ProcessMethod::get();
|
|
|
+ return view('process.edit',['process'=>$process,'processMethods'=>$processMethods]);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -229,7 +726,56 @@ class ProcessController extends Controller
|
|
|
*/
|
|
|
public function update(Request $request, $id)
|
|
|
{
|
|
|
- //
|
|
|
+
|
|
|
+ if(!Gate::allows('二次加工管理-录入')){ return redirect(url('/')); }
|
|
|
+ $errors=$this->validatorProcess($request)->errors();
|
|
|
+ if (count($errors)>0)return ['error'=>$errors,'data'=>"process"];
|
|
|
+ $errors=[];
|
|
|
+ foreach ($request->input('processContents') as $processContent){
|
|
|
+ if ($processContent['addBtnShow'])continue;
|
|
|
+ $error=$this->validatorProcessContent($processContent)->errors();
|
|
|
+ if (count($error)>0)$errors[$processContent['wms_code']]=$error;
|
|
|
+ }
|
|
|
+ if (count($errors)>0)return ['error'=>$errors];
|
|
|
+ $process=Process::find($id);
|
|
|
+ $process->owner_id=$request->input('owner_id');
|
|
|
+ $process->process_method_id=$request->input('process_method_id');
|
|
|
+ $process->unit_price=$request->input('unit_price');
|
|
|
+ $process->remark=$request->input('remark');
|
|
|
+ $process->amount=$request->input('amount');
|
|
|
+ $process->update();
|
|
|
+ $this->log(__METHOD__,"编辑二次加工单".__FUNCTION__,json_encode($process),Auth::user()['id']);
|
|
|
+ foreach ($request->input('processContents') as $processContent){
|
|
|
+ if ($processContent['addBtnShow'])continue;
|
|
|
+ if (!isset($processContent['id'])){
|
|
|
+ $processContentOne=new ProcessesContent([
|
|
|
+ 'process_id'=>$process->id,
|
|
|
+ 'bill_type'=>$processContent['bill_type'],
|
|
|
+ 'commodity_id'=>$processContent['commodity_id'],
|
|
|
+ 'wms_code'=>$processContent['wms_code'],
|
|
|
+ 'amount'=>$processContent['amount'],
|
|
|
+ ]);
|
|
|
+ $processContentOne->save();
|
|
|
+ $this->log(__METHOD__,"录入二次加工单内容单".__FUNCTION__,json_encode($processContentOne),Auth::user()['id']);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $processContentOne=ProcessesContent::find($processContent['id']);
|
|
|
+ $processContentOne->bill_type=$processContent['bill_type'];
|
|
|
+ $processContentOne->commodity_id=$processContent['commodity_id'];
|
|
|
+ $processContentOne->wms_code=$processContent['wms_code'];
|
|
|
+ $processContentOne->amount=$processContent['amount'];
|
|
|
+ $processContentOne->update();
|
|
|
+ $this->log(__METHOD__,"编辑二次加工单内容单".__FUNCTION__,json_encode($processContentOne),Auth::user()['id']);
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ //删除二次加工内容单
|
|
|
+ public function deleteProcessContent($id){
|
|
|
+ $processContent=ProcessesContent::find($id);
|
|
|
+ if (!$processContent) return ['success'=>false,'data'=>'为找到对应二次加工内容单'];
|
|
|
+ $processContent->delete();
|
|
|
+ return ['success'=>true];
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -250,38 +796,168 @@ class ProcessController extends Controller
|
|
|
'id'=>'ID',
|
|
|
'code'=>'任务号',
|
|
|
'owner_name'=>'货主',
|
|
|
- 'bill_type'=>'单据类型',
|
|
|
- 'wms_code'=>'单据号',
|
|
|
'process_method_name'=>'加工类型',
|
|
|
'amount'=>'预期数量',
|
|
|
+ 'completed_amount'=>'实际数量',
|
|
|
+ 'status'=>'状态',
|
|
|
'unit_price'=>'单价',
|
|
|
'created_at'=>'提交日期',
|
|
|
+ 'bill_type'=>'单据类型',
|
|
|
+ 'wms_code'=>'单据号',
|
|
|
'commodity_barcode'=>'商品编码',
|
|
|
'commodity_name'=>'商品名称',
|
|
|
- 'completed_amount'=>'实际数量',
|
|
|
- 'status'=>'状态',
|
|
|
+ 'thisAmount'=>'本次数量',
|
|
|
]];
|
|
|
$list=[];
|
|
|
$i=0;
|
|
|
foreach ($processes as $process){
|
|
|
- $w=[
|
|
|
- 'id'=>$process->id,
|
|
|
- 'code'=>$process->code ,
|
|
|
- 'owner_name'=>$process->owner_name ,
|
|
|
- 'bill_type'=>$process->bill_type ,
|
|
|
- 'wms_code'=>$process->wms_code ,
|
|
|
- 'process_method_name'=>$process->process_method_name,
|
|
|
- 'amount'=>$process->amount,
|
|
|
- 'unit_price'=>$process->unit_price,
|
|
|
- 'created_at'=>$process->created_at ,
|
|
|
- 'commodity_barcode'=>$process->commodity_barcode,
|
|
|
- 'commodity_name'=>$process->commodity_name ,
|
|
|
- 'completed_amount'=>$process->completed_amount,
|
|
|
- 'status'=>$process->status,
|
|
|
- ];
|
|
|
- $list[$i]=$w;
|
|
|
- $i++;
|
|
|
+ if (!$process->processesContents){
|
|
|
+ $w=[
|
|
|
+ 'id'=>$process->id,
|
|
|
+ 'code'=>$process->code ,
|
|
|
+ 'owner_name'=>$process->owner_name ,
|
|
|
+ 'process_method_name'=>$process->process_method_name,
|
|
|
+ 'amount'=>$process->amount,
|
|
|
+ 'unit_price'=>$process->unit_price,
|
|
|
+ 'created_at'=>$process->created_at ,
|
|
|
+ 'completed_amount'=>$process->completed_amount,
|
|
|
+ 'status'=>$process->status,
|
|
|
+ ];
|
|
|
+ $list[$i]=$w;
|
|
|
+ $i++;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ foreach($process->processesContents as $processesContent){
|
|
|
+ $barcodes="";
|
|
|
+ if ($processesContent->commodity && $processesContent->commodity->barcodes){
|
|
|
+ foreach ($processesContent->commodity->barcodes as $barcode){
|
|
|
+ if (!$barcodes){$barcodes=$barcode->code; continue;}
|
|
|
+ $barcodes=$barcodes.",".$barcode->code;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $w=[
|
|
|
+ 'id'=>$process->id,
|
|
|
+ 'code'=>$process->code ,
|
|
|
+ 'owner_name'=>$process->owner_name ,
|
|
|
+ 'bill_type'=>$processesContent->bill_type ,
|
|
|
+ 'wms_code'=>$processesContent->wms_code ,
|
|
|
+ 'process_method_name'=>$process->process_method_name,
|
|
|
+ 'amount'=>$process->amount,
|
|
|
+ 'thisAmount'=>$processesContent->amount,
|
|
|
+ 'unit_price'=>$process->unit_price,
|
|
|
+ 'created_at'=>$process->created_at ,
|
|
|
+ 'commodity_barcode'=>$barcodes,
|
|
|
+ 'commodity_name'=>$processesContent->commodity_name ,
|
|
|
+ 'completed_amount'=>$process->completed_amount,
|
|
|
+ 'status'=>$process->status,
|
|
|
+ ];
|
|
|
+ $list[$i]=$w;
|
|
|
+ $i++;
|
|
|
+ }
|
|
|
}
|
|
|
return Excel::download(new WaybillExport($row,$list),date('YmdHis', time()).'-二次加工单.xlsx');
|
|
|
}
|
|
|
+
|
|
|
+ public function validatorProcessContent(array $processContent){
|
|
|
+ $validator=Validator::make($processContent,[
|
|
|
+ 'wms_code'=>['required'],
|
|
|
+ 'commodity_id'=>['required','integer'],
|
|
|
+ 'bill_type'=>['required'],
|
|
|
+ 'amount'=>['required','min:0','max:999999','integer']
|
|
|
+ ],[
|
|
|
+ 'required'=>':attribute 不应为空',
|
|
|
+ 'min'=>':attribute 不得为0或为负',
|
|
|
+ 'integer'=>':attribute 必须为整数',
|
|
|
+ 'max'=>':attribute 输入值过大',
|
|
|
+ ],[
|
|
|
+ 'wms_code'=>'单据号',
|
|
|
+ 'commodity_id'=>'商品',
|
|
|
+ 'bill_type'=>'单据类型',
|
|
|
+ 'amount'=>'商品数量',
|
|
|
+ ]);
|
|
|
+ return $validator;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function validatorProcess(Request $request){
|
|
|
+ $validator=Validator::make($request->input(),[
|
|
|
+ 'owner_id'=>['required'],
|
|
|
+ 'process_method_id'=>['required','integer'],
|
|
|
+ 'amount'=>['required','integer'],
|
|
|
+ 'unit_price'=>['required','min:0','max:999999','numeric'],
|
|
|
+ ],[
|
|
|
+ 'required'=>':attribute 不应为空',
|
|
|
+ 'min'=>':attribute 不得为0或为负',
|
|
|
+ 'numeric'=>':attribute 必须为数字',
|
|
|
+ 'max'=>':attribute 输入值过大',
|
|
|
+ 'integer' =>':attribute 必须为整数',
|
|
|
+ ],[
|
|
|
+ 'owner_id'=>'货主',
|
|
|
+ 'process_method_id'=>'加工类型',
|
|
|
+ 'amount'=>'数量',
|
|
|
+ 'unit_price'=>'单价',
|
|
|
+ ]);
|
|
|
+ return $validator;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function validator(Request $request){
|
|
|
+ $validator=Validator::make($request->input(),[
|
|
|
+ 'id'=>['required','integer'],
|
|
|
+ 'output'=>'required|min:0|max:999999|numeric',
|
|
|
+ ],[
|
|
|
+ 'required'=>':attribute 不应为空',
|
|
|
+ 'min'=>':attribute 不得为0或为负',
|
|
|
+ 'numeric'=>':attribute 必须为数字',
|
|
|
+ 'max'=>':attribute 输入值过大',
|
|
|
+ ],[
|
|
|
+ 'output'=>'每日产量'
|
|
|
+ ]);
|
|
|
+ return $validator;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function validatorUserDutyCheck(Request $request){
|
|
|
+ $validator=Validator::make($request->input(),[
|
|
|
+ 'user_id'=>'required',
|
|
|
+ 'checked_at'=>'required|date_format:Y-m-d H:i',
|
|
|
+ 'type'=>'required',
|
|
|
+ ],[
|
|
|
+ 'date_format'=>':attribute 格式错误',
|
|
|
+ ],['checked_at'=>'日期']);
|
|
|
+ return $validator;
|
|
|
+ }
|
|
|
+
|
|
|
+ //参与人信息校验
|
|
|
+ public function validatorProcessDailyParticipant(Request $request){
|
|
|
+ $validator=Validator::make($request->input(),[
|
|
|
+ 'daily_id'=>'filled',
|
|
|
+ 'user_id'=>'required',
|
|
|
+ 'started_at'=>'required|date_format:H:i',
|
|
|
+ 'ended_at'=>'required|date_format:H:i',
|
|
|
+ 'hour_price'=>'required_without:unit_price|min:0|max:999999|numeric',
|
|
|
+ 'unit_price'=>'required_without:hour_price|min:0|max:999999|numeric',
|
|
|
+ 'dinner_duration'=>'nullable|integer',
|
|
|
+ 'hour_count'=>'required_with:hour_price|min:0|max:999999|numeric',
|
|
|
+ 'unit_count'=>'required_with:unit_price|min:0|max:999999|numeric',
|
|
|
+ 'remark'=>'nullable',
|
|
|
+ ],[
|
|
|
+ 'required'=>':attribute 不应为空',
|
|
|
+ 'min'=>':attribute 不得为0或为负',
|
|
|
+ 'numeric'=>':attribute 必须为数字',
|
|
|
+ 'max'=>':attribute 输入值过大',
|
|
|
+ 'required_without'=>':attribute 计时与计件至少填一项',
|
|
|
+ 'date_format'=>':attribute 格式错误',
|
|
|
+ 'integer'=>':attribute 选择错误',
|
|
|
+ ],[
|
|
|
+ 'daily_id'=>'所属每日单',
|
|
|
+ 'user_id'=>'参与人',
|
|
|
+ 'started_at'=>'开始时间',
|
|
|
+ 'ended_at'=>'结束时间',
|
|
|
+ 'hour_price'=>'计时工资',
|
|
|
+ 'unit_price'=>'计件工资',
|
|
|
+ 'dinner_duration'=>'晚饭时间',
|
|
|
+ 'hour_count'=>'计时工时',
|
|
|
+ 'unit_count'=>'计件数量',
|
|
|
+ 'remark'=>'备注',
|
|
|
+ ]);
|
|
|
+ return $validator;
|
|
|
+ }
|
|
|
}
|