|
@@ -221,15 +221,25 @@ class PersonWorkService extends Service
|
|
|
list($status, $systemStats) = (new EmployeeService())->getEmployeesMonthStats($empIds, $data['month'], $user);
|
|
list($status, $systemStats) = (new EmployeeService())->getEmployeesMonthStats($empIds, $data['month'], $user);
|
|
|
if (!$status) return [false, $systemStats]; // 如果日历未设置,直接拦截
|
|
if (!$status) return [false, $systemStats]; // 如果日历未设置,直接拦截
|
|
|
|
|
|
|
|
|
|
+ // 字段中文映射,用于报错
|
|
|
|
|
+ $fieldNames = [
|
|
|
|
|
+ 'total_days' => '出勤总天数',
|
|
|
|
|
+ 'rd_total_days' => '研发出勤总天数',
|
|
|
|
|
+ 'total_hours' => '出勤总工时',
|
|
|
|
|
+ 'rd_total_hours'=> '研发总工时'
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
foreach ($data['details'] as $key => $value) {
|
|
foreach ($data['details'] as $key => $value) {
|
|
|
|
|
+ $lineTitle = "第" . ($key + 1) . "行:";
|
|
|
if (empty($value['employee_id'])) return [false, '人员不能为空'];
|
|
if (empty($value['employee_id'])) return [false, '人员不能为空'];
|
|
|
$empId = $value['employee_id'];
|
|
$empId = $value['employee_id'];
|
|
|
|
|
|
|
|
// 基础数字格式检查
|
|
// 基础数字格式检查
|
|
|
- foreach (['total_days', 'rd_total_days', 'total_hours', 'rd_total_hours'] as $field) {
|
|
|
|
|
|
|
+ foreach ($fieldNames as $field => $title) {
|
|
|
|
|
+ if(! isset($value[$field])) return [false, $lineTitle . $title . "不存在"];
|
|
|
$precision = 2;
|
|
$precision = 2;
|
|
|
$res = $this->checkNumber($value[$field], $precision, 'non-negative');
|
|
$res = $this->checkNumber($value[$field], $precision, 'non-negative');
|
|
|
- if (!$res['valid']) return [false, $value['employee_title'] . "的" . $field . ":" . $res['error']];
|
|
|
|
|
|
|
+ if (!$res['valid']) return [false, $lineTitle . $value['employee_title'] . "的" . $title . ":" . $res['error']];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// --- 业务逻辑校验:出勤天数与工时合法性 ---
|
|
// --- 业务逻辑校验:出勤天数与工时合法性 ---
|
|
@@ -237,22 +247,22 @@ class PersonWorkService extends Service
|
|
|
if ($sysData) {
|
|
if ($sysData) {
|
|
|
// 1. 研发天数不能大于出勤总天数
|
|
// 1. 研发天数不能大于出勤总天数
|
|
|
if ($value['rd_total_days'] > $value['total_days']) {
|
|
if ($value['rd_total_days'] > $value['total_days']) {
|
|
|
- return [false, "第" . ($key + 1) . "行:研发出勤天数不能大于出勤总天数"];
|
|
|
|
|
|
|
+ return [false, $lineTitle . "研发出勤天数不能大于出勤总天数"];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 2. 研发工时不能大于出勤总工时
|
|
// 2. 研发工时不能大于出勤总工时
|
|
|
if ($value['rd_total_hours'] > $value['total_hours']) {
|
|
if ($value['rd_total_hours'] > $value['total_hours']) {
|
|
|
- return [false, "第" . ($key + 1) . "行:研发总工时不能大于出勤总工时"];
|
|
|
|
|
|
|
+ return [false, $lineTitle . "研发总工时不能大于出勤总工时"];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 4. 校验出勤总天数是否超过了系统计算的上限
|
|
// 4. 校验出勤总天数是否超过了系统计算的上限
|
|
|
if ($value['total_days'] != $sysData['attendance_days']) {
|
|
if ($value['total_days'] != $sysData['attendance_days']) {
|
|
|
- return [false, "人员[{$empId}]填写的出勤总天数({$value['total_days']})不等于系统核算的天数({$sysData['attendance_days']})"];
|
|
|
|
|
|
|
+ return [false, $lineTitle . "人员[{$empId}]填写的出勤总天数({$value['total_days']})不等于系统核算的天数({$sysData['attendance_days']})"];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//校验出勤总工时是否超过了系统计算的上限
|
|
//校验出勤总工时是否超过了系统计算的上限
|
|
|
if ($value['total_hours'] != $sysData['final_work_hour']) {
|
|
if ($value['total_hours'] != $sysData['final_work_hour']) {
|
|
|
- return [false, "人员[{$empId}]填写的出勤总工时({$value['total_hours']})不等于系统核算的工时({$sysData['final_work_hour']})"];
|
|
|
|
|
|
|
+ return [false, $lineTitle . "人员[{$empId}]填写的出勤总工时({$value['total_hours']})不等于系统核算的工时({$sysData['final_work_hour']})"];
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|