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