diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java index 52dc60a4..d438b960 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java @@ -130,6 +130,8 @@ public interface ErrorCodeConstants { ErrorCode STORE_GOODS_INVENTORY_NOT_EXISTS = new ErrorCode(1_004_019_001, "商品库存不存在"); + ErrorCode STORE_GOODS_INVENTORY_NOT_ENOUGH = new ErrorCode(1_004_019_001, "商品库存不足"); + ErrorCode STORE_GOODS_INVENTORY_RECORD_NOT_EXISTS = new ErrorCode(1_004_020_001, "商品出入库记录不存在"); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodsinventory/StoreGoodsInventoryController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodsinventory/StoreGoodsInventoryController.java index d1a56e8e..14d1562e 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodsinventory/StoreGoodsInventoryController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodsinventory/StoreGoodsInventoryController.java @@ -39,7 +39,7 @@ public class StoreGoodsInventoryController { private StoreGoodsInventoryService storeGoodsInventoryService; @PostMapping("/create") - @Operation(summary = "创建商品库存") + @Operation(summary = "出入库") @PreAuthorize("@ss.hasPermission('member:store-goods-inventory:create')") public CommonResult createStoreGoodsInventory(@Valid @RequestBody StoreGoodsInventorySaveReqVO createReqVO) { return success(storeGoodsInventoryService.createStoreGoodsInventory(createReqVO)); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodsinventory/vo/StoreGoodsInventorySaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodsinventory/vo/StoreGoodsInventorySaveReqVO.java index 075390fb..e80f7418 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodsinventory/vo/StoreGoodsInventorySaveReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodsinventory/vo/StoreGoodsInventorySaveReqVO.java @@ -24,4 +24,10 @@ public class StoreGoodsInventorySaveReqVO { @Schema(description = "重量") private Double weight; + @Schema(description = "1-入库,2-出库") + private Integer type; + + @Schema(description = "出库类型") + private Integer outType; + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/InventoryTypeEnum.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/InventoryTypeEnum.java new file mode 100644 index 00000000..a369296b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/InventoryTypeEnum.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.member.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 代码生成的场景枚举 + * + * @author 芋道源码 + */ +@AllArgsConstructor +@Getter +public enum InventoryTypeEnum { + + IN(1, "入库"), + OUT(2, "出库"), + ; + + /** + * 编码 + */ + private final Integer code; + /** + * 类型 + */ + private final String name; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodsinventory/StoreGoodsInventoryServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodsinventory/StoreGoodsInventoryServiceImpl.java index 83177013..3d9a2c69 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodsinventory/StoreGoodsInventoryServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodsinventory/StoreGoodsInventoryServiceImpl.java @@ -1,5 +1,8 @@ package cn.iocoder.yudao.module.member.service.storegoodsinventory; +import cn.hutool.core.collection.CollectionUtil; +import cn.iocoder.yudao.module.member.enums.InventoryTypeEnum; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -30,12 +33,38 @@ public class StoreGoodsInventoryServiceImpl implements StoreGoodsInventoryServic private StoreGoodsInventoryMapper storeGoodsInventoryMapper; @Override - public Integer createStoreGoodsInventory(StoreGoodsInventorySaveReqVO createReqVO) { - // 插入 - StoreGoodsInventoryDO storeGoodsInventory = BeanUtils.toBean(createReqVO, StoreGoodsInventoryDO.class); - storeGoodsInventoryMapper.insert(storeGoodsInventory); + public synchronized Integer createStoreGoodsInventory(StoreGoodsInventorySaveReqVO createReqVO) { + Integer id = null; + // 入库 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StoreGoodsInventoryDO::getGoodsId,createReqVO.getGoodsId()) + .eq(StoreGoodsInventoryDO::getCarteenId,createReqVO.getCarteenId()); + List storeGoodsInventoryDOS = storeGoodsInventoryMapper.selectList(wrapper); + if(InventoryTypeEnum.IN.getCode().equals(createReqVO.getType())){ + if(CollectionUtil.isNotEmpty(storeGoodsInventoryDOS)){ + StoreGoodsInventoryDO storeGoodsInventoryDO = storeGoodsInventoryDOS.get(0); + storeGoodsInventoryDO.setNumber(storeGoodsInventoryDO.getNumber()+createReqVO.getNumber()); + storeGoodsInventoryMapper.updateById(storeGoodsInventoryDO); + id= storeGoodsInventoryDO.getId(); + }else { + StoreGoodsInventoryDO storeGoodsInventory = BeanUtils.toBean(createReqVO, StoreGoodsInventoryDO.class); + storeGoodsInventoryMapper.insert(storeGoodsInventory); + id = storeGoodsInventory.getId(); + } + }else {// 出库 + if(CollectionUtil.isEmpty(storeGoodsInventoryDOS)){ + throw exception(STORE_GOODS_INVENTORY_NOT_EXISTS); + } + StoreGoodsInventoryDO storeGoodsInventoryDO = storeGoodsInventoryDOS.get(0); + if(storeGoodsInventoryDO.getNumber()