From b139ea8db401919d9b99047c92836c8dfafa03e2 Mon Sep 17 00:00:00 2001 From: "LAPTOP-7SGDREK0\\shiweijun" <411582373@qq.com> Date: Fri, 28 Feb 2025 09:59:04 +0800 Subject: [PATCH] fix:depot --- app/Service/Admin/Depot/DepotService.php | 354 ++++++++++++----------- 1 file changed, 193 insertions(+), 161 deletions(-) diff --git a/app/Service/Admin/Depot/DepotService.php b/app/Service/Admin/Depot/DepotService.php index bd2d908..85f108b 100644 --- a/app/Service/Admin/Depot/DepotService.php +++ b/app/Service/Admin/Depot/DepotService.php @@ -594,63 +594,72 @@ class DepotService extends BaseService{ public function recycle():array { - $materialId = (int)$this->request->input('material_id'); - $supplierId = (int)$this->request->input('supplier_id'); - $number = (double)$this->request->input('number'); - $saleId = (int)$this->request->input('sale_id'); - $cityId = (int)$this->request->input('city_id'); - $kitchenId = (int)$this->request->input('kitchen_id'); - $depotInfo = $this->DepotModel - ->getInfoByName('回收仓库',$kitchenId); - if (empty($depotInfo)) - throw new ErrException('未创建回收仓库'); - else - $depotId = $depotInfo->id; + Db::beginTransaction(); + try { + $materialId = (int)$this->request->input('material_id'); + $supplierId = (int)$this->request->input('supplier_id'); + $number = (double)$this->request->input('number'); + $saleId = (int)$this->request->input('sale_id'); + $cityId = (int)$this->request->input('city_id'); + $kitchenId = (int)$this->request->input('kitchen_id'); + $depotInfo = $this->DepotModel + ->getInfoByName('回收仓库',$kitchenId); + if (empty($depotInfo)) + throw new ErrException('未创建回收仓库'); + else + $depotId = $depotInfo->id; - if (RoleCode::WAREHOUSE != $this->roleId && RoleCode::SUPER_ADMIN != $this->roleId && RoleCode::ADMIN != $this->roleId) - throw new ErrException('该角色没有权限'); + if (RoleCode::WAREHOUSE != $this->roleId && RoleCode::SUPER_ADMIN != $this->roleId && RoleCode::ADMIN != $this->roleId) + throw new ErrException('该角色没有权限'); - $saleInfo = $this->DepotSaleModel - ->where('is_del',MaterialCode::IS_NO_DEL) - ->where('id',$saleId) - ->first(); + $saleInfo = $this->DepotSaleModel + ->where('is_del',MaterialCode::IS_NO_DEL) + ->where('id',$saleId) + ->first(); - $saleInfo->back_number = $saleInfo->back_number + $number; - $saleInfo->sum_price = $saleInfo->sale_price * ($saleInfo->number - $saleInfo->back_number); - if ($saleInfo->back_number > $saleInfo->number) - throw new ErrException('回收数量不能大于出库数量'); + $saleInfo->back_number = $saleInfo->back_number + $number; + $saleInfo->sum_price = $saleInfo->sale_price * ($saleInfo->number - $saleInfo->back_number); + if ($saleInfo->back_number > $saleInfo->number) + throw new ErrException('回收数量不能大于出库数量'); - $materialStock = $this->MaterialStockModel - ->where('material_id',$materialId) - ->where('depot_id',$depotId) - ->where('supplier_id',$supplierId) - ->first(); + $materialStock = $this->MaterialStockModel + ->where('material_id',$materialId) + ->where('depot_id',$depotId) + ->where('supplier_id',$supplierId) + ->first(); - $depotRecycle = new DepotRecycle(); - $depotRecycle->depot_id = $depotId; - $depotRecycle->material_id = $materialId; - $depotRecycle->supplier_id = $supplierId; - $depotRecycle->recycle_price = $saleInfo->sale_price; - $depotRecycle->number = $number; - $depotRecycle->sum_price = $saleInfo->sale_price * $number; - $depotRecycle->sale_id = $saleId; - $depotRecycle->status = MaterialCode::AUDITED; - $depotRecycle->city_id = $cityId; - $depotRecycle->kitchen_id = $kitchenId; - $depotRecycle->operator_id = $this->adminId; + $depotRecycle = new DepotRecycle(); + $depotRecycle->depot_id = $depotId; + $depotRecycle->material_id = $materialId; + $depotRecycle->supplier_id = $supplierId; + $depotRecycle->recycle_price = $saleInfo->sale_price; + $depotRecycle->number = $number; + $depotRecycle->sum_price = $saleInfo->sale_price * $number; + $depotRecycle->sale_id = $saleId; + $depotRecycle->status = MaterialCode::AUDITED; + $depotRecycle->city_id = $cityId; + $depotRecycle->kitchen_id = $kitchenId; + $depotRecycle->operator_id = $this->adminId; - if (empty($materialStock)){ - $materialStock = new MaterialStock(); - $materialStock->depot_id = $depotId; - $materialStock->material_id = $materialId; - $materialStock->supplier_id = $supplierId; - $materialStock->current_stock = $number; - $materialStock->unit_price = $depotRecycle->recycle_price; + if (empty($materialStock)){ + $materialStock = new MaterialStock(); + $materialStock->depot_id = $depotId; + $materialStock->material_id = $materialId; + $materialStock->supplier_id = $supplierId; + $materialStock->current_stock = $number; + $materialStock->unit_price = $depotRecycle->recycle_price; + } + else + $materialStock->current_stock = $materialStock->current_stock + $number; + + if (!$saleInfo->save() || !$depotRecycle->save() || !$materialStock->save()) throw new ErrException('回收发生异常'); + + DB::commit(); + } catch (ErrException $error) { + Db::rollBack(); + throw new ErrException($error->getMessage()); } - else - $materialStock->current_stock = $materialStock->current_stock + $number; - if (!$saleInfo->save() || !$depotRecycle->save() || !$materialStock->save()) throw new ErrException('回收发生异常'); return $this->return->success(); @@ -658,39 +667,46 @@ class DepotService extends BaseService{ public function recycleUpdate():array { - $id = (int)$this->request->input('id'); - $number = (double)$this->request->input('number'); + Db::beginTransaction(); + try { + $id = (int)$this->request->input('id'); + $number = (double)$this->request->input('number'); - if (RoleCode::WAREHOUSE != $this->roleId && RoleCode::SUPER_ADMIN != $this->roleId && RoleCode::ADMIN != $this->roleId) - throw new ErrException('该角色没有权限'); + if (RoleCode::WAREHOUSE != $this->roleId && RoleCode::SUPER_ADMIN != $this->roleId && RoleCode::ADMIN != $this->roleId) + throw new ErrException('该角色没有权限'); - $info = $this->DepotRecycleModel - ->where('id',$id) - ->first(); + $info = $this->DepotRecycleModel + ->where('id',$id) + ->first(); - $old_number = $info->number; - $sum_price = $info->recycle_price * $number; - $info->number = $number; - $info->sum_price = $sum_price; + $old_number = $info->number; + $sum_price = $info->recycle_price * $number; + $info->number = $number; + $info->sum_price = $sum_price; - $materialStock = $this->MaterialStockModel - ->where('material_id',$info->material_id) - ->where('depot_id',$info->depot_id) - ->where('supplier_id',$info->supplier_id) - ->first(); + $materialStock = $this->MaterialStockModel + ->where('material_id',$info->material_id) + ->where('depot_id',$info->depot_id) + ->where('supplier_id',$info->supplier_id) + ->first(); - $materialStock->current_stock = $materialStock->current_stock + $number - $old_number; + $materialStock->current_stock = $materialStock->current_stock + $number - $old_number; - $saleInfo = $this->DepotSaleModel - ->where('id',$info->sale_id) - ->first(); + $saleInfo = $this->DepotSaleModel + ->where('id',$info->sale_id) + ->first(); - $saleInfo->back_number = $saleInfo->back_number + $number - $old_number; - $saleInfo->sum_price = $saleInfo->sale_price * ($saleInfo->number - $saleInfo->back_number); - if ($saleInfo->back_number > $saleInfo->number) - throw new ErrException('回收数量不能大于出库数量'); + $saleInfo->back_number = $saleInfo->back_number + $number - $old_number; + $saleInfo->sum_price = $saleInfo->sale_price * ($saleInfo->number - $saleInfo->back_number); + if ($saleInfo->back_number > $saleInfo->number) + throw new ErrException('回收数量不能大于出库数量'); - if (!$info->save() || !$materialStock->save() || !$saleInfo->save()) throw new ErrException('商品回收数量修改失败'); + if (!$info->save() || !$materialStock->save() || !$saleInfo->save()) throw new ErrException('商品回收数量修改失败'); + DB::commit(); + } catch (ErrException $error) { + Db::rollBack(); + throw new ErrException($error->getMessage()); + } return $this->return->success(); @@ -698,39 +714,47 @@ class DepotService extends BaseService{ public function recycleDelete():array { - $id = (int)$this->request->input('id'); + Db::beginTransaction(); + try { + $id = (int)$this->request->input('id'); - if (RoleCode::WAREHOUSE != $this->roleId && RoleCode::SUPER_ADMIN != $this->roleId && RoleCode::ADMIN != $this->roleId) - throw new ErrException('该角色没有权限'); + if (RoleCode::WAREHOUSE != $this->roleId && RoleCode::SUPER_ADMIN != $this->roleId && RoleCode::ADMIN != $this->roleId) + throw new ErrException('该角色没有权限'); - $info = $this->DepotRecycleModel - ->where('id',$id) - ->first(); + $info = $this->DepotRecycleModel + ->where('id',$id) + ->first(); - if ($info->status == MaterialCode::AUDITED){ - throw new ErrException('该回收已审核通过'); + if ($info->status == MaterialCode::AUDITED){ + throw new ErrException('该回收已审核通过'); + } + + $info->is_del = MaterialCode::IS_DEL; + + $materialStock = $this->MaterialStockModel + ->where('material_id',$info->material_id) + ->where('depot_id',$info->depot_id) + ->where('supplier_id',$info->supplier_id) + ->first(); + + $materialStock->current_stock = $materialStock->current_stock - $info->number; + + $saleInfo = $this->DepotSaleModel + ->where('id',$info->sale_id) + ->first(); + + $saleInfo->back_number = $saleInfo->back_number - $info->number; + $saleInfo->sum_price = $saleInfo->sale_price * ($saleInfo->number - $saleInfo->back_number); + + if (!$info->save() || !$materialStock->save() || !$saleInfo->save()) + throw new ErrException('商品回收删除失败'); + + DB::commit(); + } catch (ErrException $error) { + Db::rollBack(); + throw new ErrException($error->getMessage()); } - $info->is_del = MaterialCode::IS_DEL; - - $materialStock = $this->MaterialStockModel - ->where('material_id',$info->material_id) - ->where('depot_id',$info->depot_id) - ->where('supplier_id',$info->supplier_id) - ->first(); - - $materialStock->current_stock = $materialStock->current_stock - $info->number; - - $saleInfo = $this->DepotSaleModel - ->where('id',$info->sale_id) - ->first(); - - $saleInfo->back_number = $saleInfo->back_number - $info->number; - $saleInfo->sum_price = $saleInfo->sale_price * ($saleInfo->number - $saleInfo->back_number); - - if (!$info->save() || !$materialStock->save() || !$saleInfo->save()) - throw new ErrException('商品回收删除失败'); - return $this->return->success(); } @@ -763,76 +787,84 @@ class DepotService extends BaseService{ public function recycleAudit():array { - $id = (int)$this->request->input('id'); - $status = (int)$this->request->input('status'); + Db::beginTransaction(); + try { + $id = (int)$this->request->input('id'); + $status = (int)$this->request->input('status'); - if (RoleCode::WAREHOUSE != $this->roleId && RoleCode::SUPER_ADMIN != $this->roleId && RoleCode::ADMIN != $this->roleId) - throw new ErrException('该角色没有权限'); + if (RoleCode::WAREHOUSE != $this->roleId && RoleCode::SUPER_ADMIN != $this->roleId && RoleCode::ADMIN != $this->roleId) + throw new ErrException('该角色没有权限'); - $info = $this->DepotRecycleModel - ->where('id',$id) - ->first(); + $info = $this->DepotRecycleModel + ->where('id',$id) + ->first(); - if ($info->status != MaterialCode::AUDITED){ - if ($status == MaterialCode::AUDITED){ - $saleInfo = $this->DepotSaleModel - ->where('is_del',MaterialCode::IS_NO_DEL) - ->where('id',$info->sale_id) - ->first(); + if ($info->status != MaterialCode::AUDITED){ + if ($status == MaterialCode::AUDITED){ + $saleInfo = $this->DepotSaleModel + ->where('is_del',MaterialCode::IS_NO_DEL) + ->where('id',$info->sale_id) + ->first(); + + if (empty($saleInfo)){ + throw new ErrException('无出库记录'); + } + + $saleInfo->back_number = $saleInfo->back_number + $info->number; + $saleInfo->sum_price = $saleInfo->sale_price * ($saleInfo->number - $saleInfo->back_number); + + $materialStock = $this->MaterialStockModel + ->where('material_id',$info->material_id) + ->where('depot_id',$info->depot_id) + ->where('supplier_id',$info->supplier_id) + ->first(); + + if (empty($materialStock)){ + $materialStock = new MaterialStock(); + $materialStock->depot_id = $info->depotId; + $materialStock->material_id = $info->materialId; + $materialStock->supplier_id = $info->supplierId; + $materialStock->current_stock = $info->number; + $materialStock->unit_price = $info->recycle_price; + } + else + $materialStock->current_stock = $materialStock->current_stock + $info->number; + + if (!$materialStock->save() || !$saleInfo->save()) throw new ErrException('回收审核异常'); - if (empty($saleInfo)){ - throw new ErrException('无出库记录'); } + } + if ($info->status == MaterialCode::AUDITED){ + if ($status == MaterialCode::UN_AUDIT || $status == MaterialCode::AUDIT_REFUSE){ + $materialStock = $this->MaterialStockModel + ->where('is_del',MaterialCode::IS_NO_DEL) + ->where('material_id',$info->material_id) + ->where('depot_id',$info->depot_id) + ->where('supplier_id',$info->supplier_id) + ->first(); - $saleInfo->back_number = $saleInfo->back_number + $info->number; - $saleInfo->sum_price = $saleInfo->sale_price * ($saleInfo->number - $saleInfo->back_number); + $materialStock->current_stock = $materialStock->current_stock - $info->number; - $materialStock = $this->MaterialStockModel - ->where('material_id',$info->material_id) - ->where('depot_id',$info->depot_id) - ->where('supplier_id',$info->supplier_id) - ->first(); + $saleInfo = $this->DepotSaleModel + ->where('id',$info->sale_id) + ->first(); - if (empty($materialStock)){ - $materialStock = new MaterialStock(); - $materialStock->depot_id = $info->depotId; - $materialStock->material_id = $info->materialId; - $materialStock->supplier_id = $info->supplierId; - $materialStock->current_stock = $info->number; - $materialStock->unit_price = $info->recycle_price; + $saleInfo->back_number = $saleInfo->back_number - $info->number; + $saleInfo->sum_price = $saleInfo->sale_price * ($saleInfo->number - $saleInfo->back_number); + + if (!$materialStock->save() || !$saleInfo->save()) throw new ErrException('回收审核异常'); } - else - $materialStock->current_stock = $materialStock->current_stock + $info->number; - - if (!$materialStock->save() || !$saleInfo->save()) throw new ErrException('回收审核异常'); - } + + $info->status = $status; + + if (!$info->save()) throw new ErrException('回收审核异常'); + + DB::commit(); + } catch (ErrException $error) { + Db::rollBack(); + throw new ErrException($error->getMessage()); } - if ($info->status == MaterialCode::AUDITED){ - if ($status == MaterialCode::UN_AUDIT || $status == MaterialCode::AUDIT_REFUSE){ - $materialStock = $this->MaterialStockModel - ->where('is_del',MaterialCode::IS_NO_DEL) - ->where('material_id',$info->material_id) - ->where('depot_id',$info->depot_id) - ->where('supplier_id',$info->supplier_id) - ->first(); - - $materialStock->current_stock = $materialStock->current_stock - $info->number; - - $saleInfo = $this->DepotSaleModel - ->where('id',$info->sale_id) - ->first(); - - $saleInfo->back_number = $saleInfo->back_number - $info->number; - $saleInfo->sum_price = $saleInfo->sale_price * ($saleInfo->number - $saleInfo->back_number); - - if (!$materialStock->save() || !$saleInfo->save()) throw new ErrException('回收审核异常'); - } - } - - $info->status = $status; - - if (!$info->save()) throw new ErrException('回收审核异常'); return $this->return->success();