|
@@ -192,70 +192,98 @@ class WasteStatistics extends Api
|
|
|
$finalPenaltyData[] = $details;
|
|
$finalPenaltyData[] = $details;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
/*
|
|
/*
|
|
|
- * 处理奖励数据
|
|
|
|
|
- */
|
|
|
|
|
- $rewardData = [];
|
|
|
|
|
- $rewardMonthlyTotal = [];
|
|
|
|
|
- foreach ($list as $key => $value) {
|
|
|
|
|
- for ($i = 1; $i <= 10; $i++) {
|
|
|
|
|
- if (empty($value["JL_bh{$i}"])) {
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
- $employeeId = $value["JL_bh{$i}"];
|
|
|
|
|
- $employeeName = $value["奖励人员{$i}"];
|
|
|
|
|
- $department = $value["奖励部门{$i}"];
|
|
|
|
|
- $totalJLAmt = 0;
|
|
|
|
|
- for ($j = 1; $j <= 10; $j++) {
|
|
|
|
|
- $jlKey = "JL_Je{$j}";
|
|
|
|
|
- if (!empty($value[$jlKey]) && $value[$jlKey] > 0) {
|
|
|
|
|
- $totalJLAmt += $value[$jlKey] * $value['sczl_cl'];
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- $totalJLAmt = min($totalJLAmt, 100);
|
|
|
|
|
- $date = $value['sczl_rq'];
|
|
|
|
|
- $week = $value['week'];
|
|
|
|
|
- $foundSheets = $value['sczl_cl'];
|
|
|
|
|
- $monthKey = date('Y-m', strtotime($date)) . "_{$employeeId}";
|
|
|
|
|
- if (!isset($rewardData[$date][$employeeId])) {
|
|
|
|
|
- $rewardData[$date][$employeeId] = [
|
|
|
|
|
- '所在部门' => $department,
|
|
|
|
|
- '员工编号' => $employeeId,
|
|
|
|
|
- '员工姓名' => $employeeName,
|
|
|
|
|
- '发现次数' => 0,
|
|
|
|
|
- '发现张数' => 0,
|
|
|
|
|
- '奖励金额' => 0,
|
|
|
|
|
- '遗漏次数' => 0,
|
|
|
|
|
- '遗漏张数' => 0,
|
|
|
|
|
- '处罚金额' => 0,
|
|
|
|
|
- '年月' => date('Y-m', strtotime($date)),
|
|
|
|
|
- '周数' => $week
|
|
|
|
|
- ];
|
|
|
|
|
- }
|
|
|
|
|
- $rewardData[$date][$employeeId]['发现次数'] += 1;
|
|
|
|
|
- $rewardData[$date][$employeeId]['发现张数'] += $foundSheets;
|
|
|
|
|
- $rewardData[$date][$employeeId]['奖励金额'] += $totalJLAmt;
|
|
|
|
|
- if (!isset($rewardMonthlyTotal[$monthKey])) {
|
|
|
|
|
- $rewardMonthlyTotal[$monthKey] = [
|
|
|
|
|
- '所在部门' => $department,
|
|
|
|
|
- '员工编号' => $employeeId,
|
|
|
|
|
- '员工姓名' => $employeeName,
|
|
|
|
|
- '发现次数' => 0,
|
|
|
|
|
- '发现张数' => 0,
|
|
|
|
|
- '奖励金额' => 0,
|
|
|
|
|
- '遗漏次数' => 0,
|
|
|
|
|
- '遗漏张数' => 0,
|
|
|
|
|
- '处罚金额' => 0,
|
|
|
|
|
- '年月' => date('Y-m', strtotime($date)),
|
|
|
|
|
- '周数' => $week
|
|
|
|
|
- ];
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ * 处理奖励数据
|
|
|
|
|
+ */
|
|
|
|
|
+$rewardData = [];
|
|
|
|
|
+$rewardMonthlyTotal = [];
|
|
|
|
|
+
|
|
|
|
|
+foreach ($list as $key => $value) {
|
|
|
|
|
+ // 1. 先收集当天所有有奖励的员工及其原始应得金额
|
|
|
|
|
+ $dailyEmployees = [];
|
|
|
|
|
+ $dailyTotal = 0;
|
|
|
|
|
+
|
|
|
|
|
+ for ($i = 1; $i <= 10; $i++) {
|
|
|
|
|
+ if (empty($value["JL_bh{$i}"])) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 计算该员工原始应得金额
|
|
|
|
|
+ $amount = 0;
|
|
|
|
|
+ if (!empty($value["JL_Je{$i}"]) && $value["JL_Je{$i}"] > 0) {
|
|
|
|
|
+ $amount = $value["JL_Je{$i}"] * $value['sczl_cl'];
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ $dailyEmployees[] = [
|
|
|
|
|
+ 'id' => $value["JL_bh{$i}"],
|
|
|
|
|
+ 'name' => $value["奖励人员{$i}"],
|
|
|
|
|
+ 'dept' => $value["奖励部门{$i}"],
|
|
|
|
|
+ 'original_amount' => $amount
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ $dailyTotal += $amount;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 判断是否需要重新分配(总额超过200)
|
|
|
|
|
+ $needsRedistribution = ($dailyTotal > 200);
|
|
|
|
|
+ $dailyCap = 200;
|
|
|
|
|
+
|
|
|
|
|
+ // 3. 处理每个员工的实际奖励金额
|
|
|
|
|
+ foreach ($dailyEmployees as $emp) {
|
|
|
|
|
+ $finalAmount = $needsRedistribution
|
|
|
|
|
+ ? ($dailyCap / count($dailyEmployees))
|
|
|
|
|
+ : $emp['original_amount'];
|
|
|
|
|
+
|
|
|
|
|
+ $date = $value['sczl_rq'];
|
|
|
|
|
+ $monthKey = date('Y-m', strtotime($date)) . "_" . $emp['id'];
|
|
|
|
|
+ $foundSheets = $value['sczl_cl'];
|
|
|
|
|
+ if (!isset($rewardData[$date][$emp['id']])) {
|
|
|
|
|
+ $rewardData[$date][$emp['id']] = [
|
|
|
|
|
+ '所在部门' => $emp['dept'],
|
|
|
|
|
+ '员工编号' => $emp['id'],
|
|
|
|
|
+ '员工姓名' => $emp['name'],
|
|
|
|
|
+ '发现次数' => 0,
|
|
|
|
|
+ '发现张数' => 0,
|
|
|
|
|
+ '奖励金额' => 0,
|
|
|
|
|
+ '遗漏次数' => 0,
|
|
|
|
|
+ '遗漏张数' => 0,
|
|
|
|
|
+ '处罚金额' => 0,
|
|
|
|
|
+ '年月' => date('Y-m', strtotime($date)),
|
|
|
|
|
+ '周数' => $value['week']
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $rewardData[$date][$emp['id']]['发现次数'] += 1;
|
|
|
|
|
+ $rewardData[$date][$emp['id']]['发现张数'] += $foundSheets;
|
|
|
|
|
+ $rewardData[$date][$emp['id']]['奖励金额'] += $finalAmount;
|
|
|
|
|
+
|
|
|
|
|
+ // 初始化月汇总数据
|
|
|
|
|
+ if (!isset($rewardMonthlyTotal[$monthKey])) {
|
|
|
|
|
+ $rewardMonthlyTotal[$monthKey] = [
|
|
|
|
|
+ '所在部门' => $emp['dept'],
|
|
|
|
|
+ '员工编号' => $emp['id'],
|
|
|
|
|
+ '员工姓名' => $emp['name'],
|
|
|
|
|
+ '发现次数' => 0,
|
|
|
|
|
+ '发现张数' => 0,
|
|
|
|
|
+ '奖励金额' => 0,
|
|
|
|
|
+ '遗漏次数' => 0,
|
|
|
|
|
+ '遗漏张数' => 0,
|
|
|
|
|
+ '处罚金额' => 0,
|
|
|
|
|
+ '年月' => date('Y-m', strtotime($date)),
|
|
|
|
|
+ '周数' => $value['week']
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
// 按天封顶,每日不超过200
|
|
// 按天封顶,每日不超过200
|
|
|
$rewardDailyCapped = [];
|
|
$rewardDailyCapped = [];
|
|
|
foreach ($rewardData as $date => $employees) {
|
|
foreach ($rewardData as $date => $employees) {
|
|
|
foreach ($employees as $employeeId => $details) {
|
|
foreach ($employees as $employeeId => $details) {
|
|
|
|
|
+
|
|
|
$cappedAmount = min($details['奖励金额'], 200);
|
|
$cappedAmount = min($details['奖励金额'], 200);
|
|
|
$details['奖励金额'] = $cappedAmount;
|
|
$details['奖励金额'] = $cappedAmount;
|
|
|
$rewardDailyCapped[$date][$employeeId] = $details;
|
|
$rewardDailyCapped[$date][$employeeId] = $details;
|
|
@@ -280,6 +308,7 @@ class WasteStatistics extends Api
|
|
|
/*
|
|
/*
|
|
|
* 合并奖励和惩罚数据
|
|
* 合并奖励和惩罚数据
|
|
|
*/
|
|
*/
|
|
|
|
|
+
|
|
|
$combinedData = [];
|
|
$combinedData = [];
|
|
|
// 将奖励数据加入合并数组
|
|
// 将奖励数据加入合并数组
|
|
|
foreach ($finalRewardData as $reward) {
|
|
foreach ($finalRewardData as $reward) {
|
|
@@ -312,6 +341,10 @@ class WasteStatistics extends Api
|
|
|
}
|
|
}
|
|
|
// 重新索引合并后的数组
|
|
// 重新索引合并后的数组
|
|
|
$result = array_values($combinedData);
|
|
$result = array_values($combinedData);
|
|
|
|
|
+foreach ($result as &$item) {
|
|
|
|
|
+ $item['奖励金额'] = round($item['奖励金额'], 2);
|
|
|
|
|
+ $item['处罚金额'] = round($item['处罚金额'], 2);
|
|
|
|
|
+}
|
|
|
$this->success('成功', $result);
|
|
$this->success('成功', $result);
|
|
|
}
|
|
}
|
|
|
|
|
|