diff --git a/bateraom-cloud-admin/pom.xml b/bateraom-cloud-admin/pom.xml
index 458e1249a..986f472d3 100644
--- a/bateraom-cloud-admin/pom.xml
+++ b/bateraom-cloud-admin/pom.xml
@@ -93,6 +93,13 @@
bateraom-cloud-workflow
+
+
+ org.dromara
+ bateraom-cloud-business
+ ${revision}
+
+
de.codecentric
spring-boot-admin-starter-client
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/pom.xml b/bateraom-cloud-modules/bateraom-cloud-business/pom.xml
index 9acb63e07..d4f49ded5 100644
--- a/bateraom-cloud-modules/bateraom-cloud-business/pom.xml
+++ b/bateraom-cloud-modules/bateraom-cloud-business/pom.xml
@@ -2,12 +2,13 @@
- 4.0.0
org.dromara
bateraom-cloud-modules
- 5.3.1-BETA
+ ${revision}
+ 4.0.0
+
bateraom-cloud-business
@@ -17,4 +18,46 @@
UTF-8
+
+
+
+ org.dromara
+ bateraom-cloud-common-core
+
+
+
+ org.dromara
+ bateraom-cloud-common-doc
+
+
+
+ org.dromara
+ bateraom-cloud-common-mybatis
+
+
+
+ org.dromara
+ bateraom-cloud-common-log
+
+
+
+ org.dromara
+ bateraom-cloud-common-excel
+
+
+
+ org.dromara
+ bateraom-cloud-common-tenant
+
+
+
+ org.dromara
+ bateraom-cloud-common-web
+
+
+ org.dromara
+ bateraom-cloud-common-idempotent
+
+
+
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/controller/BcCargoLocationController.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/controller/BcCargoLocationController.java
new file mode 100644
index 000000000..1f2db5ff0
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/controller/BcCargoLocationController.java
@@ -0,0 +1,106 @@
+package org.dromara.business.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.RequiredArgsConstructor;
+import org.dromara.business.domain.bo.BcCargoLocationBo;
+import org.dromara.business.domain.vo.BcCargoLocationVo;
+import org.dromara.business.service.IBcCargoLocationService;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.web.core.BaseController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @Author zengdy
+ * @Description TODO
+ * @Date 2025/3/17 15:30
+ * @Version 1.0
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/data/cargoLocation")
+public class BcCargoLocationController extends BaseController {
+
+ private final IBcCargoLocationService bcCargoLocationService;
+
+ /**
+ * 查询货位信息列表
+ */
+ @SaCheckPermission("data:cargoLocation:list")
+ @GetMapping("/list")
+ public TableDataInfo list(BcCargoLocationBo bo, PageQuery pageQuery) {
+ return bcCargoLocationService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出货位信息列表
+ */
+ @SaCheckPermission("data:cargoLocation:export")
+ @Log(title = "货位信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(BcCargoLocationBo bo, HttpServletResponse response) {
+ List list = bcCargoLocationService.queryList(bo);
+ ExcelUtil.exportExcel(list, "货位信息", BcCargoLocationVo.class, response);
+ }
+
+ /**
+ * 获取货位信息详细信息
+ *
+ * @param locationId 主键
+ */
+ @SaCheckPermission("data:cargoLocation:query")
+ @GetMapping("/{locationId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long locationId) {
+ return R.ok(bcCargoLocationService.queryById(locationId));
+ }
+
+ /**
+ * 新增货位信息
+ */
+ @SaCheckPermission("data:cargoLocation:add")
+ @Log(title = "货位信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody BcCargoLocationBo bo) {
+ return toAjax(bcCargoLocationService.insertByBo(bo));
+ }
+
+ /**
+ * 修改货位信息
+ */
+ @SaCheckPermission("data:cargoLocation:edit")
+ @Log(title = "货位信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody BcCargoLocationBo bo) {
+ return toAjax(bcCargoLocationService.updateByBo(bo));
+ }
+
+ /**
+ * 删除货位信息
+ *
+ * @param locationIds 主键串
+ */
+ @SaCheckPermission("data:cargoLocation:remove")
+ @Log(title = "货位信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{locationIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] locationIds) {
+ return toAjax(bcCargoLocationService.deleteWithValidByIds(List.of(locationIds), true));
+ }
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/controller/BcWarehouseController.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/controller/BcWarehouseController.java
new file mode 100644
index 000000000..29367a9a2
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/controller/BcWarehouseController.java
@@ -0,0 +1,105 @@
+package org.dromara.business.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.business.domain.vo.BcWarehouseVo;
+import org.dromara.business.domain.bo.BcWarehouseBo;
+import org.dromara.business.service.IBcWarehouseService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 仓库信息
+ *
+ * @author Lion Li
+ * @date 2025-03-17
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/data/warehouse")
+public class BcWarehouseController extends BaseController {
+
+ private final IBcWarehouseService bcWarehouseService;
+
+ /**
+ * 查询仓库信息列表
+ */
+ @SaCheckPermission("data:warehouse:list")
+ @GetMapping("/list")
+ public TableDataInfo list(BcWarehouseBo bo, PageQuery pageQuery) {
+ return bcWarehouseService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出仓库信息列表
+ */
+ @SaCheckPermission("data:warehouse:export")
+ @Log(title = "仓库信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(BcWarehouseBo bo, HttpServletResponse response) {
+ List list = bcWarehouseService.queryList(bo);
+ ExcelUtil.exportExcel(list, "仓库信息", BcWarehouseVo.class, response);
+ }
+
+ /**
+ * 获取仓库信息详细信息
+ *
+ * @param warehouseId 主键
+ */
+ @SaCheckPermission("data:warehouse:query")
+ @GetMapping("/{warehouseId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long warehouseId) {
+ return R.ok(bcWarehouseService.queryById(warehouseId));
+ }
+
+ /**
+ * 新增仓库信息
+ */
+ @SaCheckPermission("data:warehouse:add")
+ @Log(title = "仓库信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody BcWarehouseBo bo) {
+ return toAjax(bcWarehouseService.insertByBo(bo));
+ }
+
+ /**
+ * 修改仓库信息
+ */
+ @SaCheckPermission("data:warehouse:edit")
+ @Log(title = "仓库信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody BcWarehouseBo bo) {
+ return toAjax(bcWarehouseService.updateByBo(bo));
+ }
+
+ /**
+ * 删除仓库信息
+ *
+ * @param warehouseIds 主键串
+ */
+ @SaCheckPermission("data:warehouse:remove")
+ @Log(title = "仓库信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{warehouseIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] warehouseIds) {
+ return toAjax(bcWarehouseService.deleteWithValidByIds(List.of(warehouseIds), true));
+ }
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/BcCargoLocation.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/BcCargoLocation.java
new file mode 100644
index 000000000..f20400379
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/BcCargoLocation.java
@@ -0,0 +1,56 @@
+package org.dromara.business.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.tenant.core.TenantEntity;
+
+import java.io.Serial;
+
+/**
+ * @Author zengdy
+ * @Description TODO
+ * @Date 2025/3/17 15:22
+ * @Version 1.0
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("bc_cargo_location")
+public class BcCargoLocation extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 货位ID
+ */
+ @TableId(value = "location_id")
+ private Long locationId;
+
+ /**
+ * 仓库ID
+ */
+ private Long warehouseId;
+ /**
+ * 货位名称
+ */
+ private String locationName;
+
+ /**
+ * 显示顺序
+ */
+ private Long locationSort;
+
+ /**
+ * 状态(0正常 1停用)
+ */
+ private String status;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/BcWarehouse.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/BcWarehouse.java
new file mode 100644
index 000000000..e57a09fd3
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/BcWarehouse.java
@@ -0,0 +1,51 @@
+package org.dromara.business.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 仓库信息对象 bc_warehouse
+ *
+ * @author Lion Li
+ * @date 2025-03-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("bc_warehouse")
+public class BcWarehouse extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 仓库ID
+ */
+ @TableId(value = "warehouse_id")
+ private Long warehouseId;
+
+ /**
+ * 仓库名称
+ */
+ private String warehouseName;
+
+ /**
+ * 显示顺序
+ */
+ private Long warehouseSort;
+
+ /**
+ * 状态(0正常 1停用)
+ */
+ private String status;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/bo/BcCargoLocationBo.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/bo/BcCargoLocationBo.java
new file mode 100644
index 000000000..a08001042
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/bo/BcCargoLocationBo.java
@@ -0,0 +1,57 @@
+package org.dromara.business.domain.bo;
+import org.dromara.business.domain.BcCargoLocation;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+/**
+ * 货位信息业务对象 bc_cargo_location
+ *
+ * @author Lion Li
+ * @date 2025-03-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = BcCargoLocation.class, reverseConvertGenerate = false)
+public class BcCargoLocationBo extends BaseEntity {
+
+ /**
+ * 货位ID
+ */
+ @NotNull(message = "货位ID不能为空", groups = { EditGroup.class })
+ private Long locationId;
+
+ /**
+ * 仓库ID
+ */
+ @NotNull(message = "仓库ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long warehouseId;
+
+ /**
+ * 货位名称
+ */
+ @NotBlank(message = "货位名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String locationName;
+
+ /**
+ * 显示顺序
+ */
+ @NotNull(message = "显示顺序不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long locationSort;
+
+ /**
+ * 状态(0正常 1停用)
+ */
+ @NotBlank(message = "状态(0正常 1停用)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String status;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/bo/BcWarehouseBo.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/bo/BcWarehouseBo.java
new file mode 100644
index 000000000..dcb4be0e1
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/bo/BcWarehouseBo.java
@@ -0,0 +1,53 @@
+package org.dromara.business.domain.bo;
+
+import org.dromara.business.domain.BcWarehouse;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 仓库信息业务对象 bc_warehouse
+ *
+ * @author Lion Li
+ * @date 2025-03-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = BcWarehouse.class, reverseConvertGenerate = false)
+public class BcWarehouseBo extends BaseEntity {
+
+ /**
+ * 仓库ID
+ */
+ @NotNull(message = "仓库ID不能为空", groups = { EditGroup.class })
+ private Long warehouseId;
+
+ /**
+ * 仓库名称
+ */
+ @NotBlank(message = "仓库名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String warehouseName;
+
+ /**
+ * 显示顺序
+ */
+ @NotNull(message = "显示顺序不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long warehouseSort;
+
+ /**
+ * 状态(0正常 1停用)
+ */
+ @NotBlank(message = "状态(0正常 1停用)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String status;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/vo/BcCargoLocationVo.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/vo/BcCargoLocationVo.java
new file mode 100644
index 000000000..27628d4ce
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/vo/BcCargoLocationVo.java
@@ -0,0 +1,67 @@
+package org.dromara.business.domain.vo;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.business.domain.BcCargoLocation;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+
+/**
+ * @Author zengdy
+ * @Description TODO
+ * @Date 2025/3/17 15:23
+ * @Version 1.0
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = BcCargoLocation.class)
+public class BcCargoLocationVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 货位ID
+ */
+ @ExcelProperty(value = "货位ID")
+ private Long locationId;
+
+ /**
+ * 仓库ID
+ */
+ @ExcelProperty(value = "仓库ID")
+ private Long warehouseId;
+
+ /**
+ * 货位名称
+ */
+ @ExcelProperty(value = "货位名称")
+ private String locationName;
+
+ /**
+ * 显示顺序
+ */
+ @ExcelProperty(value = "显示顺序")
+ private Long locationSort;
+
+ /**
+ * 状态(0正常 1停用)
+ */
+ @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+ private String status;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/vo/BcWarehouseVo.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/vo/BcWarehouseVo.java
new file mode 100644
index 000000000..36d1ac98b
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/domain/vo/BcWarehouseVo.java
@@ -0,0 +1,63 @@
+package org.dromara.business.domain.vo;
+
+import org.dromara.system.domain.BcWarehouse;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 仓库信息视图对象 bc_warehouse
+ *
+ * @author Lion Li
+ * @date 2025-03-17
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = BcWarehouse.class)
+public class BcWarehouseVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 仓库ID
+ */
+ @ExcelProperty(value = "仓库ID")
+ private Long warehouseId;
+
+ /**
+ * 仓库名称
+ */
+ @ExcelProperty(value = "仓库名称")
+ private String warehouseName;
+
+ /**
+ * 显示顺序
+ */
+ @ExcelProperty(value = "显示顺序")
+ private Long warehouseSort;
+
+ /**
+ * 状态(0正常 1停用)
+ */
+ @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+ private String status;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/mapper/BcCargoLocationMapper.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/mapper/BcCargoLocationMapper.java
new file mode 100644
index 000000000..181a3865b
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/mapper/BcCargoLocationMapper.java
@@ -0,0 +1,14 @@
+package org.dromara.business.mapper;
+
+import org.dromara.business.domain.BcCargoLocation;
+import org.dromara.business.domain.vo.BcCargoLocationVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * @Author zengdy
+ * @Description TODO
+ * @Date 2025/3/17 15:26
+ * @Version 1.0
+ */
+public interface BcCargoLocationMapper extends BaseMapperPlus {
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/mapper/BcWarehouseMapper.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/mapper/BcWarehouseMapper.java
new file mode 100644
index 000000000..c0bb87f6d
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/mapper/BcWarehouseMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.business.mapper;
+
+import org.dromara.business.domain.BcWarehouse;
+import org.dromara.business.domain.vo.BcWarehouseVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 仓库信息Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-03-17
+ */
+public interface BcWarehouseMapper extends BaseMapperPlus {
+
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/service/IBcCargoLocationService.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/service/IBcCargoLocationService.java
new file mode 100644
index 000000000..67dd24f43
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/service/IBcCargoLocationService.java
@@ -0,0 +1,67 @@
+package org.dromara.business.service;
+
+import org.dromara.business.domain.bo.BcCargoLocationBo;
+import org.dromara.business.domain.vo.BcCargoLocationVo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Author zengdy
+ * @Description 货位信息Service接口
+ * @Date 2025/3/17 15:27
+ * @Version 1.0
+ */
+public interface IBcCargoLocationService {
+ /**
+ * 查询货位信息
+ *
+ * @param locationId 主键
+ * @return 货位信息
+ */
+ BcCargoLocationVo queryById(Long locationId);
+
+ /**
+ * 分页查询货位信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 货位信息分页列表
+ */
+ TableDataInfo queryPageList(BcCargoLocationBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的货位信息列表
+ *
+ * @param bo 查询条件
+ * @return 货位信息列表
+ */
+ List queryList(BcCargoLocationBo bo);
+
+ /**
+ * 新增货位信息
+ *
+ * @param bo 货位信息
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(BcCargoLocationBo bo);
+
+ /**
+ * 修改货位信息
+ *
+ * @param bo 货位信息
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(BcCargoLocationBo bo);
+
+ /**
+ * 校验并批量删除货位信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/service/IBcWarehouseService.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/service/IBcWarehouseService.java
new file mode 100644
index 000000000..c6c594262
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/service/IBcWarehouseService.java
@@ -0,0 +1,68 @@
+package org.dromara.business.service;
+
+import org.dromara.business.domain.vo.BcWarehouseVo;
+import org.dromara.business.domain.bo.BcWarehouseBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 仓库信息Service接口
+ *
+ * @author Lion Li
+ * @date 2025-03-17
+ */
+public interface IBcWarehouseService {
+
+ /**
+ * 查询仓库信息
+ *
+ * @param warehouseId 主键
+ * @return 仓库信息
+ */
+ BcWarehouseVo queryById(Long warehouseId);
+
+ /**
+ * 分页查询仓库信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 仓库信息分页列表
+ */
+ TableDataInfo queryPageList(BcWarehouseBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的仓库信息列表
+ *
+ * @param bo 查询条件
+ * @return 仓库信息列表
+ */
+ List queryList(BcWarehouseBo bo);
+
+ /**
+ * 新增仓库信息
+ *
+ * @param bo 仓库信息
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(BcWarehouseBo bo);
+
+ /**
+ * 修改仓库信息
+ *
+ * @param bo 仓库信息
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(BcWarehouseBo bo);
+
+ /**
+ * 校验并批量删除仓库信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/service/impl/BcCargoLocationServiceImpl.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/service/impl/BcCargoLocationServiceImpl.java
new file mode 100644
index 000000000..0a6b8cdcb
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/service/impl/BcCargoLocationServiceImpl.java
@@ -0,0 +1,131 @@
+package org.dromara.business.service.impl;
+
+import org.dromara.business.domain.BcCargoLocation;
+import org.dromara.business.domain.bo.BcCargoLocationBo;
+import org.dromara.business.domain.vo.BcCargoLocationVo;
+import org.dromara.business.mapper.BcCargoLocationMapper;
+import org.dromara.business.service.IBcCargoLocationService;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+/**
+ * @Author zengdy
+ * @Description TODO
+ * @Date 2025/3/17 15:29
+ * @Version 1.0
+ */
+@RequiredArgsConstructor
+@Service
+public class BcCargoLocationServiceImpl implements IBcCargoLocationService {
+
+ private final BcCargoLocationMapper baseMapper;
+
+ /**
+ * 查询货位信息
+ *
+ * @param locationId 主键
+ * @return 货位信息
+ */
+ @Override
+ public BcCargoLocationVo queryById(Long locationId){
+ return baseMapper.selectVoById(locationId);
+ }
+
+ /**
+ * 分页查询货位信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 货位信息分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(BcCargoLocationBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的货位信息列表
+ *
+ * @param bo 查询条件
+ * @return 货位信息列表
+ */
+ @Override
+ public List queryList(BcCargoLocationBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(BcCargoLocationBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.orderByAsc(BcCargoLocation::getLocationId);
+ lqw.like(StringUtils.isNotBlank(bo.getLocationName()), BcCargoLocation::getLocationName, bo.getLocationName());
+ lqw.eq(bo.getLocationSort() != null, BcCargoLocation::getLocationSort, bo.getLocationSort());
+ lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BcCargoLocation::getStatus, bo.getStatus());
+ return lqw;
+ }
+
+ /**
+ * 新增货位信息
+ *
+ * @param bo 货位信息
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(BcCargoLocationBo bo) {
+ BcCargoLocation add = MapstructUtils.convert(bo, BcCargoLocation.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setLocationId(add.getLocationId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改货位信息
+ *
+ * @param bo 货位信息
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(BcCargoLocationBo bo) {
+ BcCargoLocation update = MapstructUtils.convert(bo, BcCargoLocation.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(BcCargoLocation entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除货位信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/service/impl/BcWarehouseServiceImpl.java b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/service/impl/BcWarehouseServiceImpl.java
new file mode 100644
index 000000000..0266f34db
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/java/org/dromara/business/service/impl/BcWarehouseServiceImpl.java
@@ -0,0 +1,132 @@
+package org.dromara.business.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.business.domain.bo.BcWarehouseBo;
+import org.dromara.business.domain.vo.BcWarehouseVo;
+import org.dromara.business.domain.BcWarehouse;
+import org.dromara.business.mapper.BcWarehouseMapper;
+import org.dromara.business.service.IBcWarehouseService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 仓库信息Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-03-17
+ */
+@RequiredArgsConstructor
+@Service
+public class BcWarehouseServiceImpl implements IBcWarehouseService {
+
+ private final BcWarehouseMapper baseMapper;
+
+ /**
+ * 查询仓库信息
+ *
+ * @param warehouseId 主键
+ * @return 仓库信息
+ */
+ @Override
+ public BcWarehouseVo queryById(Long warehouseId){
+ return baseMapper.selectVoById(warehouseId);
+ }
+
+ /**
+ * 分页查询仓库信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 仓库信息分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(BcWarehouseBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的仓库信息列表
+ *
+ * @param bo 查询条件
+ * @return 仓库信息列表
+ */
+ @Override
+ public List queryList(BcWarehouseBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(BcWarehouseBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.orderByAsc(BcWarehouse::getWarehouseId);
+ lqw.like(StringUtils.isNotBlank(bo.getWarehouseName()), BcWarehouse::getWarehouseName, bo.getWarehouseName());
+ lqw.eq(bo.getWarehouseSort() != null, BcWarehouse::getWarehouseSort, bo.getWarehouseSort());
+ lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BcWarehouse::getStatus, bo.getStatus());
+ return lqw;
+ }
+
+ /**
+ * 新增仓库信息
+ *
+ * @param bo 仓库信息
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(BcWarehouseBo bo) {
+ BcWarehouse add = MapstructUtils.convert(bo, BcWarehouse.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setWarehouseId(add.getWarehouseId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改仓库信息
+ *
+ * @param bo 仓库信息
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(BcWarehouseBo bo) {
+ BcWarehouse update = MapstructUtils.convert(bo, BcWarehouse.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(BcWarehouse entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除仓库信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/resources/mapper/business/bcCargoLocationMapper.xml b/bateraom-cloud-modules/bateraom-cloud-business/src/main/resources/mapper/business/bcCargoLocationMapper.xml
new file mode 100644
index 000000000..5aceb818a
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/resources/mapper/business/bcCargoLocationMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/resources/mapper/business/bcWarehouseMapper.xml b/bateraom-cloud-modules/bateraom-cloud-business/src/main/resources/mapper/business/bcWarehouseMapper.xml
new file mode 100644
index 000000000..fdd79196e
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/resources/mapper/business/bcWarehouseMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/bateraom-cloud-modules/bateraom-cloud-business/src/main/resources/mapper/package-info.md b/bateraom-cloud-modules/bateraom-cloud-business/src/main/resources/mapper/package-info.md
new file mode 100644
index 000000000..c938b1e50
--- /dev/null
+++ b/bateraom-cloud-modules/bateraom-cloud-business/src/main/resources/mapper/package-info.md
@@ -0,0 +1,3 @@
+java包使用 `.` 分割 resource 目录使用 `/` 分割
+
+此文件目的 防止文件夹粘连找不到 `xml` 文件
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index a1f6a7085..3ae9a1f97 100644
--- a/pom.xml
+++ b/pom.xml
@@ -355,6 +355,13 @@
${revision}
+
+
+ org.dromara
+ bateraom-cloud-business
+ ${revision}
+
+
org.dromara
diff --git a/script/sql/ry_vue_5.X.sql b/script/sql/ry_vue_5.X.sql
index c17e4a01a..a11fb6ccb 100644
--- a/script/sql/ry_vue_5.X.sql
+++ b/script/sql/ry_vue_5.X.sql
@@ -961,3 +961,41 @@ INSERT INTO test_tree VALUES (10, '000000', 7, 108, 3, '子节点66', 0, 103, sy
INSERT INTO test_tree VALUES (11, '000000', 7, 108, 3, '子节点77', 0, 103, sysdate(), 1, NULL, NULL, 0);
INSERT INTO test_tree VALUES (12, '000000', 10, 108, 3, '子节点88', 0, 103, sysdate(), 1, NULL, NULL, 0);
INSERT INTO test_tree VALUES (13, '000000', 10, 108, 3, '子节点99', 0, 103, sysdate(), 1, NULL, NULL, 0);
+
+
+
+
+-- add
+-- 仓库
+CREATE TABLE `bc_warehouse` (
+ `warehouse_id` bigint NOT NULL COMMENT '仓库ID',
+ `tenant_id` varchar(20) COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号',
+ `warehouse_name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '仓库名称',
+ `warehouse_sort` int NOT NULL COMMENT '显示顺序',
+ `status` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态(0正常 1停用)',
+ `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
+ `create_by` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_by` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `remark` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`warehouse_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='仓库信息表';
+
+
+-- 货位
+CREATE TABLE `bc_cargo_location` (
+ `location_id` bigint NOT NULL COMMENT '货位ID',
+ `warehouse_id` bigint NOT NULL COMMENT '仓库ID',
+ `tenant_id` varchar(20) COLLATE utf8mb4_general_ci DEFAULT '000000' COMMENT '租户编号',
+ `location_name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '货位名称',
+ `location_sort` int NOT NULL COMMENT '显示顺序',
+ `status` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态(0正常 1停用)',
+ `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
+ `create_by` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_by` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `remark` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`location_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='货位信息表';