request->request(); if ($this->request->isAjax()) { $pagesize = is_null($data['limit']) ? 10 : (int)$data['limit']; if ($pagesize == 0) { $page = 1; } else { $page = (int)($data['offset'] / $pagesize) + 1; } $startpage = ($page - 1) * $pagesize; $gdbh = trim((string)input('search', '')); $where = []; if (!empty($gdbh)) { $where['Gd_gdbh'] = $gdbh; } else { $where['gd_statu'] = ['in', ['2-生产中', '3-计划中']]; } $total = Db::connect('db2')->table('工单_基本资料')->where($where)->count(); $list = Db::connect('db2')->table('工单_基本资料') ->field('Gd_gdbh as gd_gdbh,Gd_cpmc as gd_cpmc,gd_statu,订单数量,计量单位,接单日期') ->where($where) ->order('gd_gdbh desc') ->limit($startpage, $pagesize) ->select(); $result = ['total' => $total, 'rows' => collection($list)->toArray()]; return json($result); } //中烟名称 // $tobacco = $this->get('http://mn.7in6.com/index.php?s=/Admin/Relevlion/customList'); // $tobacco = json_decode($tobacco,true); return $this->view->fetch(); } //按油墨重量增加指令书 public function addone(){ $orderNumber = input('ids'); $url = 'http://ink.7in6.com/bKdNvCxlao.php/jar/getorderdetail?Gd_gdbh='.$orderNumber; $data = $this->get($url); $data = json_decode($data,true); $result = $data['data']; //配方 $productNumber = trim($result['gd_cpdh']); if (empty($productNumber)){ $this->error('产品编码不存在'); } //修改前 // $where[] = ['exp',Db::raw("FIND_IN_SET($productNumber,product_number)")]; // $formula = Db::name('formula')->where($where)->select(); // echo "
";
        // print_r($formula);
        // echo "
";die;
        //修改后
        $where[] = ['exp', Db::raw("FIND_IN_SET(:pn, product_number)")];
        $formula = Db::name('formula')
            ->bind(['pn' => $productNumber])
            ->where($where)
            ->select();
        $formulaData = array();
        foreach ($formula as $key=>$value){
            $formulaData[$key] = $value['product_name'];
            if ($key > 0){
                if ($value['product_name'] != $formula[$key-1]['product_name']){
                    $formulaData[$key] = $value['product_name'];
                }else{
                    unset($formulaData[$key]);
                }
            }
        }
        return $this->view->fetch('',compact('result','formulaData'));
    }

    //按纸张数增加指令书
    public function add(){
        $orderNumber = input('ids');

        $url = 'http://ink.7in6.com/bKdNvCxlao.php/jar/getorderdetail?Gd_gdbh='.$orderNumber;
        $data = $this->get($url);
        $data = json_decode($data,true);
        $result = $data['data'];
        // print_r($data);die;
        //配方
        $productNumber = trim($result['gd_cpdh']);
        if (empty($productNumber)){
            $this->error('产品编码不存在');
        }
        //修改前
        // $where[] = ['exp',Db::raw("FIND_IN_SET($productNumber,product_number)")];
        // $formula = Db::name('formula')->where($where)->select();
        //修改后
        $where[] = ['exp', Db::raw("FIND_IN_SET(:pn, product_number)")];
        $formula = Db::name('formula')
            ->bind(['pn' => $productNumber])
            ->where($where)
            ->select();
        $formulaData = array();
        foreach ($formula as $key=>$value){
            $formulaData[$key] = $value['product_name'];
            if ($key > 0){
                if ($value['product_name'] != $formula[$key-1]['product_name']){
                    $formulaData[$key] = $value['product_name'];
                }else{
                    unset($formulaData[$key]);
                }
            }
        }
        return $this->view->fetch('',compact('result','formulaData'));
    }
    //获取配方数据
    public function getFormula(){
        $params = input('formula');
        if (empty($params)){
            return array('status'=>0,'msg'=>'请选择配方');
        }
        /**
         * 每个专色第一行+rowspan='配方数量'
         * 获取每个专色的配方数量,减去数量就是key对应要加rowspa的行
         *
        */
        $list = Db::name('formula_detail')->where('product_name',$params)->order('color_number')->column('color');
        $list = array_values(array_unique($list));
        $colorNumber = [];
        $i = 0;
        foreach ($list as $key=>$value){
            $colorNumber[$key]['beginRow'] = $i;
            $number = Db::name('formula_detail')->where(['product_name'=>$params,'color'=>$value])->count();
            $colorNumber[$key]['rowSpan'] = $number;
            $i = $number + $i;
        }
        $data = Db::name('formula_detail')->where('product_name',$params)->order('color_number,id asc')->select();
        foreach ($data as $k=>$v){
            $data[$k]['total'] = round($v['total']);
        }


        return array('status'=>1,'data'=>$data,'colorNumber'=>$colorNumber);
    }
    //获取大小盒计划消耗数据
    public function getConsume(){
        $result = true; //判断大小盒是否都有值
        $params = input('formula');
        $bigNumber = input('bigNumber');
        if (empty($bigNumber) || $bigNumber == 0){//默认值为1
            $bigNumber = 1;
            $result = false;
        }
        $smallNumber = input('smallNumber');
        if (empty($smallNumber) || $smallNumber == 0){ //默认值为1
            $smallNumber = 1;
            $result = false;
        }
        $boxModel = input('boxModel',0);//0 全部,1 大盒,2 小盒

        if (empty($params)){
            return array('status'=>0,'msg'=>'请选择配方');
        }
        //大盒
        $bigList = Db::name('formula_consume')->where('formula_name',$params)->where('box',1)->field('box,ink,number')->select();
        //小盒
        $smallList = Db::name('formula_consume')->where('formula_name',$params)->where('box',2)->field('box,ink,number')->select();
        $bigNum = count($bigList);
        $smallNum = count($smallList);
        $data = [];
        if ($bigNum >= $smallNum){
            $half = intval($bigNum/2) - 1;
            foreach ($bigList as $key=>$value){
                $data[$key]['big_ink'] = $value['ink'];
                $data[$key]['big_num'] = $value['number'];
                if ($key > ($smallNum - 1)){
                    $data[$key]['small_ink'] = '';
                    $data[$key]['small_num'] = '';
                }else{
                    $data[$key]['small_ink'] = $smallList[$key]['ink'];
                    $data[$key]['small_num'] = $smallList[$key]['number'];
                }
                //根绝盒型和数值不为0 相乘
                if ($boxModel == 0){
                    if ($data[$key]['big_num']>0 && $data[$key]['small_num']>0){
                        $data[$key]['big_num'] =  round($data[$key]['big_num'] * $bigNumber,2);
                        $data[$key]['small_num'] =  round($data[$key]['small_num'] * $smallNumber,2);
                    }
                    if ($data[$key]['big_num']>0 && empty($data[$key]['small_num'])){
                        $data[$key]['big_num'] =  round($data[$key]['big_num'] * $bigNumber,2);
                    }
                }
                if ($boxModel == 1 && $data[$key]['big_num']>0){
                    $data[$key]['big_num'] =  round($data[$key]['big_num'] * $bigNumber,2);
                }
                if ($boxModel == 2 && $data[$key]['small_num']>0){
                    $data[$key]['small_num'] =  round($data[$key]['small_num'] * $smallNumber,2);
                }
            }
        }else{
            $half = intval($smallNum/2) - 1;
            foreach ($smallList as $key=>$value){
                $data[$key]['small_ink'] = $value['ink'];
                $data[$key]['small_num'] = $value['number'];
                if ($key > ($bigNum - 1)){
                    $data[$key]['big_ink'] = '';
                    $data[$key]['big_num'] = '';
                }else{
                    $data[$key]['big_ink'] = $bigList[$key]['ink'];
                    $data[$key]['big_num'] = $bigList[$key]['number'];
                }
                if ($boxModel == 0 ){
                    if ($data[$key]['big_num']>0 && $data[$key]['small_num']>0){
                        $data[$key]['big_num'] =  round($data[$key]['big_num'] * $bigNumber,2);
                        $data[$key]['small_num'] =  round($data[$key]['small_num'] * $smallNumber,2);
                    }
                    if (empty($data[$key]['big_num'])&& $data[$key]['small_num']>0){
                        $data[$key]['small_num'] =  round($data[$key]['small_num'] * $smallNumber,2);
                    }

                }
                if ($boxModel == 1 && $data[$key]['big_num']>0){
                    $data[$key]['big_num'] =  round($data[$key]['big_num'] * $bigNumber,2);
                }
                if ($boxModel == 2 && $data[$key]['small_num']>0){
                    $data[$key]['small_num'] =  round($data[$key]['small_num'] * $smallNumber,2);
                }
            }
        }
//        print_r($data);die;
        $rowSpan = count($data);
        //根据数量获取更改配方总数
        $allColor = Db::name('formula_detail')->where('product_name',$params)->order('color_number')->column('color');
        $allColor = array_values(array_unique($allColor));
        $everyTenThousand = Db::name('formula_consume')->where('formula_name',$params)->where('ink','in',$allColor)->select();
        /*
         * 根据传过来的大小盒数量,算出大小盒消耗专色的总量,计算配方各油墨的消耗量
         * 重新写一个配方html赋值到原先的html
         * **/
        $formulaTotal = array();
        if ($result == true){   //大小盒都有值
            $item = [];
            foreach ($everyTenThousand as $k=>$v){
                $item[$k]['ink'] = $v['ink'];
                if ($v['box'] == 1 && is_numeric($v['number'])){
                    $item[$k]['number'] = ceil($v['number'] * $bigNumber);
                }
                if ($v['box'] == 2 && is_numeric($v['number'])){
                    $item[$k]['number'] = ceil($v['number'] * $smallNumber);
                }
            }
            //算出大小盒各专色的总共数量
            foreach($item as $key1=>$value1){
                if(!isset($formulaTotal[$value1['ink']])){
                    $formulaTotal[$value1['ink']]=$value1;
                }else{
                    $formulaTotal[$value1['ink']]['number']+=$value1['number'];
                }
            }

        }else{  //大小盒至少有一个没值
            if ($bigNumber == 1 && $smallNumber > 1){//大盒没值
                foreach ($everyTenThousand as $k=>$v){
                    if ($v['box'] == 2 && is_numeric($v['number'])){
                        $formulaTotal[$k]['ink'] = $v['ink'];
                        $formulaTotal[$k]['number'] = ceil($v['number'] * $smallNumber);
                    }
                }
            }
            if ($smallNumber == 1 && $bigNumber > 1){  //小盒没值
                foreach ($everyTenThousand as $k1=>$v1){
                    if ($v1['box'] == 1 && is_numeric($v1['number'])){
                        $formulaTotal[$k1]['ink'] = $v1['ink'];
                        $formulaTotal[$k1]['number'] = ceil($v1['number'] * $bigNumber);
                    }
                }
            }
        }
        //健值从0开始
        $formulaTotal = array_values($formulaTotal);

        $colorNumber = [];
        $i = 0;
        foreach ($allColor as $key1=>$val){
            $colorNumber[$key1]['beginRow'] = $i;
            $number = Db::name('formula_detail')->where(['product_name'=>$params,'color'=>$val])->count();
            $colorNumber[$key1]['rowSpan'] = $number;
            $i = $number + $i;
        }
        $formulaData = Db::name('formula_detail')->where('product_name',$params)->order('color_number,id asc')->select();

        //根据纸张换算出来的专色重量,除以固定值,相乘即是新的html
        foreach ($formulaData as $key2=>$val2){
            foreach ($formulaTotal as $key3=>$val3){
                if ($formulaData[$key2]['color'] == $val3['ink']){
                    $multiply = $val3['number'] / $formulaData[$key2]['number'];
                    $formulaData[$key2]['total'] = (int)( $formulaData[$key2]['total'] * $multiply);
                    $formulaData[$key2]['number'] = ceil($val3['number']);
                }else{
                    $formulaData[$key2]['total'] = (int)($formulaData[$key2]['total']);
                }
            }
        }
        return array('status'=>1,'data'=>$data,'half'=>$half,'rowSpan'=>$rowSpan,'formulaData'=>$formulaData,'colorNumber'=>$colorNumber);
    }
    //根据专色墨重量计算纸张数
    public function sumPaper(){
        $params = $this->request->request();
        if (empty($params)){
            $this->error('数据不能为空');
        }
        $weight = trim($params['weight']);
        $map = [];
        $map['formula_name'] = $params['formula_name'];
        $map['box'] = $params['box'];
        $map['ink'] = $params['ink'];
        $data = Db::name('formula_consume')->where($map)->find();
//        print_r($data);die;
        if (empty($data)){
            $this->error('未获取到大小盒计划消耗数据,请联系开发人员');
        }
        $number = trim($data['number']);
        if (!empty($number) && is_numeric($number)){
            $planWeight = $data['number'];
            //计算公式 一万张纸计划消耗xxx kg专墨  现有$weight kg专墨  换成xxx万张纸
            $num = round($weight / $planWeight,2);
            return array('status'=>1,'data'=>$num);
        }else{
            return array('status'=>0,'data'=>'','msg'=>'请完善大小盒计划数据');
        }
    }
    public function doAdd(){
        $baseData = input("baseData/a");
        $formulaData = input("formulaData/a");
        $rowSpanData = input("rowSpanData/a");
        $rowSpanConsume = input("rowSpanConsume");
        $consume = input("consume/a");
        if (!empty($baseData)){
            //油墨打印指导书详情数据
            $data = [];//工单数据
            $data['order_number'] = $baseData[0];
            $data['product_name'] = $baseData[1];
            $data['number'] = $baseData[2];
            $data['formula'] = $baseData[3];
            $data['big_number'] = $baseData[4];
            $data['small_number'] = $baseData[5];
            $data['status'] = $baseData[6];
            //油墨批次号
            $bach = Db::name('formula_book_detail')->where('order_number',$data['order_number'])->count();
            if ($bach == 0){
                $data['bach'] = $data['order_number'].'-'.date('Ymd').'-'.'1';
            }else{
                $bach = $bach + 1;
                $data['bach'] = $data['order_number'].'-'.date('Ymd').'-'.$bach;
            }
            $data['warehousing'] = json_encode($formulaData);//专墨表格数据
            $data['formula_span'] = json_encode($rowSpanData);
            $data['consume'] = json_encode($consume);
            $data['consume_span'] = $rowSpanConsume;
            $data['create'] = date('Y-m-d H:i:s');
            //油墨打印书数据
            $bookData = [];
            $bookData['order_number'] = $baseData[0];
            $bookData['product_name'] = $baseData[1];
            $bookData['number'] = $baseData[2];
            $bookData['big_number'] = $baseData[4];
            $bookData['small_number'] = $baseData[5];
            $bookData['update'] = date('Y-m-d H:i:s');
            Db::startTrans();
            try{
                $isPrint = Db::name('formula_book')->where('order_number',$bookData['order_number'])->find();
                if (!$isPrint){
                    $data['pid'] = Db::name('formula_book')->insertGetId($bookData);
                }else{
                    $data['pid'] = $isPrint['id'];
                }
                $res = Db::name('formula_book_detail')->insert($data);
                if (!$res){
                    throw new Exception('网络错误');
                }
                if ($isPrint){
                    $bookData['big_number'] = Db::name('formula_book_detail')->where('order_number',$bookData['order_number'])->sum('big_number');
                    $bookData['small_number'] =  Db::name('formula_book_detail')->where('order_number',$bookData['order_number'])->sum('small_number');
                    Db::name('formula_book')->where('order_number',$bookData['order_number'])->setField('big_number',$bookData['big_number']);
                    Db::name('formula_book')->where('order_number',$bookData['order_number'])->setField('small_number',$bookData['small_number']);
                }
                Db::commit();
                $this->success();
            }catch (\think\Exception\DbException $exception){
                Db::rollback();
                $this->error();
            }
        }
    }
    //获取油墨指令书编号
    public function getBach(){
        $order = input('order');
        if ($order == ''){
            return array('status'=>0,'msg'=>'未获取到工单号');
        }
        $result = Db::name('formula_book_detail')->where('order_number',$order)->order('id desc')->select();
        if (!empty($result)){
           $number = count($result) + 1;
           $bach = $order.'-'.date('Ymd').'-'.$number;
        }else{
            $bach = $order.'-'.date('Ymd').'-'.'1';
        }
        return array('status'=>1,'bach'=>$bach);
    }
    //各机台近两个工单领退料情况
//    public function machineSituation(){
//        /**
//         * 定义好机台number,根据机台查询每个机台对应最近2个工单,再查询每个工单有没有退料
//         */
//        $machineNumber = array(1,2,3,4,5,6,7);
////        $machineNumber = array(1);
//        $list = array();
//        //第一个循环  处理机台
//        foreach ($machineNumber as $key=>$value){
//            $orderNumber = Db::name('collar_use')->where('machine_number',$value)->field('distinct(order_number)')->order('id desc')->limit(3)->select();
////            dump($orderNumber);
//            //第二个循环  处理工单 各专色领用数据
//            foreach ($orderNumber as $k=>$v){
//                $map = [];
//                $map['a.order_number'] = $v['order_number'];
//                $map['a.machine_number'] = $value;
//                $lRes = Db::name('collar_use')->alias('a')
//                    ->join('warehousing_detail b','a.warehousing = b.bach_number')
//                    ->where($map)->where('a.status',1)->field('a.order_number,a.warehousing,a.weight,b.cid,b.color')->order('b.cid')->select();
//
////                dump('*************************************');
//                if (!empty($lRes)){
//                    $list[$value][$k] = $this->sumWeight($lRes,'cid','weight');
//                }else{
//                    $this->error($value.'号机台'.$v.'工单未查到领用数据,请联系开发人员');
//                }
////                dump($list[$value][$k]);
//                $tRes = Db::name('collar_use')->alias('a')
//                    ->join('warehousing_detail b','a.back = b.bach_number')
//                    ->where($map)->where('a.status',2)->field('a.back,a.back_weight,b.cid,b.color')->order('b.cid')->select();
//                $res = array();
//                if (!empty($tRes)) {
//                    $res = $this->sumWeight($tRes, 'cid', 'back_weight');
//                    $res = array_column($res, 'back_weight', 'cid');//将二位数组转换成一维数组  方便合并计算
//                }
//
////                dump(array_keys($res));
//                $newRes = array_keys($res);
//                //第三个循环  处理工单  各专色退还数据
//                foreach ($list[$value][$k] as $i=>$j){
//                    $list[$value][$k][$i]['weight'] = $list[$value][$k][$i]['weight'] / 1000;
//                    if (!empty($tRes)){
//                        if (in_array($j['cid'],$newRes)){
////                            dump(1111);
//                            $list[$value][$k][$i]['back_weight'] = $res[$j['cid']] / 1000;
//                        }else{
//                            $list[$value][$k][$i]['back_weight'] = '';
//                        }
//                    }else{
//                        $list[$value][$k][$i]['back_weight'] = '';
//                    }
//
//                }
//
//            }
//
//        }
//
////        dump($list);
////        die;
//        return $this->view->fetch('',compact('list'));
//    }

    //各机台近两个工单领退料情况
    public function machineSituation(){
        /**
         * 定义好机台number,根据机台查询每个机台对应最近2个工单,再查询每个工单有没有退料
         */
        $machineNumber = array(1,2,3,4,5,6,7);//$machineNumber = array(1);
        $list = array();
        //第一个循环  处理机台
        foreach ($machineNumber as $key=>$value) {
//            $orderNumber = Db::name('collar_use')->where('machine_number', $value)->field('distinct(order_number)')->order('id desc')->limit(3)->select();
            $orderNumber = Db::name('collar_use')->where('machine_number', $value)->field('distinct(order_number)')->limit(3)->select();
            //第二个循环  处理工单 各专色领用数据
            foreach ($orderNumber as $k=>$v) {
                $map = [];
                $map['a.order_number'] = $v['order_number'];
                $map['a.machine_number'] = $value;
                /**
                 * 领用
                 */
                //查询 collar_use 表的数据
                $lRes = Db::name('collar_use')->alias('a')
                    ->join('warehousing_detail b', 'a.warehousing = b.bach_number')
                    ->where($map)->where('a.status', 1)->order('b.cid')
                    ->field('a.order_number,a.warehousing,a.weight,b.cid,b.color')
                    ->select();
                if (!empty($lRes)) {
                    $list[$value][$k]["lRes"] = $this->sumWeight($lRes,'cid','weight');
                } else {
                    $this->error($value.'号机台'.$v.'工单未查到领用数据,请联系开发人员');
                }

                //查询 matter_use 表的数据
                $lR = Db::name("matter_use")->alias('a')//
                ->where($map)->where('status', 1)//
                ->field('order_number,ink_name,out_weight,code,back_weight')//
                ->select();//
                $list[$value][$k]["lR"] = $this->sumWeight($lR,'code','out_weight');//sumWeight(数组,'要合并的值','要计算的值')

                /**
                 * 退还
                 */
                //查询 collar_use 表退还数据
                $tRes = Db::name('collar_use')->alias('a')
                    ->join('warehousing_detail b', 'a.back = b.bach_number')
                    ->where($map)->where('a.status',2)->field('a.back,a.back_weight,b.cid,b.color')->order('b.cid')->select();
                $res = array();
                if (!empty($tRes)) {
                    $res = $this->sumWeight($tRes,'cid','back_weight');
                    $res = array_column($res,'back_weight','cid');//将二位数组转换成一维数组  方便合并计算
                }
                $newRes = array_keys($res);
                //第三个循环  处理工单  各专色退还数据
                foreach ($list[$value][$k]["lRes"] as $i=>$j) {
                    $list[$value][$k]["lRes"][$i]['weight'] = $list[$value][$k]["lRes"][$i]['weight'] / 1000;
                    if (!empty($tRes)) {
                        if (in_array($j['cid'],$newRes)) {

                            $list[$value][$k]["lRes"][$i]['back_weight'] = $res[$j['cid']] / 1000;
                        } else {
                            $list[$value][$k]["lRes"][$i]['back_weight'] = '';
                        }
                    } else {
                        $list[$value][$k]["lRes"][$i]['back_weight'] = '';
                    }
                }
                //查询 matter_use 表退还数据
                $tR = Db::name('matter_use')->alias('a')//
                ->where($map)->field('order_number,ink_name,code,back_weight')->select();//
                $res = array();//
                if (!empty($tR)) {//
                    $res = $this->sumWeight($tR,'code','back_weight');//
                    $res = array_column($res,'back_weight','code');//将二位数组转换成一维数组  方便合并计算
                }//
                $newRes = array_keys($res);//
                foreach ($list[$value][$k]["lR"] as &$lr) {  //
                    $lr['out_weight'] = $lr['out_weight'] / 1000;//
                    if (!empty($tR)) {//
                        if (in_array($lr['code'], $newRes)) {//

                            $lr['back_weight'] = $res[$lr['code']] / 1000;//
                        } else {//
                            $lr['back_weight'] = '';//
                        }//
                    } else {//
                        $lr['back_weight'] = '';//
                    }//
                }//
            }
        }
//        dump($list);die;//2206179
            return $this->view->fetch('', compact('list'));
        }

        /**
         * 计算数量,值去重&相加
         * $arr 数组
         * $str1 要合并的值
         * $str2 要计算的值
         */
        function sumWeight($arr, $str1, $str2)
        {
            $item = array();
            foreach ($arr as $k => $v) {
                if (!isset($item[$v[$str1]])) {
                    $item[$v[$str1]] = $v;
                } else {
                    $item[$v[$str1]][$str2] += $v[$str2];
                }
            }
            return array_values($item);
        }
        /**
         * POST 请求
         * @param string $url
         * @param array $param
         * @param boolean $post_file 是否文件上传
         * @return string content
         */
        static public function post($url, $param, $post_file = false)
    {
        $oCurl = curl_init();
        if (stripos($url, "https://") !== FALSE) {
            curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
        }
        if (is_string($param) || $post_file) {
            $strPOST = $param;
        } else {
            $aPOST = array();
            foreach ($param as $key => $val) {
                $aPOST[] = $key . "=" . urlencode($val);
            }
            $strPOST = join("&", $aPOST);
        }
        curl_setopt($oCurl, CURLOPT_URL, $url);
        curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($oCurl, CURLOPT_POST, true);
        curl_setopt($oCurl, CURLOPT_POSTFIELDS, $strPOST);
        $sContent = curl_exec($oCurl);
        $aStatus = curl_getinfo($oCurl);
        curl_close($oCurl);
        if (intval($aStatus["http_code"]) == 200) {
            return $sContent;
        } else {
            return false;
        }
    }
    /**
     * Power: Mikkle
     * Email:776329498@qq.com
     * @param $url
     * @return bool|mixed
     */
    static public function get($url)
    {
        $oCurl = curl_init();
        if (stripos($url, "https://") !== FALSE) {
            curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
        }
        curl_setopt($oCurl, CURLOPT_URL, $url);
        curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
        $sContent = curl_exec($oCurl);
        $aStatus = curl_getinfo($oCurl);
        curl_close($oCurl);
        if (intval($aStatus["http_code"]) == 200) {
            return $sContent;
        } else {
            return false;
        }
    }

    public function machine_sit_show()
    {
        $parm = input();
        $order_num = input('order_num');
        $collarUse = new \app\admin\model\CollarUse;
        $matterUse = new \app\admin\model\MatterUse;
        $collarUse_list = $collarUse->where('order_number', $order_num)
            ->field('order_number,weight,back_weight,status,warehousing,back,create')
            ->paginate(5, false, ['query' => $parm]);
        foreach ($collarUse_list as &$v) {
            if ($v['status'] == 1) {
                $v['color'] = \app\admin\model\WarehousingDetail::where('bach_number', $v['warehousing'])->value('color');
            } else {
                $v['color'] = \app\admin\model\WarehousingDetail::where('bach_number', $v['back'])->value('color');
            }
            $v['weight'] = $v['weight'] / 1000;
            $v['back_weight'] = $v['back_weight'] / 1000;
        }

        $page = $collarUse_list->render();
        $this->view->assign('page', $page);
        $matterUse_list = $matterUse->where('order_number', $order_num)
            ->field('order_number,out_weight,back_weight,status,out,back,ink_name,create')
            ->npaginate(5, false, ['query' => $parm]);
        foreach ($matterUse_list as &$vv) {
            $vv['out_weight'] = $vv['out_weight'] / 1000;
            $vv['back_weight'] = $vv['back_weight'] / 1000;
        }
        $page1 = $matterUse_list->render();
        $this->view->assign('page1', $page1);
        $this->view->assign('collarUse_list', $collarUse_list);
        $this->view->assign('matterUse_list', $matterUse_list);
        return $this->view->fetch();
    }

    //领退料信息专墨
    public function machine_collar_show(){
        $parm = input();
        $order_num = isset($parm['order_num']) ? $parm['order_num'] : '';
        $collar = isset($parm['collar']) ? $parm['collar'] : '';
        $jh = isset($parm['jh']) ? $parm['jh'] : '';

        if ($parm['datatype'] == '1') {
            $collarUse = new \app\admin\model\CollarUse;
            $id = $this->getCollarFormulaId($order_num, $collar, $jh);
            if (!$id) {
                $this->view->assign('tip', '查不到专色墨数据,请联系管理员');
                $this->view->assign('collarUse_list', []);
                $this->view->assign('page', '');
                return $this->view->fetch();
            }

            $collarUse_list = $collarUse->where('cid', $id)
                ->where('machine_number', $jh)
                ->where('order_number', $order_num)
                ->paginate(5, false, ['query' => $parm]);
            foreach ($collarUse_list as &$v) {
                if ($v['status'] == 1) {
                    $v['color'] = \app\admin\model\WarehousingDetail::where('bach_number', $v['warehousing'])->value('color');
                } else {
                    $v['color'] = \app\admin\model\WarehousingDetail::where('bach_number', $v['back'])->value('color');
                }
                $v['weight'] = $v['weight'] / 1000;
                $v['back_weight'] = $v['back_weight'] / 1000;
            }
            $page = $collarUse_list->render();
            $this->view->assign('page', $page);
            $this->view->assign('collarUse_list', $collarUse_list);
        } else {
            $matterUse_list = Db::name('matter_use')
                ->where('ink_name', $collar)
                ->where('order_number', $order_num)
                ->where('machine_number', $jh)
                ->paginate(5, false, ['query' => $parm]);
            $matter = $matterUse_list->toArray()['data'];
            foreach ($matter as $key => $v) {
                $matter[$key]['out_weight'] = $v['out_weight'] / 1000;
                $matter[$key]['back_weight'] = $v['back_weight'] / 1000;
            }
            $page = $matterUse_list->render();
            $this->view->assign('page', $page);
            $this->view->assign('MatterUse_list', $matter);
        }
        return $this->view->fetch();
    }

    /**
     * 根据工单和专色墨名称获取配方ID
     */
    protected function getCollarFormulaId($order_num, $collar, $jh)
    {
        $product = Db::connect('db2')->query("select Gd_cpdh from 工单_基本资料 where Gd_gdbh = ? limit 1", [$order_num]);

        if (!empty($product)) {
            $product_number = rtrim($product[0]['Gd_cpdh']);
            if ($product_number !== '') {
                $id = Db::name('formula')
                    ->bind(['pn' => $product_number])
                    ->whereRaw('FIND_IN_SET(:pn, product_number)')
                    ->where('color', $collar)
                    ->value('id');
                if ($id) {
                    return $id;
                }
            }
        }

        return Db::name('collar_use')->alias('a')
            ->join('warehousing_detail b', 'a.warehousing = b.bach_number')
            ->where('a.order_number', $order_num)
            ->where('a.machine_number', $jh)
            ->where('b.color', $collar)
            ->value('a.cid');
    }
    //领用油墨分解成原墨统计
    public function collar_decompose(){
        $data = $this->request->request();
        if ($this->request->isAjax()) {
            if (isset($data['s_time']) && isset($data['e_time'])){
                $map['create'] = array('between',array($data['s_time'],$data['e_time']));
            }
            if (isset($data['jt'])){
                $map['machine_number'] = $data['jt'];
            }
//           if (empty($map)){
//               $map['machine_number'] = 1;
//               $s_time = date('Y-m-d H:i',strtotime('-1 day'));
//               $e_time = date('Y-m-d H:i');
//               $map['create'] = array('between',array($s_time,$e_time));
//           }

            if (!empty($map)){
                //专色墨数据 --领用
                $collar_out = Db::name('collar_use')->where($map)->where('status',1)->field('id,cid,weight')->select();
                $collar_out_total = $this->sumWeight($collar_out,'cid','weight');//领用总计
                //专墨 --退回
                $collar_back = Db::name('collar_use')->where($map)->where('status',2)->field('id,cid,back_weight as weight')->select();
                $collar_back_total = $this->sumWeight($collar_back,'cid','weight');//退回总计
                //计算数据数组
                foreach ($collar_out_total as $key=>$value){
                    foreach ($collar_back_total as $k=>$v){
                        if ($collar_out_total[$key]['cid'] == $v['cid']){
                            $collar_out_total[$key]['weight'] = $collar_out_total[$key]['weight'] - $v['weight'];
                            unset($collar_back_total[$k]);
                        }
                    }
                }
                //如果有多余的退还数据,值变成负数
                if (!empty($collar_back_total)){
                    foreach ($collar_back_total as $ke=>$val){
                        $collar_back_total[$ke]['weight'] = '-'.$val['weight'];
                        array_push($collar_out_total,$val);
                    }
                }
//                print_r($collar_out_total);die;
                //分解专色墨数据
                $list_arr = [];
                $collar_list = [];
                foreach ($collar_out_total as $kj=>$vol){
//                    print_r($vol);die;
                    $formula_detail = Db::name('formula_detail')->where('father',$vol['cid'])->field('id,ink,ink_number,number,total,code')->select();
                    $sum_number = Db::name('formula_detail')->where('father',$vol['cid'])->sum('ink_number');
                    foreach($formula_detail as $kl =>$vsl){
                        $list_arr[$kj][$kl]['code'] = $vsl['code'];
                        $list_arr[$kj][$kl]['ink'] = $vsl['ink'];
                        $list_arr[$kj][$kl]['weight'] = round($vsl['ink_number'] / $sum_number * $vol['weight'] /1000,3); //计划用量/固定数值*总计用量
                        array_push($collar_list,$list_arr[$kj][$kl]);
                    }
                }
                $collar_list = $this->sumWeight($collar_list,'code','weight');
                //油墨数据 --领用
                $matter_out = Db::name('matter_use')->where($map)->where('status',1)->field('id,ink_name as ink,code,out_weight as weight')->select();
                $matter_out_total = $this->sumWeight($matter_out,'code','weight');
                $matter_back = Db::name('matter_use')->where($map)->where('status',2)->field('id,ink_name as ink,code,back_weight as weight')->select();
                $matter_back_total = $this->sumWeight($matter_back,'code','weight');
                //计算数据数组

                foreach ($matter_out_total as $key1=>$value1){
                    foreach ($matter_back_total as $k1=>$v1){
                        if ($matter_out_total[$key1]['code'] == $v1['code']){
                            $matter_out_total[$key1]['weight'] = $matter_out_total[$key1]['weight'] - $v1['weight'] ;
                            unset($matter_back_total[$k1]);
                        }
                    }
                    $matter_out_total[$key1]['weight'] = $matter_out_total[$key1]['weight'] / 1000;
                }
                //如果有多余的退还数据,值变成负数
                if (!empty($matter_back_total)){
                    foreach ($matter_back_total as $ke1=>$val1){
                        $val1['weight'] = '-'.($val1['weight'] / 1000);
                        array_push($matter_out_total,$val1);
                    }

                }
                $list = array_merge_recursive($collar_list,$matter_out_total);
                $list = $this->sumWeight($list,'code','weight');
                $total = count($list);

                $result = array("total" => $total, "rows" => $list);
                $this->success('查询成功','',$result);
            }else{
                $total = 0;
                $list = [];
                $result = array("total" => $total, "rows" => $list);
                return json($result);
            }




        }

        return $this->view->fetch();
    }

}