ProductBatchProcessLogSheetEditForm.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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\SaasUser;
  10. use app\models\Shop;
  11. use app\models\Store;
  12. use app\models\User;
  13. use app\plugins\food\models\FoodOrderDetail;
  14. use app\plugins\product_traceability\models\Product;
  15. use app\plugins\product_traceability\models\ProductBatch;
  16. use app\plugins\product_traceability\models\ProductBatchProcess;
  17. use app\plugins\product_traceability\models\ProductBatchProcessLog;
  18. use app\plugins\product_traceability\models\ProductBatchProcessLogSheet;
  19. use app\plugins\product_traceability\models\ProductBatchProcessSheet;
  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 ProductBatchProcessLogSheetEditForm extends Model
  26. {
  27. public $store_id;
  28. public $user_id;
  29. public $process_log_id;
  30. public $sheet_list;
  31. public function rules()
  32. {
  33. return [
  34. [['store_id', 'user_id', 'process_log_id'], 'required'],
  35. [['sheet_list'], 'safe'],
  36. ];
  37. }
  38. public function edit()
  39. {
  40. if (!$this->validate()) {
  41. return ['code' => 1, 'msg' => $this->getErrorSummary(false)[0]];
  42. }
  43. $t = \Yii::$app->db->beginTransaction();
  44. if (!$this->sheet_list) {
  45. return [
  46. 'code'=>1,
  47. 'msg'=>'请填写溯源记录'
  48. ];
  49. }
  50. $product_batch_process_log = ProductBatchProcessLog::find()->where(['id' => $this->process_log_id])->one();
  51. $product_batch_list = ProductBatchProcess::find()->alias("pbp")
  52. ->innerJoin(['pbpl' => ProductBatchProcessLog::tableName()], 'pbp.id=pbpl.product_batch_process_id')
  53. ->where([
  54. 'pbp.is_delete' => 0,
  55. 'pbp.store_id' => $this->store_id,
  56. 'pbp.product_batch_id' => $product_batch_process_log->product_batch_id,
  57. ])->orderBy("pbp.sort asc")->select(['pbpl.*', 'pbp.process_name', 'pbp.process_user_id'])->asArray()->all();
  58. $is_add = 0;
  59. foreach ($product_batch_list as $k => $v) {
  60. if($k>0){
  61. if ($v['process_user_id'] == $this->user_id && $product_batch_list[$k-1]['state'] == 1 && $v['state'] == 0 && $v['id'] == $this->process_log_id) {
  62. $is_add = 1;
  63. break;
  64. }
  65. } else {
  66. if ($v['process_user_id'] == $this->user_id && $v['state'] == 0 && $v['id'] == $this->process_log_id) {
  67. $is_add = 1;
  68. break;
  69. }
  70. }
  71. }
  72. if ($is_add==0 && $product_batch_process_log->state == 0) {
  73. return [
  74. 'code'=>1,
  75. 'msg'=>'还未到您的流程,暂时不能填写',
  76. 'msg1'=>$is_add
  77. ];
  78. }
  79. $is_exist = ProductBatchProcessLogSheet::find()->where(['process_log_id' => $this->process_log_id, 'is_delete' => 0])->one();
  80. if ($is_exist) {
  81. ProductBatchProcessLogSheet::updateAll(['is_delete' => 1], ['store_id' => $this->store_id, 'process_log_id' => $this->process_log_id]);
  82. }
  83. $sheet_list = $this->sheet_list ? json_decode($this->sheet_list, true) : [];
  84. foreach ($sheet_list as $value) {
  85. $product_batch_process_log_sheet = ProductBatchProcessLogSheet::find()->where(['process_log_id' => $this->process_log_id, 'process_sheet_id' => $value['process_sheet_id']])->one();
  86. if (!$product_batch_process_log_sheet) {
  87. $product_batch_process_log_sheet = new ProductBatchProcessLogSheet();
  88. }
  89. $product_batch_process_log_sheet->store_id = $this->store_id;
  90. $product_batch_process_log_sheet->process_log_id = $this->process_log_id;
  91. $product_batch_process_log_sheet->process_sheet_id = $value['process_sheet_id'];
  92. $product_batch_process_log_sheet->key = $value['key'];
  93. $product_batch_process_log_sheet->value = $value['value'];
  94. $product_batch_process_log_sheet->type = $value['type'];
  95. $product_batch_process_log_sheet->is_delete = 0;
  96. if (!$product_batch_process_log_sheet->save()) {
  97. $t->rollBack();
  98. return [
  99. 'code' => 1,
  100. 'msg' => $product_batch_process_log_sheet->getErrors(),
  101. ];
  102. }
  103. }
  104. $product_batch_process_log->state = 1;
  105. if (!$product_batch_process_log->save()) {
  106. $t->rollBack();
  107. return [
  108. 'code' => 1,
  109. 'msg' => '编辑失败',
  110. ];
  111. }
  112. $t->commit();
  113. return [
  114. 'code' => 0,
  115. 'msg' => '编辑成功',
  116. ];
  117. }
  118. public function del(){
  119. if (!$this->validate()) {
  120. return ['code' => 1, 'msg' => $this->getErrorSummary(false)[0]];
  121. }
  122. $t = \Yii::$app->db->beginTransaction();
  123. ProductBatchProcessLogSheet::updateAll(['is_delete' => 1], ['store_id' => $this->store_id, 'process_log_id' => $this->process_log_id]);
  124. $product_batch_process_log = ProductBatchProcessLog::find()->where(['id' => $this->process_log_id])->one();
  125. $product_batch_process_log->state = 0;
  126. if (!$product_batch_process_log->save()) {
  127. $t->rollBack();
  128. return [
  129. 'code' => 1,
  130. 'msg' => '撤销失败',
  131. ];
  132. }
  133. $t->commit();
  134. return [
  135. 'code' => 0,
  136. 'msg' => '撤销成功',
  137. ];
  138. }
  139. }