|
@@ -1326,7 +1326,7 @@ public function OneOrderSuperLoss($gdbh, $yjno)
|
|
|
// ========== 阶段6: 工序产量数据获取 ==========
|
|
// ========== 阶段6: 工序产量数据获取 ==========
|
|
|
// 获取按班组分的产量数据和工序汇总数据
|
|
// 获取按班组分的产量数据和工序汇总数据
|
|
|
$productionData = $this->getProductionData($workOrderData, $gxhValues);
|
|
$productionData = $this->getProductionData($workOrderData, $gxhValues);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// ========== 阶段7: 超节损计算 ==========
|
|
// ========== 阶段7: 超节损计算 ==========
|
|
|
// 计算每道工序的超节损金额和节损奖
|
|
// 计算每道工序的超节损金额和节损奖
|
|
|
$gyData = $this->calculateSuperLoss(
|
|
$gyData = $this->calculateSuperLoss(
|
|
@@ -1626,7 +1626,7 @@ private function getProductionData($workOrderData, $gxhValues)
|
|
|
b.sczl_bh4, b.sczl_bh5, b.sczl_bh6, b.sczl_bh7, b.sczl_bh8, b.sczl_bh9, c.sczl_bh1')
|
|
b.sczl_bh4, b.sczl_bh5, b.sczl_bh6, b.sczl_bh7, b.sczl_bh8, b.sczl_bh9, c.sczl_bh1')
|
|
|
->order('a.Gy0_gxh asc, b.开工时间 asc, c.sczl_rq desc')
|
|
->order('a.Gy0_gxh asc, b.开工时间 asc, c.sczl_rq desc')
|
|
|
->select();
|
|
->select();
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
return ['total_cl_data' => $totalClData, 'gy_data' => $gyData];
|
|
return ['total_cl_data' => $totalClData, 'gy_data' => $gyData];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1779,7 +1779,7 @@ private function calculateSuperLoss($gyData, $totalClData, $wasteDetails, $data,
|
|
|
$key = "{$item['sczl_bh1']}-{$item['Gy0_gxh']}";
|
|
$key = "{$item['sczl_bh1']}-{$item['Gy0_gxh']}";
|
|
|
$sumBz[$key] = isset($sumBz[$key]) ? $sumBz[$key] + $item['total_cl'] : $item['total_cl'];
|
|
$sumBz[$key] = isset($sumBz[$key]) ? $sumBz[$key] + $item['total_cl'] : $item['total_cl'];
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 第二步:收集所有员工编号用于批量查询
|
|
// 第二步:收集所有员工编号用于批量查询
|
|
|
$employeeIds = [];
|
|
$employeeIds = [];
|
|
|
foreach ($gyData as $item) {
|
|
foreach ($gyData as $item) {
|
|
@@ -1789,9 +1789,10 @@ private function calculateSuperLoss($gyData, $totalClData, $wasteDetails, $data,
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ halt($gyData);
|
|
|
// 批量查询员工姓名
|
|
// 批量查询员工姓名
|
|
|
$employeeNames = $this->getEmployeeNames(array_unique($employeeIds));
|
|
$employeeNames = $this->getEmployeeNames(array_unique($employeeIds));
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 第三步:计算每道工序的超节损数据
|
|
// 第三步:计算每道工序的超节损数据
|
|
|
foreach ($gyData as $kk => &$vv) {
|
|
foreach ($gyData as $kk => &$vv) {
|
|
|
// 注意:calculateProduction() 已在之前调用,total_cl 已乘以 ls 和 ks
|
|
// 注意:calculateProduction() 已在之前调用,total_cl 已乘以 ls 和 ks
|
|
@@ -1800,7 +1801,7 @@ private function calculateSuperLoss($gyData, $totalClData, $wasteDetails, $data,
|
|
|
|
|
|
|
|
// 计算计划损耗
|
|
// 计算计划损耗
|
|
|
$vv['Gy0_计划损耗'] = $vv['Gy0_计划损耗'] * $vv['Gy0_ls'] * $vv['Gy0_ks'];
|
|
$vv['Gy0_计划损耗'] = $vv['Gy0_计划损耗'] * $vv['Gy0_ls'] * $vv['Gy0_ks'];
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 根据工序总产量计算班组分摊计划损耗
|
|
// 根据工序总产量计算班组分摊计划损耗
|
|
|
foreach ($totalClData as $v) {
|
|
foreach ($totalClData as $v) {
|
|
|
if ($vv['Gy0_yjno'] == $v['Gy0_yjno'] && $vv['Gy0_gxh'] == $v['Gy0_gxh']) {
|
|
if ($vv['Gy0_yjno'] == $v['Gy0_yjno'] && $vv['Gy0_gxh'] == $v['Gy0_gxh']) {
|
|
@@ -1845,7 +1846,7 @@ private function calculateSuperLoss($gyData, $totalClData, $wasteDetails, $data,
|
|
|
// 清理临时字段
|
|
// 清理临时字段
|
|
|
$this->cleanupProcessData($vv);
|
|
$this->cleanupProcessData($vv);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 第四步:计算节损奖
|
|
// 第四步:计算节损奖
|
|
|
// 查询产品规格,确定核算单价
|
|
// 查询产品规格,确定核算单价
|
|
|
$guige = \db('物料_存货编码')->where('物料代码', $data['成品代号'])->value('rtrim(规格)');
|
|
$guige = \db('物料_存货编码')->where('物料代码', $data['成品代号'])->value('rtrim(规格)');
|
|
@@ -1863,7 +1864,7 @@ private function calculateSuperLoss($gyData, $totalClData, $wasteDetails, $data,
|
|
|
$item['sys_ny'] = date('Ym', strtotime($workOrderData['jjcp_sj']));
|
|
$item['sys_ny'] = date('Ym', strtotime($workOrderData['jjcp_sj']));
|
|
|
$item['超节损核算单价'] = $moneyRate;
|
|
$item['超节损核算单价'] = $moneyRate;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
return $gyData;
|
|
return $gyData;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1879,7 +1880,7 @@ private function calculateSuperLoss($gyData, $totalClData, $wasteDetails, $data,
|
|
|
private function buildResult($gyData, $data, $totalNumber, $workOrderData)
|
|
private function buildResult($gyData, $data, $totalNumber, $workOrderData)
|
|
|
{
|
|
{
|
|
|
$result = [];
|
|
$result = [];
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
foreach ($gyData as $key => $value) {
|
|
foreach ($gyData as $key => $value) {
|
|
|
$result[$key] = [
|
|
$result[$key] = [
|
|
|
'sys_ny' => $value['sys_ny'], // 系统年月
|
|
'sys_ny' => $value['sys_ny'], // 系统年月
|