|
@@ -10,11 +10,10 @@ use app\admin\model\QcodeSmall;
|
|
|
use app\common\controller\Backend;
|
|
use app\common\controller\Backend;
|
|
|
use \think\Session;
|
|
use \think\Session;
|
|
|
use think\Db;
|
|
use think\Db;
|
|
|
|
|
+use MongoDB\BSON\ObjectId;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- *
|
|
|
|
|
- *
|
|
|
|
|
- * @icon fa fa-circle-o
|
|
|
|
|
|
|
+ * 批次列表
|
|
|
*/
|
|
*/
|
|
|
class QcodeBach extends Backend
|
|
class QcodeBach extends Backend
|
|
|
{
|
|
{
|
|
@@ -32,13 +31,12 @@ class QcodeBach extends Backend
|
|
|
$this->model = new \app\admin\model\QcodeBach();
|
|
$this->model = new \app\admin\model\QcodeBach();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
/**
|
|
/**
|
|
|
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
|
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
|
|
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
|
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
|
|
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
|
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
|
|
*/
|
|
*/
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 查看
|
|
* 查看
|
|
|
*/
|
|
*/
|
|
@@ -56,120 +54,179 @@ class QcodeBach extends Backend
|
|
|
*/
|
|
*/
|
|
|
public function bach()
|
|
public function bach()
|
|
|
{
|
|
{
|
|
|
- //当前是否为关联查询
|
|
|
|
|
$this->relationSearch = false;
|
|
$this->relationSearch = false;
|
|
|
- //设置过滤方法
|
|
|
|
|
$this->request->filter(['strip_tags', 'trim']);
|
|
$this->request->filter(['strip_tags', 'trim']);
|
|
|
|
|
+
|
|
|
if ($this->request->isAjax()) {
|
|
if ($this->request->isAjax()) {
|
|
|
- //如果发送的来源是Selectpage,则转发到Selectpage
|
|
|
|
|
|
|
+ // 如果是 Selectpage 请求则跳转
|
|
|
if ($this->request->request('keyField')) {
|
|
if ($this->request->request('keyField')) {
|
|
|
return $this->selectpage();
|
|
return $this->selectpage();
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
$userInfo = Session::get('admin');
|
|
$userInfo = Session::get('admin');
|
|
|
$company_id = (int)$userInfo['company'];
|
|
$company_id = (int)$userInfo['company'];
|
|
|
- $where = [
|
|
|
|
|
- 'delete_time'=> ''
|
|
|
|
|
- ];
|
|
|
|
|
|
|
|
|
|
- $req = input();
|
|
|
|
|
- $req['sort'] == 'id' ? $sort = '_id' : $sort = $req['sort'];
|
|
|
|
|
- $order = $req['order'];
|
|
|
|
|
- $offset = $req['offset'];
|
|
|
|
|
- $limit = $req['limit'];
|
|
|
|
|
|
|
+ // 默认条件:未删除
|
|
|
|
|
+ $where = ['delete_time' => ''];
|
|
|
|
|
|
|
|
- // 构造模糊查询条件
|
|
|
|
|
-// $regex = new MongoDB\BSON\Regex('.*abc.*', 'i');
|
|
|
|
|
-// $filter = ['field' => $regex];
|
|
|
|
|
|
|
+ // 获取前端传参
|
|
|
|
|
+ $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);
|
|
$filter = json_decode($req['filter'], true);
|
|
|
- foreach ($filter as $k => $v){
|
|
|
|
|
- $where[$k] = new \MongoDB\BSON\Regex($v);
|
|
|
|
|
|
|
+ if (is_array($filter)) {
|
|
|
|
|
+ foreach ($filter as $k => $v) {
|
|
|
|
|
+ $where[$k] = new \MongoDB\BSON\Regex($v);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- $total = $this->model->name($company_id.'_'."qcode_bach")->where($where)->count();
|
|
|
|
|
- $list = $this->model->name($company_id.'_'."qcode_bach")->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 = [];
|
|
|
|
|
+
|
|
|
|
|
+ // 超级管理员:查询所有公司
|
|
|
|
|
+ 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);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- $result = array("total" => $total, "rows" => $list);
|
|
|
|
|
|
|
+ // 全局排序(按 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($result);
|
|
|
|
|
|
|
+ return json(["total" => $total, "rows" => $list]);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
return $this->view->fetch();
|
|
return $this->view->fetch();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 大件列表
|
|
|
|
|
+ */
|
|
|
/**
|
|
/**
|
|
|
* 大件列表
|
|
* 大件列表
|
|
|
*/
|
|
*/
|
|
|
public function large()
|
|
public function large()
|
|
|
{
|
|
{
|
|
|
- //当前是否为关联查询
|
|
|
|
|
$this->relationSearch = false;
|
|
$this->relationSearch = false;
|
|
|
- //设置过滤方法
|
|
|
|
|
$this->request->filter(['strip_tags', 'trim']);
|
|
$this->request->filter(['strip_tags', 'trim']);
|
|
|
|
|
+
|
|
|
if ($this->request->isAjax()) {
|
|
if ($this->request->isAjax()) {
|
|
|
- //如果发送的来源是Selectpage,则转发到Selectpage
|
|
|
|
|
if ($this->request->request('keyField')) {
|
|
if ($this->request->request('keyField')) {
|
|
|
return $this->selectpage();
|
|
return $this->selectpage();
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
$userInfo = Session::get('admin');
|
|
$userInfo = Session::get('admin');
|
|
|
$company_id = (int)$userInfo['company'];
|
|
$company_id = (int)$userInfo['company'];
|
|
|
- $where = [
|
|
|
|
|
-// 'company_id'=>(int)$userInfo['company'],
|
|
|
|
|
- 'delete_time'=> ''
|
|
|
|
|
- ];
|
|
|
|
|
|
|
|
|
|
|
|
+ $where = ['delete_time' => ''];
|
|
|
$req = input();
|
|
$req = input();
|
|
|
- if($req['filter']=='{}'){
|
|
|
|
|
- $result = array("total" => 0, "rows" => []);
|
|
|
|
|
- return json($result);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ if ($req['filter'] == '{}') {
|
|
|
|
|
+ return json(["total" => 0, "rows" => []]);
|
|
|
}
|
|
}
|
|
|
- $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];
|
|
|
|
|
|
|
+ $sort = ($req['sort'] == 'id') ? '_id' : $req['sort'];
|
|
|
|
|
+ $order = $req['order'];
|
|
|
|
|
|
|
|
$filter = json_decode($req['filter'], true);
|
|
$filter = json_decode($req['filter'], true);
|
|
|
- foreach ($filter as $k => $v){
|
|
|
|
|
- $where[$k] = new \MongoDB\BSON\Regex($v);
|
|
|
|
|
|
|
+ if (is_array($filter)) {
|
|
|
|
|
+ foreach ($filter as $k => $v) {
|
|
|
|
|
+ $where[$k] = new \MongoDB\BSON\Regex($v);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ $list = [];
|
|
|
|
|
+ $total = 0;
|
|
|
$db = new QcodeLarge();
|
|
$db = new QcodeLarge();
|
|
|
- $total = $db->name($company_id.'_'."qcode_large")->where($where)->count();
|
|
|
|
|
- $list = $db->name($company_id.'_'."qcode_large")->where($where)
|
|
|
|
|
- ->order($sort,$order)
|
|
|
|
|
-// ->limit($limit)
|
|
|
|
|
-// ->skip($offset)
|
|
|
|
|
- ->select();
|
|
|
|
|
$qcodeSmall = new QcodeSmall();
|
|
$qcodeSmall = new QcodeSmall();
|
|
|
- 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');
|
|
|
|
|
- //查询小件数量
|
|
|
|
|
- $small_num = $qcodeSmall->name($company_id.'_'."qcode_small")
|
|
|
|
|
- ->where('large_id',$oid['$oid'])
|
|
|
|
|
- ->count();
|
|
|
|
|
- $list[$k]['small_num'] = $small_num;
|
|
|
|
|
- //设置当前大件重量
|
|
|
|
|
- $list[$k]['l_weight'] = floatval($v['l_weight'])/100;
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $result = array("total" => $total, "rows" => $list);
|
|
|
|
|
- return json($result);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 超级管理员查询所有公司数据
|
|
|
|
|
+ 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();
|
|
return $this->view->fetch();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -208,54 +265,217 @@ class QcodeBach extends Backend
|
|
|
$where[$k] = new \MongoDB\BSON\Regex($v);
|
|
$where[$k] = new \MongoDB\BSON\Regex($v);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ $list = [];
|
|
|
|
|
+ $total = 0;
|
|
|
|
|
+
|
|
|
$qcodeSmall = new QcodeSmall();
|
|
$qcodeSmall = new QcodeSmall();
|
|
|
- $total = $qcodeSmall->name($company_id.'_'."qcode_small")->where($where)->count();
|
|
|
|
|
- $list = $qcodeSmall->name($company_id.'_'."qcode_small")->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'];
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 超级管理员查询所有公司
|
|
|
|
|
+ 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'] = '';
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- $result = array("total" => $total, "rows" => $list);
|
|
|
|
|
|
|
+ $list = array_merge($list, $rows);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- return json($result);
|
|
|
|
|
|
|
+ // 全部公司数据合并后,统一排序
|
|
|
|
|
+ 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();
|
|
return $this->view->fetch();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
- * 小件导出状态修改
|
|
|
|
|
|
|
+ * 小件导出状态修改(支持超级管理员操作单个公司表)
|
|
|
|
|
+ * 支持处理单个ID和多个ID(逗号分隔)的情况
|
|
|
*/
|
|
*/
|
|
|
public function small_status()
|
|
public function small_status()
|
|
|
{
|
|
{
|
|
|
$req = $this->request->param();
|
|
$req = $this->request->param();
|
|
|
$ids = $req['ids'];
|
|
$ids = $req['ids'];
|
|
|
- $userInfo = Session::get('admin');
|
|
|
|
|
- $company_id = (int)$userInfo['company'];
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 统一处理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();
|
|
$qcodeSmall = new QcodeSmall();
|
|
|
|
|
+ $companyTables = Db::name('admin')
|
|
|
|
|
+ ->field('company')
|
|
|
|
|
+ ->where('company', '<>', '')
|
|
|
|
|
+ ->where('kes', '<>', '')
|
|
|
|
|
+ ->distinct(true)
|
|
|
|
|
+ ->select();
|
|
|
|
|
|
|
|
- $status = $qcodeSmall->name($company_id.'_'."qcode_small")->where('_id', $ids)->value('status');
|
|
|
|
|
|
|
+ $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 ($status === 0) {
|
|
|
|
|
- $newStatus = 1;
|
|
|
|
|
- } elseif ($status === 1) {
|
|
|
|
|
- $newStatus = 0;
|
|
|
|
|
|
|
+ if ($found) {
|
|
|
|
|
+ $message = "超级管理员批量切换完成";
|
|
|
|
|
+ if (!empty($successIds)) {
|
|
|
|
|
+ $message .= ",成功:";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!empty($failedIds)) {
|
|
|
|
|
+ $message .= ",失败:";
|
|
|
|
|
+ }
|
|
|
|
|
+ $this->success($message);
|
|
|
} else {
|
|
} else {
|
|
|
- // 处理其他情况,如果有需要
|
|
|
|
|
|
|
+ $this->error("在所有公司中未找到这些记录:" . implode(',', $ids));
|
|
|
}
|
|
}
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- $bool = $qcodeSmall->name($company_id.'_'."qcode_small")->where('_id', $req['ids'])
|
|
|
|
|
- ->update(['status' => $newStatus]);
|
|
|
|
|
- if ($bool){
|
|
|
|
|
- $this->success("切换成功", null, ['id' => $ids]);
|
|
|
|
|
- }else{
|
|
|
|
|
- $this->error("切换失败", null, ['id' => $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());
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -264,94 +484,159 @@ class QcodeBach extends Backend
|
|
|
*/
|
|
*/
|
|
|
public function print_l()
|
|
public function print_l()
|
|
|
{
|
|
{
|
|
|
- //设置过滤方法
|
|
|
|
|
$this->request->filter(['strip_tags', 'trim']);
|
|
$this->request->filter(['strip_tags', 'trim']);
|
|
|
$req = $this->request->param();
|
|
$req = $this->request->param();
|
|
|
- if ($this->request->isAjax()) {
|
|
|
|
|
|
|
|
|
|
- $ids = $req['ids'];
|
|
|
|
|
- $type = $req['type'];
|
|
|
|
|
- $numn = $req['numn'];
|
|
|
|
|
|
|
+ if (!$this->request->isAjax()) {
|
|
|
|
|
+ $this->view->assign('ids', $req['ids']);
|
|
|
|
|
+ return $this->view->fetch();
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- $userInfo = Session::get('admin');
|
|
|
|
|
- $company_id = (int)$userInfo['company'];
|
|
|
|
|
- $qcodeLarge = new QcodeLarge();
|
|
|
|
|
- $qcodeSmall = new QcodeSmall();
|
|
|
|
|
- $qcodeProduct = new QcodeProduct();
|
|
|
|
|
- $large = $qcodeLarge->name($company_id.'_'."qcode_large")->where('_id',$ids[0])->find();
|
|
|
|
|
- $bach = $this->model->name($company_id.'_'."qcode_bach")->where('_id',json_decode($large,true)['bach_id'])->find();
|
|
|
|
|
- $row = $qcodeProduct->where('product_code',json_decode($bach,true)['matter_no'])->find();
|
|
|
|
|
-
|
|
|
|
|
- $company_name = json_decode($bach,true)['supplier_name'];
|
|
|
|
|
- $product_name = json_decode($bach,true)['matter_name'];
|
|
|
|
|
-// $date = json_decode($bach,true)['manufacture_date'];
|
|
|
|
|
-// $batch = json_decode($bach,true)['bach_num'];
|
|
|
|
|
- $main_unit = json_decode($row,true)['main_unit'];
|
|
|
|
|
- $sec_unit = json_decode($row,true)['sec_unit'];
|
|
|
|
|
- $proportion = json_decode($row,true)['proportion'];
|
|
|
|
|
-
|
|
|
|
|
- $rows = [];
|
|
|
|
|
- //查询打印大件码所需数据
|
|
|
|
|
- foreach ($ids as $key=>$value){
|
|
|
|
|
- $row = $qcodeLarge->name($company_id.'_'."qcode_large")->where('_id',$value)->find();
|
|
|
|
|
- $row = json_decode($row,true);
|
|
|
|
|
- $code = $row['code'];
|
|
|
|
|
- $rows[$key]['company_name'] = $company_name;
|
|
|
|
|
- $rows[$key]['product_name'] = $product_name;
|
|
|
|
|
- $rows[$key]['sqrcd'] = $qcodeSmall->name($company_id.'_'."qcode_small")->where('large_id',$value)->count();
|
|
|
|
|
- $rows[$key]['main_unit'] = $main_unit;
|
|
|
|
|
- $rows[$key]['sec_unit'] = $sec_unit;
|
|
|
|
|
- $rows[$key]['date'] = substr_replace(substr_replace('20'.substr($code,38,6), '-', 4, 0), '-', 7, 0);
|
|
|
|
|
- $rows[$key]['l_flow'] = ltrim(substr($code,53,6),'0');
|
|
|
|
|
- $rows[$key]['qrcode'] = $code;
|
|
|
|
|
- $rows[$key]['pCode'] = $this->qrcode($code);
|
|
|
|
|
-
|
|
|
|
|
- //批次号特殊情况判断
|
|
|
|
|
- if (substr($code,76,10)=='0000000000'){
|
|
|
|
|
- $rows[$key]['batch'] = ltrim(substr($code,66,10),'0');
|
|
|
|
|
- }else{
|
|
|
|
|
- $rows[$key]['batch'] = ltrim(substr($code,66,10),'0').'、'.ltrim(substr($code,76,10),'0');
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ $ids = $req['ids'];
|
|
|
|
|
+ $type = $req['type'];
|
|
|
|
|
+ $numn = $req['numn'];
|
|
|
|
|
|
|
|
- //转换关系判断
|
|
|
|
|
- if($row['l_num']===null){
|
|
|
|
|
- //走转换关系
|
|
|
|
|
- if ($proportion){
|
|
|
|
|
- $rows[$key]['num'] = $rows[$key]['sqrcd']*$proportion;
|
|
|
|
|
- $rows[$key]['num'] = floor($rows[$key]['num'] * 100) / 100;
|
|
|
|
|
- }else{
|
|
|
|
|
- $rows[$key]['num'] = '';
|
|
|
|
|
- }
|
|
|
|
|
- }else if($row['l_num']==0){
|
|
|
|
|
- //判断是否是公斤
|
|
|
|
|
- if($main_unit=='公斤'){
|
|
|
|
|
- //公斤使用l_weight
|
|
|
|
|
- $rows[$key]['num'] = $row['l_weight'];
|
|
|
|
|
- }else{
|
|
|
|
|
- //不是公斤走转换关系
|
|
|
|
|
- if ($proportion){
|
|
|
|
|
- $rows[$key]['num'] = $rows[$key]['sqrcd']*$proportion;
|
|
|
|
|
- $rows[$key]['num'] = floor($rows[$key]['num'] * 100) / 100;
|
|
|
|
|
- }else{
|
|
|
|
|
- $rows[$key]['num'] = '';
|
|
|
|
|
|
|
+ $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'];
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- }else{
|
|
|
|
|
- //箱, 使用l_num
|
|
|
|
|
- $rows[$key]['num'] = $row['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);
|
|
|
|
|
}
|
|
}
|
|
|
- $this->view->assign('ids',$req['ids']);
|
|
|
|
|
- return $this->view->fetch();
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 最终返回数据
|
|
|
|
|
+ $data = [
|
|
|
|
|
+ 'type' => $type,
|
|
|
|
|
+ 'numn' => $numn,
|
|
|
|
|
+ 'rows' => $rows,
|
|
|
|
|
+ 'ids' => $ids,
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ $this->success('成功', '', $data);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -359,67 +644,134 @@ class QcodeBach extends Backend
|
|
|
*/
|
|
*/
|
|
|
public function print_s()
|
|
public function print_s()
|
|
|
{
|
|
{
|
|
|
- //设置过滤方法
|
|
|
|
|
|
|
+ // 过滤请求参数
|
|
|
$this->request->filter(['strip_tags', 'trim']);
|
|
$this->request->filter(['strip_tags', 'trim']);
|
|
|
$req = $this->request->param();
|
|
$req = $this->request->param();
|
|
|
- if ($this->request->isAjax()) {
|
|
|
|
|
|
|
|
|
|
- $ids = $req['ids'];
|
|
|
|
|
- $type = $req['type'];
|
|
|
|
|
- $numn = $req['numn'];
|
|
|
|
|
|
|
+ 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');
|
|
$userInfo = Session::get('admin');
|
|
|
$company_id = (int)$userInfo['company'];
|
|
$company_id = (int)$userInfo['company'];
|
|
|
- $qcodeLarge = new QcodeLarge();
|
|
|
|
|
- $qcodeSmall = new QcodeSmall();
|
|
|
|
|
- $large = $qcodeLarge->name($company_id.'_'."qcode_large")->where('_id',$ids[0])->find();
|
|
|
|
|
- $bach = $this->model->name($company_id.'_'."qcode_bach")->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'];
|
|
|
|
|
|
|
+ $tableLarge = $company_id . '_qcode_large';
|
|
|
|
|
+ $tableSmall = $company_id . '_qcode_small';
|
|
|
|
|
+ $tableBach = $company_id . '_qcode_bach';
|
|
|
|
|
|
|
|
- //获取全部小件id
|
|
|
|
|
- $rows = [];
|
|
|
|
|
- $key = 0;
|
|
|
|
|
- foreach ($ids as $value){
|
|
|
|
|
- $large = $qcodeLarge->name($company_id.'_'."qcode_large")->where('_id',$value)->find();
|
|
|
|
|
- $large = json_decode($large,true);
|
|
|
|
|
|
|
+ $large = $qcodeLarge->name($tableLarge)->where('_id', $ids[0])->find();
|
|
|
|
|
+ $bach = $this->model->name($tableBach)->where('_id', json_decode($large, true)['bach_id'])->find();
|
|
|
|
|
|
|
|
- $arr = $qcodeSmall->name($company_id.'_'."qcode_small")->where('large_id',$value)->column('_id');
|
|
|
|
|
- //查询打印大件码所需数据
|
|
|
|
|
- foreach ($arr as $v){
|
|
|
|
|
|
|
+ $company_name = json_decode($bach, true)['supplier_name'];
|
|
|
|
|
+ $product_name = json_decode($bach, true)['matter_name'];
|
|
|
|
|
|
|
|
- $small = $qcodeSmall->name($company_id.'_'."qcode_small")->where('_id',$v->jsonSerialize()['$oid'])->find();
|
|
|
|
|
- $small = json_decode($small,true);
|
|
|
|
|
- $code = $small['code'];
|
|
|
|
|
|
|
+ foreach ($ids as $value) {
|
|
|
|
|
+ $large = $qcodeLarge->name($tableLarge)->where('_id', $value)->find();
|
|
|
|
|
+ $large = json_decode($large, true);
|
|
|
|
|
|
|
|
- $rows[$key]['company_name'] = $company_name;
|
|
|
|
|
- $rows[$key]['product_name'] = $product_name;
|
|
|
|
|
- $rows[$key]['date'] = substr_replace(substr_replace('20'.substr($code,38,6), '-', 4, 0), '-', 7, 0);
|
|
|
|
|
- $rows[$key]['l_flow'] = ltrim(substr($large['code'],53,6),'0').'-'.$small['l_flow'];
|
|
|
|
|
- $rows[$key]['qrcode'] = $code;
|
|
|
|
|
-// $rows[$key]['pCode'] = $this->qrcode($code);
|
|
|
|
|
|
|
+ $arr = $qcodeSmall->name($tableSmall)->where('large_id', $value)->column('_id');
|
|
|
|
|
|
|
|
- //批次号特殊情况判断
|
|
|
|
|
- if (substr($code,76,10)=='0000000000'){
|
|
|
|
|
- $rows[$key]['batch'] = ltrim(substr($code,66,10),'0');
|
|
|
|
|
- }else{
|
|
|
|
|
- $rows[$key]['batch'] = ltrim(substr($code,66,10),'0').'、'.ltrim(substr($code,76,10),'0');
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ 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++;
|
|
$key++;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- $data = [
|
|
|
|
|
- 'type'=>$type,
|
|
|
|
|
- 'numn'=>$numn,
|
|
|
|
|
- 'rows'=>$rows,
|
|
|
|
|
- 'ids'=>$ids,
|
|
|
|
|
- ];
|
|
|
|
|
- $this->success('成功','',$data);
|
|
|
|
|
}
|
|
}
|
|
|
- $this->view->assign('ids',$req['ids']);
|
|
|
|
|
- return $this->view->fetch();
|
|
|
|
|
|
|
+
|
|
|
|
|
+ $data = [
|
|
|
|
|
+ 'type' => $type,
|
|
|
|
|
+ 'numn' => $numn,
|
|
|
|
|
+ 'rows' => $rows,
|
|
|
|
|
+ 'ids' => $ids,
|
|
|
|
|
+ ];
|
|
|
|
|
+ $this->success('成功', '', $data);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -427,58 +779,109 @@ class QcodeBach extends Backend
|
|
|
*/
|
|
*/
|
|
|
public function print_ls()
|
|
public function print_ls()
|
|
|
{
|
|
{
|
|
|
- //设置过滤方法
|
|
|
|
|
|
|
+ // 设置过滤方法
|
|
|
$this->request->filter(['strip_tags', 'trim']);
|
|
$this->request->filter(['strip_tags', 'trim']);
|
|
|
$req = $this->request->param();
|
|
$req = $this->request->param();
|
|
|
- if ($this->request->isAjax()) {
|
|
|
|
|
|
|
|
|
|
- $ids = $req['ids'];
|
|
|
|
|
- $type = $req['type'];
|
|
|
|
|
- $numn = $req['numn'];
|
|
|
|
|
|
|
+ if (!$this->request->isAjax()) {
|
|
|
|
|
+ $this->view->assign('ids', $req['ids']);
|
|
|
|
|
+ return $this->view->fetch();
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- $userInfo = Session::get('admin');
|
|
|
|
|
- $company_id = (int)$userInfo['company'];
|
|
|
|
|
|
|
+ $ids = $req['ids'];
|
|
|
|
|
+ $type = $req['type'];
|
|
|
|
|
+ $numn = $req['numn'];
|
|
|
|
|
|
|
|
- $qcodeLarge = new QcodeLarge();
|
|
|
|
|
- $qcodeSmall = new QcodeSmall();
|
|
|
|
|
- $small = $qcodeSmall->name($company_id.'_'."qcode_small")->where('_id',$ids)->find();
|
|
|
|
|
- $small = json_decode($small,true);
|
|
|
|
|
|
|
+ $qcodeLarge = new QcodeLarge();
|
|
|
|
|
+ $qcodeSmall = new QcodeSmall();
|
|
|
|
|
|
|
|
- $large = $qcodeLarge->name($company_id.'_'."qcode_large")->where('_id',$small['large_id'])->find();
|
|
|
|
|
- $large = json_decode($large,true);
|
|
|
|
|
- $bach = $this->model->name($company_id.'_'."qcode_bach")->where('_id',$small['bach_id'])->find();
|
|
|
|
|
|
|
+ $rows = [];
|
|
|
|
|
|
|
|
- $company_name = json_decode($bach,true)['supplier_name'];
|
|
|
|
|
- $product_name = json_decode($bach,true)['matter_name'];
|
|
|
|
|
|
|
+ // 超级管理员逻辑
|
|
|
|
|
+ if (isSuperAdmin()) {
|
|
|
|
|
+ $companyList = Db::name('admin')
|
|
|
|
|
+ ->field('company')
|
|
|
|
|
+ ->where('company', '<>', '')
|
|
|
|
|
+ ->where('kes', '<>', '')
|
|
|
|
|
+ ->distinct(true)
|
|
|
|
|
+ ->select();
|
|
|
|
|
|
|
|
- //获取全部小件id
|
|
|
|
|
- $rows = [];
|
|
|
|
|
- $code = $small['code'];
|
|
|
|
|
|
|
+ foreach ($companyList as $company) {
|
|
|
|
|
+ $cid = $company['company'];
|
|
|
|
|
+ $tableSmall = $cid . '_qcode_small';
|
|
|
|
|
+ $tableLarge = $cid . '_qcode_large';
|
|
|
|
|
+ $tableBach = $cid . '_qcode_bach';
|
|
|
|
|
|
|
|
- $rows[0]['company_name'] = $company_name;
|
|
|
|
|
- $rows[0]['product_name'] = $product_name;
|
|
|
|
|
- $rows[0]['date'] = substr_replace(substr_replace('20'.substr($code,38,6), '-', 4, 0), '-', 7, 0);
|
|
|
|
|
- $rows[0]['l_flow'] = ltrim(substr($large['code'],53,6),'0').'-'.$small['l_flow'];
|
|
|
|
|
- $rows[0]['qrcode'] = $code;
|
|
|
|
|
-// $rows[0]['pCode'] = $this->qrcode($code);
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ $small = $qcodeSmall->name($tableSmall)->where('_id', $ids)->find();
|
|
|
|
|
+ if (empty($small)) continue;
|
|
|
|
|
+ $small = json_decode($small, true);
|
|
|
|
|
|
|
|
- //批次号特殊情况判断
|
|
|
|
|
- if (substr($code,76,10)=='0000000000'){
|
|
|
|
|
- $rows[0]['batch'] = ltrim(substr($code,66,10),'0');
|
|
|
|
|
- }else{
|
|
|
|
|
- $rows[0]['batch'] = ltrim(substr($code,66,10),'0').'、'.ltrim(substr($code,76,10),'0');
|
|
|
|
|
|
|
+ $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;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- $data = [
|
|
|
|
|
- 'type'=>$type,
|
|
|
|
|
- 'numn'=>$numn,
|
|
|
|
|
- 'rows'=>$rows,
|
|
|
|
|
- 'ids'=>$ids,
|
|
|
|
|
|
|
+ } 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'),
|
|
|
];
|
|
];
|
|
|
- $this->success('成功','',$data);
|
|
|
|
|
}
|
|
}
|
|
|
- $this->view->assign('ids',$req['ids']);
|
|
|
|
|
- return $this->view->fetch();
|
|
|
|
|
|
|
+
|
|
|
|
|
+ $data = [
|
|
|
|
|
+ 'type' => $type,
|
|
|
|
|
+ 'numn' => $numn,
|
|
|
|
|
+ 'rows' => $rows,
|
|
|
|
|
+ 'ids' => $ids,
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ $this->success('成功', '', $data);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|