Browse Source

修正报工部分数据查询不到

m0_70156489 2 months ago
parent
commit
2f393d3398
1 changed files with 11 additions and 11 deletions
  1. 11 11
      application/api/controller/WorkOrderProcess.php

+ 11 - 11
application/api/controller/WorkOrderProcess.php

@@ -1827,7 +1827,7 @@ class WorkOrderProcess extends Api
         }
         }
 
 
         $workorder = $params['workorder'];
         $workorder = $params['workorder'];
-        $processFilter = $params['process'] ?? ''; // 可选的工序过滤
+        $processFilter = $params['process'] ?? '';
 
 
         // 1. 查询工单基本信息
         // 1. 查询工单基本信息
         $workOrderInfo = Db::name('工单_基本资料')
         $workOrderInfo = Db::name('工单_基本资料')
@@ -1863,11 +1863,11 @@ class WorkOrderProcess extends Api
             return intval($a['工序号']) - intval($b['工序号']);
             return intval($a['工序号']) - intval($b['工序号']);
         });
         });
 
 
-        // 3. 查询设备_工分计酬中的报工数据
+        // 3. 查询设备_工分计酬中的报工数据,补齐staff_no字段
         $reportList = Db::name('设备_工分计酬')->alias('a')
         $reportList = Db::name('设备_工分计酬')->alias('a')
             ->where('a.work_order', $workorder)
             ->where('a.work_order', $workorder)
             ->whereNull('a.del_rq')
             ->whereNull('a.del_rq')
-            ->field('a.process_code as 工序号, a.process_name as 工序名称, a.staff_name as 员工姓名,
+            ->field('a.process_code as 工序号, a.process_name as 工序名称, a.staff_no as 员工号, a.staff_name as 员工姓名,
                 a.sys_id as 小组,
                 a.sys_id as 小组,
                 SUM(a.number) as 数量, MIN(a.date) as 开工日期, MAX(a.date) as 完工日期,
                 SUM(a.number) as 数量, MIN(a.date) as 开工日期, MAX(a.date) as 完工日期,
                 SUM(a.standard_score) as 工分, SUM(a.production_score) as 工时, SUM(a.salary) as 工资')
                 SUM(a.standard_score) as 工分, SUM(a.production_score) as 工时, SUM(a.salary) as 工资')
@@ -1891,12 +1891,12 @@ class WorkOrderProcess extends Api
             '工序列表' => [],
             '工序列表' => [],
         ];
         ];
 
 
-        // 5. 先构建基础工艺列表(按工序号+工序名称分组)
+        // 5. 构建工序映射【核心修复:仅使用工序号匹配,不再受工序名称不一致影响】
         $processMap = [];
         $processMap = [];
         foreach ($processList as $process) {
         foreach ($processList as $process) {
-            $processKey = (string)$process['工序号'] . '|' . (string)$process['工序名称'];
-            if (!isset($processMap[$processKey])) {
-                $processMap[$processKey] = [
+            $processCode = trim((string)$process['工序号']);
+            if (!isset($processMap[$processCode])) {
+                $processMap[$processCode] = [
                     '工序号' => $process['工序号'],
                     '工序号' => $process['工序号'],
                     '工序名称' => $process['工序名称'],
                     '工序名称' => $process['工序名称'],
                     '部件名称' => $process['部件名称'] ?? '',
                     '部件名称' => $process['部件名称'] ?? '',
@@ -1908,11 +1908,11 @@ class WorkOrderProcess extends Api
         // 6. 将报工数据合并到对应工序
         // 6. 将报工数据合并到对应工序
         if (!empty($reportList)) {
         if (!empty($reportList)) {
             foreach ($reportList as $report) {
             foreach ($reportList as $report) {
-                $processKey = (string)$report['工序号'] . '|' . (string)$report['工序名称'];
-                if (isset($processMap[$processKey])) {
+                $processCode = trim((string)$report['工序号']);
+                if (isset($processMap[$processCode])) {
                     $startDate = !empty($report['开工日期']) ? date('Y-m-d', strtotime($report['开工日期'])) : '';
                     $startDate = !empty($report['开工日期']) ? date('Y-m-d', strtotime($report['开工日期'])) : '';
                     $endDate = !empty($report['完工日期']) ? date('Y-m-d', strtotime($report['完工日期'])) : '';
                     $endDate = !empty($report['完工日期']) ? date('Y-m-d', strtotime($report['完工日期'])) : '';
-                    $processMap[$processKey]['staffs'][] = [
+                    $processMap[$processCode]['staffs'][] = [
                         '员工姓名' => $report['员工姓名'],
                         '员工姓名' => $report['员工姓名'],
                         '小组' => $report['小组'],
                         '小组' => $report['小组'],
                         '数量' => floatval($report['数量']),
                         '数量' => floatval($report['数量']),
@@ -1928,7 +1928,7 @@ class WorkOrderProcess extends Api
 
 
         $resultList = array_values($processMap);
         $resultList = array_values($processMap);
 
 
-        // 按工序号数字排序
+        // 最终按工序号数字排序
         usort($resultList, function ($a, $b) {
         usort($resultList, function ($a, $b) {
             return intval($a['工序号']) - intval($b['工序号']);
             return intval($a['工序号']) - intval($b['工序号']);
         });
         });