From 57dc91dcae4f1d71ba04b161cddb6dee9e60c665 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 16 Feb 2026 08:13:33 +0800 Subject: [PATCH] feat(mes): 重构 MES 客户和供应商模块的包结构 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/MesMdClientController.java | 134 -------------------------------------------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/MesMdVendorController.java | 134 -------------------------------------------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/MesMdClientController.java | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientImportExcelVO.java | 44 ++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientImportRespVO.java | 24 ++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientPageReqVO.java | 30 ++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientRespVO.java | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientSaveReqVO.java | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/MesMdVendorController.java | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorImportExcelVO.java | 44 ++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorImportRespVO.java | 24 ++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorPageReqVO.java | 30 ++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorRespVO.java | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorSaveReqVO.java | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientImportExcelVO.java | 44 -------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientImportRespVO.java | 24 ------------------------ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientPageReqVO.java | 30 ------------------------------ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientRespVO.java | 119 ----------------------------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientSaveReqVO.java | 91 ------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorImportExcelVO.java | 44 -------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorImportRespVO.java | 24 ------------------------ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorPageReqVO.java | 30 ------------------------------ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorRespVO.java | 123 --------------------------------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorSaveReqVO.java | 93 --------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/MesMdClientDO.java | 130 ---------------------------------------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/MesMdVendorDO.java | 134 -------------------------------------------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/client/MesMdClientDO.java | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/vendor/MesMdVendorDO.java | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/MesMdClientMapper.java | 46 ---------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/MesMdVendorMapper.java | 46 ---------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/client/MesMdClientMapper.java | 46 ++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/vendor/MesMdVendorMapper.java | 46 ++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdClientService.java | 97 ------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdClientServiceImpl.java | 205 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdVendorService.java | 97 ------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdVendorServiceImpl.java | 200 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/client/MesMdClientService.java | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/client/MesMdClientServiceImpl.java | 205 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorService.java | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorServiceImpl.java | 200 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 40 files changed, 1845 insertions(+), 1845 deletions(-) delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/MesMdClientController.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/MesMdVendorController.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/MesMdClientController.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientImportExcelVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientImportRespVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientPageReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientRespVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientSaveReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/MesMdVendorController.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorImportExcelVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorImportRespVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorPageReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorRespVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorSaveReqVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientImportExcelVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientImportRespVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientPageReqVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientRespVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientSaveReqVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorImportExcelVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorImportRespVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorPageReqVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorRespVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorSaveReqVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/MesMdClientDO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/MesMdVendorDO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/client/MesMdClientDO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/vendor/MesMdVendorDO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/MesMdClientMapper.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/MesMdVendorMapper.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/client/MesMdClientMapper.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/vendor/MesMdVendorMapper.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdClientService.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdClientServiceImpl.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdVendorService.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdVendorServiceImpl.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/client/MesMdClientService.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/client/MesMdClientServiceImpl.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorService.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorServiceImpl.java diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/MesMdClientController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/MesMdClientController.java deleted file mode 100644 index 0519dfb..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/MesMdClientController.java +++ /dev/null @@ -1,134 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.md; - -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -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.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.client.MesMdClientImportExcelVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.client.MesMdClientImportRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.client.MesMdClientPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.client.MesMdClientRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.client.MesMdClientSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.MesMdClientDO; -import cn.iocoder.yudao.module.mes.service.md.MesMdClientService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Parameters; -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 org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; -import java.util.Collections; -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; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; - -@Tag(name = "管理后台 - MES 客户") -@RestController -@RequestMapping("/mes/md-client") -@Validated -public class MesMdClientController { - - @Resource - private MesMdClientService clientService; - - @PostMapping("/create") - @Operation(summary = "创建客户") - @PreAuthorize("@ss.hasPermission('mes:md-client:create')") - public CommonResult createClient(@Valid @RequestBody MesMdClientSaveReqVO createReqVO) { - return success(clientService.createClient(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新客户") - @PreAuthorize("@ss.hasPermission('mes:md-client:update')") - public CommonResult updateClient(@Valid @RequestBody MesMdClientSaveReqVO updateReqVO) { - clientService.updateClient(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除客户") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('mes:md-client:delete')") - public CommonResult deleteClient(@RequestParam("id") Long id) { - clientService.deleteClient(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得客户") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('mes:md-client:query')") - public CommonResult getClient(@RequestParam("id") Long id) { - MesMdClientDO client = clientService.getClient(id); - return success(BeanUtils.toBean(client, MesMdClientRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得客户分页") - @PreAuthorize("@ss.hasPermission('mes:md-client:query')") - public CommonResult> getClientPage(@Valid MesMdClientPageReqVO pageReqVO) { - PageResult pageResult = clientService.getClientPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, MesMdClientRespVO.class)); - } - - @GetMapping("/simple-list") - @Operation(summary = "获得客户精简列表", description = "只包含被开启的客户,主要用于前端的下拉选项") - public CommonResult> getClientSimpleList() { - List list = clientService.getClientListByStatus(CommonStatusEnum.ENABLE.getStatus()); - return success(convertList(list, client -> new MesMdClientRespVO() - .setId(client.getId()).setName(client.getName()).setCode(client.getCode()))); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出客户 Excel") - @PreAuthorize("@ss.hasPermission('mes:md-client:export')") - @ApiAccessLog(operateType = EXPORT) - public void exportClientExcel(@Valid MesMdClientPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = clientService.getClientPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "客户.xls", "数据", MesMdClientRespVO.class, - BeanUtils.toBean(list, MesMdClientRespVO.class)); - } - - @GetMapping("/get-import-template") - @Operation(summary = "获得客户导入模板") - public void importTemplate(HttpServletResponse response) throws IOException { - // 手动创建导出 demo - List list = Collections.singletonList( - MesMdClientImportExcelVO.builder().code("C001").name("示例客户").nickname("示例") - .type(1).telephone("13800138000").status(0).build() - ); - // 输出 - ExcelUtils.write(response, "客户导入模板.xls", "客户列表", MesMdClientImportExcelVO.class, list); - } - - @PostMapping("/import") - @Operation(summary = "导入客户") - @Parameters({ - @Parameter(name = "file", description = "Excel 文件", required = true), - @Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true") - }) - @PreAuthorize("@ss.hasPermission('mes:md-client:import')") - public CommonResult importExcel(@RequestParam("file") MultipartFile file, - @RequestParam(value = "updateSupport", required = false, - defaultValue = "false") Boolean updateSupport) throws Exception { - List list = ExcelUtils.read(file, MesMdClientImportExcelVO.class); - return success(clientService.importClientList(list, updateSupport)); - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/MesMdVendorController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/MesMdVendorController.java deleted file mode 100644 index 4199e6f..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/MesMdVendorController.java +++ /dev/null @@ -1,134 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.md; - -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -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.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor.MesMdVendorImportExcelVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor.MesMdVendorImportRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor.MesMdVendorPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor.MesMdVendorRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor.MesMdVendorSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.MesMdVendorDO; -import cn.iocoder.yudao.module.mes.service.md.MesMdVendorService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Parameters; -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 org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; -import java.util.Collections; -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; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; - -@Tag(name = "管理后台 - MES 供应商") -@RestController -@RequestMapping("/mes/md-vendor") -@Validated -public class MesMdVendorController { - - @Resource - private MesMdVendorService vendorService; - - @PostMapping("/create") - @Operation(summary = "创建供应商") - @PreAuthorize("@ss.hasPermission('mes:md-vendor:create')") - public CommonResult createVendor(@Valid @RequestBody MesMdVendorSaveReqVO createReqVO) { - return success(vendorService.createVendor(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新供应商") - @PreAuthorize("@ss.hasPermission('mes:md-vendor:update')") - public CommonResult updateVendor(@Valid @RequestBody MesMdVendorSaveReqVO updateReqVO) { - vendorService.updateVendor(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除供应商") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('mes:md-vendor:delete')") - public CommonResult deleteVendor(@RequestParam("id") Long id) { - vendorService.deleteVendor(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得供应商") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('mes:md-vendor:query')") - public CommonResult getVendor(@RequestParam("id") Long id) { - MesMdVendorDO vendor = vendorService.getVendor(id); - return success(BeanUtils.toBean(vendor, MesMdVendorRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得供应商分页") - @PreAuthorize("@ss.hasPermission('mes:md-vendor:query')") - public CommonResult> getVendorPage(@Valid MesMdVendorPageReqVO pageReqVO) { - PageResult pageResult = vendorService.getVendorPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, MesMdVendorRespVO.class)); - } - - @GetMapping("/simple-list") - @Operation(summary = "获得供应商精简列表", description = "只包含被开启的供应商,主要用于前端的下拉选项") - public CommonResult> getVendorSimpleList() { - List list = vendorService.getVendorListByStatus(CommonStatusEnum.ENABLE.getStatus()); - return success(convertList(list, vendor -> new MesMdVendorRespVO() - .setId(vendor.getId()).setName(vendor.getName()).setCode(vendor.getCode()))); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出供应商 Excel") - @PreAuthorize("@ss.hasPermission('mes:md-vendor:export')") - @ApiAccessLog(operateType = EXPORT) - public void exportVendorExcel(@Valid MesMdVendorPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = vendorService.getVendorPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "供应商.xls", "数据", MesMdVendorRespVO.class, - BeanUtils.toBean(list, MesMdVendorRespVO.class)); - } - - @GetMapping("/get-import-template") - @Operation(summary = "获得供应商导入模板") - public void importTemplate(HttpServletResponse response) throws IOException { - // 手动创建导出 demo - List list = Collections.singletonList( - MesMdVendorImportExcelVO.builder().code("V001").name("示例供应商").nickname("示例") - .level("A").telephone("13800138000").status(0).build() - ); - // 输出 - ExcelUtils.write(response, "供应商导入模板.xls", "供应商列表", MesMdVendorImportExcelVO.class, list); - } - - @PostMapping("/import") - @Operation(summary = "导入供应商") - @Parameters({ - @Parameter(name = "file", description = "Excel 文件", required = true), - @Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true") - }) - @PreAuthorize("@ss.hasPermission('mes:md-vendor:import')") - public CommonResult importExcel(@RequestParam("file") MultipartFile file, - @RequestParam(value = "updateSupport", required = false, - defaultValue = "false") Boolean updateSupport) throws Exception { - List list = ExcelUtils.read(file, MesMdVendorImportExcelVO.class); - return success(vendorService.importVendorList(list, updateSupport)); - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/MesMdClientController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/MesMdClientController.java new file mode 100644 index 0000000..88c7abb --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/MesMdClientController.java @@ -0,0 +1,134 @@ +package cn.iocoder.yudao.module.mes.controller.admin.md.client; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +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.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.mes.controller.admin.md.client.vo.MesMdClientImportExcelVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.client.vo.MesMdClientImportRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.client.vo.MesMdClientPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.client.vo.MesMdClientRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.client.vo.MesMdClientSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO; +import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +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 org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.Collections; +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; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; + +@Tag(name = "管理后台 - MES 客户") +@RestController +@RequestMapping("/mes/md-client") +@Validated +public class MesMdClientController { + + @Resource + private MesMdClientService clientService; + + @PostMapping("/create") + @Operation(summary = "创建客户") + @PreAuthorize("@ss.hasPermission('mes:md-client:create')") + public CommonResult createClient(@Valid @RequestBody MesMdClientSaveReqVO createReqVO) { + return success(clientService.createClient(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新客户") + @PreAuthorize("@ss.hasPermission('mes:md-client:update')") + public CommonResult updateClient(@Valid @RequestBody MesMdClientSaveReqVO updateReqVO) { + clientService.updateClient(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除客户") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:md-client:delete')") + public CommonResult deleteClient(@RequestParam("id") Long id) { + clientService.deleteClient(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得客户") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:md-client:query')") + public CommonResult getClient(@RequestParam("id") Long id) { + MesMdClientDO client = clientService.getClient(id); + return success(BeanUtils.toBean(client, MesMdClientRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得客户分页") + @PreAuthorize("@ss.hasPermission('mes:md-client:query')") + public CommonResult> getClientPage(@Valid MesMdClientPageReqVO pageReqVO) { + PageResult pageResult = clientService.getClientPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MesMdClientRespVO.class)); + } + + @GetMapping("/simple-list") + @Operation(summary = "获得客户精简列表", description = "只包含被开启的客户,主要用于前端的下拉选项") + public CommonResult> getClientSimpleList() { + List list = clientService.getClientListByStatus(CommonStatusEnum.ENABLE.getStatus()); + return success(convertList(list, client -> new MesMdClientRespVO() + .setId(client.getId()).setName(client.getName()).setCode(client.getCode()))); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出客户 Excel") + @PreAuthorize("@ss.hasPermission('mes:md-client:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportClientExcel(@Valid MesMdClientPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = clientService.getClientPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "客户.xls", "数据", MesMdClientRespVO.class, + BeanUtils.toBean(list, MesMdClientRespVO.class)); + } + + @GetMapping("/get-import-template") + @Operation(summary = "获得客户导入模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = Collections.singletonList( + MesMdClientImportExcelVO.builder().code("C001").name("示例客户").nickname("示例") + .type(1).telephone("13800138000").status(0).build() + ); + // 输出 + ExcelUtils.write(response, "客户导入模板.xls", "客户列表", MesMdClientImportExcelVO.class, list); + } + + @PostMapping("/import") + @Operation(summary = "导入客户") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true") + }) + @PreAuthorize("@ss.hasPermission('mes:md-client:import')") + public CommonResult importExcel(@RequestParam("file") MultipartFile file, + @RequestParam(value = "updateSupport", required = false, + defaultValue = "false") Boolean updateSupport) throws Exception { + List list = ExcelUtils.read(file, MesMdClientImportExcelVO.class); + return success(clientService.importClientList(list, updateSupport)); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientImportExcelVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientImportExcelVO.java new file mode 100644 index 0000000..64f5c12 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientImportExcelVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.mes.controller.admin.md.client.vo; + +import cn.idev.excel.annotation.ExcelProperty; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import cn.iocoder.yudao.module.mes.enums.DictTypeConstants; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 客户 Excel 导入 VO + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class MesMdClientImportExcelVO { + + @ExcelProperty("客户编码") + private String code; + + @ExcelProperty("客户名称") + private String name; + + @ExcelProperty("客户简称") + private String nickname; + + @ExcelProperty(value = "客户类型", converter = DictConvert.class) + @DictFormat(DictTypeConstants.MES_CLIENT_TYPE) + private Integer type; + + @ExcelProperty("客户电话") + private String telephone; + + @ExcelProperty("客户邮箱地址") + private String email; + + @ExcelProperty(value = "状态", converter = DictConvert.class) + @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.COMMON_STATUS) + private Integer status; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientImportRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientImportRespVO.java new file mode 100644 index 0000000..7554dd0 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientImportRespVO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.mes.controller.admin.md.client.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Schema(description = "管理后台 - MES 客户导入 Response VO") +@Data +@Builder +public class MesMdClientImportRespVO { + + @Schema(description = "创建成功的客户编码数组", requiredMode = Schema.RequiredMode.REQUIRED) + private List createCodes; + + @Schema(description = "更新成功的客户编码数组", requiredMode = Schema.RequiredMode.REQUIRED) + private List updateCodes; + + @Schema(description = "导入失败的客户集合,key 为客户编码,value 为失败原因", requiredMode = Schema.RequiredMode.REQUIRED) + private Map failureCodes; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientPageReqVO.java new file mode 100644 index 0000000..4d9e1c1 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientPageReqVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.mes.controller.admin.md.client.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - MES 客户分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MesMdClientPageReqVO extends PageParam { + + @Schema(description = "客户编码", example = "C00184") + private String code; + + @Schema(description = "客户名称", example = "比亚迪") + private String name; + + @Schema(description = "客户简称", example = "比亚迪") + private String nickname; + + @Schema(description = "客户类型", example = "1") + private Integer type; + + @Schema(description = "状态", example = "0") + private Integer status; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientRespVO.java new file mode 100644 index 0000000..1b0086a --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientRespVO.java @@ -0,0 +1,119 @@ +package cn.iocoder.yudao.module.mes.controller.admin.md.client.vo; + +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import cn.iocoder.yudao.module.mes.enums.DictTypeConstants; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - MES 客户 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MesMdClientRespVO { + + @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @ExcelProperty("客户编号") + private Long id; + + @Schema(description = "客户编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "C00184") + @ExcelProperty("客户编码") + private String code; + + @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "比亚迪") + @ExcelProperty("客户名称") + private String name; + + @Schema(description = "客户简称", example = "比亚迪") + @ExcelProperty("客户简称") + private String nickname; + + @Schema(description = "客户英文名称", example = "BYD") + @ExcelProperty("客户英文名称") + private String englishName; + + @Schema(description = "客户简介", example = "比亚迪品牌诞生于深圳") + @ExcelProperty("客户简介") + private String description; + + @Schema(description = "客户LOGO地址", example = "https://xxx.com/logo.png") + private String logo; + + @Schema(description = "客户类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty(value = "客户类型", converter = DictConvert.class) + @DictFormat(DictTypeConstants.MES_CLIENT_TYPE) + private Integer type; + + @Schema(description = "客户地址", example = "深圳南山区") + @ExcelProperty("客户地址") + private String address; + + @Schema(description = "客户官网地址", example = "https://www.bydglobal.com") + @ExcelProperty("客户官网地址") + private String website; + + @Schema(description = "客户邮箱地址", example = "salse@bydglobal.com") + @ExcelProperty("客户邮箱地址") + private String email; + + @Schema(description = "客户电话", example = "123432222") + @ExcelProperty("客户电话") + private String telephone; + + @Schema(description = "联系人1", example = "张三") + @ExcelProperty("联系人1") + private String contact1Name; + + @Schema(description = "联系人1-电话", example = "122212312") + @ExcelProperty("联系人1-电话") + private String contact1Telephone; + + @Schema(description = "联系人1-邮箱", example = "s1@bydglobal.com") + @ExcelProperty("联系人1-邮箱") + private String contact1Email; + + @Schema(description = "联系人2", example = "李四") + @ExcelProperty("联系人2") + private String contact2Name; + + @Schema(description = "联系人2-电话", example = "1132323232") + @ExcelProperty("联系人2-电话") + private String contact2Telephone; + + @Schema(description = "联系人2-邮箱", example = "s2@bydglobal.com") + @ExcelProperty("联系人2-邮箱") + private String contact2Email; + + @Schema(description = "统一社会信用代码", example = "11212121") + @ExcelProperty("统一社会信用代码") + private String creditCode; + + @Schema(description = "预留字段1") + private String attribute1; + + @Schema(description = "预留字段2") + private String attribute2; + + @Schema(description = "预留字段3") + private Integer attribute3; + + @Schema(description = "预留字段4") + private Integer attribute4; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") + @ExcelProperty(value = "状态", converter = DictConvert.class) + @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.COMMON_STATUS) + private Integer status; + + @Schema(description = "备注", example = "备注") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientSaveReqVO.java new file mode 100644 index 0000000..f54d53a --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientSaveReqVO.java @@ -0,0 +1,91 @@ +package cn.iocoder.yudao.module.mes.controller.admin.md.client.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Schema(description = "管理后台 - MES 客户新增/修改 Request VO") +@Data +public class MesMdClientSaveReqVO { + + @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long id; + + @Schema(description = "客户编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "C00184") + @NotEmpty(message = "客户编码不能为空") + private String code; + + @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "比亚迪") + @NotEmpty(message = "客户名称不能为空") + private String name; + + @Schema(description = "客户简称", example = "比亚迪") + private String nickname; + + @Schema(description = "客户英文名称", example = "BYD") + private String englishName; + + @Schema(description = "客户简介", example = "比亚迪品牌诞生于深圳") + private String description; + + @Schema(description = "客户LOGO地址", example = "https://xxx.com/logo.png") + private String logo; + + @Schema(description = "客户类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "客户类型不能为空") + private Integer type; + + @Schema(description = "客户地址", example = "深圳南山区") + private String address; + + @Schema(description = "客户官网地址", example = "https://www.bydglobal.com") + private String website; + + @Schema(description = "客户邮箱地址", example = "salse@bydglobal.com") + private String email; + + @Schema(description = "客户电话", example = "123432222") + private String telephone; + + @Schema(description = "联系人1", example = "张三") + private String contact1Name; + + @Schema(description = "联系人1-电话", example = "122212312") + private String contact1Telephone; + + @Schema(description = "联系人1-邮箱", example = "s1@bydglobal.com") + private String contact1Email; + + @Schema(description = "联系人2", example = "李四") + private String contact2Name; + + @Schema(description = "联系人2-电话", example = "1132323232") + private String contact2Telephone; + + @Schema(description = "联系人2-邮箱", example = "s2@bydglobal.com") + private String contact2Email; + + @Schema(description = "统一社会信用代码", example = "11212121") + private String creditCode; + + @Schema(description = "预留字段1") + private String attribute1; + + @Schema(description = "预留字段2") + private String attribute2; + + @Schema(description = "预留字段3") + private Integer attribute3; + + @Schema(description = "预留字段4") + private Integer attribute4; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") + @NotNull(message = "状态不能为空") + private Integer status; + + @Schema(description = "备注", example = "备注") + private String remark; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/MesMdVendorController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/MesMdVendorController.java new file mode 100644 index 0000000..279d9b4 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/MesMdVendorController.java @@ -0,0 +1,134 @@ +package cn.iocoder.yudao.module.mes.controller.admin.md.vendor; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +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.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo.MesMdVendorImportExcelVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo.MesMdVendorImportRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo.MesMdVendorPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo.MesMdVendorRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo.MesMdVendorSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor.MesMdVendorDO; +import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +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 org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.Collections; +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; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; + +@Tag(name = "管理后台 - MES 供应商") +@RestController +@RequestMapping("/mes/md-vendor") +@Validated +public class MesMdVendorController { + + @Resource + private MesMdVendorService vendorService; + + @PostMapping("/create") + @Operation(summary = "创建供应商") + @PreAuthorize("@ss.hasPermission('mes:md-vendor:create')") + public CommonResult createVendor(@Valid @RequestBody MesMdVendorSaveReqVO createReqVO) { + return success(vendorService.createVendor(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新供应商") + @PreAuthorize("@ss.hasPermission('mes:md-vendor:update')") + public CommonResult updateVendor(@Valid @RequestBody MesMdVendorSaveReqVO updateReqVO) { + vendorService.updateVendor(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除供应商") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:md-vendor:delete')") + public CommonResult deleteVendor(@RequestParam("id") Long id) { + vendorService.deleteVendor(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得供应商") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:md-vendor:query')") + public CommonResult getVendor(@RequestParam("id") Long id) { + MesMdVendorDO vendor = vendorService.getVendor(id); + return success(BeanUtils.toBean(vendor, MesMdVendorRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得供应商分页") + @PreAuthorize("@ss.hasPermission('mes:md-vendor:query')") + public CommonResult> getVendorPage(@Valid MesMdVendorPageReqVO pageReqVO) { + PageResult pageResult = vendorService.getVendorPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MesMdVendorRespVO.class)); + } + + @GetMapping("/simple-list") + @Operation(summary = "获得供应商精简列表", description = "只包含被开启的供应商,主要用于前端的下拉选项") + public CommonResult> getVendorSimpleList() { + List list = vendorService.getVendorListByStatus(CommonStatusEnum.ENABLE.getStatus()); + return success(convertList(list, vendor -> new MesMdVendorRespVO() + .setId(vendor.getId()).setName(vendor.getName()).setCode(vendor.getCode()))); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出供应商 Excel") + @PreAuthorize("@ss.hasPermission('mes:md-vendor:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportVendorExcel(@Valid MesMdVendorPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = vendorService.getVendorPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "供应商.xls", "数据", MesMdVendorRespVO.class, + BeanUtils.toBean(list, MesMdVendorRespVO.class)); + } + + @GetMapping("/get-import-template") + @Operation(summary = "获得供应商导入模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = Collections.singletonList( + MesMdVendorImportExcelVO.builder().code("V001").name("示例供应商").nickname("示例") + .level("A").telephone("13800138000").status(0).build() + ); + // 输出 + ExcelUtils.write(response, "供应商导入模板.xls", "供应商列表", MesMdVendorImportExcelVO.class, list); + } + + @PostMapping("/import") + @Operation(summary = "导入供应商") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true") + }) + @PreAuthorize("@ss.hasPermission('mes:md-vendor:import')") + public CommonResult importExcel(@RequestParam("file") MultipartFile file, + @RequestParam(value = "updateSupport", required = false, + defaultValue = "false") Boolean updateSupport) throws Exception { + List list = ExcelUtils.read(file, MesMdVendorImportExcelVO.class); + return success(vendorService.importVendorList(list, updateSupport)); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorImportExcelVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorImportExcelVO.java new file mode 100644 index 0000000..44aaa35 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorImportExcelVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo; + +import cn.idev.excel.annotation.ExcelProperty; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import cn.iocoder.yudao.module.mes.enums.DictTypeConstants; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 供应商 Excel 导入 VO + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class MesMdVendorImportExcelVO { + + @ExcelProperty("供应商编码") + private String code; + + @ExcelProperty("供应商名称") + private String name; + + @ExcelProperty("供应商简称") + private String nickname; + + @ExcelProperty(value = "供应商等级", converter = DictConvert.class) + @DictFormat(DictTypeConstants.MES_VENDOR_LEVEL) + private String level; + + @ExcelProperty("供应商电话") + private String telephone; + + @ExcelProperty("供应商邮箱地址") + private String email; + + @ExcelProperty(value = "状态", converter = DictConvert.class) + @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.COMMON_STATUS) + private Integer status; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorImportRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorImportRespVO.java new file mode 100644 index 0000000..92b552e --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorImportRespVO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Schema(description = "管理后台 - MES 供应商导入 Response VO") +@Data +@Builder +public class MesMdVendorImportRespVO { + + @Schema(description = "创建成功的供应商编码数组", requiredMode = Schema.RequiredMode.REQUIRED) + private List createCodes; + + @Schema(description = "更新成功的供应商编码数组", requiredMode = Schema.RequiredMode.REQUIRED) + private List updateCodes; + + @Schema(description = "导入失败的供应商集合,key 为供应商编码,value 为失败原因", requiredMode = Schema.RequiredMode.REQUIRED) + private Map failureCodes; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorPageReqVO.java new file mode 100644 index 0000000..fc5d275 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorPageReqVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - MES 供应商分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MesMdVendorPageReqVO extends PageParam { + + @Schema(description = "供应商编码", example = "V00101") + private String code; + + @Schema(description = "供应商名称", example = "海力德") + private String name; + + @Schema(description = "供应商简称", example = "海力德") + private String nickname; + + @Schema(description = "供应商等级", example = "A") + private String level; + + @Schema(description = "状态", example = "0") + private Integer status; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorRespVO.java new file mode 100644 index 0000000..9e6ddfe --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorRespVO.java @@ -0,0 +1,123 @@ +package cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo; + +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import cn.iocoder.yudao.module.mes.enums.DictTypeConstants; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - MES 供应商 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MesMdVendorRespVO { + + @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @ExcelProperty("供应商编号") + private Long id; + + @Schema(description = "供应商编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "V00101") + @ExcelProperty("供应商编码") + private String code; + + @Schema(description = "供应商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "海力德电子") + @ExcelProperty("供应商名称") + private String name; + + @Schema(description = "供应商简称", example = "海力德") + @ExcelProperty("供应商简称") + private String nickname; + + @Schema(description = "供应商英文名称", example = "HLD Electronics") + @ExcelProperty("供应商英文名称") + private String englishName; + + @Schema(description = "供应商简介", example = "专业从事电子元器件生产与销售") + @ExcelProperty("供应商简介") + private String description; + + @Schema(description = "供应商LOGO地址", example = "https://xxx.com/logo.png") + private String logo; + + @Schema(description = "供应商等级", example = "A") + @ExcelProperty(value = "供应商等级", converter = DictConvert.class) + @DictFormat(DictTypeConstants.MES_VENDOR_LEVEL) + private String level; + + @Schema(description = "供应商评分", example = "95") + @ExcelProperty("供应商评分") + private Integer score; + + @Schema(description = "供应商地址", example = "深圳市宝安区") + @ExcelProperty("供应商地址") + private String address; + + @Schema(description = "供应商官网地址", example = "https://www.hld-elec.com") + @ExcelProperty("供应商官网地址") + private String website; + + @Schema(description = "供应商邮箱地址", example = "info@hld-elec.com") + @ExcelProperty("供应商邮箱地址") + private String email; + + @Schema(description = "供应商电话", example = "0755-12345678") + @ExcelProperty("供应商电话") + private String telephone; + + @Schema(description = "联系人1", example = "王经理") + @ExcelProperty("联系人1") + private String contact1Name; + + @Schema(description = "联系人1-电话", example = "13800138001") + @ExcelProperty("联系人1-电话") + private String contact1Telephone; + + @Schema(description = "联系人1-邮箱", example = "wang@hld-elec.com") + @ExcelProperty("联系人1-邮箱") + private String contact1Email; + + @Schema(description = "联系人2", example = "赵助理") + @ExcelProperty("联系人2") + private String contact2Name; + + @Schema(description = "联系人2-电话", example = "13800138002") + @ExcelProperty("联系人2-电话") + private String contact2Telephone; + + @Schema(description = "联系人2-邮箱", example = "zhao@hld-elec.com") + @ExcelProperty("联系人2-邮箱") + private String contact2Email; + + @Schema(description = "统一社会信用代码", example = "91440300MA5EXAMPLE") + @ExcelProperty("统一社会信用代码") + private String creditCode; + + @Schema(description = "预留字段1") + private String attribute1; + + @Schema(description = "预留字段2") + private String attribute2; + + @Schema(description = "预留字段3") + private Integer attribute3; + + @Schema(description = "预留字段4") + private Integer attribute4; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") + @ExcelProperty(value = "状态", converter = DictConvert.class) + @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.COMMON_STATUS) + private Integer status; + + @Schema(description = "备注", example = "备注") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorSaveReqVO.java new file mode 100644 index 0000000..9097e3a --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorSaveReqVO.java @@ -0,0 +1,93 @@ +package cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Schema(description = "管理后台 - MES 供应商新增/修改 Request VO") +@Data +public class MesMdVendorSaveReqVO { + + @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long id; + + @Schema(description = "供应商编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "V00101") + @NotEmpty(message = "供应商编码不能为空") + private String code; + + @Schema(description = "供应商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "海力德电子") + @NotEmpty(message = "供应商名称不能为空") + private String name; + + @Schema(description = "供应商简称", example = "海力德") + private String nickname; + + @Schema(description = "供应商英文名称", example = "HLD Electronics") + private String englishName; + + @Schema(description = "供应商简介", example = "专业从事电子元器件生产与销售") + private String description; + + @Schema(description = "供应商LOGO地址", example = "https://xxx.com/logo.png") + private String logo; + + @Schema(description = "供应商等级", example = "A") + private String level; + + @Schema(description = "供应商评分", example = "95") + private Integer score; + + @Schema(description = "供应商地址", example = "深圳市宝安区") + private String address; + + @Schema(description = "供应商官网地址", example = "https://www.hld-elec.com") + private String website; + + @Schema(description = "供应商邮箱地址", example = "info@hld-elec.com") + private String email; + + @Schema(description = "供应商电话", example = "0755-12345678") + private String telephone; + + @Schema(description = "联系人1", example = "王经理") + private String contact1Name; + + @Schema(description = "联系人1-电话", example = "13800138001") + private String contact1Telephone; + + @Schema(description = "联系人1-邮箱", example = "wang@hld-elec.com") + private String contact1Email; + + @Schema(description = "联系人2", example = "赵助理") + private String contact2Name; + + @Schema(description = "联系人2-电话", example = "13800138002") + private String contact2Telephone; + + @Schema(description = "联系人2-邮箱", example = "zhao@hld-elec.com") + private String contact2Email; + + @Schema(description = "统一社会信用代码", example = "91440300MA5EXAMPLE") + private String creditCode; + + @Schema(description = "预留字段1") + private String attribute1; + + @Schema(description = "预留字段2") + private String attribute2; + + @Schema(description = "预留字段3") + private Integer attribute3; + + @Schema(description = "预留字段4") + private Integer attribute4; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") + @NotNull(message = "状态不能为空") + private Integer status; + + @Schema(description = "备注", example = "备注") + private String remark; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientImportExcelVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientImportExcelVO.java deleted file mode 100644 index 0161848..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientImportExcelVO.java +++ /dev/null @@ -1,44 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.md.vo.client; - -import cn.idev.excel.annotation.ExcelProperty; -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.yudao.module.mes.enums.DictTypeConstants; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 客户 Excel 导入 VO - */ -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class MesMdClientImportExcelVO { - - @ExcelProperty("客户编码") - private String code; - - @ExcelProperty("客户名称") - private String name; - - @ExcelProperty("客户简称") - private String nickname; - - @ExcelProperty(value = "客户类型", converter = DictConvert.class) - @DictFormat(DictTypeConstants.MES_CLIENT_TYPE) - private Integer type; - - @ExcelProperty("客户电话") - private String telephone; - - @ExcelProperty("客户邮箱地址") - private String email; - - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.COMMON_STATUS) - private Integer status; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientImportRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientImportRespVO.java deleted file mode 100644 index dc4f2aa..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientImportRespVO.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.md.vo.client; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -@Schema(description = "管理后台 - MES 客户导入 Response VO") -@Data -@Builder -public class MesMdClientImportRespVO { - - @Schema(description = "创建成功的客户编码数组", requiredMode = Schema.RequiredMode.REQUIRED) - private List createCodes; - - @Schema(description = "更新成功的客户编码数组", requiredMode = Schema.RequiredMode.REQUIRED) - private List updateCodes; - - @Schema(description = "导入失败的客户集合,key 为客户编码,value 为失败原因", requiredMode = Schema.RequiredMode.REQUIRED) - private Map failureCodes; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientPageReqVO.java deleted file mode 100644 index 4c93477..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientPageReqVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.md.vo.client; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - MES 客户分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class MesMdClientPageReqVO extends PageParam { - - @Schema(description = "客户编码", example = "C00184") - private String code; - - @Schema(description = "客户名称", example = "比亚迪") - private String name; - - @Schema(description = "客户简称", example = "比亚迪") - private String nickname; - - @Schema(description = "客户类型", example = "1") - private Integer type; - - @Schema(description = "状态", example = "0") - private Integer status; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientRespVO.java deleted file mode 100644 index ecf3d3c..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientRespVO.java +++ /dev/null @@ -1,119 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.md.vo.client; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.yudao.module.mes.enums.DictTypeConstants; -import cn.idev.excel.annotation.ExcelIgnoreUnannotated; -import cn.idev.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - MES 客户 Response VO") -@Data -@ExcelIgnoreUnannotated -public class MesMdClientRespVO { - - @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @ExcelProperty("客户编号") - private Long id; - - @Schema(description = "客户编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "C00184") - @ExcelProperty("客户编码") - private String code; - - @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "比亚迪") - @ExcelProperty("客户名称") - private String name; - - @Schema(description = "客户简称", example = "比亚迪") - @ExcelProperty("客户简称") - private String nickname; - - @Schema(description = "客户英文名称", example = "BYD") - @ExcelProperty("客户英文名称") - private String englishName; - - @Schema(description = "客户简介", example = "比亚迪品牌诞生于深圳") - @ExcelProperty("客户简介") - private String description; - - @Schema(description = "客户LOGO地址", example = "https://xxx.com/logo.png") - private String logo; - - @Schema(description = "客户类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty(value = "客户类型", converter = DictConvert.class) - @DictFormat(DictTypeConstants.MES_CLIENT_TYPE) - private Integer type; - - @Schema(description = "客户地址", example = "深圳南山区") - @ExcelProperty("客户地址") - private String address; - - @Schema(description = "客户官网地址", example = "https://www.bydglobal.com") - @ExcelProperty("客户官网地址") - private String website; - - @Schema(description = "客户邮箱地址", example = "salse@bydglobal.com") - @ExcelProperty("客户邮箱地址") - private String email; - - @Schema(description = "客户电话", example = "123432222") - @ExcelProperty("客户电话") - private String telephone; - - @Schema(description = "联系人1", example = "张三") - @ExcelProperty("联系人1") - private String contact1Name; - - @Schema(description = "联系人1-电话", example = "122212312") - @ExcelProperty("联系人1-电话") - private String contact1Telephone; - - @Schema(description = "联系人1-邮箱", example = "s1@bydglobal.com") - @ExcelProperty("联系人1-邮箱") - private String contact1Email; - - @Schema(description = "联系人2", example = "李四") - @ExcelProperty("联系人2") - private String contact2Name; - - @Schema(description = "联系人2-电话", example = "1132323232") - @ExcelProperty("联系人2-电话") - private String contact2Telephone; - - @Schema(description = "联系人2-邮箱", example = "s2@bydglobal.com") - @ExcelProperty("联系人2-邮箱") - private String contact2Email; - - @Schema(description = "统一社会信用代码", example = "11212121") - @ExcelProperty("统一社会信用代码") - private String creditCode; - - @Schema(description = "预留字段1") - private String attribute1; - - @Schema(description = "预留字段2") - private String attribute2; - - @Schema(description = "预留字段3") - private Integer attribute3; - - @Schema(description = "预留字段4") - private Integer attribute4; - - @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.COMMON_STATUS) - private Integer status; - - @Schema(description = "备注", example = "备注") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientSaveReqVO.java deleted file mode 100644 index 0a9e194..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/client/MesMdClientSaveReqVO.java +++ /dev/null @@ -1,91 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.md.vo.client; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Schema(description = "管理后台 - MES 客户新增/修改 Request VO") -@Data -public class MesMdClientSaveReqVO { - - @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "客户编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "C00184") - @NotEmpty(message = "客户编码不能为空") - private String code; - - @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "比亚迪") - @NotEmpty(message = "客户名称不能为空") - private String name; - - @Schema(description = "客户简称", example = "比亚迪") - private String nickname; - - @Schema(description = "客户英文名称", example = "BYD") - private String englishName; - - @Schema(description = "客户简介", example = "比亚迪品牌诞生于深圳") - private String description; - - @Schema(description = "客户LOGO地址", example = "https://xxx.com/logo.png") - private String logo; - - @Schema(description = "客户类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "客户类型不能为空") - private Integer type; - - @Schema(description = "客户地址", example = "深圳南山区") - private String address; - - @Schema(description = "客户官网地址", example = "https://www.bydglobal.com") - private String website; - - @Schema(description = "客户邮箱地址", example = "salse@bydglobal.com") - private String email; - - @Schema(description = "客户电话", example = "123432222") - private String telephone; - - @Schema(description = "联系人1", example = "张三") - private String contact1Name; - - @Schema(description = "联系人1-电话", example = "122212312") - private String contact1Telephone; - - @Schema(description = "联系人1-邮箱", example = "s1@bydglobal.com") - private String contact1Email; - - @Schema(description = "联系人2", example = "李四") - private String contact2Name; - - @Schema(description = "联系人2-电话", example = "1132323232") - private String contact2Telephone; - - @Schema(description = "联系人2-邮箱", example = "s2@bydglobal.com") - private String contact2Email; - - @Schema(description = "统一社会信用代码", example = "11212121") - private String creditCode; - - @Schema(description = "预留字段1") - private String attribute1; - - @Schema(description = "预留字段2") - private String attribute2; - - @Schema(description = "预留字段3") - private Integer attribute3; - - @Schema(description = "预留字段4") - private Integer attribute4; - - @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") - @NotNull(message = "状态不能为空") - private Integer status; - - @Schema(description = "备注", example = "备注") - private String remark; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorImportExcelVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorImportExcelVO.java deleted file mode 100644 index 906ca48..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorImportExcelVO.java +++ /dev/null @@ -1,44 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor; - -import cn.idev.excel.annotation.ExcelProperty; -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.yudao.module.mes.enums.DictTypeConstants; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 供应商 Excel 导入 VO - */ -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class MesMdVendorImportExcelVO { - - @ExcelProperty("供应商编码") - private String code; - - @ExcelProperty("供应商名称") - private String name; - - @ExcelProperty("供应商简称") - private String nickname; - - @ExcelProperty(value = "供应商等级", converter = DictConvert.class) - @DictFormat(DictTypeConstants.MES_VENDOR_LEVEL) - private String level; - - @ExcelProperty("供应商电话") - private String telephone; - - @ExcelProperty("供应商邮箱地址") - private String email; - - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.COMMON_STATUS) - private Integer status; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorImportRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorImportRespVO.java deleted file mode 100644 index ca75a96..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorImportRespVO.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -@Schema(description = "管理后台 - MES 供应商导入 Response VO") -@Data -@Builder -public class MesMdVendorImportRespVO { - - @Schema(description = "创建成功的供应商编码数组", requiredMode = Schema.RequiredMode.REQUIRED) - private List createCodes; - - @Schema(description = "更新成功的供应商编码数组", requiredMode = Schema.RequiredMode.REQUIRED) - private List updateCodes; - - @Schema(description = "导入失败的供应商集合,key 为供应商编码,value 为失败原因", requiredMode = Schema.RequiredMode.REQUIRED) - private Map failureCodes; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorPageReqVO.java deleted file mode 100644 index 98c48ce..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorPageReqVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - MES 供应商分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class MesMdVendorPageReqVO extends PageParam { - - @Schema(description = "供应商编码", example = "V00101") - private String code; - - @Schema(description = "供应商名称", example = "海力德") - private String name; - - @Schema(description = "供应商简称", example = "海力德") - private String nickname; - - @Schema(description = "供应商等级", example = "A") - private String level; - - @Schema(description = "状态", example = "0") - private Integer status; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorRespVO.java deleted file mode 100644 index 481a3e9..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorRespVO.java +++ /dev/null @@ -1,123 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.yudao.module.mes.enums.DictTypeConstants; -import cn.idev.excel.annotation.ExcelIgnoreUnannotated; -import cn.idev.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - MES 供应商 Response VO") -@Data -@ExcelIgnoreUnannotated -public class MesMdVendorRespVO { - - @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @ExcelProperty("供应商编号") - private Long id; - - @Schema(description = "供应商编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "V00101") - @ExcelProperty("供应商编码") - private String code; - - @Schema(description = "供应商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "海力德电子") - @ExcelProperty("供应商名称") - private String name; - - @Schema(description = "供应商简称", example = "海力德") - @ExcelProperty("供应商简称") - private String nickname; - - @Schema(description = "供应商英文名称", example = "HLD Electronics") - @ExcelProperty("供应商英文名称") - private String englishName; - - @Schema(description = "供应商简介", example = "专业从事电子元器件生产与销售") - @ExcelProperty("供应商简介") - private String description; - - @Schema(description = "供应商LOGO地址", example = "https://xxx.com/logo.png") - private String logo; - - @Schema(description = "供应商等级", example = "A") - @ExcelProperty(value = "供应商等级", converter = DictConvert.class) - @DictFormat(DictTypeConstants.MES_VENDOR_LEVEL) - private String level; - - @Schema(description = "供应商评分", example = "95") - @ExcelProperty("供应商评分") - private Integer score; - - @Schema(description = "供应商地址", example = "深圳市宝安区") - @ExcelProperty("供应商地址") - private String address; - - @Schema(description = "供应商官网地址", example = "https://www.hld-elec.com") - @ExcelProperty("供应商官网地址") - private String website; - - @Schema(description = "供应商邮箱地址", example = "info@hld-elec.com") - @ExcelProperty("供应商邮箱地址") - private String email; - - @Schema(description = "供应商电话", example = "0755-12345678") - @ExcelProperty("供应商电话") - private String telephone; - - @Schema(description = "联系人1", example = "王经理") - @ExcelProperty("联系人1") - private String contact1Name; - - @Schema(description = "联系人1-电话", example = "13800138001") - @ExcelProperty("联系人1-电话") - private String contact1Telephone; - - @Schema(description = "联系人1-邮箱", example = "wang@hld-elec.com") - @ExcelProperty("联系人1-邮箱") - private String contact1Email; - - @Schema(description = "联系人2", example = "赵助理") - @ExcelProperty("联系人2") - private String contact2Name; - - @Schema(description = "联系人2-电话", example = "13800138002") - @ExcelProperty("联系人2-电话") - private String contact2Telephone; - - @Schema(description = "联系人2-邮箱", example = "zhao@hld-elec.com") - @ExcelProperty("联系人2-邮箱") - private String contact2Email; - - @Schema(description = "统一社会信用代码", example = "91440300MA5EXAMPLE") - @ExcelProperty("统一社会信用代码") - private String creditCode; - - @Schema(description = "预留字段1") - private String attribute1; - - @Schema(description = "预留字段2") - private String attribute2; - - @Schema(description = "预留字段3") - private Integer attribute3; - - @Schema(description = "预留字段4") - private Integer attribute4; - - @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.COMMON_STATUS) - private Integer status; - - @Schema(description = "备注", example = "备注") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorSaveReqVO.java deleted file mode 100644 index 1044528..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vo/vendor/MesMdVendorSaveReqVO.java +++ /dev/null @@ -1,93 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Schema(description = "管理后台 - MES 供应商新增/修改 Request VO") -@Data -public class MesMdVendorSaveReqVO { - - @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "供应商编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "V00101") - @NotEmpty(message = "供应商编码不能为空") - private String code; - - @Schema(description = "供应商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "海力德电子") - @NotEmpty(message = "供应商名称不能为空") - private String name; - - @Schema(description = "供应商简称", example = "海力德") - private String nickname; - - @Schema(description = "供应商英文名称", example = "HLD Electronics") - private String englishName; - - @Schema(description = "供应商简介", example = "专业从事电子元器件生产与销售") - private String description; - - @Schema(description = "供应商LOGO地址", example = "https://xxx.com/logo.png") - private String logo; - - @Schema(description = "供应商等级", example = "A") - private String level; - - @Schema(description = "供应商评分", example = "95") - private Integer score; - - @Schema(description = "供应商地址", example = "深圳市宝安区") - private String address; - - @Schema(description = "供应商官网地址", example = "https://www.hld-elec.com") - private String website; - - @Schema(description = "供应商邮箱地址", example = "info@hld-elec.com") - private String email; - - @Schema(description = "供应商电话", example = "0755-12345678") - private String telephone; - - @Schema(description = "联系人1", example = "王经理") - private String contact1Name; - - @Schema(description = "联系人1-电话", example = "13800138001") - private String contact1Telephone; - - @Schema(description = "联系人1-邮箱", example = "wang@hld-elec.com") - private String contact1Email; - - @Schema(description = "联系人2", example = "赵助理") - private String contact2Name; - - @Schema(description = "联系人2-电话", example = "13800138002") - private String contact2Telephone; - - @Schema(description = "联系人2-邮箱", example = "zhao@hld-elec.com") - private String contact2Email; - - @Schema(description = "统一社会信用代码", example = "91440300MA5EXAMPLE") - private String creditCode; - - @Schema(description = "预留字段1") - private String attribute1; - - @Schema(description = "预留字段2") - private String attribute2; - - @Schema(description = "预留字段3") - private Integer attribute3; - - @Schema(description = "预留字段4") - private Integer attribute4; - - @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") - @NotNull(message = "状态不能为空") - private Integer status; - - @Schema(description = "备注", example = "备注") - private String remark; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/MesMdClientDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/MesMdClientDO.java deleted file mode 100644 index 8104c0d..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/MesMdClientDO.java +++ /dev/null @@ -1,130 +0,0 @@ -package cn.iocoder.yudao.module.mes.dal.dataobject.md; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * MES 客户 DO - * - * @author 芋道源码 - */ -@TableName("mes_md_client") -@KeySequence("mes_md_client_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class MesMdClientDO extends BaseDO { - - /** - * 客户编号 - */ - @TableId - private Long id; - /** - * 客户编码 - */ - private String code; - /** - * 客户名称 - */ - private String name; - /** - * 客户简称 - */ - private String nickname; - /** - * 客户英文名称 - */ - private String englishName; - /** - * 客户简介 - */ - private String description; - /** - * 客户LOGO地址 - */ - private String logo; - /** - * 客户类型 - * - * 字典 {@link cn.iocoder.yudao.module.mes.enums.DictTypeConstants#MES_CLIENT_TYPE} - */ - private Integer type; - /** - * 客户地址 - */ - private String address; - /** - * 客户官网地址 - */ - private String website; - /** - * 客户邮箱地址 - */ - private String email; - /** - * 客户电话 - */ - private String telephone; - /** - * 联系人1 - */ - private String contact1Name; - /** - * 联系人1-电话 - */ - private String contact1Telephone; - /** - * 联系人1-邮箱 - */ - private String contact1Email; - /** - * 联系人2 - */ - private String contact2Name; - /** - * 联系人2-电话 - */ - private String contact2Telephone; - /** - * 联系人2-邮箱 - */ - private String contact2Email; - /** - * 统一社会信用代码 - */ - private String creditCode; - /** - * 预留字段1 - */ - private String attribute1; - /** - * 预留字段2 - */ - private String attribute2; - /** - * 预留字段3 - */ - private Integer attribute3; - /** - * 预留字段4 - */ - private Integer attribute4; - /** - * 状态 - * - * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} - */ - private Integer status; - /** - * 备注 - */ - private String remark; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/MesMdVendorDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/MesMdVendorDO.java deleted file mode 100644 index 1dffbbf..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/MesMdVendorDO.java +++ /dev/null @@ -1,134 +0,0 @@ -package cn.iocoder.yudao.module.mes.dal.dataobject.md; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * MES 供应商 DO - * - * @author 芋道源码 - */ -@TableName("mes_md_vendor") -@KeySequence("mes_md_vendor_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class MesMdVendorDO extends BaseDO { - - /** - * 供应商编号 - */ - @TableId - private Long id; - /** - * 供应商编码 - */ - private String code; - /** - * 供应商名称 - */ - private String name; - /** - * 供应商简称 - */ - private String nickname; - /** - * 供应商英文名称 - */ - private String englishName; - /** - * 供应商简介 - */ - private String description; - /** - * 供应商LOGO地址 - */ - private String logo; - /** - * 供应商等级 - * - * 字典 {@link cn.iocoder.yudao.module.mes.enums.DictTypeConstants#MES_VENDOR_LEVEL} - */ - private String level; - /** - * 供应商评分 - */ - private Integer score; - /** - * 供应商地址 - */ - private String address; - /** - * 供应商官网地址 - */ - private String website; - /** - * 供应商邮箱地址 - */ - private String email; - /** - * 供应商电话 - */ - private String telephone; - /** - * 联系人1 - */ - private String contact1Name; - /** - * 联系人1-电话 - */ - private String contact1Telephone; - /** - * 联系人1-邮箱 - */ - private String contact1Email; - /** - * 联系人2 - */ - private String contact2Name; - /** - * 联系人2-电话 - */ - private String contact2Telephone; - /** - * 联系人2-邮箱 - */ - private String contact2Email; - /** - * 统一社会信用代码 - */ - private String creditCode; - /** - * 预留字段1 - */ - private String attribute1; - /** - * 预留字段2 - */ - private String attribute2; - /** - * 预留字段3 - */ - private Integer attribute3; - /** - * 预留字段4 - */ - private Integer attribute4; - /** - * 状态 - * - * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} - */ - private Integer status; - /** - * 备注 - */ - private String remark; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/client/MesMdClientDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/client/MesMdClientDO.java new file mode 100644 index 0000000..0e865fd --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/client/MesMdClientDO.java @@ -0,0 +1,130 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.md.client; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** + * MES 客户 DO + * + * @author 芋道源码 + */ +@TableName("mes_md_client") +@KeySequence("mes_md_client_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MesMdClientDO extends BaseDO { + + /** + * 客户编号 + */ + @TableId + private Long id; + /** + * 客户编码 + */ + private String code; + /** + * 客户名称 + */ + private String name; + /** + * 客户简称 + */ + private String nickname; + /** + * 客户英文名称 + */ + private String englishName; + /** + * 客户简介 + */ + private String description; + /** + * 客户LOGO地址 + */ + private String logo; + /** + * 客户类型 + * + * 字典 {@link cn.iocoder.yudao.module.mes.enums.DictTypeConstants#MES_CLIENT_TYPE} + */ + private Integer type; + /** + * 客户地址 + */ + private String address; + /** + * 客户官网地址 + */ + private String website; + /** + * 客户邮箱地址 + */ + private String email; + /** + * 客户电话 + */ + private String telephone; + /** + * 联系人1 + */ + private String contact1Name; + /** + * 联系人1-电话 + */ + private String contact1Telephone; + /** + * 联系人1-邮箱 + */ + private String contact1Email; + /** + * 联系人2 + */ + private String contact2Name; + /** + * 联系人2-电话 + */ + private String contact2Telephone; + /** + * 联系人2-邮箱 + */ + private String contact2Email; + /** + * 统一社会信用代码 + */ + private String creditCode; + /** + * 预留字段1 + */ + private String attribute1; + /** + * 预留字段2 + */ + private String attribute2; + /** + * 预留字段3 + */ + private Integer attribute3; + /** + * 预留字段4 + */ + private Integer attribute4; + /** + * 状态 + * + * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} + */ + private Integer status; + /** + * 备注 + */ + private String remark; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/vendor/MesMdVendorDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/vendor/MesMdVendorDO.java new file mode 100644 index 0000000..eab76c6 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/vendor/MesMdVendorDO.java @@ -0,0 +1,134 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** + * MES 供应商 DO + * + * @author 芋道源码 + */ +@TableName("mes_md_vendor") +@KeySequence("mes_md_vendor_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MesMdVendorDO extends BaseDO { + + /** + * 供应商编号 + */ + @TableId + private Long id; + /** + * 供应商编码 + */ + private String code; + /** + * 供应商名称 + */ + private String name; + /** + * 供应商简称 + */ + private String nickname; + /** + * 供应商英文名称 + */ + private String englishName; + /** + * 供应商简介 + */ + private String description; + /** + * 供应商LOGO地址 + */ + private String logo; + /** + * 供应商等级 + * + * 字典 {@link cn.iocoder.yudao.module.mes.enums.DictTypeConstants#MES_VENDOR_LEVEL} + */ + private String level; + /** + * 供应商评分 + */ + private Integer score; + /** + * 供应商地址 + */ + private String address; + /** + * 供应商官网地址 + */ + private String website; + /** + * 供应商邮箱地址 + */ + private String email; + /** + * 供应商电话 + */ + private String telephone; + /** + * 联系人1 + */ + private String contact1Name; + /** + * 联系人1-电话 + */ + private String contact1Telephone; + /** + * 联系人1-邮箱 + */ + private String contact1Email; + /** + * 联系人2 + */ + private String contact2Name; + /** + * 联系人2-电话 + */ + private String contact2Telephone; + /** + * 联系人2-邮箱 + */ + private String contact2Email; + /** + * 统一社会信用代码 + */ + private String creditCode; + /** + * 预留字段1 + */ + private String attribute1; + /** + * 预留字段2 + */ + private String attribute2; + /** + * 预留字段3 + */ + private Integer attribute3; + /** + * 预留字段4 + */ + private Integer attribute4; + /** + * 状态 + * + * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} + */ + private Integer status; + /** + * 备注 + */ + private String remark; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/MesMdClientMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/MesMdClientMapper.java deleted file mode 100644 index 5b2d7b7..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/MesMdClientMapper.java +++ /dev/null @@ -1,46 +0,0 @@ -package cn.iocoder.yudao.module.mes.dal.mysql.md; - -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.mes.controller.admin.md.vo.client.MesMdClientPageReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.MesMdClientDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * MES 客户 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface MesMdClientMapper extends BaseMapperX { - - default PageResult selectPage(MesMdClientPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(MesMdClientDO::getCode, reqVO.getCode()) - .likeIfPresent(MesMdClientDO::getName, reqVO.getName()) - .likeIfPresent(MesMdClientDO::getNickname, reqVO.getNickname()) - .eqIfPresent(MesMdClientDO::getType, reqVO.getType()) - .eqIfPresent(MesMdClientDO::getStatus, reqVO.getStatus()) - .orderByDesc(MesMdClientDO::getId)); - } - - default MesMdClientDO selectByCode(String code) { - return selectOne(MesMdClientDO::getCode, code); - } - - default MesMdClientDO selectByName(String name) { - return selectOne(MesMdClientDO::getName, name); - } - - default MesMdClientDO selectByNickname(String nickname) { - return selectOne(MesMdClientDO::getNickname, nickname); - } - - default List selectListByStatus(Integer status) { - return selectList(MesMdClientDO::getStatus, status); - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/MesMdVendorMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/MesMdVendorMapper.java deleted file mode 100644 index d54d6fc..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/MesMdVendorMapper.java +++ /dev/null @@ -1,46 +0,0 @@ -package cn.iocoder.yudao.module.mes.dal.mysql.md; - -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.mes.controller.admin.md.vo.vendor.MesMdVendorPageReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.MesMdVendorDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * MES 供应商 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface MesMdVendorMapper extends BaseMapperX { - - default PageResult selectPage(MesMdVendorPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(MesMdVendorDO::getCode, reqVO.getCode()) - .likeIfPresent(MesMdVendorDO::getName, reqVO.getName()) - .likeIfPresent(MesMdVendorDO::getNickname, reqVO.getNickname()) - .eqIfPresent(MesMdVendorDO::getLevel, reqVO.getLevel()) - .eqIfPresent(MesMdVendorDO::getStatus, reqVO.getStatus()) - .orderByDesc(MesMdVendorDO::getId)); - } - - default MesMdVendorDO selectByCode(String code) { - return selectOne(MesMdVendorDO::getCode, code); - } - - default MesMdVendorDO selectByName(String name) { - return selectOne(MesMdVendorDO::getName, name); - } - - default MesMdVendorDO selectByNickname(String nickname) { - return selectOne(MesMdVendorDO::getNickname, nickname); - } - - default List selectListByStatus(Integer status) { - return selectList(MesMdVendorDO::getStatus, status); - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/client/MesMdClientMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/client/MesMdClientMapper.java new file mode 100644 index 0000000..95afba5 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/client/MesMdClientMapper.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.md.client; + +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.mes.controller.admin.md.client.vo.MesMdClientPageReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * MES 客户 Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface MesMdClientMapper extends BaseMapperX { + + default PageResult selectPage(MesMdClientPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MesMdClientDO::getCode, reqVO.getCode()) + .likeIfPresent(MesMdClientDO::getName, reqVO.getName()) + .likeIfPresent(MesMdClientDO::getNickname, reqVO.getNickname()) + .eqIfPresent(MesMdClientDO::getType, reqVO.getType()) + .eqIfPresent(MesMdClientDO::getStatus, reqVO.getStatus()) + .orderByDesc(MesMdClientDO::getId)); + } + + default MesMdClientDO selectByCode(String code) { + return selectOne(MesMdClientDO::getCode, code); + } + + default MesMdClientDO selectByName(String name) { + return selectOne(MesMdClientDO::getName, name); + } + + default MesMdClientDO selectByNickname(String nickname) { + return selectOne(MesMdClientDO::getNickname, nickname); + } + + default List selectListByStatus(Integer status) { + return selectList(MesMdClientDO::getStatus, status); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/vendor/MesMdVendorMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/vendor/MesMdVendorMapper.java new file mode 100644 index 0000000..92b9b9f --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/vendor/MesMdVendorMapper.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.md.vendor; + +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.mes.controller.admin.md.vendor.vo.MesMdVendorPageReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor.MesMdVendorDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * MES 供应商 Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface MesMdVendorMapper extends BaseMapperX { + + default PageResult selectPage(MesMdVendorPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MesMdVendorDO::getCode, reqVO.getCode()) + .likeIfPresent(MesMdVendorDO::getName, reqVO.getName()) + .likeIfPresent(MesMdVendorDO::getNickname, reqVO.getNickname()) + .eqIfPresent(MesMdVendorDO::getLevel, reqVO.getLevel()) + .eqIfPresent(MesMdVendorDO::getStatus, reqVO.getStatus()) + .orderByDesc(MesMdVendorDO::getId)); + } + + default MesMdVendorDO selectByCode(String code) { + return selectOne(MesMdVendorDO::getCode, code); + } + + default MesMdVendorDO selectByName(String name) { + return selectOne(MesMdVendorDO::getName, name); + } + + default MesMdVendorDO selectByNickname(String nickname) { + return selectOne(MesMdVendorDO::getNickname, nickname); + } + + default List selectListByStatus(Integer status) { + return selectList(MesMdVendorDO::getStatus, status); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdClientService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdClientService.java deleted file mode 100644 index 4675918..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdClientService.java +++ /dev/null @@ -1,97 +0,0 @@ -package cn.iocoder.yudao.module.mes.service.md; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.client.MesMdClientImportExcelVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.client.MesMdClientImportRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.client.MesMdClientPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.client.MesMdClientSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.MesMdClientDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; - -/** - * MES 客户 Service 接口 - * - * @author 芋道源码 - */ -public interface MesMdClientService { - - /** - * 创建客户 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createClient(@Valid MesMdClientSaveReqVO createReqVO); - - /** - * 更新客户 - * - * @param updateReqVO 更新信息 - */ - void updateClient(@Valid MesMdClientSaveReqVO updateReqVO); - - /** - * 删除客户 - * - * @param id 编号 - */ - void deleteClient(Long id); - - /** - * 获得客户 - * - * @param id 编号 - * @return 客户 - */ - MesMdClientDO getClient(Long id); - - /** - * 获得客户分页 - * - * @param pageReqVO 分页查询 - * @return 客户分页 - */ - PageResult getClientPage(MesMdClientPageReqVO pageReqVO); - - /** - * 获得指定状态的客户列表 - * - * @param status 状态 - * @return 客户列表 - */ - List getClientListByStatus(Integer status); - - /** - * 获得客户列表 - * - * @param ids 编号列表 - * @return 客户列表 - */ - List getClientList(Collection ids); - - /** - * 获得客户 Map - * - * @param ids 编号列表 - * @return 客户 Map - */ - default Map getClientMap(Collection ids) { - return convertMap(getClientList(ids), MesMdClientDO::getId); - } - - /** - * 批量导入客户 - * - * @param importClients 导入客户列表 - * @param updateSupport 是否支持更新 - * @return 导入结果 - */ - MesMdClientImportRespVO importClientList(List importClients, boolean updateSupport); - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdClientServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdClientServiceImpl.java deleted file mode 100644 index 750f5e5..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdClientServiceImpl.java +++ /dev/null @@ -1,205 +0,0 @@ -package cn.iocoder.yudao.module.mes.service.md; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjUtil; -import cn.hutool.core.util.StrUtil; -import cn.iocoder.yudao.framework.common.exception.ServiceException; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.client.MesMdClientImportExcelVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.client.MesMdClientImportRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.client.MesMdClientPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.client.MesMdClientSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.MesMdClientDO; -import cn.iocoder.yudao.module.mes.dal.mysql.md.MesMdClientMapper; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; - -/** - * MES 客户 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class MesMdClientServiceImpl implements MesMdClientService { - - @Resource - private MesMdClientMapper clientMapper; - - @Override - public Long createClient(MesMdClientSaveReqVO createReqVO) { - // 校验编码唯一 - validateClientCodeUnique(null, createReqVO.getCode()); - // 校验名称唯一 - validateClientNameUnique(null, createReqVO.getName()); - // 校验简称唯一 - validateClientNicknameUnique(null, createReqVO.getNickname()); - - // 插入 - MesMdClientDO client = BeanUtils.toBean(createReqVO, MesMdClientDO.class); - clientMapper.insert(client); - // TODO @芋艿:客户创建后自动生成条码,依赖 WM 条码模块 - return client.getId(); - } - - @Override - public void updateClient(MesMdClientSaveReqVO updateReqVO) { - // 校验存在 - validateClientExists(updateReqVO.getId()); - // 校验编码唯一 - validateClientCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); - // 校验名称唯一 - validateClientNameUnique(updateReqVO.getId(), updateReqVO.getName()); - // 校验简称唯一 - validateClientNicknameUnique(updateReqVO.getId(), updateReqVO.getNickname()); - - // 更新 - MesMdClientDO updateObj = BeanUtils.toBean(updateReqVO, MesMdClientDO.class); - clientMapper.updateById(updateObj); - } - - @Override - public void deleteClient(Long id) { - // 校验存在 - validateClientExists(id); - // 删除 - clientMapper.deleteById(id); - } - - private void validateClientExists(Long id) { - if (clientMapper.selectById(id) == null) { - throw exception(MD_CLIENT_NOT_EXISTS); - } - } - - private void validateClientCodeUnique(Long id, String code) { - MesMdClientDO client = clientMapper.selectByCode(code); - if (client == null) { - return; - } - if (ObjUtil.notEqual(client.getId(), id)) { - throw exception(MD_CLIENT_CODE_DUPLICATE); - } - } - - private void validateClientNameUnique(Long id, String name) { - MesMdClientDO client = clientMapper.selectByName(name); - if (client == null) { - return; - } - if (ObjUtil.notEqual(client.getId(), id)) { - throw exception(MD_CLIENT_NAME_DUPLICATE); - } - } - - private void validateClientNicknameUnique(Long id, String nickname) { - if (StrUtil.isEmpty(nickname)) { - return; - } - MesMdClientDO client = clientMapper.selectByNickname(nickname); - if (client == null) { - return; - } - if (ObjUtil.notEqual(client.getId(), id)) { - throw exception(MD_CLIENT_NICKNAME_DUPLICATE); - } - } - - @Override - public MesMdClientDO getClient(Long id) { - return clientMapper.selectById(id); - } - - @Override - public PageResult getClientPage(MesMdClientPageReqVO pageReqVO) { - return clientMapper.selectPage(pageReqVO); - } - - @Override - public List getClientListByStatus(Integer status) { - return clientMapper.selectListByStatus(status); - } - - @Override - public List getClientList(Collection ids) { - return clientMapper.selectByIds(ids); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public MesMdClientImportRespVO importClientList(List importClients, boolean updateSupport) { - // 1. 参数校验 - if (CollUtil.isEmpty(importClients)) { - throw exception(MD_CLIENT_IMPORT_LIST_IS_EMPTY); - } - - // 2. 遍历,逐个创建 or 更新 - MesMdClientImportRespVO respVO = MesMdClientImportRespVO.builder() - .createCodes(new ArrayList<>()).updateCodes(new ArrayList<>()) - .failureCodes(new LinkedHashMap<>()).build(); - AtomicInteger index = new AtomicInteger(1); - importClients.forEach(importClient -> { - int currentIndex = index.getAndIncrement(); - // 2.1 校验字段 - String key = StrUtil.blankToDefault(importClient.getCode(), "第 " + currentIndex + " 行"); - if (StrUtil.isBlank(importClient.getCode())) { - respVO.getFailureCodes().put(key, "客户编码不能为空"); - return; - } - if (StrUtil.isBlank(importClient.getName())) { - respVO.getFailureCodes().put(key, "客户名称不能为空"); - return; - } - if (importClient.getType() == null) { - respVO.getFailureCodes().put(key, "客户类型不能为空"); - return; - } - - // 2.2 判断:创建 or 更新 - MesMdClientDO existClient = clientMapper.selectByCode(importClient.getCode()); - if (existClient == null) { - // 2.2.1 创建 - try { - validateClientNameUnique(null, importClient.getName()); - validateClientNicknameUnique(null, importClient.getNickname()); - } catch (ServiceException ex) { - respVO.getFailureCodes().put(key, ex.getMessage()); - return; - } - MesMdClientDO client = BeanUtils.toBean(importClient, MesMdClientDO.class); - clientMapper.insert(client); - respVO.getCreateCodes().add(importClient.getCode()); - } else if (updateSupport) { - // 2.2.2 更新 - try { - validateClientNameUnique(existClient.getId(), importClient.getName()); - validateClientNicknameUnique(existClient.getId(), importClient.getNickname()); - } catch (ServiceException ex) { - respVO.getFailureCodes().put(key, ex.getMessage()); - return; - } - MesMdClientDO updateObj = BeanUtils.toBean(importClient, MesMdClientDO.class); - updateObj.setId(existClient.getId()); - clientMapper.updateById(updateObj); - respVO.getUpdateCodes().add(importClient.getCode()); - } else { - // 不支持更新 - respVO.getFailureCodes().put(key, "客户编码已存在"); - } - }); - return respVO; - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdVendorService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdVendorService.java deleted file mode 100644 index f650cc4..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdVendorService.java +++ /dev/null @@ -1,97 +0,0 @@ -package cn.iocoder.yudao.module.mes.service.md; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor.MesMdVendorImportExcelVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor.MesMdVendorImportRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor.MesMdVendorPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor.MesMdVendorSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.MesMdVendorDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; - -/** - * MES 供应商 Service 接口 - * - * @author 芋道源码 - */ -public interface MesMdVendorService { - - /** - * 创建供应商 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createVendor(@Valid MesMdVendorSaveReqVO createReqVO); - - /** - * 更新供应商 - * - * @param updateReqVO 更新信息 - */ - void updateVendor(@Valid MesMdVendorSaveReqVO updateReqVO); - - /** - * 删除供应商 - * - * @param id 编号 - */ - void deleteVendor(Long id); - - /** - * 获得供应商 - * - * @param id 编号 - * @return 供应商 - */ - MesMdVendorDO getVendor(Long id); - - /** - * 获得供应商分页 - * - * @param pageReqVO 分页查询 - * @return 供应商分页 - */ - PageResult getVendorPage(MesMdVendorPageReqVO pageReqVO); - - /** - * 获得指定状态的供应商列表 - * - * @param status 状态 - * @return 供应商列表 - */ - List getVendorListByStatus(Integer status); - - /** - * 获得供应商列表 - * - * @param ids 编号列表 - * @return 供应商列表 - */ - List getVendorList(Collection ids); - - /** - * 获得供应商 Map - * - * @param ids 编号列表 - * @return 供应商 Map - */ - default Map getVendorMap(Collection ids) { - return convertMap(getVendorList(ids), MesMdVendorDO::getId); - } - - /** - * 批量导入供应商 - * - * @param importVendors 导入供应商列表 - * @param updateSupport 是否支持更新 - * @return 导入结果 - */ - MesMdVendorImportRespVO importVendorList(List importVendors, boolean updateSupport); - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdVendorServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdVendorServiceImpl.java deleted file mode 100644 index 01d860c..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/MesMdVendorServiceImpl.java +++ /dev/null @@ -1,200 +0,0 @@ -package cn.iocoder.yudao.module.mes.service.md; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjUtil; -import cn.hutool.core.util.StrUtil; -import cn.iocoder.yudao.framework.common.exception.ServiceException; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor.MesMdVendorImportExcelVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor.MesMdVendorImportRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor.MesMdVendorPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.md.vo.vendor.MesMdVendorSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.MesMdVendorDO; -import cn.iocoder.yudao.module.mes.dal.mysql.md.MesMdVendorMapper; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; - -/** - * MES 供应商 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class MesMdVendorServiceImpl implements MesMdVendorService { - - @Resource - private MesMdVendorMapper vendorMapper; - - @Override - public Long createVendor(MesMdVendorSaveReqVO createReqVO) { - // 校验编码唯一 - validateVendorCodeUnique(null, createReqVO.getCode()); - // 校验名称唯一 - validateVendorNameUnique(null, createReqVO.getName()); - // 校验简称唯一 - validateVendorNicknameUnique(null, createReqVO.getNickname()); - - // 插入 - MesMdVendorDO vendor = BeanUtils.toBean(createReqVO, MesMdVendorDO.class); - vendorMapper.insert(vendor); - return vendor.getId(); - } - - @Override - public void updateVendor(MesMdVendorSaveReqVO updateReqVO) { - // 校验存在 - validateVendorExists(updateReqVO.getId()); - // 校验编码唯一 - validateVendorCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); - // 校验名称唯一 - validateVendorNameUnique(updateReqVO.getId(), updateReqVO.getName()); - // 校验简称唯一 - validateVendorNicknameUnique(updateReqVO.getId(), updateReqVO.getNickname()); - - // 更新 - MesMdVendorDO updateObj = BeanUtils.toBean(updateReqVO, MesMdVendorDO.class); - vendorMapper.updateById(updateObj); - } - - @Override - public void deleteVendor(Long id) { - // 校验存在 - validateVendorExists(id); - // 删除 - vendorMapper.deleteById(id); - } - - private void validateVendorExists(Long id) { - if (vendorMapper.selectById(id) == null) { - throw exception(MD_VENDOR_NOT_EXISTS); - } - } - - private void validateVendorCodeUnique(Long id, String code) { - MesMdVendorDO vendor = vendorMapper.selectByCode(code); - if (vendor == null) { - return; - } - if (ObjUtil.notEqual(vendor.getId(), id)) { - throw exception(MD_VENDOR_CODE_DUPLICATE); - } - } - - private void validateVendorNameUnique(Long id, String name) { - MesMdVendorDO vendor = vendorMapper.selectByName(name); - if (vendor == null) { - return; - } - if (ObjUtil.notEqual(vendor.getId(), id)) { - throw exception(MD_VENDOR_NAME_DUPLICATE); - } - } - - private void validateVendorNicknameUnique(Long id, String nickname) { - if (StrUtil.isEmpty(nickname)) { - return; - } - MesMdVendorDO vendor = vendorMapper.selectByNickname(nickname); - if (vendor == null) { - return; - } - if (ObjUtil.notEqual(vendor.getId(), id)) { - throw exception(MD_VENDOR_NICKNAME_DUPLICATE); - } - } - - @Override - public MesMdVendorDO getVendor(Long id) { - return vendorMapper.selectById(id); - } - - @Override - public PageResult getVendorPage(MesMdVendorPageReqVO pageReqVO) { - return vendorMapper.selectPage(pageReqVO); - } - - @Override - public List getVendorListByStatus(Integer status) { - return vendorMapper.selectListByStatus(status); - } - - @Override - public List getVendorList(Collection ids) { - return vendorMapper.selectByIds(ids); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public MesMdVendorImportRespVO importVendorList(List importVendors, boolean updateSupport) { - // 1. 参数校验 - if (CollUtil.isEmpty(importVendors)) { - throw exception(MD_VENDOR_IMPORT_LIST_IS_EMPTY); - } - - // 2. 遍历,逐个创建 or 更新 - MesMdVendorImportRespVO respVO = MesMdVendorImportRespVO.builder() - .createCodes(new ArrayList<>()).updateCodes(new ArrayList<>()) - .failureCodes(new LinkedHashMap<>()).build(); - AtomicInteger index = new AtomicInteger(1); - importVendors.forEach(importVendor -> { - int currentIndex = index.getAndIncrement(); - // 2.1 校验字段 - String key = StrUtil.blankToDefault(importVendor.getCode(), "第 " + currentIndex + " 行"); - if (StrUtil.isBlank(importVendor.getCode())) { - respVO.getFailureCodes().put(key, "供应商编码不能为空"); - return; - } - if (StrUtil.isBlank(importVendor.getName())) { - respVO.getFailureCodes().put(key, "供应商名称不能为空"); - return; - } - - // 2.2 判断:创建 or 更新 - MesMdVendorDO existVendor = vendorMapper.selectByCode(importVendor.getCode()); - if (existVendor == null) { - // 2.2.1 创建 - try { - validateVendorNameUnique(null, importVendor.getName()); - validateVendorNicknameUnique(null, importVendor.getNickname()); - } catch (ServiceException ex) { - respVO.getFailureCodes().put(key, ex.getMessage()); - return; - } - MesMdVendorDO vendor = BeanUtils.toBean(importVendor, MesMdVendorDO.class); - vendorMapper.insert(vendor); - respVO.getCreateCodes().add(importVendor.getCode()); - } else if (updateSupport) { - // 2.2.2 更新 - try { - validateVendorNameUnique(existVendor.getId(), importVendor.getName()); - validateVendorNicknameUnique(existVendor.getId(), importVendor.getNickname()); - } catch (ServiceException ex) { - respVO.getFailureCodes().put(key, ex.getMessage()); - return; - } - MesMdVendorDO updateObj = BeanUtils.toBean(importVendor, MesMdVendorDO.class); - updateObj.setId(existVendor.getId()); - vendorMapper.updateById(updateObj); - respVO.getUpdateCodes().add(importVendor.getCode()); - } else { - // 不支持更新 - respVO.getFailureCodes().put(key, "供应商编码已存在"); - } - }); - return respVO; - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/client/MesMdClientService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/client/MesMdClientService.java new file mode 100644 index 0000000..1b0aae6 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/client/MesMdClientService.java @@ -0,0 +1,97 @@ +package cn.iocoder.yudao.module.mes.service.md.client; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.md.client.vo.MesMdClientImportExcelVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.client.vo.MesMdClientImportRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.client.vo.MesMdClientPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.client.vo.MesMdClientSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO; +import jakarta.validation.Valid; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; + +/** + * MES 客户 Service 接口 + * + * @author 芋道源码 + */ +public interface MesMdClientService { + + /** + * 创建客户 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createClient(@Valid MesMdClientSaveReqVO createReqVO); + + /** + * 更新客户 + * + * @param updateReqVO 更新信息 + */ + void updateClient(@Valid MesMdClientSaveReqVO updateReqVO); + + /** + * 删除客户 + * + * @param id 编号 + */ + void deleteClient(Long id); + + /** + * 获得客户 + * + * @param id 编号 + * @return 客户 + */ + MesMdClientDO getClient(Long id); + + /** + * 获得客户分页 + * + * @param pageReqVO 分页查询 + * @return 客户分页 + */ + PageResult getClientPage(MesMdClientPageReqVO pageReqVO); + + /** + * 获得指定状态的客户列表 + * + * @param status 状态 + * @return 客户列表 + */ + List getClientListByStatus(Integer status); + + /** + * 获得客户列表 + * + * @param ids 编号列表 + * @return 客户列表 + */ + List getClientList(Collection ids); + + /** + * 获得客户 Map + * + * @param ids 编号列表 + * @return 客户 Map + */ + default Map getClientMap(Collection ids) { + return convertMap(getClientList(ids), MesMdClientDO::getId); + } + + /** + * 批量导入客户 + * + * @param importClients 导入客户列表 + * @param updateSupport 是否支持更新 + * @return 导入结果 + */ + MesMdClientImportRespVO importClientList(List importClients, boolean updateSupport); + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/client/MesMdClientServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/client/MesMdClientServiceImpl.java new file mode 100644 index 0000000..a4ed943 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/client/MesMdClientServiceImpl.java @@ -0,0 +1,205 @@ +package cn.iocoder.yudao.module.mes.service.md.client; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.exception.ServiceException; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.mes.controller.admin.md.client.vo.MesMdClientImportExcelVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.client.vo.MesMdClientImportRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.client.vo.MesMdClientPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.client.vo.MesMdClientSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO; +import cn.iocoder.yudao.module.mes.dal.mysql.md.client.MesMdClientMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; + +/** + * MES 客户 Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +public class MesMdClientServiceImpl implements MesMdClientService { + + @Resource + private MesMdClientMapper clientMapper; + + @Override + public Long createClient(MesMdClientSaveReqVO createReqVO) { + // 校验编码唯一 + validateClientCodeUnique(null, createReqVO.getCode()); + // 校验名称唯一 + validateClientNameUnique(null, createReqVO.getName()); + // 校验简称唯一 + validateClientNicknameUnique(null, createReqVO.getNickname()); + + // 插入 + MesMdClientDO client = BeanUtils.toBean(createReqVO, MesMdClientDO.class); + clientMapper.insert(client); + // TODO @芋艿:客户创建后自动生成条码,依赖 WM 条码模块 + return client.getId(); + } + + @Override + public void updateClient(MesMdClientSaveReqVO updateReqVO) { + // 校验存在 + validateClientExists(updateReqVO.getId()); + // 校验编码唯一 + validateClientCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); + // 校验名称唯一 + validateClientNameUnique(updateReqVO.getId(), updateReqVO.getName()); + // 校验简称唯一 + validateClientNicknameUnique(updateReqVO.getId(), updateReqVO.getNickname()); + + // 更新 + MesMdClientDO updateObj = BeanUtils.toBean(updateReqVO, MesMdClientDO.class); + clientMapper.updateById(updateObj); + } + + @Override + public void deleteClient(Long id) { + // 校验存在 + validateClientExists(id); + // 删除 + clientMapper.deleteById(id); + } + + private void validateClientExists(Long id) { + if (clientMapper.selectById(id) == null) { + throw exception(MD_CLIENT_NOT_EXISTS); + } + } + + private void validateClientCodeUnique(Long id, String code) { + MesMdClientDO client = clientMapper.selectByCode(code); + if (client == null) { + return; + } + if (ObjUtil.notEqual(client.getId(), id)) { + throw exception(MD_CLIENT_CODE_DUPLICATE); + } + } + + private void validateClientNameUnique(Long id, String name) { + MesMdClientDO client = clientMapper.selectByName(name); + if (client == null) { + return; + } + if (ObjUtil.notEqual(client.getId(), id)) { + throw exception(MD_CLIENT_NAME_DUPLICATE); + } + } + + private void validateClientNicknameUnique(Long id, String nickname) { + if (StrUtil.isEmpty(nickname)) { + return; + } + MesMdClientDO client = clientMapper.selectByNickname(nickname); + if (client == null) { + return; + } + if (ObjUtil.notEqual(client.getId(), id)) { + throw exception(MD_CLIENT_NICKNAME_DUPLICATE); + } + } + + @Override + public MesMdClientDO getClient(Long id) { + return clientMapper.selectById(id); + } + + @Override + public PageResult getClientPage(MesMdClientPageReqVO pageReqVO) { + return clientMapper.selectPage(pageReqVO); + } + + @Override + public List getClientListByStatus(Integer status) { + return clientMapper.selectListByStatus(status); + } + + @Override + public List getClientList(Collection ids) { + return clientMapper.selectByIds(ids); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public MesMdClientImportRespVO importClientList(List importClients, boolean updateSupport) { + // 1. 参数校验 + if (CollUtil.isEmpty(importClients)) { + throw exception(MD_CLIENT_IMPORT_LIST_IS_EMPTY); + } + + // 2. 遍历,逐个创建 or 更新 + MesMdClientImportRespVO respVO = MesMdClientImportRespVO.builder() + .createCodes(new ArrayList<>()).updateCodes(new ArrayList<>()) + .failureCodes(new LinkedHashMap<>()).build(); + AtomicInteger index = new AtomicInteger(1); + importClients.forEach(importClient -> { + int currentIndex = index.getAndIncrement(); + // 2.1 校验字段 + String key = StrUtil.blankToDefault(importClient.getCode(), "第 " + currentIndex + " 行"); + if (StrUtil.isBlank(importClient.getCode())) { + respVO.getFailureCodes().put(key, "客户编码不能为空"); + return; + } + if (StrUtil.isBlank(importClient.getName())) { + respVO.getFailureCodes().put(key, "客户名称不能为空"); + return; + } + if (importClient.getType() == null) { + respVO.getFailureCodes().put(key, "客户类型不能为空"); + return; + } + + // 2.2 判断:创建 or 更新 + MesMdClientDO existClient = clientMapper.selectByCode(importClient.getCode()); + if (existClient == null) { + // 2.2.1 创建 + try { + validateClientNameUnique(null, importClient.getName()); + validateClientNicknameUnique(null, importClient.getNickname()); + } catch (ServiceException ex) { + respVO.getFailureCodes().put(key, ex.getMessage()); + return; + } + MesMdClientDO client = BeanUtils.toBean(importClient, MesMdClientDO.class); + clientMapper.insert(client); + respVO.getCreateCodes().add(importClient.getCode()); + } else if (updateSupport) { + // 2.2.2 更新 + try { + validateClientNameUnique(existClient.getId(), importClient.getName()); + validateClientNicknameUnique(existClient.getId(), importClient.getNickname()); + } catch (ServiceException ex) { + respVO.getFailureCodes().put(key, ex.getMessage()); + return; + } + MesMdClientDO updateObj = BeanUtils.toBean(importClient, MesMdClientDO.class); + updateObj.setId(existClient.getId()); + clientMapper.updateById(updateObj); + respVO.getUpdateCodes().add(importClient.getCode()); + } else { + // 不支持更新 + respVO.getFailureCodes().put(key, "客户编码已存在"); + } + }); + return respVO; + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorService.java new file mode 100644 index 0000000..20610dd --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorService.java @@ -0,0 +1,97 @@ +package cn.iocoder.yudao.module.mes.service.md.vendor; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo.MesMdVendorImportExcelVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo.MesMdVendorImportRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo.MesMdVendorPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo.MesMdVendorSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor.MesMdVendorDO; +import jakarta.validation.Valid; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; + +/** + * MES 供应商 Service 接口 + * + * @author 芋道源码 + */ +public interface MesMdVendorService { + + /** + * 创建供应商 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createVendor(@Valid MesMdVendorSaveReqVO createReqVO); + + /** + * 更新供应商 + * + * @param updateReqVO 更新信息 + */ + void updateVendor(@Valid MesMdVendorSaveReqVO updateReqVO); + + /** + * 删除供应商 + * + * @param id 编号 + */ + void deleteVendor(Long id); + + /** + * 获得供应商 + * + * @param id 编号 + * @return 供应商 + */ + MesMdVendorDO getVendor(Long id); + + /** + * 获得供应商分页 + * + * @param pageReqVO 分页查询 + * @return 供应商分页 + */ + PageResult getVendorPage(MesMdVendorPageReqVO pageReqVO); + + /** + * 获得指定状态的供应商列表 + * + * @param status 状态 + * @return 供应商列表 + */ + List getVendorListByStatus(Integer status); + + /** + * 获得供应商列表 + * + * @param ids 编号列表 + * @return 供应商列表 + */ + List getVendorList(Collection ids); + + /** + * 获得供应商 Map + * + * @param ids 编号列表 + * @return 供应商 Map + */ + default Map getVendorMap(Collection ids) { + return convertMap(getVendorList(ids), MesMdVendorDO::getId); + } + + /** + * 批量导入供应商 + * + * @param importVendors 导入供应商列表 + * @param updateSupport 是否支持更新 + * @return 导入结果 + */ + MesMdVendorImportRespVO importVendorList(List importVendors, boolean updateSupport); + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorServiceImpl.java new file mode 100644 index 0000000..0f9e189 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorServiceImpl.java @@ -0,0 +1,200 @@ +package cn.iocoder.yudao.module.mes.service.md.vendor; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.exception.ServiceException; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo.MesMdVendorImportExcelVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo.MesMdVendorImportRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo.MesMdVendorPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.md.vendor.vo.MesMdVendorSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor.MesMdVendorDO; +import cn.iocoder.yudao.module.mes.dal.mysql.md.vendor.MesMdVendorMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; + +/** + * MES 供应商 Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +public class MesMdVendorServiceImpl implements MesMdVendorService { + + @Resource + private MesMdVendorMapper vendorMapper; + + @Override + public Long createVendor(MesMdVendorSaveReqVO createReqVO) { + // 校验编码唯一 + validateVendorCodeUnique(null, createReqVO.getCode()); + // 校验名称唯一 + validateVendorNameUnique(null, createReqVO.getName()); + // 校验简称唯一 + validateVendorNicknameUnique(null, createReqVO.getNickname()); + + // 插入 + MesMdVendorDO vendor = BeanUtils.toBean(createReqVO, MesMdVendorDO.class); + vendorMapper.insert(vendor); + return vendor.getId(); + } + + @Override + public void updateVendor(MesMdVendorSaveReqVO updateReqVO) { + // 校验存在 + validateVendorExists(updateReqVO.getId()); + // 校验编码唯一 + validateVendorCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); + // 校验名称唯一 + validateVendorNameUnique(updateReqVO.getId(), updateReqVO.getName()); + // 校验简称唯一 + validateVendorNicknameUnique(updateReqVO.getId(), updateReqVO.getNickname()); + + // 更新 + MesMdVendorDO updateObj = BeanUtils.toBean(updateReqVO, MesMdVendorDO.class); + vendorMapper.updateById(updateObj); + } + + @Override + public void deleteVendor(Long id) { + // 校验存在 + validateVendorExists(id); + // 删除 + vendorMapper.deleteById(id); + } + + private void validateVendorExists(Long id) { + if (vendorMapper.selectById(id) == null) { + throw exception(MD_VENDOR_NOT_EXISTS); + } + } + + private void validateVendorCodeUnique(Long id, String code) { + MesMdVendorDO vendor = vendorMapper.selectByCode(code); + if (vendor == null) { + return; + } + if (ObjUtil.notEqual(vendor.getId(), id)) { + throw exception(MD_VENDOR_CODE_DUPLICATE); + } + } + + private void validateVendorNameUnique(Long id, String name) { + MesMdVendorDO vendor = vendorMapper.selectByName(name); + if (vendor == null) { + return; + } + if (ObjUtil.notEqual(vendor.getId(), id)) { + throw exception(MD_VENDOR_NAME_DUPLICATE); + } + } + + private void validateVendorNicknameUnique(Long id, String nickname) { + if (StrUtil.isEmpty(nickname)) { + return; + } + MesMdVendorDO vendor = vendorMapper.selectByNickname(nickname); + if (vendor == null) { + return; + } + if (ObjUtil.notEqual(vendor.getId(), id)) { + throw exception(MD_VENDOR_NICKNAME_DUPLICATE); + } + } + + @Override + public MesMdVendorDO getVendor(Long id) { + return vendorMapper.selectById(id); + } + + @Override + public PageResult getVendorPage(MesMdVendorPageReqVO pageReqVO) { + return vendorMapper.selectPage(pageReqVO); + } + + @Override + public List getVendorListByStatus(Integer status) { + return vendorMapper.selectListByStatus(status); + } + + @Override + public List getVendorList(Collection ids) { + return vendorMapper.selectByIds(ids); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public MesMdVendorImportRespVO importVendorList(List importVendors, boolean updateSupport) { + // 1. 参数校验 + if (CollUtil.isEmpty(importVendors)) { + throw exception(MD_VENDOR_IMPORT_LIST_IS_EMPTY); + } + + // 2. 遍历,逐个创建 or 更新 + MesMdVendorImportRespVO respVO = MesMdVendorImportRespVO.builder() + .createCodes(new ArrayList<>()).updateCodes(new ArrayList<>()) + .failureCodes(new LinkedHashMap<>()).build(); + AtomicInteger index = new AtomicInteger(1); + importVendors.forEach(importVendor -> { + int currentIndex = index.getAndIncrement(); + // 2.1 校验字段 + String key = StrUtil.blankToDefault(importVendor.getCode(), "第 " + currentIndex + " 行"); + if (StrUtil.isBlank(importVendor.getCode())) { + respVO.getFailureCodes().put(key, "供应商编码不能为空"); + return; + } + if (StrUtil.isBlank(importVendor.getName())) { + respVO.getFailureCodes().put(key, "供应商名称不能为空"); + return; + } + + // 2.2 判断:创建 or 更新 + MesMdVendorDO existVendor = vendorMapper.selectByCode(importVendor.getCode()); + if (existVendor == null) { + // 2.2.1 创建 + try { + validateVendorNameUnique(null, importVendor.getName()); + validateVendorNicknameUnique(null, importVendor.getNickname()); + } catch (ServiceException ex) { + respVO.getFailureCodes().put(key, ex.getMessage()); + return; + } + MesMdVendorDO vendor = BeanUtils.toBean(importVendor, MesMdVendorDO.class); + vendorMapper.insert(vendor); + respVO.getCreateCodes().add(importVendor.getCode()); + } else if (updateSupport) { + // 2.2.2 更新 + try { + validateVendorNameUnique(existVendor.getId(), importVendor.getName()); + validateVendorNicknameUnique(existVendor.getId(), importVendor.getNickname()); + } catch (ServiceException ex) { + respVO.getFailureCodes().put(key, ex.getMessage()); + return; + } + MesMdVendorDO updateObj = BeanUtils.toBean(importVendor, MesMdVendorDO.class); + updateObj.setId(existVendor.getId()); + vendorMapper.updateById(updateObj); + respVO.getUpdateCodes().add(importVendor.getCode()); + } else { + // 不支持更新 + respVO.getFailureCodes().put(key, "供应商编码已存在"); + } + }); + return respVO; + } + +} -- libgit2 0.21.4