| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834 |
- <?php
- /**
- * author xtj
- * createtime 2020/6/3 0003 上午 9:38
- * return array obj json bool
- * param
- */
- namespace app\admin\controller;
- use app\common\controller\Backend;
- use think\Db;
- use Think\Exception;
- //工单
- class Order extends Backend{
- public function index(){
- $data = $this->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();
- }
- }
|