liuhairui 1 жил өмнө
parent
commit
ff08cdaf53

+ 259 - 0
application/api/controller/Index.php

@@ -706,6 +706,265 @@ class Index extends Api
 
     }
 
+    /**
+     * 工序产出率月统计报表(缓存)
+     */
+    public function Workorderexcessloss_redis(){
+        //链接定义 Redis
+//        $redis = redis();
+//        $redis_key = md5('Workorderexcessloss_redis');
+
+        //获取当月日期
+        $date = date('Y-m');
+        $where = [];
+        $where['a.jjcp_sj' ] = array('like',$date.'%');
+        $sql = db('物料_收发记录')
+            ->alias('d')
+            ->where('d.仓库编号', 'Y101')
+            ->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('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();
+
+
+        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('工单_工艺资料')
+//                    ->where('Gy0_gdbh',$value['Gd_gdbh'])
+//                    ->where('Gy0_yjno',$value['jjcp_yjno'])
+//                    ->where('Gy0_gxh','in',$gxh_values)
+//                    ->field('Gy0_gxmc,Gy0_计划接货数,Gy0_计划损耗')
+//                    ->select();
+            $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 ($v['Gy0_计划接货数'] > 0){
+                    $rate =  round($v['Gy0_计划损耗'] / $v['Gy0_计划接货数'],5);
+                }else{
+                    $rate = 0;
+                }
+                $arr[$k] = floor($rate * 10000) /10000;
+                $plan_loss[$k] = $v['Gy0_计划损耗'];
+
+//                    if (strpos($v['Gy0_gxmc'],'机检') !== false){
+//                        $machine_plan_loss = $v['Gy0_计划损耗'];
+//                    }
+            }
+
+            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'] / ($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'])->field('SUM(sczl_zcfp) as sczl_zcfp')->select();
+            $data[$key]['zcfp'] = $zzfp_data[0]['sczl_zcfp'] * $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)($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[$gxmcKey],0,2) == '99'){
+//                                $list[$j]= $entry[$slKey];
+//                                $j++;
+//                            }
+//                            if (substr($entry[$labelKey],0,1) == 'L' ){
+//                                $material[$n]= $entry[$slKey];
+//                                $n++;
+//                            }
+//                            if (substr($entry[$labelKey],0,3) == 'M04' ){
+//                                $change[$l]= $entry[$slKey];
+//                                $l++;
+//                            }
+//                        }
+//                        if (!empty($entry[$bhKey])) {
+//                            if ($entry[$bhKey] != '000000' && $entry[$slKey] > 0){
+//                                $quality[$m]= $entry[$slKey];
+//                                $m++;
+//                            }
+////                            if ($entry[$bhKey] != '000000' && substr($entry[$labelKey],0,3) == 'K01'){
+////                                $machine[$o]= $entry[$slKey];
+////                                $o++;
+////                            }
+//                        }
+                    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 (!empty($entry[$bhKey])) {
+//                    if ($entry[$bhKey] != '000000' && $entry[$slKey] > 0){
+                    $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));
+            if (strpos($data[$key]['成品名称'],'小盒')){
+                $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);
+            }else{
+                $data[$key]['reward_money'] = '';
+            }
+//                $data[$key]['reward_money'] = '';
+            $data[$key]['材料废'] = array_sum($material); //材料废
+            $data[$key]['零头处理'] = array_sum($change); //零头处理
+            $data[$key]['外发废'] = array_sum($list);//外发废
+            $data[$key]['分摊废'] = '';//分摊废
+            $data[$key]['工单质检废'] =  array_sum($quality);  //质检废
+        }
+
+//        if($data){
+//            //将查询结果存入 Redis 缓存中
+//            $redis->set($redis_key, json_encode($data));
+//            echo date("Y-m-d H:i:s").'   存进去了';
+//            return json($data);
+//        }
+        $bool = cache('cacheWorkorderexcessloss_redis',$data);
+        if($bool===false) $this->error('存入redis失败','','000002');
+        $this->success('存入成功');
+    }
+
+    /**
+     * 工序产出率月统计报表(接口)
+     */
+    public function Workorderexcessloss(){
+        $data = cache('cacheWorkorderexcessloss_redis');
+//        $redis = redis();
+//        $data = json_decode($redis->get(md5('Workorderexcessloss_redis')),true);
+        $rows = [];
+        foreach ($data as $item) {
+            $rows[] = [
+                'Gd_gdbh' => $item['Gd_gdbh'],
+                'cpmc' => $item['成品名称'],
+                'jjcp_sj' => $item['jjcp_sj'],
+                'target_rate' => $item['target_rate'],
+                'real_rate' => $item['real_rate'],
+            ];
+        }
+        // 最终响应格式
+        $response = [
+            'status' => 0,
+            'msg' => '',
+            'data' => [
+                'columns' => [
+                    ['name' => '工单编号','width'=>'10','id' => 'Gd_gdbh'],
+                    ['name' => '产品名称','width'=>'38','id' => 'cpmc'],
+                    ['name' => '入仓时间','width'=>'20','id' => 'jjcp_sj'],
+                    ['name' => '目标合格率','width'=>'16','id' => 'target_rate'],
+                    ['name' => '实际合格率','width'=>'16','id' => 'real_rate'],
+                ],
+                'rows' => $rows
+            ]
+        ];
+        return json($response);
+    }
 
 }
 

+ 131 - 68
application/api/controller/WorkOrder.php

@@ -724,42 +724,59 @@ class WorkOrder extends Api
         if (empty($param)){
             $this->error('参数错误');
         }
-        $UniqId = [];
-        $lastId = \db('工单_工艺资料')->field('rtrim(UniqId) as id')->order('UniqId desc')->find();
-        if ($lastId['id']>10000000){
-            $lastUniqId = $lastId['id'];
-        }else{
-            $lastUniqId = 10000000;
-        }
-        foreach ($param as $key=>$value){
-            $UniqId[$key] = $value['UniqId'];
-        }
-        $processList = \db('工单_工艺资料')->where('UniqId','in',$UniqId)->select();
-        if (empty($processList)){
-            $this->success('未找到工艺资料');
-        }
-        $data = [];
-        foreach ($param as $key=>$value){
-            foreach ($processList as $k=>$v){
-                if ($value['UniqId'] = $v['UniqId']){
-                    $data[$key] = $v;
-                    $data[$key]['Gy0_gxh'] = $value['gxh'];
-                    $data[$key]['Gy0_gdbh'] = $value['workOrder'];
-                    $data[$key]['UniqId'] = $lastUniqId + $key + 1;
-                }
+        $i = 0;
+        foreach ($param as $key => $value){
+            $sql = \db('工单_工艺资料')
+                ->where('UniqId',$value['UniqId'])
+                ->fetchSql(true)
+                ->update(['Gy0_gxh'=>$value['gxh']]);
+            $res = \db()->query($sql);
+            if ($res === false){
+                $i++;
             }
         }
-        $res = \db('工单_工艺资料')->where(['Gy0_gdbh'=>$param[0]['workOrder']])->delete();
-        if ($res !== false){
-            $result = \db('工单_工艺资料')->insertAll($data);
-            if ($result !== false){
-                $this->success('成功');
-            }else{
-                $this->error('失败');
-            }
+        if ($i === 0){
+            $this->success('成功');
         }else{
             $this->error('失败');
         }
+//        $UniqId = [];
+//        $lastId = \db('工单_工艺资料')->field('rtrim(UniqId) as id')->order('UniqId desc')->find();
+//        if ($lastId['id']>10000000){
+//            $lastUniqId = $lastId['id'];
+//        }else{
+//            $lastUniqId = 10000000;
+//        }
+//        foreach ($param as $key=>$value){
+//            $UniqId[$key] = $value['UniqId'];
+//        }
+//        $processList = \db('工单_工艺资料')->where('UniqId','in',$UniqId)->select();
+//        if (empty($processList)){
+//            $this->success('未找到工艺资料');
+//        }
+//        halt($processList);
+//        $data = [];
+//        foreach ($param as $key=>$value){
+//            foreach ($processList as $k=>$v){
+//                if ($value['UniqId'] = $v['UniqId']){
+//                    $data[$key] = $v;
+//                    $data[$key]['Gy0_gxh'] = $value['gxh'];
+//                    $data[$key]['Gy0_gdbh'] = $value['workOrder'];
+//                    $data[$key]['UniqId'] = $lastUniqId + $key + 1;
+//                }
+//            }
+//        }
+//        $res = \db('工单_工艺资料')->where(['Gy0_gdbh'=>$param[0]['workOrder']])->delete();
+//        if ($res !== false){
+//            $result = \db('工单_工艺资料')->insertAll($data);
+//            if ($result !== false){
+//                $this->success('成功');
+//            }else{
+//                $this->error('失败');
+//            }
+//        }else{
+//            $this->error('失败');
+//        }
     }
 
     /**
@@ -952,7 +969,6 @@ class WorkOrder extends Api
                 $value['gxh'] = '0'.$value['gxh'];
             }
             $list[$key]['印件号及工序名称'] = $value['yjno'].'-'.$value['gxh'].$value['gxmc'].'('.$value['add_gxmc'].')';
-            unset($list[$key]['yjno'],$list[$key]['gxmc'],$list[$key]['add_gxmc']);
         }
         $this->success('成功',$list);
     }
@@ -1109,11 +1125,15 @@ class WorkOrder extends Api
         $param['Mod_rq']  = date('Y-m-d H:i:s',time());
         $UniqId = $param['UniqId'];
         unset($param['UniqId']);
+        //获取工单第一道工艺编号
+        $minGxh = \db('工单_工艺资料')->where('Gy0_gdbh',$param['Gy0_gdbh'])->column('min(Gy0_gxh) as gxh');
         //修改工艺资料
         $sql = \db('工单_工艺资料')->where('UniqId',$UniqId)->fetchSql(true)->update($param);
         $res = Db::query($sql);
         //获取工艺资料数据
         $list = \db('工单_工艺资料')->where('UniqId',$UniqId)->field('Gy0_yjno,Gy0_gxh,rtrim(Gy0_计划接货数) as 计划接货数')->find();
+        //如果是第一道工序需从印件资料中获取计划产量
+        $list['计划接货数'] = \db('工单_印件资料')->where('Yj_Gdbh',$param['Gy0_gdbh'])->where('yj_Yjno',$param['Gy0_yjno'])->column('yj_平张投料')[0];
         //修改工单状态
         $status = \db('工单_基本资料')->where('Gd_gdbh',$param['Gy0_gdbh'])->field('rtrim(gd_statu) as status')->find();
         if ($status['status'] !== '2-生产中'){
@@ -1122,7 +1142,7 @@ class WorkOrder extends Api
         }
         //重新分配工序计划产量
         if ((int)$list['计划接货数'] > 0){
-            $result = $this->PlannedProcessYield($param['Gy0_gdbh'],$list['Gy0_yjno'],$list['Gy0_gxh'],$list['计划接货数']);
+            $result = $this->PlannedProcessYield($param['Gy0_gdbh'],$list['Gy0_yjno'],0,$list['计划接货数']);
         }
         if ($res !== false){
             $this->success('成功');
@@ -1149,6 +1169,7 @@ class WorkOrder extends Api
         }
         $list = \db('设备_基本资料')
             ->where('使用部门',$param['address'])
+            ->where('sys_sbID','<>','')
             ->field('rtrim(设备编号) as 设备编号,rtrim(设备名称) as 设备名称')
             ->order('设备编组,设备编号')
             ->select();
@@ -1373,7 +1394,6 @@ class WorkOrder extends Api
                 $value['gxh'] = '0'.$value['gxh'];
             }
             if ($value['add_gxmc'] !== null){
-
                 $list[$key]['印件及工序名称'] = $value['yjno'].'-'.$value['gxh'].'-->'.$value['gxmc'].'【'.$value['add_gxmc'].'】';
             }else{
                 $list[$key]['印件及工序名称'] = $value['yjno'].'-'.$value['gxh'].'-->'.$value['gxmc'];
@@ -1421,7 +1441,7 @@ class WorkOrder extends Api
     /**
      * 新增工单->添加工单
      * @ApiMethod (POST)
-     * @param 
+     * @param
      * @return void
      * @throws \think\Exception
      * @throws \think\db\exception\BindParamException
@@ -1489,8 +1509,8 @@ class WorkOrder extends Api
             'Gd_khmc' =>$param['khmc'],
             '客户料号' =>rtrim($productDetail['客户料号']),
             '客户ERP编码' =>$param['erp'],
-            'Gd_cpdh' =>$param['cpdh'],
-            'Gd_cpmc' =>$param['cpmc'],
+            'Gd_cpdh' =>'',
+            'Gd_cpmc' =>'',
             '成品代号' =>$param['cpdh'],
             '成品名称' =>$param['cpmc'],
             '产品版本号' =>$param['bbh'],
@@ -1642,6 +1662,7 @@ class WorkOrder extends Api
         $list = \db('产品_基本资料')
             ->where($where)
             ->field('rtrim(产品编号) as 产品编号,rtrim(产品名称) as 产品名称')
+            ->limit(50)
             ->select();
         if (empty($list)){
             $this->success('未获取到产品数据');
@@ -1678,9 +1699,39 @@ class WorkOrder extends Api
         $param['Uniqid'] = $lastId;
         $param['Sys_rq'] = date('Y-m-d H:i:s',time());
         $param['Mod_rq'] = date('Y-m-d H:i:s',time());
-        $sql = \db('工单_印件资料')->fetchSql(true)->insert($param);
-        $res = \db()->query($sql);
-        if ($res !== false){
+        //判断印件号是否存在在工单基本资料表中,存在不增加行号,不存在增加行号
+        if (empty(\db('工单_基本资料')->where('Gd_gdbh',$param['Yj_Gdbh'])->where('行号',$param['yj_Yjno'])->find())){
+            $list = \db('工单_基本资料')->where('Gd_gdbh',$param['Yj_Gdbh'])->find();
+            $list['行号'] = $param['yj_Yjno'];
+            $list['Gd_cpdh'] = $param['yj_Yjdh'];
+            $list['Gd_cpmc'] = $param['yj_yjmc'];
+            $list['Sys_id'] = $param['Sys_id'];
+            $list['Sys_rq'] = $param['Sys_rq'];
+            $list['Mod_rq'] = $param['Mod_rq'];
+            unset($list['Uniqid']);
+            $workSql = \db('工单_基本资料')->fetchSql(true)->insert($list);
+        }else{
+            $data['Gd_cpdh'] = $param['yj_Yjdh'];
+            $data['Gd_cpmc'] = $param['yj_yjmc'];
+            $workSql = \db('工单_基本资料')
+                ->where('Gd_gdbh',$param['Yj_Gdbh'])
+                ->where('行号',$param['yj_Yjno'])
+                ->fetchSql(true)
+                ->update($data);
+        }
+        //开启事务
+        Db::startTrans();
+        try{
+            $sql = \db('工单_印件资料')->fetchSql(true)->insert($param);
+            $res = \db()->query($sql);
+            $workRes = \db()->query($workSql);
+            //提交事务
+            \db()->commit();
+        } catch (\Exception $e) {
+            // 回滚事务
+            \db()->rollback();
+        }
+        if ($res !== false && $workRes !== false){
             $this->success('成功');
         }else{
             $this->error('失败');
@@ -1734,7 +1785,7 @@ class WorkOrder extends Api
             ->value('rtrim(yj_平张投料)');
         //分配工艺计划产量
         if ((int)$number >0){
-            $this->PlannedProcessYield($param['Gy0_gdbh'],$param['Gy0_yjno'],$param['Gy0_gxh'],$number);
+            $this->PlannedProcessYield($param['Gy0_gdbh'],$param['Gy0_yjno'],0,$number);
         }
         if ($res !== false){
             $this->success('成功');
@@ -1873,6 +1924,9 @@ class WorkOrder extends Api
         if (empty($param['process'])){
             $this->error('参数错误');
         }
+        if (strlen($param['process'])>6){
+            $param['process'] = substr($param['process'],0,6);
+        }
         $order = \db('dic_lzsh')
             ->where('sys_mc','like',$param['process'].'%')
             ->value('rtrim(sys_bh) as 编号');
@@ -1920,7 +1974,7 @@ class WorkOrder extends Api
             '附件类型',
             '适用工序',
             '关联产品'
-            ];
+        ];
         $data = [];
         foreach ($arr as $key => $value){
             if (!isset($req[$value])){
@@ -1951,7 +2005,7 @@ class WorkOrder extends Api
 
         $this->success('成功');
     }
-    
+
     /**
      * 产品附件修改
      * @ApiMethod (GET)
@@ -2025,7 +2079,7 @@ class WorkOrder extends Api
             '附件内容',
             '附件类型',
             '关联编号'
-            ];
+        ];
         $data = [];
         foreach ($arr as $key => $value){
             if (!isset($req[$value])){
@@ -2056,7 +2110,7 @@ class WorkOrder extends Api
 
         $this->success('成功');
     }
-    
+
     /**
      * 产品附件修改
      * @ApiMethod (GET)
@@ -2251,6 +2305,9 @@ class WorkOrder extends Api
             //设置默认机台
             $machineList = \db('设备_基本资料')
                 ->where('生产工序','like','%'.$value['gy0_gxmc'].'%')
+                ->where('使用部门','<>','研发中心')
+                ->where('设备编组','<>','')
+                ->where('sys_sbID','<>','')
                 ->order('设备编号')
                 ->value('设备编号');
             $ProcessList[$key]['Gy0_sbbh'] = '';
@@ -2362,18 +2419,11 @@ class WorkOrder extends Api
      */
     public function PlannedProcessYield($workOrder,$yjno,$gxh,$feed)
     {
-        if ($gxh === 0){
-            $where = [
-                'Gy0_gdbh'=>$workOrder,
-                'Gy0_yjno'=>$yjno,
-            ];
-        }else{
-            $where = [
-                'Gy0_gdbh'=>$workOrder,
-                'Gy0_yjno'=>$yjno,
-                'Gy0_gxh'=>['>=',$gxh]
-            ];
-        }
+
+        $where = [
+            'Gy0_gdbh'=>$workOrder,
+            'Gy0_yjno'=>$yjno,
+        ];
         //获取工艺资料
         $processList = \db('工单_工艺资料')
             ->where($where)
@@ -2387,26 +2437,39 @@ class WorkOrder extends Api
         $production = [];
         $i = 0;
         foreach ($processList as $key=>$value){
+//            if ($key === 0){
+//                array_push($production,$feed);
+//            }
+//            $wastage = 0;
+//            if ($value['损耗率'] !== 0 && !empty($value['损耗率'])){
+//                $wastage = ($production[$key]*$value['损耗率']+$value['损耗定额'])*$value['损耗系数'];
+//            }
+//
+//            if ($value['Gy0_ms'] >0 && !empty($value['Gy0_ms'])){
+//                $wastage = round($wastage * $value['Gy0_ms']);
+//            }
+//            if ((int)$value['Gy0_ls'] === 1 && $key>=1){
+//                $number = $production[$key]*$processList[$key-1]['Gy0_ls'];
+//            }else{
+//                $number = $production[$key];
+//            }
+//            if ($key>=1 && (int)$processList[$key-1]['Gy0_ls'] === 1 &&  (int)$value['Gy0_ls'] > 1){
+//                $number = $number/(int)$value['Gy0_ls'];
+//            }
+//            array_push($production,ceil($number-$wastage));
             if ($key === 0){
                 array_push($production,$feed);
+            }else{
+                $production[$key] = $production[$key]/$value['Gy0_ls'];
             }
             $wastage = 0;
             if ($value['损耗率'] !== 0 && !empty($value['损耗率'])){
                 $wastage = ($production[$key]*$value['损耗率']+$value['损耗定额'])*$value['损耗系数'];
             }
-
             if ($value['Gy0_ms'] >0 && !empty($value['Gy0_ms'])){
                 $wastage = round($wastage * $value['Gy0_ms']);
             }
-            if ((int)$value['Gy0_ls'] === 1 && $key>=1){
-                $number = $production[$key]*$processList[$key-1]['Gy0_ls'];
-            }else{
-                $number = $production[$key];
-            }
-            if ($key>=1 && (int)$processList[$key-1]['Gy0_ls'] === 1 &&  (int)$value['Gy0_ls'] > 1){
-                $number = $number/(int)$value['Gy0_ls'];
-            }
-            array_push($production,ceil($number-$wastage));
+            array_push($production,ceil($production[$key]-$wastage)*$value['Gy0_ls']);
             $processSql = \db('工单_工艺资料')
                 ->where('UniqId',$value['UniqId'])
                 ->fetchSql(true)
@@ -2522,4 +2585,4 @@ class WorkOrder extends Api
         $list['工序号'] = $process + 1;
         $this->success('成功',$list);
     }
-}
+}