request->request(); if ($this->request->isAjax()) { $params['pagesize'] = is_null($data['limit']) ? 10 : $data['limit'];//初始查询位置 if ($data['limit'] == 0){ $params['page'] = 1; }else{ $params['page'] = $data['offset'] / 10 + 1; } $gdbh = input('search'); if (empty($gdbh)){ $params['gd_gdbh'] = -1; } else{ $params['gd_gdbh'] =$gdbh; } $url = 'http://ink.7in6.com/bKdNvCxlao.php/jar/getOrder?pagesize='.$params['pagesize'].'&page='.$params['page'].'&gd_gdbh='.$params['gd_gdbh']; $list = $this->get($url); $list = json_decode($list,true); $total = $list['total']; $list = collection($list['data'])->toArray(); $result = array("total" => $total, "rows" => $list); 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(); $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(); $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();//collar 专色墨名称 //order_num 工单号 //jh 几号机 //根据工单批次号获取对应配方、库存信息 $product = Db::connect('db2')->query("select * from 工单_基本资料 where Gd_gdbh = '{$parm['order_num']}' limit 1"); if (empty($product)) { return array('status' => 0, 'msg' => '查不到工单数据,请联系管理员'); } if($parm['datatype'] == '1'){ $collarUse = new \app\admin\model\CollarUse; $product_number = rtrim($product[0]['Gd_cpdh']); $id = Db::name('formula')->where("FIND_IN_SET($product_number,product_number)")->where('color', $parm['collar'])->value('id'); $collarUse_list = $collarUse->where('cid', $id) ->where('machine_number',$parm['jh'])// ->where('order_number', $parm['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; } // halt($collarUse_list); $page = $collarUse_list->render(); $this->view->assign('page', $page); $this->view->assign('collarUse_list', $collarUse_list); }else{ $MatterUse = new \app\admin\model\MatterUse;// $matterUse_list = Db::name('matter_use')// ->where('ink_name', $parm['collar'])// ->where('order_number', $parm['order_num'])// ->where('machine_number',$parm['jh'])// ->paginate(5, false, ['query' => $parm]); // ->select();// $matter = $matterUse_list->toArray()['data']; // halt($matter); foreach ($matter as $key=>$v) { // // if ($v['status'] == 1) {//status=1领用 // $v['ink_name'] = $MatterUse->where('code', $v['code'])->value('ink_name');// // } else {//2=退回 // $v['ink_name'] = $MatterUse->where('code', $v['code'])->value('ink_name');// // }// $matter[$key]['out_weight'] = $v['out_weight'] / 1000;// $matter[$key]['back_weight'] = $v['back_weight'] / 1000;// }// // halt($matterUse_list); $page = $matterUse_list->render(); $this->view->assign('page', $page); $this->view->assign('MatterUse_list', $matter);// } return $this->view->fetch(); } //领用油墨分解成原墨统计 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(); } }