<?php<hyzwd@outlook.com>namespace app\index\controller;
use app\index\model\Bancai;
use app\index\model\BancaiList;
use app\index\model\ProductColor;
use app\index\model\ProductNumber;
use app\index\model\Purchase;
use app\index\model\PurchaseOrders;
use app\index\model\Stockpile;
use app\index\model\StockpileLock;
use think\Request;
use think\Db;
class Schedule extends Common_base
{
public function index() {
IS_ROOT([1,5]) ? true : $this->error('没有权限');
$Request = Request::instance();
$query = $Request->param(); $m = $Request->param('m');
$k = $Request->param('k');
$purchase = new Purchase();
if ($m == 'pnumber' && $k !=='') {
$list = $purchase->scope('pnumber', $k)->paginate('', false, ['query' => $query ]);
} else {
$list = $purchase->where('affirm','=',1)->where('pshoudj','=',1)->where('status','=',1)->whereOr('status','=',2)->paginate();
}
$page = $list->render();
$assign = [
'title' => '生产订单',
'list' => $list,
'page' => $page,
'empty' => '<tr><td colspan="8" align="center">当前条件没有查到数据</td></tr>',
];
$this->assign($assign);
return $this->fetch();
}
public function view() {
IS_ROOT([1,5]) ? true : $this->error('没有权限');
$Request = Request::instance();
$pid = $Request->param('pid');
$pnumber = isInteger($pid) ? $pid : '';
if (empty($pnumber)) {
$this->error('参数错误');
}
$model = new Purchase();
$data = $model->where('pnumber', $pnumber)->find();
if (empty($data)) {
$this->error('参数错误');
}
$list = Db::name('purchase_orders')->where('ord_pnumber', $pnumber)->order('xuhao', 'asc')->select();
$count = Db::name('purchase_orders')->where('ord_pnumber',$data['pnumber'])->count();
$remark = array();
foreach ($list as $key=>$val) {
if ($val['remark'] != '') {
$remark[] = $val['remark'];
}
}
$assign = [
'title' => '订单查看',
'data' => $data,
'list' => $list,
'count' => $count,
'remark' => join(' - ', $remark),
'empty' => '<tr><td colspan="15" style="height: 30px;padding: 10px;"><span style="color: #9E9E9E;font-size: 18px;">还未添加产品</span></td></tr>',
];
$this->assign($assign);
return $this->fetch();
}
public function in() {
IS_ROOT([1,5]) ? true : $this->error('没有权限');
$Request = Request::instance();
$pid = $Request->param('pid');
$pnumber = isInteger($pid) ? $pid : '';
if (empty($pnumber)) {
$this->error('参数错误');
}
$model = new Purchase();
$data = $model->where('pnumber', $pnumber)->find();
if (empty($data)) {
$this->error('参数错误');
}
if ($Request->isPost()) {
$result = $this->validate(['__token__' => $_POST['__token__']],['__token__'=>'token']);
if(true !== $result){
}
$result = $model->allowField('status')->save(['status'=>2],['pnumber'=>$pnumber]);
if ($result) {
self::deduction($pnumber);
$this->success('操作成功');
} else {
$this->error('保存数据失败,请联系管理员');
}
} else {
$assign = [
'data' => $data,
];
$this->assign($assign);
return $this->fetch();
}
}
public function shengchan() {
IS_ROOT([1,5]) ? true : $this->error('没有权限');
$Request = Request::instance();
$query = $Request->param(); $m = $Request->param('m');
$k = $Request->param('k');
$purchase = new Purchase();
if ($m == 'pnumber' && $k !=='') {
$list = $purchase->scope('pnumber', $k)->paginate('', false, ['query' => $query ]);
} else {
$list = $purchase->where('status','egt',2)->where('status','elt',4)->paginate();
}
$page = $list->render();
$assign = [
'title' => '完成订单',
'list' => $list,
'page' => $page,
'empty' => '<tr><td colspan="8" align="center">当前条件没有查到数据</td></tr>',
];
$this->assign($assign);
return $this->fetch();
}
public function shengcwc() {
IS_ROOT([1,5]) ? true : $this->error('没有权限');
$Request = Request::instance();
$pid = $Request->param('pid');
$pnumber = isInteger($pid) ? $pid : '';
if (empty($pnumber)) {
$this->error('参数错误');
}
$model = new Purchase();
$data = $model->where('pnumber', $pnumber)->find();
if (empty($data)) {
$this->error('参数错误');
}
if ($Request->isPost()) {
$result = $this->validate(['__token__' => $Request->param('__token__')],['__token__'=>'token']);
if(true !== $result || empty($Request->param('ok'))){
$this->error('数据提交错误,请返回刷新');
}
if ($data['pshoudj'] >= 2) {
$status = 4;
} else {
$status = 3;
}
$result = $model->allowField(['pshengcwc','status'])->save(['pshengcwc'=>'1','status'=>$status],['pnumber'=>$pnumber]);
if ($result) {
$this->success('操作成功');
} else {
$this->error('保存数据失败,请联系管理员');
}
} else {
$assign = [
'data' => $data,
];
$this->assign($assign);
return $this->fetch();
}
}
public function chuku() {
IS_ROOT([1,4]) ? true : $this->error('没有权限');
$Request = Request::instance();
$pid = $Request->param('pid');
$pnumber = isInteger($pid) ? $pid : '';
if (empty($pnumber)) {
$this->error('参数错误');
}
$model = new Purchase();
$data = $model->where('pnumber', $pnumber)->find();
if (empty($data)) {
$this->error('参数错误');
}
if ($Request->isPost()) {
$pend_date = $Request->param('pend_date');
$result = $this->validate(['__token__' => $Request->param('__token__')],['__token__'=>'token']);
if(true !== $result || empty($Request->param('ok'))){
$this->error('数据提交错误,请返回刷新');
}
$result = $model->allowField(['pend_date','status'])->save(['pend_date'=>$pend_date,'status'=>'5'],['pnumber'=>$pnumber]);
if ($result) {
$this->success('操作成功');
} else {
$this->error('保存数据失败,请联系管理员');
}
} else {
$assign = [
'data' => $data,
];
$this->assign($assign);
return $this->fetch();
}
}
public function delivery() {
IS_ROOT([1,4,5]) ? true : $this->error('没有权限');
$Request = Request::instance();
$pnumber = $Request->param('pid');
if (empty($pnumber)) {
$this->error('参数错误');
}
$model = new Purchase();
$data = $model->where('pnumber', $pnumber)->find();
if (empty($data)) {
$this->error('参数错误');
}
$list = Db::name('purchase_orders')->where('ord_pnumber', $pnumber)->order('xuhao', 'asc')->select();
$sum_amount = Db::name('purchase_orders')->where('ord_pnumber',$data['pnumber'])->sum('amount');
$count = Db::name('purchase_orders')->where('ord_pnumber',$data['pnumber'])->count();
$youhuije = ($sum_amount * 1) - ($data['pamount'] * 1);
$remark = array();
foreach ($list as $key=>$val) {
if ($val['remark'] != '') {
$remark[] = $val['remark'];
}
}
$assign = [
'title' => '出库订单',
'data' => $data,
'list' => $list,
'count' => $count,
'remark' => join(' - ', $remark),
'youhuije' => $youhuije,
'empty' => '<tr><td colspan="15" style="height: 30px;padding: 10px;"><span style="color: #9E9E9E;font-size: 18px;">还未添加产品</span></td></tr>',
];
$this->assign($assign);
return $this->fetch();
}
public function endck() {
IS_ROOT([1,5]) ? true : $this->error('没有权限');
$Request = Request::instance();
$query = $Request->param(); $m = $Request->param('m');
$k = $Request->param('k');
$model = new Purchase();
if ($m == 'pnumber' && $k !=='') {
$list = $model->scope('pnumber', $k)->where('status','=',5)->paginate('', false, ['query' => $query ]);
} else {
$list = $model->where('status','egt',5)->paginate('30');
}
$page = $list->render();
$assign = [
'title' => '交货订单',
'list' => $list,
'page' => $page,
'empty' => '<tr><td colspan="8" align="center">当前条件没有查到数据</td></tr>',
];
$this->assign($assign);
return $this->fetch();
}
public function lodop() {
IS_ROOT([1,5]) ? true : $this->error('没有权限');
$Request = Request::instance();
$pid = $Request->param('pid');
$pnumber = isInteger($pid) ? $pid : '';
if (empty($pnumber)) {
$this->error('参数错误');
}
$model = new Purchase();
$data = $model->where('pnumber', $pnumber)->where('status','>=',2)->find();
if (empty($data)) {
$this->error('订单未生产');
}
$list = Db::name('purchase_orders')->where('ord_pnumber', $pnumber)->order('xuhao', 'asc')->field('yanse,products,chanph,breadth,heiget,thick,suoxiang,quantity')->select();
$count = Db::name('purchase_orders')->where('ord_pnumber', $pnumber)->sum('quantity');
$array = array();
foreach ($list as $k=>$v) {
if ($v['quantity'] >= 1) {
for ($i=0;$i<$v['quantity'];$i++) {
$array[] = [
'yanse' => $v['yanse'],
'products' => $v['products'],
'chanph' => $v['chanph'],
'breadth' => $v['breadth'],
'heiget' => $v['heiget'],
'thick' => $v['thick'],
'suoxiang' => $v['suoxiang'],
'quantity' => $v['quantity'],
];
}
}
}
unset($list);
$assign = [
'title' => '打印标签',
'data' => $data,
'list' => $array,
'count' => $count,
'empty' => '<tr><td colspan="15" style="height: 30px;padding: 10px;"><span style="color: #9E9E9E;font-size: 18px;">还未添加产品</span></td></tr>',
];
$this->assign($assign);
return $this->fetch();
}
public function lodop_excel2() {
$Request = Request::instance();
$pid = $Request->param('pid');
$pnumber = isInteger($pid) ? $pid : '';
if (empty($pnumber)) {
$this->error('参数错误');
}
$Customers = new Customers();
$model = new Purchase();
$data = $model->where('pnumber', $pnumber)->where('status','>=',2)->find();
if (empty($data)) {
$this->error('订单未生产');
}
$list = Db::name('purchase_orders')->where('ord_pnumber', $pnumber)->order('xuhao', 'asc')->field('yanse,products,chanph,breadth,heiget,thick,suoxiang,quantity')->select();
$array = array();
foreach ($list as $k=>$v) {
for ($i=1;$i<=$v['quantity'];$i++) {
$array[$i]['pnumber'] = $data["pnumber"]; $array[$i]['pcsname'] = $data["pcsname"]; $array[$i]['cus_prov'] = mb_substr($data["pcus_id"]["cus_prov"], 0, 2, 'utf-8'); $array[$i]['cus_city'] = mb_substr($data["pcus_id"]["cus_city"], 0, 2, 'utf-8'); $array[$i]['cus_dist'] = mb_substr($data["pcus_id"]["cus_dist"], 0, 2, 'utf-8'); $array[$i]['quantity'] = $v['quantity']."-".$i; $array[$i]['yanse'] = $v['yanse']; $array[$i]['products'] = $v['products']; $array[$i]['chanph'] = $v['chanph']; $array[$i]['breadth'] = $v['breadth']; $array[$i]['heiget'] = $v['heiget']; $array[$i]['thick'] = $v['thick']; $array[$i]['suoxiang'] = $v['suoxiang']; }
unset($list[$k]); }
$lodop = array_merge($list, $array);
unset($list);
if (is_array($lodop) === false) {
$this->error('数据错误');
}
p($lodop);
$filename = $data["pnumber"]."-标签"; $this->exportExcel($lodop, $filename, '','Sheet1');
}
public function lodop_excel() {
$Request = Request::instance();
$pid = $Request->param('pid');
$pnumber = isInteger($pid) ? $pid : '';
if (empty($pnumber)) {
$this->error('参数错误');
}
$Customers = new Customers();
$model = new Purchase();
$data = $model->where('pnumber', $pnumber)->where('status','>=',2)->find();
if (empty($data)) {
$this->error('订单未生产');
}
$list = Db::name('purchase_orders')->where('ord_pnumber', $pnumber)->order('xuhao', 'asc')->field('yanse,products,chanph,breadth,heiget,thick,suoxiang,quantity')->select();
$array = array();
foreach ($list as $k=>$v) {
if ($v['quantity'] > 1) {
for ($i=0;$i<$v['quantity'];$i++) {
$array[$i]['yanse'] = $v['yanse'];
$array[$i]['products'] = $v['products'];
$array[$i]['chanph'] = $v['chanph'];
$array[$i]['breadth'] = $v['breadth'];
$array[$i]['heiget'] = $v['heiget'];
$array[$i]['thick'] = $v['thick'];
$array[$i]['suoxiang'] = $v['suoxiang'];
}
unset($list[$k]); }
}
$lodop = array_merge($list, $array);
unset($list);
$filename = $data["pnumber"]."-标签.xls";
$str = "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns=\"http://www.w3.org/TR/REC-html40\">\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">";
$str .= "<style>\r\n";
$str .= "table tr td{width:51px;height:66px;text-align:center;vertical-align:middle;font-size:18px;}";
$str .= "</style>\r\n";
$str .= "\r\n</head>\r\n<body>";
$str .= "\n<table>\n<tbody>\n";
$str .= "<tr>\n";
$str .= "<td style=\"height: 0;border: 0;\"> </td>";
$str .= "<td style=\"height: 0;border: 0;\"> </td>";
$str .= "<td style=\"height: 0;border: 0;\"> </td>";
$str .= "<td style=\"height: 0;border: 0;\"> </td>";
$str .= "<td style=\"height: 0;border: 0;\"> </td>";
$str .= "<td style=\"height: 0;border: 0;\"> </td>";
$str .= "<td style=\"height: 0;border: 0;\"> </td>";
$str .= "\n</tr>\n";
$str .= "</tbody>\n</table>\n";
$i = 1;
foreach ($lodop as $key=>$val)
{
$str .= "\n<table border='1'>\n<tbody>\n";
$str .= "<tr>\n";
$str .= "<td>客户<br>名称</td><td colspan=\"3\" style=\"font-weight:600;font-size:26px;\">".$data["pcsname"]."</td><td>包装<br>编号</td><td colspan=\"2\" style=\"vnd.ms-excel.numberformat:@;font-size:24px;font-weight:600;\">".$data["pcount"]."-".$i."</td>";
$str .= "</tr>\n";
$str .= "<tr>\n";
$str .= "<td>收货<br>地址</td>";
$str .= "<td colspan=\"2\" style=\"font-weight:600;font-size:26px;\">".mb_substr($data["pcus_id"]["cus_prov"], 0, 2, 'utf-8')."</td>";
$str .= "<td colspan=\"2\" style=\"font-weight:600;font-size:26px;\">".mb_substr($data["pcus_id"]["cus_city"], 0, 2, 'utf-8')."</td>";
$str .= "<td colspan=\"2\" style=\"font-weight:600;font-size:26px;\">".mb_substr($data["pcus_id"]["cus_dist"], 0, 2, 'utf-8')."</td>";
$str .= "</tr>\n";
$str .= "<tr>\n";
$str .= "<td>产品<br>信息</td>";
$str .= "<td colspan=\"2\" style=\"font-size: 14px;\">订单号:<br>".$data["pnumber"]."</td>";
$str .= "<td colspan=\"4\" style=\"font-size: 14px;\">";
$str .= $val["yanse"]." ".$val["suoxiang"]."<BR/>"; $str .= $val["products"].$val["chanph"]." "; $str .= $val["breadth"]."*".$val["heiget"]."*".$val["thick"]; <BR/>".$val["suoxiang"]; $str .= "</td>";
$str .= "</tr>\n";
$str .= "</tbody>\n</table>\n";
<BR/>\n";
$i++;
}
$str .= "</body>\r\n</html>";
header( "Content-Type: application/vnd.ms-excel; name='excel'" );
header( "Content-type: application/octet-stream" );
header( "Content-Disposition: attachment; filename=".$filename );
header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
header( "Pragma: no-cache" );
header( "Expires: 0" );
exit( $str );
}
public function deduction($pnumber) {
if (empty($pnumber)) {
return $this->error('数据不完整,关联库存未扣除');
}
$Orders = Db::name('purchase_orders')->where('ord_pnumber', $pnumber)
->field('yanse,products,chanph,attribute,baobian,fittings,quantity')->select();
foreach ($Orders as $key=>$val) {
$pcid = Db::name('product_color')->where('pc_name', $val['yanse'])->field('pc_id')->find();
$bclist = BancaiList::get(['blname'=>$val['chanph']]);
$blid = Db::name('material_set')->where('ms_pnid',$val['products'])
->where('ms_blname', $val['chanph'])
->where('ms_maname', $val['attribute'])
->where('ms_baobian', $val['baobian'])->find();
Bancai::where(['bpcid'=>$pcid['pc_id'], 'bplid'=>$bclist['blid']])->update(['bquantity'=>['exp', 'bquantity -'.$val['quantity']]]);
if (!empty($blid['ms_gl'])) {
$blgl = explode(',', $blid['ms_gl']);
foreach ($blgl as $kb=>$vb) {
$exp[] = explode(':', $vb);
}
foreach ($exp as $ke=>$ve) {
$num = $ve[1] * $val['quantity'];
Stockpile::where(['sp_pcid'=>$pcid['pc_id'], 'sp_lxid'=>$ve[0]])->update(['sp_quantity'=> ['exp', 'sp_quantity -'.$num]]);
}
unset($exp);
unset($num);
}
$lid = Db::name('fittings_lock')->where('lname', $val['fittings'])->field('lid')->find();
StockpileLock::where('st_lid', $lid['lid'])->update(['st_quantity'=> ['exp', 'st_quantity -' . $val['quantity']]]);
}
}
public function exportExcel($data, $savefile, $fileheader, $sheetname){
import("Org.PHPExcel");
import("Org.PHPExcel.Reader.Excel2007");
set_time_limit(0);
ini_set('memory_limit','1024M');
$objPHPExcel = new \PHPExcel();
if (is_null($savefile)) {
$savefile = time();
}else{
iconv('UTF-8', 'GB2312', $savefile);
}
$objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('G')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('G')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(6.5);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(6.5);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(6.5);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(6.5);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(6.5);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(6.5);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(6.5);
$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(12);
$color='0xCC000000';
$styleArray = array(
'borders' => array(
'allborders' => array(
'style' => \PHPExcel_Style_Border::BORDER_THIN 'color' => array('argb' => $color),
),
),
);
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");
$objPHPExcel->getProperties()->setKeywords("office 2007 openxml php");
$objPHPExcel->getProperties()->setCategory("Test result file");
$count = count($data);
$a = 0 foreach ($data as $k=>$v) {
for ($i=1;$i<=$v['quantity'];$i++) {
$objPHPExcel->setActiveSheetIndex()
->setCellValue('A'.$i, '客户名称')
->setCellValue('B'.$i, $data[$i-1]['pcsname']) ->setCellValue('E'.$i, '包装编号')
->setCellValue('F'.$i, $data[$i-1]['quantity'])
->setCellValue('A'.($i+1), '收货地址')
->setCellValue('B'.($i+1), $data[$i-1]['cus_prov']) ->setCellValue('E'.($i+1), '包装编号')
->setCellValue('F'.($i+1), $data[$i-1]['quantity']);
$objPHPExcel->getActiveSheet()->getStyle("A$i")->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->getStyle("E$i")->getAlignment()->setWrapText(true);
}
}
$objPHPExcel->getActiveSheet()->setTitle(''.$savefile.'');
$objPHPExcel->setActiveSheetIndex(0);
ob_end_clean();
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$savefile.'.xls"'); header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
}
}