|
@@ -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['工序号']);
|
|
|
});
|
|
});
|