|
@@ -6,6 +6,7 @@ use App\Model\BusinessOpportunity;
|
|
|
use App\Model\Employee;
|
|
|
use App\Model\KqLeave;
|
|
|
use App\Model\KqList;
|
|
|
+use App\Model\KqOvertime;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
class KqService extends Service
|
|
@@ -241,7 +242,8 @@ class KqService extends Service
|
|
|
$data['order_number'] = (new OrderNoService())->createOrderNumber(KqLeave::$prefix);
|
|
|
$bool = KqLeave::where('del_time',0)
|
|
|
->where('crt_id',$user['id'])
|
|
|
- ->whereColumn('start_time', '>=', $data['end_time'])
|
|
|
+ ->whereColumn('start_time', '<=', $data['end_time'])
|
|
|
+ ->whereColumn('end_time', '>=', $data['start_time'])
|
|
|
->exists();
|
|
|
}else{
|
|
|
if(empty($data['id'])) return [false,'ID不能为空'];
|
|
@@ -261,4 +263,141 @@ class KqService extends Service
|
|
|
|
|
|
return [true, ''];
|
|
|
}
|
|
|
+
|
|
|
+ public function kqForOvertimeEdit($data,$user){
|
|
|
+ list($status,$msg) = $this->kqForOvertimeRule($data, $user, false);
|
|
|
+ if(! $status) return [$status,$msg];
|
|
|
+
|
|
|
+ try {
|
|
|
+ DB::beginTransaction();
|
|
|
+
|
|
|
+ $model = KqOvertime::where('id',$data['id'])->first();
|
|
|
+ $model->content = $data['content'] ?? "";
|
|
|
+ $model->start_time = $data['start_time'] ?? 0;
|
|
|
+ $model->end_time = $data['end_time'] ?? 0;
|
|
|
+ $model->save();
|
|
|
+
|
|
|
+ DB::commit();
|
|
|
+ }catch (\Exception $exception){
|
|
|
+ DB::rollBack();
|
|
|
+ return [false,$exception->getMessage()];
|
|
|
+ }
|
|
|
+
|
|
|
+ return [true, ''];
|
|
|
+ }
|
|
|
+
|
|
|
+ public function kqForOvertimeAdd($data,$user){
|
|
|
+ list($status,$msg) = $this->kqForOvertimeRule($data, $user);
|
|
|
+ if(! $status) return [$status,$msg];
|
|
|
+
|
|
|
+ try {
|
|
|
+ DB::beginTransaction();
|
|
|
+
|
|
|
+ $model = new KqOvertime();
|
|
|
+ $model->order_number = $data['order_number'] ?? "";
|
|
|
+ $model->content = $data['content'] ?? "";
|
|
|
+ $model->start_time = $data['start_time'] ?? 0;
|
|
|
+ $model->end_time = $data['end_time'] ?? 0;
|
|
|
+ $model->crt_id = $user['id'];
|
|
|
+ $model->save();
|
|
|
+
|
|
|
+ DB::commit();
|
|
|
+ }catch (\Exception $exception){
|
|
|
+ DB::rollBack();
|
|
|
+ return [false,$exception->getMessage()];
|
|
|
+ }
|
|
|
+
|
|
|
+ return [true, ''];
|
|
|
+ }
|
|
|
+
|
|
|
+ public function kqForOvertimeDel($data,$user){
|
|
|
+ if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
|
|
|
+
|
|
|
+ $overtime = KqOvertime::where('id',$data['id'])->where('del_time',0)->first();
|
|
|
+ if(empty($overtime)) return [false, '该加班申请不存在或已被删除'];
|
|
|
+ $overtime = $overtime->toArray();
|
|
|
+ if($overtime['state'] > KqOvertime::STATE_ZERO) return [false, '该加班申请已无法删除'];
|
|
|
+
|
|
|
+ try {
|
|
|
+ DB::beginTransaction();
|
|
|
+
|
|
|
+ KqOvertime::where('id',$data['id'])->update([
|
|
|
+ 'del_time'=> time()
|
|
|
+ ]);
|
|
|
+
|
|
|
+ DB::commit();
|
|
|
+ }catch (\Exception $exception){
|
|
|
+ DB::rollBack();
|
|
|
+ return [false,$exception->getMessage()];
|
|
|
+ }
|
|
|
+
|
|
|
+ return [true, ''];
|
|
|
+ }
|
|
|
+
|
|
|
+ public function kqForOvertimeList($data,$user){
|
|
|
+ $model = KqOvertime::where('del_time',0)
|
|
|
+ ->select('content','id','order_number','start_time','end_time','state','crt_id','crt_time')
|
|
|
+ ->orderby('id', 'desc');
|
|
|
+
|
|
|
+ if(! empty($data['id'])) $model->where('id', $data['id']);
|
|
|
+ if(isset($data['state'])) $model->where('state', $data['state']);
|
|
|
+ if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
|
|
|
+ $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
|
|
|
+ $model->where('crt_time','>=',$return[0]);
|
|
|
+ $model->where('crt_time','<=',$return[1]);
|
|
|
+ }
|
|
|
+
|
|
|
+ $list = $this->limit($model,'',$data);
|
|
|
+ $list = $this->fillOvertimeData($list);
|
|
|
+
|
|
|
+ return [true, $list];
|
|
|
+ }
|
|
|
+
|
|
|
+ public function fillOvertimeData($data){
|
|
|
+ if(empty($data['data'])) return $data;
|
|
|
+
|
|
|
+ $emp = Employee::whereIn('id',array_unique(array_column($data['data'],'crt_id')))
|
|
|
+ ->pluck('emp_name','id')
|
|
|
+ ->toArray();
|
|
|
+ foreach ($data['data'] as $key => $value){
|
|
|
+ $data['data'][$key]['crt_time'] = date("Y-m-d H:i:s", $value['crt_time']);
|
|
|
+ $data['data'][$key]['start_time'] = $value['start_time'] ? date("Y-m-d H:i",$value['start_time']): '';
|
|
|
+ $data['data'][$key]['end_time'] = $value['end_time'] ? date("Y-m-d H:i",$value['end_time']): '';
|
|
|
+ $data['data'][$key]['state_title'] = KqOvertime::$name[$value['state']] ?? "";
|
|
|
+ $data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
|
|
|
+ }
|
|
|
+
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function kqForOvertimeRule(&$data,$user,$is_add = true){
|
|
|
+ if(! empty($data['time'][0]) || ! empty($data['time'][1])) return [false, '加班时间不能为空'];
|
|
|
+ $data['start_time'] = $this->changeDateToDateMin($data['time'][0]);
|
|
|
+ $data['end_time'] = $this->changeDateToDateMin($data['time'][1]);
|
|
|
+
|
|
|
+ if($is_add){
|
|
|
+ $data['order_number'] = (new OrderNoService())->createOrderNumber(KqOvertime::$prefix);
|
|
|
+ $bool = KqOvertime::where('del_time',0)
|
|
|
+ ->where('crt_id',$user['id'])
|
|
|
+ ->whereColumn('start_time', '<=', $data['end_time'])
|
|
|
+ ->whereColumn('end_time', '>=', $data['start_time'])
|
|
|
+ ->exists();
|
|
|
+ }else{
|
|
|
+ if(empty($data['id'])) return [false,'ID不能为空'];
|
|
|
+ $Overtime = KqOvertime::where('del_time',0)->where('id',$data['id'])->first();
|
|
|
+ if(empty($Overtime)) return [false, '该加班申请不存在货已被删除'];
|
|
|
+ $Overtime = $Overtime->toArray();
|
|
|
+ if($Overtime['state'] > KqOvertime::STATE_ZERO) return [false, '该加班申请已无法编辑'];
|
|
|
+
|
|
|
+ $bool = KqOvertime::where('del_time',0)
|
|
|
+ ->where('crt_id',$user['id'])
|
|
|
+ ->whereColumn('start_time', '<=', $data['end_time'])
|
|
|
+ ->whereColumn('end_time', '>=', $data['start_time'])
|
|
|
+ ->where('id','<>',$data['id'])
|
|
|
+ ->exists();
|
|
|
+ }
|
|
|
+ if($bool) return [false, '该时间段内已存在加班申请'];
|
|
|
+
|
|
|
+ return [true, ''];
|
|
|
+ }
|
|
|
}
|