Browse Source

fix(attendance): 修复补卡时请假数据更新问题

- 新增逻辑处理今天有请假情况下的打卡记录更新
- 使用事务确保数据一致性
- 优化了打卡记录插入流程
master
liutong 10 months ago
parent
commit
d9f0cb75aa
  1. 31
      niucloud/app/api/controller/apiController/Attendance.php

31
niucloud/app/api/controller/apiController/Attendance.php

@ -16,6 +16,7 @@ use app\service\admin\campus\CampusService;
use app\service\api\apiService\AttendanceService;
use app\service\api\apiService\CommonService;
use core\base\BaseApiService;
use think\facade\Db;
/**
* 员工考勤控制器相关接口
@ -115,6 +116,30 @@ class Attendance extends BaseApiService
}
}
//获取今天请假的数据(leave_end_time>当前时间的 && attendance_date=当前日期的)请假数据,更新leave_end_time=当前时间
//请假的id
$leave_id_arr = new \app\model\attendance\Attendance();
if($campus_id === '0' || $campus_id === 0 || !empty($campus_id)){
$leave_id_arr = $leave_id_arr->where('campus_id',$campus_id);
}
$leave_id_arr = $leave_id_arr->where('staff_id',$staff_id)
->where('status','leave')
->where('attendance_date',$attendance_date)
->where('leave_end_time','>=',$date_h)->column('id');
Db::startTrans();
try {
if($leave_id_arr){
$update = \app\model\attendance\Attendance::whereIn('id',$leave_id_arr)->update([
'leave_end_time'=>$date_h,
'updated_at'=>$date_h,
]);
if(!$update){
// Db::rollback();
// return fail('更新请假数据失败');
}
}
//插入打卡记录
$data = [
'campus_id'=>$campus_id ?? 0,//
@ -126,10 +151,16 @@ class Attendance extends BaseApiService
'remarks'=>$remarks,//
];
$res = $obj->addData($data);
Db::commit();
if(!$res['code']){
Db::rollback();
return fail($res['msg']);
}
return success($res['data']);
}catch (\Exception $e){
Db::rollback();
return fail('操作失败');
}
}
//判断是签退
if($status == 'sign_out'){

Loading…
Cancel
Save