ProductBatchProcessAreaForm.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\plugins\product_traceability\models\client;
  8. use app\models\Goods;
  9. use app\models\Order;
  10. use app\models\OrderDetail;
  11. use app\models\SaasUser;
  12. use app\models\Shop;
  13. use app\models\Store;
  14. use app\models\User;
  15. use app\plugins\food\models\FoodOrderDetail;
  16. use app\plugins\product_traceability\models\Product;
  17. use app\plugins\product_traceability\models\ProductBatch;
  18. use app\plugins\product_traceability\models\ProductBatchProcess;
  19. use app\plugins\product_traceability\models\ProductBatchProcessLog;
  20. use app\utils\Tools;
  21. use yii\base\Model;
  22. use yii\data\Pagination;
  23. use yii\helpers\Json;
  24. use yii\helpers\Json as HelpersJson;
  25. class ProductBatchProcessAreaForm extends Model
  26. {
  27. public $store_id;
  28. public $user_id;
  29. public $keyword;
  30. public $page;
  31. public $limit;
  32. public function rules()
  33. {
  34. return [
  35. [['store_id', 'user_id'], 'required'],
  36. [['keyword'], 'string'],
  37. [['page', 'limit'], 'integer'],
  38. [['page'], 'default', 'value' => 1],
  39. [['limit'], 'default', 'value' => 20],
  40. ];
  41. }
  42. public function search()
  43. {
  44. if (!$this->validate()) {
  45. return ['code' => 1, 'msg' => $this->getErrorSummary(false)[0]];
  46. }
  47. // $query =Order::find()->alias('o')
  48. // ->leftJoin(['od' => OrderDetail::tableName()], 'o.id=od.order_id')
  49. // ->leftJoin(['g' => Goods::tableName()], 'od.goods_id=g.id')
  50. // ->leftJoin(['pb' => ProductBatch::tableName()], 'pb.goods_id=g.id')
  51. // ->leftJoin(['pbp' => ProductBatchProcess::tableName()], 'pb.id=pbp.product_batch_id')
  52. // ->leftJoin(['u' => User::tableName()], 'u.id=pbp.process_user_id')
  53. // ->leftJoin(['p' => Product::tableName()], 'p.id=pb.product_id')
  54. // ->where([
  55. // 'pbp.is_delete' => 0,
  56. // 'pbp.store_id' => get_store_id(),
  57. // 'o.user_id' => $this->user_id
  58. // ])
  59. // ->groupBy('g.id')
  60. // ->orderBy('pbp.id desc')
  61. // ->select(['pbp.process_name', 'pb.batch_number', 'pb.batch_name',
  62. // 'p.product_name', 'g.name as goods_name', 'g.cover_pic', 'g.price',
  63. // 'u.nickname', 'pbp.id', 'pbp.updated_at', 'pbp.product_batch_id']);
  64. $query =ProductBatchProcess::find()->alias('pbp')
  65. ->leftJoin(['u' => User::tableName()], 'u.id=pbp.process_user_id')
  66. ->leftJoin(['pb' => ProductBatch::tableName()], 'pb.id=pbp.product_batch_id')
  67. ->leftJoin(['p' => Product::tableName()], 'p.id=pb.product_id')
  68. ->leftJoin(['g' => Goods::tableName()], 'g.id=pb.goods_id')
  69. ->where([
  70. 'pb.is_delete' => 0,
  71. 'pbp.is_delete' => 0,
  72. 'pbp.store_id' => get_store_id(),
  73. // 'pbp.process_user_id' => $this->user_id
  74. ])
  75. ->groupBy('g.id')
  76. ->orderBy('pbp.id desc')
  77. ->select(['pbp.process_name', 'pb.batch_number', 'pb.batch_name',
  78. 'p.product_name', 'g.name as goods_name', 'g.cover_pic', 'g.price',
  79. 'u.nickname', 'pbp.id', 'pbp.updated_at', 'pbp.product_batch_id']);
  80. if (!empty($this->keyword)) {
  81. $query->andWhere([
  82. 'or',
  83. ['like', 'p.product_name', $this->keyword],
  84. ['like', 'pb.batch_name', $this->keyword],
  85. ['like', 'pbp.process_name', $this->keyword]
  86. ]);
  87. }
  88. $count = $query->count();
  89. $pagination = new Pagination(['totalCount' => $count, 'page' => $this->page - 1, 'pageSize' => $this->limit]);
  90. $list = $query->limit($pagination->limit)->offset($pagination->offset)->asArray()->all();
  91. foreach ($list as $k => $v) {
  92. $list[$k]['updated_at'] = date('Y-m-d H:i:s', $v['updated_at']);
  93. }
  94. return [
  95. 'code' => 0,
  96. 'msg' => 'success',
  97. 'data' => [
  98. 'row_count' => $count,
  99. 'page_count' => $pagination->pageCount,
  100. 'list' => $list,
  101. ],
  102. ];
  103. }
  104. }