소스 검색

超节损员工分配

qiuenguang 1 년 전
부모
커밋
d25a6a47b2

+ 17 - 1
application/api/controller/FinishedProductWarehousing.php

@@ -3,6 +3,10 @@
 namespace app\api\controller;
 namespace app\api\controller;
 
 
 use app\common\controller\Api;
 use app\common\controller\Api;
+use app\api\controller\OrderSuperLoss;
+use think\db\exception\DataNotFoundException;
+use think\db\exception\ModelNotFoundException;
+use think\exception\DbException;
 
 
 /**
 /**
  * 成品入仓维护接口
  * 成品入仓维护接口
@@ -476,8 +480,20 @@ class FinishedProductWarehousing extends Api
             db()->rollback();
             db()->rollback();
             $this->error($e->getMessage());
             $this->error($e->getMessage());
         }
         }
-
         if($bool===false) $this->error('失败');
         if($bool===false) $this->error('失败');
+        //末版输入进入超节损
+        $oederLoss = new \app\api\controller\OrderSuperLoss();
+        if (strpos($data['jjcp_smb'],'末') !== false){
+            try {
+                $result = $oederLoss->OneOrderSuperLoss($data['jjcp_gdbh'], $data['jjcp_yjno']);
+            } catch (DataNotFoundException $e) {
+            } catch (ModelNotFoundException $e) {
+            } catch (DbException $e) {
+            }
+            $sql = db('工单_质量考核汇总')->fetchSql(true)->insertAll($result);
+            $res = db()->query($sql);
+            if($res===false) $this->error('失败');
+        }
 
 
         $this->success('成功');
         $this->success('成功');
 
 

+ 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);
+    }
 
 
 }
 }
 
 

+ 287 - 49
application/api/controller/LargeWasteRewardPunish.php

@@ -109,28 +109,28 @@ class LargeWasteRewardPunish extends Api
             $this->error('参数错误');
             $this->error('参数错误');
         }
         }
         $res = db()->table('db_大废品')
         $res = db()->table('db_大废品')
-        ->field('sczl_gdbh, LEFT(sczl_rq, 10) as sczl_rq, rtrim(sczl_numDesc) as sczl_numDesc, sczl_ls, sczl_yjno, 
+            ->field('sczl_gdbh, LEFT(sczl_rq, 10) as sczl_rq, rtrim(sczl_numDesc) as sczl_numDesc, sczl_ls, sczl_yjno, 
         rtrim(责任部门) as 责任部门,sczl_cl, 
         rtrim(责任部门) as 责任部门,sczl_cl, 
         rtrim(sczl_fplxA) as sczl_fplxA, sczl_fplxB, jl_jtbh as Jl_bzdh, JL_bh1, 
         rtrim(sczl_fplxA) as sczl_fplxA, sczl_fplxB, jl_jtbh as Jl_bzdh, JL_bh1, 
         sczl_jtbh as sczl_bzdh, sczl_bh1, sczl_je1, sczl_bh2, sczl_je2, rtrim(sys_id) as sys_id, sys_rq, UniqId')
         sczl_jtbh as sczl_bzdh, sczl_bh1, sczl_je1, sczl_bh2, sczl_je2, rtrim(sys_id) as sys_id, sys_rq, UniqId')
-        ->where('sczl_gdbh',$req['date'])
-        ->order('UniqId desc')
-        ->page($page,$limit)
-        ->select();
+            ->where('sczl_gdbh',$req['date'])
+            ->order('UniqId desc')
+            ->page($page,$limit)
+            ->select();
         if($res){
         if($res){
             $rows=$res;
             $rows=$res;
             $total = db()->table('db_大废品')->where('sczl_gdbh',$req['date'])->count();;
             $total = db()->table('db_大废品')->where('sczl_gdbh',$req['date'])->count();;
         }else{
         }else{
             $rows = db()->table('db_大废品')
             $rows = db()->table('db_大废品')
-            ->field('sczl_gdbh, LEFT(sczl_rq, 10) as sczl_rq, rtrim(sczl_numDesc) as sczl_numDesc, sczl_ls, sczl_yjno, 
+                ->field('sczl_gdbh, LEFT(sczl_rq, 10) as sczl_rq, rtrim(sczl_numDesc) as sczl_numDesc, sczl_ls, sczl_yjno, 
             rtrim(责任部门) as 责任部门, sczl_cl, 
             rtrim(责任部门) as 责任部门, sczl_cl, 
             rtrim(sczl_fplxA) as sczl_fplxA, sczl_fplxB, jl_jtbh as Jl_bzdh, JL_bh1, 
             rtrim(sczl_fplxA) as sczl_fplxA, sczl_fplxB, jl_jtbh as Jl_bzdh, JL_bh1, 
             sczl_jtbh as sczl_bzdh, sczl_bh1, sczl_je1, sczl_bh2, sczl_je2, rtrim(sys_id) as sys_id, sys_rq, UniqId')
             sczl_jtbh as sczl_bzdh, sczl_bh1, sczl_je1, sczl_bh2, sczl_je2, rtrim(sys_id) as sys_id, sys_rq, UniqId')
-            ->where($where)
-            ->order('UniqId desc')
-            ->page($page,$limit)
-            ->select();
-           $total = db()->table('db_大废品')->where($where)->count();
+                ->where($where)
+                ->order('UniqId desc')
+                ->page($page,$limit)
+                ->select();
+            $total = db()->table('db_大废品')->where($where)->count();
         }
         }
         $gd = db()->table('工单_印件资料')->column('Yj_Gdbh, yj_yjmc');
         $gd = db()->table('工单_印件资料')->column('Yj_Gdbh, yj_yjmc');
         $rs = db()->table('人事_基本资料')->where('员工姓名','<>','通用编号')->column('员工编号, 员工姓名');
         $rs = db()->table('人事_基本资料')->where('员工姓名','<>','通用编号')->column('员工编号, 员工姓名');
@@ -189,26 +189,26 @@ class LargeWasteRewardPunish extends Api
             ,rtrim(zr4.员工姓名) as zrname4,rtrim(zr5.员工姓名) as zrname5,rtrim(zr6.员工姓名) as zrname6
             ,rtrim(zr4.员工姓名) as zrname4,rtrim(zr5.员工姓名) as zrname5,rtrim(zr6.员工姓名) as zrname6
             ,rtrim(zr7.员工姓名) as zrname7,rtrim(zr8.员工姓名) as zrname8,rtrim(zr9.员工姓名) as zrname9
             ,rtrim(zr7.员工姓名) as zrname7,rtrim(zr8.员工姓名) as zrname8,rtrim(zr9.员工姓名) as zrname9
             ,sczl_je1,sczl_je2,sczl_je3,sczl_je4,sczl_je5,sczl_je6,sczl_je7,sczl_je8,sczl_je9')
             ,sczl_je1,sczl_je2,sczl_je3,sczl_je4,sczl_je5,sczl_je6,sczl_je7,sczl_je8,sczl_je9')
-           ->join('工单_基本资料 g','g.Gd_gdbh=db_大废品.sczl_gdbh')
-           ->join('工单_印件资料 yj','yj.Yj_Gdbh=db_大废品.sczl_gdbh','LEFT')
-           ->join('人事_基本资料 jl1','jl1.员工编号=db_大废品.JL_bh1','LEFT')
-           ->join('人事_基本资料 jl2','jl2.员工编号=db_大废品.JL_bh2','LEFT')
-           ->join('人事_基本资料 jl3','jl3.员工编号=db_大废品.JL_bh3','LEFT')
-           ->join('人事_基本资料 jl4','jl4.员工编号=db_大废品.JL_bh4','LEFT')
-           ->join('人事_基本资料 jl5','jl5.员工编号=db_大废品.JL_bh5','LEFT')
-           ->join('人事_基本资料 jl6','jl6.员工编号=db_大废品.JL_bh6','LEFT')
-           ->join('人事_基本资料 jl7','jl7.员工编号=db_大废品.JL_bh7','LEFT')
-           ->join('人事_基本资料 jl8','jl8.员工编号=db_大废品.JL_bh8','LEFT')
-           ->join('人事_基本资料 jl9','jl9.员工编号=db_大废品.JL_bh9','LEFT')
-           ->join('人事_基本资料 zr1','zr1.员工编号=db_大废品.sczl_bh1','LEFT')
-           ->join('人事_基本资料 zr2','zr2.员工编号=db_大废品.sczl_bh2','LEFT')
-           ->join('人事_基本资料 zr3','zr3.员工编号=db_大废品.sczl_bh3','LEFT')
-           ->join('人事_基本资料 zr4','zr4.员工编号=db_大废品.sczl_bh4','LEFT')
-           ->join('人事_基本资料 zr5','zr5.员工编号=db_大废品.sczl_bh5','LEFT')
-           ->join('人事_基本资料 zr6','zr6.员工编号=db_大废品.sczl_bh6','LEFT')
-           ->join('人事_基本资料 zr7','zr7.员工编号=db_大废品.sczl_bh7','LEFT')
-           ->join('人事_基本资料 zr8','zr8.员工编号=db_大废品.sczl_bh8','LEFT')
-           ->join('人事_基本资料 zr9','zr9.员工编号=db_大废品.sczl_bh9','LEFT')
+            ->join('工单_基本资料 g','g.Gd_gdbh=db_大废品.sczl_gdbh')
+            ->join('工单_印件资料 yj','yj.Yj_Gdbh=db_大废品.sczl_gdbh','LEFT')
+            ->join('人事_基本资料 jl1','jl1.员工编号=db_大废品.JL_bh1','LEFT')
+            ->join('人事_基本资料 jl2','jl2.员工编号=db_大废品.JL_bh2','LEFT')
+            ->join('人事_基本资料 jl3','jl3.员工编号=db_大废品.JL_bh3','LEFT')
+            ->join('人事_基本资料 jl4','jl4.员工编号=db_大废品.JL_bh4','LEFT')
+            ->join('人事_基本资料 jl5','jl5.员工编号=db_大废品.JL_bh5','LEFT')
+            ->join('人事_基本资料 jl6','jl6.员工编号=db_大废品.JL_bh6','LEFT')
+            ->join('人事_基本资料 jl7','jl7.员工编号=db_大废品.JL_bh7','LEFT')
+            ->join('人事_基本资料 jl8','jl8.员工编号=db_大废品.JL_bh8','LEFT')
+            ->join('人事_基本资料 jl9','jl9.员工编号=db_大废品.JL_bh9','LEFT')
+            ->join('人事_基本资料 zr1','zr1.员工编号=db_大废品.sczl_bh1','LEFT')
+            ->join('人事_基本资料 zr2','zr2.员工编号=db_大废品.sczl_bh2','LEFT')
+            ->join('人事_基本资料 zr3','zr3.员工编号=db_大废品.sczl_bh3','LEFT')
+            ->join('人事_基本资料 zr4','zr4.员工编号=db_大废品.sczl_bh4','LEFT')
+            ->join('人事_基本资料 zr5','zr5.员工编号=db_大废品.sczl_bh5','LEFT')
+            ->join('人事_基本资料 zr6','zr6.员工编号=db_大废品.sczl_bh6','LEFT')
+            ->join('人事_基本资料 zr7','zr7.员工编号=db_大废品.sczl_bh7','LEFT')
+            ->join('人事_基本资料 zr8','zr8.员工编号=db_大废品.sczl_bh8','LEFT')
+            ->join('人事_基本资料 zr9','zr9.员工编号=db_大废品.sczl_bh9','LEFT')
             ->where('d.UniqId',$UniqId)->limit(1)->select();
             ->where('d.UniqId',$UniqId)->limit(1)->select();
 
 
         $this->success('成功',$rows);
         $this->success('成功',$rows);
@@ -232,7 +232,7 @@ class LargeWasteRewardPunish extends Api
         }
         }
         $list = \db('工单_基本资料')
         $list = \db('工单_基本资料')
             ->field('rtrim(Gd_gdbh) as 工单编号,rtrim(成品名称) as 产品名称')
             ->field('rtrim(Gd_gdbh) as 工单编号,rtrim(成品名称) as 产品名称')
-            ->where('Gd_gdbh',$params['search'])
+            ->where('Gd_gdbh','like','%'.$params['search'].'%')
             ->select();
             ->select();
         if (empty($list)){
         if (empty($list)){
             $this->success('未找到工单信息');
             $this->success('未找到工单信息');
@@ -403,28 +403,149 @@ class LargeWasteRewardPunish extends Api
      */
      */
     public function JunkDetailEdit()
     public function JunkDetailEdit()
     {
     {
-        if (Request::instance()->isPost() === false){
+        // 判断请求方式是否为 POST
+        if (Request::instance()->isPost() === false) {
             $this->error('非法请求');
             $this->error('非法请求');
         }
         }
+
+        // 获取请求参数
         $param = Request::instance()->post();
         $param = Request::instance()->post();
-        if (empty($param['sczl_gdbh']) || empty($param['UniqId'])){
+        if (empty($param['sczl_gdbh']) || empty($param['UniqId'])) {
             $this->error('参数错误');
             $this->error('参数错误');
         }
         }
-        $param['mod_rq'] = date('Y-m-d H:i:s',time());
-        $data = $param;
-        unset($data['UniqId']);
+
+        $param['mod_rq'] = date('Y-m-d H:i:s', time());
+
+        $data = $param['sczl_rq'].' 00:00:00';
+
+        // 奖励班组封顶限制【记录是否存在超限的标志】
+        $over_limit = false;
+
+        // 遍历 JL_bh1 ~ JL_bh10,检查当天和本月金额限制
+        for ($i = 1; $i <= 10; $i++) {
+            $jl_bh = 'JL_bh' . $i;  // 获取 JL_bh1 到 JL_bh10
+            $jl_je = 'JL_Je' . $i;  // 获取 JL_Je1 到 JL_Je10
+
+            if (!empty($param[$jl_bh]) && isset($param[$jl_je])) {  // 确保 JL_bh 和 JL_Je 不为空
+                $person_id = $param[$jl_bh];  // 当前人员的 ID
+                $amount = $param[$jl_je];     // 当前人员的金额
+
+                // 获取当天的所有记录金额总和
+                $daily_total = \db('db_大废品')
+                    ->where('sczl_rq', $data)
+                    ->sum($jl_je);
+
+
+                $daUniqId = \db('db_大废品')
+                    ->where('UniqId', $param['UniqId'])
+                    ->sum($jl_je);
+
+                // 将当天的金额总和与接口传过来的金额加起来
+                $total_amount = ($daily_total + $amount) - $daUniqId;  // 假设传入的是 JL_Je1
+
+
+                // 检查金额是否超过 200 元
+                if ($total_amount > 200) {
+                    $this->error("【{$person_id}】当天金额超限!当天金额不能超过 200 元!");
+                    $over_limit = true;
+                    break;
+                }
+
+                // 获取当月的所有记录金额总和
+                $month = substr($data, 5, 2);
+                $year = substr($data, 0, 4);
+                $start_date = $year . '-' . $month . '-01';
+                $end_date = date('Y-m-t', strtotime($start_date));
+                $monthly_total = \db('db_大废品')
+                    ->whereBetween('sczl_rq', [$start_date, $end_date])
+                    ->where($jl_bh, $person_id)
+                    ->sum($jl_je);
+
+                // 检查本月是否超过 1500 元
+                if ($monthly_total + $amount - $daUniqId > 1500) {
+                    $this->error("【{$person_id}】本月金额超限!本月金额不能超过 1500 元!");
+                    $over_limit = true;
+                    break;
+                }
+            }
+        }
+        // 如果存在超限,停止执行
+        if ($over_limit) {
+            return;
+        }
+
+        // 扣罚金额封顶限制
+        $kfover_limit = false;
+        // 检查 sczl_bh1 的限制(不能超过 1000 元)
+        if (!empty($param['sczl_bh1']) && isset($param['sczl_je1'])) {
+            $person_id = $param['sczl_bh1'];
+            $amount = $param['sczl_je1'];
+
+            // 获取该人员当天的扣罚金额总和
+            $daily_total = \db('db_大废品')
+                ->where('sczl_rq', $data)
+                ->where('sczl_bh1', $person_id)
+                ->sum('sczl_je1');
+
+            $daUniqId = \db('db_大废品')
+                ->where('UniqId', $param['UniqId'])
+                ->sum("sczl_je1");
+
+            // 判断是否超过 1000 元
+            if (($daily_total + $amount) - $daUniqId > 1000) {
+                $this->error("【{$person_id}】当天扣罚金额超限!当天扣罚金额不能超过 1000 元!");
+                $kfover_limit = true;
+            }
+        }
+
+        // 遍历 sczl_bh2 ~ sczl_bh10,检查当天金额是否超过 500 元
+        for ($i = 2; $i <= 10; $i++) {
+            $sczl_bh = 'sczl_bh' . $i;
+            $sczl_je = 'sczl_je' . $i;
+
+            if (!empty($param[$sczl_bh]) && isset($param[$sczl_je])) {
+                $person_id = $param[$sczl_bh];
+                $amount = $param[$sczl_je];
+
+                // 获取该人员当天的扣罚金额总和
+                $daily_total = \db('db_大废品')
+                    ->where('sczl_rq', $data)
+//                    ->where($sczl_bh, $person_id)
+                    ->sum($sczl_je);
+
+                $daUniqId = \db('db_大废品')
+                    ->where('UniqId', $param['UniqId'])
+                    ->sum($sczl_je);
+
+                $total_amount = ($daily_total + $amount) - $daUniqId;  // 假设传入的是 JL_Je1
+
+                // 判断是否超过 500 元
+                if ($total_amount > 500) {
+                    $this->error("【{$person_id}】当天扣罚金额超限!当天扣罚金额不能超过 500 元!");
+                    $kfover_limit = true;
+                    break;  // 如果超限,停止检查
+                }
+            }
+        }
+
+        // 如果超限就不插入数据
+        if ($kfover_limit) {
+            return;  // 直接终止
+        }
+        // 执行更新操作
+//        unset($data['UniqId']);
         $sql = \db('db_大废品')
         $sql = \db('db_大废品')
-            ->where('UniqId',$param['UniqId'])
+            ->where('UniqId', $param['UniqId'])
             ->fetchSql(true)
             ->fetchSql(true)
-            ->update($data);
+            ->update($param);
         $res = \db()->query($sql);
         $res = \db()->query($sql);
-        if ($res !== false){
+
+        if ($res !== false) {
             $this->success('修改成功');
             $this->success('修改成功');
-        }else{
-            $this->error('失败');
+        } else {
+            $this->error('修改失败');
         }
         }
     }
     }
-
     /**
     /**
      * 大废品数据添加
      * 大废品数据添加
      * @return void
      * @return void
@@ -433,26 +554,143 @@ class LargeWasteRewardPunish extends Api
      */
      */
     public function JunkDetailAdd()
     public function JunkDetailAdd()
     {
     {
-        if (Request::instance()->isPost() === false){
+        // 非POST请求不允许提交
+        if (Request::instance()->isPost() === false) {
             $this->error('非法请求');
             $this->error('非法请求');
         }
         }
+
         $param = Request::instance()->post();
         $param = Request::instance()->post();
-        if (empty($param['sczl_gdbh'])){
+
+        // 检查是否传入必要的参数
+        if (empty($param['sczl_gdbh'])) {
             $this->error('参数错误');
             $this->error('参数错误');
         }
         }
+
+        // 获取最后一条记录的UniqId
         $lastID = \db('db_大废品')->order('UniqId desc')->value('UniqId');
         $lastID = \db('db_大废品')->order('UniqId desc')->value('UniqId');
-        $param['sys_rq'] = date('Y-m-d H:i:s',time());
+
+        // 设置当前时间和其他初始化数据
+        $param['sys_rq'] = date('Y-m-d H:i:s', time());
         $param['mod_rq'] = '1900-01-01 00:00:00';
         $param['mod_rq'] = '1900-01-01 00:00:00';
         $param['UniqId'] = $lastID + 1;
         $param['UniqId'] = $lastID + 1;
+
+        $data = $param['sczl_rq'];
+
+
+        //奖励班组封顶限制【记录是否存在超限的标志】
+        $over_limit = false;
+        // 遍历参数,检查每个人当天和本月的消费情况
+        for ($i = 1; $i <= 10; $i++) {
+            $jl_bh = 'JL_bh' . $i;  // 获取 JL_bh1 到 JL_bh10
+            $jl_je = 'JL_Je' . $i;  // 获取 JL_Je1 到 JL_Je10
+
+            if (!empty($param[$jl_bh]) && isset($param[$jl_je])) {  // 确保 JL_bh 和 JL_Je 不为空
+                $person_id = $param[$jl_bh];  // 获取当前人的 ID
+                $amount = $param[$jl_je];     // 当前人的金额
+
+                // 获取当天的所有记录金额总和
+                $daily_total = \db('db_大废品')
+                    ->where('sczl_rq', $data)
+                    ->where($jl_bh, $person_id)
+                    ->sum($jl_je);
+
+                // 获取当月的所有记录金额总和
+                $month = substr($data, 5, 2);
+                $year = substr($data, 0, 4);
+                $start_date = $year . '-' . $month . '-01';
+                $end_date = date('Y-m-t', strtotime($start_date));
+                $monthly_total = \db('db_大废品')
+                    ->whereBetween('sczl_rq', [$start_date, $end_date])
+                    ->where($jl_bh, $person_id)
+                    ->sum($jl_je);
+
+
+                // 检查当天是否超过 200
+                if ($daily_total + $amount > 200) {
+                    $this->error("【{$person_id}】当天金额超限!当天金额不能超过200元!");
+                    $over_limit = true;
+                    break;
+                }
+
+                // 检查本月是否超过 1500
+                if ($monthly_total + $amount > 1500) {
+                    $this->error("【{$person_id}】本月金额超限!本月金额不能超过1500元!");
+                    $over_limit = true;
+                    break;
+                }
+            }
+        }
+
+        // 如果超限就不插入数据
+        if ($over_limit) {
+            // 提示超限后停止执行
+            return;
+        }
+
+
+        // 记录是否存在超限
+        $kfover_limit = false;
+
+        // 获取 sczl_bh1 的值,并检查它是否存在
+        if (!empty($param['sczl_bh1']) && isset($param['sczl_je1'])) {
+            $person_id = $param['sczl_bh1'];
+            $amount = $param['sczl_je1'];
+
+            // 获取该人员当天的扣罚金额总和
+            $daily_total = \db('db_大废品')
+                ->where('sczl_rq', $data)
+                ->where('sczl_bh1', $person_id)
+                ->sum('sczl_je1');
+
+            // 判断是否超过 1000
+            if ($daily_total + $amount > 1000) {
+                $this->error("【{$person_id}】当天扣罚金额超限!当天扣罚金额不能超过 1000 元!");
+                $kfover_limit = true;
+            }
+        }
+        // 遍历 sczl_bh2 ~ sczl_bh10
+        for ($i = 2; $i <= 10; $i++) {
+            $sczl_bh = 'sczl_bh' . $i;
+            $sczl_je = 'sczl_je' . $i;
+
+            if (!empty($param[$sczl_bh]) && isset($param[$sczl_je])) {
+                $person_id = $param[$sczl_bh];
+                $amount = $param[$sczl_je];
+
+                // 获取该人员当天的扣罚金额总和
+                $daily_total = \db('db_大废品')
+                    ->where('sczl_rq', $data)
+                    ->where($sczl_bh, $person_id)
+                    ->sum($sczl_je);
+
+                // 判断是否超过 500
+                if ($daily_total + $amount > 500) {
+                    $this->error("【{$person_id}】当天扣罚金额超限!当天扣罚金额不能超过 500 元!");
+                    $kfover_limit = true;
+                    break; // 只要有一个超限就停止检查
+                }
+            }
+        }
+
+        // 如果超限就不插入数据
+        if ($kfover_limit) {
+            return; // 直接终止
+        }
+
+
+
+        // 插入数据
         $sql = \db('db_大废品')->fetchSql(true)->insert($param);
         $sql = \db('db_大废品')->fetchSql(true)->insert($param);
         $res = \db()->query($sql);
         $res = \db()->query($sql);
-        if ($res !== false){
+
+        if ($res !== false) {
             $this->success('添加成功');
             $this->success('添加成功');
-        }else{
+        } else {
             $this->error('失败');
             $this->error('失败');
         }
         }
     }
     }
 
 
+
     /**
     /**
      * 大废品数据删除
      * 大废品数据删除
      * @return void
      * @return void
@@ -478,4 +716,4 @@ class LargeWasteRewardPunish extends Api
             $this->error('失败');
             $this->error('失败');
         }
         }
     }
     }
-}
+}

+ 125 - 127
application/api/controller/OrderSuperLoss.php

@@ -25,7 +25,7 @@ class OrderSuperLoss extends Api
     /**
     /**
      * 获取左侧菜单栏
      * 获取左侧菜单栏
      * @ApiMethod GET
      * @ApiMethod GET
-    */
+     */
     public function getTab()
     public function getTab()
     {
     {
         if (Request::instance()->isGet() == false) {
         if (Request::instance()->isGet() == false) {
@@ -106,7 +106,7 @@ class OrderSuperLoss extends Api
      * 目标合格率 = 100%-超节损工单中显示工序的允损比例之和
      * 目标合格率 = 100%-超节损工单中显示工序的允损比例之和
      * 节损奖 小盒0.02 大盒0.09
      * 节损奖 小盒0.02 大盒0.09
      *
      *
-    */
+     */
     public function getList(){
     public function getList(){
         if (Request::instance()->isGet() == false) {
         if (Request::instance()->isGet() == false) {
             $this->error('非法请求');
             $this->error('非法请求');
@@ -129,7 +129,7 @@ class OrderSuperLoss extends Api
         }
         }
         if (!empty($params['search'])) {
         if (!empty($params['search'])) {
             if (!empty($params['date']) || !empty($params['code'])) {
             if (!empty($params['date']) || !empty($params['code'])) {
-               $this->error('参数错误');
+                $this->error('参数错误');
             }
             }
             $where['a.jjcp_gdbh|a.成品名称|a.jjcp_cpmc'] = array('like','%'.$params['search'].'%');
             $where['a.jjcp_gdbh|a.成品名称|a.jjcp_cpmc'] = array('like','%'.$params['search'].'%');
         }
         }
@@ -201,7 +201,6 @@ class OrderSuperLoss extends Api
                     ->where($where)
                     ->where($where)
                     ->count();
                     ->count();
             }
             }
-//            halt($data);
             foreach ($data as $key => $value){
             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_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";
@@ -385,7 +384,7 @@ class OrderSuperLoss extends Api
      * 获取工单超节损工艺
      * 获取工单超节损工艺
      * @ApiMethod GET
      * @ApiMethod GET
      * @params string order
      * @params string order
-    */
+     */
     public function getOrderSuperLossGy(){
     public function getOrderSuperLossGy(){
         if (Request::instance()->isGet() == false) {
         if (Request::instance()->isGet() == false) {
             $this->error('非法请求');
             $this->error('非法请求');
@@ -424,7 +423,7 @@ class OrderSuperLoss extends Api
      * @ApiMethod GET
      * @ApiMethod GET
      * @params string order
      * @params string order
      * 节损奖 小盒0.02 大盒0.09
      * 节损奖 小盒0.02 大盒0.09
-    */
+     */
     public function getOrderSuperLossCount(){
     public function getOrderSuperLossCount(){
         if (Request::instance()->isGet() == false) {
         if (Request::instance()->isGet() == false) {
             $this->error('非法请求');
             $this->error('非法请求');
@@ -448,6 +447,7 @@ class OrderSuperLoss extends Api
             ->where('c.质量考核',null)
             ->where('c.质量考核',null)
             ->field($field)
             ->field($field)
             ->find();
             ->find();
+
         if (empty($data)){
         if (empty($data)){
             $this->error('该工单不参与考核');
             $this->error('该工单不参与考核');
         }
         }
@@ -457,7 +457,12 @@ class OrderSuperLoss extends Api
         if ($data['ks'] == 0){
         if ($data['ks'] == 0){
             $data['ks'] === 1;
             $data['ks'] === 1;
         }
         }
-        $data['实际投料'] = number_format($data['投料']*$data['ls']*$data['ks']/10000,4);
+//        $data['实际投料'] = number_format($data['投料']*$data['ls']*$data['ks']/10000,4);
+        $data['实际投料'] = number_format($data['投料'] * $data['ls'] * $data['ks'] / 10000, 4, '.', '');
+        if($data['实际投料'] == 0){
+            $this->error('投料数据为 0');
+            return;
+        }
         //查出成品数量及日期
         //查出成品数量及日期
         $cp_sql = "SELECT SUM(jjcp_sl) as cp_sl,MAX(jjcp_sj) as jjcp_sj FROM `成品入仓` WHERE jjcp_gdbh = '{$order}' AND jjcp_yjno = '{$params['yjno']}' GROUP BY jjcp_gdbh,jjcp_yjno";
         $cp_sql = "SELECT SUM(jjcp_sl) as cp_sl,MAX(jjcp_sj) as jjcp_sj FROM `成品入仓` WHERE jjcp_gdbh = '{$order}' AND jjcp_yjno = '{$params['yjno']}' GROUP BY jjcp_gdbh,jjcp_yjno";
         $cp_data = Db::query($cp_sql);
         $cp_data = Db::query($cp_sql);
@@ -559,8 +564,8 @@ class OrderSuperLoss extends Api
                 }
                 }
 //                if (!empty($entry[$bhKey])) {
 //                if (!empty($entry[$bhKey])) {
 //                    if ($entry[$bhKey] != '000000' && $entry[$slKey] > 0){
 //                    if ($entry[$bhKey] != '000000' && $entry[$slKey] > 0){
-                        $quality[$m]= $entry[$slKey];
-                        $m++;
+                $quality[$m]= $entry[$slKey];
+                $m++;
 //                    }
 //                    }
 //                }
 //                }
 
 
@@ -572,6 +577,10 @@ class OrderSuperLoss extends Api
         $data['工单质检废'] =  array_sum($quality);//质检废
         $data['工单质检废'] =  array_sum($quality);//质检废
 //        $data['分摊废'] = '';//分摊废
 //        $data['分摊废'] = '';//分摊废
         $plan_total =db('工单_工艺资料')->where(['Gy0_gdbh' => $order,'Gy0_yjno' => $params['yjno'], 'Gy0_gxh' => ['in', $gxh_values]])->value('SUM(Gy0_计划损耗 * Gy0_ls * Gy0_ks)');
         $plan_total =db('工单_工艺资料')->where(['Gy0_gdbh' => $order,'Gy0_yjno' => $params['yjno'], 'Gy0_gxh' => ['in', $gxh_values]])->value('SUM(Gy0_计划损耗 * Gy0_ls * Gy0_ks)');
+        if($plan_total == 0){
+            $this->error('计划损耗数据为 0');
+            return;
+        }
         //单据列表最后统计
         //单据列表最后统计
         $total = [];
         $total = [];
         $total['plan_loss'] = 0;
         $total['plan_loss'] = 0;
@@ -811,7 +820,7 @@ class OrderSuperLoss extends Api
      * 获取工单工艺
      * 获取工单工艺
      * @ApiMethod GET
      * @ApiMethod GET
      * @params string order
      * @params string order
-    */
+     */
     public function getOrderGy(){
     public function getOrderGy(){
         if (Request::instance()->isGet() == false) {
         if (Request::instance()->isGet() == false) {
             $this->error('非法请求');
             $this->error('非法请求');
@@ -829,7 +838,7 @@ class OrderSuperLoss extends Api
      * 更新工单工艺
      * 更新工单工艺
      * @ApiMethod POST
      * @ApiMethod POST
      * @params array data
      * @params array data
-    */
+     */
     public function updateOrderGy(){
     public function updateOrderGy(){
         if (Request::instance()->isPost() == false) {
         if (Request::instance()->isPost() == false) {
             $this->error('非法请求');
             $this->error('非法请求');
@@ -860,7 +869,7 @@ class OrderSuperLoss extends Api
      * 获取工单印件考核资料
      * 获取工单印件考核资料
      * @ApiMethod GET
      * @ApiMethod GET
      * @params string order
      * @params string order
-    */
+     */
     public function getOrderYj(){
     public function getOrderYj(){
         if (Request::instance()->isGet() == false) {
         if (Request::instance()->isGet() == false) {
             $this->error('非法请求');
             $this->error('非法请求');
@@ -882,7 +891,7 @@ class OrderSuperLoss extends Api
      * 更新工单印件考核资料
      * 更新工单印件考核资料
      * @ApiMethod POST
      * @ApiMethod POST
      * @params array data
      * @params array data
-    */
+     */
     public function updateOrderYj(){
     public function updateOrderYj(){
         if ($this->request->isGet() === false){
         if ($this->request->isGet() === false){
             $this->error('请求错误');
             $this->error('请求错误');
@@ -917,7 +926,7 @@ class OrderSuperLoss extends Api
      * @ApiMethod GET
      * @ApiMethod GET
      * @params string year
      * @params string year
      * @params string month
      * @params string month
-    */
+     */
     public function getOrderFeedList(){
     public function getOrderFeedList(){
         if (Request::instance()->isGet() == false) {
         if (Request::instance()->isGet() == false) {
             $this->error('非法请求');
             $this->error('非法请求');
@@ -926,7 +935,6 @@ class OrderSuperLoss extends Api
         if (empty($params['workorder']) || empty($params['yjno'])) {
         if (empty($params['workorder']) || empty($params['yjno'])) {
             $this->error('参数错误');
             $this->error('参数错误');
         }
         }
-//        $search = $params['year'].'.'.$params['month'];
         $field = "a.Gd_gdbh,rtrim(c.yj_Yjdh) as yj_yjdh,c.yj_Yjno, c.yj_ks,c.yj_ls,rtrim(c.yj_zzdh) as yj_zzdh,
         $field = "a.Gd_gdbh,rtrim(c.yj_Yjdh) as yj_yjdh,c.yj_Yjno, c.yj_ks,c.yj_ls,rtrim(c.yj_zzdh) as yj_zzdh,
                   rtrim(b.BOM_物料名称) as BOM_物料名称,rtrim(c.yj_tlgg) as yj_tlgg,rtrim(b.BOM_投料单位) as BOM_投料单位,
                   rtrim(b.BOM_物料名称) as BOM_物料名称,rtrim(c.yj_tlgg) as yj_tlgg,rtrim(b.BOM_投料单位) as BOM_投料单位,
                   a.订单数量,c.yj_平张投料, b.BOM_实际用量,d.st_sl as 实际投料,a.投料确认,d.Uniqid as UniqId";
                   a.订单数量,c.yj_平张投料, b.BOM_实际用量,d.st_sl as 实际投料,a.投料确认,d.Uniqid as UniqId";
@@ -934,7 +942,6 @@ class OrderSuperLoss extends Api
             ->join('工单_印件资料 c','a.Gd_gdbh = c.Yj_Gdbh ','left')
             ->join('工单_印件资料 c','a.Gd_gdbh = c.Yj_Gdbh ','left')
             ->join('工单_bom资料 b','c.Yj_Gdbh = b.BOM_工单编号 AND c.yj_zzdh = b.BOM_物料编码','left')
             ->join('工单_bom资料 b','c.Yj_Gdbh = b.BOM_工单编号 AND c.yj_zzdh = b.BOM_物料编码','left')
             ->join('物料_收发记录 d','a.Gd_gdbh = d.st_gdbh AND d.cpdh = c.yj_Yjdh')
             ->join('物料_收发记录 d','a.Gd_gdbh = d.st_gdbh AND d.cpdh = c.yj_Yjdh')
-//            ->where('a.投料确认','like','%'.$search.'%')
             ->where('a.Gd_gdbh',$params['workorder'])
             ->where('a.Gd_gdbh',$params['workorder'])
             ->where('c.yj_Yjno',$params['yjno'])
             ->where('c.yj_Yjno',$params['yjno'])
             ->where(function($query) {
             ->where(function($query) {
@@ -948,12 +955,6 @@ class OrderSuperLoss extends Api
             $this->success('请求成功');
             $this->success('请求成功');
         }
         }
         foreach ($data as $key=>$value){
         foreach ($data as $key=>$value){
-//            if ($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['实际投料'];
             $len = stripos($value['yj_tlgg'],'/');
             $len = stripos($value['yj_tlgg'],'/');
             if ($len){
             if ($len){
                 $name = substr($value['yj_tlgg'],0,$len);
                 $name = substr($value['yj_tlgg'],0,$len);
@@ -972,7 +973,7 @@ class OrderSuperLoss extends Api
      * @ApiMethod POST
      * @ApiMethod POST
      * @params int UniqId
      * @params int UniqId
      * @params string number
      * @params string number
-    */
+     */
     public function updateOrderFeed(){
     public function updateOrderFeed(){
         if (Request::instance()->isPost() == false) {
         if (Request::instance()->isPost() == false) {
             $this->error('非法请求');
             $this->error('非法请求');
@@ -1041,7 +1042,7 @@ class OrderSuperLoss extends Api
      * 工单工序产量统计
      * 工单工序产量统计
      * @ApiMethod GET
      * @ApiMethod GET
      * @params string order
      * @params string order
-    */
+     */
     public function getOrderProcessCount(){
     public function getOrderProcessCount(){
         if (Request::instance()->isGet() == false) {
         if (Request::instance()->isGet() == false) {
             $this->error('非法请求');
             $this->error('非法请求');
@@ -1201,41 +1202,42 @@ class OrderSuperLoss extends Api
         ];
         ];
         //查询工单入仓数据
         //查询工单入仓数据
         $workOrderData = \db('成品入仓')
         $workOrderData = \db('成品入仓')
-            ->where('jjcp_gdbh',$param['gdbh'])
-            ->where('jjcp_yjno',$param['yjno'])
-            ->where('jjcp_smb','末 板')
+            ->where('jjcp_gdbh', $param['gdbh'])
+            ->where('jjcp_yjno', $param['yjno'])
+            ->where('jjcp_smb', '末 板')
             ->find();
             ->find();
         //入仓数量
         //入仓数量
         $total_number = \db('成品入仓')
         $total_number = \db('成品入仓')
-            ->where('jjcp_gdbh',$param['gdbh'])
-            ->where('jjcp_yjno',$param['yjno'])
+            ->where('jjcp_gdbh', $param['gdbh'])
+            ->where('jjcp_yjno', $param['yjno'])
             ->column('SUM(jjcp_sl)');
             ->column('SUM(jjcp_sl)');
         //查询工单资料、投料数据
         //查询工单资料、投料数据
         $field = 'a.Gd_gdbh,rtrim(a.成品代号) as 成品代号,rtrim(a.成品名称) as 成品名称,rtrim(a.销售订单号) as 销售订单号,a.订单数量,c.yj_ls as ls,c.yj_ks as ks,SUM(b.st_sl) as 投料';
         $field = 'a.Gd_gdbh,rtrim(a.成品代号) as 成品代号,rtrim(a.成品名称) as 成品名称,rtrim(a.销售订单号) as 销售订单号,a.订单数量,c.yj_ls as ls,c.yj_ks as ks,SUM(b.st_sl) as 投料';
-        $data =db('工单_基本资料')
+        $data = db('工单_基本资料')
             ->alias('a')
             ->alias('a')
-            ->join('物料_收发记录 b','a.Gd_gdbh = b.st_gdbh AND a.Gd_cpdh = b.cpdh')
-            ->join('工单_印件资料 c','c.Yj_Gdbh = a.Gd_gdbh AND c.yj_Yjdh = a.Gd_cpdh')
-            ->where('a.Gd_Gdbh',$param['gdbh'])
-            ->where('c.yj_Yjno',$param['yjno'])
-            ->where(function($query) {
+            ->join('物料_收发记录 b', 'a.Gd_gdbh = b.st_gdbh AND a.Gd_cpdh = b.cpdh')
+            ->join('工单_印件资料 c', 'c.Yj_Gdbh = a.Gd_gdbh AND c.yj_Yjdh = a.Gd_cpdh')
+            ->where('a.Gd_Gdbh', $param['gdbh'])
+            ->where('c.yj_Yjno', $param['yjno'])
+            ->where(function ($query) {
                 $query->where('b.仓库编号', '101')
                 $query->where('b.仓库编号', '101')
-                    ->whereOr('b.仓库编号', 'Y101');})
+                    ->whereOr('b.仓库编号', 'Y101');
+            })
             ->field($field)
             ->field($field)
             ->find();
             ->find();
         //将开数、联数为0重新赋值
         //将开数、联数为0重新赋值
-        if ($data['ls'] == 0){
+        if ($data['ls'] == 0) {
             $data['ls'] === 1;
             $data['ls'] === 1;
         }
         }
-        if ($data['ks'] == 0){
+        if ($data['ks'] == 0) {
             $data['ks'] === 1;
             $data['ks'] === 1;
         }
         }
         //计算工单实际投料
         //计算工单实际投料
-        $data['实际投料'] = str_replace(',', '',number_format($data['投料']*$data['ls']*$data['ks']/10000,4));
+        $data['实际投料'] = str_replace(',', '', number_format($data['投料'] * $data['ls'] * $data['ks'] / 10000, 4));
         //工单入仓数量
         //工单入仓数量
         $data['warehousing_num'] = $total_number[0];
         $data['warehousing_num'] = $total_number[0];
         //截取工单末版的入仓时间
         //截取工单末版的入仓时间
-        $data['warehousing_date'] = substr($workOrderData['jjcp_sj'],0,10);
+        $data['warehousing_date'] = substr($workOrderData['jjcp_sj'], 0, 10);
         //从设备产量计酬和sczl查出进入超节损的工序,有上报产量的工序就进入超节损
         //从设备产量计酬和sczl查出进入超节损的工序,有上报产量的工序就进入超节损
         $gxh_sql = "SELECT sczl_gxh FROM
         $gxh_sql = "SELECT sczl_gxh FROM
                         (SELECT sczl_gxh FROM 设备_产量计酬 WHERE sczl_gdbh = '{$workOrderData['jjcp_gdbh']}' AND sczl_yjno = '{$workOrderData['jjcp_yjno']}'
                         (SELECT sczl_gxh FROM 设备_产量计酬 WHERE sczl_gdbh = '{$workOrderData['jjcp_gdbh']}' AND sczl_yjno = '{$workOrderData['jjcp_yjno']}'
@@ -1244,39 +1246,39 @@ class OrderSuperLoss extends Api
         //整理查询处理的工序编号
         //整理查询处理的工序编号
         $gxh_values = array_column($gxh_arr, 'sczl_gxh');
         $gxh_values = array_column($gxh_arr, 'sczl_gxh');
         //将工序号小于10的编号前面加0
         //将工序号小于10的编号前面加0
-        foreach ($gxh_values as $k=>$v){
-            if ((int)$v < 10){
-                $gxh_values[$k] = '0'.$v;
+        foreach ($gxh_values as $k => $v) {
+            if ((int)$v < 10) {
+                $gxh_values[$k] = '0' . $v;
             }
             }
         }
         }
         $arr = [];
         $arr = [];
         $plan_loss = [];//工单计划损耗
         $plan_loss = [];//工单计划损耗
-        $target_rate =  (1-array_sum($arr))*100;
+        $target_rate = (1 - array_sum($arr)) * 100;
         //目标合格率
         //目标合格率
-        $data['target_rate'] =$target_rate.'%';
+        $data['target_rate'] = $target_rate . '%';
         //实际合格率
         //实际合格率
-        $real_rate = $total_number[0] / ($data['实际投料'] * 10000) *100;
-        $data['real_rate'] = number_format($real_rate,2) . '%';
+        $real_rate = $total_number[0] / ($data['实际投料'] * 10000) * 100;
+        $data['real_rate'] = number_format($real_rate, 2) . '%';
         //制程废品
         //制程废品
-        $zzfp_data =db('设备_产量计酬')
-            ->where('sczl_gdbh',$workOrderData['jjcp_gdbh'])
-            ->where('sczl_yjno',$workOrderData['jjcp_yjno'])
+        $zzfp_data = db('设备_产量计酬')
+            ->where('sczl_gdbh', $workOrderData['jjcp_gdbh'])
+            ->where('sczl_yjno', $workOrderData['jjcp_yjno'])
             ->field('SUM(sczl_zcfp) as sczl_zcfp')
             ->field('SUM(sczl_zcfp) as sczl_zcfp')
             ->select();
             ->select();
         //制程废品*ls*ks
         //制程废品*ls*ks
         $data['zcfp'] = $zzfp_data[0]['sczl_zcfp'] * $data['ls'] * $data['ks'];
         $data['zcfp'] = $zzfp_data[0]['sczl_zcfp'] * $data['ls'] * $data['ks'];
         //废品数量
         //废品数量
         $wasteTotal = db('db_qczl')
         $wasteTotal = db('db_qczl')
-            ->where('qczl_gdbh',$workOrderData['jjcp_gdbh'])
-            ->where('qczl_yjno',$workOrderData['jjcp_yjno'])
+            ->where('qczl_gdbh', $workOrderData['jjcp_gdbh'])
+            ->where('qczl_yjno', $workOrderData['jjcp_yjno'])
             ->sum('qczl_fp');
             ->sum('qczl_fp');
-        if (empty($wasteTotal)){
+        if (empty($wasteTotal)) {
             $wasteTotal = 0;
             $wasteTotal = 0;
         }
         }
         //废品合计=制程废品+核检废品
         //废品合计=制程废品+核检废品
         $waste_total = $data['zcfp'] + $wasteTotal;
         $waste_total = $data['zcfp'] + $wasteTotal;
         //工单无形损 = 实际投料-入仓数量-废品合计
         //工单无形损 = 实际投料-入仓数量-废品合计
-        $data['intangible_loss'] = (int)($data['实际投料'] *10000 - $total_number[0] - $waste_total);
+        $data['intangible_loss'] = (int)($data['实际投料'] * 10000 - $total_number[0] - $waste_total);
         //查询核检单废品上报数据
         //查询核检单废品上报数据
         $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,
         $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_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, 
@@ -1300,33 +1302,33 @@ class OrderSuperLoss extends Api
                 $slKey = "fp_sl" . $i;
                 $slKey = "fp_sl" . $i;
                 if (!empty($entry[$labelKey])) {
                 if (!empty($entry[$labelKey])) {
                     //外发加工废
                     //外发加工废
-                    if (substr($entry[$labelKey],0,3) == 'M04'){
-                        $list[$j]= $entry[$slKey];
+                    if (substr($entry[$labelKey], 0, 3) == 'M04') {
+                        $list[$j] = $entry[$slKey];
                         $j++;
                         $j++;
                     }
                     }
                     //材料废
                     //材料废
-                    if (substr($entry[$labelKey],0,1) == 'L' ){
-                        $material[$n]= $entry[$slKey];
+                    if (substr($entry[$labelKey], 0, 1) == 'L') {
+                        $material[$n] = $entry[$slKey];
                         $n++;
                         $n++;
                     }
                     }
                     //零头处理
                     //零头处理
-                    if (substr($entry[$labelKey],0,3) == 'M01' ){
-                        $change[$l]= $entry[$slKey];
+                    if (substr($entry[$labelKey], 0, 3) == 'M01') {
+                        $change[$l] = $entry[$slKey];
                         $l++;
                         $l++;
                     }
                     }
                 }
                 }
                 //质检废
                 //质检废
-                $quality[$m]= $entry[$slKey];
+                $quality[$m] = $entry[$slKey];
                 $m++;
                 $m++;
             }
             }
         }
         }
         $data['材料废'] = array_sum($material); //材料废
         $data['材料废'] = array_sum($material); //材料废
         $data['零头处理'] = array_sum($change); //零头处理
         $data['零头处理'] = array_sum($change); //零头处理
         $data['外发废'] = array_sum($list);//外发废
         $data['外发废'] = array_sum($list);//外发废
-        $data['工单质检废'] =  array_sum($quality);//质检废
+        $data['工单质检废'] = array_sum($quality);//质检废
         //查询计划损耗
         //查询计划损耗
-        $plan_total =db('工单_工艺资料')
-            ->where(['Gy0_gdbh' => $workOrderData['jjcp_gdbh'],'Gy0_yjno' => $workOrderData['jjcp_yjno'], 'Gy0_gxh' => ['in', $gxh_values]])
+        $plan_total = db('工单_工艺资料')
+            ->where(['Gy0_gdbh' => $workOrderData['jjcp_gdbh'], 'Gy0_yjno' => $workOrderData['jjcp_yjno'], 'Gy0_gxh' => ['in', $gxh_values]])
             ->value('SUM(Gy0_计划损耗 * Gy0_ls * Gy0_ks)');
             ->value('SUM(Gy0_计划损耗 * Gy0_ls * Gy0_ks)');
         //单据列表最后统计/数据汇总
         //单据列表最后统计/数据汇总
         $total = [];
         $total = [];
@@ -1337,9 +1339,9 @@ class OrderSuperLoss extends Api
         $total['reward'] = 0; //超节损奖励数组
         $total['reward'] = 0; //超节损奖励数组
         //工单产量数据详情查询
         //工单产量数据详情查询
         $total_cl_data = \db('工单_工艺资料')->alias('a')
         $total_cl_data = \db('工单_工艺资料')->alias('a')
-            ->field(['a.Gy0_yjno', 'a.Gy0_gxh','rtrim(a.Gy0_gxmc) as gxmc','a.Gy0_ls', 'SUM(b.sczl_cl) as total_cl', 'SUM(c.sczl_cl) as cl'])
-            ->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')
+            ->field(['a.Gy0_yjno', 'a.Gy0_gxh', 'rtrim(a.Gy0_gxmc) as gxmc', 'a.Gy0_ls', 'SUM(b.sczl_cl) as total_cl', 'SUM(c.sczl_cl) as cl'])
+            ->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([
             ->where([
                 'a.Gy0_gdbh' => $workOrderData['jjcp_gdbh'],
                 'a.Gy0_gdbh' => $workOrderData['jjcp_gdbh'],
                 'a.Gy0_yjno' => $workOrderData['jjcp_yjno'],
                 'a.Gy0_yjno' => $workOrderData['jjcp_yjno'],
@@ -1350,24 +1352,24 @@ class OrderSuperLoss extends Api
             ->order('a.Gy0_gxh')
             ->order('a.Gy0_gxh')
             ->select();
             ->select();
         //按班组分的产量数据
         //按班组分的产量数据
-        $gy_data =db('工单_工艺资料')
+        $gy_data = db('工单_工艺资料')
             ->alias('a')
             ->alias('a')
             ->field([
             ->field([
-                'a.Gy0_gdbh','a.Gy0_yjno', 'a.Gy0_gxh', 'a.Gy0_ls', 'a.Gy0_ks' ,'a.Gy0_计划损耗', 'a.超节损承担比例',
+                'a.Gy0_gdbh', 'a.Gy0_yjno', 'a.Gy0_gxh', 'a.Gy0_ls', 'a.Gy0_ks', 'a.Gy0_计划损耗', 'a.超节损承担比例',
                 'b.sczl_gxmc', 'SUM(b.sczl_zcfp) as sczl_zcfp', 'SUM(b.sczl_cl) as total_cl',
                 'b.sczl_gxmc', 'SUM(b.sczl_zcfp) as sczl_zcfp', 'SUM(b.sczl_cl) as total_cl',
                 'b.sczl_bh1', 'b.sczl_bh2', 'b.sczl_bh3', 'b.sczl_bh4', 'b.sczl_bh5', 'b.sczl_bh6',
                 'b.sczl_bh1', 'b.sczl_bh2', 'b.sczl_bh3', 'b.sczl_bh4', 'b.sczl_bh5', 'b.sczl_bh6',
                 'b.sczl_bh7', 'b.sczl_bh8', 'b.sczl_bh9', 'b.sczl_bh10',
                 'b.sczl_bh7', 'b.sczl_bh8', 'b.sczl_bh9', 'b.sczl_bh10',
-                'b.sczl_bzdh','b.sczl_rate1','b.sczl_rate2','b.sczl_rate3','b.sczl_rate4','b.sczl_rate5',
-                'b.sczl_rate6','b.sczl_rate7','b.sczl_rate8','b.sczl_rate9','b.sczl_rate10',
+                'b.sczl_bzdh', 'b.sczl_rate1', 'b.sczl_rate2', 'b.sczl_rate3', 'b.sczl_rate4', 'b.sczl_rate5',
+                'b.sczl_rate6', 'b.sczl_rate7', 'b.sczl_rate8', 'b.sczl_rate9', 'b.sczl_rate10',
                 'rtrim(c.sczl_gxmc) as gxmc', 'SUM(c.sczl_cl) as cl', 'SUM(c.sczl_fp) as fp', 'c.sczl_bh1 as sczl_bh',
                 'rtrim(c.sczl_gxmc) as gxmc', 'SUM(c.sczl_cl) as cl', 'SUM(c.sczl_fp) as fp', 'c.sczl_bh1 as sczl_bh',
-                'd.使用部门 as 使用部门','c.sczl_bzdh as bzdh','b.sczl_jtbh','a.损耗系数','a.Gy0_ms','a.Gy0_Rate0',
-                'a.Gy0_Rate1','a.无形损承担比例','a.Gy0_计划接货数*a.Gy0_ls*a.Gy0_ks as 计划产量','e.Gd_客户代号','e.Gd_客户名称',
-                'e.Gd_cpdh','e.Gd_cpmc', 'e.销售订单号','e.投料大箱','e.订单数量','e.计量单位','a.Gy0_SITE'
+                'd.使用部门 as 使用部门', 'c.sczl_bzdh as bzdh', 'b.sczl_jtbh', 'a.损耗系数', 'a.Gy0_ms', 'a.Gy0_Rate0',
+                'a.Gy0_Rate1', 'a.无形损承担比例', 'a.Gy0_计划接货数*a.Gy0_ls*a.Gy0_ks as 计划产量', 'e.Gd_客户代号', 'e.Gd_客户名称',
+                'e.Gd_cpdh', 'e.Gd_cpmc', 'e.销售订单号', 'e.投料大箱', 'e.订单数量', 'e.计量单位', 'a.Gy0_SITE'
             ])
             ])
-            ->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')
-            ->join('设备_基本资料 d','d.设备编号 = b.sczl_jtbh','left')
-            ->join('工单_基本资料 e','a.Gy0_gdbh = e.Gd_gdbh AND a.Gy0_yjno = e.行号')
+            ->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')
+            ->join('设备_基本资料 d', 'd.设备编号 = b.sczl_jtbh', 'left')
+            ->join('工单_基本资料 e', 'a.Gy0_gdbh = e.Gd_gdbh AND a.Gy0_yjno = e.行号')
             ->where([
             ->where([
                 'a.Gy0_gdbh' => $workOrderData['jjcp_gdbh'],
                 'a.Gy0_gdbh' => $workOrderData['jjcp_gdbh'],
                 'a.Gy0_yjno' => $workOrderData['jjcp_yjno'],
                 'a.Gy0_yjno' => $workOrderData['jjcp_yjno'],
@@ -1378,37 +1380,37 @@ class OrderSuperLoss extends Api
                          b.sczl_bh4, b.sczl_bh5, b.sczl_bh6, b.sczl_bh7, b.sczl_bh8, b.sczl_bh9, c.sczl_bh1')
                          b.sczl_bh4, b.sczl_bh5, b.sczl_bh6, b.sczl_bh7, b.sczl_bh8, b.sczl_bh9, c.sczl_bh1')
             ->order('a.Gy0_gxh asc, b.开工时间 asc, c.sczl_rq desc')
             ->order('a.Gy0_gxh asc, b.开工时间 asc, c.sczl_rq desc')
             ->select();
             ->select();
-        foreach ($gy_data as $kk=>$vv){
+        foreach ($gy_data as $kk => $vv) {
 //            $gy_data[$kk]['Gy0_yjno'] = $vv['Gy0_yjno'] > 10 ? $vv['Gy0_yjno'] : '0'.$vv['Gy0_yjno'];
 //            $gy_data[$kk]['Gy0_yjno'] = $vv['Gy0_yjno'] > 10 ? $vv['Gy0_yjno'] : '0'.$vv['Gy0_yjno'];
             //每道工序的产量(按班组分)
             //每道工序的产量(按班组分)
-            $gy_data[$kk]['total_cl'] = $vv['total_cl'] *$vv['Gy0_ls']*$vv['Gy0_ks'];
-            if (empty($vv['total_cl'])){
-                $gy_data[$kk]['total_cl'] = $vv['cl'] *$vv['Gy0_ls']*$vv['Gy0_ks'];
+            $gy_data[$kk]['total_cl'] = $vv['total_cl'] * $vv['Gy0_ls'] * $vv['Gy0_ks'];
+            if (empty($vv['total_cl'])) {
+                $gy_data[$kk]['total_cl'] = $vv['cl'] * $vv['Gy0_ls'] * $vv['Gy0_ks'];
             }
             }
-            $gy_data[$kk]['Gy0_计划损耗'] =$vv['Gy0_计划损耗']*$vv['Gy0_ls']*$vv['Gy0_ks'];
-            $vv['Gy0_计划损耗'] = $vv['Gy0_计划损耗']*$vv['Gy0_ls']*$vv['Gy0_ks'];
+            $gy_data[$kk]['Gy0_计划损耗'] = $vv['Gy0_计划损耗'] * $vv['Gy0_ls'] * $vv['Gy0_ks'];
+            $vv['Gy0_计划损耗'] = $vv['Gy0_计划损耗'] * $vv['Gy0_ls'] * $vv['Gy0_ks'];
             //计算每道工序的计划损耗
             //计算每道工序的计划损耗
-            foreach ($total_cl_data as $k=>$v){
+            foreach ($total_cl_data as $k => $v) {
                 //每道工序的总产量
                 //每道工序的总产量
                 $cl = $v['total_cl'] * $v['Gy0_ls'];
                 $cl = $v['total_cl'] * $v['Gy0_ls'];
-                if (empty($cl)){
+                if (empty($cl)) {
                     $cl = $v['cl'] * $v['Gy0_ls'];
                     $cl = $v['cl'] * $v['Gy0_ls'];
                 }
                 }
-                if ($vv['Gy0_yjno'] == $v['Gy0_yjno'] && $vv['Gy0_gxh'] == $v['Gy0_gxh']){
-                    $gy_data[$kk]['计划损耗'] = round($gy_data[$kk]['total_cl'] / $cl  * $vv['Gy0_计划损耗']);
+                if ($vv['Gy0_yjno'] == $v['Gy0_yjno'] && $vv['Gy0_gxh'] == $v['Gy0_gxh']) {
+                    $gy_data[$kk]['计划损耗'] = round($gy_data[$kk]['total_cl'] / $cl * $vv['Gy0_计划损耗']);
                 }
                 }
             }
             }
             //每道工序的制程废品(按班组分)
             //每道工序的制程废品(按班组分)
             $gy_data[$kk]['sczl_zcfp'] = $vv['sczl_zcfp'] * $vv['Gy0_ls'];
             $gy_data[$kk]['sczl_zcfp'] = $vv['sczl_zcfp'] * $vv['Gy0_ls'];
-            if (empty($vv['sczl_zcfp'])){
+            if (empty($vv['sczl_zcfp'])) {
                 $gy_data[$kk]['sczl_zcfp'] = $vv['fp'] * $vv['Gy0_ls'];
                 $gy_data[$kk]['sczl_zcfp'] = $vv['fp'] * $vv['Gy0_ls'];
             }
             }
             //计算每道工序的质检废(按班组)
             //计算每道工序的质检废(按班组)
             $gy_data[$kk]['sczl_gxmc'] = $vv['sczl_gxmc'];
             $gy_data[$kk]['sczl_gxmc'] = $vv['sczl_gxmc'];
-            if (empty($vv['sczl_gxmc'])){
+            if (empty($vv['sczl_gxmc'])) {
                 $gy_data[$kk]['sczl_gxmc'] = $vv['gxmc'];
                 $gy_data[$kk]['sczl_gxmc'] = $vv['gxmc'];
             }
             }
-            if (empty($vv['sczl_bh1']) || is_null($vv['sczl_bh1'])){
+            if (empty($vv['sczl_bh1']) || is_null($vv['sczl_bh1'])) {
                 $vv['sczl_bh1'] = $vv['sczl_bh'];
                 $vv['sczl_bh1'] = $vv['sczl_bh'];
             }
             }
             $gy_data[$kk]['sczl_bh1'] = $vv['sczl_bh1'];
             $gy_data[$kk]['sczl_bh1'] = $vv['sczl_bh1'];
@@ -1418,34 +1420,34 @@ class OrderSuperLoss extends Api
                     $gxmcKey = "fp_gxmc" . $i;
                     $gxmcKey = "fp_gxmc" . $i;
                     $slKey = "fp_sl" . $i;
                     $slKey = "fp_sl" . $i;
                     $bhKey = "fp_bh" . $i;
                     $bhKey = "fp_bh" . $i;
-                    if ((int)substr($entry[$gxmcKey],0,2) == $vv['Gy0_gxh'] && $entry[$bhKey] == $vv['sczl_bh1']){
+                    if ((int)substr($entry[$gxmcKey], 0, 2) == $vv['Gy0_gxh'] && $entry[$bhKey] == $vv['sczl_bh1']) {
                         $gy_data[$kk]['质检废'] += $entry[$slKey];
                         $gy_data[$kk]['质检废'] += $entry[$slKey];
                     }
                     }
                 }
                 }
             }
             }
             //无形损分摊
             //无形损分摊
-            if ($plan_total >0){
+            if ($plan_total > 0) {
                 $gy_data[$kk]['无形损分摊'] = round($gy_data[$kk]['计划损耗'] / $plan_total * $data['intangible_loss']);
                 $gy_data[$kk]['无形损分摊'] = round($gy_data[$kk]['计划损耗'] / $plan_total * $data['intangible_loss']);
-            }else{
+            } else {
                 $gy_data[$kk]['无形损分摊'] = 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;
-                if (!empty($vv[$bhKey])){
-                    $name = \db('人事_基本资料')->where('员工编号',$vv[$bhKey])->value('rtrim(员工姓名)');
-                    $gy_data[$kk]['sczl_name'.$j] = $name;
-                }else{
-                    $gy_data[$kk]['sczl_name'.$j] = '';
+                if (!empty($vv[$bhKey])) {
+                    $name = \db('人事_基本资料')->where('员工编号', $vv[$bhKey])->value('rtrim(员工姓名)');
+                    $gy_data[$kk]['sczl_name' . $j] = $name;
+                } else {
+                    $gy_data[$kk]['sczl_name' . $j] = '';
                 }
                 }
             }
             }
             //工序产量
             //工序产量
-            foreach ($total_cl_data as $k=>$v){
-                if ($v['Gy0_yjno'] === $vv['Gy0_yjno'] && $v['Gy0_gxh'] === $vv['Gy0_gxh']){
-                    if (strpos($v['gxmc'], '拆片') !== false){
-                        $gy_data[$kk]['工序产量'] = $v['cl']*$vv['Gy0_ls']*$vv['Gy0_ks'];
-                    }else{
-                        $gy_data[$kk]['工序产量'] = $v['total_cl']*$vv['Gy0_ls']*$vv['Gy0_ks'];
+            foreach ($total_cl_data as $k => $v) {
+                if ($v['Gy0_yjno'] === $vv['Gy0_yjno'] && $v['Gy0_gxh'] === $vv['Gy0_gxh']) {
+                    if (strpos($v['gxmc'], '拆片') !== false) {
+                        $gy_data[$kk]['工序产量'] = $v['cl'] * $vv['Gy0_ls'] * $vv['Gy0_ks'];
+                    } else {
+                        $gy_data[$kk]['工序产量'] = $v['total_cl'] * $vv['Gy0_ls'] * $vv['Gy0_ks'];
                     }
                     }
                 }
                 }
             }
             }
@@ -1459,26 +1461,26 @@ class OrderSuperLoss extends Api
         //计算超节损金额
         //计算超节损金额
         foreach ($gy_data as $n => $item) {
         foreach ($gy_data as $n => $item) {
             //节损数量
             //节损数量
-            if ($item['无形损分摊'] > 0){
-                $total_waste = $item['质检废']  +  $item['sczl_zcfp'] + $item['无形损分摊'];
-            }else{
-                $total_waste = $item['质检废']  +  $item['sczl_zcfp'];
+            if ($item['无形损分摊'] > 0) {
+                $total_waste = $item['质检废'] + $item['sczl_zcfp'] + $item['无形损分摊'];
+            } else {
+                $total_waste = $item['质检废'] + $item['sczl_zcfp'];
             }
             }
             $gy_data[$n]['节损数量'] = $item['计划损耗'] - $total_waste;
             $gy_data[$n]['节损数量'] = $item['计划损耗'] - $total_waste;
             //节损奖
             //节损奖
-            if (strpos($data['成品名称'],'小盒')){
+            if (strpos($data['成品名称'], '小盒')) {
                 $moneyRate = 0.02;
                 $moneyRate = 0.02;
-            }else{
+            } else {
                 $moneyRate = 0.09;
                 $moneyRate = 0.09;
             }
             }
-            if (strpos($item['sczl_gxmc'],'机检') !== false){
+            if (strpos($item['sczl_gxmc'], '机检') !== false) {
                 $gy_data[$n]['节损奖'] = 0;
                 $gy_data[$n]['节损奖'] = 0;
-            }else{
-                $gy_data[$n]['节损奖'] = number_format($gy_data[$n]['节损数量'] *  $item['超节损承担比例'] * $moneyRate,4);
+            } else {
+                $gy_data[$n]['节损奖'] = number_format($gy_data[$n]['节损数量'] * $item['超节损承担比例'] * $moneyRate, 4);
             }
             }
 //            $gy_data[$n]['超节损承担比例'] = number_format($item['超节损承担比例'],4) * 100 .'%';
 //            $gy_data[$n]['超节损承担比例'] = number_format($item['超节损承担比例'],4) * 100 .'%';
 
 
-            $gy_data[$n]['sys_ny'] = date('Ym',strtotime($workOrderData['jjcp_sj']));
+            $gy_data[$n]['sys_ny'] = date('Ym', strtotime($workOrderData['jjcp_sj']));
 
 
             $gy_data[$n]['超节损核算单价'] = $moneyRate;
             $gy_data[$n]['超节损核算单价'] = $moneyRate;
             $total['plan_loss'] += $item['计划损耗'];
             $total['plan_loss'] += $item['计划损耗'];
@@ -1487,16 +1489,17 @@ class OrderSuperLoss extends Api
             $total['waste_intangible'] += $item['无形损分摊'];
             $total['waste_intangible'] += $item['无形损分摊'];
             $total['reward'] += floatval(str_replace(',', '', $gy_data[$n]['节损奖']));
             $total['reward'] += floatval(str_replace(',', '', $gy_data[$n]['节损奖']));
         }
         }
+
         //整合数据
         //整合数据
         $result = [];
         $result = [];
-        foreach ($gy_data as $key=>$value){
+        foreach ($gy_data as $key => $value) {
             $result[$key] = [
             $result[$key] = [
-                'sys_ny'  => $value['sys_ny'],
-                'Gy0_gdbh'=> $value['Gy0_gdbh'],
+                'sys_ny' => $value['sys_ny'],
+                'Gy0_gdbh' => $value['Gy0_gdbh'],
                 '印件及工序' => $value['Gy0_yjno'],
                 '印件及工序' => $value['Gy0_yjno'],
                 '工序名称' => $value['sczl_gxmc'],
                 '工序名称' => $value['sczl_gxmc'],
                 '联数' => $value['Gy0_ls'],
                 '联数' => $value['Gy0_ls'],
-                '基础损耗' => $value['Gy0_Rate0']*$value['Gy0_ls'],
+                '基础损耗' => $value['Gy0_Rate0'] * $value['Gy0_ls'],
                 '损耗率' => $value['Gy0_Rate1'],
                 '损耗率' => $value['Gy0_Rate1'],
                 '损耗系数' => $value['损耗系数'],
                 '损耗系数' => $value['损耗系数'],
                 '计损色数' => $value['Gy0_ms'],
                 '计损色数' => $value['Gy0_ms'],
@@ -1517,7 +1520,7 @@ class OrderSuperLoss extends Api
                 '印件无形损' => $data['intangible_loss'],
                 '印件无形损' => $data['intangible_loss'],
                 '班组分摊无形损' => $value['无形损分摊'],
                 '班组分摊无形损' => $value['无形损分摊'],
                 'CjsSl' => $value['节损数量'],
                 'CjsSl' => $value['节损数量'],
-                'CjsJe' => str_replace(",", "",$value['节损奖']),
+                'CjsJe' => str_replace(",", "", $value['节损奖']),
                 '无形损承担比例' => $value['无形损承担比例'],
                 '无形损承担比例' => $value['无形损承担比例'],
                 '超节损承担比例' => $value['超节损承担比例'],
                 '超节损承担比例' => $value['超节损承担比例'],
                 '超节损核算单价' => $value['超节损核算单价'],
                 '超节损核算单价' => $value['超节损核算单价'],
@@ -1561,17 +1564,12 @@ class OrderSuperLoss extends Api
                 '大箱数' => $value['投料大箱'],
                 '大箱数' => $value['投料大箱'],
                 '废品合计' => $data['intangible_loss'],
                 '废品合计' => $data['intangible_loss'],
                 'sys_id' => '',
                 'sys_id' => '',
-                'sys_rq' => date('Y-m-d H:i:s',time()),
+                'sys_rq' => date('Y-m-d H:i:s', time()),
                 '车间名称' => $value['Gy0_SITE']
                 '车间名称' => $value['Gy0_SITE']
             ];
             ];
+            return $result;
         }
         }
-        return $result;
     }
     }
-
-
-
-    //获取员工超节损数据
-
 }
 }
 
 
 
 

+ 5 - 1
application/api/controller/Product.php

@@ -6,6 +6,7 @@ use app\common\controller\Api;
 use \think\Request;
 use \think\Request;
 use \think\Db;
 use \think\Db;
 use think\Cache;
 use think\Cache;
+use function EasyWeChat\Kernel\Support\rsa_public_encrypt;
 use function fast\e;
 use function fast\e;
 
 
 /**
 /**
@@ -676,18 +677,21 @@ class Product extends Api
      * @ApiMethod GET
      * @ApiMethod GET
      *
      *
     */
     */
+    
     public function getProductYjList(){
     public function getProductYjList(){
         if (Request::instance()->isGet() == false){
         if (Request::instance()->isGet() == false){
             $this->error('非法请求');
             $this->error('非法请求');
         }
         }
         $params = Request::instance()->get();
         $params = Request::instance()->get();
         $search = $params['search'];
         $search = $params['search'];
-        $num = config('product_code_digit');
+//        $num = config('product_code_digit');
+        $num = 5;
         if (!empty($search)){
         if (!empty($search)){
             $sql = "SELECT DISTINCT rtrim(a.`物料代码`) AS `物料代码`,rtrim(a.`物料名称`) AS `物料名称`,rtrim(b.`客户编号`) AS `客户编号`,rtrim(b.`客户名称`) AS `客户名称` FROM
             $sql = "SELECT DISTINCT rtrim(a.`物料代码`) AS `物料代码`,rtrim(a.`物料名称`) AS `物料名称`,rtrim(b.`客户编号`) AS `客户编号`,rtrim(b.`客户名称`) AS `客户名称` FROM
                     `物料_存货编码` a
                     `物料_存货编码` a
                     JOIN `产品_基本资料` b ON LEFT(a.`物料代码`,$num) = LEFT(b.`客户编号`,$num)
                     JOIN `产品_基本资料` b ON LEFT(a.`物料代码`,$num) = LEFT(b.`客户编号`,$num)
                     WHERE  (a.`物料名称` LIKE '%{$search}%' or a.物料代码 LIKE '%{$search}%') 
                     WHERE  (a.`物料名称` LIKE '%{$search}%' or a.物料代码 LIKE '%{$search}%') 
+                    group by a.`物料代码`
                     ORDER BY a.`物料代码` ASC";
                     ORDER BY a.`物料代码` ASC";
         }else{
         }else{
             $sql = "SELECT DISTINCT rtrim(a.`物料代码`) as `物料代码`, rtrim(a.`物料名称`) as `物料名称`,rtrim(b.客户编号) as 客户编号,rtrim(b.客户名称) as 客户名称
             $sql = "SELECT DISTINCT rtrim(a.`物料代码`) as `物料代码`, rtrim(a.`物料名称`) as `物料名称`,rtrim(b.客户编号) as 客户编号,rtrim(b.客户名称) as 客户名称

+ 7 - 7
application/api/controller/WorkOrder.php

@@ -1441,7 +1441,7 @@ class WorkOrder extends Api
     /**
     /**
      * 新增工单->添加工单
      * 新增工单->添加工单
      * @ApiMethod (POST)
      * @ApiMethod (POST)
-     * @param 
+     * @param
      * @return void
      * @return void
      * @throws \think\Exception
      * @throws \think\Exception
      * @throws \think\db\exception\BindParamException
      * @throws \think\db\exception\BindParamException
@@ -1729,7 +1729,7 @@ class WorkOrder extends Api
             \db()->commit();
             \db()->commit();
         } catch (\Exception $e) {
         } catch (\Exception $e) {
             // 回滚事务
             // 回滚事务
-           \db()->rollback();
+            \db()->rollback();
         }
         }
         if ($res !== false && $workRes !== false){
         if ($res !== false && $workRes !== false){
             $this->success('成功');
             $this->success('成功');
@@ -1974,7 +1974,7 @@ class WorkOrder extends Api
             '附件类型',
             '附件类型',
             '适用工序',
             '适用工序',
             '关联产品'
             '关联产品'
-            ];
+        ];
         $data = [];
         $data = [];
         foreach ($arr as $key => $value){
         foreach ($arr as $key => $value){
             if (!isset($req[$value])){
             if (!isset($req[$value])){
@@ -2005,7 +2005,7 @@ class WorkOrder extends Api
 
 
         $this->success('成功');
         $this->success('成功');
     }
     }
-    
+
     /**
     /**
      * 产品附件修改
      * 产品附件修改
      * @ApiMethod (GET)
      * @ApiMethod (GET)
@@ -2079,7 +2079,7 @@ class WorkOrder extends Api
             '附件内容',
             '附件内容',
             '附件类型',
             '附件类型',
             '关联编号'
             '关联编号'
-            ];
+        ];
         $data = [];
         $data = [];
         foreach ($arr as $key => $value){
         foreach ($arr as $key => $value){
             if (!isset($req[$value])){
             if (!isset($req[$value])){
@@ -2110,7 +2110,7 @@ class WorkOrder extends Api
 
 
         $this->success('成功');
         $this->success('成功');
     }
     }
-    
+
     /**
     /**
      * 产品附件修改
      * 产品附件修改
      * @ApiMethod (GET)
      * @ApiMethod (GET)
@@ -2585,4 +2585,4 @@ class WorkOrder extends Api
         $list['工序号'] = $process + 1;
         $list['工序号'] = $process + 1;
         $this->success('成功',$list);
         $this->success('成功',$list);
     }
     }
-}
+}