|
@@ -327,17 +327,21 @@ class OrderSuperLoss extends Api
|
|
|
for ($i = 1; $i <= 13; $i++) {
|
|
for ($i = 1; $i <= 13; $i++) {
|
|
|
$gxmcKey = "fp_gxmc" . $i;
|
|
$gxmcKey = "fp_gxmc" . $i;
|
|
|
$slKey = "fp_sl" . $i;
|
|
$slKey = "fp_sl" . $i;
|
|
|
- if (substr($entry[$gxmcKey],0,2) == $item['Gy0_gxh']){
|
|
|
|
|
|
|
+ if (substr($entry[$gxmcKey], 0, 2) == $item['Gy0_gxh']
|
|
|
|
|
+ && !$this->isMachineInspectionProcess((string)$item['Gy0_gxmc'])) {
|
|
|
$gy_data[$k]['waste_quality'] += $entry[$slKey];
|
|
$gy_data[$k]['waste_quality'] += $entry[$slKey];
|
|
|
- }elseif (strpos($item['Gy0_gxmc'],'机检') !== false){
|
|
|
|
|
- $gy_data[$k]['waste_quality'] = $data['机检废品'];
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
//报废合计
|
|
//报废合计
|
|
|
- $gy_data[$k]['total_waste'] = $gy_data[$k]['waste_quality'] + $gy_data[$k]['intangible_loss'] + $gy_data[$k]['total_fp'];
|
|
|
|
|
|
|
+ $gy_data[$k]['total_waste'] = $gy_data[$k]['waste_quality'] + $gy_data[$k]['intangible_loss'] + $gy_data[$k]['total_fp'];
|
|
|
//工序节损数
|
|
//工序节损数
|
|
|
- $gy_data[$k]['loss'] = $item['Gy0_计划损耗']*$item['Gy0_ls']*$item['Gy0_ks'] - $gy_data[$k]['total_waste'];
|
|
|
|
|
|
|
+ $gy_data[$k]['loss'] = $item['Gy0_计划损耗'] * $item['Gy0_ls'] * $item['Gy0_ks'] - $gy_data[$k]['total_waste'];
|
|
|
|
|
+ $this->applyMachineInspectionProcessLossRules(
|
|
|
|
|
+ (string)$item['Gy0_gxmc'],
|
|
|
|
|
+ (int)$gy_data[$k]['Gy0_计划损耗'],
|
|
|
|
|
+ $gy_data[$k]
|
|
|
|
|
+ );
|
|
|
//占投料报废率
|
|
//占投料报废率
|
|
|
$gy_data[$k]['loss_rate'] = number_format($gy_data[$k]['loss'] / $item['Gy0_计划接货数'],4) * 100 .'%';
|
|
$gy_data[$k]['loss_rate'] = number_format($gy_data[$k]['loss'] / $item['Gy0_计划接货数'],4) * 100 .'%';
|
|
|
//工序目标报废率
|
|
//工序目标报废率
|
|
@@ -358,10 +362,7 @@ class OrderSuperLoss extends Api
|
|
|
}else{
|
|
}else{
|
|
|
$moneyRate = 0.09;
|
|
$moneyRate = 0.09;
|
|
|
}
|
|
}
|
|
|
- if (strpos($item['Gy0_gxmc'], '机检') !== false) {
|
|
|
|
|
- $gy_data[$k]['工序超节损金额'] = '0.000000';
|
|
|
|
|
- $gy_data[$k]['waste_quality'] = $data['机检废品'];
|
|
|
|
|
- } elseif ($this->isSuperLossRewardExcluded((string)$item['Gy0_gxmc'])) {
|
|
|
|
|
|
|
+ if ($this->isSuperLossRewardExcluded((string)$item['Gy0_gxmc'])) {
|
|
|
$gy_data[$k]['工序超节损金额'] = '0.000000';
|
|
$gy_data[$k]['工序超节损金额'] = '0.000000';
|
|
|
} else {
|
|
} else {
|
|
|
$gy_data[$k]['工序超节损金额'] = number_format($gy_data[$k]['loss'] * $item['超节损承担比例'] * $moneyRate, 4);
|
|
$gy_data[$k]['工序超节损金额'] = number_format($gy_data[$k]['loss'] * $item['超节损承担比例'] * $moneyRate, 4);
|
|
@@ -1309,6 +1310,12 @@ class OrderSuperLoss extends Api
|
|
|
$plan_total,
|
|
$plan_total,
|
|
|
floatval($data['intangible_loss'])
|
|
floatval($data['intangible_loss'])
|
|
|
);
|
|
);
|
|
|
|
|
+ if ($this->isMachineInspectionProcess((string)$gy_data[$kk]['sczl_gxmc'])) {
|
|
|
|
|
+ $gy_data[$kk]['质检废'] = 0;
|
|
|
|
|
+ $gy_data[$kk]['zjfp'] = 0;
|
|
|
|
|
+ $gy_data[$kk]['sczl_zcfp'] = 0;
|
|
|
|
|
+ $gy_data[$kk]['无形损分摊'] = 0;
|
|
|
|
|
+ }
|
|
|
//班组成员
|
|
//班组成员
|
|
|
for ($j = 1; $j <= 10; $j++) {
|
|
for ($j = 1; $j <= 10; $j++) {
|
|
|
$bhKey = "sczl_bh" . $j;
|
|
$bhKey = "sczl_bh" . $j;
|
|
@@ -1388,8 +1395,12 @@ class OrderSuperLoss extends Api
|
|
|
$data['reward_rate'] = (string)$rewardMultiplier;
|
|
$data['reward_rate'] = (string)$rewardMultiplier;
|
|
|
$total['reward'] = 0;
|
|
$total['reward'] = 0;
|
|
|
foreach ($processGxSummary as $summary) {
|
|
foreach ($processGxSummary as $summary) {
|
|
|
- $totalWaste = $summary['zcfp'] + $summary['zj'] + $summary['intangible'];
|
|
|
|
|
- $processCjsSl = $summary['plan_loss'] - $totalWaste;
|
|
|
|
|
|
|
+ if ($this->isMachineInspectionProcess((string)$summary['gxmc'])) {
|
|
|
|
|
+ $processCjsSl = $summary['plan_loss'];
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $totalWaste = $summary['zcfp'] + $summary['zj'] + $summary['intangible'];
|
|
|
|
|
+ $processCjsSl = $summary['plan_loss'] - $totalWaste;
|
|
|
|
|
+ }
|
|
|
if ($this->isSuperLossRewardExcluded((string)$summary['gxmc'])) {
|
|
if ($this->isSuperLossRewardExcluded((string)$summary['gxmc'])) {
|
|
|
$processCjsJe = 0.0;
|
|
$processCjsJe = 0.0;
|
|
|
} else {
|
|
} else {
|
|
@@ -1781,6 +1792,11 @@ class OrderSuperLoss extends Api
|
|
|
$gy_data[$key]['total_waste'] = $value['Gy0_无形损'] + $value['total_fp'] + $value['waste_quality'];
|
|
$gy_data[$key]['total_waste'] = $value['Gy0_无形损'] + $value['total_fp'] + $value['waste_quality'];
|
|
|
//工序节损数 = 工序计划损耗 - 报废合计
|
|
//工序节损数 = 工序计划损耗 - 报废合计
|
|
|
$gy_data[$key]['loss'] = (int)$value['Gy0_计划损耗'] - (int)$gy_data[$key]['total_waste'];
|
|
$gy_data[$key]['loss'] = (int)$value['Gy0_计划损耗'] - (int)$gy_data[$key]['total_waste'];
|
|
|
|
|
+ $this->applyMachineInspectionProcessLossRules(
|
|
|
|
|
+ (string)$value['Gy0_gxmc'],
|
|
|
|
|
+ (int)$value['Gy0_计划损耗'],
|
|
|
|
|
+ $gy_data[$key]
|
|
|
|
|
+ );
|
|
|
if ($this->isSuperLossRewardExcluded((string)$value['Gy0_gxmc'])) {
|
|
if ($this->isSuperLossRewardExcluded((string)$value['Gy0_gxmc'])) {
|
|
|
$gy_data[$key]['工序超节损金额'] = 0;
|
|
$gy_data[$key]['工序超节损金额'] = 0;
|
|
|
} else {
|
|
} else {
|
|
@@ -2305,7 +2321,36 @@ class OrderSuperLoss extends Api
|
|
|
return strpos($gxName, '机检') !== false || strpos($gxName, '外发') !== false;
|
|
return strpos($gxName, '机检') !== false || strpos($gxName, '外发') !== false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /** 机检、外发:不计超节损金额(仍计制程废、工序节损数) */
|
|
|
|
|
|
|
+ private function isMachineInspectionProcess(string $gxName): bool
|
|
|
|
|
+ {
|
|
|
|
|
+ return strpos($gxName, '机检') !== false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 机检:参与工序节损数(= 工序计划损耗),本行制程/质检/无形损不参与扣减;金额不计
|
|
|
|
|
+ */
|
|
|
|
|
+ private function applyMachineInspectionProcessLossRules(string $gxName, int $planLoss, array &$row): void
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!$this->isMachineInspectionProcess($gxName)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (array_key_exists('total_fp', $row)) {
|
|
|
|
|
+ $row['total_fp'] = 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (array_key_exists('waste_quality', $row)) {
|
|
|
|
|
+ $row['waste_quality'] = 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (array_key_exists('Gy0_无形损', $row)) {
|
|
|
|
|
+ $row['Gy0_无形损'] = 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (array_key_exists('intangible_loss', $row)) {
|
|
|
|
|
+ $row['intangible_loss'] = 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ $row['total_waste'] = 0;
|
|
|
|
|
+ $row['loss'] = $planLoss;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /** 机检、外发:不计超节损金额(机检仍计节损数;外发计节损数含制程废) */
|
|
|
private function isSuperLossRewardExcluded(string $gxName): bool
|
|
private function isSuperLossRewardExcluded(string $gxName): bool
|
|
|
{
|
|
{
|
|
|
return $this->isSuperLossIntangibleExcluded($gxName);
|
|
return $this->isSuperLossIntangibleExcluded($gxName);
|