From d3e58573ece6d8a1cd6ae4dacdb225a9852d2fc7 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Sun, 25 Aug 2024 17:57:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=B4=9F?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=A3=80=E6=B5=8B=E4=B8=8E=E5=BD=92=E9=9B=B6?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/WorkbenchController.php | 17 ++++++++ app/admin/logic/statistic/WarehouseLogic.php | 14 +++++++ .../logic/store_order/StoreOrderLogic.php | 41 +------------------ 3 files changed, 33 insertions(+), 39 deletions(-) diff --git a/app/admin/controller/WorkbenchController.php b/app/admin/controller/WorkbenchController.php index 450b5db9c..14026a8b2 100644 --- a/app/admin/controller/WorkbenchController.php +++ b/app/admin/controller/WorkbenchController.php @@ -316,10 +316,27 @@ class WorkbenchController extends BaseAdminController return $this->data($data); } + /** + * 负库存检测 + */ public function negative_inventory() { $parmas = $this->request->get(); $data = WarehouseLogic::negativeInventory($parmas); return $this->data($data); } + + /** + * 负库存归零 + */ + public function update_negative_zero() + { + $parmas = $this->request->get(); + $res = WarehouseLogic::updateNegativeZero($parmas); + if($res){ + return $this->data([], '操作成功'); + }else{ + return $this->data([], '操作失败', 400); + } + } } diff --git a/app/admin/logic/statistic/WarehouseLogic.php b/app/admin/logic/statistic/WarehouseLogic.php index 24d01a492..60682f5bb 100644 --- a/app/admin/logic/statistic/WarehouseLogic.php +++ b/app/admin/logic/statistic/WarehouseLogic.php @@ -217,5 +217,19 @@ class WarehouseLogic extends BaseLogic $count = WarehouseProductStorege::where('nums', '<', 0)->count(); } return ['lists' => $list, 'count' => $count]; + } + /** + * 负库存更新归0 + */ + public static function updateNegativeZero($parmas) + { + if ($parmas['type'] == 1) { + $res = StoreProduct::where('id',$parmas['id'])->update(['stock'=>0]); + } elseif ($parmas['type'] == 2) { + $res=StoreBranchProduct::where('id',$parmas['id'])->update(['stock'=>0]); + } elseif ($parmas['type'] == 3) { + $res = WarehouseProductStorege::where('id',$parmas['id'])->update(['nums'=>0]); + } + return $res; } } diff --git a/app/admin/logic/store_order/StoreOrderLogic.php b/app/admin/logic/store_order/StoreOrderLogic.php index b7acc4900..a46665fe7 100644 --- a/app/admin/logic/store_order/StoreOrderLogic.php +++ b/app/admin/logic/store_order/StoreOrderLogic.php @@ -51,45 +51,8 @@ class StoreOrderLogic extends BaseLogic $params['shipping_type']=2; $params['pay_type'] = 7; $order = OrderLogic::createOrder($cartId, null, $user, $params); - if (OrderLogic::hasError()) { - StoreOrderLogic::setError(OrderLogic::getError()); - return false; - } else { - $arr = [ - 'warehouse_id' => $params['warehouse_id']??-1, - 'store_id' => $params['store_id'], - 'supplier_id' => 0, - 'code' => getNewOrderId('PS'), - 'admin_id' => $params['admin_id'], - 'financial_pm' => 0, - 'batch' => 0, - 'mark' => $mark ?? "", - ]; - $arr['delivery_time'] = time(); - $res = WarehouseOrder::create($arr); - foreach ($params['product_arr'] as $k => $v) { - $data = [ - 'warehouse_id' => $params['warehouse_id']??-1, - 'product_id' => $v['product_id'], - 'store_id' => $params['store_id'], - 'financial_pm' => 0, - 'batch' => 1, - 'nums' => $v['stock'], - 'status' => 1, - 'admin_id' => $params['admin_id'], - ]; - $storeProduct = StoreBranchProduct::where('id', $v['id'])->findOrEmpty()->toArray(); - if ($v['stock']>0) { - $data['total_price'] = bcmul($v['stock'], $storeProduct['purchase'], 2); - $data['purchase'] = $storeProduct['purchase']; - $data['oid'] = $res['id']; - WarehouseProductLogic::add($data,0); - $finds = WarehouseProduct::where('oid', $res['id'])->field('sum(nums) as nums,sum(total_price) as total_price')->find(); - WarehouseOrder::where('id', $res['id'])->update(['total_price' => $finds['total_price'], 'nums' => $finds['nums']]); - } - } - return true; - } + return true; + } From 19394d41470986fa235f2d070475c0f0b4403a1f Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Sun, 25 Aug 2024 21:40:09 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E4=BA=86?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=BA=93=E5=AD=98=E5=92=8C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=A4=84=E7=90=86=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/ExceptionHandler.php | 3 + .../store_product/StoreProductController.php | 16 +++++ .../WarehouseProductController.php | 49 +++++++-------- .../WarehouseProductLists.php | 2 +- .../WarehouseProductLogic.php | 63 ++++++++++++------- 5 files changed, 84 insertions(+), 49 deletions(-) diff --git a/app/ExceptionHandler.php b/app/ExceptionHandler.php index 179dd0a7f..483b9d6bb 100644 --- a/app/ExceptionHandler.php +++ b/app/ExceptionHandler.php @@ -21,6 +21,9 @@ class ExceptionHandler extends Handler if ($exception instanceof Dumper) { return \response(self::convertToHtml($exception)); }elseif ($exception instanceof BusinessException) { + if ($request->expectsJson()) { + return json(['code' => 0, 'msg' => $exception->getMessage(),'show'=>1]); + } return response($exception->getMessage()); } elseif ($exception instanceof \Exception) { $isDebug = config('app.debug'); diff --git a/app/admin/controller/store_product/StoreProductController.php b/app/admin/controller/store_product/StoreProductController.php index 99970956e..f39f949c7 100644 --- a/app/admin/controller/store_product/StoreProductController.php +++ b/app/admin/controller/store_product/StoreProductController.php @@ -95,6 +95,22 @@ class StoreProductController extends BaseAdminController return $this->data($result); } + /** + * @notes 复制商品 + * @return \think\response\Json + * @author likeadmin + * @date 2024/05/31 10:53 + */ + public function copy() + { + $params = $this->request->post(); + $find = StoreProduct::where('id', $params['product_id'])->findOrEmpty()->toArray(); + foreach ($params['store_arr'] as $key => $store_id) { + StoreProductLogic::ordinary($find, $store_id, $this->adminId, $find); + } + return $this->success('复制成功', [], 1, 1); + } + /** * 商品导入到门店 */ diff --git a/app/admin/controller/warehouse_product/WarehouseProductController.php b/app/admin/controller/warehouse_product/WarehouseProductController.php index 27850ca8d..e723cf2a9 100644 --- a/app/admin/controller/warehouse_product/WarehouseProductController.php +++ b/app/admin/controller/warehouse_product/WarehouseProductController.php @@ -42,29 +42,29 @@ class WarehouseProductController extends BaseAdminController $params = $this->request->post(); - foreach($params['product_arr'] as $k=>$v){ - $data['admin_id']=$this->adminId; - $data['store_id']=0; - $data['supplier_id']=$params['supplier_id']; - $data['warehouse_id']=$params['warehouse_id']; - $data['code']=$params['code']; - $data['product_id']=$v['product_id']; - $data['nums']=$v['nums']; - $data['purchase']=$v['purchase']; - $data['total_price']=$v['total_price']; - $data['financial_pm']=1; - if(!empty($v['manufacture'])){ - $data['manufacture']=$v['manufacture']; + foreach ($params['product_arr'] as $k => $v) { + $data['admin_id'] = $this->adminId; + $data['store_id'] = 0; + $data['supplier_id'] = $params['supplier_id']; + $data['warehouse_id'] = $params['warehouse_id']; + $data['code'] = $params['code']; + $data['product_id'] = $v['product_id']; + $data['nums'] = $v['nums']; + $data['purchase'] = $v['purchase']; + $data['total_price'] = $v['total_price']; + $data['financial_pm'] = 1; + if (!empty($v['manufacture'])) { + $data['manufacture'] = $v['manufacture']; } - if(!empty($v['expiration_date'])){ - $data['expiration_date']=$v['expiration_date']; + if (!empty($v['expiration_date'])) { + $data['expiration_date'] = $v['expiration_date']; } WarehouseProductLogic::add($data); } if (WarehouseProductLogic::hasError()) { return $this->fail(WarehouseProductLogic::getError()); - }else{ + } else { return $this->success('添加成功', [], 1, 1); } } @@ -78,14 +78,10 @@ class WarehouseProductController extends BaseAdminController */ public function edit() { - $params = (new WarehouseProductValidate())->post()->goCheck('edit'); - $params['admin_id']=$this->adminId; + $params = $this->request->post(); + $params['admin_id'] = $this->adminId; $result = WarehouseProductLogic::edit($params); - if (WarehouseProductLogic::hasError()) { - return $this->fail(WarehouseProductLogic::getError()); - }else{ - return $this->success('编辑成功', [], 1, 1); - } + return $this->success('编辑成功', [], 1, 1); } @@ -101,7 +97,7 @@ class WarehouseProductController extends BaseAdminController WarehouseProductLogic::delete($params); if (WarehouseProductLogic::hasError()) { return $this->fail(WarehouseProductLogic::getError()); - }else{ + } else { return $this->success('删除成功', [], 1, 1); } } @@ -123,7 +119,8 @@ class WarehouseProductController extends BaseAdminController /** * 确认操作 */ - public function enter(){ + public function enter() + { // $id=$this->request->post('id'); // $result = WarehouseProductLogic::enter($id); // if (true === $result) { @@ -132,4 +129,4 @@ class WarehouseProductController extends BaseAdminController // return $this->fail(WarehouseProductLogic::getError()); return $this->success(''); } -} \ No newline at end of file +} diff --git a/app/admin/lists/warehouse_product/WarehouseProductLists.php b/app/admin/lists/warehouse_product/WarehouseProductLists.php index a301f6634..419199631 100644 --- a/app/admin/lists/warehouse_product/WarehouseProductLists.php +++ b/app/admin/lists/warehouse_product/WarehouseProductLists.php @@ -71,7 +71,7 @@ class WarehouseProductLists extends BaseAdminDataLists implements ListsSearchInt } } return WarehouseProduct::where($this->searchWhere) - ->field(['id', 'admin_id','supplier_id', 'store_id', 'warehouse_id', 'product_id', 'financial_pm', 'batch', 'nums', 'price', 'purchase', 'cost', 'total_price', 'manufacture', 'expiration_date', 'status', 'mark', 'create_time']) + ->field(['id', 'oid','admin_id','supplier_id', 'store_id', 'warehouse_id', 'product_id', 'financial_pm', 'batch', 'nums', 'price', 'purchase', 'cost', 'total_price', 'manufacture', 'expiration_date', 'status', 'mark', 'create_time']) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select()->each(function ($item) { diff --git a/app/admin/logic/warehouse_product/WarehouseProductLogic.php b/app/admin/logic/warehouse_product/WarehouseProductLogic.php index acd1741db..dc84e99bc 100644 --- a/app/admin/logic/warehouse_product/WarehouseProductLogic.php +++ b/app/admin/logic/warehouse_product/WarehouseProductLogic.php @@ -122,7 +122,6 @@ class WarehouseProductLogic extends BaseLogic // Db::commit(); return $res; } catch (\Throwable $e) { - d($e); throw new BusinessException($e->getMessage()); // Db::rollback(); // Log::error($e->getMessage().',file:'.$e->getFile().',line:'.$e->getLine()); @@ -141,34 +140,54 @@ class WarehouseProductLogic extends BaseLogic */ public static function edit(array $params): bool { + Db::startTrans(); try { - $data = [ - 'warehouse_id' => $params['warehouse_id'], - 'product_id' => $params['product_id'], - 'financial_pm' => $params['financial_pm'], - 'nums' => $params['nums'], - // 'price' => $params['price'], - 'admin_id' => $params['admin_id'], - 'total_price' => $params['total_price'], - 'code' => $params['code'], - 'purchase' => $params['purchase'] ?? '', - // 'cost' => $params['cost'] ?? '', - ]; - if (isset($params['manufacture']) && $params['manufacture'] != '') { - $data['manufacture'] = strtotime($params['manufacture']); - } - if (isset($params['expiration_date']) && $params['expiration_date'] != '') { - $data['expiration_date'] = strtotime($params['expiration_date']); - } - $res = WarehouseProduct::where('id', $params['id'])->update($data); + $before_nums = 0; + $after_nums = 0; + $find=WarehouseOrder::where('id',$params['oid'])->find(); + if($find){ + $res = WarehouseProduct::where('id', $params['id'])->find(); + if($find['financial_pm']==1){ + WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->dec('nums',$res['nums'])->update(); + StoreBranchProduct::where('store_id',$res['store_id'])->where('product_id',$res['product_id'])->dec('stock',$res['nums'])->update(); + + $warehouseProductStorege=WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->find(); + WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->inc('nums',$params['nums'])->update(); + StoreBranchProduct::where('store_id',$res['store_id'])->where('product_id',$res['product_id'])->inc('stock',$params['nums'])->update(); + $before_nums=$warehouseProductStorege['nums']; + $after_nums=$warehouseProductStorege['nums']+$params['nums']; + }else{ + WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->inc('nums',$res['nums'])->update(); + StoreBranchProduct::where('store_id',$res['store_id'])->where('product_id',$res['product_id'])->dec('stock',$res['nums'])->update(); + + $warehouseProductStorege=WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->find(); + WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->dec('nums',$params['nums'])->update(); + StoreBranchProduct::where('store_id',$res['store_id'])->where('product_id',$res['product_id'])->inc('stock',$params['nums'])->update(); + $before_nums=$warehouseProductStorege['nums']; + $after_nums=bcsub($warehouseProductStorege['nums'],$params['nums'],2); + } + WarehouseProduct::where('id', $params['id'])->update([ + 'nums' => $params['nums'], + 'purchase' => $params['purchase'], + 'before_nums' => $before_nums, + 'after_nums' => $after_nums, + 'total_price' => $params['nums'] * $params['purchase'], + ]); + $finds = WarehouseProduct::where('oid', $params['oid'])->field('sum(nums) as nums,sum(total_price) as total_price')->find(); + if ($finds) { + WarehouseOrder::where('id', $params['oid'])->update([ + 'nums' => $finds['nums'], + 'total_price' => $finds['total_price'] + ]); + } + } Db::commit(); return $res; } catch (\Exception $e) { Db::rollback(); - self::setError($e->getMessage()); - return false; + throw new BusinessException($e->getMessage()); } }