Sfoglia il codice sorgente

超节损计算优化

qiuenguang 1 anno fa
parent
commit
ac7d2fb917
1 ha cambiato i file con 47 aggiunte e 17 eliminazioni
  1. 47 17
      application/api/controller/OrderSuperLoss.php

+ 47 - 17
application/api/controller/OrderSuperLoss.php

@@ -233,13 +233,15 @@ class OrderSuperLoss extends Api
                 $plan_loss = [];//工单计划损耗
                 $machine_plan_loss = 0;//机检计划损耗
                 foreach ($gy_data as $k=>$v){
-                    if ($v['Gy0_计划接货数'] > 0){
-                        $rate =  round($v['Gy0_计划损耗'] / $v['Gy0_计划接货数'],5);
-                    }else{
-                        $rate = 0;
+                    if (strpos($v['Gy0_gxmc'],'检') === false){
+                        if ($v['Gy0_计划接货数'] > 0){
+                            $rate =  round($v['Gy0_计划损耗'] / $v['Gy0_计划接货数'],5);
+                        }else{
+                            $rate = 0;
+                        }
+                        $arr[$k] = floor($rate * 10000) /10000;
+                        $plan_loss[$k] = $v['Gy0_计划损耗']*$v['Gy0_ls']*$value['yj_ks'];
                     }
-                    $arr[$k] = floor($rate * 10000) /10000;
-                    $plan_loss[$k] = $v['Gy0_计划损耗']*$v['Gy0_ls']*$value['yj_ks'];
                 }
                 if ((int)$value['yj_ls'] > 0){
                     $value['实际投料'] = number_format(((int)$value['实际投料']/10000)*$value['yj_ls']*$value['yj_ks'],4);
@@ -305,6 +307,12 @@ class OrderSuperLoss extends Api
                                 $change[$l]= $entry[$slKey];
                                 $l++;
                             }
+
+                            //机检废品
+                            if (substr($entry[$labelKey],0,1) == 'K' ){
+                                $machine[$o]= $entry[$slKey];
+                                $o++;
+                            }
                         }
                         $quality[$m]= $entry[$slKey];
                         $m++;
@@ -322,7 +330,7 @@ class OrderSuperLoss extends Api
                  * 机检节损数 = 机检计划损耗 - 机检质检废品
                  */
                 $machine_loss = $machine_plan_loss - $machine_waste;
-                $order_loss = $data[$key]['工单计划损耗'] - ($data[$key]['废品合计'] - array_sum($list) - array_sum($material)+$data[$key]['工单无形损'] );
+                $order_loss = $data[$key]['工单计划损耗'] - ($data[$key]['废品合计'] - array_sum($list) - array_sum($material)+$data[$key]['工单无形损'] +$machine_waste);
                 $guige = \db('物料_存货编码')
                     ->where('物料代码',$data[$key]['成品编码'])
                     ->value('rtrim(规格)');
@@ -346,6 +354,7 @@ class OrderSuperLoss extends Api
                 $data[$key]['外发废'] = array_sum($list);//外发废
                 $data[$key]['分摊废'] = '';//分摊废
                 $data[$key]['工单质检废'] =  array_sum($quality);  //质检废
+                $data[$key]['机检废'] = $machine_waste;
             }
             $res = [
                 'data'=>$data,
@@ -508,10 +517,12 @@ class OrderSuperLoss extends Api
         $quality = [];//质检废数组
         $material = [];//材料废数组
         $change = [];//零头处理数组
+        $jijian = [];//机检数据
         $j = 0;
         $m = 0;
         $n = 0;
         $l = 0;
+        $s = 0;
         foreach ($waste_out as $entry) {
             for ($i = 1; $i <= 13; $i++) {
                 $labelKey = "fp_lb" . $i;
@@ -534,6 +545,12 @@ class OrderSuperLoss extends Api
                         $change[$l]= $entry[$slKey];
                         $l++;
                     }
+
+                    //机检数据
+                    if (substr($entry[$labelKey],0,1) == 'K' ){
+                        $jijian[$s]= $entry[$slKey];
+                        $s++;
+                    }
                 }
                 $quality[$m]= $entry[$slKey];
                 $m++;
@@ -543,7 +560,11 @@ class OrderSuperLoss extends Api
         $data['零头处理'] = array_sum($change); //零头处理
         $data['外发废'] = array_sum($list);//外发废
         $data['工单质检废'] =  array_sum($quality);//质检废
-        $plan_total =db('工单_工艺资料')->where(['Gy0_gdbh' => $order,'Gy0_yjno' => $params['yjno'], 'Gy0_gxh' => ['in', $gxh_values]])->value('SUM(Gy0_计划损耗 * Gy0_ls * Gy0_ks)');
+        $data['机检废品'] = array_sum($jijian);
+        $plan_total =db('工单_工艺资料')
+            ->where(['Gy0_gdbh' => $order,'Gy0_yjno' => $params['yjno'], 'Gy0_gxh' => ['in', $gxh_values]])
+            ->where('Gy0_gxmc','NOT LIKE','%检%')
+            ->value('SUM(Gy0_计划损耗 * Gy0_ls * Gy0_ks)');
         if($plan_total == 0){
             $this->error('计划损耗数据为 0,请到工单资料管理页面修改工艺资料中选择正确的工序损耗');
             return;
@@ -566,10 +587,17 @@ class OrderSuperLoss extends Api
                 $gy_data[$k]['total_cl'] = $item['total_cl'] * $item['Gy0_ls'];
                 //无形损
                 if (floatval($item['无形损承担比例']) > 0){
-                    $gy_data[$k]['intangible_loss'] = round(number_format($gy_data[$k]['Gy0_计划损耗']/$plan_total,4) * $data['intangible_loss'] * floatval($item['无形损承担比例']));
-
+                    if (strpos($item['Gy0_gxmc'],'机检') === false){
+                        $gy_data[$k]['intangible_loss'] = round(number_format($gy_data[$k]['Gy0_计划损耗']/$plan_total,4) * $data['intangible_loss'] * floatval($item['无形损承担比例']));
+                    }else{
+                        $gy_data[$k]['intangible_loss'] = 0;
+                    }
                 }else{
-                    $gy_data[$k]['intangible_loss'] = round(number_format($gy_data[$k]['Gy0_计划损耗']/$plan_total,4) * $data['intangible_loss']);
+                    if (strpos($item['Gy0_gxmc'],'机检') === false){
+                        $gy_data[$k]['intangible_loss'] = round(number_format($gy_data[$k]['Gy0_计划损耗']/$plan_total,4) * $data['intangible_loss']);
+                    }else{
+                        $gy_data[$k]['intangible_loss'] = 0;
+                    }
                 }
                 foreach ($waste_out as $entry) {
                     for ($i = 1; $i <= 13; $i++) {
@@ -577,16 +605,17 @@ class OrderSuperLoss extends Api
                         $slKey = "fp_sl" . $i;
                         if (substr($entry[$gxmcKey],0,2) == $item['Gy0_gxh']){
                             $gy_data[$k]['waste_quality'] += $entry[$slKey];
-
+                        }elseif (strpos($item['Gy0_gxmc'],'机检') !== false){
+                            $gy_data[$k]['waste_quality'] =  $data['机检废品'];
                         }
                     }
                 }
                 //报废合计
-                if ($gy_data[$k]['intangible_loss'] < 0){
-                    $gy_data[$k]['total_waste'] = $gy_data[$k]['waste_quality']  +  $gy_data[$k]['total_fp'];
-                }else{
+//                if ($gy_data[$k]['intangible_loss'] < 0){
+//                    $gy_data[$k]['total_waste'] = $gy_data[$k]['waste_quality']  +  $gy_data[$k]['total_fp'];
+//                }else{
                     $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'];
                 //占投料报废率
@@ -611,6 +640,7 @@ class OrderSuperLoss extends Api
                 }
                 if (strpos($item['Gy0_gxmc'],'机检') !== false){
                     $gy_data[$k]['工序超节损金额'] = '0.000000';
+                    $gy_data[$k]['waste_quality'] = $data['机检废品'];
                 }else{
                     $gy_data[$k]['工序超节损金额'] = number_format($gy_data[$k]['loss'] * $item['超节损承担比例'] * $moneyRate,4);
                 }
@@ -1091,7 +1121,7 @@ class OrderSuperLoss extends Api
                 $data[$key]['PD_WG'] = '完工';
             }
             if ($item['印刷方式'] === '卷对卷'){
-                $data[$key]['sczl_cl'] = ceil($data[$key]['sczl_cl'] * $item['版距']/1000);
+                $data[$key]['sczl_cl'] = ceil($data[$key]['sczl_cl']/$item['版距']*1000);
             }
         }
         $this->success('请求成功',$data);