浏览代码

超节损合格率计算优化

unknown 7 月之前
父节点
当前提交
fc6a82c782
共有 1 个文件被更改,包括 46 次插入7 次删除
  1. 46 7
      application/api/controller/OrderSuperLoss.php

+ 46 - 7
application/api/controller/OrderSuperLoss.php

@@ -1812,7 +1812,7 @@ class OrderSuperLoss extends Api
                 ->where('Gy0_yjno', $value['jjcp_yjno'])
                 ->field('CONCAT(rtrim(Gy0_gxmc),"[",rtrim(Add_gxmc),"]") as 工序名称,Gy0_ls as 联数')
                 ->select();
-            $number1 = $number2 = 0;
+            $number1 = $number2 = 1;
             foreach ($processDetail as $k => $v) {
                 if (strpos($v['工序名称'],'分切') !== false) {
                     $number1 = $v['联数'];
@@ -1902,13 +1902,31 @@ class OrderSuperLoss extends Api
             ->group('Gy0_gdbh, `印件及工序`')
             ->order('sys_rq DESC')
             ->find();
+        $processDetail = \db('工单_工艺资料')
+            ->where('Gy0_gdbh', $param['order'])
+            ->where('Gy0_yjno', $param['yjno'])
+            ->field('CONCAT(rtrim(Gy0_gxmc),"[",rtrim(Add_gxmc),"]") as 工序名称,Gy0_ls as 联数')
+            ->select();
+        $number1 = $number2 = 1;
+        foreach ($processDetail as $k => $v) {
+            if (strpos($v['工序名称'],'分切') !== false) {
+                $number1 = $v['联数'];
+            }
+            if (strpos($v['工序名称'],'分切') === false && $v['联数'] > 1) {
+                $number2 = $v['联数'];
+            }
+        }
+        $Multiple = $number1/$number2;
+        if (is_int($Multiple) === false) {
+            $Multiple = 1;
+        }
         $list['实际投料'] = $list['实际投料']*10000;
         //目标合格率
         $list['target_rate'] = ($list['实际投料']-$list['计划损耗'])/$list['实际投料']*100;
         $list['target_rate'] = number_format($list['target_rate'],2);
         $list['target_rate'] = $list['target_rate'].'%';
         //实际合格率
-        $list['real_rate'] = $list['warehousing_num']/$list['实际投料']*100;
+        $list['real_rate'] = $list['warehousing_num']/($list['实际投料']*$Multiple)*100;
         $list['real_rate'] = number_format($list['real_rate'],2);
         $list['real_rate'] = $list['real_rate'].'%';
 
@@ -1935,15 +1953,17 @@ class OrderSuperLoss extends Api
             ->group('Gy0_gxh')
             ->select();
         foreach ($gy_data as $key=>$value){
-
+            if (strpos($value['Gy0_gxmc'],'分切') === false) {
+                $Multiple = 1;
+            }
             //报废合计
             $gy_data[$key]['total_waste'] = $value['Gy0_无形损'] + $value['total_fp'] + $value['waste_quality'];
             //工序实际报废率
-            $gy_data[$key]['actual_loss_rate'] = ((number_format($gy_data[$key]['total_waste']/$list['实际投料'],4))*100).'%';
+            $gy_data[$key]['actual_loss_rate'] = ((number_format($gy_data[$key]['total_waste']/($list['实际投料']*$Multiple),4))*100).'%';
             //工序目标报废率
-            $gy_data[$key]['target_loss_rate'] = ((number_format($value['Gy0_计划损耗']/$list['实际投料'],4))*100).'%';
+            $gy_data[$key]['target_loss_rate'] = ((number_format($value['Gy0_计划损耗']/($list['实际投料']*$Multiple),4))*100).'%';
             //占投料报废率
-            $gy_data[$key]['loss_rate'] = ((number_format(($value['Gy0_计划损耗']-$gy_data[$key]['total_waste'])/$list['实际投料'],4))*100).'%';
+            $gy_data[$key]['loss_rate'] = ((number_format(($value['Gy0_计划损耗']-$gy_data[$key]['total_waste'])/($list['实际投料']*$Multiple),4))*100).'%';
         }
         $list['gy_data'] = $gy_data;
         $total = [
@@ -2034,13 +2054,32 @@ class OrderSuperLoss extends Api
             ->order('sys_rq DESC')
             ->find();
 
+        $processDetail = \db('工单_工艺资料')
+            ->where('Gy0_gdbh', $param['order'])
+            ->where('Gy0_yjno', $param['yjno'])
+            ->field('CONCAT(rtrim(Gy0_gxmc),"[",rtrim(Add_gxmc),"]") as 工序名称,Gy0_ls as 联数')
+            ->select();
+        $number1 = $number2 = 1;
+        foreach ($processDetail as $k => $v) {
+            if (strpos($v['工序名称'],'分切') !== false) {
+                $number1 = $v['联数'];
+            }
+            if (strpos($v['工序名称'],'分切') === false && $v['联数'] > 1) {
+                $number2 = $v['联数'];
+            }
+        }
+        $Multiple = $number1/$number2;
+        if (is_int($Multiple) === false) {
+            $Multiple = 1;
+        }
+
         $list['实际投料'] = $list['实际投料']*10000;
         //目标合格率
         $list['target_rate'] = ($list['实际投料']-$list['计划损耗'])/$list['实际投料']*100;
         $list['target_rate'] = number_format($list['target_rate'],2);
         $list['target_rate'] = $list['target_rate'].'%';
         //实际合格率
-        $list['real_rate'] = $list['warehousing_num']/$list['实际投料']*100;
+        $list['real_rate'] = $list['warehousing_num']/($list['实际投料']*$Multiple)*100;
         $list['real_rate'] = number_format($list['real_rate'],2);
         $list['real_rate'] = $list['real_rate'].'%';
         //班组数据