diff --git a/pom.xml b/pom.xml
index fe6130f..6f6b1c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
https://github.com/YunaiV/ruoyi-vue-pro
- 3.0.31
+ 3.0.34
17
${java.version}
diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java
index b9dff96..7cf9ceb 100644
--- a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java
+++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java
@@ -9,20 +9,15 @@ import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.TemplateInstanceDataMapper;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
-import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList;
-import static cn.iocoder.yudao.module.base.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTANCE_DATA_NOT_EXISTS;
/**
diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java
index 91d2b1e..3977637 100644
--- a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java
+++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java
@@ -9,20 +9,10 @@ import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.TemplateInstanceItemMapper;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
-import org.springframework.transaction.annotation.Transactional;
-
import java.util.*;
-
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-
-
-
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList;
-import static cn.iocoder.yudao.module.base.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTANCE_ITEM_NOT_EXISTS;
/**
diff --git a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java
index 6ab37d7..506f8a2 100644
--- a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java
+++ b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java
@@ -15,4 +15,11 @@ public interface ErrorCodeConstants {
ErrorCode ERP_FACTORY_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在");
ErrorCode ERP_COSTCENTER_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在");
ErrorCode ERP_PRODUCTIVE_VERSION_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在");
+ ErrorCode ERP_PURCHASE_ORGANIZATION_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在");
+ ErrorCode ERP_INTERNAL_ORDER_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在");
+ ErrorCode ERP_SALES_ORGANIZATION_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在");
+ ErrorCode ERP_WAREHOUSE_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在");
+ ErrorCode ERP_ASSET_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在");
+ ErrorCode ERP_CONTRACT_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在");
+ ErrorCode ERP_PRODUCTIVE_ORDER_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在");
}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpAssetController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpAssetController.java
new file mode 100644
index 0000000..1f55054
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpAssetController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpAssetDO;
+import cn.iocoder.yudao.module.erp.service.erp.ErpAssetService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - ERP资产卡片")
+@RestController
+@RequestMapping("/sply/erp-asset")
+@Validated
+public class ErpAssetController {
+
+
+ @Resource
+ private ErpAssetService erpAssetService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建ERP资产卡片")
+ @PreAuthorize("@ss.hasPermission('sply:erp-asset:create')")
+ public CommonResult createErpAsset(@Valid @RequestBody ErpAssetSaveReqVO createReqVO) {
+ return success(erpAssetService.createErpAsset(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新ERP资产卡片")
+ @PreAuthorize("@ss.hasPermission('sply:erp-asset:update')")
+ public CommonResult updateErpAsset(@Valid @RequestBody ErpAssetSaveReqVO updateReqVO) {
+ erpAssetService.updateErpAsset(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除ERP资产卡片")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('sply:erp-asset:delete')")
+ public CommonResult deleteErpAsset(@RequestParam("id") Long id) {
+ erpAssetService.deleteErpAsset(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除ERP资产卡片")
+ @PreAuthorize("@ss.hasPermission('sply:erp-asset:delete')")
+ public CommonResult deleteErpAssetList(@RequestBody BatchDeleteReqVO req) {
+ erpAssetService.deleteErpAssetListByIds(req.getIds());
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得ERP资产卡片")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('sply:erp-asset:query')")
+ public CommonResult getErpAsset(@RequestParam("id") Long id) {
+ ErpAssetDO erpAsset = erpAssetService.getErpAsset(id);
+ return success(BeanUtils.toBean(erpAsset, ErpAssetRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得ERP资产卡片分页")
+ @PreAuthorize("@ss.hasPermission('sply:erp-asset:query')")
+ public CommonResult> getErpAssetPage(@Valid ErpAssetPageReqVO pageReqVO) {
+ PageResult pageResult = erpAssetService.getErpAssetPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ErpAssetRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出ERP资产卡片 Excel")
+ @PreAuthorize("@ss.hasPermission('sply:erp-asset:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportErpAssetExcel(@Valid ErpAssetPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = erpAssetService.getErpAssetPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "ERP资产卡片.xls", "数据", ErpAssetRespVO.class,
+ BeanUtils.toBean(list, ErpAssetRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpContractController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpContractController.java
new file mode 100644
index 0000000..8425fcb
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpContractController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpContractDO;
+import cn.iocoder.yudao.module.erp.service.erp.ErpContractService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - ERP合同映射")
+@RestController
+@RequestMapping("/bse/erp-contract")
+@Validated
+public class ErpContractController {
+
+
+ @Resource
+ private ErpContractService erpContractService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建ERP合同映射")
+ @PreAuthorize("@ss.hasPermission('bse:erp-contract:create')")
+ public CommonResult createErpContract(@Valid @RequestBody ErpContractSaveReqVO createReqVO) {
+ return success(erpContractService.createErpContract(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新ERP合同映射")
+ @PreAuthorize("@ss.hasPermission('bse:erp-contract:update')")
+ public CommonResult updateErpContract(@Valid @RequestBody ErpContractSaveReqVO updateReqVO) {
+ erpContractService.updateErpContract(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除ERP合同映射")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('bse:erp-contract:delete')")
+ public CommonResult deleteErpContract(@RequestParam("id") Long id) {
+ erpContractService.deleteErpContract(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除ERP合同映射")
+ @PreAuthorize("@ss.hasPermission('bse:erp-contract:delete')")
+ public CommonResult deleteErpContractList(@RequestBody BatchDeleteReqVO req) {
+ erpContractService.deleteErpContractListByIds(req.getIds());
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得ERP合同映射")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('bse:erp-contract:query')")
+ public CommonResult getErpContract(@RequestParam("id") Long id) {
+ ErpContractDO erpContract = erpContractService.getErpContract(id);
+ return success(BeanUtils.toBean(erpContract, ErpContractRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得ERP合同映射分页")
+ @PreAuthorize("@ss.hasPermission('bse:erp-contract:query')")
+ public CommonResult> getErpContractPage(@Valid ErpContractPageReqVO pageReqVO) {
+ PageResult pageResult = erpContractService.getErpContractPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ErpContractRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出ERP合同映射 Excel")
+ @PreAuthorize("@ss.hasPermission('bse:erp-contract:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportErpContractExcel(@Valid ErpContractPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = erpContractService.getErpContractPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "ERP合同映射.xls", "数据", ErpContractRespVO.class,
+ BeanUtils.toBean(list, ErpContractRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpInternalOrderController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpInternalOrderController.java
new file mode 100644
index 0000000..43b31e9
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpInternalOrderController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpInternalOrderDO;
+import cn.iocoder.yudao.module.erp.service.erp.ErpInternalOrderService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - ERP内部订单")
+@RestController
+@RequestMapping("/sply/erp-internal-order")
+@Validated
+public class ErpInternalOrderController {
+
+
+ @Resource
+ private ErpInternalOrderService erpInternalOrderService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建ERP内部订单")
+ @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:create')")
+ public CommonResult createErpInternalOrder(@Valid @RequestBody ErpInternalOrderSaveReqVO createReqVO) {
+ return success(erpInternalOrderService.createErpInternalOrder(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新ERP内部订单")
+ @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:update')")
+ public CommonResult updateErpInternalOrder(@Valid @RequestBody ErpInternalOrderSaveReqVO updateReqVO) {
+ erpInternalOrderService.updateErpInternalOrder(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除ERP内部订单")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:delete')")
+ public CommonResult deleteErpInternalOrder(@RequestParam("id") Long id) {
+ erpInternalOrderService.deleteErpInternalOrder(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除ERP内部订单")
+ @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:delete')")
+ public CommonResult deleteErpInternalOrderList(@RequestBody BatchDeleteReqVO req) {
+ erpInternalOrderService.deleteErpInternalOrderListByIds(req.getIds());
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得ERP内部订单")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:query')")
+ public CommonResult getErpInternalOrder(@RequestParam("id") Long id) {
+ ErpInternalOrderDO erpInternalOrder = erpInternalOrderService.getErpInternalOrder(id);
+ return success(BeanUtils.toBean(erpInternalOrder, ErpInternalOrderRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得ERP内部订单分页")
+ @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:query')")
+ public CommonResult> getErpInternalOrderPage(@Valid ErpInternalOrderPageReqVO pageReqVO) {
+ PageResult pageResult = erpInternalOrderService.getErpInternalOrderPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ErpInternalOrderRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出ERP内部订单 Excel")
+ @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportErpInternalOrderExcel(@Valid ErpInternalOrderPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = erpInternalOrderService.getErpInternalOrderPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "ERP内部订单.xls", "数据", ErpInternalOrderRespVO.class,
+ BeanUtils.toBean(list, ErpInternalOrderRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveOrderController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveOrderController.java
new file mode 100644
index 0000000..dd6f93b
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveOrderController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveOrderDO;
+import cn.iocoder.yudao.module.erp.service.erp.ErpProductiveOrderService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - ERP生产订单")
+@RestController
+@RequestMapping("/sply/erp-productive-order")
+@Validated
+public class ErpProductiveOrderController {
+
+
+ @Resource
+ private ErpProductiveOrderService erpProductiveOrderService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建ERP生产订单")
+ @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:create')")
+ public CommonResult createErpProductiveOrder(@Valid @RequestBody ErpProductiveOrderSaveReqVO createReqVO) {
+ return success(erpProductiveOrderService.createErpProductiveOrder(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新ERP生产订单")
+ @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:update')")
+ public CommonResult updateErpProductiveOrder(@Valid @RequestBody ErpProductiveOrderSaveReqVO updateReqVO) {
+ erpProductiveOrderService.updateErpProductiveOrder(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除ERP生产订单")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:delete')")
+ public CommonResult deleteErpProductiveOrder(@RequestParam("id") Long id) {
+ erpProductiveOrderService.deleteErpProductiveOrder(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除ERP生产订单")
+ @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:delete')")
+ public CommonResult deleteErpProductiveOrderList(@RequestBody BatchDeleteReqVO req) {
+ erpProductiveOrderService.deleteErpProductiveOrderListByIds(req.getIds());
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得ERP生产订单")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:query')")
+ public CommonResult getErpProductiveOrder(@RequestParam("id") Long id) {
+ ErpProductiveOrderDO erpProductiveOrder = erpProductiveOrderService.getErpProductiveOrder(id);
+ return success(BeanUtils.toBean(erpProductiveOrder, ErpProductiveOrderRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得ERP生产订单分页")
+ @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:query')")
+ public CommonResult> getErpProductiveOrderPage(@Valid ErpProductiveOrderPageReqVO pageReqVO) {
+ PageResult pageResult = erpProductiveOrderService.getErpProductiveOrderPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ErpProductiveOrderRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出ERP生产订单 Excel")
+ @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportErpProductiveOrderExcel(@Valid ErpProductiveOrderPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = erpProductiveOrderService.getErpProductiveOrderPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "ERP生产订单.xls", "数据", ErpProductiveOrderRespVO.class,
+ BeanUtils.toBean(list, ErpProductiveOrderRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java
new file mode 100644
index 0000000..630eb0c
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO;
+import cn.iocoder.yudao.module.erp.service.erp.ErpPurchaseOrganizationService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - ERP采购组织")
+@RestController
+@RequestMapping("/sply/erp-purchase-organization")
+@Validated
+public class ErpPurchaseOrganizationController {
+
+
+ @Resource
+ private ErpPurchaseOrganizationService erpPurchaseOrganizationService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建ERP采购组织")
+ @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:create')")
+ public CommonResult createErpPurchaseOrganization(@Valid @RequestBody ErpPurchaseOrganizationSaveReqVO createReqVO) {
+ return success(erpPurchaseOrganizationService.createErpPurchaseOrganization(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新ERP采购组织")
+ @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:update')")
+ public CommonResult updateErpPurchaseOrganization(@Valid @RequestBody ErpPurchaseOrganizationSaveReqVO updateReqVO) {
+ erpPurchaseOrganizationService.updateErpPurchaseOrganization(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除ERP采购组织")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:delete')")
+ public CommonResult deleteErpPurchaseOrganization(@RequestParam("id") Long id) {
+ erpPurchaseOrganizationService.deleteErpPurchaseOrganization(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除ERP采购组织")
+ @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:delete')")
+ public CommonResult deleteErpPurchaseOrganizationList(@RequestBody BatchDeleteReqVO req) {
+ erpPurchaseOrganizationService.deleteErpPurchaseOrganizationListByIds(req.getIds());
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得ERP采购组织")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:query')")
+ public CommonResult getErpPurchaseOrganization(@RequestParam("id") Long id) {
+ ErpPurchaseOrganizationDO erpPurchaseOrganization = erpPurchaseOrganizationService.getErpPurchaseOrganization(id);
+ return success(BeanUtils.toBean(erpPurchaseOrganization, ErpPurchaseOrganizationRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得ERP采购组织分页")
+ @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:query')")
+ public CommonResult> getErpPurchaseOrganizationPage(@Valid ErpPurchaseOrganizationPageReqVO pageReqVO) {
+ PageResult pageResult = erpPurchaseOrganizationService.getErpPurchaseOrganizationPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ErpPurchaseOrganizationRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出ERP采购组织 Excel")
+ @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportErpPurchaseOrganizationExcel(@Valid ErpPurchaseOrganizationPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = erpPurchaseOrganizationService.getErpPurchaseOrganizationPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "ERP采购组织.xls", "数据", ErpPurchaseOrganizationRespVO.class,
+ BeanUtils.toBean(list, ErpPurchaseOrganizationRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpSalesOrganizationController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpSalesOrganizationController.java
new file mode 100644
index 0000000..2976534
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpSalesOrganizationController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO;
+import cn.iocoder.yudao.module.erp.service.erp.ErpSalesOrganizationService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - ERP销售组织")
+@RestController
+@RequestMapping("/sply/erp-sales-organization")
+@Validated
+public class ErpSalesOrganizationController {
+
+
+ @Resource
+ private ErpSalesOrganizationService erpSalesOrganizationService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建ERP销售组织")
+ @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:create')")
+ public CommonResult createErpSalesOrganization(@Valid @RequestBody ErpSalesOrganizationSaveReqVO createReqVO) {
+ return success(erpSalesOrganizationService.createErpSalesOrganization(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新ERP销售组织")
+ @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:update')")
+ public CommonResult updateErpSalesOrganization(@Valid @RequestBody ErpSalesOrganizationSaveReqVO updateReqVO) {
+ erpSalesOrganizationService.updateErpSalesOrganization(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除ERP销售组织")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:delete')")
+ public CommonResult deleteErpSalesOrganization(@RequestParam("id") Long id) {
+ erpSalesOrganizationService.deleteErpSalesOrganization(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除ERP销售组织")
+ @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:delete')")
+ public CommonResult deleteErpSalesOrganizationList(@RequestBody BatchDeleteReqVO req) {
+ erpSalesOrganizationService.deleteErpSalesOrganizationListByIds(req.getIds());
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得ERP销售组织")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:query')")
+ public CommonResult getErpSalesOrganization(@RequestParam("id") Long id) {
+ ErpSalesOrganizationDO erpSalesOrganization = erpSalesOrganizationService.getErpSalesOrganization(id);
+ return success(BeanUtils.toBean(erpSalesOrganization, ErpSalesOrganizationRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得ERP销售组织分页")
+ @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:query')")
+ public CommonResult> getErpSalesOrganizationPage(@Valid ErpSalesOrganizationPageReqVO pageReqVO) {
+ PageResult pageResult = erpSalesOrganizationService.getErpSalesOrganizationPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ErpSalesOrganizationRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出ERP销售组织 Excel")
+ @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportErpSalesOrganizationExcel(@Valid ErpSalesOrganizationPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = erpSalesOrganizationService.getErpSalesOrganizationPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "ERP销售组织.xls", "数据", ErpSalesOrganizationRespVO.class,
+ BeanUtils.toBean(list, ErpSalesOrganizationRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpWarehouseController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpWarehouseController.java
new file mode 100644
index 0000000..4f967ae
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpWarehouseController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehousePageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehouseRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehouseSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpWarehouseDO;
+import cn.iocoder.yudao.module.erp.service.erp.ErpWarehouseService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - ERP库位")
+@RestController
+@RequestMapping("/sply/erp-warehouse")
+@Validated
+public class ErpWarehouseController {
+
+
+ @Resource
+ private ErpWarehouseService erpWarehouseService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建ERP库位")
+ @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:create')")
+ public CommonResult createErpWarehouse(@Valid @RequestBody ErpWarehouseSaveReqVO createReqVO) {
+ return success(erpWarehouseService.createErpWarehouse(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新ERP库位")
+ @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:update')")
+ public CommonResult updateErpWarehouse(@Valid @RequestBody ErpWarehouseSaveReqVO updateReqVO) {
+ erpWarehouseService.updateErpWarehouse(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除ERP库位")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:delete')")
+ public CommonResult deleteErpWarehouse(@RequestParam("id") Long id) {
+ erpWarehouseService.deleteErpWarehouse(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除ERP库位")
+ @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:delete')")
+ public CommonResult deleteErpWarehouseList(@RequestBody BatchDeleteReqVO req) {
+ erpWarehouseService.deleteErpWarehouseListByIds(req.getIds());
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得ERP库位")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:query')")
+ public CommonResult getErpWarehouse(@RequestParam("id") Long id) {
+ ErpWarehouseDO erpWarehouse = erpWarehouseService.getErpWarehouse(id);
+ return success(BeanUtils.toBean(erpWarehouse, ErpWarehouseRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得ERP库位分页")
+ @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:query')")
+ public CommonResult> getErpWarehousePage(@Valid ErpWarehousePageReqVO pageReqVO) {
+ PageResult pageResult = erpWarehouseService.getErpWarehousePage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ErpWarehouseRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出ERP库位 Excel")
+ @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportErpWarehouseExcel(@Valid ErpWarehousePageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = erpWarehouseService.getErpWarehousePage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "ERP库位.xls", "数据", ErpWarehouseRespVO.class,
+ BeanUtils.toBean(list, ErpWarehouseRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetPageReqVO.java
new file mode 100644
index 0000000..8ab5deb
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetPageReqVO.java
@@ -0,0 +1,66 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - ERP资产卡片分页 Request VO")
+@Data
+public class ErpAssetPageReqVO extends PageParam {
+
+ @Schema(description = "公司编号")
+ private String companyNumber;
+
+ @Schema(description = "资产主编码")
+ private String mainAssetNumber;
+
+ @Schema(description = "记录创建日期")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] recordCreateDate;
+
+ @Schema(description = "更改用户名", example = "芋艿")
+ private String updateUserName;
+
+ @Schema(description = "资产类编号")
+ private String assetTypeNumber;
+
+ @Schema(description = "资产类描述", example = "李四")
+ private String assetTypeName;
+
+ @Schema(description = "资产资本化日期")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] assetDate;
+
+ @Schema(description = "基本计量单位")
+ private String uom;
+
+ @Schema(description = "数量")
+ private BigDecimal quantity;
+
+ @Schema(description = "资产描述")
+ private String assetDescription;
+
+ @Schema(description = "附加资产描述")
+ private String assetDescriptionAttach;
+
+ @Schema(description = "折旧计算开始日期")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] depreciationStartDate;
+
+ @Schema(description = "计划年使用期")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] planYearDate;
+
+ @Schema(description = "成本中心编码")
+ private String costcenterNumber;
+
+ @Schema(description = "责任成本中心")
+ private String dutyCostcenterNumber;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetRespVO.java
new file mode 100644
index 0000000..b98b3c0
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetRespVO.java
@@ -0,0 +1,80 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - ERP资产卡片 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ErpAssetRespVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31799")
+ @ExcelProperty("主键")
+ private Long id;
+
+ @Schema(description = "公司编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("公司编号")
+ private String companyNumber;
+
+ @Schema(description = "资产主编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("资产主编码")
+ private String mainAssetNumber;
+
+ @Schema(description = "记录创建日期", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("记录创建日期")
+ private LocalDateTime recordCreateDate;
+
+ @Schema(description = "更改用户名", example = "芋艿")
+ @ExcelProperty("更改用户名")
+ private String updateUserName;
+
+ @Schema(description = "资产类编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("资产类编号")
+ private String assetTypeNumber;
+
+ @Schema(description = "资产类描述", example = "李四")
+ @ExcelProperty("资产类描述")
+ private String assetTypeName;
+
+ @Schema(description = "资产资本化日期")
+ @ExcelProperty("资产资本化日期")
+ private LocalDateTime assetDate;
+
+ @Schema(description = "基本计量单位")
+ @ExcelProperty("基本计量单位")
+ private String uom;
+
+ @Schema(description = "数量")
+ @ExcelProperty("数量")
+ private BigDecimal quantity;
+
+ @Schema(description = "资产描述")
+ @ExcelProperty("资产描述")
+ private String assetDescription;
+
+ @Schema(description = "附加资产描述")
+ @ExcelProperty("附加资产描述")
+ private String assetDescriptionAttach;
+
+ @Schema(description = "折旧计算开始日期")
+ @ExcelProperty("折旧计算开始日期")
+ private LocalDateTime depreciationStartDate;
+
+ @Schema(description = "计划年使用期")
+ @ExcelProperty("计划年使用期")
+ private LocalDateTime planYearDate;
+
+ @Schema(description = "成本中心编码")
+ @ExcelProperty("成本中心编码")
+ private String costcenterNumber;
+
+ @Schema(description = "责任成本中心")
+ @ExcelProperty("责任成本中心")
+ private String dutyCostcenterNumber;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetSaveReqVO.java
new file mode 100644
index 0000000..432c5e6
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetSaveReqVO.java
@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - ERP资产卡片新增/修改 Request VO")
+@Data
+public class ErpAssetSaveReqVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31799")
+ private Long id;
+
+ @Schema(description = "公司编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "公司编号不能为空")
+ private String companyNumber;
+
+ @Schema(description = "资产主编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "资产主编码不能为空")
+ private String mainAssetNumber;
+
+ @Schema(description = "记录创建日期", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "记录创建日期不能为空")
+ private LocalDateTime recordCreateDate;
+
+ @Schema(description = "更改用户名", example = "芋艿")
+ private String updateUserName;
+
+ @Schema(description = "资产类编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "资产类编号不能为空")
+ private String assetTypeNumber;
+
+ @Schema(description = "资产类描述", example = "李四")
+ private String assetTypeName;
+
+ @Schema(description = "资产资本化日期")
+ private LocalDateTime assetDate;
+
+ @Schema(description = "基本计量单位")
+ private String uom;
+
+ @Schema(description = "数量")
+ private BigDecimal quantity;
+
+ @Schema(description = "资产描述")
+ private String assetDescription;
+
+ @Schema(description = "附加资产描述")
+ private String assetDescriptionAttach;
+
+ @Schema(description = "折旧计算开始日期")
+ private LocalDateTime depreciationStartDate;
+
+ @Schema(description = "计划年使用期")
+ private LocalDateTime planYearDate;
+
+ @Schema(description = "成本中心编码")
+ private String costcenterNumber;
+
+ @Schema(description = "责任成本中心")
+ private String dutyCostcenterNumber;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractPageReqVO.java
new file mode 100644
index 0000000..0746cab
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractPageReqVO.java
@@ -0,0 +1,180 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - ERP合同映射分页 Request VO")
+@Data
+public class ErpContractPageReqVO extends PageParam {
+
+ @Schema(description = "操作标识", example = "3035")
+ private String operationId;
+
+ @Schema(description = "合同主信息主键", example = "10259")
+ private Long contractMainId;
+
+ @Schema(description = "合同编号")
+ private String contractPaperNumber;
+
+ @Schema(description = "合同名称", example = "芋艿")
+ private String contractName;
+
+ @Schema(description = "合同类型编号")
+ private String contractTypeNumber;
+
+ @Schema(description = "合同类型名称", example = "李四")
+ private String contractTypeName;
+
+ @Schema(description = "合同类别")
+ private String contractCategory;
+
+ @Schema(description = "是否虚拟合同")
+ private String isVirtualContract;
+
+ @Schema(description = "客户/供应商编号;SAP客商公司代码")
+ private String supplierNumber;
+
+ @Schema(description = "客户/供应商名称;SAP客商公司名称", example = "张三")
+ private String supplierName;
+
+ @Schema(description = "代理方;SAP客商公司代码")
+ private String agent;
+
+ @Schema(description = "合同实施主体编号;SAP公司代码")
+ private String contractImplementNumber;
+
+ @Schema(description = "合同签订主体编号;SAP公司代码")
+ private String contractSignNumber;
+
+ @Schema(description = "合同签订日期;格式:YYYY-MM-DD")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDate[] signDate;
+
+ @Schema(description = "合同起始日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDate[] startDate;
+
+ @Schema(description = "合同终止日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDate[] stopDate;
+
+ @Schema(description = "币种编号")
+ private String currency;
+
+ @Schema(description = "合同总金额(原币-含税);非长单合同:合同金额 长单合同:默认1000000000000000.00")
+ private BigDecimal sourceAmount;
+
+ @Schema(description = "合同总金额(本位币-含税);非长单合同:合同金额*合同的临时汇率 长单合同:默认1000000000000000.00")
+ private BigDecimal basicAmount;
+
+ @Schema(description = "变更后合同总金额(原币-含税);如果未做合同变更,金额等于合同总金额(原币-含税)")
+ private BigDecimal changeSourceAmount;
+
+ @Schema(description = "变更后合同总金额(本位币-含税);如果未做合同变更,金额等于合同总金额(本位币-含税)")
+ private BigDecimal changeBasicAmount;
+
+ @Schema(description = "合同状态编号")
+ private String statusNumber;
+
+ @Schema(description = "合同状态名称", example = "赵六")
+ private String statusName;
+
+ @Schema(description = "是否有预付款;长单合同:否,非长单:取合同的预付款")
+ private String isPrepayment;
+
+ @Schema(description = "预付款比例;有预付款则需要填写")
+ private BigDecimal prepaymentRatio;
+
+ @Schema(description = "预付款金额;有预付款则需要填写(通过计算得出)")
+ private BigDecimal prepaymentAmount;
+
+ @Schema(description = "履约保证金-变更前(原币)")
+ private BigDecimal sourceBeforeBond;
+
+ @Schema(description = "履约保证金-变更前(本位币)")
+ private BigDecimal basicBeforeBond;
+
+ @Schema(description = "履约保证金-变更后(原币)")
+ private BigDecimal sourceAfterBond;
+
+ @Schema(description = "履约保证金-变更后(本位币)")
+ private BigDecimal basicAfterBond;
+
+ @Schema(description = "是否含质保金")
+ private String isQualityassuranceAmount;
+
+ @Schema(description = "质保金比例;有质保金则需要填写")
+ private BigDecimal qualityassuranceRatio;
+
+ @Schema(description = "质保金金额;有质保金则需要填写")
+ private BigDecimal qualityassuranceAmount;
+
+ @Schema(description = "是否内部企业")
+ private String isInternal;
+
+ @Schema(description = "收支性质")
+ private String nature;
+
+ @Schema(description = "备注信息;提交ERP")
+ private String remark;
+
+ @Schema(description = "累计结算金额(原币-含税);暂定不传")
+ private BigDecimal sourceAccumulateSettlementAmount;
+
+ @Schema(description = "累计结算金额(本位币-含税);暂定不传")
+ private BigDecimal basicAccumulateSettlementAmount;
+
+ @Schema(description = "累计已收付款金额(原币-含税);暂定不传")
+ private BigDecimal sourceUseAmount;
+
+ @Schema(description = "累计已收付款金额(本位币-含税);暂定不传")
+ private BigDecimal basicUseAmount;
+
+ @Schema(description = "累计已开收票金额(原币-含税);暂定不传")
+ private BigDecimal sourceInvoiceAmount;
+
+ @Schema(description = "累计已开收票金额(本位币-含税);暂定不传")
+ private BigDecimal basicInvoiceAmount;
+
+ @Schema(description = "累计预付款金额(原币-含税);暂定不传")
+ private BigDecimal sourceAccumulatePrepayment;
+
+ @Schema(description = "累计预付款金额(本位币-含税);暂定不传")
+ private BigDecimal basicAccumulatePrepayment;
+
+ @Schema(description = "履约保证金累计付款金额(原币);暂定不传")
+ private BigDecimal sourceAccumulateBond;
+
+ @Schema(description = "履约保证金累计付款金额(本位币);暂定不传")
+ private BigDecimal basicAccumulateBond;
+
+ @Schema(description = "履约保证金累计收款金额(原币);暂定不传")
+ private BigDecimal sourceAccumulateAmount;
+
+ @Schema(description = "履约保证金累计收款金额(本位币);暂定不传")
+ private BigDecimal basicAccumulateAmount;
+
+ @Schema(description = "是否框架合同;如果为是,合同总金额(本币)、合同总金额(原币)、变更后合同总金额(原币-含税)、变更后合同总金额(本位币-含税)赋默认值为:1000000000000000.00")
+ private String isFramework;
+
+ @Schema(description = "境内/境外")
+ private String isDomestic;
+
+ @Schema(description = "建筑服务发生地;销售合同,且类型为SAP02COSR必填")
+ private String architectureServicePlace;
+
+ @Schema(description = "达到收款条件金额;销售合同,且类型为SAP02COSR必填")
+ private BigDecimal payeeConditionAmount;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDate[] createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractRespVO.java
new file mode 100644
index 0000000..3dd9ebc
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractRespVO.java
@@ -0,0 +1,232 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+@Schema(description = "管理后台 - ERP合同映射 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ErpContractRespVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9114")
+ @ExcelProperty("主键")
+ private Long id;
+
+ @Schema(description = "操作标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "3035")
+ @ExcelProperty("操作标识")
+ private String operationId;
+
+ @Schema(description = "合同主信息主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10259")
+ @ExcelProperty("合同主信息主键")
+ private Long contractMainId;
+
+ @Schema(description = "合同编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("合同编号")
+ private String contractPaperNumber;
+
+ @Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
+ @ExcelProperty("合同名称")
+ private String contractName;
+
+ @Schema(description = "合同类型编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("合同类型编号")
+ private String contractTypeNumber;
+
+ @Schema(description = "合同类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+ @ExcelProperty("合同类型名称")
+ private String contractTypeName;
+
+ @Schema(description = "合同类别", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("合同类别")
+ private String contractCategory;
+
+ @Schema(description = "是否虚拟合同", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("是否虚拟合同")
+ private String isVirtualContract;
+
+ @Schema(description = "客户/供应商编号;SAP客商公司代码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("客户/供应商编号;SAP客商公司代码")
+ private String supplierNumber;
+
+ @Schema(description = "客户/供应商名称;SAP客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+ @ExcelProperty("客户/供应商名称;SAP客商公司名称")
+ private String supplierName;
+
+ @Schema(description = "代理方;SAP客商公司代码")
+ @ExcelProperty("代理方;SAP客商公司代码")
+ private String agent;
+
+ @Schema(description = "合同实施主体编号;SAP公司代码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("合同实施主体编号;SAP公司代码")
+ private String contractImplementNumber;
+
+ @Schema(description = "合同签订主体编号;SAP公司代码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("合同签订主体编号;SAP公司代码")
+ private String contractSignNumber;
+
+ @Schema(description = "合同签订日期;格式:YYYY-MM-DD", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("合同签订日期;格式:YYYY-MM-DD")
+ private LocalDate signDate;
+
+ @Schema(description = "合同起始日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("合同起始日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期")
+ private LocalDate startDate;
+
+ @Schema(description = "合同终止日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("合同终止日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期")
+ private LocalDate stopDate;
+
+ @Schema(description = "币种编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("币种编号")
+ private String currency;
+
+ @Schema(description = "合同总金额(原币-含税);非长单合同:合同金额 长单合同:默认1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("合同总金额(原币-含税);非长单合同:合同金额 长单合同:默认1000000000000000.00")
+ private BigDecimal sourceAmount;
+
+ @Schema(description = "合同总金额(本位币-含税);非长单合同:合同金额*合同的临时汇率 长单合同:默认1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("合同总金额(本位币-含税);非长单合同:合同金额*合同的临时汇率 长单合同:默认1000000000000000.00")
+ private BigDecimal basicAmount;
+
+ @Schema(description = "变更后合同总金额(原币-含税);如果未做合同变更,金额等于合同总金额(原币-含税)", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("变更后合同总金额(原币-含税);如果未做合同变更,金额等于合同总金额(原币-含税)")
+ private BigDecimal changeSourceAmount;
+
+ @Schema(description = "变更后合同总金额(本位币-含税);如果未做合同变更,金额等于合同总金额(本位币-含税)", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("变更后合同总金额(本位币-含税);如果未做合同变更,金额等于合同总金额(本位币-含税)")
+ private BigDecimal changeBasicAmount;
+
+ @Schema(description = "合同状态编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("合同状态编号")
+ private String statusNumber;
+
+ @Schema(description = "合同状态名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
+ @ExcelProperty("合同状态名称")
+ private String statusName;
+
+ @Schema(description = "是否有预付款;长单合同:否,非长单:取合同的预付款", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("是否有预付款;长单合同:否,非长单:取合同的预付款")
+ private String isPrepayment;
+
+ @Schema(description = "预付款比例;有预付款则需要填写")
+ @ExcelProperty("预付款比例;有预付款则需要填写")
+ private BigDecimal prepaymentRatio;
+
+ @Schema(description = "预付款金额;有预付款则需要填写(通过计算得出)")
+ @ExcelProperty("预付款金额;有预付款则需要填写(通过计算得出)")
+ private BigDecimal prepaymentAmount;
+
+ @Schema(description = "履约保证金-变更前(原币)")
+ @ExcelProperty("履约保证金-变更前(原币)")
+ private BigDecimal sourceBeforeBond;
+
+ @Schema(description = "履约保证金-变更前(本位币)")
+ @ExcelProperty("履约保证金-变更前(本位币)")
+ private BigDecimal basicBeforeBond;
+
+ @Schema(description = "履约保证金-变更后(原币)")
+ @ExcelProperty("履约保证金-变更后(原币)")
+ private BigDecimal sourceAfterBond;
+
+ @Schema(description = "履约保证金-变更后(本位币)")
+ @ExcelProperty("履约保证金-变更后(本位币)")
+ private BigDecimal basicAfterBond;
+
+ @Schema(description = "是否含质保金", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("是否含质保金")
+ private String isQualityassuranceAmount;
+
+ @Schema(description = "质保金比例;有质保金则需要填写")
+ @ExcelProperty("质保金比例;有质保金则需要填写")
+ private BigDecimal qualityassuranceRatio;
+
+ @Schema(description = "质保金金额;有质保金则需要填写")
+ @ExcelProperty("质保金金额;有质保金则需要填写")
+ private BigDecimal qualityassuranceAmount;
+
+ @Schema(description = "是否内部企业", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("是否内部企业")
+ private String isInternal;
+
+ @Schema(description = "收支性质", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("收支性质")
+ private String nature;
+
+ @Schema(description = "备注信息;提交ERP")
+ @ExcelProperty("备注信息;提交ERP")
+ private String remark;
+
+ @Schema(description = "累计结算金额(原币-含税);暂定不传")
+ @ExcelProperty("累计结算金额(原币-含税);暂定不传")
+ private BigDecimal sourceAccumulateSettlementAmount;
+
+ @Schema(description = "累计结算金额(本位币-含税);暂定不传")
+ @ExcelProperty("累计结算金额(本位币-含税);暂定不传")
+ private BigDecimal basicAccumulateSettlementAmount;
+
+ @Schema(description = "累计已收付款金额(原币-含税);暂定不传")
+ @ExcelProperty("累计已收付款金额(原币-含税);暂定不传")
+ private BigDecimal sourceUseAmount;
+
+ @Schema(description = "累计已收付款金额(本位币-含税);暂定不传")
+ @ExcelProperty("累计已收付款金额(本位币-含税);暂定不传")
+ private BigDecimal basicUseAmount;
+
+ @Schema(description = "累计已开收票金额(原币-含税);暂定不传")
+ @ExcelProperty("累计已开收票金额(原币-含税);暂定不传")
+ private BigDecimal sourceInvoiceAmount;
+
+ @Schema(description = "累计已开收票金额(本位币-含税);暂定不传")
+ @ExcelProperty("累计已开收票金额(本位币-含税);暂定不传")
+ private BigDecimal basicInvoiceAmount;
+
+ @Schema(description = "累计预付款金额(原币-含税);暂定不传")
+ @ExcelProperty("累计预付款金额(原币-含税);暂定不传")
+ private BigDecimal sourceAccumulatePrepayment;
+
+ @Schema(description = "累计预付款金额(本位币-含税);暂定不传")
+ @ExcelProperty("累计预付款金额(本位币-含税);暂定不传")
+ private BigDecimal basicAccumulatePrepayment;
+
+ @Schema(description = "履约保证金累计付款金额(原币);暂定不传")
+ @ExcelProperty("履约保证金累计付款金额(原币);暂定不传")
+ private BigDecimal sourceAccumulateBond;
+
+ @Schema(description = "履约保证金累计付款金额(本位币);暂定不传")
+ @ExcelProperty("履约保证金累计付款金额(本位币);暂定不传")
+ private BigDecimal basicAccumulateBond;
+
+ @Schema(description = "履约保证金累计收款金额(原币);暂定不传")
+ @ExcelProperty("履约保证金累计收款金额(原币);暂定不传")
+ private BigDecimal sourceAccumulateAmount;
+
+ @Schema(description = "履约保证金累计收款金额(本位币);暂定不传")
+ @ExcelProperty("履约保证金累计收款金额(本位币);暂定不传")
+ private BigDecimal basicAccumulateAmount;
+
+ @Schema(description = "是否框架合同;如果为是,合同总金额(本币)、合同总金额(原币)、变更后合同总金额(原币-含税)、变更后合同总金额(本位币-含税)赋默认值为:1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("是否框架合同;如果为是,合同总金额(本币)、合同总金额(原币)、变更后合同总金额(原币-含税)、变更后合同总金额(本位币-含税)赋默认值为:1000000000000000.00")
+ private String isFramework;
+
+ @Schema(description = "境内/境外", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("境内/境外")
+ private String isDomestic;
+
+ @Schema(description = "建筑服务发生地;销售合同,且类型为SAP02COSR必填")
+ @ExcelProperty("建筑服务发生地;销售合同,且类型为SAP02COSR必填")
+ private String architectureServicePlace;
+
+ @Schema(description = "达到收款条件金额;销售合同,且类型为SAP02COSR必填")
+ @ExcelProperty("达到收款条件金额;销售合同,且类型为SAP02COSR必填")
+ private BigDecimal payeeConditionAmount;
+
+ @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("创建时间")
+ private LocalDate createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractSaveReqVO.java
new file mode 100644
index 0000000..9821b12
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractSaveReqVO.java
@@ -0,0 +1,202 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+@Schema(description = "管理后台 - ERP合同映射新增/修改 Request VO")
+@Data
+public class ErpContractSaveReqVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9114")
+ private Long id;
+
+ @Schema(description = "操作标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "3035")
+ @NotEmpty(message = "操作标识不能为空")
+ private String operationId;
+
+ @Schema(description = "合同主信息主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10259")
+ @NotNull(message = "合同主信息主键不能为空")
+ private Long contractMainId;
+
+ @Schema(description = "合同编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "合同编号不能为空")
+ private String contractPaperNumber;
+
+ @Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
+ @NotEmpty(message = "合同名称不能为空")
+ private String contractName;
+
+ @Schema(description = "合同类型编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "合同类型编号不能为空")
+ private String contractTypeNumber;
+
+ @Schema(description = "合同类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+ @NotEmpty(message = "合同类型名称不能为空")
+ private String contractTypeName;
+
+ @Schema(description = "合同类别", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "合同类别不能为空")
+ private String contractCategory;
+
+ @Schema(description = "是否虚拟合同", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "是否虚拟合同不能为空")
+ private String isVirtualContract;
+
+ @Schema(description = "客户/供应商编号;SAP客商公司代码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "客户/供应商编号;SAP客商公司代码不能为空")
+ private String supplierNumber;
+
+ @Schema(description = "客户/供应商名称;SAP客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+ @NotEmpty(message = "客户/供应商名称;SAP客商公司名称不能为空")
+ private String supplierName;
+
+ @Schema(description = "代理方;SAP客商公司代码")
+ private String agent;
+
+ @Schema(description = "合同实施主体编号;SAP公司代码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "合同实施主体编号;SAP公司代码不能为空")
+ private String contractImplementNumber;
+
+ @Schema(description = "合同签订主体编号;SAP公司代码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "合同签订主体编号;SAP公司代码不能为空")
+ private String contractSignNumber;
+
+ @Schema(description = "合同签订日期;格式:YYYY-MM-DD", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "合同签订日期;格式:YYYY-MM-DD不能为空")
+ private LocalDate signDate;
+
+ @Schema(description = "合同起始日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "合同起始日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期不能为空")
+ private LocalDate startDate;
+
+ @Schema(description = "合同终止日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "合同终止日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期不能为空")
+ private LocalDate stopDate;
+
+ @Schema(description = "币种编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "币种编号不能为空")
+ private String currency;
+
+ @Schema(description = "合同总金额(原币-含税);非长单合同:合同金额 长单合同:默认1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "合同总金额(原币-含税);非长单合同:合同金额 长单合同:默认1000000000000000.00不能为空")
+ private BigDecimal sourceAmount;
+
+ @Schema(description = "合同总金额(本位币-含税);非长单合同:合同金额*合同的临时汇率 长单合同:默认1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "合同总金额(本位币-含税);非长单合同:合同金额*合同的临时汇率 长单合同:默认1000000000000000.00不能为空")
+ private BigDecimal basicAmount;
+
+ @Schema(description = "变更后合同总金额(原币-含税);如果未做合同变更,金额等于合同总金额(原币-含税)", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "变更后合同总金额(原币-含税);如果未做合同变更,金额等于合同总金额(原币-含税)不能为空")
+ private BigDecimal changeSourceAmount;
+
+ @Schema(description = "变更后合同总金额(本位币-含税);如果未做合同变更,金额等于合同总金额(本位币-含税)", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "变更后合同总金额(本位币-含税);如果未做合同变更,金额等于合同总金额(本位币-含税)不能为空")
+ private BigDecimal changeBasicAmount;
+
+ @Schema(description = "合同状态编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "合同状态编号不能为空")
+ private String statusNumber;
+
+ @Schema(description = "合同状态名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
+ @NotEmpty(message = "合同状态名称不能为空")
+ private String statusName;
+
+ @Schema(description = "是否有预付款;长单合同:否,非长单:取合同的预付款", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "是否有预付款;长单合同:否,非长单:取合同的预付款不能为空")
+ private String isPrepayment;
+
+ @Schema(description = "预付款比例;有预付款则需要填写")
+ private BigDecimal prepaymentRatio;
+
+ @Schema(description = "预付款金额;有预付款则需要填写(通过计算得出)")
+ private BigDecimal prepaymentAmount;
+
+ @Schema(description = "履约保证金-变更前(原币)")
+ private BigDecimal sourceBeforeBond;
+
+ @Schema(description = "履约保证金-变更前(本位币)")
+ private BigDecimal basicBeforeBond;
+
+ @Schema(description = "履约保证金-变更后(原币)")
+ private BigDecimal sourceAfterBond;
+
+ @Schema(description = "履约保证金-变更后(本位币)")
+ private BigDecimal basicAfterBond;
+
+ @Schema(description = "是否含质保金", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "是否含质保金不能为空")
+ private String isQualityassuranceAmount;
+
+ @Schema(description = "质保金比例;有质保金则需要填写")
+ private BigDecimal qualityassuranceRatio;
+
+ @Schema(description = "质保金金额;有质保金则需要填写")
+ private BigDecimal qualityassuranceAmount;
+
+ @Schema(description = "是否内部企业", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "是否内部企业不能为空")
+ private String isInternal;
+
+ @Schema(description = "收支性质", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "收支性质不能为空")
+ private String nature;
+
+ @Schema(description = "备注信息;提交ERP")
+ private String remark;
+
+ @Schema(description = "累计结算金额(原币-含税);暂定不传")
+ private BigDecimal sourceAccumulateSettlementAmount;
+
+ @Schema(description = "累计结算金额(本位币-含税);暂定不传")
+ private BigDecimal basicAccumulateSettlementAmount;
+
+ @Schema(description = "累计已收付款金额(原币-含税);暂定不传")
+ private BigDecimal sourceUseAmount;
+
+ @Schema(description = "累计已收付款金额(本位币-含税);暂定不传")
+ private BigDecimal basicUseAmount;
+
+ @Schema(description = "累计已开收票金额(原币-含税);暂定不传")
+ private BigDecimal sourceInvoiceAmount;
+
+ @Schema(description = "累计已开收票金额(本位币-含税);暂定不传")
+ private BigDecimal basicInvoiceAmount;
+
+ @Schema(description = "累计预付款金额(原币-含税);暂定不传")
+ private BigDecimal sourceAccumulatePrepayment;
+
+ @Schema(description = "累计预付款金额(本位币-含税);暂定不传")
+ private BigDecimal basicAccumulatePrepayment;
+
+ @Schema(description = "履约保证金累计付款金额(原币);暂定不传")
+ private BigDecimal sourceAccumulateBond;
+
+ @Schema(description = "履约保证金累计付款金额(本位币);暂定不传")
+ private BigDecimal basicAccumulateBond;
+
+ @Schema(description = "履约保证金累计收款金额(原币);暂定不传")
+ private BigDecimal sourceAccumulateAmount;
+
+ @Schema(description = "履约保证金累计收款金额(本位币);暂定不传")
+ private BigDecimal basicAccumulateAmount;
+
+ @Schema(description = "是否框架合同;如果为是,合同总金额(本币)、合同总金额(原币)、变更后合同总金额(原币-含税)、变更后合同总金额(本位币-含税)赋默认值为:1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "是否框架合同;如果为是,合同总金额(本币)、合同总金额(原币)、变更后合同总金额(原币-含税)、变更后合同总金额(本位币-含税)赋默认值为:1000000000000000.00不能为空")
+ private String isFramework;
+
+ @Schema(description = "境内/境外", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "境内/境外不能为空")
+ private String isDomestic;
+
+ @Schema(description = "建筑服务发生地;销售合同,且类型为SAP02COSR必填")
+ private String architectureServicePlace;
+
+ @Schema(description = "达到收款条件金额;销售合同,且类型为SAP02COSR必填")
+ private BigDecimal payeeConditionAmount;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderPageReqVO.java
new file mode 100644
index 0000000..a14fc06
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderPageReqVO.java
@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - ERP内部订单分页 Request VO")
+@Data
+public class ErpInternalOrderPageReqVO extends PageParam {
+
+ @Schema(description = "内部订单编号")
+ private String number;
+
+ @Schema(description = "内部订单描述", example = "王五")
+ private String name;
+
+ @Schema(description = "内部订单类型", example = "2")
+ private String type;
+
+ @Schema(description = "是否已关闭;使用这个基础数据是,如果为X时必须和工区使用")
+ private String isOff;
+
+ @Schema(description = "是否已完成")
+ private String isFinish;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderRespVO.java
new file mode 100644
index 0000000..aa6965c
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderRespVO.java
@@ -0,0 +1,37 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - ERP内部订单 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ErpInternalOrderRespVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19327")
+ @ExcelProperty("主键")
+ private Long id;
+
+ @Schema(description = "内部订单编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("内部订单编号")
+ private String number;
+
+ @Schema(description = "内部订单描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+ @ExcelProperty("内部订单描述")
+ private String name;
+
+ @Schema(description = "内部订单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+ @ExcelProperty("内部订单类型")
+ private String type;
+
+ @Schema(description = "是否已关闭;使用这个基础数据是,如果为X时必须和工区使用", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("是否已关闭;使用这个基础数据是,如果为X时必须和工区使用")
+ private String isOff;
+
+ @Schema(description = "是否已完成")
+ @ExcelProperty("是否已完成")
+ private String isFinish;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderSaveReqVO.java
new file mode 100644
index 0000000..5b07336
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderSaveReqVO.java
@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.Data;
+
+@Schema(description = "管理后台 - ERP内部订单新增/修改 Request VO")
+@Data
+public class ErpInternalOrderSaveReqVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19327")
+ private Long id;
+
+ @Schema(description = "内部订单编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "内部订单编号不能为空")
+ private String number;
+
+ @Schema(description = "内部订单描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+ @NotEmpty(message = "内部订单描述不能为空")
+ private String name;
+
+ @Schema(description = "内部订单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+ @NotEmpty(message = "内部订单类型不能为空")
+ private String type;
+
+ @Schema(description = "是否已关闭;使用这个基础数据是,如果为X时必须和工区使用", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "是否已关闭;使用这个基础数据是,如果为X时必须和工区使用不能为空")
+ private String isOff;
+
+ @Schema(description = "是否已完成")
+ private String isFinish;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderPageReqVO.java
new file mode 100644
index 0000000..b9aaa02
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderPageReqVO.java
@@ -0,0 +1,69 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - ERP生产订单分页 Request VO")
+@Data
+public class ErpProductiveOrderPageReqVO extends PageParam {
+
+ @Schema(description = "公司编号")
+ private String companyNumber;
+
+ @Schema(description = "工厂编码")
+ private String factoryNumber;
+
+ @Schema(description = "工厂名称", example = "赵六")
+ private String factoryName;
+
+ @Schema(description = "订单编号")
+ private String orderNumber;
+
+ @Schema(description = "基本开始日期")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] startDate;
+
+ @Schema(description = "基本完成日期")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] endDate;
+
+ @Schema(description = "主产品物料编号")
+ private String mainMaterialNumber;
+
+ @Schema(description = "计量单位")
+ private String unit;
+
+ @Schema(description = "物料描述")
+ private String materialDescription;
+
+ @Schema(description = "工序列表")
+ private String processingList;
+
+ @Schema(description = "工序编号")
+ private String processingNumber;
+
+ @Schema(description = "工序描述")
+ private String processingDescription;
+
+ @Schema(description = "对象编号")
+ private String objectNumber;
+
+ @Schema(description = "工作中心编码")
+ private String workCenterNumber;
+
+ @Schema(description = "工作中心描述")
+ private String workCenterDescription;
+
+ @Schema(description = "成本中心编码")
+ private String costcenterNumber;
+
+ @Schema(description = "成本中心描述", example = "赵六")
+ private String costcenterName;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderRespVO.java
new file mode 100644
index 0000000..400f646
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderRespVO.java
@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - ERP生产订单 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ErpProductiveOrderRespVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24243")
+ @ExcelProperty("主键")
+ private Long id;
+
+ @Schema(description = "公司编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("公司编号")
+ private String companyNumber;
+
+ @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("工厂编码")
+ private String factoryNumber;
+
+ @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
+ @ExcelProperty("工厂名称")
+ private String factoryName;
+
+ @Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("订单编号")
+ private String orderNumber;
+
+ @Schema(description = "基本开始日期", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("基本开始日期")
+ private LocalDateTime startDate;
+
+ @Schema(description = "基本完成日期", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("基本完成日期")
+ private LocalDateTime endDate;
+
+ @Schema(description = "主产品物料编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("主产品物料编号")
+ private String mainMaterialNumber;
+
+ @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("计量单位")
+ private String unit;
+
+ @Schema(description = "物料描述", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("物料描述")
+ private String materialDescription;
+
+ @Schema(description = "工序列表", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("工序列表")
+ private String processingList;
+
+ @Schema(description = "工序编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("工序编号")
+ private String processingNumber;
+
+ @Schema(description = "工序描述")
+ @ExcelProperty("工序描述")
+ private String processingDescription;
+
+ @Schema(description = "对象编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("对象编号")
+ private String objectNumber;
+
+ @Schema(description = "工作中心编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("工作中心编码")
+ private String workCenterNumber;
+
+ @Schema(description = "工作中心描述")
+ @ExcelProperty("工作中心描述")
+ private String workCenterDescription;
+
+ @Schema(description = "成本中心编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("成本中心编码")
+ private String costcenterNumber;
+
+ @Schema(description = "成本中心描述", example = "赵六")
+ @ExcelProperty("成本中心描述")
+ private String costcenterName;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderSaveReqVO.java
new file mode 100644
index 0000000..b891d4f
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderSaveReqVO.java
@@ -0,0 +1,82 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - ERP生产订单新增/修改 Request VO")
+@Data
+public class ErpProductiveOrderSaveReqVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24243")
+ private Long id;
+
+ @Schema(description = "公司编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "公司编号不能为空")
+ private String companyNumber;
+
+ @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "工厂编码不能为空")
+ private String factoryNumber;
+
+ @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
+ @NotEmpty(message = "工厂名称不能为空")
+ private String factoryName;
+
+ @Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "订单编号不能为空")
+ private String orderNumber;
+
+ @Schema(description = "基本开始日期", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "基本开始日期不能为空")
+ private LocalDateTime startDate;
+
+ @Schema(description = "基本完成日期", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "基本完成日期不能为空")
+ private LocalDateTime endDate;
+
+ @Schema(description = "主产品物料编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "主产品物料编号不能为空")
+ private String mainMaterialNumber;
+
+ @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "计量单位不能为空")
+ private String unit;
+
+ @Schema(description = "物料描述", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "物料描述不能为空")
+ private String materialDescription;
+
+ @Schema(description = "工序列表", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "工序列表不能为空")
+ private String processingList;
+
+ @Schema(description = "工序编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "工序编号不能为空")
+ private String processingNumber;
+
+ @Schema(description = "工序描述")
+ private String processingDescription;
+
+ @Schema(description = "对象编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "对象编号不能为空")
+ private String objectNumber;
+
+ @Schema(description = "工作中心编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "工作中心编码不能为空")
+ private String workCenterNumber;
+
+ @Schema(description = "工作中心描述")
+ private String workCenterDescription;
+
+ @Schema(description = "成本中心编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "成本中心编码不能为空")
+ private String costcenterNumber;
+
+ @Schema(description = "成本中心描述", example = "赵六")
+ private String costcenterName;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationPageReqVO.java
new file mode 100644
index 0000000..7d9393e
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationPageReqVO.java
@@ -0,0 +1,20 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - ERP采购组织分页 Request VO")
+@Data
+public class ErpPurchaseOrganizationPageReqVO extends PageParam {
+
+ @Schema(description = "采购组织编号")
+ private String number;
+
+ @Schema(description = "采购组织描述", example = "赵六")
+ private String name;
+
+ @Schema(description = "公司编码;存入ERP公司编码")
+ private String companyNumber;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationRespVO.java
new file mode 100644
index 0000000..0cf5cb6
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationRespVO.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - ERP采购组织 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ErpPurchaseOrganizationRespVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "17344")
+ @ExcelProperty("主键")
+ private Long id;
+
+ @Schema(description = "采购组织编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("采购组织编号")
+ private String number;
+
+ @Schema(description = "采购组织描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
+ @ExcelProperty("采购组织描述")
+ private String name;
+
+ @Schema(description = "公司编码;存入ERP公司编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("公司编码;存入ERP公司编码")
+ private String companyNumber;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationSaveReqVO.java
new file mode 100644
index 0000000..5125c05
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationSaveReqVO.java
@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.Data;
+
+@Schema(description = "管理后台 - ERP采购组织新增/修改 Request VO")
+@Data
+public class ErpPurchaseOrganizationSaveReqVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "17344")
+ private Long id;
+
+ @Schema(description = "采购组织编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "采购组织编号不能为空")
+ private String number;
+
+ @Schema(description = "采购组织描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
+ @NotEmpty(message = "采购组织描述不能为空")
+ private String name;
+
+ @Schema(description = "公司编码;存入ERP公司编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "公司编码;存入ERP公司编码不能为空")
+ private String companyNumber;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationPageReqVO.java
new file mode 100644
index 0000000..0a901a9
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationPageReqVO.java
@@ -0,0 +1,20 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - ERP销售组织分页 Request VO")
+@Data
+public class ErpSalesOrganizationPageReqVO extends PageParam {
+
+ @Schema(description = "销售组织编号")
+ private String number;
+
+ @Schema(description = "销售组织描述", example = "李四")
+ private String name;
+
+ @Schema(description = "公司编码;存入ERP公司编码")
+ private String companyNumber;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationRespVO.java
new file mode 100644
index 0000000..5c20fe2
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationRespVO.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - ERP销售组织 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ErpSalesOrganizationRespVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "22623")
+ @ExcelProperty("主键")
+ private Long id;
+
+ @Schema(description = "销售组织编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("销售组织编号")
+ private String number;
+
+ @Schema(description = "销售组织描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+ @ExcelProperty("销售组织描述")
+ private String name;
+
+ @Schema(description = "公司编码;存入ERP公司编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("公司编码;存入ERP公司编码")
+ private String companyNumber;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationSaveReqVO.java
new file mode 100644
index 0000000..b6880a6
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationSaveReqVO.java
@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.Data;
+
+@Schema(description = "管理后台 - ERP销售组织新增/修改 Request VO")
+@Data
+public class ErpSalesOrganizationSaveReqVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "22623")
+ private Long id;
+
+ @Schema(description = "销售组织编号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "销售组织编号不能为空")
+ private String number;
+
+ @Schema(description = "销售组织描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+ @NotEmpty(message = "销售组织描述不能为空")
+ private String name;
+
+ @Schema(description = "公司编码;存入ERP公司编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "公司编码;存入ERP公司编码不能为空")
+ private String companyNumber;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java
new file mode 100644
index 0000000..3b52833
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - ERP库位分页 Request VO")
+@Data
+public class ErpWarehousePageReqVO extends PageParam {
+
+ @Schema(description = "工厂编码;将查询参数存入")
+ private String factoryNumber;
+
+ @Schema(description = "库位描述", example = "张三")
+ private String name;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "库位编码")
+ private String number;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java
new file mode 100644
index 0000000..a1862d8
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java
@@ -0,0 +1,35 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - ERP库位 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ErpWarehouseRespVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "16847")
+ @ExcelProperty("主键")
+ private Long id;
+
+ @Schema(description = "工厂编码;将查询参数存入")
+ @ExcelProperty("工厂编码;将查询参数存入")
+ private String factoryNumber;
+
+ @Schema(description = "库位描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+ @ExcelProperty("库位描述")
+ private String name;
+
+ @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "库位编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("库位编码")
+ private String number;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java
new file mode 100644
index 0000000..3ce9d3e
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java
@@ -0,0 +1,25 @@
+package cn.iocoder.yudao.module.erp.controller.admin.erp.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.Data;
+
+@Schema(description = "管理后台 - ERP库位新增/修改 Request VO")
+@Data
+public class ErpWarehouseSaveReqVO {
+
+ @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "16847")
+ private Long id;
+
+ @Schema(description = "工厂编码;将查询参数存入")
+ private String factoryNumber;
+
+ @Schema(description = "库位描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+ @NotEmpty(message = "库位描述不能为空")
+ private String name;
+
+ @Schema(description = "库位编码", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "库位编码不能为空")
+ private String number;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpAssetDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpAssetDO.java
new file mode 100644
index 0000000..07aa266
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpAssetDO.java
@@ -0,0 +1,110 @@
+package cn.iocoder.yudao.module.erp.dal.dataobject.erp;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+/**
+* ERP资产卡片 DO
+*
+* @author 后台管理
+*/
+@TableName("sply_erp_ast")
+@KeySequence("sply_erp_ast_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+/**
+* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO
+*/
+public class ErpAssetDO extends BaseDO {
+
+
+
+ /**
+ * 主键
+ */
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+ /**
+ * 公司编号
+ */
+ @TableField("CPN_NUM")
+ private String companyNumber;
+ /**
+ * 资产主编码
+ */
+ @TableField("MAIN_AST_NUM")
+ private String mainAssetNumber;
+ /**
+ * 记录创建日期
+ */
+ @TableField("RCD_CRT_DT")
+ private LocalDateTime recordCreateDate;
+ /**
+ * 更改用户名
+ */
+ @TableField("UPD_USER_NAME")
+ private String updateUserName;
+ /**
+ * 资产类编号
+ */
+ @TableField("AST_TP_NUM")
+ private String assetTypeNumber;
+ /**
+ * 资产类描述
+ */
+ @TableField("AST_TP_NAME")
+ private String assetTypeName;
+ /**
+ * 资产资本化日期
+ */
+ @TableField("AST_DT")
+ private LocalDateTime assetDate;
+ /**
+ * 基本计量单位
+ */
+ @TableField("UOM")
+ private String uom;
+ /**
+ * 数量
+ */
+ @TableField("QTY")
+ private BigDecimal quantity;
+ /**
+ * 资产描述
+ */
+ @TableField("AST_DSP")
+ private String assetDescription;
+ /**
+ * 附加资产描述
+ */
+ @TableField("AST_DSP_ATT")
+ private String assetDescriptionAttach;
+ /**
+ * 折旧计算开始日期
+ */
+ @TableField("DEPR_STRT_DT")
+ private LocalDateTime depreciationStartDate;
+ /**
+ * 计划年使用期
+ */
+ @TableField("PLN_YR_DT")
+ private LocalDateTime planYearDate;
+ /**
+ * 成本中心编码
+ */
+ @TableField("CCTR_NUM")
+ private String costcenterNumber;
+ /**
+ * 责任成本中心
+ */
+ @TableField("DUTY_CCTR_NUM")
+ private String dutyCostcenterNumber;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpContractDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpContractDO.java
new file mode 100644
index 0000000..62c18c9
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpContractDO.java
@@ -0,0 +1,330 @@
+package cn.iocoder.yudao.module.erp.dal.dataobject.erp;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * ERP合同映射 DO
+ *
+ * @author 后台管理
+ */
+@TableName("bse_erp_ctrt")
+@KeySequence("bse_erp_ctrt_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+/**
+ * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO
+ */
+public class ErpContractDO extends BaseDO {
+
+
+ /**
+ * 主键
+ */
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+ /**
+ * 操作标识
+ */
+ @TableField("OPTN_ID")
+ private String operationId;
+ /**
+ * 合同主信息主键
+ */
+ @TableField("CTRT_MAIN_ID")
+ private Long contractMainId;
+ /**
+ * 合同编号
+ */
+ @TableField("CTRT_PPR_NUM")
+ private String contractPaperNumber;
+ /**
+ * 合同名称
+ */
+ @TableField("CTRT_NAME")
+ private String contractName;
+ /**
+ * 合同类型编号
+ */
+ @TableField("CTRT_TP_NUM")
+ private String contractTypeNumber;
+ /**
+ * 合同类型名称
+ */
+ @TableField("CTRT_TP_NAME")
+ private String contractTypeName;
+ /**
+ * 合同类别
+ */
+ @TableField("CTRT_CTGR")
+ private String contractCategory;
+ /**
+ * 是否虚拟合同
+ */
+ @TableField("IS_VRTL_CTRT")
+ private String isVirtualContract;
+ /**
+ * 客户/供应商编号;SAP客商公司代码
+ */
+ @TableField("SPLR_NUM")
+ private String supplierNumber;
+ /**
+ * 客户/供应商名称;SAP客商公司名称
+ */
+ @TableField("SPLR_NAME")
+ private String supplierName;
+ /**
+ * 代理方;SAP客商公司代码
+ */
+ @TableField("AGT")
+ private String agent;
+ /**
+ * 合同实施主体编号;SAP公司代码
+ */
+ @TableField("CTRT_IMPL_NUM")
+ private String contractImplementNumber;
+ /**
+ * 合同签订主体编号;SAP公司代码
+ */
+ @TableField("CTRT_SGN_NUM")
+ private String contractSignNumber;
+ /**
+ * 合同签订日期;格式:YYYY-MM-DD
+ */
+ @TableField("SGN_DT")
+ private LocalDate signDate;
+ /**
+ * 合同起始日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期
+ */
+ @TableField("STRT_DT")
+ private LocalDate startDate;
+ /**
+ * 合同终止日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期
+ */
+ @TableField("STOP_DT")
+ private LocalDate stopDate;
+ /**
+ * 币种编号
+ */
+ @TableField("CUR")
+ private String currency;
+ /**
+ * 合同总金额(原币-含税);非长单合同:合同金额 长单合同:默认1000000000000000.00
+ */
+ @TableField("SRC_AMT")
+ private BigDecimal sourceAmount;
+ /**
+ * 合同总金额(本位币-含税);非长单合同:合同金额*合同的临时汇率 长单合同:默认1000000000000000.00
+ */
+ @TableField("BSC_AMT")
+ private BigDecimal basicAmount;
+ /**
+ * 变更后合同总金额(原币-含税);如果未做合同变更,金额等于合同总金额(原币-含税)
+ */
+ @TableField("CHG_SRC_AMT")
+ private BigDecimal changeSourceAmount;
+ /**
+ * 变更后合同总金额(本位币-含税);如果未做合同变更,金额等于合同总金额(本位币-含税)
+ */
+ @TableField("CHG_BSC_AMT")
+ private BigDecimal changeBasicAmount;
+ /**
+ * 合同状态编号
+ */
+ @TableField("STS_NUM")
+ private String statusNumber;
+ /**
+ * 合同状态名称
+ */
+ @TableField("STS_NAME")
+ private String statusName;
+ /**
+ * 是否有预付款;长单合同:否,非长单:取合同的预付款
+ */
+ @TableField("IS_PPYM")
+ private String isPrepayment;
+ /**
+ * 预付款比例;有预付款则需要填写
+ */
+ @TableField("PPYM_RTIO")
+ private BigDecimal prepaymentRatio;
+ /**
+ * 预付款金额;有预付款则需要填写(通过计算得出)
+ */
+ @TableField("PPYM_AMT")
+ private BigDecimal prepaymentAmount;
+ /**
+ * 履约保证金-变更前(原币)
+ */
+ @TableField("SRC_BFR_BND")
+ private BigDecimal sourceBeforeBond;
+ /**
+ * 履约保证金-变更前(本位币)
+ */
+ @TableField("BSC_BFR_BND")
+ private BigDecimal basicBeforeBond;
+ /**
+ * 履约保证金-变更后(原币)
+ */
+ @TableField("SRC_AFT_BND")
+ private BigDecimal sourceAfterBond;
+ /**
+ * 履约保证金-变更后(本位币)
+ */
+ @TableField("BSC_AFT_BND")
+ private BigDecimal basicAfterBond;
+ /**
+ * 是否含质保金
+ */
+ @TableField("IS_QUA_AMT")
+ private String isQualityassuranceAmount;
+ /**
+ * 质保金比例;有质保金则需要填写
+ */
+ @TableField("QUA_RTIO")
+ private BigDecimal qualityassuranceRatio;
+ /**
+ * 质保金金额;有质保金则需要填写
+ */
+ @TableField("QUA_AMT")
+ private BigDecimal qualityassuranceAmount;
+ /**
+ * 是否内部企业
+ */
+ @TableField("IS_INTL")
+ private String isInternal;
+ /**
+ * 收支性质
+ */
+ @TableField("NTR")
+ private String nature;
+ /**
+ * 备注信息;提交ERP
+ */
+ @TableField("RMK")
+ private String remark;
+ /**
+ * 累计结算金额(原币-含税);暂定不传
+ */
+ @TableField("SRC_ACC_STLM_AMT")
+ private BigDecimal sourceAccumulateSettlementAmount;
+ /**
+ * 累计结算金额(本位币-含税);暂定不传
+ */
+ @TableField("BSC_ACC_STLM_AMT")
+ private BigDecimal basicAccumulateSettlementAmount;
+ /**
+ * 累计已收付款金额(原币-含税);暂定不传
+ */
+ @TableField("SRC_USE_AMT")
+ private BigDecimal sourceUseAmount;
+ /**
+ * 累计已收付款金额(本位币-含税);暂定不传
+ */
+ @TableField("BSC_USE_AMT")
+ private BigDecimal basicUseAmount;
+ /**
+ * 累计已开收票金额(原币-含税);暂定不传
+ */
+ @TableField("SRC_INV_AMT")
+ private BigDecimal sourceInvoiceAmount;
+ /**
+ * 累计已开收票金额(本位币-含税);暂定不传
+ */
+ @TableField("BSC_INV_AMT")
+ private BigDecimal basicInvoiceAmount;
+ /**
+ * 累计预付款金额(原币-含税);暂定不传
+ */
+ @TableField("SRC_ACC_PPYM")
+ private BigDecimal sourceAccumulatePrepayment;
+ /**
+ * 累计预付款金额(本位币-含税);暂定不传
+ */
+ @TableField("BSC_ACC_PPYM")
+ private BigDecimal basicAccumulatePrepayment;
+ /**
+ * 履约保证金累计付款金额(原币);暂定不传
+ */
+ @TableField("SRC_ACC_BND")
+ private BigDecimal sourceAccumulateBond;
+ /**
+ * 履约保证金累计付款金额(本位币);暂定不传
+ */
+ @TableField("BSC_ACC_BND")
+ private BigDecimal basicAccumulateBond;
+ /**
+ * 履约保证金累计收款金额(原币);暂定不传
+ */
+ @TableField("SRC_ACC_AMT")
+ private BigDecimal sourceAccumulateAmount;
+ /**
+ * 履约保证金累计收款金额(本位币);暂定不传
+ */
+ @TableField("BSC_ACC_AMT")
+ private BigDecimal basicAccumulateAmount;
+ /**
+ * 是否框架合同;如果为是,合同总金额(本币)、合同总金额(原币)、变更后合同总金额(原币-含税)、变更后合同总金额(本位币-含税)赋默认值为:1000000000000000.00
+ */
+ @TableField("IS_FMWK")
+ private String isFramework;
+ /**
+ * 境内/境外
+ */
+ @TableField("IS_DOM")
+ private String isDomestic;
+ /**
+ * 建筑服务发生地;销售合同,且类型为SAP02COSR必填
+ */
+ @TableField("ARCH_SVC_PLCE")
+ private String architectureServicePlace;
+ /**
+ * 达到收款条件金额;销售合同,且类型为SAP02COSR必填
+ */
+ @TableField("PYEE_CND_AMT")
+ private BigDecimal payeeConditionAmount;
+ /**
+ * 公司编号
+ */
+ @TableField("COMPANY_ID")
+ private Long companyId;
+ /**
+ * 公司名称
+ */
+ @TableField("COMPANY_NAME")
+ private String companyName;
+ /**
+ * 部门编号
+ */
+ @TableField("DEPT_ID")
+ private Long deptId;
+ /**
+ * 部门名称
+ */
+ @TableField("DEPT_NAME")
+ private String deptName;
+ /**
+ * 岗位编号
+ */
+ @TableField("POST_ID")
+ private Long postId;
+ /**
+ * 创建者
+ */
+ @TableField("CREATOR_NAME")
+ private String creatorName;
+ /**
+ * 更新者
+ */
+ @TableField("UPDATER_NAME")
+ private String updaterName;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpInternalOrderDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpInternalOrderDO.java
new file mode 100644
index 0000000..7bec09d
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpInternalOrderDO.java
@@ -0,0 +1,57 @@
+package cn.iocoder.yudao.module.erp.dal.dataobject.erp;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
+/**
+* ERP内部订单 DO
+*
+* @author 后台管理
+*/
+@TableName("sply_erp_intl_ord")
+@KeySequence("sply_erp_intl_ord_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+/**
+* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO
+*/
+public class ErpInternalOrderDO extends BaseDO {
+
+
+
+ /**
+ * 主键
+ */
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+ /**
+ * 内部订单编号
+ */
+ @TableField("NUM")
+ private String number;
+ /**
+ * 内部订单描述
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 内部订单类型
+ */
+ @TableField("TP")
+ private String type;
+ /**
+ * 是否已关闭;使用这个基础数据是,如果为X时必须和工区使用
+ */
+ @TableField("IS_OFF")
+ private String isOff;
+ /**
+ * 是否已完成
+ */
+ @TableField("IS_FIN")
+ private String isFinish;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveOrderDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveOrderDO.java
new file mode 100644
index 0000000..12b4d48
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveOrderDO.java
@@ -0,0 +1,119 @@
+package cn.iocoder.yudao.module.erp.dal.dataobject.erp;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
+
+import java.time.LocalDateTime;
+/**
+* ERP生产订单 DO
+*
+* @author 后台管理
+*/
+@TableName("sply_erp_pdtv_ord")
+@KeySequence("sply_erp_pdtv_ord_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+/**
+* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO
+*/
+public class ErpProductiveOrderDO extends BaseDO {
+
+
+
+ /**
+ * 主键
+ */
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+ /**
+ * 公司编号
+ */
+ @TableField("CPN_NUM")
+ private String companyNumber;
+ /**
+ * 工厂编码
+ */
+ @TableField("FACT_NUM")
+ private String factoryNumber;
+ /**
+ * 工厂名称
+ */
+ @TableField("FACT_NAME")
+ private String factoryName;
+ /**
+ * 订单编号
+ */
+ @TableField("ORD_NUM")
+ private String orderNumber;
+ /**
+ * 基本开始日期
+ */
+ @TableField("STRT_DT")
+ private LocalDateTime startDate;
+ /**
+ * 基本完成日期
+ */
+ @TableField("END_DT")
+ private LocalDateTime endDate;
+ /**
+ * 主产品物料编号
+ */
+ @TableField("MAIN_MTRL_NUM")
+ private String mainMaterialNumber;
+ /**
+ * 计量单位
+ */
+ @TableField("UNT")
+ private String unit;
+ /**
+ * 物料描述
+ */
+ @TableField("MTRL_DSP")
+ private String materialDescription;
+ /**
+ * 工序列表
+ */
+ @TableField("PROC_LIST")
+ private String processingList;
+ /**
+ * 工序编号
+ */
+ @TableField("PROC_NUM")
+ private String processingNumber;
+ /**
+ * 工序描述
+ */
+ @TableField("PROC_DSP")
+ private String processingDescription;
+ /**
+ * 对象编号
+ */
+ @TableField("OBJ_NUM")
+ private String objectNumber;
+ /**
+ * 工作中心编码
+ */
+ @TableField("WRK_CTR_NUM")
+ private String workCenterNumber;
+ /**
+ * 工作中心描述
+ */
+ @TableField("WRK_CTR_DSP")
+ private String workCenterDescription;
+ /**
+ * 成本中心编码
+ */
+ @TableField("CCTR_NUM")
+ private String costcenterNumber;
+ /**
+ * 成本中心描述
+ */
+ @TableField("CCTR_NAME")
+ private String costcenterName;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpPurchaseOrganizationDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpPurchaseOrganizationDO.java
new file mode 100644
index 0000000..a7db67a
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpPurchaseOrganizationDO.java
@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.erp.dal.dataobject.erp;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
+/**
+* ERP采购组织 DO
+*
+* @author 后台管理
+*/
+@TableName("sply_erp_prch_orgz")
+@KeySequence("sply_erp_prch_orgz_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+/**
+* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO
+*/
+public class ErpPurchaseOrganizationDO extends BaseDO {
+
+
+
+ /**
+ * 主键
+ */
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+ /**
+ * 采购组织编号
+ */
+ @TableField("NUM")
+ private String number;
+ /**
+ * 采购组织描述
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 公司编码;存入ERP公司编码
+ */
+ @TableField("CPN_NUM")
+ private String companyNumber;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpSalesOrganizationDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpSalesOrganizationDO.java
new file mode 100644
index 0000000..e2d1feb
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpSalesOrganizationDO.java
@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.erp.dal.dataobject.erp;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
+/**
+* ERP销售组织 DO
+*
+* @author 后台管理
+*/
+@TableName("sply_erp_sale_orgz")
+@KeySequence("sply_erp_sale_orgz_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+/**
+* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO
+*/
+public class ErpSalesOrganizationDO extends BaseDO {
+
+
+
+ /**
+ * 主键
+ */
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+ /**
+ * 销售组织编号
+ */
+ @TableField("NUM")
+ private String number;
+ /**
+ * 销售组织描述
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 公司编码;存入ERP公司编码
+ */
+ @TableField("CPN_NUM")
+ private String companyNumber;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpWarehouseDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpWarehouseDO.java
new file mode 100644
index 0000000..1c05bb7
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpWarehouseDO.java
@@ -0,0 +1,72 @@
+package cn.iocoder.yudao.module.erp.dal.dataobject.erp;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
+/**
+* ERP库位 DO
+*
+* @author 后台管理
+*/
+@TableName("sply_erp_wrh")
+@KeySequence("sply_erp_wrh_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+/**
+* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO
+*/
+public class ErpWarehouseDO extends BaseDO {
+
+
+
+ /**
+ * 主键
+ */
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+ /**
+ * 工厂编码;将查询参数存入
+ */
+ @TableField("FACT_NUM")
+ private String factoryNumber;
+ /**
+ * 库位描述
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 公司编号
+ */
+ @TableField("COMPANY_ID")
+ private Long companyId;
+ /**
+ * 公司名称
+ */
+ @TableField("COMPANY_NAME")
+ private String companyName;
+ /**
+ * 部门编号
+ */
+ @TableField("DEPT_ID")
+ private Long deptId;
+ /**
+ * 部门名称
+ */
+ @TableField("DEPT_NAME")
+ private String deptName;
+ /**
+ * 岗位编号
+ */
+ @TableField("POST_ID")
+ private Long postId;
+ /**
+ * 库位编码
+ */
+ @TableField("NUM")
+ private String number;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpAssetMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpAssetMapper.java
new file mode 100644
index 0000000..144ad46
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpAssetMapper.java
@@ -0,0 +1,38 @@
+package cn.iocoder.yudao.module.erp.dal.mysql.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetPageReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpAssetDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * ERP资产卡片 Mapper
+ *
+ * @author 后台管理
+ */
+@Mapper
+public interface ErpAssetMapper extends BaseMapperX {
+
+ default PageResult selectPage(ErpAssetPageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX()
+ .eqIfPresent(ErpAssetDO::getCompanyNumber, reqVO.getCompanyNumber())
+ .eqIfPresent(ErpAssetDO::getMainAssetNumber, reqVO.getMainAssetNumber())
+ .betweenIfPresent(ErpAssetDO::getRecordCreateDate, reqVO.getRecordCreateDate())
+ .likeIfPresent(ErpAssetDO::getUpdateUserName, reqVO.getUpdateUserName())
+ .eqIfPresent(ErpAssetDO::getAssetTypeNumber, reqVO.getAssetTypeNumber())
+ .likeIfPresent(ErpAssetDO::getAssetTypeName, reqVO.getAssetTypeName())
+ .betweenIfPresent(ErpAssetDO::getAssetDate, reqVO.getAssetDate())
+ .eqIfPresent(ErpAssetDO::getUom, reqVO.getUom())
+ .eqIfPresent(ErpAssetDO::getQuantity, reqVO.getQuantity())
+ .eqIfPresent(ErpAssetDO::getAssetDescription, reqVO.getAssetDescription())
+ .eqIfPresent(ErpAssetDO::getAssetDescriptionAttach, reqVO.getAssetDescriptionAttach())
+ .betweenIfPresent(ErpAssetDO::getDepreciationStartDate, reqVO.getDepreciationStartDate())
+ .betweenIfPresent(ErpAssetDO::getPlanYearDate, reqVO.getPlanYearDate())
+ .eqIfPresent(ErpAssetDO::getCostcenterNumber, reqVO.getCostcenterNumber())
+ .eqIfPresent(ErpAssetDO::getDutyCostcenterNumber, reqVO.getDutyCostcenterNumber())
+ .orderByDesc(ErpAssetDO::getId));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpContractMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpContractMapper.java
new file mode 100644
index 0000000..b5f978c
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpContractMapper.java
@@ -0,0 +1,76 @@
+package cn.iocoder.yudao.module.erp.dal.mysql.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractPageReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpContractDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * ERP合同映射 Mapper
+ *
+ * @author 后台管理
+ */
+@Mapper
+public interface ErpContractMapper extends BaseMapperX {
+
+ default PageResult selectPage(ErpContractPageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX()
+ .eqIfPresent(ErpContractDO::getOperationId, reqVO.getOperationId())
+ .eqIfPresent(ErpContractDO::getContractMainId, reqVO.getContractMainId())
+ .eqIfPresent(ErpContractDO::getContractPaperNumber, reqVO.getContractPaperNumber())
+ .likeIfPresent(ErpContractDO::getContractName, reqVO.getContractName())
+ .eqIfPresent(ErpContractDO::getContractTypeNumber, reqVO.getContractTypeNumber())
+ .likeIfPresent(ErpContractDO::getContractTypeName, reqVO.getContractTypeName())
+ .eqIfPresent(ErpContractDO::getContractCategory, reqVO.getContractCategory())
+ .eqIfPresent(ErpContractDO::getIsVirtualContract, reqVO.getIsVirtualContract())
+ .eqIfPresent(ErpContractDO::getSupplierNumber, reqVO.getSupplierNumber())
+ .likeIfPresent(ErpContractDO::getSupplierName, reqVO.getSupplierName())
+ .eqIfPresent(ErpContractDO::getAgent, reqVO.getAgent())
+ .eqIfPresent(ErpContractDO::getContractImplementNumber, reqVO.getContractImplementNumber())
+ .eqIfPresent(ErpContractDO::getContractSignNumber, reqVO.getContractSignNumber())
+ .betweenIfPresent(ErpContractDO::getSignDate, reqVO.getSignDate())
+ .betweenIfPresent(ErpContractDO::getStartDate, reqVO.getStartDate())
+ .betweenIfPresent(ErpContractDO::getStopDate, reqVO.getStopDate())
+ .eqIfPresent(ErpContractDO::getCurrency, reqVO.getCurrency())
+ .eqIfPresent(ErpContractDO::getSourceAmount, reqVO.getSourceAmount())
+ .eqIfPresent(ErpContractDO::getBasicAmount, reqVO.getBasicAmount())
+ .eqIfPresent(ErpContractDO::getChangeSourceAmount, reqVO.getChangeSourceAmount())
+ .eqIfPresent(ErpContractDO::getChangeBasicAmount, reqVO.getChangeBasicAmount())
+ .eqIfPresent(ErpContractDO::getStatusNumber, reqVO.getStatusNumber())
+ .likeIfPresent(ErpContractDO::getStatusName, reqVO.getStatusName())
+ .eqIfPresent(ErpContractDO::getIsPrepayment, reqVO.getIsPrepayment())
+ .eqIfPresent(ErpContractDO::getPrepaymentRatio, reqVO.getPrepaymentRatio())
+ .eqIfPresent(ErpContractDO::getPrepaymentAmount, reqVO.getPrepaymentAmount())
+ .eqIfPresent(ErpContractDO::getSourceBeforeBond, reqVO.getSourceBeforeBond())
+ .eqIfPresent(ErpContractDO::getBasicBeforeBond, reqVO.getBasicBeforeBond())
+ .eqIfPresent(ErpContractDO::getSourceAfterBond, reqVO.getSourceAfterBond())
+ .eqIfPresent(ErpContractDO::getBasicAfterBond, reqVO.getBasicAfterBond())
+ .eqIfPresent(ErpContractDO::getIsQualityassuranceAmount, reqVO.getIsQualityassuranceAmount())
+ .eqIfPresent(ErpContractDO::getQualityassuranceRatio, reqVO.getQualityassuranceRatio())
+ .eqIfPresent(ErpContractDO::getQualityassuranceAmount, reqVO.getQualityassuranceAmount())
+ .eqIfPresent(ErpContractDO::getIsInternal, reqVO.getIsInternal())
+ .eqIfPresent(ErpContractDO::getNature, reqVO.getNature())
+ .eqIfPresent(ErpContractDO::getRemark, reqVO.getRemark())
+ .eqIfPresent(ErpContractDO::getSourceAccumulateSettlementAmount, reqVO.getSourceAccumulateSettlementAmount())
+ .eqIfPresent(ErpContractDO::getBasicAccumulateSettlementAmount, reqVO.getBasicAccumulateSettlementAmount())
+ .eqIfPresent(ErpContractDO::getSourceUseAmount, reqVO.getSourceUseAmount())
+ .eqIfPresent(ErpContractDO::getBasicUseAmount, reqVO.getBasicUseAmount())
+ .eqIfPresent(ErpContractDO::getSourceInvoiceAmount, reqVO.getSourceInvoiceAmount())
+ .eqIfPresent(ErpContractDO::getBasicInvoiceAmount, reqVO.getBasicInvoiceAmount())
+ .eqIfPresent(ErpContractDO::getSourceAccumulatePrepayment, reqVO.getSourceAccumulatePrepayment())
+ .eqIfPresent(ErpContractDO::getBasicAccumulatePrepayment, reqVO.getBasicAccumulatePrepayment())
+ .eqIfPresent(ErpContractDO::getSourceAccumulateBond, reqVO.getSourceAccumulateBond())
+ .eqIfPresent(ErpContractDO::getBasicAccumulateBond, reqVO.getBasicAccumulateBond())
+ .eqIfPresent(ErpContractDO::getSourceAccumulateAmount, reqVO.getSourceAccumulateAmount())
+ .eqIfPresent(ErpContractDO::getBasicAccumulateAmount, reqVO.getBasicAccumulateAmount())
+ .eqIfPresent(ErpContractDO::getIsFramework, reqVO.getIsFramework())
+ .eqIfPresent(ErpContractDO::getIsDomestic, reqVO.getIsDomestic())
+ .eqIfPresent(ErpContractDO::getArchitectureServicePlace, reqVO.getArchitectureServicePlace())
+ .eqIfPresent(ErpContractDO::getPayeeConditionAmount, reqVO.getPayeeConditionAmount())
+ .betweenIfPresent(ErpContractDO::getCreateTime, reqVO.getCreateTime())
+ .orderByDesc(ErpContractDO::getId));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpInternalOrderMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpInternalOrderMapper.java
new file mode 100644
index 0000000..f8561c4
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpInternalOrderMapper.java
@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.module.erp.dal.mysql.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderPageReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpInternalOrderDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * ERP内部订单 Mapper
+ *
+ * @author 后台管理
+ */
+@Mapper
+public interface ErpInternalOrderMapper extends BaseMapperX {
+
+ default PageResult selectPage(ErpInternalOrderPageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX()
+ .eqIfPresent(ErpInternalOrderDO::getNumber, reqVO.getNumber())
+ .likeIfPresent(ErpInternalOrderDO::getName, reqVO.getName())
+ .eqIfPresent(ErpInternalOrderDO::getType, reqVO.getType())
+ .eqIfPresent(ErpInternalOrderDO::getIsOff, reqVO.getIsOff())
+ .eqIfPresent(ErpInternalOrderDO::getIsFinish, reqVO.getIsFinish())
+ .orderByDesc(ErpInternalOrderDO::getId));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveOrderMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveOrderMapper.java
new file mode 100644
index 0000000..2977e01
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveOrderMapper.java
@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.erp.dal.mysql.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderPageReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveOrderDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * ERP生产订单 Mapper
+ *
+ * @author 后台管理
+ */
+@Mapper
+public interface ErpProductiveOrderMapper extends BaseMapperX {
+
+ default PageResult selectPage(ErpProductiveOrderPageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX()
+ .eqIfPresent(ErpProductiveOrderDO::getCompanyNumber, reqVO.getCompanyNumber())
+ .eqIfPresent(ErpProductiveOrderDO::getFactoryNumber, reqVO.getFactoryNumber())
+ .likeIfPresent(ErpProductiveOrderDO::getFactoryName, reqVO.getFactoryName())
+ .eqIfPresent(ErpProductiveOrderDO::getOrderNumber, reqVO.getOrderNumber())
+ .betweenIfPresent(ErpProductiveOrderDO::getStartDate, reqVO.getStartDate())
+ .betweenIfPresent(ErpProductiveOrderDO::getEndDate, reqVO.getEndDate())
+ .eqIfPresent(ErpProductiveOrderDO::getMainMaterialNumber, reqVO.getMainMaterialNumber())
+ .eqIfPresent(ErpProductiveOrderDO::getUnit, reqVO.getUnit())
+ .eqIfPresent(ErpProductiveOrderDO::getMaterialDescription, reqVO.getMaterialDescription())
+ .eqIfPresent(ErpProductiveOrderDO::getProcessingList, reqVO.getProcessingList())
+ .eqIfPresent(ErpProductiveOrderDO::getProcessingNumber, reqVO.getProcessingNumber())
+ .eqIfPresent(ErpProductiveOrderDO::getProcessingDescription, reqVO.getProcessingDescription())
+ .eqIfPresent(ErpProductiveOrderDO::getObjectNumber, reqVO.getObjectNumber())
+ .eqIfPresent(ErpProductiveOrderDO::getWorkCenterNumber, reqVO.getWorkCenterNumber())
+ .eqIfPresent(ErpProductiveOrderDO::getWorkCenterDescription, reqVO.getWorkCenterDescription())
+ .eqIfPresent(ErpProductiveOrderDO::getCostcenterNumber, reqVO.getCostcenterNumber())
+ .likeIfPresent(ErpProductiveOrderDO::getCostcenterName, reqVO.getCostcenterName())
+ .orderByDesc(ErpProductiveOrderDO::getId));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpPurchaseOrganizationMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpPurchaseOrganizationMapper.java
new file mode 100644
index 0000000..1a11946
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpPurchaseOrganizationMapper.java
@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.erp.dal.mysql.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationPageReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * ERP采购组织 Mapper
+ *
+ * @author 后台管理
+ */
+@Mapper
+public interface ErpPurchaseOrganizationMapper extends BaseMapperX {
+
+ default PageResult selectPage(ErpPurchaseOrganizationPageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX()
+ .eqIfPresent(ErpPurchaseOrganizationDO::getNumber, reqVO.getNumber())
+ .likeIfPresent(ErpPurchaseOrganizationDO::getName, reqVO.getName())
+ .eqIfPresent(ErpPurchaseOrganizationDO::getCompanyNumber, reqVO.getCompanyNumber())
+ .orderByDesc(ErpPurchaseOrganizationDO::getId));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpSalesOrganizationMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpSalesOrganizationMapper.java
new file mode 100644
index 0000000..6caa0b2
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpSalesOrganizationMapper.java
@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.erp.dal.mysql.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationPageReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * ERP销售组织 Mapper
+ *
+ * @author 后台管理
+ */
+@Mapper
+public interface ErpSalesOrganizationMapper extends BaseMapperX {
+
+ default PageResult selectPage(ErpSalesOrganizationPageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX()
+ .eqIfPresent(ErpSalesOrganizationDO::getNumber, reqVO.getNumber())
+ .likeIfPresent(ErpSalesOrganizationDO::getName, reqVO.getName())
+ .eqIfPresent(ErpSalesOrganizationDO::getCompanyNumber, reqVO.getCompanyNumber())
+ .orderByDesc(ErpSalesOrganizationDO::getId));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpWarehouseMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpWarehouseMapper.java
new file mode 100644
index 0000000..7f91bcd
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpWarehouseMapper.java
@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.erp.dal.mysql.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehousePageReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpWarehouseDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * ERP库位 Mapper
+ *
+ * @author 后台管理
+ */
+@Mapper
+public interface ErpWarehouseMapper extends BaseMapperX {
+
+ default PageResult selectPage(ErpWarehousePageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX()
+ .eqIfPresent(ErpWarehouseDO::getFactoryNumber, reqVO.getFactoryNumber())
+ .likeIfPresent(ErpWarehouseDO::getName, reqVO.getName())
+ .betweenIfPresent(ErpWarehouseDO::getCreateTime, reqVO.getCreateTime())
+ .eqIfPresent(ErpWarehouseDO::getNumber, reqVO.getNumber())
+ .orderByDesc(ErpWarehouseDO::getId));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetService.java
new file mode 100644
index 0000000..81305a3
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetService.java
@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpAssetDO;
+import jakarta.validation.Valid;
+
+import java.util.List;
+
+/**
+ * ERP资产卡片 Service 接口
+ *
+ * @author 后台管理
+ */
+public interface ErpAssetService {
+
+ /**
+ * 创建ERP资产卡片
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ ErpAssetRespVO createErpAsset(@Valid ErpAssetSaveReqVO createReqVO);
+
+ /**
+ * 更新ERP资产卡片
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateErpAsset(@Valid ErpAssetSaveReqVO updateReqVO);
+
+ /**
+ * 删除ERP资产卡片
+ *
+ * @param id 编号
+ */
+ void deleteErpAsset(Long id);
+
+ /**
+ * 批量删除ERP资产卡片
+ *
+ * @param ids 编号
+ */
+ void deleteErpAssetListByIds(List ids);
+
+ /**
+ * 获得ERP资产卡片
+ *
+ * @param id 编号
+ * @return ERP资产卡片
+ */
+ ErpAssetDO getErpAsset(Long id);
+
+ /**
+ * 获得ERP资产卡片分页
+ *
+ * @param pageReqVO 分页查询
+ * @return ERP资产卡片分页
+ */
+ PageResult getErpAssetPage(ErpAssetPageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetServiceImpl.java
new file mode 100644
index 0000000..077c6f9
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetServiceImpl.java
@@ -0,0 +1,89 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpAssetDO;
+import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpAssetMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_ASSET_NOT_EXISTS;
+
+/**
+ * ERP资产卡片 Service 实现类
+ *
+ * @author 后台管理
+ */
+@Service
+@Validated
+public class ErpAssetServiceImpl implements ErpAssetService {
+
+ @Resource
+ private ErpAssetMapper erpAssetMapper;
+
+ @Override
+ public ErpAssetRespVO createErpAsset(ErpAssetSaveReqVO createReqVO) {
+ // 插入
+ ErpAssetDO erpAsset = BeanUtils.toBean(createReqVO, ErpAssetDO.class);
+ erpAssetMapper.insert(erpAsset);
+ // 返回
+ return BeanUtils.toBean(erpAsset, ErpAssetRespVO.class);
+ }
+
+ @Override
+ public void updateErpAsset(ErpAssetSaveReqVO updateReqVO) {
+ // 校验存在
+ validateErpAssetExists(updateReqVO.getId());
+ // 更新
+ ErpAssetDO updateObj = BeanUtils.toBean(updateReqVO, ErpAssetDO.class);
+ erpAssetMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteErpAsset(Long id) {
+ // 校验存在
+ validateErpAssetExists(id);
+ // 删除
+ erpAssetMapper.deleteById(id);
+ }
+
+ @Override
+ public void deleteErpAssetListByIds(List ids) {
+ // 校验存在
+ validateErpAssetExists(ids);
+ // 删除
+ erpAssetMapper.deleteByIds(ids);
+ }
+
+ private void validateErpAssetExists(List ids) {
+ List list = erpAssetMapper.selectByIds(ids);
+ if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+ throw exception(ERP_ASSET_NOT_EXISTS);
+ }
+ }
+
+ private void validateErpAssetExists(Long id) {
+ if (erpAssetMapper.selectById(id) == null) {
+ throw exception(ERP_ASSET_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public ErpAssetDO getErpAsset(Long id) {
+ return erpAssetMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getErpAssetPage(ErpAssetPageReqVO pageReqVO) {
+ return erpAssetMapper.selectPage(pageReqVO);
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java
index cbb7993..cafe783 100644
--- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java
@@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCompanyDO;
import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpCompanyMapper;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import com.xxl.job.core.handler.annotation.XxlJob;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -99,6 +100,7 @@ public class ErpCompanyServiceImpl implements ErpCompanyService {
@Override
@Transactional
+ @XxlJob("getCompanyTask")
public void callErpRfcInterface() {
try {
OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.公司代码;
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractService.java
new file mode 100644
index 0000000..36d81ed
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractService.java
@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpContractDO;
+import jakarta.validation.Valid;
+
+import java.util.List;
+
+/**
+ * ERP合同映射 Service 接口
+ *
+ * @author 后台管理
+ */
+public interface ErpContractService {
+
+ /**
+ * 创建ERP合同映射
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ ErpContractRespVO createErpContract(@Valid ErpContractSaveReqVO createReqVO);
+
+ /**
+ * 更新ERP合同映射
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateErpContract(@Valid ErpContractSaveReqVO updateReqVO);
+
+ /**
+ * 删除ERP合同映射
+ *
+ * @param id 编号
+ */
+ void deleteErpContract(Long id);
+
+ /**
+ * 批量删除ERP合同映射
+ *
+ * @param ids 编号
+ */
+ void deleteErpContractListByIds(List ids);
+
+ /**
+ * 获得ERP合同映射
+ *
+ * @param id 编号
+ * @return ERP合同映射
+ */
+ ErpContractDO getErpContract(Long id);
+
+ /**
+ * 获得ERP合同映射分页
+ *
+ * @param pageReqVO 分页查询
+ * @return ERP合同映射分页
+ */
+ PageResult getErpContractPage(ErpContractPageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractServiceImpl.java
new file mode 100644
index 0000000..857b322
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractServiceImpl.java
@@ -0,0 +1,89 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpContractDO;
+import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpContractMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_CONTRACT_NOT_EXISTS;
+
+/**
+ * ERP合同映射 Service 实现类
+ *
+ * @author 后台管理
+ */
+@Service
+@Validated
+public class ErpContractServiceImpl implements ErpContractService {
+
+ @Resource
+ private ErpContractMapper erpContractMapper;
+
+ @Override
+ public ErpContractRespVO createErpContract(ErpContractSaveReqVO createReqVO) {
+ // 插入
+ ErpContractDO erpContract = BeanUtils.toBean(createReqVO, ErpContractDO.class);
+ erpContractMapper.insert(erpContract);
+ // 返回
+ return BeanUtils.toBean(erpContract, ErpContractRespVO.class);
+ }
+
+ @Override
+ public void updateErpContract(ErpContractSaveReqVO updateReqVO) {
+ // 校验存在
+ validateErpContractExists(updateReqVO.getId());
+ // 更新
+ ErpContractDO updateObj = BeanUtils.toBean(updateReqVO, ErpContractDO.class);
+ erpContractMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteErpContract(Long id) {
+ // 校验存在
+ validateErpContractExists(id);
+ // 删除
+ erpContractMapper.deleteById(id);
+ }
+
+ @Override
+ public void deleteErpContractListByIds(List ids) {
+ // 校验存在
+ validateErpContractExists(ids);
+ // 删除
+ erpContractMapper.deleteByIds(ids);
+ }
+
+ private void validateErpContractExists(List ids) {
+ List list = erpContractMapper.selectByIds(ids);
+ if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+ throw exception(ERP_CONTRACT_NOT_EXISTS);
+ }
+ }
+
+ private void validateErpContractExists(Long id) {
+ if (erpContractMapper.selectById(id) == null) {
+ throw exception(ERP_CONTRACT_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public ErpContractDO getErpContract(Long id) {
+ return erpContractMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getErpContractPage(ErpContractPageReqVO pageReqVO) {
+ return erpContractMapper.selectPage(pageReqVO);
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderService.java
new file mode 100644
index 0000000..9350d5d
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderService.java
@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpInternalOrderDO;
+import jakarta.validation.Valid;
+
+import java.util.List;
+
+/**
+ * ERP内部订单 Service 接口
+ *
+ * @author 后台管理
+ */
+public interface ErpInternalOrderService {
+
+ /**
+ * 创建ERP内部订单
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ ErpInternalOrderRespVO createErpInternalOrder(@Valid ErpInternalOrderSaveReqVO createReqVO);
+
+ /**
+ * 更新ERP内部订单
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateErpInternalOrder(@Valid ErpInternalOrderSaveReqVO updateReqVO);
+
+ /**
+ * 删除ERP内部订单
+ *
+ * @param id 编号
+ */
+ void deleteErpInternalOrder(Long id);
+
+ /**
+ * 批量删除ERP内部订单
+ *
+ * @param ids 编号
+ */
+ void deleteErpInternalOrderListByIds(List ids);
+
+ /**
+ * 获得ERP内部订单
+ *
+ * @param id 编号
+ * @return ERP内部订单
+ */
+ ErpInternalOrderDO getErpInternalOrder(Long id);
+
+ /**
+ * 获得ERP内部订单分页
+ *
+ * @param pageReqVO 分页查询
+ * @return ERP内部订单分页
+ */
+ PageResult getErpInternalOrderPage(ErpInternalOrderPageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderServiceImpl.java
new file mode 100644
index 0000000..3c63b1c
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderServiceImpl.java
@@ -0,0 +1,89 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpInternalOrderDO;
+import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpInternalOrderMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_INTERNAL_ORDER_NOT_EXISTS;
+
+/**
+ * ERP内部订单 Service 实现类
+ *
+ * @author 后台管理
+ */
+@Service
+@Validated
+public class ErpInternalOrderServiceImpl implements ErpInternalOrderService {
+
+ @Resource
+ private ErpInternalOrderMapper erpInternalOrderMapper;
+
+ @Override
+ public ErpInternalOrderRespVO createErpInternalOrder(ErpInternalOrderSaveReqVO createReqVO) {
+ // 插入
+ ErpInternalOrderDO erpInternalOrder = BeanUtils.toBean(createReqVO, ErpInternalOrderDO.class);
+ erpInternalOrderMapper.insert(erpInternalOrder);
+ // 返回
+ return BeanUtils.toBean(erpInternalOrder, ErpInternalOrderRespVO.class);
+ }
+
+ @Override
+ public void updateErpInternalOrder(ErpInternalOrderSaveReqVO updateReqVO) {
+ // 校验存在
+ validateErpInternalOrderExists(updateReqVO.getId());
+ // 更新
+ ErpInternalOrderDO updateObj = BeanUtils.toBean(updateReqVO, ErpInternalOrderDO.class);
+ erpInternalOrderMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteErpInternalOrder(Long id) {
+ // 校验存在
+ validateErpInternalOrderExists(id);
+ // 删除
+ erpInternalOrderMapper.deleteById(id);
+ }
+
+ @Override
+ public void deleteErpInternalOrderListByIds(List ids) {
+ // 校验存在
+ validateErpInternalOrderExists(ids);
+ // 删除
+ erpInternalOrderMapper.deleteByIds(ids);
+ }
+
+ private void validateErpInternalOrderExists(List ids) {
+ List list = erpInternalOrderMapper.selectByIds(ids);
+ if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+ throw exception(ERP_INTERNAL_ORDER_NOT_EXISTS);
+ }
+ }
+
+ private void validateErpInternalOrderExists(Long id) {
+ if (erpInternalOrderMapper.selectById(id) == null) {
+ throw exception(ERP_INTERNAL_ORDER_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public ErpInternalOrderDO getErpInternalOrder(Long id) {
+ return erpInternalOrderMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getErpInternalOrderPage(ErpInternalOrderPageReqVO pageReqVO) {
+ return erpInternalOrderMapper.selectPage(pageReqVO);
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderService.java
new file mode 100644
index 0000000..5fcaf6f
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderService.java
@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveOrderDO;
+import jakarta.validation.Valid;
+
+import java.util.List;
+
+/**
+ * ERP生产订单 Service 接口
+ *
+ * @author 后台管理
+ */
+public interface ErpProductiveOrderService {
+
+ /**
+ * 创建ERP生产订单
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ ErpProductiveOrderRespVO createErpProductiveOrder(@Valid ErpProductiveOrderSaveReqVO createReqVO);
+
+ /**
+ * 更新ERP生产订单
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateErpProductiveOrder(@Valid ErpProductiveOrderSaveReqVO updateReqVO);
+
+ /**
+ * 删除ERP生产订单
+ *
+ * @param id 编号
+ */
+ void deleteErpProductiveOrder(Long id);
+
+ /**
+ * 批量删除ERP生产订单
+ *
+ * @param ids 编号
+ */
+ void deleteErpProductiveOrderListByIds(List ids);
+
+ /**
+ * 获得ERP生产订单
+ *
+ * @param id 编号
+ * @return ERP生产订单
+ */
+ ErpProductiveOrderDO getErpProductiveOrder(Long id);
+
+ /**
+ * 获得ERP生产订单分页
+ *
+ * @param pageReqVO 分页查询
+ * @return ERP生产订单分页
+ */
+ PageResult getErpProductiveOrderPage(ErpProductiveOrderPageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderServiceImpl.java
new file mode 100644
index 0000000..d9c7575
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderServiceImpl.java
@@ -0,0 +1,89 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveOrderDO;
+import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpProductiveOrderMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_PRODUCTIVE_ORDER_NOT_EXISTS;
+
+/**
+ * ERP生产订单 Service 实现类
+ *
+ * @author 后台管理
+ */
+@Service
+@Validated
+public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService {
+
+ @Resource
+ private ErpProductiveOrderMapper erpProductiveOrderMapper;
+
+ @Override
+ public ErpProductiveOrderRespVO createErpProductiveOrder(ErpProductiveOrderSaveReqVO createReqVO) {
+ // 插入
+ ErpProductiveOrderDO erpProductiveOrder = BeanUtils.toBean(createReqVO, ErpProductiveOrderDO.class);
+ erpProductiveOrderMapper.insert(erpProductiveOrder);
+ // 返回
+ return BeanUtils.toBean(erpProductiveOrder, ErpProductiveOrderRespVO.class);
+ }
+
+ @Override
+ public void updateErpProductiveOrder(ErpProductiveOrderSaveReqVO updateReqVO) {
+ // 校验存在
+ validateErpProductiveOrderExists(updateReqVO.getId());
+ // 更新
+ ErpProductiveOrderDO updateObj = BeanUtils.toBean(updateReqVO, ErpProductiveOrderDO.class);
+ erpProductiveOrderMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteErpProductiveOrder(Long id) {
+ // 校验存在
+ validateErpProductiveOrderExists(id);
+ // 删除
+ erpProductiveOrderMapper.deleteById(id);
+ }
+
+ @Override
+ public void deleteErpProductiveOrderListByIds(List ids) {
+ // 校验存在
+ validateErpProductiveOrderExists(ids);
+ // 删除
+ erpProductiveOrderMapper.deleteByIds(ids);
+ }
+
+ private void validateErpProductiveOrderExists(List ids) {
+ List list = erpProductiveOrderMapper.selectByIds(ids);
+ if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+ throw exception(ERP_PRODUCTIVE_ORDER_NOT_EXISTS);
+ }
+ }
+
+ private void validateErpProductiveOrderExists(Long id) {
+ if (erpProductiveOrderMapper.selectById(id) == null) {
+ throw exception(ERP_PRODUCTIVE_ORDER_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public ErpProductiveOrderDO getErpProductiveOrder(Long id) {
+ return erpProductiveOrderMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getErpProductiveOrderPage(ErpProductiveOrderPageReqVO pageReqVO) {
+ return erpProductiveOrderMapper.selectPage(pageReqVO);
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationService.java
new file mode 100644
index 0000000..311b3e1
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationService.java
@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO;
+import jakarta.validation.Valid;
+
+import java.util.List;
+
+/**
+ * ERP采购组织 Service 接口
+ *
+ * @author 后台管理
+ */
+public interface ErpPurchaseOrganizationService {
+
+ /**
+ * 创建ERP采购组织
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ ErpPurchaseOrganizationRespVO createErpPurchaseOrganization(@Valid ErpPurchaseOrganizationSaveReqVO createReqVO);
+
+ /**
+ * 更新ERP采购组织
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateErpPurchaseOrganization(@Valid ErpPurchaseOrganizationSaveReqVO updateReqVO);
+
+ /**
+ * 删除ERP采购组织
+ *
+ * @param id 编号
+ */
+ void deleteErpPurchaseOrganization(Long id);
+
+ /**
+ * 批量删除ERP采购组织
+ *
+ * @param ids 编号
+ */
+ void deleteErpPurchaseOrganizationListByIds(List ids);
+
+ /**
+ * 获得ERP采购组织
+ *
+ * @param id 编号
+ * @return ERP采购组织
+ */
+ ErpPurchaseOrganizationDO getErpPurchaseOrganization(Long id);
+
+ /**
+ * 获得ERP采购组织分页
+ *
+ * @param pageReqVO 分页查询
+ * @return ERP采购组织分页
+ */
+ PageResult getErpPurchaseOrganizationPage(ErpPurchaseOrganizationPageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationServiceImpl.java
new file mode 100644
index 0000000..6149485
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationServiceImpl.java
@@ -0,0 +1,89 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO;
+import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpPurchaseOrganizationMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_PURCHASE_ORGANIZATION_NOT_EXISTS;
+
+/**
+ * ERP采购组织 Service 实现类
+ *
+ * @author 后台管理
+ */
+@Service
+@Validated
+public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizationService {
+
+ @Resource
+ private ErpPurchaseOrganizationMapper erpPurchaseOrganizationMapper;
+
+ @Override
+ public ErpPurchaseOrganizationRespVO createErpPurchaseOrganization(ErpPurchaseOrganizationSaveReqVO createReqVO) {
+ // 插入
+ ErpPurchaseOrganizationDO erpPurchaseOrganization = BeanUtils.toBean(createReqVO, ErpPurchaseOrganizationDO.class);
+ erpPurchaseOrganizationMapper.insert(erpPurchaseOrganization);
+ // 返回
+ return BeanUtils.toBean(erpPurchaseOrganization, ErpPurchaseOrganizationRespVO.class);
+ }
+
+ @Override
+ public void updateErpPurchaseOrganization(ErpPurchaseOrganizationSaveReqVO updateReqVO) {
+ // 校验存在
+ validateErpPurchaseOrganizationExists(updateReqVO.getId());
+ // 更新
+ ErpPurchaseOrganizationDO updateObj = BeanUtils.toBean(updateReqVO, ErpPurchaseOrganizationDO.class);
+ erpPurchaseOrganizationMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteErpPurchaseOrganization(Long id) {
+ // 校验存在
+ validateErpPurchaseOrganizationExists(id);
+ // 删除
+ erpPurchaseOrganizationMapper.deleteById(id);
+ }
+
+ @Override
+ public void deleteErpPurchaseOrganizationListByIds(List ids) {
+ // 校验存在
+ validateErpPurchaseOrganizationExists(ids);
+ // 删除
+ erpPurchaseOrganizationMapper.deleteByIds(ids);
+ }
+
+ private void validateErpPurchaseOrganizationExists(List ids) {
+ List list = erpPurchaseOrganizationMapper.selectByIds(ids);
+ if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+ throw exception(ERP_PURCHASE_ORGANIZATION_NOT_EXISTS);
+ }
+ }
+
+ private void validateErpPurchaseOrganizationExists(Long id) {
+ if (erpPurchaseOrganizationMapper.selectById(id) == null) {
+ throw exception(ERP_PURCHASE_ORGANIZATION_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public ErpPurchaseOrganizationDO getErpPurchaseOrganization(Long id) {
+ return erpPurchaseOrganizationMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getErpPurchaseOrganizationPage(ErpPurchaseOrganizationPageReqVO pageReqVO) {
+ return erpPurchaseOrganizationMapper.selectPage(pageReqVO);
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationService.java
new file mode 100644
index 0000000..9f429e8
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationService.java
@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO;
+import jakarta.validation.Valid;
+
+import java.util.List;
+
+/**
+ * ERP销售组织 Service 接口
+ *
+ * @author 后台管理
+ */
+public interface ErpSalesOrganizationService {
+
+ /**
+ * 创建ERP销售组织
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ ErpSalesOrganizationRespVO createErpSalesOrganization(@Valid ErpSalesOrganizationSaveReqVO createReqVO);
+
+ /**
+ * 更新ERP销售组织
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateErpSalesOrganization(@Valid ErpSalesOrganizationSaveReqVO updateReqVO);
+
+ /**
+ * 删除ERP销售组织
+ *
+ * @param id 编号
+ */
+ void deleteErpSalesOrganization(Long id);
+
+ /**
+ * 批量删除ERP销售组织
+ *
+ * @param ids 编号
+ */
+ void deleteErpSalesOrganizationListByIds(List ids);
+
+ /**
+ * 获得ERP销售组织
+ *
+ * @param id 编号
+ * @return ERP销售组织
+ */
+ ErpSalesOrganizationDO getErpSalesOrganization(Long id);
+
+ /**
+ * 获得ERP销售组织分页
+ *
+ * @param pageReqVO 分页查询
+ * @return ERP销售组织分页
+ */
+ PageResult getErpSalesOrganizationPage(ErpSalesOrganizationPageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationServiceImpl.java
new file mode 100644
index 0000000..c52bed3
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationServiceImpl.java
@@ -0,0 +1,89 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO;
+import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpSalesOrganizationMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_SALES_ORGANIZATION_NOT_EXISTS;
+
+/**
+ * ERP销售组织 Service 实现类
+ *
+ * @author 后台管理
+ */
+@Service
+@Validated
+public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationService {
+
+ @Resource
+ private ErpSalesOrganizationMapper erpSalesOrganizationMapper;
+
+ @Override
+ public ErpSalesOrganizationRespVO createErpSalesOrganization(ErpSalesOrganizationSaveReqVO createReqVO) {
+ // 插入
+ ErpSalesOrganizationDO erpSalesOrganization = BeanUtils.toBean(createReqVO, ErpSalesOrganizationDO.class);
+ erpSalesOrganizationMapper.insert(erpSalesOrganization);
+ // 返回
+ return BeanUtils.toBean(erpSalesOrganization, ErpSalesOrganizationRespVO.class);
+ }
+
+ @Override
+ public void updateErpSalesOrganization(ErpSalesOrganizationSaveReqVO updateReqVO) {
+ // 校验存在
+ validateErpSalesOrganizationExists(updateReqVO.getId());
+ // 更新
+ ErpSalesOrganizationDO updateObj = BeanUtils.toBean(updateReqVO, ErpSalesOrganizationDO.class);
+ erpSalesOrganizationMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteErpSalesOrganization(Long id) {
+ // 校验存在
+ validateErpSalesOrganizationExists(id);
+ // 删除
+ erpSalesOrganizationMapper.deleteById(id);
+ }
+
+ @Override
+ public void deleteErpSalesOrganizationListByIds(List ids) {
+ // 校验存在
+ validateErpSalesOrganizationExists(ids);
+ // 删除
+ erpSalesOrganizationMapper.deleteByIds(ids);
+ }
+
+ private void validateErpSalesOrganizationExists(List ids) {
+ List list = erpSalesOrganizationMapper.selectByIds(ids);
+ if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+ throw exception(ERP_SALES_ORGANIZATION_NOT_EXISTS);
+ }
+ }
+
+ private void validateErpSalesOrganizationExists(Long id) {
+ if (erpSalesOrganizationMapper.selectById(id) == null) {
+ throw exception(ERP_SALES_ORGANIZATION_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public ErpSalesOrganizationDO getErpSalesOrganization(Long id) {
+ return erpSalesOrganizationMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getErpSalesOrganizationPage(ErpSalesOrganizationPageReqVO pageReqVO) {
+ return erpSalesOrganizationMapper.selectPage(pageReqVO);
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseService.java
new file mode 100644
index 0000000..a29b367
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseService.java
@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehousePageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehouseRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehouseSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpWarehouseDO;
+import jakarta.validation.Valid;
+
+import java.util.List;
+
+/**
+ * ERP库位 Service 接口
+ *
+ * @author 后台管理
+ */
+public interface ErpWarehouseService {
+
+ /**
+ * 创建ERP库位
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ ErpWarehouseRespVO createErpWarehouse(@Valid ErpWarehouseSaveReqVO createReqVO);
+
+ /**
+ * 更新ERP库位
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateErpWarehouse(@Valid ErpWarehouseSaveReqVO updateReqVO);
+
+ /**
+ * 删除ERP库位
+ *
+ * @param id 编号
+ */
+ void deleteErpWarehouse(Long id);
+
+ /**
+ * 批量删除ERP库位
+ *
+ * @param ids 编号
+ */
+ void deleteErpWarehouseListByIds(List ids);
+
+ /**
+ * 获得ERP库位
+ *
+ * @param id 编号
+ * @return ERP库位
+ */
+ ErpWarehouseDO getErpWarehouse(Long id);
+
+ /**
+ * 获得ERP库位分页
+ *
+ * @param pageReqVO 分页查询
+ * @return ERP库位分页
+ */
+ PageResult getErpWarehousePage(ErpWarehousePageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseServiceImpl.java
new file mode 100644
index 0000000..60f24bb
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseServiceImpl.java
@@ -0,0 +1,89 @@
+package cn.iocoder.yudao.module.erp.service.erp;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehousePageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehouseRespVO;
+import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehouseSaveReqVO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpWarehouseDO;
+import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpWarehouseMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_WAREHOUSE_NOT_EXISTS;
+
+/**
+ * ERP库位 Service 实现类
+ *
+ * @author 后台管理
+ */
+@Service
+@Validated
+public class ErpWarehouseServiceImpl implements ErpWarehouseService {
+
+ @Resource
+ private ErpWarehouseMapper erpWarehouseMapper;
+
+ @Override
+ public ErpWarehouseRespVO createErpWarehouse(ErpWarehouseSaveReqVO createReqVO) {
+ // 插入
+ ErpWarehouseDO erpWarehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class);
+ erpWarehouseMapper.insert(erpWarehouse);
+ // 返回
+ return BeanUtils.toBean(erpWarehouse, ErpWarehouseRespVO.class);
+ }
+
+ @Override
+ public void updateErpWarehouse(ErpWarehouseSaveReqVO updateReqVO) {
+ // 校验存在
+ validateErpWarehouseExists(updateReqVO.getId());
+ // 更新
+ ErpWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, ErpWarehouseDO.class);
+ erpWarehouseMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteErpWarehouse(Long id) {
+ // 校验存在
+ validateErpWarehouseExists(id);
+ // 删除
+ erpWarehouseMapper.deleteById(id);
+ }
+
+ @Override
+ public void deleteErpWarehouseListByIds(List ids) {
+ // 校验存在
+ validateErpWarehouseExists(ids);
+ // 删除
+ erpWarehouseMapper.deleteByIds(ids);
+ }
+
+ private void validateErpWarehouseExists(List ids) {
+ List list = erpWarehouseMapper.selectByIds(ids);
+ if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+ throw exception(ERP_WAREHOUSE_NOT_EXISTS);
+ }
+ }
+
+ private void validateErpWarehouseExists(Long id) {
+ if (erpWarehouseMapper.selectById(id) == null) {
+ throw exception(ERP_WAREHOUSE_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public ErpWarehouseDO getErpWarehouse(Long id) {
+ return erpWarehouseMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getErpWarehousePage(ErpWarehousePageReqVO pageReqVO) {
+ return erpWarehouseMapper.selectPage(pageReqVO);
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpAssetMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpAssetMapper.xml
new file mode 100644
index 0000000..983a178
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpAssetMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpContractMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpContractMapper.xml
new file mode 100644
index 0000000..2b078ec
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpContractMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml
new file mode 100644
index 0000000..2445fba
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveOrderMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveOrderMapper.xml
new file mode 100644
index 0000000..93ec181
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveOrderMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml
new file mode 100644
index 0000000..5d62df9
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml
new file mode 100644
index 0000000..89027f8
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml
new file mode 100644
index 0000000..dde5ebd
--- /dev/null
+++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file