From c47c420cce1affe36ce660990161e6c4938e896f Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Thu, 18 Sep 2025 17:21:16 +0800 Subject: [PATCH] =?UTF-8?q?erpBOM=E3=80=81=E5=B7=A5=E8=89=BA=E8=B7=AF?= =?UTF-8?q?=E7=BA=BF=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/erp/enums/ErrorCodeConstants.java | 4 + .../admin/erp/ErpBomController.java | 107 ++++++++++++++++++ .../admin/erp/ErpBomDetailController.java | 107 ++++++++++++++++++ .../admin/erp/ErpCompanyController.java | 6 +- .../admin/erp/ErpCustomerController.java | 2 +- .../admin/erp/ErpMaterialController.java | 6 +- .../admin/erp/ErpProcessController.java | 107 ++++++++++++++++++ .../admin/erp/ErpProcessDetailController.java | 107 ++++++++++++++++++ .../admin/erp/vo/ErpBomDetailPageReqVO.java | 37 ++++++ .../admin/erp/vo/ErpBomDetailRespVO.java | 50 ++++++++ .../admin/erp/vo/ErpBomDetailSaveReqVO.java | 48 ++++++++ .../admin/erp/vo/ErpBomPageReqVO.java | 31 +++++ .../controller/admin/erp/vo/ErpBomRespVO.java | 42 +++++++ .../admin/erp/vo/ErpBomSaveReqVO.java | 39 +++++++ .../erp/vo/ErpProcessDetailPageReqVO.java | 31 +++++ .../admin/erp/vo/ErpProcessDetailRespVO.java | 42 +++++++ .../erp/vo/ErpProcessDetailSaveReqVO.java | 39 +++++++ .../admin/erp/vo/ErpProcessPageReqVO.java | 40 +++++++ .../admin/erp/vo/ErpProcessRespVO.java | 54 +++++++++ .../admin/erp/vo/ErpProcessSaveReqVO.java | 50 ++++++++ .../erp/dal/dataobject/erp/ErpBomDO.java | 65 +++++++++++ .../dal/dataobject/erp/ErpBomDetailDO.java | 75 ++++++++++++ .../erp/dal/dataobject/erp/ErpProcessDO.java | 79 +++++++++++++ .../dataobject/erp/ErpProcessDetailDO.java | 64 +++++++++++ .../erp/dal/mysql/erp/ErpBomDetailMapper.java | 33 ++++++ .../erp/dal/mysql/erp/ErpBomMapper.java | 31 +++++ .../dal/mysql/erp/ErpProcessDetailMapper.java | 31 +++++ .../erp/dal/mysql/erp/ErpProcessMapper.java | 34 ++++++ .../erp/service/erp/ErpBomDetailService.java | 62 ++++++++++ .../service/erp/ErpBomDetailServiceImpl.java | 92 +++++++++++++++ .../module/erp/service/erp/ErpBomService.java | 62 ++++++++++ .../erp/service/erp/ErpBomServiceImpl.java | 92 +++++++++++++++ .../service/erp/ErpProcessDetailService.java | 62 ++++++++++ .../erp/ErpProcessDetailServiceImpl.java | 92 +++++++++++++++ .../erp/service/erp/ErpProcessService.java | 62 ++++++++++ .../service/erp/ErpProcessServiceImpl.java | 92 +++++++++++++++ .../resources/mapper/ErpBomDetailMapper.xml | 12 ++ .../main/resources/mapper/ErpBomMapper.xml | 12 ++ .../mapper/ErpProcessDetailMapper.xml | 12 ++ .../resources/mapper/ErpProcessMapper.xml | 12 ++ 40 files changed, 2018 insertions(+), 7 deletions(-) create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomDetailController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessDetailController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDetailDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDetailDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomDetailMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessDetailMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml 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 23282d4..814f45e 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 @@ -8,4 +8,8 @@ public interface ErrorCodeConstants { ErrorCode ERP_CUSTOMER_NOT_EXISTS = new ErrorCode(1_001_000_001, "ERP客商主数据不存在"); ErrorCode ERP_MATERIAL_NOT_EXISTS = new ErrorCode(1_001_000_002, "ERP物料数据不存在"); ErrorCode ERP_COMPANY_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_BOM_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_BOM_DETAIL_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PROCESS_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PROCESS_DETAIL_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/ErpBomController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomController.java new file mode 100644 index 0000000..4b87f18 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomController.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpBomService; + +@Tag(name = "管理后台 - ERP物料清单(BOM)") +@RestController +@RequestMapping("/sply/erp-bom") +@Validated +public class ErpBomController { + + + @Resource + private ErpBomService erpBomService; + + @PostMapping("/create") + @Operation(summary = "创建ERP物料清单(BOM)") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:create')") + public CommonResult createErpBom(@Valid @RequestBody ErpBomSaveReqVO createReqVO) { + return success(erpBomService.createErpBom(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP物料清单(BOM)") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:update')") + public CommonResult updateErpBom(@Valid @RequestBody ErpBomSaveReqVO updateReqVO) { + erpBomService.updateErpBom(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP物料清单(BOM)") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-bom:delete')") + public CommonResult deleteErpBom(@RequestParam("id") Long id) { + erpBomService.deleteErpBom(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP物料清单(BOM)") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:delete')") + public CommonResult deleteErpBomList(@RequestBody BatchDeleteReqVO req) { + erpBomService.deleteErpBomListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP物料清单(BOM)") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:query')") + public CommonResult getErpBom(@RequestParam("id") Long id) { + ErpBomDO erpBom = erpBomService.getErpBom(id); + return success(BeanUtils.toBean(erpBom, ErpBomRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP物料清单(BOM)分页") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:query')") + public CommonResult> getErpBomPage(@Valid ErpBomPageReqVO pageReqVO) { + PageResult pageResult = erpBomService.getErpBomPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpBomRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP物料清单(BOM) Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpBomExcel(@Valid ErpBomPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpBomService.getErpBomPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP物料清单(BOM).xls", "数据", ErpBomRespVO.class, + BeanUtils.toBean(list, ErpBomRespVO.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/ErpBomDetailController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomDetailController.java new file mode 100644 index 0000000..cc84429 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomDetailController.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpBomDetailService; + +@Tag(name = "管理后台 - ERP物料清单(BOM)明细") +@RestController +@RequestMapping("/sply/erp-bom-detail") +@Validated +public class ErpBomDetailController { + + + @Resource + private ErpBomDetailService erpBomDetailService; + + @PostMapping("/create") + @Operation(summary = "创建ERP物料清单(BOM)明细") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:create')") + public CommonResult createErpBomDetail(@Valid @RequestBody ErpBomDetailSaveReqVO createReqVO) { + return success(erpBomDetailService.createErpBomDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP物料清单(BOM)明细") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:update')") + public CommonResult updateErpBomDetail(@Valid @RequestBody ErpBomDetailSaveReqVO updateReqVO) { + erpBomDetailService.updateErpBomDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP物料清单(BOM)明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:delete')") + public CommonResult deleteErpBomDetail(@RequestParam("id") Long id) { + erpBomDetailService.deleteErpBomDetail(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP物料清单(BOM)明细") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:delete')") + public CommonResult deleteErpBomDetailList(@RequestBody BatchDeleteReqVO req) { + erpBomDetailService.deleteErpBomDetailListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP物料清单(BOM)明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:query')") + public CommonResult getErpBomDetail(@RequestParam("id") Long id) { + ErpBomDetailDO erpBomDetail = erpBomDetailService.getErpBomDetail(id); + return success(BeanUtils.toBean(erpBomDetail, ErpBomDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP物料清单(BOM)明细分页") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:query')") + public CommonResult> getErpBomDetailPage(@Valid ErpBomDetailPageReqVO pageReqVO) { + PageResult pageResult = erpBomDetailService.getErpBomDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpBomDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP物料清单(BOM)明细 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpBomDetailExcel(@Valid ErpBomDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpBomDetailService.getErpBomDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP物料清单(BOM)明细.xls", "数据", ErpBomDetailRespVO.class, + BeanUtils.toBean(list, ErpBomDetailRespVO.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/ErpCompanyController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java index 26f8584..e501d13 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java @@ -33,7 +33,7 @@ import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; @Tag(name = "管理后台 - ERP公司") @RestController -@RequestMapping("/admin/erp/company") +@RequestMapping("/sply/erp-company") @Validated public class ErpCompanyController { @@ -104,10 +104,10 @@ public class ErpCompanyController { BeanUtils.toBean(list, ErpCompanyRespVO.class)); } - @PostMapping("/callErpRfcInterface") + @PostMapping("/getErpCompanyTask") @Operation(summary = "定时获得erp更新公司") @PreAuthorize("@ss.hasPermission('sply:erp-company:query')") - public void callErpRfcInterface() { + public void getErpCompanyTask() { erpCompanyService.callErpRfcInterface(); } diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java index c7e267c..1b16517 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java @@ -33,7 +33,7 @@ import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; @Tag(name = "管理后台 - ERP客商信息") @RestController -@RequestMapping("/erp/customer") +@RequestMapping("/sply/erp-customer") @Validated public class ErpCustomerController { diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java index 764dd9c..8e3ee7a 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java @@ -33,7 +33,7 @@ import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; @Tag(name = "管理后台 - ERP物料信息") @RestController -@RequestMapping("/erp/material") +@RequestMapping("/sply/erp-material") @Validated public class ErpMaterialController { @@ -104,10 +104,10 @@ public class ErpMaterialController { BeanUtils.toBean(list, ErpMaterialRespVO.class)); } - @PostMapping("/callErpRfcInterface") + @PostMapping("/getErpMaterialTask") @Operation(summary = "定时获得erp更新公司") @PreAuthorize("@ss.hasPermission('sply:erp-material:create')") - public void callErpRfcInterface() { + public void getErpMaterialTask() { erpMaterialService.callErpRfcInterface(); } diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java new file mode 100644 index 0000000..12348f6 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpProcessService; + +@Tag(name = "管理后台 - ERP工艺路线") +@RestController +@RequestMapping("/sply/erp-process") +@Validated +public class ErpProcessController { + + + @Resource + private ErpProcessService erpProcessService; + + @PostMapping("/create") + @Operation(summary = "创建ERP工艺路线") + @PreAuthorize("@ss.hasPermission('sply:erp-process:create')") + public CommonResult createErpProcess(@Valid @RequestBody ErpProcessSaveReqVO createReqVO) { + return success(erpProcessService.createErpProcess(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP工艺路线") + @PreAuthorize("@ss.hasPermission('sply:erp-process:update')") + public CommonResult updateErpProcess(@Valid @RequestBody ErpProcessSaveReqVO updateReqVO) { + erpProcessService.updateErpProcess(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP工艺路线") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-process:delete')") + public CommonResult deleteErpProcess(@RequestParam("id") Long id) { + erpProcessService.deleteErpProcess(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP工艺路线") + @PreAuthorize("@ss.hasPermission('sply:erp-process:delete')") + public CommonResult deleteErpProcessList(@RequestBody BatchDeleteReqVO req) { + erpProcessService.deleteErpProcessListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP工艺路线") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-process:query')") + public CommonResult getErpProcess(@RequestParam("id") Long id) { + ErpProcessDO erpProcess = erpProcessService.getErpProcess(id); + return success(BeanUtils.toBean(erpProcess, ErpProcessRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP工艺路线分页") + @PreAuthorize("@ss.hasPermission('sply:erp-process:query')") + public CommonResult> getErpProcessPage(@Valid ErpProcessPageReqVO pageReqVO) { + PageResult pageResult = erpProcessService.getErpProcessPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpProcessRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP工艺路线 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-process:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpProcessExcel(@Valid ErpProcessPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpProcessService.getErpProcessPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP工艺路线.xls", "数据", ErpProcessRespVO.class, + BeanUtils.toBean(list, ErpProcessRespVO.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/ErpProcessDetailController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessDetailController.java new file mode 100644 index 0000000..e49b6dd --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessDetailController.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpProcessDetailService; + +@Tag(name = "管理后台 - ERP工艺路线明细") +@RestController +@RequestMapping("/sply/erp-process-detail") +@Validated +public class ErpProcessDetailController { + + + @Resource + private ErpProcessDetailService erpProcessDetailService; + + @PostMapping("/create") + @Operation(summary = "创建ERP工艺路线明细") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:create')") + public CommonResult createErpProcessDetail(@Valid @RequestBody ErpProcessDetailSaveReqVO createReqVO) { + return success(erpProcessDetailService.createErpProcessDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP工艺路线明细") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:update')") + public CommonResult updateErpProcessDetail(@Valid @RequestBody ErpProcessDetailSaveReqVO updateReqVO) { + erpProcessDetailService.updateErpProcessDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP工艺路线明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:delete')") + public CommonResult deleteErpProcessDetail(@RequestParam("id") Long id) { + erpProcessDetailService.deleteErpProcessDetail(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP工艺路线明细") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:delete')") + public CommonResult deleteErpProcessDetailList(@RequestBody BatchDeleteReqVO req) { + erpProcessDetailService.deleteErpProcessDetailListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP工艺路线明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:query')") + public CommonResult getErpProcessDetail(@RequestParam("id") Long id) { + ErpProcessDetailDO erpProcessDetail = erpProcessDetailService.getErpProcessDetail(id); + return success(BeanUtils.toBean(erpProcessDetail, ErpProcessDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP工艺路线明细分页") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:query')") + public CommonResult> getErpProcessDetailPage(@Valid ErpProcessDetailPageReqVO pageReqVO) { + PageResult pageResult = erpProcessDetailService.getErpProcessDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpProcessDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP工艺路线明细 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpProcessDetailExcel(@Valid ErpProcessDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpProcessDetailService.getErpProcessDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP工艺路线明细.xls", "数据", ErpProcessDetailRespVO.class, + BeanUtils.toBean(list, ErpProcessDetailRespVO.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/ErpBomDetailPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java new file mode 100644 index 0000000..e2ea58d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)明细分页 Request VO") +@Data +public class ErpBomDetailPageReqVO extends PageParam { + + @Schema(description = "BOM主键", example = "24876") + private String bomId; + + @Schema(description = "ERP物料清单主键", example = "14731") + private String erpBomId; + + @Schema(description = "子项物料编码") + private String childMaterialNumber; + + @Schema(description = "子项物料描述") + private BigDecimal childMaterialDescription; + + @Schema(description = "子项类别") + private String category; + + @Schema(description = "基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位") + private String unit; + + @Schema(description = "物料标识", example = "2") + private String identificationType; + +} \ 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/ErpBomDetailRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java new file mode 100644 index 0000000..8e5a207 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - ERP物料清单(BOM)明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpBomDetailRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2110") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "BOM主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24876") + @ExcelProperty("BOM主键") + private String bomId; + + @Schema(description = "ERP物料清单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14731") + @ExcelProperty("ERP物料清单主键") + private String erpBomId; + + @Schema(description = "子项物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子项物料编码") + private String childMaterialNumber; + + @Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子项物料描述") + private BigDecimal childMaterialDescription; + + @Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子项类别") + private String category; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本单位") + private String unit; + + @Schema(description = "物料标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("物料标识") + private String identificationType; + +} \ 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/ErpBomDetailSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java new file mode 100644 index 0000000..5fcee6b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)明细新增/修改 Request VO") +@Data +public class ErpBomDetailSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2110") + private Long id; + + @Schema(description = "BOM主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24876") + @NotEmpty(message = "BOM主键不能为空") + private String bomId; + + @Schema(description = "ERP物料清单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14731") + @NotEmpty(message = "ERP物料清单主键不能为空") + private String erpBomId; + + @Schema(description = "子项物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "子项物料编码不能为空") + private String childMaterialNumber; + + @Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "子项物料描述不能为空") + private BigDecimal childMaterialDescription; + + @Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "子项类别不能为空") + private String category; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "基本数量不能为空") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "基本单位不能为空") + private String unit; + + @Schema(description = "物料标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "物料标识不能为空") + private String identificationType; + +} \ 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/ErpBomPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomPageReqVO.java new file mode 100644 index 0000000..2739890 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomPageReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)分页 Request VO") +@Data +public class ErpBomPageReqVO extends PageParam { + + @Schema(description = "工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "顶层物料编码") + private String upMaterial; + + @Schema(description = "可选BOM") + private String useItem; + + @Schema(description = "物料描述") + private String materialDescription; + + @Schema(description = "基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位") + private String unit; + +} \ 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/ErpBomRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomRespVO.java new file mode 100644 index 0000000..dc40397 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomRespVO.java @@ -0,0 +1,42 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - ERP物料清单(BOM) Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpBomRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31348") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "顶层物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("顶层物料编码") + private String upMaterial; + + @Schema(description = "可选BOM", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("可选BOM") + private String useItem; + + @Schema(description = "物料描述") + @ExcelProperty("物料描述") + private String materialDescription; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本单位") + private String unit; + +} \ 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/ErpBomSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomSaveReqVO.java new file mode 100644 index 0000000..0c95d6e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomSaveReqVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)新增/修改 Request VO") +@Data +public class ErpBomSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31348") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工厂编码不能为空") + private BigDecimal factoryNumber; + + @Schema(description = "顶层物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "顶层物料编码不能为空") + private String upMaterial; + + @Schema(description = "可选BOM", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "可选BOM不能为空") + private String useItem; + + @Schema(description = "物料描述") + private String materialDescription; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "基本数量不能为空") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "基本单位不能为空") + private String unit; + +} \ 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/ErpProcessDetailPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailPageReqVO.java new file mode 100644 index 0000000..5049184 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailPageReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线明细分页 Request VO") +@Data +public class ErpProcessDetailPageReqVO extends PageParam { + + @Schema(description = "ERP工艺路线主键", example = "30589") + private String processId; + + @Schema(description = "工序编码") + private BigDecimal processingNumber; + + @Schema(description = "工序描述", example = "李四") + private String processingName; + + @Schema(description = "作业的计量单位") + private String uom; + + @Schema(description = "工作中心编号") + private String workCenterNumber; + + @Schema(description = "工作中心描述", example = "张三") + private String workCenterName; + +} \ 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/ErpProcessDetailRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailRespVO.java new file mode 100644 index 0000000..bca4f80 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailRespVO.java @@ -0,0 +1,42 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - ERP工艺路线明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpProcessDetailRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5707") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "ERP工艺路线主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30589") + @ExcelProperty("ERP工艺路线主键") + private String processId; + + @Schema(description = "工序编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工序编码") + private BigDecimal processingNumber; + + @Schema(description = "工序描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("工序描述") + private String processingName; + + @Schema(description = "作业的计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("作业的计量单位") + private String uom; + + @Schema(description = "工作中心编号") + @ExcelProperty("工作中心编号") + private String workCenterNumber; + + @Schema(description = "工作中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("工作中心描述") + private String workCenterName; + +} \ 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/ErpProcessDetailSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailSaveReqVO.java new file mode 100644 index 0000000..c8a777d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailSaveReqVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线明细新增/修改 Request VO") +@Data +public class ErpProcessDetailSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5707") + private Long id; + + @Schema(description = "ERP工艺路线主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30589") + @NotEmpty(message = "ERP工艺路线主键不能为空") + private String processId; + + @Schema(description = "工序编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工序编码不能为空") + private BigDecimal processingNumber; + + @Schema(description = "工序描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "工序描述不能为空") + private String processingName; + + @Schema(description = "作业的计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "作业的计量单位不能为空") + private String uom; + + @Schema(description = "工作中心编号") + private String workCenterNumber; + + @Schema(description = "工作中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotEmpty(message = "工作中心描述不能为空") + private String workCenterName; + +} \ 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/ErpProcessPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessPageReqVO.java new file mode 100644 index 0000000..09c6e5f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessPageReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线分页 Request VO") +@Data +public class ErpProcessPageReqVO extends PageParam { + + @Schema(description = "工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "物料描述", example = "李四") + private String materialName; + + @Schema(description = "工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", example = "27504") + private Long groupCount; + + @Schema(description = "工艺路线描述") + private String blineDescription; + + @Schema(description = "计量单位") + private String uom; + + @Schema(description = "用途") + private String useDescription; + + @Schema(description = "状态", example = "2") + private String status; + +} \ 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/ErpProcessRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessRespVO.java new file mode 100644 index 0000000..8526c38 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessRespVO.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - ERP工艺路线 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpProcessRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13200") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料编码") + private String materialNumber; + + @Schema(description = "物料描述", example = "李四") + @ExcelProperty("物料描述") + private String materialName; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "27504") + @ExcelProperty("组计数器") + private Long groupCount; + + @Schema(description = "工艺路线描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺路线描述") + private String blineDescription; + + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计量单位") + private String uom; + + @Schema(description = "用途") + @ExcelProperty("用途") + private String useDescription; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态") + private String status; + +} \ 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/ErpProcessSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessSaveReqVO.java new file mode 100644 index 0000000..78cfd0b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessSaveReqVO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线新增/修改 Request VO") +@Data +public class ErpProcessSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13200") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工厂编码不能为空") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料编码不能为空") + private String materialNumber; + + @Schema(description = "物料描述", example = "李四") + private String materialName; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺路线组不能为空") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "27504") + @NotNull(message = "组计数器不能为空") + private Long groupCount; + + @Schema(description = "工艺路线描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺路线描述不能为空") + private String blineDescription; + + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计量单位不能为空") + private String uom; + + @Schema(description = "用途") + private String useDescription; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "状态不能为空") + private String status; + +} \ 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/ErpBomDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDO.java new file mode 100644 index 0000000..0e706d6 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDO.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import lombok.*; +import java.util.*; + import java.math.BigDecimal; + import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +/** +* ERP物料清单(BOM) DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_bm") +@KeySequence("sply_erp_bm_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpBomDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂编码 + */ + @TableField("FACT_NUM") + private BigDecimal factoryNumber; + /** + * 顶层物料编码 + */ + @TableField("UP_MTRL") + private String upMaterial; + /** + * 可选BOM + */ + @TableField("USE_ITM") + private String useItem; + /** + * 物料描述 + */ + @TableField("MTRL_DSP") + private String materialDescription; + /** + * 基本数量 + */ + @TableField("QTY") + private BigDecimal quantity; + /** + * 基本单位 + */ + @TableField("UNT") + private String unit; + +} \ 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/ErpBomDetailDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDetailDO.java new file mode 100644 index 0000000..02c799f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDetailDO.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import lombok.*; +import java.util.*; + import java.math.BigDecimal; + import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +/** +* ERP物料清单(BOM)明细 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_bm_dtl") +@KeySequence("sply_erp_bm_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpBomDetailDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * BOM主键 + */ + @TableField("BM_ID") + private String bomId; + /** + * ERP物料清单主键 + */ + @TableField("ERP_BM_ID") + private String erpBomId; + /** + * 子项物料编码 + */ + @TableField("CHD_MTRL_NUM") + private String childMaterialNumber; + /** + * 子项物料描述 + */ + @TableField("CHD_MTRL_DSP") + private BigDecimal childMaterialDescription; + /** + * 子项类别 + */ + @TableField("CTGR") + private String category; + /** + * 基本数量 + */ + @TableField("QTY") + private BigDecimal quantity; + /** + * 基本单位 + */ + @TableField("UNT") + private String unit; + /** + * 物料标识 + */ + @TableField("IDE_TP") + private String identificationType; + +} \ 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/ErpProcessDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDO.java new file mode 100644 index 0000000..458399b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDO.java @@ -0,0 +1,79 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import lombok.*; +import java.util.*; + import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +/** +* ERP工艺路线 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_prcs") +@KeySequence("sply_erp_prcs_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpProcessDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂编码 + */ + @TableField("FACT_NUM") + private BigDecimal factoryNumber; + /** + * 物料编码 + */ + @TableField("MTRL_NUM") + private String materialNumber; + /** + * 物料描述 + */ + @TableField("MTRL_NAME") + private String materialName; + /** + * 工艺路线组 + */ + @TableField("BLN_GRP") + private String blineGroup; + /** + * 组计数器 + */ + @TableField("GRP_CNT") + private Long groupCount; + /** + * 工艺路线描述 + */ + @TableField("BLN_DSP") + private String blineDescription; + /** + * 计量单位 + */ + @TableField("UOM") + private String uom; + /** + * 用途 + */ + @TableField("USE_DSP") + private String useDescription; + /** + * 状态 + */ + @TableField("STS") + private String status; + +} \ 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/ErpProcessDetailDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDetailDO.java new file mode 100644 index 0000000..669f0d6 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDetailDO.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import lombok.*; +import java.util.*; + import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +/** +* ERP工艺路线明细 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_prcs_dtl") +@KeySequence("sply_erp_prcs_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpProcessDetailDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * ERP工艺路线主键 + */ + @TableField("PRCS_ID") + private String processId; + /** + * 工序编码 + */ + @TableField("PROC_NUM") + private BigDecimal processingNumber; + /** + * 工序描述 + */ + @TableField("PROC_NAME") + private String processingName; + /** + * 作业的计量单位 + */ + @TableField("UOM") + private String uom; + /** + * 工作中心编号 + */ + @TableField("WRK_CTR_NUM") + private String workCenterNumber; + /** + * 工作中心描述 + */ + @TableField("WRK_CTR_NAME") + private String workCenterName; + +} \ 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/ErpBomDetailMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomDetailMapper.java new file mode 100644 index 0000000..24305c6 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomDetailMapper.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; + +/** + * ERP物料清单(BOM)明细 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpBomDetailMapper extends BaseMapperX { + + default PageResult selectPage(ErpBomDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpBomDetailDO::getBomId, reqVO.getBomId()) + .eqIfPresent(ErpBomDetailDO::getErpBomId, reqVO.getErpBomId()) + .eqIfPresent(ErpBomDetailDO::getChildMaterialNumber, reqVO.getChildMaterialNumber()) + .eqIfPresent(ErpBomDetailDO::getChildMaterialDescription, reqVO.getChildMaterialDescription()) + .eqIfPresent(ErpBomDetailDO::getCategory, reqVO.getCategory()) + .eqIfPresent(ErpBomDetailDO::getQuantity, reqVO.getQuantity()) + .eqIfPresent(ErpBomDetailDO::getUnit, reqVO.getUnit()) + .eqIfPresent(ErpBomDetailDO::getIdentificationType, reqVO.getIdentificationType()) + .orderByDesc(ErpBomDetailDO::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/ErpBomMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomMapper.java new file mode 100644 index 0000000..943d284 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; + +/** + * ERP物料清单(BOM) Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpBomMapper extends BaseMapperX { + + default PageResult selectPage(ErpBomPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpBomDO::getFactoryNumber, reqVO.getFactoryNumber()) + .eqIfPresent(ErpBomDO::getUpMaterial, reqVO.getUpMaterial()) + .eqIfPresent(ErpBomDO::getUseItem, reqVO.getUseItem()) + .eqIfPresent(ErpBomDO::getMaterialDescription, reqVO.getMaterialDescription()) + .eqIfPresent(ErpBomDO::getQuantity, reqVO.getQuantity()) + .eqIfPresent(ErpBomDO::getUnit, reqVO.getUnit()) + .orderByDesc(ErpBomDO::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/ErpProcessDetailMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessDetailMapper.java new file mode 100644 index 0000000..fb4aedc --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessDetailMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; + +/** + * ERP工艺路线明细 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpProcessDetailMapper extends BaseMapperX { + + default PageResult selectPage(ErpProcessDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpProcessDetailDO::getProcessId, reqVO.getProcessId()) + .eqIfPresent(ErpProcessDetailDO::getProcessingNumber, reqVO.getProcessingNumber()) + .likeIfPresent(ErpProcessDetailDO::getProcessingName, reqVO.getProcessingName()) + .eqIfPresent(ErpProcessDetailDO::getUom, reqVO.getUom()) + .eqIfPresent(ErpProcessDetailDO::getWorkCenterNumber, reqVO.getWorkCenterNumber()) + .likeIfPresent(ErpProcessDetailDO::getWorkCenterName, reqVO.getWorkCenterName()) + .orderByDesc(ErpProcessDetailDO::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/ErpProcessMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessMapper.java new file mode 100644 index 0000000..b7abf33 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessMapper.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; + +/** + * ERP工艺路线 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpProcessMapper extends BaseMapperX { + + default PageResult selectPage(ErpProcessPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpProcessDO::getFactoryNumber, reqVO.getFactoryNumber()) + .eqIfPresent(ErpProcessDO::getMaterialNumber, reqVO.getMaterialNumber()) + .likeIfPresent(ErpProcessDO::getMaterialName, reqVO.getMaterialName()) + .eqIfPresent(ErpProcessDO::getBlineGroup, reqVO.getBlineGroup()) + .eqIfPresent(ErpProcessDO::getGroupCount, reqVO.getGroupCount()) + .eqIfPresent(ErpProcessDO::getBlineDescription, reqVO.getBlineDescription()) + .eqIfPresent(ErpProcessDO::getUom, reqVO.getUom()) + .eqIfPresent(ErpProcessDO::getUseDescription, reqVO.getUseDescription()) + .eqIfPresent(ErpProcessDO::getStatus, reqVO.getStatus()) + .orderByDesc(ErpProcessDO::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/ErpBomDetailService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailService.java new file mode 100644 index 0000000..763619f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailService.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import java.util.*; +import jakarta.validation.*; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * ERP物料清单(BOM)明细 Service 接口 + * + * @author 后台管理 + */ +public interface ErpBomDetailService { + + /** + * 创建ERP物料清单(BOM)明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpBomDetailRespVO createErpBomDetail(@Valid ErpBomDetailSaveReqVO createReqVO); + + /** + * 更新ERP物料清单(BOM)明细 + * + * @param updateReqVO 更新信息 + */ + void updateErpBomDetail(@Valid ErpBomDetailSaveReqVO updateReqVO); + + /** + * 删除ERP物料清单(BOM)明细 + * + * @param id 编号 + */ + void deleteErpBomDetail(Long id); + + /** + * 批量删除ERP物料清单(BOM)明细 + * + * @param ids 编号 + */ + void deleteErpBomDetailListByIds(List ids); + + /** + * 获得ERP物料清单(BOM)明细 + * + * @param id 编号 + * @return ERP物料清单(BOM)明细 + */ + ErpBomDetailDO getErpBomDetail(Long id); + + /** + * 获得ERP物料清单(BOM)明细分页 + * + * @param pageReqVO 分页查询 + * @return ERP物料清单(BOM)明细分页 + */ + PageResult getErpBomDetailPage(ErpBomDetailPageReqVO 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/ErpBomDetailServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailServiceImpl.java new file mode 100644 index 0000000..0352853 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailServiceImpl.java @@ -0,0 +1,92 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +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.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +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 cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpBomDetailMapper; + +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.erp.enums.ErrorCodeConstants.*; + +/** + * ERP物料清单(BOM)明细 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpBomDetailServiceImpl implements ErpBomDetailService { + + @Resource + private ErpBomDetailMapper erpBomDetailMapper; + + @Override + public ErpBomDetailRespVO createErpBomDetail(ErpBomDetailSaveReqVO createReqVO) { + // 插入 + ErpBomDetailDO erpBomDetail = BeanUtils.toBean(createReqVO, ErpBomDetailDO.class); + erpBomDetailMapper.insert(erpBomDetail); + // 返回 + return BeanUtils.toBean(erpBomDetail, ErpBomDetailRespVO.class); + } + + @Override + public void updateErpBomDetail(ErpBomDetailSaveReqVO updateReqVO) { + // 校验存在 + validateErpBomDetailExists(updateReqVO.getId()); + // 更新 + ErpBomDetailDO updateObj = BeanUtils.toBean(updateReqVO, ErpBomDetailDO.class); + erpBomDetailMapper.updateById(updateObj); + } + + @Override + public void deleteErpBomDetail(Long id) { + // 校验存在 + validateErpBomDetailExists(id); + // 删除 + erpBomDetailMapper.deleteById(id); + } + + @Override + public void deleteErpBomDetailListByIds(List ids) { + // 校验存在 + validateErpBomDetailExists(ids); + // 删除 + erpBomDetailMapper.deleteByIds(ids); + } + + private void validateErpBomDetailExists(List ids) { + List list = erpBomDetailMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_BOM_DETAIL_NOT_EXISTS); + } + } + + private void validateErpBomDetailExists(Long id) { + if (erpBomDetailMapper.selectById(id) == null) { + throw exception(ERP_BOM_DETAIL_NOT_EXISTS); + } + } + + @Override + public ErpBomDetailDO getErpBomDetail(Long id) { + return erpBomDetailMapper.selectById(id); + } + + @Override + public PageResult getErpBomDetailPage(ErpBomDetailPageReqVO pageReqVO) { + return erpBomDetailMapper.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/ErpBomService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomService.java new file mode 100644 index 0000000..12c70ad --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomService.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import java.util.*; +import jakarta.validation.*; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * ERP物料清单(BOM) Service 接口 + * + * @author 后台管理 + */ +public interface ErpBomService { + + /** + * 创建ERP物料清单(BOM) + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpBomRespVO createErpBom(@Valid ErpBomSaveReqVO createReqVO); + + /** + * 更新ERP物料清单(BOM) + * + * @param updateReqVO 更新信息 + */ + void updateErpBom(@Valid ErpBomSaveReqVO updateReqVO); + + /** + * 删除ERP物料清单(BOM) + * + * @param id 编号 + */ + void deleteErpBom(Long id); + + /** + * 批量删除ERP物料清单(BOM) + * + * @param ids 编号 + */ + void deleteErpBomListByIds(List ids); + + /** + * 获得ERP物料清单(BOM) + * + * @param id 编号 + * @return ERP物料清单(BOM) + */ + ErpBomDO getErpBom(Long id); + + /** + * 获得ERP物料清单(BOM)分页 + * + * @param pageReqVO 分页查询 + * @return ERP物料清单(BOM)分页 + */ + PageResult getErpBomPage(ErpBomPageReqVO 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/ErpBomServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomServiceImpl.java new file mode 100644 index 0000000..c3cfb83 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomServiceImpl.java @@ -0,0 +1,92 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +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.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +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 cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpBomMapper; + +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.erp.enums.ErrorCodeConstants.*; + +/** + * ERP物料清单(BOM) Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpBomServiceImpl implements ErpBomService { + + @Resource + private ErpBomMapper erpBomMapper; + + @Override + public ErpBomRespVO createErpBom(ErpBomSaveReqVO createReqVO) { + // 插入 + ErpBomDO erpBom = BeanUtils.toBean(createReqVO, ErpBomDO.class); + erpBomMapper.insert(erpBom); + // 返回 + return BeanUtils.toBean(erpBom, ErpBomRespVO.class); + } + + @Override + public void updateErpBom(ErpBomSaveReqVO updateReqVO) { + // 校验存在 + validateErpBomExists(updateReqVO.getId()); + // 更新 + ErpBomDO updateObj = BeanUtils.toBean(updateReqVO, ErpBomDO.class); + erpBomMapper.updateById(updateObj); + } + + @Override + public void deleteErpBom(Long id) { + // 校验存在 + validateErpBomExists(id); + // 删除 + erpBomMapper.deleteById(id); + } + + @Override + public void deleteErpBomListByIds(List ids) { + // 校验存在 + validateErpBomExists(ids); + // 删除 + erpBomMapper.deleteByIds(ids); + } + + private void validateErpBomExists(List ids) { + List list = erpBomMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_BOM_NOT_EXISTS); + } + } + + private void validateErpBomExists(Long id) { + if (erpBomMapper.selectById(id) == null) { + throw exception(ERP_BOM_NOT_EXISTS); + } + } + + @Override + public ErpBomDO getErpBom(Long id) { + return erpBomMapper.selectById(id); + } + + @Override + public PageResult getErpBomPage(ErpBomPageReqVO pageReqVO) { + return erpBomMapper.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/ErpProcessDetailService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailService.java new file mode 100644 index 0000000..4451b48 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailService.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import java.util.*; +import jakarta.validation.*; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * ERP工艺路线明细 Service 接口 + * + * @author 后台管理 + */ +public interface ErpProcessDetailService { + + /** + * 创建ERP工艺路线明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpProcessDetailRespVO createErpProcessDetail(@Valid ErpProcessDetailSaveReqVO createReqVO); + + /** + * 更新ERP工艺路线明细 + * + * @param updateReqVO 更新信息 + */ + void updateErpProcessDetail(@Valid ErpProcessDetailSaveReqVO updateReqVO); + + /** + * 删除ERP工艺路线明细 + * + * @param id 编号 + */ + void deleteErpProcessDetail(Long id); + + /** + * 批量删除ERP工艺路线明细 + * + * @param ids 编号 + */ + void deleteErpProcessDetailListByIds(List ids); + + /** + * 获得ERP工艺路线明细 + * + * @param id 编号 + * @return ERP工艺路线明细 + */ + ErpProcessDetailDO getErpProcessDetail(Long id); + + /** + * 获得ERP工艺路线明细分页 + * + * @param pageReqVO 分页查询 + * @return ERP工艺路线明细分页 + */ + PageResult getErpProcessDetailPage(ErpProcessDetailPageReqVO 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/ErpProcessDetailServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailServiceImpl.java new file mode 100644 index 0000000..a6854e8 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailServiceImpl.java @@ -0,0 +1,92 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +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.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +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 cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpProcessDetailMapper; + +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.erp.enums.ErrorCodeConstants.*; + +/** + * ERP工艺路线明细 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { + + @Resource + private ErpProcessDetailMapper erpProcessDetailMapper; + + @Override + public ErpProcessDetailRespVO createErpProcessDetail(ErpProcessDetailSaveReqVO createReqVO) { + // 插入 + ErpProcessDetailDO erpProcessDetail = BeanUtils.toBean(createReqVO, ErpProcessDetailDO.class); + erpProcessDetailMapper.insert(erpProcessDetail); + // 返回 + return BeanUtils.toBean(erpProcessDetail, ErpProcessDetailRespVO.class); + } + + @Override + public void updateErpProcessDetail(ErpProcessDetailSaveReqVO updateReqVO) { + // 校验存在 + validateErpProcessDetailExists(updateReqVO.getId()); + // 更新 + ErpProcessDetailDO updateObj = BeanUtils.toBean(updateReqVO, ErpProcessDetailDO.class); + erpProcessDetailMapper.updateById(updateObj); + } + + @Override + public void deleteErpProcessDetail(Long id) { + // 校验存在 + validateErpProcessDetailExists(id); + // 删除 + erpProcessDetailMapper.deleteById(id); + } + + @Override + public void deleteErpProcessDetailListByIds(List ids) { + // 校验存在 + validateErpProcessDetailExists(ids); + // 删除 + erpProcessDetailMapper.deleteByIds(ids); + } + + private void validateErpProcessDetailExists(List ids) { + List list = erpProcessDetailMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PROCESS_DETAIL_NOT_EXISTS); + } + } + + private void validateErpProcessDetailExists(Long id) { + if (erpProcessDetailMapper.selectById(id) == null) { + throw exception(ERP_PROCESS_DETAIL_NOT_EXISTS); + } + } + + @Override + public ErpProcessDetailDO getErpProcessDetail(Long id) { + return erpProcessDetailMapper.selectById(id); + } + + @Override + public PageResult getErpProcessDetailPage(ErpProcessDetailPageReqVO pageReqVO) { + return erpProcessDetailMapper.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/ErpProcessService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessService.java new file mode 100644 index 0000000..32a671e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessService.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import java.util.*; +import jakarta.validation.*; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * ERP工艺路线 Service 接口 + * + * @author 后台管理 + */ +public interface ErpProcessService { + + /** + * 创建ERP工艺路线 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpProcessRespVO createErpProcess(@Valid ErpProcessSaveReqVO createReqVO); + + /** + * 更新ERP工艺路线 + * + * @param updateReqVO 更新信息 + */ + void updateErpProcess(@Valid ErpProcessSaveReqVO updateReqVO); + + /** + * 删除ERP工艺路线 + * + * @param id 编号 + */ + void deleteErpProcess(Long id); + + /** + * 批量删除ERP工艺路线 + * + * @param ids 编号 + */ + void deleteErpProcessListByIds(List ids); + + /** + * 获得ERP工艺路线 + * + * @param id 编号 + * @return ERP工艺路线 + */ + ErpProcessDO getErpProcess(Long id); + + /** + * 获得ERP工艺路线分页 + * + * @param pageReqVO 分页查询 + * @return ERP工艺路线分页 + */ + PageResult getErpProcessPage(ErpProcessPageReqVO 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/ErpProcessServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessServiceImpl.java new file mode 100644 index 0000000..081b3ad --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessServiceImpl.java @@ -0,0 +1,92 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +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.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +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 cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpProcessMapper; + +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.erp.enums.ErrorCodeConstants.*; + +/** + * ERP工艺路线 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpProcessServiceImpl implements ErpProcessService { + + @Resource + private ErpProcessMapper erpProcessMapper; + + @Override + public ErpProcessRespVO createErpProcess(ErpProcessSaveReqVO createReqVO) { + // 插入 + ErpProcessDO erpProcess = BeanUtils.toBean(createReqVO, ErpProcessDO.class); + erpProcessMapper.insert(erpProcess); + // 返回 + return BeanUtils.toBean(erpProcess, ErpProcessRespVO.class); + } + + @Override + public void updateErpProcess(ErpProcessSaveReqVO updateReqVO) { + // 校验存在 + validateErpProcessExists(updateReqVO.getId()); + // 更新 + ErpProcessDO updateObj = BeanUtils.toBean(updateReqVO, ErpProcessDO.class); + erpProcessMapper.updateById(updateObj); + } + + @Override + public void deleteErpProcess(Long id) { + // 校验存在 + validateErpProcessExists(id); + // 删除 + erpProcessMapper.deleteById(id); + } + + @Override + public void deleteErpProcessListByIds(List ids) { + // 校验存在 + validateErpProcessExists(ids); + // 删除 + erpProcessMapper.deleteByIds(ids); + } + + private void validateErpProcessExists(List ids) { + List list = erpProcessMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PROCESS_NOT_EXISTS); + } + } + + private void validateErpProcessExists(Long id) { + if (erpProcessMapper.selectById(id) == null) { + throw exception(ERP_PROCESS_NOT_EXISTS); + } + } + + @Override + public ErpProcessDO getErpProcess(Long id) { + return erpProcessMapper.selectById(id); + } + + @Override + public PageResult getErpProcessPage(ErpProcessPageReqVO pageReqVO) { + return erpProcessMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.xml new file mode 100644 index 0000000..020682e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.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/ErpBomMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml new file mode 100644 index 0000000..0143f61 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomMapper.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/ErpProcessDetailMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml new file mode 100644 index 0000000..5fa8a22 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.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/ErpProcessMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml new file mode 100644 index 0000000..ac98f4b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file