model = new \app\admin\model\QcodeBach(); } /** * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法 * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑 * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 */ /** * 查看 */ public function index() { //当前是否为关联查询 $this->relationSearch = false; //设置过滤方法 $this->request->filter(['strip_tags', 'trim']); return $this->view->fetch(); } /** * 主表查询 */ public function bach() { $this->relationSearch = false; $this->request->filter(['strip_tags', 'trim']); if ($this->request->isAjax()) { // 如果是 Selectpage 请求则跳转 if ($this->request->request('keyField')) { return $this->selectpage(); } $userInfo = Session::get('admin'); $company_id = (int)$userInfo['company']; // 默认条件:未删除 $where = ['delete_time' => '']; // 获取前端传参 $req = input(); $sort = $req['sort'] == 'id' ? '_id' : $req['sort']; $order = $req['order'] ?? 'desc'; $offset = $req['offset'] ?? 0; $limit = $req['limit'] ?? 20; // 解析 filter 筛选条件 $filter = json_decode($req['filter'], true); if (is_array($filter)) { foreach ($filter as $k => $v) { $where[$k] = new \MongoDB\BSON\Regex($v); } } $list = []; // 超级管理员:查询所有公司 if (isSuperAdmin()) { $companies = Db::name('admin') ->field('company') ->where('company', '<>', '') ->where('kes', '<>', '') ->distinct(true) ->select(); foreach ($companies as $row) { $cid = $row['company']; $rows = $this->model->name($cid . '_qcode_bach') ->where($where) ->select(); // 不分页,后面统一处理 foreach ($rows as &$item) { $oid = $item['_id']->jsonSerialize(); $item['id'] = $oid['$oid']; } $list = array_merge($list, $rows); } // 全局排序(按 create_time 排序) usort($list, function ($a, $b) use ($sort, $order) { $valA = $a[$sort] ?? 0; $valB = $b[$sort] ?? 0; return $order === 'asc' ? ($valA <=> $valB) : ($valB <=> $valA); }); // 总数与分页 $total = count($list); $list = array_slice($list, $offset, $limit); } else { // 普通用户:只查本公司 $model = $this->model->name($company_id . '_qcode_bach'); $total = $model->where($where)->count(); $list = $model->where($where) ->order([$sort => $order]) ->limit($limit) ->skip($offset) ->select(); foreach ($list as &$item) { $oid = $item['_id']->jsonSerialize(); $item['id'] = $oid['$oid']; } } return json(["total" => $total, "rows" => $list]); } return $this->view->fetch(); } /** * 大件列表 */ /** * 大件列表 */ public function large() { $this->relationSearch = false; $this->request->filter(['strip_tags', 'trim']); if ($this->request->isAjax()) { if ($this->request->request('keyField')) { return $this->selectpage(); } $userInfo = Session::get('admin'); $company_id = (int)$userInfo['company']; $where = ['delete_time' => '']; $req = input(); if ($req['filter'] == '{}') { return json(["total" => 0, "rows" => []]); } $sort = ($req['sort'] == 'id') ? '_id' : $req['sort']; $order = $req['order']; $filter = json_decode($req['filter'], true); if (is_array($filter)) { foreach ($filter as $k => $v) { $where[$k] = new \MongoDB\BSON\Regex($v); } } $list = []; $total = 0; $db = new QcodeLarge(); $qcodeSmall = new QcodeSmall(); // 超级管理员查询所有公司数据 if (isSuperAdmin()) { $companies = Db::name('admin') ->field('company') ->where('company', '<>', '') ->where('kes', '<>', '') ->distinct(true) ->select(); foreach ($companies as $row) { $cid = $row['company']; $table = $cid . '_qcode_large'; $rows = $db->name($table)->where($where)->order($sort, $order)->select(); $total += count($rows); foreach ($rows as $k => $v) { $oid = $v['_id']->jsonSerialize(); $v['id'] = $oid['$oid']; $v['l_flow'] = ltrim(substr($v['code'], 53, 6), '0'); $v['small_num'] = $qcodeSmall->name($cid . '_qcode_small')->where('large_id', $oid['$oid'])->count(); $v['l_weight'] = floatval($v['l_weight']) / 100; $list[] = $v; } } } else { // 普通用户只查自己公司表 $table = $company_id . '_qcode_large'; $list = $db->name($table)->where($where)->order($sort, $order)->select(); $total = count($list); foreach ($list as $k => $v) { $oid = $v['_id']->jsonSerialize(); $list[$k]['id'] = $oid['$oid']; $list[$k]['l_flow'] = ltrim(substr($v['code'], 53, 6), '0'); $list[$k]['small_num'] = $qcodeSmall->name($company_id . '_qcode_small')->where('large_id', $oid['$oid'])->count(); $list[$k]['l_weight'] = floatval($v['l_weight']) / 100; } } return json(["total" => $total, "rows" => $list]); } return $this->view->fetch(); } /** * 小件列表 */ public function small() { //设置过滤方法 $this->request->filter(['strip_tags', 'trim']); $req = $this->request->param(); if ($this->request->isAjax()) { //如果发送的来源是Selectpage,则转发到Selectpage if ($this->request->request('keyField')) { return $this->selectpage(); } $userInfo = Session::get('admin'); $company_id = (int)$userInfo['company']; $where = [ 'delete_time'=> '', 'large_id'=> $req['large_id'] ]; $req = input(); $req['sort'] == 'id' ? $sort = '_id' : $sort = $req['sort']; $order = $req['order']; $offset = $req['offset']; $limit = $req['limit']; // 构造模糊查询条件 // $regex = new MongoDB\BSON\Regex('.*abc.*', 'i'); // $filter = ['field' => $regex]; $filter = json_decode($req['filter'], true); foreach ($filter as $k => $v){ $where[$k] = new \MongoDB\BSON\Regex($v); } $list = []; $total = 0; $qcodeSmall = new QcodeSmall(); // 超级管理员查询所有公司 if (isSuperAdmin()) { $companies = Db::name('admin') ->field('company') ->where('company', '<>', '') ->where('kes', '<>', '') ->distinct(true) ->select(); foreach ($companies as $row) { $cid = $row['company']; $table = $cid . '_qcode_small'; // 获取数据(不分页,后面统一分页) $rows = $qcodeSmall->name($table)->where($where)->select(); foreach ($rows as &$v) { $oid = $v['_id']->jsonSerialize(); $v['id'] = $oid['$oid']; $v['l_flow'] = ($req['l_flow'] ?? '') . '-' . $v['l_flow']; if (strpos($v['l_flow'], '-') !== false) { $parts = explode('-', $v['l_flow']); $v['l_flows'] = end($parts); } else { $v['l_flows'] = ''; } } $list = array_merge($list, $rows); } // 全部公司数据合并后,统一排序 usort($list, function ($a, $b) use ($sort, $order) { $valA = $a[$sort] ?? ''; $valB = $b[$sort] ?? ''; return $order === 'asc' ? ($valA <=> $valB) : ($valB <=> $valA); }); // 总条数 $total = count($list); // 分页截取 $list = array_slice($list, $offset, $limit); } else { // 普通用户仅查本公司 $table = $company_id . '_qcode_small'; $total = $qcodeSmall->name($table)->where($where)->count(); $list = $qcodeSmall->name($table)->where($where) ->order([$sort => $order]) ->limit($limit) ->skip($offset) ->select(); foreach ($list as $k => $v) { $oid = $v['_id']->jsonSerialize(); $list[$k]['id'] = $oid['$oid']; $list[$k]['l_flow'] = ($req['l_flow'] ?? '') . '-' . $v['l_flow']; } } return json(["total" => $total, "rows" => $list]); } return $this->view->fetch(); } /** * 小件导出状态修改(支持超级管理员操作单个公司表) * 支持处理单个ID和多个ID(逗号分隔)的情况 */ public function small_status() { $req = $this->request->param(); $ids = $req['ids']; // 统一处理ids参数,转换为数组 if (!is_array($ids)) { $ids = explode(',', $ids); } // 过滤空值 $ids = array_filter($ids); if (empty($ids)) { $this->error("参数错误:ids不能为空"); } // 判断是否是超级管理员 if (isSuperAdmin()) { $this->handleSuperAdminMode($ids); } else { $this->handleNormalUserMode($ids); } } /** * 超级管理员处理模式 */ protected function handleSuperAdminMode($ids) { $qcodeSmall = new QcodeSmall(); $companyTables = Db::name('admin') ->field('company') ->where('company', '<>', '') ->where('kes', '<>', '') ->distinct(true) ->select(); $found = false; $successIds = []; $failedIds = []; foreach ($companyTables as $row) { $cid = $row['company']; $tableName = $cid . '_qcode_small'; try { // 查询该表中存在的记录 $records = $qcodeSmall->name($tableName) ->whereIn('_id', $ids) ->select(); if (!empty($records)) { $found = true; // 批量更新状态 foreach ($records as $record) { $newStatus = ($record['status'] == 0) ? 1 : 0; $result = $qcodeSmall->name($tableName) ->where('_id', $record['_id']) ->update(['status' => $newStatus]); if ($result) { $successIds[] = $record['_id']; } else { $failedIds[] = $record['_id']; } } } } catch (\Exception $e) { continue; // 表不存在,跳过 } } if ($found) { $message = "超级管理员批量切换完成"; if (!empty($successIds)) { $message .= ",成功:"; } if (!empty($failedIds)) { $message .= ",失败:"; } $this->success($message); } else { $this->error("在所有公司中未找到这些记录:" . implode(',', $ids)); } } /** * 普通用户处理模式 */ protected function handleNormalUserMode($ids) { $userInfo = Session::get('admin'); $company_id = (int)$userInfo['company']; $qcodeSmall = new QcodeSmall(); $tableName = $company_id . '_qcode_small'; $successIds = []; $failedIds = []; try { // 查询存在的记录 $records = $qcodeSmall->name($tableName) ->whereIn('_id', $ids) ->select(); if (empty($records)) { $this->error("未找到符合条件的记录"); } // 批量更新状态 foreach ($records as $record) { $newStatus = ($record['status'] == 0) ? 1 : 0; $result = $qcodeSmall->name($tableName) ->where('_id', $record['_id']) ->update(['status' => $newStatus]); if ($result) { $successIds[] = $record['_id']; } else { $failedIds[] = $record['_id']; } } $message = "批量切换完成"; if (!empty($successIds)) { $message .= ",成功:" ; } if (!empty($failedIds)) { $message .= ",失败:" ; } $this->success($message); } catch (\Exception $e) { $this->error("操作失败:" . $e->getMessage()); } } /** * 自动打码(大件) */ public function print_l() { $this->request->filter(['strip_tags', 'trim']); $req = $this->request->param(); if (!$this->request->isAjax()) { $this->view->assign('ids', $req['ids']); return $this->view->fetch(); } $ids = $req['ids']; $type = $req['type']; $numn = $req['numn']; $qcodeLarge = new QcodeLarge(); $qcodeSmall = new QcodeSmall(); $qcodeProduct = new QcodeProduct(); $rows = []; // 超级管理员逻辑:遍历所有公司表查找匹配ID if (isSuperAdmin()) { $companyList = Db::name('admin') ->field('company') ->where('company', '<>', '') ->where('kes', '<>', '') ->distinct(true) ->select(); foreach ($companyList as $company) { $cid = $company['company']; $tableLarge = $cid . '_qcode_large'; $tableBach = $cid . '_qcode_bach'; $tableSmall = $cid . '_qcode_small'; // 检查是否有匹配的大件ID try { $large = $qcodeLarge->name($tableLarge)->where('_id', $ids[0])->find(); if (empty($large)) continue; $largeArr = json_decode($large, true); $bach = $this->model->name($tableBach)->where('_id', $largeArr['bach_id'])->find(); $bachArr = json_decode($bach, true); $row = $qcodeProduct->where('product_code', $bachArr['matter_no'])->find(); $rowArr = json_decode($row, true); $company_name = $bachArr['supplier_name']; $product_name = $bachArr['matter_name']; $main_unit = $rowArr['main_unit']; $sec_unit = $rowArr['sec_unit']; $proportion = $rowArr['proportion']; foreach ($ids as $key => $value) { $rowData = $qcodeLarge->name($tableLarge)->where('_id', $value)->find(); $rowData = json_decode($rowData, true); $code = $rowData['code']; $rows[$key] = [ 'company_name' => $company_name, 'product_name' => $product_name, 'sqrcd' => $qcodeSmall->name($tableSmall)->where('large_id', $value)->count(), 'main_unit' => $main_unit, 'sec_unit' => $sec_unit, 'date' => substr_replace(substr_replace('20' . substr($code, 38, 6), '-', 4, 0), '-', 7, 0), 'l_flow' => ltrim(substr($code, 53, 6), '0'), 'qrcode' => $code, 'pCode' => $this->qrcode($code), 'batch' => (substr($code, 76, 10) == '0000000000') ? ltrim(substr($code, 66, 10), '0') : ltrim(substr($code, 66, 10), '0') . '、' . ltrim(substr($code, 76, 10), '0') ]; // 数量处理 if ($rowData['l_num'] === null) { $rows[$key]['num'] = $proportion ? floor($rows[$key]['sqrcd'] * $proportion * 100) / 100 : ''; } elseif ($rowData['l_num'] == 0) { $rows[$key]['num'] = ($main_unit == '公斤') ? $rowData['l_weight'] : ( $proportion ? floor($rows[$key]['sqrcd'] * $proportion * 100) / 100 : '' ); } else { $rows[$key]['num'] = $rowData['l_num']; } } // 查到就停止遍历 break; } catch (\Exception $e) { continue; } } } else { // 普通用户逻辑,只能查看所属公司数据 $userInfo = Session::get('admin'); $company_id = (int)$userInfo['company']; $tableLarge = $company_id . '_qcode_large'; $tableBach = $company_id . '_qcode_bach'; $tableSmall = $company_id . '_qcode_small'; $large = $qcodeLarge->name($tableLarge)->where('_id', $ids[0])->find(); $largeArr = json_decode($large, true); $bach = $this->model->name($tableBach)->where('_id', $largeArr['bach_id'])->find(); $bachArr = json_decode($bach, true); $row = $qcodeProduct->where('product_code', $bachArr['matter_no'])->find(); $rowArr = json_decode($row, true); $company_name = $bachArr['supplier_name']; $product_name = $bachArr['matter_name']; $main_unit = $rowArr['main_unit']; $sec_unit = $rowArr['sec_unit']; $proportion = $rowArr['proportion']; foreach ($ids as $key => $value) { $rowData = $qcodeLarge->name($tableLarge)->where('_id', $value)->find(); $rowData = json_decode($rowData, true); $code = $rowData['code']; $rows[$key] = [ 'company_name' => $company_name, 'product_name' => $product_name, 'sqrcd' => $qcodeSmall->name($tableSmall)->where('large_id', $value)->count(), 'main_unit' => $main_unit, 'sec_unit' => $sec_unit, 'date' => substr_replace(substr_replace('20' . substr($code, 38, 6), '-', 4, 0), '-', 7, 0), 'l_flow' => ltrim(substr($code, 53, 6), '0'), 'qrcode' => $code, 'pCode' => $this->qrcode($code), 'batch' => (substr($code, 76, 10) == '0000000000') ? ltrim(substr($code, 66, 10), '0') : ltrim(substr($code, 66, 10), '0') . '、' . ltrim(substr($code, 76, 10), '0') ]; if ($rowData['l_num'] === null) { $rows[$key]['num'] = $proportion ? floor($rows[$key]['sqrcd'] * $proportion * 100) / 100 : ''; } elseif ($rowData['l_num'] == 0) { $rows[$key]['num'] = ($main_unit == '公斤') ? $rowData['l_weight'] : ( $proportion ? floor($rows[$key]['sqrcd'] * $proportion * 100) / 100 : '' ); } else { $rows[$key]['num'] = $rowData['l_num']; } } } // 最终返回数据 $data = [ 'type' => $type, 'numn' => $numn, 'rows' => $rows, 'ids' => $ids, ]; $this->success('成功', '', $data); } /** * 自动打码(小件) */ public function print_s() { // 过滤请求参数 $this->request->filter(['strip_tags', 'trim']); $req = $this->request->param(); if (!$this->request->isAjax()) { $this->view->assign('ids', $req['ids']); return $this->view->fetch(); } $ids = $req['ids']; $type = $req['type']; $numn = $req['numn']; $qcodeLarge = new QcodeLarge(); $qcodeSmall = new QcodeSmall(); $rows = []; $key = 0; // 超级管理员逻辑 if (isSuperAdmin()) { $companyList = Db::name('admin') ->field('company') ->where('company', '<>', '') ->where('kes', '<>', '') ->distinct(true) ->select(); foreach ($companyList as $company) { $cid = $company['company']; $tableLarge = $cid . '_qcode_large'; $tableSmall = $cid . '_qcode_small'; $tableBach = $cid . '_qcode_bach'; try { $large = $qcodeLarge->name($tableLarge)->where('_id', $ids[0])->find(); if (empty($large)) continue; $largeArr = json_decode($large, true); $bach = $this->model->name($tableBach)->where('_id', $largeArr['bach_id'])->find(); $bachArr = json_decode($bach, true); $company_name = $bachArr['supplier_name']; $product_name = $bachArr['matter_name']; foreach ($ids as $value) { $large = $qcodeLarge->name($tableLarge)->where('_id', $value)->find(); $large = json_decode($large, true); $arr = $qcodeSmall->name($tableSmall)->where('large_id', $value)->column('_id'); foreach ($arr as $v) { $oid = is_object($v) ? $v->jsonSerialize()['$oid'] : $v; $small = $qcodeSmall->name($tableSmall)->where('_id', $oid)->find(); $small = json_decode($small, true); $code = $small['code']; $rows[$key] = [ 'company_name' => $company_name, 'product_name' => $product_name, 'date' => substr_replace(substr_replace('20' . substr($code, 38, 6), '-', 4, 0), '-', 7, 0), 'l_flow' => ltrim(substr($large['code'], 53, 6), '0') . '-' . $small['l_flow'], 'qrcode' => $code, // 'pCode' => $this->qrcode($code), // 如需启用二维码图像,取消注释 'batch' => (substr($code, 76, 10) == '0000000000') ? ltrim(substr($code, 66, 10), '0') : ltrim(substr($code, 66, 10), '0') . '、' . ltrim(substr($code, 76, 10), '0'), ]; $key++; } } break; // 找到数据即跳出公司循环 } catch (\Exception $e) { continue; } } } else { // 普通管理员逻辑 $userInfo = Session::get('admin'); $company_id = (int)$userInfo['company']; $tableLarge = $company_id . '_qcode_large'; $tableSmall = $company_id . '_qcode_small'; $tableBach = $company_id . '_qcode_bach'; $large = $qcodeLarge->name($tableLarge)->where('_id', $ids[0])->find(); $bach = $this->model->name($tableBach)->where('_id', json_decode($large, true)['bach_id'])->find(); $company_name = json_decode($bach, true)['supplier_name']; $product_name = json_decode($bach, true)['matter_name']; foreach ($ids as $value) { $large = $qcodeLarge->name($tableLarge)->where('_id', $value)->find(); $large = json_decode($large, true); $arr = $qcodeSmall->name($tableSmall)->where('large_id', $value)->column('_id'); foreach ($arr as $v) { $oid = is_object($v) ? $v->jsonSerialize()['$oid'] : $v; $small = $qcodeSmall->name($tableSmall)->where('_id', $oid)->find(); $small = json_decode($small, true); $code = $small['code']; $rows[$key] = [ 'company_name' => $company_name, 'product_name' => $product_name, 'date' => substr_replace(substr_replace('20' . substr($code, 38, 6), '-', 4, 0), '-', 7, 0), 'l_flow' => ltrim(substr($large['code'], 53, 6), '0') . '-' . $small['l_flow'], 'qrcode' => $code, // 'pCode' => $this->qrcode($code), 'batch' => (substr($code, 76, 10) == '0000000000') ? ltrim(substr($code, 66, 10), '0') : ltrim(substr($code, 66, 10), '0') . '、' . ltrim(substr($code, 76, 10), '0'), ]; $key++; } } } $data = [ 'type' => $type, 'numn' => $numn, 'rows' => $rows, 'ids' => $ids, ]; $this->success('成功', '', $data); } /** * 手动打码(小件) */ public function print_ls() { // 设置过滤方法 $this->request->filter(['strip_tags', 'trim']); $req = $this->request->param(); if (!$this->request->isAjax()) { $this->view->assign('ids', $req['ids']); return $this->view->fetch(); } $ids = $req['ids']; $type = $req['type']; $numn = $req['numn']; $qcodeLarge = new QcodeLarge(); $qcodeSmall = new QcodeSmall(); $rows = []; // 超级管理员逻辑 if (isSuperAdmin()) { $companyList = Db::name('admin') ->field('company') ->where('company', '<>', '') ->where('kes', '<>', '') ->distinct(true) ->select(); foreach ($companyList as $company) { $cid = $company['company']; $tableSmall = $cid . '_qcode_small'; $tableLarge = $cid . '_qcode_large'; $tableBach = $cid . '_qcode_bach'; try { $small = $qcodeSmall->name($tableSmall)->where('_id', $ids)->find(); if (empty($small)) continue; $small = json_decode($small, true); $large = $qcodeLarge->name($tableLarge)->where('_id', $small['large_id'])->find(); $large = json_decode($large, true); $bach = $this->model->name($tableBach)->where('_id', $small['bach_id'])->find(); $bach = json_decode($bach, true); $code = $small['code']; $rows[0] = [ 'company_name' => $bach['supplier_name'], 'product_name' => $bach['matter_name'], 'date' => substr_replace(substr_replace('20' . substr($code, 38, 6), '-', 4, 0), '-', 7, 0), 'l_flow' => ltrim(substr($large['code'], 53, 6), '0') . '-' . $small['l_flow'], 'qrcode' => $code, // 'pCode' => $this->qrcode($code), 'batch' => (substr($code, 76, 10) == '0000000000') ? ltrim(substr($code, 66, 10), '0') : ltrim(substr($code, 66, 10), '0') . '、' . ltrim(substr($code, 76, 10), '0'), ]; break; // 查到就退出循环 } catch (\Exception $e) { continue; } } } else { // 普通管理员逻辑 $userInfo = Session::get('admin'); $company_id = (int)$userInfo['company']; $tableSmall = $company_id . '_qcode_small'; $tableLarge = $company_id . '_qcode_large'; $tableBach = $company_id . '_qcode_bach'; $small = $qcodeSmall->name($tableSmall)->where('_id', $ids)->find(); $small = json_decode($small, true); $large = $qcodeLarge->name($tableLarge)->where('_id', $small['large_id'])->find(); $large = json_decode($large, true); $bach = $this->model->name($tableBach)->where('_id', $small['bach_id'])->find(); $bach = json_decode($bach, true); $code = $small['code']; $rows[0] = [ 'company_name' => $bach['supplier_name'], 'product_name' => $bach['matter_name'], 'date' => substr_replace(substr_replace('20' . substr($code, 38, 6), '-', 4, 0), '-', 7, 0), 'l_flow' => ltrim(substr($large['code'], 53, 6), '0') . '-' . $small['l_flow'], 'qrcode' => $code, // 'pCode' => $this->qrcode($code), 'batch' => (substr($code, 76, 10) == '0000000000') ? ltrim(substr($code, 66, 10), '0') : ltrim(substr($code, 66, 10), '0') . '、' . ltrim(substr($code, 76, 10), '0'), ]; } $data = [ 'type' => $type, 'numn' => $numn, 'rows' => $rows, 'ids' => $ids, ]; $this->success('成功', '', $data); } /** * 打印数量设置 */ public function set_num() { $req = $this->request->param(); //获取数据 $status = $req['status']; $num = (int)$req['num']; $ids = $req['ids']; //获取company_id $userInfo = Session::get('admin'); $company_id = (int)$userInfo['company']; //自动打印大件 if($status==1){ $qcodeLarge = new QcodeLarge(); foreach ($ids as $v){ $qcodeLarge->name($company_id.'_'."qcode_large")->where('_id',$v)->setInc('p_nums',$num); $qcodeLarge->name($company_id.'_'."qcode_large")->where('_id',$v)->setField('l_print','1'); } }elseif($status==2){ $qcodeSmall = new QcodeSmall(); foreach ($ids as $v){ $qcodeSmall->name($company_id.'_'."qcode_small")->where('large_id',$v)->setInc('p_nums',$num); } }elseif($status==3){ $qcodeSmall = new QcodeSmall(); $qcodeSmall->name($company_id.'_'."qcode_small")->where('_id',$ids)->setInc('p_nums',$num); } } /** * 导出excel跳转 */ public function exp() { //获取产品配置菜单id $bool = db('auth_rule')->field('id')->where('title','发货管理')->find(); if ($bool){ $this->success('成功','',$bool); }else{ $this->error('未获取到菜单','',$bool); } } /** * 修改大件重量数量 */ public function edit($ids = NULL) { $req = $this->request->param(); if ($this->request->isAjax()){ parse_str($req['data'],$req); if(!isset($req['row']['type']) || empty($req['row']['type'])){ $this->error('请选择修改类型'); } if(!isset($req['row']['numn']) || empty($req['row']['numn'])){ $this->error('请填写修改数量'); } $ids = explode(',',$req['row']['ids']); $data = [ 'update_time'=>time(), 'sync_flag'=>0 ]; $userInfo = Session::get('admin'); $company_id = (int)$userInfo['company']; $qcodeLarge = new QcodeLarge(); if($req['row']['type']==1){//修改大件重量 $data['l_weight'] = intval($req['row']['numn']*100); foreach($ids as $val){ //查询code $large = $qcodeLarge->name($company_id.'_'."qcode_large")->field('code')->where('_id',$val)->find(); $code = json_decode($large,true)['code']; if($code){ $code1 = substr($code,0,59); $code2 = substr($code,65,85); $data['code'] = $code1.str_pad(intval($req['row']['numn'])*100,6, '0', STR_PAD_LEFT).$code2; //修改code和大件重量 $qcodeLarge->name($company_id.'_'."qcode_large")->where('_id',$val)->update($data); } } $this->success('修改成功'); } if($req['row']['type']==2){//修改大件总张数 $data['l_num'] = intval($req['row']['numn']); foreach($ids as $val){ //查询l_num, 判断是否可以修改总张数 $large = $qcodeLarge->name($company_id.'_'."qcode_large")->field('l_num')->where('_id',$val)->find(); $l_num = json_decode($large,true)['l_num']; if($l_num > 0 || $l_num==null){ //可以修改 $qcodeLarge->name($company_id.'_'."qcode_large")->where('_id',$val)->update($data); }else{ $this->error('该产品不能修改大件数量'); } } $this->success('修改成功'); } } $this->view->assign('ids',$req['ids']); return $this->view->fetch(); } /** * 删除批次 */ public function del($ids = NULL) { $userInfo = Session::get('admin'); $company_id = (int)$userInfo['company']; $qcodeLarge = new QcodeLarge(); $qcodeSmall = new QcodeSmall(); $data = [ 'delete_time'=>time(), ]; $bool1 = $this->model->name($company_id.'_'."qcode_bach")->where('_id',$ids)->update($data); $bool2 = $qcodeLarge->name($company_id.'_'."qcode_large")->where('bach_id',$ids)->update($data); $bool3 = $qcodeSmall->name($company_id.'_'."qcode_small")->where('bach_id',$ids)->update($data); if($bool1!==false && $bool2!==false && $bool3!==false){ $this->success('删除成功'); }else{ $this->error('删除失败'); } } /** * 补打标签 */ public function reprint() { if ($this->request->isAjax()) { $data = $this->request->param(); parse_str($data['data'],$req); if(!isset($req['row']['nickname']) || empty($req['row']['nickname'])){ $this->error('请填写公司名称'); } if((!isset($req['row']['product_name']) || empty($req['row']['product_name'])) && (!isset($req['row']['product_code']) || empty($req['row']['product_code']))){ $this->error('请填写辅料名称或辅料编号'); } if(!isset($req['row']['sqrcd']) || empty($req['row']['sqrcd'])){ $this->error('请填写配盘数'); } if(!isset($req['row']['num']) || empty($req['row']['num'])){ $this->error('请填写数量'); } //查询公司信息 $qcodeGsmc = new QcodeGsmc(); $print_code = $qcodeGsmc ->field('id, nickname, print_code') ->where('nickname',$req['row']['nickname']) ->find(); if (!$print_code) $this->error('未查到公司信息'); $print_code = json_decode($print_code,true); //查询产品信息 $qcodeProduct = new QcodeProduct(); if(!empty($req['row']['product_code'])){ $sel = $qcodeProduct ->field('id, product_name, product_code, temple') ->where('product_code',$req['row']['product_code']) ->find(); }else{ $sel = $qcodeProduct ->field('id, product_name, product_code, temple') ->where('product_name',$req['row']['product_name']) ->find(); } if (!$sel) $this->error('未查到辅料信息'); $sel = json_decode($sel,true); $data = [ 'company_name'=>$req['row']['nickname'], 'product_name'=>$sel['product_name'], 'sqrcd'=>$req['row']['sqrcd'], 'num'=>$req['row']['num'], 'main_unit'=>'盘', 'sec_unit'=>'万米', 'date'=>date('Y-m-d'), 'batch'=>substr(date('Ymd'),2,6), 'l_flow'=>1, ]; $num = str_pad($req['row']['num'], 3, '0', STR_PAD_LEFT); $qrcode = 'AB'.'92'.$sel['temple'].'0'.$print_code['print_code'].('000'.$sel['product_code']).$data['batch'].$num.$data['batch'].'000001'.'000000'.'2'.'0000'.$data['batch'].'0000000000'; $data['pCode'] = $this->qrcode($qrcode); $data['qrcode'] = $qrcode; $this->success('成功','',$data); } return $this->view->fetch(); } /** * 公司名称搜索 */ public function sel_n() { $name = $this->request->param()['q_word'][0]; $where = [ 'nickname'=>new \MongoDB\BSON\Regex($name), 'delete_time'=>'', ]; $qcodeGsmc = new QcodeGsmc(); $sel = $qcodeGsmc ->field('nickname') ->where($where) ->limit(0,10) ->select(); return json(['list' => $sel, 'total' => count($sel)]); } /** * 辅料名称搜索 */ public function sel_p() { $name = $this->request->param()['q_word'][0]; $where = [ 'product_name'=>new \MongoDB\BSON\Regex($name), 'delete_time'=>'', ]; $qcodeProduct = new QcodeProduct(); $sel = $qcodeProduct ->field('product_name, product_code') ->where($where) ->limit(0,10) ->select(); foreach ($sel as $k=>$v) { $oid = $v['_id']->jsonSerialize(); $sel[$k]['id'] = $oid['$oid']; } return json(['list' => $sel, 'total' => count($sel)]); } /** * 辅料编码搜索 */ public function sel_c() { $name = $this->request->param()['q_word'][0]; $where = [ 'product_code'=>new \MongoDB\BSON\Regex($name), 'delete_time'=>'', ]; $qcodeProduct = new QcodeProduct(); $sel = $qcodeProduct ->field('id, product_name, product_code') ->where($where) ->limit(0,10) ->select(); foreach ($sel as $k=>$v) { $oid = $v['_id']->jsonSerialize(); $sel[$k]['id'] = $oid['$oid']; } return json(['list' => $sel, 'total' => count($sel)]); } /** * 二维码生成类 */ public function qrcode($url)//二维码生成类 { $url=$url; $level=3; $size=6; Vendor('phpqrcode.phpqrcode');//加载生成二维码的核心类 $errorCorrectionLevel =intval($level) ;//容错级别 $matrixPointSize = intval($size);//生成图片大小 //生成二维码图片 $object = new \QRcode(); //打开缓冲区 ob_start(); $object->png($url, false, $errorCorrectionLevel, $matrixPointSize, 2); //这里就是把生成的图片流从缓冲区保存到内存对象上,使用base64_encode变成编码字符串,通过json返回给页面。 $imageString = base64_encode(ob_get_contents()); //关闭缓冲区 ob_end_clean(); //把生成的base64字符串返回给前端 // $data = array( // 'labelcode'=>$url, // 'code'=>200, // 'data'=>$imageString, // 'product_code'=>$url // ); return 'data:image/png;base64,'.$imageString; } }