Browse Source

超节损计算优化

unknown 1 month ago
parent
commit
b03c0ded5f
1 changed files with 34 additions and 336 deletions
  1. 34 336
      application/api/controller/OrderSuperLoss.php

+ 34 - 336
application/api/controller/OrderSuperLoss.php

@@ -46,33 +46,19 @@ class OrderSuperLoss extends Api
                     ON (CASE   
                     ON (CASE   
                             WHEN LEFT(a.`jjcp_cpdh`, 1) REGEXP '^[A-Za-z]' THEN LEFT(a.`jjcp_cpdh`, 5)   
                             WHEN LEFT(a.`jjcp_cpdh`, 1) REGEXP '^[A-Za-z]' THEN LEFT(a.`jjcp_cpdh`, 5)   
                             ELSE LEFT(a.`jjcp_cpdh`, 4)   
                             ELSE LEFT(a.`jjcp_cpdh`, 4)   
-                        END) = RTRIM(b.`编号`)  -- Conditional join based on the first character  
+                        END) = RTRIM(b.`编号`)  
                 
                 
                 WHERE   
                 WHERE   
-                    a.jjcp_sj >= DATE_SUB(CURDATE(), INTERVAL 12 MONTH)  -- Direct date comparison  
-                    AND (a.jjcp_smb IN ('末 板', '末板'))  -- Cleaner syntax for conditions  
+                    a.jjcp_sj >= DATE_SUB(CURDATE(), INTERVAL 12 MONTH)  
+                    AND (a.jjcp_smb IN ('末 板', '末板'))  
                     AND a.`成品编码` != ''
                     AND a.`成品编码` != ''
                     AND a.jjcp_sj >= '2025-01-01 00:00:00'
                     AND a.jjcp_sj >= '2025-01-01 00:00:00'
                 GROUP BY   
                 GROUP BY   
-                    DATE_FORMAT(a.jjcp_sj, '%Y-%m'),  -- Group by formatted date  
-                    RTRIM(b.`编号`)   
+                    DATE_FORMAT(a.jjcp_sj, '%Y-%m'),  
                 ORDER BY   
                 ORDER BY   
                     date DESC,  
                     date DESC,  
                     编号 ASC;";
                     编号 ASC;";
         $data = Db::query($sql);
         $data = Db::query($sql);
-//        $data = \db('工单_质量考核汇总')
-//            ->field([
-//                'sys_ny AS date',
-//                'CASE
-//            WHEN 产品代号 REGEXP \'[A-Za-z]\' THEN LEFT(产品代号, 5)
-//            ELSE LEFT(产品代号, 4)
-//        END AS 编号',
-//                '客户名称',
-//                'COUNT(DISTINCT Gy0_gdbh) AS count'
-//            ])
-//            ->group('编号, date')
-//            ->order('date desc,编号')
-//            ->select();
         // 创建一个新数组来存储整理后的数据
         // 创建一个新数组来存储整理后的数据
         $organizedData = [];
         $organizedData = [];
         // 遍历原始数据
         // 遍历原始数据
@@ -113,274 +99,7 @@ class OrderSuperLoss extends Api
         }
         }
         $this->success('请求成功',$finalData);
         $this->success('请求成功',$finalData);
     }
     }
-    /**
-     * 获取超节损工单列表
-     * @ApiMethod GET
-     * @params string date
-     * @params string code
-     * 报废定额=(基础损耗+损耗率*计划产量)*损耗系数*计损色数(特定工序会有,如果无就不乘)
-     * 允损比例=报废定额/计划产量
-     * 目标合格率 = 100%-超节损工单中显示工序的允损比例之和
-     * 节损奖 小盒0.02 大盒0.09
-     *
-     */
-//    public function getList(){
-//        if (Request::instance()->isGet() == false) {
-//            $this->error('非法请求');
-//        }
-//        $params = Request::instance()->param();
-//        $where = [];
-//        if (!empty($params['code'])) {
-//            if (!empty($params['search'])) {
-//                $this->error('参数错误');
-//            }
-//        }
-//        if (!empty($params['date'])) {
-//            if (!empty($params['search'])) {
-//                $this->error('参数错误');
-//            }
-//            $date_year = substr($params['date'],0,4);
-//            $date_mon = substr($params['date'],4);
-//            $date = $date_year.'-'.$date_mon;
-//            $where['a.jjcp_sj' ] = array('like',$date.'%');
-//        }
-//        if (!empty($params['search'])) {
-//            if (!empty($params['date']) || !empty($params['code'])) {
-//                $this->error('参数错误');
-//            }
-//            $where['a.jjcp_gdbh|a.成品名称|a.jjcp_cpmc'] = array('like','%'.$params['search'].'%');
-//        }
-//        $where['a.jjcp_smb' ] = array('IN', array('末 板', '末板'));
-//        $limit = $params['limit'];
-//        if (empty($limit)){
-//            $limit = 15;
-//        }
-//        $pages = $params['page'];
-//        if (empty($pages)){
-//            $pages = 1;
-//        }
-//        $is_have_cache = false;
-//        $num = config('product_code_digit');
-//        if ($is_have_cache === false){
-//            if (!empty($params['code'])){
-//                $sql= db('物料_收发记录')
-//                    ->alias('d')
-//                    ->where('d.仓库编号', 'Y101')
-//                    ->whereOr('d.仓库编号', '101')
-//                    ->group('d.st_gdbh, d.cpdh')
-//                    ->field('d.st_gdbh, d.cpdh,d.st_rq, SUM(d.st_sl) as 实际投料,d.仓库编号')
-//                    ->buildSql();
-//                $data = db('成品入仓')->alias('a')
-//                    ->join('工单_基本资料 b', 'a.jjcp_gdbh = b.Gd_gdbh', 'left')
-//                    ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh AND a.jjcp_cpdh = c.yj_Yjdh', 'left')
-//                    ->join([$sql => 'd'], 'a.jjcp_gdbh = d.st_gdbh AND a.jjcp_cpdh = d.cpdh', 'left')
-//                    ->where($where)
-//                    ->where(function($query) {
-//                        $query->where('d.仓库编号', '101')
-//                            ->whereOr('d.仓库编号', 'Y101');})
-//                    ->whereRaw('LEFT(a.成品编码, CASE WHEN a.成品编码 REGEXP "[a-zA-Z]" THEN 5 ELSE 4 END) = ?', [$params['code']])
-//                    ->field('a.jjcp_gdbh as Gd_gdbh, a.jjcp_yjno, rtrim(a.jjcp_cpdh) as 成品编码, rtrim(a.jjcp_cpmc) as 成品名称,
-//             a.jjcp_sj, a.jjcp_smb, b.计量单位, b.Gd_khdh, d.实际投料, c.yj_Yjno, c.yj_ls, c.yj_ks, c.质量考核')
-//                    ->group('a.jjcp_gdbh, a.jjcp_yjno')
-//                    ->order('b.Gd_khdh, a.成品编码 asc, a.jjcp_yjno,d.st_rq desc')
-//                    ->page($pages)
-//                    ->limit($limit)
-//                    ->select();
-//                $total = db('成品入仓')->alias('a')
-//                    ->join('工单_基本资料 b', 'a.jjcp_gdbh = b.Gd_gdbh','left')
-//                    ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh','left')
-//                    ->where($where)
-//                    ->whereRaw('LEFT(a.成品编码, CASE WHEN a.成品编码 REGEXP "[a-zA-Z]" THEN 5 ELSE 4 END) = ?', [$params['code']])
-//                    ->count();
-//            }else{
-//                $sql= db('物料_收发记录')
-//                    ->alias('d')
-//                    ->where('d.仓库编号', 'Y101')
-//                    ->whereOr('d.仓库编号', '101')
-//                    ->group('d.st_gdbh, d.cpdh')
-//                    ->field('d.st_gdbh, d.cpdh,d.st_rq, SUM(d.st_sl) as 实际投料,d.仓库编号')
-//                    ->buildSql();
-//                $data = db('成品入仓')->alias('a')
-//                    ->join('工单_基本资料 b', 'a.jjcp_gdbh = b.Gd_gdbh', 'left')
-//                    ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh AND a.jjcp_cpdh = c.yj_Yjdh', 'left')
-//                    ->join([$sql => 'd'], 'a.jjcp_gdbh = d.st_gdbh AND a.jjcp_cpdh = d.cpdh', 'left')
-//                    ->where($where)
-//                    ->field('a.jjcp_gdbh as Gd_gdbh, a.jjcp_yjno, rtrim(a.jjcp_cpdh) as 成品编码, rtrim(a.jjcp_cpmc) as 成品名称,
-//             a.jjcp_sj, a.jjcp_smb, b.计量单位, b.Gd_khdh, d.实际投料, c.yj_Yjno, c.yj_ls, c.yj_ks, c.质量考核')
-//                    ->group('a.jjcp_gdbh, a.jjcp_yjno')
-//                    ->order('b.Gd_khdh, a.成品编码 asc, a.jjcp_yjno, d.st_rq desc')
-//                    ->page($pages)
-//                    ->limit($limit)
-//                    ->select();
-//                $total = db('成品入仓')->alias('a')
-//                    ->join('工单_基本资料 b', 'a.jjcp_gdbh = b.Gd_gdbh','left')
-//                    ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh','left')
-//                    ->where($where)
-//                    ->count();
-//            }
-//            foreach ($data as $key => $value){
-//                //查出成品数量及日期
-//                $cp_sql = "SELECT SUM(jjcp_sl) as cp_sl,MAX(jjcp_sj) as jjcp_sj FROM `成品入仓` WHERE jjcp_gdbh = '{$value['Gd_gdbh']}' AND jjcp_yjno = '{$value['jjcp_yjno']}' GROUP BY jjcp_gdbh,jjcp_yjno";
-//                $cp_data = Db::query($cp_sql);
-//                //入仓总数
-//                $data[$key]['warehousing_num'] = $cp_data[0]['cp_sl'];
-//                $data[$key]['warehousing_date'] = substr($cp_data[0]['jjcp_sj'],0,10);
-//                //查出进入超节损的工序,有上报产量的工序就进入超节损
-//                $gxh_sql = "SELECT sczl_gxh FROM
-//                        (SELECT sczl_gxh FROM 设备_产量计酬 WHERE sczl_gdbh = '{$value['Gd_gdbh']}' AND sczl_yjno = '{$value['jjcp_yjno']}'
-//                        UNION SELECT sczl_gxh FROM db_sczl WHERE sczl_gdbh = '{$value['Gd_gdbh']}' AND sczl_yjno = '{$value['jjcp_yjno']}') AS combined_result";
-//                $gxh_arr = Db::query($gxh_sql);
-//                $gxh_values = array_column($gxh_arr, 'sczl_gxh');
-//                $gy_data =db('工单_工艺资料')
-//                    ->alias('a')
-//                    ->field([
-//                        'a.Gy0_yjno', 'a.Gy0_gxh', 'RTRIM(a.Gy0_gxmc) as Gy0_gxmc','RTRIM(a.Add_gxmc) as Add_gxmc','a.Gy0_ks', 'a.Gy0_ls', 'a.Gy0_计划接货数',
-//                        'a.Gy0_计划损耗', 'a.超节损承担比例','SUM(b.sczl_zcfp) as total_fp','SUM(b.sczl_cl) as total_cl','SUM(c.sczl_cl) as cl','SUM(c.sczl_fp) as fp',
-//                    ])
-//                    ->join('设备_产量计酬 b', 'a.Gy0_gdbh = b.sczl_gdbh AND a.Gy0_yjno = b.sczl_yjno AND a.Gy0_gxh = b.sczl_gxh','left')
-//                    ->join('db_sczl c', 'a.Gy0_gdbh = c.sczl_gdbh AND a.Gy0_yjno = c.sczl_yjno AND a.Gy0_gxh = c.sczl_gxh','left')
-//                    ->where([
-//                        'a.Gy0_gdbh' => $value['Gd_gdbh'],
-//                        'a.Gy0_yjno' =>$value['jjcp_yjno'],
-//                        'a.Gy0_gxh' => ['in', $gxh_values]
-//                    ])
-//                    ->group('a.Gy0_yjno,a.Gy0_gxh')
-//                    ->select();
-//                $arr = [];
-//                $plan_loss = [];//工单计划损耗
-//                $machine_plan_loss = 0;//机检计划损耗
-//                foreach ($gy_data as $k=>$v){
-//                    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'];
-//                    }
-//                }
-//                if ((int)$value['yj_ls'] > 0){
-//                    $value['实际投料'] = number_format(((int)$value['实际投料']/10000)*$value['yj_ls']*$value['yj_ks'],4);
-//                }else{
-//                    $value['实际投料'] = number_format($value['实际投料']/10000,4);
-//                }
-//                $data[$key]['实际投料'] = $value['实际投料'];
-//                if ($value['实际投料'] >0 ){
-//                    $target_rate =  (1-array_sum($arr))*100;
-//                    $data[$key]['target_rate'] =$target_rate.'%'; //目标合格率
-//                    $real_rate = $cp_data[0]['cp_sl'] / ((float)str_replace(',', '', $value['实际投料']) * 10000) *100;
-//                    $data[$key]['real_rate'] = number_format($real_rate,2) . '%';//实际合格率
-//                }else{
-//                    $data[$key]['target_rate'] = ''; //目标合格率
-//                    $data[$key]['real_rate'] = '';//实际合格率
-//                }
-//
-//                //制程废品
-//                $zzfp_data =db('设备_产量计酬')->where('sczl_gdbh',$value['Gd_gdbh'])->where('sczl_yjno',$value['jjcp_yjno'])->value('SUM(sczl_zcfp) as sczl_zcfp');
-//                $data[$key]['zcfp'] = $zzfp_data * $value['yj_ls'];//制程废品
-//                //废品合计
-//                $wasteTotal = db('db_qczl')->where('qczl_gdbh',$value['Gd_gdbh'])->where('qczl_yjno',$value['jjcp_yjno'])->sum('qczl_fp');
-//                if (empty($wasteTotal)){
-//                    $wasteTotal = 0;
-//                }
-//                $data[$key]['废品合计'] = $wasteTotal + $data[$key]['zcfp'];//废品合计
-//                $data[$key]['工单无形损'] = (int)((float)str_replace(',', '', $value['实际投料']) *10000) - $cp_data[0]['cp_sl'] - $data[$key]['废品合计'];//工单无形损
-//                $out_sql = "SELECT fp_sl1,fp_sl2,fp_sl3,fp_sl4,fp_sl5,fp_sl6,fp_sl7,fp_sl8,fp_sl9,fp_sl10,fp_sl11,fp_sl12,fp_sl13,
-//                        fp_lb1,fp_lb2,fp_lb3,fp_lb4,fp_lb5,fp_lb6,fp_lb7,fp_lb8,fp_lb9,fp_lb10,fp_lb11,fp_lb12,fp_lb13,
-//                        fp_bh1,fp_bh2,fp_bh3,fp_bh4,fp_bh5,fp_bh6,fp_bh7,fp_bh8,fp_bh9,fp_bh10,fp_bh11,fp_bh12,fp_bh13,
-//                        fp_gxmc1,fp_gxmc2,fp_gxmc3,fp_gxmc4,fp_gxmc5,fp_gxmc6,fp_gxmc7,fp_gxmc8,fp_gxmc9,fp_gxmc10,fp_gxmc11,fp_gxmc12,fp_gxmc13
-//                        FROM db_qczl WHERE qczl_gdbh = '{$value['Gd_gdbh']}' AND  qczl_yjno = '{$value['jjcp_yjno']}'";
-//                $waste_out = Db::query($out_sql);
-//                $list = []; //外发废数组
-//                $quality = [];//质检废数组
-//                $material = [];//材料废数组
-//                $change = [];//零头处理数组
-//                $machine = [];//机检废品数组
-//                $j = 0;
-//                $m = 0;
-//                $n = 0;
-//                $l = 0;
-//                $o = 0;
-//                foreach ($waste_out as $entry) {
-//                    for ($i = 1; $i <= 13; $i++) {
-//                        $labelKey = "fp_lb" . $i;
-//                        $bhKey = "fp_bh" . $i;
-//                        $gxmcKey = "fp_gxmc" . $i;
-//                        $slKey = "fp_sl" . $i;
-//                        if (!empty($entry[$labelKey])) {
-//                            //外发加工废
-//                            if (substr($entry[$labelKey],0,3) == 'M04'){
-//                                $list[$j]= $entry[$slKey];
-//                                $j++;
-//                            }
-//                            //材料废
-//                            if (substr($entry[$labelKey],0,1) == 'L' ){
-//                                $material[$n]= $entry[$slKey];
-//                                $n++;
-//                            }
-//                            //零头处理
-//                            if (substr($entry[$labelKey],0,3) == 'M01' ){
-//                                $change[$l]= $entry[$slKey];
-//                                $l++;
-//                            }
-//
-//                            //机检废品
-//                            if (substr($entry[$labelKey],0,1) == 'K' ){
-//                                $machine[$o]= $entry[$slKey];
-//                                $o++;
-//                            }
-//                        }
-//                        $quality[$m]= $entry[$slKey];
-//                        $m++;
-//                    }
-//                }
-//                $machine_waste = array_sum($machine);//机检废品
-//                if ($data[$key]['Gd_gdbh'] == '2401746'){
-//                    halt($machine_waste);
-//                }
-//                $data[$key]['工单计划损耗'] = array_sum($plan_loss);//工单计划损耗
-//                /**
-//                 * 奖惩系数及金额
-//                 * 奖惩金额 = 工单节损数 * 0.02(0.09)
-//                 * 工单节损数 = 工单计划损耗 - 废品总数 - 机检节损数
-//                 * 机检节损数 = 机检计划损耗 - 机检质检废品
-//                 */
-//                $machine_loss = $machine_plan_loss - $machine_waste;
-//                $order_loss = $data[$key]['工单计划损耗'] - ($data[$key]['废品合计'] - array_sum($list) - array_sum($material)+$data[$key]['工单无形损'] - $machine_waste);
-//                $guige = \db('物料_存货编码')
-//                    ->where('物料代码',$data[$key]['成品编码'])
-//                    ->value('rtrim(规格)');
-//                //工序超节损金额
-//                if ($guige === '小盒'){
-//                    $moneyRate = 0.02;
-//                }else{
-//                    $moneyRate = 0.09;
-//                }
-//                $reward = $order_loss * $moneyRate;
-//                $data[$key]['reward_rate'] = '1';
-//                if ($data[$key]['质量考核'] === 0){
-//                    $data[$key]['reward_money'] = number_format($reward,2);
-//                    $data[$key]['考核'] = '是';
-//                }else{
-//                    $data[$key]['reward_money'] = '';
-//                    $data[$key]['考核'] = '否';
-//                }
-//                $data[$key]['材料废'] = array_sum($material); //材料废
-//                $data[$key]['零头处理'] = array_sum($change); //零头处理
-//                $data[$key]['外发废'] = array_sum($list);//外发废
-//                $data[$key]['分摊废'] = '';//分摊废
-//                $data[$key]['工单质检废'] =  array_sum($quality);  //质检废
-//                $data[$key]['机检废'] = $machine_waste;
-//            }
-//            $res = [
-//                'data'=>$data,
-//                'total' => $total
-//            ];
-//
-//        }
-//        $this->success('请求成功',$res);
-//    }
+    
     /**
     /**
      * 获取工单超节损工艺
      * 获取工单超节损工艺
      * @ApiMethod GET
      * @ApiMethod GET
@@ -628,12 +347,8 @@ class OrderSuperLoss extends Api
                         }
                         }
                     }
                     }
                 }
                 }
-                //报废合计
-//                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]['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'];
                 //占投料报废率
                 //占投料报废率
@@ -783,10 +498,6 @@ class OrderSuperLoss extends Api
             foreach ($gy_data as &$item) {
             foreach ($gy_data as &$item) {
                 $sczl_bh1 = $item['sczl_bh1'];
                 $sczl_bh1 = $item['sczl_bh1'];
                 $total_cl = $item['total_cl'];
                 $total_cl = $item['total_cl'];
-//                $item['total'] = $totals[$sczl_bh1]['total'];
-//                if ($totals[$sczl_bh1]['count'] > 1) {
-//                    $item['质检废'] = round($total_cl / $totals[$sczl_bh1]['total'] * $item['质检废']);
-//                }
                 //节损数量
                 //节损数量
                 if ($item['无形损分摊'] > 0){
                 if ($item['无形损分摊'] > 0){
                     $total_waste = $item['质检废']  +  $item['sczl_zcfp'] + $item['无形损分摊'];
                     $total_waste = $item['质检废']  +  $item['sczl_zcfp'] + $item['无形损分摊'];
@@ -1014,18 +725,6 @@ class OrderSuperLoss extends Api
             if (!$tlRes){
             if (!$tlRes){
                 $i++;
                 $i++;
             }
             }
-//            $logData = [
-//                'Gd_gdbh'      => $list['st_gdbh'], // 使用原始工单编号
-//                'ModifyUser'   => $value['sys_id'],
-//                'ModifyTime'   => date('Y-m-d H:i:s'),
-//                'FieldName'    => 'st_sl',
-//                'OldValue'     => $value['old_number'],
-//                'NewValue'     => $value['number'],
-//                'ModifySource' => '物料投料数修改'
-//            ];
-//            $logSql = \db('系统操作日志表')->fetchSql(true)->insert($logData);
-//            $result = \db()->query($logSql);
-
         }
         }
         $total_num = \db('物料_收发记录')
         $total_num = \db('物料_收发记录')
             ->alias('a')
             ->alias('a')
@@ -1211,7 +910,6 @@ class OrderSuperLoss extends Api
                         ];
                         ];
                     }
                     }
                 }
                 }
-
             }
             }
         }
         }
         $result = [];
         $result = [];
@@ -2070,30 +1768,30 @@ class OrderSuperLoss extends Api
 
 
         // 定义字段
         // 定义字段
         $field = '  
         $field = '  
-        b.sys_ny,  
-        a.jjcp_gdbh AS Gd_gdbh,  
-        a.jjcp_yjno AS jjcp_yjno,  
-        a.jjcp_yjno AS yj_Yjno, 
-        c.yj_Yjdh as yjdh,
-        c.yj_ls AS yj_ls,  
-        c.yj_cpdh AS 成品编码,  
-        c.yj_yjmc AS 成品名称,  
-        b.`实际投料`,  
-        b.`计量单位`,  
-        DATE(a.jjcp_sj) AS warehousing_date,  
-        total_sl.warehousing_num,
-        SUM(DISTINCT b.`计划损耗`) AS `工单计划损耗`,  
-        b.`废品合计`,  
-        SUM(b.`CjsJe`) AS reward_money,  
-        b.`印件无形损` AS 工单无形损,  
-        b.`材料废`,  
-        b.`零头处理`,  
-        b.`外发废`,  
-        SUM(b.`班组制程废品`) AS zcfp,  
-        `工单质检废` AS 工单质检废,
-        c.质量考核,
-        c.工单类型
-    ';
+            b.sys_ny,  
+            a.jjcp_gdbh AS Gd_gdbh,  
+            a.jjcp_yjno AS jjcp_yjno,  
+            a.jjcp_yjno AS yj_Yjno, 
+            c.yj_Yjdh as yjdh,
+            c.yj_ls AS yj_ls,  
+            c.yj_cpdh AS 成品编码,  
+            c.yj_yjmc AS 成品名称,  
+            b.`实际投料`,  
+            b.`计量单位`,  
+            DATE(a.jjcp_sj) AS warehousing_date,  
+            total_sl.warehousing_num,
+            SUM(DISTINCT b.`计划损耗`) AS `工单计划损耗`,  
+            b.`废品合计`,  
+            SUM(b.`CjsJe`) AS reward_money,  
+            b.`印件无形损` AS 工单无形损,  
+            b.`材料废`,  
+            b.`零头处理`,  
+            b.`外发废`,  
+            SUM(b.`班组制程废品`) AS zcfp,  
+            `工单质检废` AS 工单质检废,
+            c.质量考核,
+            c.工单类型
+        ';
 
 
         // 子查询:计算所有记录的 jjcp_sl 总和(入仓数量)
         // 子查询:计算所有记录的 jjcp_sl 总和(入仓数量)
         $subQuery = \db('成品入仓')
         $subQuery = \db('成品入仓')
@@ -2156,7 +1854,7 @@ class OrderSuperLoss extends Api
         }
         }
     }
     }
 
 
-// 计算合格率
+    // 计算合格率
     private function calculateRate($actual, $loss)
     private function calculateRate($actual, $loss)
     {
     {
         if ($actual == 0) {
         if ($actual == 0) {
@@ -2265,9 +1963,9 @@ 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]['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']/$value['Gy0_计划接货数'],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_计划损耗']/$value['Gy0_计划接货数'],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['实际投料'],4))*100).'%';
         }
         }