From 90f3aa4261d463d10cc41295be4a4fac4db5ad4c Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Fri, 17 Jul 2026 17:42:29 +0800 Subject: [PATCH 1/8] =?UTF-8?q?feat=EF=BC=9A=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/ErrorCodeConstants.java | 6 + .../WarehouseStrategyController.java | 104 +++++++ .../vo/WarehouseStrategyPageReqVO.java | 29 ++ .../vo/WarehouseStrategyRespVO.java | 47 +++ .../vo/WarehouseStrategySaveReqVO.java | 28 ++ .../WarehouseStrategyConfigController.java | 104 +++++++ .../vo/WarehouseStrategyConfigPageReqVO.java | 47 +++ .../vo/WarehouseStrategyConfigRespVO.java | 67 +++++ .../vo/WarehouseStrategyConfigSaveReqVO.java | 46 +++ .../WarehouseStrategyDO.java | 48 +++ .../WarehouseStrategyConfigDO.java | 67 +++++ .../WarehouseStrategyMapper.java | 29 ++ .../WarehouseStrategyConfigMapper.java | 35 +++ .../config/SecurityConfiguration.java | 4 +- .../WarehouseStrategyService.java | 62 ++++ .../WarehouseStrategyServiceImpl.java | 85 ++++++ .../WarehouseStrategyConfigService.java | 62 ++++ .../WarehouseStrategyConfigServiceImpl.java | 80 +++++ .../WarehouseStrategyMapper.xml | 12 + .../WarehouseStrategyConfigMapper.xml | 12 + .../src/api/wms/warehousestrategy/index.ts | 58 ++++ .../api/wms/warehousestrategyconfig/index.ts | 63 ++++ .../src/views/wms/warehousestrategy/data.ts | 155 ++++++++++ .../src/views/wms/warehousestrategy/index.vue | 186 ++++++++++++ .../wms/warehousestrategy/modules/form.vue | 82 +++++ .../views/wms/warehousestrategyconfig/data.ts | 282 ++++++++++++++++++ .../wms/warehousestrategyconfig/index.vue | 186 ++++++++++++ .../warehousestrategyconfig/modules/form.vue | 82 +++++ .../packages/constants/src/dict-enum.ts | 5 +- 29 files changed, 2070 insertions(+), 3 deletions(-) create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/WarehouseStrategyController.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategyPageReqVO.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategyRespVO.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategySaveReqVO.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/WarehouseStrategyConfigController.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigPageReqVO.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigRespVO.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigSaveReqVO.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/dataobject/warehousestrategy/WarehouseStrategyDO.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/dataobject/warehousestrategyconfig/WarehouseStrategyConfigDO.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/warehousestrategy/WarehouseStrategyMapper.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/warehousestrategyconfig/WarehouseStrategyConfigMapper.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategy/WarehouseStrategyService.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategy/WarehouseStrategyServiceImpl.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigService.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigServiceImpl.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategy/WarehouseStrategyMapper.xml create mode 100644 nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategyconfig/WarehouseStrategyConfigMapper.xml create mode 100644 nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategy/index.ts create mode 100644 nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategyconfig/index.ts create mode 100644 nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/data.ts create mode 100644 nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/index.vue create mode 100644 nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/modules/form.vue create mode 100644 nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategyconfig/data.ts create mode 100644 nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategyconfig/index.vue create mode 100644 nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategyconfig/modules/form.vue diff --git a/nl-module-wms/nl-module-wms-api/src/main/java/cn/code/nl/module/wms/enums/ErrorCodeConstants.java b/nl-module-wms/nl-module-wms-api/src/main/java/cn/code/nl/module/wms/enums/ErrorCodeConstants.java index 625654a9..5fbb5eca 100644 --- a/nl-module-wms/nl-module-wms-api/src/main/java/cn/code/nl/module/wms/enums/ErrorCodeConstants.java +++ b/nl-module-wms/nl-module-wms-api/src/main/java/cn/code/nl/module/wms/enums/ErrorCodeConstants.java @@ -4,4 +4,10 @@ import cn.code.nl.framework.common.exception.ErrorCode; public interface ErrorCodeConstants { ErrorCode BSREAL_STOR_ATTR_NOT_EXISTS = new ErrorCode(1, "实物库属性不存在"); + + + // ================ 仓储策略相关错误码 ================= + ErrorCode WAREHOUSE_STRATEGY_CONFIG_NOT_EXISTS = new ErrorCode(6_000_1, "仓储策略配置不存在"); + + ErrorCode WAREHOUSE_STRATEGY_NOT_EXISTS = new ErrorCode(6_000_2, "出入库策略不存在"); } diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/WarehouseStrategyController.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/WarehouseStrategyController.java new file mode 100644 index 00000000..01f7b750 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/WarehouseStrategyController.java @@ -0,0 +1,104 @@ +package cn.code.nl.module.wms.controller.admin.warehousestrategy; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.code.nl.framework.common.pojo.PageParam; +import cn.code.nl.framework.common.pojo.PageResult; +import cn.code.nl.framework.common.pojo.CommonResult; +import cn.code.nl.framework.common.util.object.BeanUtils; +import static cn.code.nl.framework.common.pojo.CommonResult.success; + +import cn.code.nl.framework.excel.core.util.ExcelUtils; + +import cn.code.nl.framework.apilog.core.annotation.ApiAccessLog; +import static cn.code.nl.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.code.nl.module.wms.controller.admin.warehousestrategy.vo.*; +import cn.code.nl.module.wms.dal.dataobject.warehousestrategy.WarehouseStrategyDO; +import cn.code.nl.module.wms.service.warehousestrategy.WarehouseStrategyService; + +@Tag(name = "管理后台 - 出入库策略") +@RestController +@RequestMapping("/wms/warehouse-strategy") +@Validated +public class WarehouseStrategyController { + + @Resource + private WarehouseStrategyService warehouseStrategyService; + + @PostMapping("/create") + @Operation(summary = "创建出入库策略") + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy:create')") + public CommonResult createWarehouseStrategy(@Valid @RequestBody WarehouseStrategySaveReqVO createReqVO) { + return success(warehouseStrategyService.createWarehouseStrategy(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新出入库策略") + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy:update')") + public CommonResult updateWarehouseStrategy(@Valid @RequestBody WarehouseStrategySaveReqVO updateReqVO) { + warehouseStrategyService.updateWarehouseStrategy(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除出入库策略") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy:delete')") + public CommonResult deleteWarehouseStrategy(@RequestParam("id") Long id) { + warehouseStrategyService.deleteWarehouseStrategy(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除出入库策略") + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy:delete')") + public CommonResult deleteWarehouseStrategyList(@RequestParam("ids") List ids) { + warehouseStrategyService.deleteWarehouseStrategyListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得出入库策略") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy:query')") + public CommonResult getWarehouseStrategy(@RequestParam("id") Long id) { + WarehouseStrategyDO warehouseStrategy = warehouseStrategyService.getWarehouseStrategy(id); + return success(BeanUtils.toBean(warehouseStrategy, WarehouseStrategyRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得出入库策略分页") + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy:query')") + public CommonResult> getWarehouseStrategyPage(@Valid WarehouseStrategyPageReqVO pageReqVO) { + PageResult pageResult = warehouseStrategyService.getWarehouseStrategyPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, WarehouseStrategyRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出出入库策略 Excel") + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportWarehouseStrategyExcel(@Valid WarehouseStrategyPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = warehouseStrategyService.getWarehouseStrategyPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "出入库策略.xls", "数据", WarehouseStrategyRespVO.class, + BeanUtils.toBean(list, WarehouseStrategyRespVO.class)); + } + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategyPageReqVO.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategyPageReqVO.java new file mode 100644 index 00000000..516ae950 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategyPageReqVO.java @@ -0,0 +1,29 @@ +package cn.code.nl.module.wms.controller.admin.warehousestrategy.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.code.nl.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.code.nl.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 出入库策略分页 Request VO") +@Data +public class WarehouseStrategyPageReqVO extends PageParam { + + @Schema(description = "库区编码") + private String sectionCode; + + @Schema(description = "规则") + private String strategy; + + @Schema(description = "策略类型", example = "1入库2出库") + private String strategyType; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategyRespVO.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategyRespVO.java new file mode 100644 index 00000000..9cff4570 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategyRespVO.java @@ -0,0 +1,47 @@ +package cn.code.nl.module.wms.controller.admin.warehousestrategy.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import cn.idev.excel.annotation.*; + +@Schema(description = "管理后台 - 出入库策略 Response VO") +@Data +@ExcelIgnoreUnannotated +public class WarehouseStrategyRespVO { + + @Schema(description = "库区编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("库区编码") + private String sectionCode; + + @Schema(description = "规则", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("规则") + private String strategy; + + @Schema(description = "策略类型", example = "1入库2出库") + @ExcelProperty("策略类型") + private String strategyType; + + @Schema(description = "描述") + @ExcelProperty("描述") + private String description; + + @Schema(description = "创建者") + @ExcelProperty("创建者") + private String creator; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新者", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("更新者") + private String updater; + + @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("更新时间") + private LocalDateTime updateTime; + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategySaveReqVO.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategySaveReqVO.java new file mode 100644 index 00000000..4fe67703 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategySaveReqVO.java @@ -0,0 +1,28 @@ +package cn.code.nl.module.wms.controller.admin.warehousestrategy.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 出入库策略新增/修改 Request VO") +@Data +public class WarehouseStrategySaveReqVO { + + private Long id; + + @Schema(description = "库区编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "库区编码不能为空") + private String sectionCode; + + @Schema(description = "规则", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "规则不能为空") + private String strategy; + + @Schema(description = "策略类型", example = "1入库2出库") + private String strategyType; + + @Schema(description = "描述") + private String description; + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/WarehouseStrategyConfigController.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/WarehouseStrategyConfigController.java new file mode 100644 index 00000000..7851b654 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/WarehouseStrategyConfigController.java @@ -0,0 +1,104 @@ +package cn.code.nl.module.wms.controller.admin.warehousestrategyconfig; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.code.nl.framework.common.pojo.PageParam; +import cn.code.nl.framework.common.pojo.PageResult; +import cn.code.nl.framework.common.pojo.CommonResult; +import cn.code.nl.framework.common.util.object.BeanUtils; +import static cn.code.nl.framework.common.pojo.CommonResult.success; + +import cn.code.nl.framework.excel.core.util.ExcelUtils; + +import cn.code.nl.framework.apilog.core.annotation.ApiAccessLog; +import static cn.code.nl.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.code.nl.module.wms.controller.admin.warehousestrategyconfig.vo.*; +import cn.code.nl.module.wms.dal.dataobject.warehousestrategyconfig.WarehouseStrategyConfigDO; +import cn.code.nl.module.wms.service.warehousestrategyconfig.WarehouseStrategyConfigService; + +@Tag(name = "管理后台 - 仓储策略配置") +@RestController +@RequestMapping("/wms/warehouse-strategy-config") +@Validated +public class WarehouseStrategyConfigController { + + @Resource + private WarehouseStrategyConfigService warehouseStrategyConfigService; + + @PostMapping("/create") + @Operation(summary = "创建仓储策略配置") + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy-config:create')") + public CommonResult createWarehouseStrategyConfig(@Valid @RequestBody WarehouseStrategyConfigSaveReqVO createReqVO) { + return success(warehouseStrategyConfigService.createWarehouseStrategyConfig(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新仓储策略配置") + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy-config:update')") + public CommonResult updateWarehouseStrategyConfig(@Valid @RequestBody WarehouseStrategyConfigSaveReqVO updateReqVO) { + warehouseStrategyConfigService.updateWarehouseStrategyConfig(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除仓储策略配置") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy-config:delete')") + public CommonResult deleteWarehouseStrategyConfig(@RequestParam("id") Long id) { + warehouseStrategyConfigService.deleteWarehouseStrategyConfig(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除仓储策略配置") + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy-config:delete')") + public CommonResult deleteWarehouseStrategyConfigList(@RequestParam("ids") List ids) { + warehouseStrategyConfigService.deleteWarehouseStrategyConfigListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得仓储策略配置") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy-config:query')") + public CommonResult getWarehouseStrategyConfig(@RequestParam("id") Long id) { + WarehouseStrategyConfigDO warehouseStrategyConfig = warehouseStrategyConfigService.getWarehouseStrategyConfig(id); + return success(BeanUtils.toBean(warehouseStrategyConfig, WarehouseStrategyConfigRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得仓储策略配置分页") + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy-config:query')") + public CommonResult> getWarehouseStrategyConfigPage(@Valid WarehouseStrategyConfigPageReqVO pageReqVO) { + PageResult pageResult = warehouseStrategyConfigService.getWarehouseStrategyConfigPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, WarehouseStrategyConfigRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出仓储策略配置 Excel") + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy-config:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportWarehouseStrategyConfigExcel(@Valid WarehouseStrategyConfigPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = warehouseStrategyConfigService.getWarehouseStrategyConfigPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "仓储策略配置.xls", "数据", WarehouseStrategyConfigRespVO.class, + BeanUtils.toBean(list, WarehouseStrategyConfigRespVO.class)); + } + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigPageReqVO.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigPageReqVO.java new file mode 100644 index 00000000..18cb327f --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigPageReqVO.java @@ -0,0 +1,47 @@ +package cn.code.nl.module.wms.controller.admin.warehousestrategyconfig.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.code.nl.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.code.nl.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 仓储策略配置分页 Request VO") +@Data +public class WarehouseStrategyConfigPageReqVO extends PageParam { + + @Schema(description = "策略编码") + private String strategyCode; + + @Schema(description = "策略名称", example = "赵六") + private String strategyName; + + @Schema(description = "策略类型", example = "1") + private String strategyType; + + @Schema(description = "类处理类型", example = "2") + private String classType; + + @Schema(description = "处理类") + private String param; + + @Schema(description = "描述", example = "你说的对") + private String remark; + + @Schema(description = "是否启用") + private Boolean isUsed; + + @Schema(description = "禁止操作") + private Boolean ban; + + @Schema(description = "限定参数") + private String formData; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigRespVO.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigRespVO.java new file mode 100644 index 00000000..16b09d5b --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigRespVO.java @@ -0,0 +1,67 @@ +package cn.code.nl.module.wms.controller.admin.warehousestrategyconfig.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import cn.idev.excel.annotation.*; + +@Schema(description = "管理后台 - 仓储策略配置 Response VO") +@Data +@ExcelIgnoreUnannotated +public class WarehouseStrategyConfigRespVO { + + @Schema(description = "策略编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("策略编码") + private String strategyCode; + + @Schema(description = "策略名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("策略名称") + private String strategyName; + + @Schema(description = "策略类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("策略类型") + private String strategyType; + + @Schema(description = "类处理类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("类处理类型") + private String classType; + + @Schema(description = "处理类", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("处理类") + private String param; + + @Schema(description = "描述", example = "你说的对") + @ExcelProperty("描述") + private String remark; + + @Schema(description = "是否启用") + @ExcelProperty("是否启用") + private Boolean isUsed; + + @Schema(description = "禁止操作") + @ExcelProperty("禁止操作") + private Boolean ban; + + @Schema(description = "限定参数") + @ExcelProperty("限定参数") + private String formData; + + @Schema(description = "创建者") + @ExcelProperty("创建者") + private String creator; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新者") + @ExcelProperty("更新者") + private String updater; + + @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("更新时间") + private LocalDateTime updateTime; + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigSaveReqVO.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigSaveReqVO.java new file mode 100644 index 00000000..ee4ef087 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigSaveReqVO.java @@ -0,0 +1,46 @@ +package cn.code.nl.module.wms.controller.admin.warehousestrategyconfig.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 仓储策略配置新增/修改 Request VO") +@Data +public class WarehouseStrategyConfigSaveReqVO { + + private Long id; + + @Schema(description = "策略编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "策略编码不能为空") + private String strategyCode; + + @Schema(description = "策略名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "策略名称不能为空") + private String strategyName; + + @Schema(description = "策略类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "策略类型不能为空") + private String strategyType; + + @Schema(description = "类处理类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "类处理类型不能为空") + private String classType; + + @Schema(description = "处理类", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "处理类不能为空") + private String param; + + @Schema(description = "描述", example = "你说的对") + private String remark; + + @Schema(description = "是否启用") + private Boolean isUsed; + + @Schema(description = "禁止操作") + private Boolean ban; + + @Schema(description = "限定参数") + private String formData; + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/dataobject/warehousestrategy/WarehouseStrategyDO.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/dataobject/warehousestrategy/WarehouseStrategyDO.java new file mode 100644 index 00000000..4aeebf02 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/dataobject/warehousestrategy/WarehouseStrategyDO.java @@ -0,0 +1,48 @@ +package cn.code.nl.module.wms.dal.dataobject.warehousestrategy; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.code.nl.framework.mybatis.core.dataobject.BaseDO; + +/** + * 出入库策略 DO + * + * @author 诺力管理员 + */ +@TableName("wms_warehouse_strategy") +@KeySequence("wms_warehouse_strategy_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WarehouseStrategyDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 库区编码 + */ + private String sectionCode; + /** + * 规则 + */ + private String strategy; + /** + * 策略类型 + */ + private String strategyType; + /** + * 描述 + */ + private String description; + + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/dataobject/warehousestrategyconfig/WarehouseStrategyConfigDO.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/dataobject/warehousestrategyconfig/WarehouseStrategyConfigDO.java new file mode 100644 index 00000000..057619ec --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/dataobject/warehousestrategyconfig/WarehouseStrategyConfigDO.java @@ -0,0 +1,67 @@ +package cn.code.nl.module.wms.dal.dataobject.warehousestrategyconfig; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.code.nl.framework.mybatis.core.dataobject.BaseDO; + +/** + * 仓储策略配置 DO + * + * @author 诺力管理员 + */ +@TableName("wms_warehouse_strategy_config") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WarehouseStrategyConfigDO extends BaseDO { + + /** + * 策略标识 + */ + @TableId + private Long id; + /** + * 策略编码 + */ + private String strategyCode; + /** + * 策略名称 + */ + private String strategyName; + /** + * 策略类型 + */ + private String strategyType; + /** + * 类处理类型 + */ + private String classType; + /** + * 处理类 + */ + private String param; + /** + * 描述 + */ + private String remark; + /** + * 是否启用 + */ + private Boolean isUsed; + /** + * 禁止操作 + */ + private Boolean ban; + /** + * 限定参数 + */ + private String formData; + + +} diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/warehousestrategy/WarehouseStrategyMapper.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/warehousestrategy/WarehouseStrategyMapper.java new file mode 100644 index 00000000..1136d163 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/warehousestrategy/WarehouseStrategyMapper.java @@ -0,0 +1,29 @@ +package cn.code.nl.module.wms.dal.mysql.warehousestrategy; + +import java.util.*; + +import cn.code.nl.framework.common.pojo.PageResult; +import cn.code.nl.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.code.nl.framework.mybatis.core.mapper.BaseMapperX; +import cn.code.nl.module.wms.dal.dataobject.warehousestrategy.WarehouseStrategyDO; +import org.apache.ibatis.annotations.Mapper; +import cn.code.nl.module.wms.controller.admin.warehousestrategy.vo.*; + +/** + * 出入库策略 Mapper + * + * @author 诺力管理员 + */ +@Mapper +public interface WarehouseStrategyMapper extends BaseMapperX { + + default PageResult selectPage(WarehouseStrategyPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(WarehouseStrategyDO::getSectionCode, reqVO.getSectionCode()) + .eqIfPresent(WarehouseStrategyDO::getStrategy, reqVO.getStrategy()) + .eqIfPresent(WarehouseStrategyDO::getStrategyType, reqVO.getStrategyType()) + .betweenIfPresent(WarehouseStrategyDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(WarehouseStrategyDO::getId)); + } + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/warehousestrategyconfig/WarehouseStrategyConfigMapper.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/warehousestrategyconfig/WarehouseStrategyConfigMapper.java new file mode 100644 index 00000000..55962bbc --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/warehousestrategyconfig/WarehouseStrategyConfigMapper.java @@ -0,0 +1,35 @@ +package cn.code.nl.module.wms.dal.mysql.warehousestrategyconfig; + +import java.util.*; + +import cn.code.nl.framework.common.pojo.PageResult; +import cn.code.nl.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.code.nl.framework.mybatis.core.mapper.BaseMapperX; +import cn.code.nl.module.wms.dal.dataobject.warehousestrategyconfig.WarehouseStrategyConfigDO; +import org.apache.ibatis.annotations.Mapper; +import cn.code.nl.module.wms.controller.admin.warehousestrategyconfig.vo.*; + +/** + * 仓储策略配置 Mapper + * + * @author 诺力管理员 + */ +@Mapper +public interface WarehouseStrategyConfigMapper extends BaseMapperX { + + default PageResult selectPage(WarehouseStrategyConfigPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(WarehouseStrategyConfigDO::getStrategyCode, reqVO.getStrategyCode()) + .likeIfPresent(WarehouseStrategyConfigDO::getStrategyName, reqVO.getStrategyName()) + .eqIfPresent(WarehouseStrategyConfigDO::getStrategyType, reqVO.getStrategyType()) + .eqIfPresent(WarehouseStrategyConfigDO::getClassType, reqVO.getClassType()) + .eqIfPresent(WarehouseStrategyConfigDO::getParam, reqVO.getParam()) + .eqIfPresent(WarehouseStrategyConfigDO::getRemark, reqVO.getRemark()) + .eqIfPresent(WarehouseStrategyConfigDO::getIsUsed, reqVO.getIsUsed()) + .eqIfPresent(WarehouseStrategyConfigDO::getBan, reqVO.getBan()) + .eqIfPresent(WarehouseStrategyConfigDO::getFormData, reqVO.getFormData()) + .betweenIfPresent(WarehouseStrategyConfigDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(WarehouseStrategyConfigDO::getId)); + } + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/framework/security/config/SecurityConfiguration.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/framework/security/config/SecurityConfiguration.java index 20c30302..aa9fa217 100644 --- a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/framework/security/config/SecurityConfiguration.java +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/framework/security/config/SecurityConfiguration.java @@ -11,7 +11,7 @@ import org.springframework.security.config.annotation.web.configurers.AuthorizeH * * @author zhouz */ -@Configuration(proxyBeanMethods = false, value = "baseSecurityConfiguration") +@Configuration(proxyBeanMethods = false, value = "wmsSecurityConfiguration") public class SecurityConfiguration { /* @@ -93,7 +93,7 @@ public class SecurityConfiguration { 3. 遵循了项目中每个模块定义各自安全配置的标准模式 * */ - @Bean("baseAuthorizeRequestsCustomizer") + @Bean("wmsAuthorizeRequestsCustomizer") public AuthorizeRequestsCustomizer authorizeRequestsCustomizer() { return new AuthorizeRequestsCustomizer() { diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategy/WarehouseStrategyService.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategy/WarehouseStrategyService.java new file mode 100644 index 00000000..44c5461c --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategy/WarehouseStrategyService.java @@ -0,0 +1,62 @@ +package cn.code.nl.module.wms.service.warehousestrategy; + +import java.util.*; +import jakarta.validation.*; +import cn.code.nl.module.wms.controller.admin.warehousestrategy.vo.*; +import cn.code.nl.module.wms.dal.dataobject.warehousestrategy.WarehouseStrategyDO; +import cn.code.nl.framework.common.pojo.PageResult; +import cn.code.nl.framework.common.pojo.PageParam; + +/** + * 出入库策略 Service 接口 + * + * @author 诺力管理员 + */ +public interface WarehouseStrategyService { + + /** + * 创建出入库策略 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createWarehouseStrategy(@Valid WarehouseStrategySaveReqVO createReqVO); + + /** + * 更新出入库策略 + * + * @param updateReqVO 更新信息 + */ + void updateWarehouseStrategy(@Valid WarehouseStrategySaveReqVO updateReqVO); + + /** + * 删除出入库策略 + * + * @param id 编号 + */ + void deleteWarehouseStrategy(Long id); + + /** + * 批量删除出入库策略 + * + * @param ids 编号 + */ + void deleteWarehouseStrategyListByIds(List ids); + + /** + * 获得出入库策略 + * + * @param id 编号 + * @return 出入库策略 + */ + WarehouseStrategyDO getWarehouseStrategy(Long id); + + /** + * 获得出入库策略分页 + * + * @param pageReqVO 分页查询 + * @return 出入库策略分页 + */ + PageResult getWarehouseStrategyPage(WarehouseStrategyPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategy/WarehouseStrategyServiceImpl.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategy/WarehouseStrategyServiceImpl.java new file mode 100644 index 00000000..d18c8d34 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategy/WarehouseStrategyServiceImpl.java @@ -0,0 +1,85 @@ +package cn.code.nl.module.wms.service.warehousestrategy; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.code.nl.module.wms.controller.admin.warehousestrategy.vo.*; +import cn.code.nl.module.wms.dal.dataobject.warehousestrategy.WarehouseStrategyDO; +import cn.code.nl.framework.common.pojo.PageResult; +import cn.code.nl.framework.common.pojo.PageParam; +import cn.code.nl.framework.common.util.object.BeanUtils; + +import cn.code.nl.module.wms.dal.mysql.warehousestrategy.WarehouseStrategyMapper; + +import static cn.code.nl.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.code.nl.framework.common.util.collection.CollectionUtils.convertList; +import static cn.code.nl.framework.common.util.collection.CollectionUtils.diffList; +import static cn.code.nl.module.wms.enums.ErrorCodeConstants.*; + +/** + * 出入库策略 Service 实现类 + * + * @author 诺力管理员 + */ +@Service +@Validated +public class WarehouseStrategyServiceImpl implements WarehouseStrategyService { + + @Resource + private WarehouseStrategyMapper warehouseStrategyMapper; + + @Override + public Long createWarehouseStrategy(WarehouseStrategySaveReqVO createReqVO) { + // 插入 + WarehouseStrategyDO warehouseStrategy = BeanUtils.toBean(createReqVO, WarehouseStrategyDO.class); + warehouseStrategyMapper.insert(warehouseStrategy); + + // 返回 + return warehouseStrategy.getId(); + } + + @Override + public void updateWarehouseStrategy(WarehouseStrategySaveReqVO updateReqVO) { + // 校验存在 + validateWarehouseStrategyExists(updateReqVO.getId()); + // 更新 + WarehouseStrategyDO updateObj = BeanUtils.toBean(updateReqVO, WarehouseStrategyDO.class); + warehouseStrategyMapper.updateById(updateObj); + } + + @Override + public void deleteWarehouseStrategy(Long id) { + // 校验存在 + validateWarehouseStrategyExists(id); + // 删除 + warehouseStrategyMapper.deleteById(id); + } + + @Override + public void deleteWarehouseStrategyListByIds(List ids) { + // 删除 + warehouseStrategyMapper.deleteByIds(ids); + } + + + private void validateWarehouseStrategyExists(Long id) { + if (warehouseStrategyMapper.selectById(id) == null) { + throw exception(WAREHOUSE_STRATEGY_NOT_EXISTS); + } + } + + @Override + public WarehouseStrategyDO getWarehouseStrategy(Long id) { + return warehouseStrategyMapper.selectById(id); + } + + @Override + public PageResult getWarehouseStrategyPage(WarehouseStrategyPageReqVO pageReqVO) { + return warehouseStrategyMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigService.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigService.java new file mode 100644 index 00000000..cf3313b5 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigService.java @@ -0,0 +1,62 @@ +package cn.code.nl.module.wms.service.warehousestrategyconfig; + +import java.util.*; +import jakarta.validation.*; +import cn.code.nl.module.wms.controller.admin.warehousestrategyconfig.vo.*; +import cn.code.nl.module.wms.dal.dataobject.warehousestrategyconfig.WarehouseStrategyConfigDO; +import cn.code.nl.framework.common.pojo.PageResult; +import cn.code.nl.framework.common.pojo.PageParam; + +/** + * 仓储策略配置 Service 接口 + * + * @author 诺力管理员 + */ +public interface WarehouseStrategyConfigService { + + /** + * 创建仓储策略配置 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createWarehouseStrategyConfig(@Valid WarehouseStrategyConfigSaveReqVO createReqVO); + + /** + * 更新仓储策略配置 + * + * @param updateReqVO 更新信息 + */ + void updateWarehouseStrategyConfig(@Valid WarehouseStrategyConfigSaveReqVO updateReqVO); + + /** + * 删除仓储策略配置 + * + * @param id 编号 + */ + void deleteWarehouseStrategyConfig(Long id); + + /** + * 批量删除仓储策略配置 + * + * @param ids 编号 + */ + void deleteWarehouseStrategyConfigListByIds(List ids); + + /** + * 获得仓储策略配置 + * + * @param id 编号 + * @return 仓储策略配置 + */ + WarehouseStrategyConfigDO getWarehouseStrategyConfig(Long id); + + /** + * 获得仓储策略配置分页 + * + * @param pageReqVO 分页查询 + * @return 仓储策略配置分页 + */ + PageResult getWarehouseStrategyConfigPage(WarehouseStrategyConfigPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigServiceImpl.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigServiceImpl.java new file mode 100644 index 00000000..077457b0 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigServiceImpl.java @@ -0,0 +1,80 @@ +package cn.code.nl.module.wms.service.warehousestrategyconfig; + +import cn.code.nl.framework.common.pojo.PageResult; +import cn.code.nl.framework.common.util.object.BeanUtils; +import cn.code.nl.module.wms.controller.admin.warehousestrategyconfig.vo.WarehouseStrategyConfigPageReqVO; +import cn.code.nl.module.wms.controller.admin.warehousestrategyconfig.vo.WarehouseStrategyConfigSaveReqVO; +import cn.code.nl.module.wms.dal.dataobject.warehousestrategyconfig.WarehouseStrategyConfigDO; +import cn.code.nl.module.wms.dal.mysql.warehousestrategyconfig.WarehouseStrategyConfigMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.code.nl.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.code.nl.module.wms.enums.ErrorCodeConstants.WAREHOUSE_STRATEGY_CONFIG_NOT_EXISTS; + +/** + * 仓储策略配置 Service 实现类 + * + * @author 诺力管理员 + */ +@Service +@Validated +public class WarehouseStrategyConfigServiceImpl implements WarehouseStrategyConfigService { + + @Resource + private WarehouseStrategyConfigMapper warehouseStrategyConfigMapper; + + @Override + public Long createWarehouseStrategyConfig(WarehouseStrategyConfigSaveReqVO createReqVO) { + // 插入 + WarehouseStrategyConfigDO warehouseStrategyConfig = BeanUtils.toBean(createReqVO, WarehouseStrategyConfigDO.class); + warehouseStrategyConfigMapper.insert(warehouseStrategyConfig); + + // 返回 + return warehouseStrategyConfig.getId(); + } + + @Override + public void updateWarehouseStrategyConfig(WarehouseStrategyConfigSaveReqVO updateReqVO) { + // 校验存在 + validateWarehouseStrategyConfigExists(updateReqVO.getId()); + // 更新 + WarehouseStrategyConfigDO updateObj = BeanUtils.toBean(updateReqVO, WarehouseStrategyConfigDO.class); + warehouseStrategyConfigMapper.updateById(updateObj); + } + + @Override + public void deleteWarehouseStrategyConfig(Long id) { + // 校验存在 + validateWarehouseStrategyConfigExists(id); + // 删除 + warehouseStrategyConfigMapper.deleteById(id); + } + + @Override + public void deleteWarehouseStrategyConfigListByIds(List ids) { + // 删除 + warehouseStrategyConfigMapper.deleteByIds(ids); + } + + + private void validateWarehouseStrategyConfigExists(Long id) { + if (warehouseStrategyConfigMapper.selectById(id) == null) { + throw exception(WAREHOUSE_STRATEGY_CONFIG_NOT_EXISTS); + } + } + + @Override + public WarehouseStrategyConfigDO getWarehouseStrategyConfig(Long id) { + return warehouseStrategyConfigMapper.selectById(id); + } + + @Override + public PageResult getWarehouseStrategyConfigPage(WarehouseStrategyConfigPageReqVO pageReqVO) { + return warehouseStrategyConfigMapper.selectPage(pageReqVO); + } + +} diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategy/WarehouseStrategyMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategy/WarehouseStrategyMapper.xml new file mode 100644 index 00000000..e0158ff1 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategy/WarehouseStrategyMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategyconfig/WarehouseStrategyConfigMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategyconfig/WarehouseStrategyConfigMapper.xml new file mode 100644 index 00000000..eb9dd4a5 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategyconfig/WarehouseStrategyConfigMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategy/index.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategy/index.ts new file mode 100644 index 00000000..c75c82c3 --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategy/index.ts @@ -0,0 +1,58 @@ +import type { PageParam, PageResult } from '@vben/request'; +import type { Dayjs } from 'dayjs'; + +import { requestClient } from '#/api/request'; + +export namespace WmsWarehouseStrategyApi { + /** 出入库策略信息 */ + export interface WarehouseStrategy { + sectionCode?: string; // 库区编码 + strategy?: string; // 规则 + strategyType: string; // 策略类型 + description: string; // 描述 + } +} + +/** 查询出入库策略分页 */ +export function getWarehouseStrategyPage(params: PageParam) { + return requestClient.get>( + '/wms/warehouse-strategy/page', + { params }, + ); +} + +/** 查询出入库策略详情 */ +export function getWarehouseStrategy(id: number) { + return requestClient.get( + `/wms/warehouse-strategy/get?id=${id}`, + ); +} + +/** 新增出入库策略 */ +export function createWarehouseStrategy(data: WmsWarehouseStrategyApi.WarehouseStrategy) { + return requestClient.post('/wms/warehouse-strategy/create', data); +} + +/** 修改出入库策略 */ +export function updateWarehouseStrategy(data: WmsWarehouseStrategyApi.WarehouseStrategy) { + return requestClient.put('/wms/warehouse-strategy/update', data); +} + +/** 删除出入库策略 */ +export function deleteWarehouseStrategy(id: number) { + return requestClient.delete(`/wms/warehouse-strategy/delete?id=${id}`); +} + +/** 批量删除出入库策略 */ +export function deleteWarehouseStrategyList(ids: number[]) { + return requestClient.delete( + `/wms/warehouse-strategy/delete-list?ids=${ids.join(',')}`, + ); +} + +/** 导出出入库策略 */ +export function exportWarehouseStrategy(params: any) { + return requestClient.download('/wms/warehouse-strategy/export-excel', { params }); +} + + \ No newline at end of file diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategyconfig/index.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategyconfig/index.ts new file mode 100644 index 00000000..e37cbd7a --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategyconfig/index.ts @@ -0,0 +1,63 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace WmsWarehouseStrategyConfigApi { + /** 仓储策略配置信息 */ + export interface WarehouseStrategyConfig { + id?: string; + strategyCode?: string; // 策略编码 + strategyName?: string; // 策略名称 + strategyType?: string; // 策略类型 + classType?: string; // 类处理类型 + param?: string; // 处理类 + remark: string; // 描述 + isUsed: boolean; // 是否启用 + ban: boolean; // 禁止操作 + formData: string; // 限定参数 + } +} + +/** 查询仓储策略配置分页 */ +export function getWarehouseStrategyConfigPage(params: PageParam) { + return requestClient.get>( + '/wms/warehouse-strategy-config/page', + { params }, + ); +} + +/** 查询仓储策略配置详情 */ +export function getWarehouseStrategyConfig(id: number) { + return requestClient.get( + `/wms/warehouse-strategy-config/get?id=${id}`, + ); +} + +/** 新增仓储策略配置 */ +export function createWarehouseStrategyConfig(data: WmsWarehouseStrategyConfigApi.WarehouseStrategyConfig) { + return requestClient.post('/wms/warehouse-strategy-config/create', data); +} + +/** 修改仓储策略配置 */ +export function updateWarehouseStrategyConfig(data: WmsWarehouseStrategyConfigApi.WarehouseStrategyConfig) { + return requestClient.put('/wms/warehouse-strategy-config/update', data); +} + +/** 删除仓储策略配置 */ +export function deleteWarehouseStrategyConfig(id: number) { + return requestClient.delete(`/wms/warehouse-strategy-config/delete?id=${id}`); +} + +/** 批量删除仓储策略配置 */ +export function deleteWarehouseStrategyConfigList(ids: number[]) { + return requestClient.delete( + `/wms/warehouse-strategy-config/delete-list?ids=${ids.join(',')}`, + ); +} + +/** 导出仓储策略配置 */ +export function exportWarehouseStrategyConfig(params: any) { + return requestClient.download('/wms/warehouse-strategy-config/export-excel', { params }); +} + + diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/data.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/data.ts new file mode 100644 index 00000000..82918979 --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/data.ts @@ -0,0 +1,155 @@ +import type { VbenFormSchema } from '#/adapter/form'; +import type { VxeTableGridOptions } from '#/adapter/vxe-table'; +import type { WmsWarehouseStrategyApi } from '#/api/wms/warehousestrategy'; + +import { getRangePickerDefaultProps } from '#/utils'; +import {getDictOptions} from "@vben/hooks"; +import {DICT_TYPE} from "@vben/constants"; + +/** 新增/修改的表单 */ +export function useFormSchema(): VbenFormSchema[] { + return [ + { + fieldName: 'id', + component: 'Input', + dependencies: { + triggerFields: [''], + show: () => false, + }, + }, + { + fieldName: 'sectionCode', + label: '库区编码', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入库区编码', + }, + }, + { + fieldName: 'strategyType', + label: '策略类型', + component: 'Select', + componentProps: { + options: getDictOptions(DICT_TYPE.WMS_OUT_IN_STRATEGY_TYPE), + placeholder: '请选择策略类型', + }, + }, + { + fieldName: 'strategy', + label: '规则', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入规则', + }, + }, + { + fieldName: 'description', + label: '描述', + component: 'TextArea', + componentProps: { + placeholder: '请输入描述', + }, + }, + ]; +} + +/** 列表的搜索表单 */ +export function useGridFormSchema(): VbenFormSchema[] { + return [ + { + fieldName: 'sectionCode', + label: '库区编码', + component: 'Input', + componentProps: { + allowClear: true, + placeholder: '请输入库区编码', + }, + }, + { + fieldName: 'strategy', + label: '规则', + component: 'Input', + componentProps: { + allowClear: true, + placeholder: '请输入规则', + }, + }, + { + fieldName: 'strategyType', + label: '策略类型', + component: 'Select', + componentProps: { + allowClear: true, + options: getDictOptions(DICT_TYPE.WMS_STRATEGY_TYPE), + placeholder: '请选择策略类型', + }, + }, + { + fieldName: 'createTime', + label: '创建时间', + component: 'RangePicker', + componentProps: { + ...getRangePickerDefaultProps(), + allowClear: true, + }, + }, + ]; +} + +/** 列表的字段 */ +export function useGridColumns(): VxeTableGridOptions['columns'] { + return [ + { type: 'checkbox', width: 40 }, + { + field: 'sectionCode', + title: '库区编码', + minWidth: 120, + }, + { + field: 'strategy', + title: '规则', + minWidth: 120, + }, + { + field: 'strategyType', + title: '策略类型', + minWidth: 120, + }, + { + field: 'description', + title: '描述', + minWidth: 120, + }, + { + field: 'creator', + title: '创建者', + minWidth: 120, + }, + { + field: 'createTime', + title: '创建时间', + minWidth: 120, + formatter: 'formatDateTime', + }, + { + field: 'updater', + title: '更新者', + minWidth: 120, + }, + { + field: 'updateTime', + title: '更新时间', + minWidth: 120, + formatter: 'formatDateTime', + }, + { + title: '操作', + width: 200, + fixed: 'right', + slots: { default: 'actions' }, + }, + ]; +} + diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/index.vue b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/index.vue new file mode 100644 index 00000000..0235f27c --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/index.vue @@ -0,0 +1,186 @@ + + + \ No newline at end of file diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/modules/form.vue b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/modules/form.vue new file mode 100644 index 00000000..014ea210 --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/modules/form.vue @@ -0,0 +1,82 @@ + + + \ No newline at end of file diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategyconfig/data.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategyconfig/data.ts new file mode 100644 index 00000000..e35cce28 --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategyconfig/data.ts @@ -0,0 +1,282 @@ +import {type VbenFormSchema, z} from '#/adapter/form'; +import type { VxeTableGridOptions } from '#/adapter/vxe-table'; +import type { WmsWarehouseStrategyConfigApi } from '#/api/wms/warehousestrategyconfig'; + +import { getDictOptions } from '@vben/hooks'; + +import { getRangePickerDefaultProps } from '#/utils'; +import {CommonStatusEnum, DICT_TYPE} from "@vben/constants"; + +/** 新增/修改的表单 */ +export function useFormSchema(): VbenFormSchema[] { + const strategyTypeOptions = getDictOptions(DICT_TYPE.WMS_STRATEGY_TYPE, 'string'); + + return [ + { + fieldName: 'id', + component: 'Input', + dependencies: { + triggerFields: [''], + show: () => false, + }, + }, + { + fieldName: 'strategyCode', + label: '策略编码', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入策略编码', + }, + }, + { + fieldName: 'strategyName', + label: '策略名称', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入策略名称', + }, + }, + { + fieldName: 'strategyType', + label: '策略类型', + rules: 'required', + component: 'Select', + componentProps: { + options: strategyTypeOptions, + placeholder: '请选择策略类型', + }, + defaultValue: strategyTypeOptions[0]?.value, + }, + { + fieldName: 'classType', + label: '类处理类型', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请选择类处理类型', + }, + }, + { + fieldName: 'param', + label: '参数', + component: 'Input', + componentProps: { + placeholder: '请输入参数', + }, + }, + { + fieldName: 'remark', + label: '描述', + component: 'Input', + componentProps: { + placeholder: '请输入描述', + }, + }, + { + fieldName: 'isUsed', + label: '是否启用', + component: 'RadioGroup', + componentProps: { + options: getDictOptions(DICT_TYPE.COMMON_STATUS, 'number'), + buttonStyle: 'solid', + optionType: 'button', + }, + rules: z.number().default(CommonStatusEnum.ENABLE), + }, + { + fieldName: 'ban', + label: '禁止操作', + component: 'RadioGroup', + componentProps: { + options: getDictOptions(DICT_TYPE.COMMON_STATUS, 'number'), + buttonStyle: 'solid', + optionType: 'button', + }, + rules: z.number().default(CommonStatusEnum.DISABLE), + }, + { + fieldName: 'formData', + label: '限定参数', + component: 'Input', + componentProps: { + placeholder: '请输入限定参数', + }, + }, + ]; +} + +/** 列表的搜索表单 */ +export function useGridFormSchema(): VbenFormSchema[] { + return [ + { + fieldName: 'strategyCode', + label: '策略编码', + component: 'Input', + componentProps: { + allowClear: true, + placeholder: '请输入策略编码', + }, + }, + { + fieldName: 'strategyName', + label: '策略名称', + component: 'Input', + componentProps: { + allowClear: true, + placeholder: '请输入策略名称', + }, + }, + { + fieldName: 'strategyType', + label: '策略类型', + component: 'Select', + componentProps: { + allowClear: true, + options: getDictOptions(DICT_TYPE.WMS_STRATEGY_TYPE), + placeholder: '请选择策略类型', + }, + }, + { + fieldName: 'classType', + label: '类处理类型', + component: 'Select', + componentProps: { + allowClear: true, + options: [], + placeholder: '请选择类处理类型', + }, + }, + { + fieldName: 'param', + label: '处理类', + component: 'Input', + componentProps: { + allowClear: true, + placeholder: '请输入处理类', + }, + }, + { + fieldName: 'remark', + label: '描述', + component: 'Input', + componentProps: { + allowClear: true, + placeholder: '请输入描述', + }, + }, + { + fieldName: 'isUsed', + label: '是否启用', + component: 'Select', + componentProps: { + allowClear: true, + options: [], + placeholder: '请选择是否启用', + }, + }, + { + fieldName: 'createTime', + label: '创建时间', + component: 'RangePicker', + componentProps: { + ...getRangePickerDefaultProps(), + allowClear: true, + }, + }, + ]; +} + +/** 列表的字段 */ +export function useGridColumns(): VxeTableGridOptions['columns'] { + return [ + { type: 'checkbox', width: 40 }, + { + field: 'strategyCode', + title: '策略编码', + minWidth: 120, + }, + { + field: 'strategyName', + title: '策略名称', + minWidth: 120, + }, + { + field: 'strategyType', + title: '策略类型', + minWidth: 120, + cellRender: { + name: 'CellDict', + props: { type: DICT_TYPE.WMS_STRATEGY_TYPE }, + }, + }, + { + field: 'classType', + title: '类处理类型', + minWidth: 120, + }, + { + field: 'param', + title: '处理类', + minWidth: 120, + }, + { + field: 'remark', + title: '描述', + minWidth: 120, + }, + { + field: 'isUsed', + title: '是否启用', + minWidth: 120, + cellRender: { + name: 'CellDict', + props: { type: DICT_TYPE.COMMON_TRUE_FALSE }, + }, + }, + { + field: 'ban', + title: '是否禁止操作', + minWidth: 120, + cellRender: { + name: 'CellDict', + props: { type: DICT_TYPE.COMMON_TRUE_FALSE }, + }, + }, + { + field: 'formData', + title: '限定参数', + minWidth: 120, + }, + { + field: 'creator', + title: '创建者', + minWidth: 120, + }, + { + field: 'createTime', + title: '创建时间', + minWidth: 120, + formatter: 'formatDateTime', + }, + { + field: 'updater', + title: '更新者', + minWidth: 120, + }, + { + field: 'updateTime', + title: '更新时间', + minWidth: 120, + formatter: 'formatDateTime', + }, + { + title: '操作', + width: 200, + fixed: 'right', + slots: { default: 'actions' }, + }, + ]; +} + diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategyconfig/index.vue b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategyconfig/index.vue new file mode 100644 index 00000000..2407e804 --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategyconfig/index.vue @@ -0,0 +1,186 @@ + + + \ No newline at end of file diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategyconfig/modules/form.vue b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategyconfig/modules/form.vue new file mode 100644 index 00000000..16fe21a1 --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategyconfig/modules/form.vue @@ -0,0 +1,82 @@ + + + \ No newline at end of file diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/packages/constants/src/dict-enum.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/packages/constants/src/dict-enum.ts index 3453ce8c..8ecb4ac3 100644 --- a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/packages/constants/src/dict-enum.ts +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/packages/constants/src/dict-enum.ts @@ -4,7 +4,8 @@ const COMMON_DICT = { COMMON_STATUS: 'common_status', TERMINAL: 'terminal', // 终端 DATE_INTERVAL: 'date_interval', // 数据间隔 - PRODUCT_AREA: 'product_area' + PRODUCT_AREA: 'product_area', + COMMON_TRUE_FALSE: 'common_true_false', } as const; /** ========== SYSTEM - 系统模块 ========== */ @@ -279,6 +280,8 @@ const WMS_DICT = { WMS_ORDER_STATUS: 'wms_order_status', // WMS 单据状态 WMS_RECEIPT_ORDER_TYPE: 'wms_receipt_order_type', // WMS 入库单类型 WMS_SHIPMENT_ORDER_TYPE: 'wms_shipment_order_type', // WMS 出库单类型 + WMS_STRATEGY_TYPE: 'wms_strategy_type', // WMS策略类型 + WMS_OUT_IN_STRATEGY_TYPE: 'wms_out_in_strategy_type', // WMS出入库策略类型 } as const; /** ========== TASK - 任务管理模块 ========== */ From e827d1cb07ddc8ea8af0e1694cf8d2fcb2e2a4a5 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Sat, 18 Jul 2026 13:58:29 +0800 Subject: [PATCH 2/8] =?UTF-8?q?feat=EF=BC=9A=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/WarehouseStrategyRespVO.java | 96 +++++++------ .../WarehouseStrategyConfigController.java | 8 ++ .../vo/WarehouseStrategyConfigRespVO.java | 136 +++++++++--------- .../WarehouseStrategyConfigSimpleRespVO.java | 16 +++ .../WarehouseStrategyConfigMapper.java | 6 + .../nl/module/wms/manage/DecisionManage.java | 72 ++++++++++ .../nl/module/wms/manage/dto/DemoDTO.java | 13 ++ .../manage/handle/AlleyAveRuleHandler.java | 23 +++ .../WarehouseStrategyConfigService.java | 7 + .../WarehouseStrategyConfigServiceImpl.java | 5 + .../src/api/wms/warehousestrategy/index.ts | 116 +++++++-------- .../api/wms/warehousestrategyconfig/index.ts | 13 ++ .../src/views/wms/warehousestrategy/data.ts | 17 ++- .../src/views/wms/warehousestrategy/index.vue | 39 ++++- .../wms/warehousestrategy/modules/form.vue | 42 +++++- .../views/wms/warehousestrategyconfig/data.ts | 10 +- .../packages/constants/src/biz-system-enum.ts | 6 + 17 files changed, 442 insertions(+), 183 deletions(-) create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigSimpleRespVO.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/manage/DecisionManage.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/manage/dto/DemoDTO.java create mode 100644 nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/manage/handle/AlleyAveRuleHandler.java diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategyRespVO.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategyRespVO.java index 9cff4570..f5d00096 100644 --- a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategyRespVO.java +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategy/vo/WarehouseStrategyRespVO.java @@ -1,47 +1,49 @@ -package cn.code.nl.module.wms.controller.admin.warehousestrategy.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import cn.idev.excel.annotation.*; - -@Schema(description = "管理后台 - 出入库策略 Response VO") -@Data -@ExcelIgnoreUnannotated -public class WarehouseStrategyRespVO { - - @Schema(description = "库区编码", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("库区编码") - private String sectionCode; - - @Schema(description = "规则", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("规则") - private String strategy; - - @Schema(description = "策略类型", example = "1入库2出库") - @ExcelProperty("策略类型") - private String strategyType; - - @Schema(description = "描述") - @ExcelProperty("描述") - private String description; - - @Schema(description = "创建者") - @ExcelProperty("创建者") - private String creator; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "更新者", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("更新者") - private String updater; - - @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("更新时间") - private LocalDateTime updateTime; - -} \ No newline at end of file +package cn.code.nl.module.wms.controller.admin.warehousestrategy.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import cn.idev.excel.annotation.*; + +@Schema(description = "管理后台 - 出入库策略 Response VO") +@Data +@ExcelIgnoreUnannotated +public class WarehouseStrategyRespVO { + + private Long id; + + @Schema(description = "库区编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("库区编码") + private String sectionCode; + + @Schema(description = "规则", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("规则") + private String strategy; + + @Schema(description = "策略类型", example = "1入库2出库") + @ExcelProperty("策略类型") + private String strategyType; + + @Schema(description = "描述") + @ExcelProperty("描述") + private String description; + + @Schema(description = "创建者") + @ExcelProperty("创建者") + private String creator; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新者", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("更新者") + private String updater; + + @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("更新时间") + private LocalDateTime updateTime; + +} diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/WarehouseStrategyConfigController.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/WarehouseStrategyConfigController.java index 7851b654..0a9c998e 100644 --- a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/WarehouseStrategyConfigController.java +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/WarehouseStrategyConfigController.java @@ -88,6 +88,14 @@ public class WarehouseStrategyConfigController { return success(BeanUtils.toBean(pageResult, WarehouseStrategyConfigRespVO.class)); } + @GetMapping(value = {"/list-all-simple", "/simple-list"}) + @Operation(summary = "获得仓储策略配置精简列表") + @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy-config:query')") + public CommonResult> getSimpleWarehouseStrategyConfigList() { + List list = warehouseStrategyConfigService.getWarehouseStrategyConfigList(); + return success(BeanUtils.toBean(list, WarehouseStrategyConfigSimpleRespVO.class)); + } + @GetMapping("/export-excel") @Operation(summary = "导出仓储策略配置 Excel") @PreAuthorize("@ss.hasPermission('wms:warehouse-strategy-config:export')") diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigRespVO.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigRespVO.java index 16b09d5b..e0aa413a 100644 --- a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigRespVO.java +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigRespVO.java @@ -1,67 +1,69 @@ -package cn.code.nl.module.wms.controller.admin.warehousestrategyconfig.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import cn.idev.excel.annotation.*; - -@Schema(description = "管理后台 - 仓储策略配置 Response VO") -@Data -@ExcelIgnoreUnannotated -public class WarehouseStrategyConfigRespVO { - - @Schema(description = "策略编码", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("策略编码") - private String strategyCode; - - @Schema(description = "策略名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") - @ExcelProperty("策略名称") - private String strategyName; - - @Schema(description = "策略类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty("策略类型") - private String strategyType; - - @Schema(description = "类处理类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @ExcelProperty("类处理类型") - private String classType; - - @Schema(description = "处理类", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("处理类") - private String param; - - @Schema(description = "描述", example = "你说的对") - @ExcelProperty("描述") - private String remark; - - @Schema(description = "是否启用") - @ExcelProperty("是否启用") - private Boolean isUsed; - - @Schema(description = "禁止操作") - @ExcelProperty("禁止操作") - private Boolean ban; - - @Schema(description = "限定参数") - @ExcelProperty("限定参数") - private String formData; - - @Schema(description = "创建者") - @ExcelProperty("创建者") - private String creator; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "更新者") - @ExcelProperty("更新者") - private String updater; - - @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("更新时间") - private LocalDateTime updateTime; - -} \ No newline at end of file +package cn.code.nl.module.wms.controller.admin.warehousestrategyconfig.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import cn.idev.excel.annotation.*; + +@Schema(description = "管理后台 - 仓储策略配置 Response VO") +@Data +@ExcelIgnoreUnannotated +public class WarehouseStrategyConfigRespVO { + + private String id; + + @Schema(description = "策略编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("策略编码") + private String strategyCode; + + @Schema(description = "策略名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("策略名称") + private String strategyName; + + @Schema(description = "策略类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("策略类型") + private String strategyType; + + @Schema(description = "类处理类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("类处理类型") + private String classType; + + @Schema(description = "处理类", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("处理类") + private String param; + + @Schema(description = "描述", example = "你说的对") + @ExcelProperty("描述") + private String remark; + + @Schema(description = "是否启用") + @ExcelProperty("是否启用") + private Boolean isUsed; + + @Schema(description = "禁止操作") + @ExcelProperty("禁止操作") + private Boolean ban; + + @Schema(description = "限定参数") + @ExcelProperty("限定参数") + private String formData; + + @Schema(description = "创建者") + @ExcelProperty("创建者") + private String creator; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新者") + @ExcelProperty("更新者") + private String updater; + + @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("更新时间") + private LocalDateTime updateTime; + +} diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigSimpleRespVO.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigSimpleRespVO.java new file mode 100644 index 00000000..b119205b --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/warehousestrategyconfig/vo/WarehouseStrategyConfigSimpleRespVO.java @@ -0,0 +1,16 @@ +package cn.code.nl.module.wms.controller.admin.warehousestrategyconfig.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 仓储策略配置精简 Response VO") +@Data +public class WarehouseStrategyConfigSimpleRespVO { + + @Schema(description = "策略编码", requiredMode = Schema.RequiredMode.REQUIRED) + private String strategyCode; + + @Schema(description = "策略名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String strategyName; + +} diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/warehousestrategyconfig/WarehouseStrategyConfigMapper.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/warehousestrategyconfig/WarehouseStrategyConfigMapper.java index 55962bbc..61666e49 100644 --- a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/warehousestrategyconfig/WarehouseStrategyConfigMapper.java +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/warehousestrategyconfig/WarehouseStrategyConfigMapper.java @@ -17,6 +17,12 @@ import cn.code.nl.module.wms.controller.admin.warehousestrategyconfig.vo.*; @Mapper public interface WarehouseStrategyConfigMapper extends BaseMapperX { + default List selectList() { + return selectList(new LambdaQueryWrapperX() + .eq(WarehouseStrategyConfigDO::getIsUsed, true) + .orderByDesc(WarehouseStrategyConfigDO::getId)); + } + default PageResult selectPage(WarehouseStrategyConfigPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(WarehouseStrategyConfigDO::getStrategyCode, reqVO.getStrategyCode()) diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/manage/DecisionManage.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/manage/DecisionManage.java new file mode 100644 index 00000000..7cfc0477 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/manage/DecisionManage.java @@ -0,0 +1,72 @@ +package cn.code.nl.module.wms.manage; + +import cn.code.nl.framework.common.exception.ServiceException; +import cn.code.nl.module.wms.dal.dataobject.warehousestrategyconfig.WarehouseStrategyConfigDO; +import cn.code.nl.module.wms.dal.mysql.warehousestrategyconfig.WarehouseStrategyConfigMapper; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.jspecify.annotations.NonNull; +import org.springframework.beans.factory.BeanNameAware; +import org.springframework.beans.factory.InitializingBean; + +import java.util.List; + +/** + * 仓储策略决策器抽象基类 + *

+ * 子类通过 {@code @Service("策略编码")} 注册为 Spring Bean, + * 启动时根据 Bean 名称自动从数据库加载对应的策略配置。 + * + * @param 货位/库存数据类型 + * @param

决策参数类型 + * @Author: liyongde + * @Date: 2026/7/18 11:03 + */ +@Slf4j +public abstract class DecisionManage implements InitializingBean, BeanNameAware { + + /** + * 当前策略的数据库配置,子类通过此字段读取策略参数 + */ + public WarehouseStrategyConfigDO strategyConfig; + + /** + * Spring Bean 名称,即策略编码,对应 {@link WarehouseStrategyConfigDO#getStrategyCode()} + */ + private String beanName; + + @Resource + private WarehouseStrategyConfigMapper warehouseStrategyConfigMapper; + + /** + * 策略执行入口,由子类实现具体的货位分配逻辑 + * + * @param list 候选货位/库存列表 + * @param param 决策参数(物料信息、出入库类型等) + * @return 筛选/排序后的货位/库存列表 + */ + public abstract List handler(List list, P param); + + @Override + public void setBeanName(@NonNull String name) { + this.beanName = name; + } + + /** + * Spring Bean 初始化时自动加载策略配置 + *

+ * 通过 BeanNameAware 获取策略编码,从数据库查询对应的策略配置记录。 + * 若数据库中无对应记录则抛出异常阻止启动,避免运行时才发现配置缺失。 + */ + @Override + public void afterPropertiesSet() { + this.strategyConfig = warehouseStrategyConfigMapper.selectOne( + WarehouseStrategyConfigDO::getStrategyCode, beanName); + if (this.strategyConfig == null) { + log.error("策略 [{}] 初始化失败:数据库中未找到对应的策略配置记录", beanName); + throw new ServiceException(500, "启动失败:当前策略 " + beanName + " 没有实例信息"); + } + log.info("策略 [{}] 初始化成功,策略名称:{}", beanName, strategyConfig.getStrategyName()); + } + +} diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/manage/dto/DemoDTO.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/manage/dto/DemoDTO.java new file mode 100644 index 00000000..566a1807 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/manage/dto/DemoDTO.java @@ -0,0 +1,13 @@ +package cn.code.nl.module.wms.manage.dto; + +import lombok.Data; + +/** + * + * @Author: liyongde + * @Date: 2026/7/18 13:41 + */ +@Data +public class DemoDTO { + private String id; +} diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/manage/handle/AlleyAveRuleHandler.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/manage/handle/AlleyAveRuleHandler.java new file mode 100644 index 00000000..18d9f2c3 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/manage/handle/AlleyAveRuleHandler.java @@ -0,0 +1,23 @@ +package cn.code.nl.module.wms.manage.handle; + +import cn.code.nl.module.wms.manage.DecisionManage; +import cn.code.nl.module.wms.manage.dto.DemoDTO; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * + * @Author: liyongde + * @Date: 2026/7/18 13:39 + */ +@Slf4j +@Service("alleyAve") +public class AlleyAveRuleHandler extends DecisionManage { + @Override + public List handler(List list, JSONObject param) { + return List.of(); + } +} diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigService.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigService.java index cf3313b5..e720d0c6 100644 --- a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigService.java +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigService.java @@ -59,4 +59,11 @@ public interface WarehouseStrategyConfigService { */ PageResult getWarehouseStrategyConfigPage(WarehouseStrategyConfigPageReqVO pageReqVO); + /** + * 获得仓储策略配置列表(仅启用的) + * + * @return 仓储策略配置列表 + */ + List getWarehouseStrategyConfigList(); + } \ No newline at end of file diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigServiceImpl.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigServiceImpl.java index 077457b0..4d3bf1a8 100644 --- a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigServiceImpl.java +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/warehousestrategyconfig/WarehouseStrategyConfigServiceImpl.java @@ -77,4 +77,9 @@ public class WarehouseStrategyConfigServiceImpl implements WarehouseStrategyConf return warehouseStrategyConfigMapper.selectPage(pageReqVO); } + @Override + public List getWarehouseStrategyConfigList() { + return warehouseStrategyConfigMapper.selectList(); + } + } diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategy/index.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategy/index.ts index c75c82c3..160512d6 100644 --- a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategy/index.ts +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategy/index.ts @@ -1,58 +1,58 @@ -import type { PageParam, PageResult } from '@vben/request'; -import type { Dayjs } from 'dayjs'; - -import { requestClient } from '#/api/request'; - -export namespace WmsWarehouseStrategyApi { - /** 出入库策略信息 */ - export interface WarehouseStrategy { - sectionCode?: string; // 库区编码 - strategy?: string; // 规则 - strategyType: string; // 策略类型 - description: string; // 描述 - } -} - -/** 查询出入库策略分页 */ -export function getWarehouseStrategyPage(params: PageParam) { - return requestClient.get>( - '/wms/warehouse-strategy/page', - { params }, - ); -} - -/** 查询出入库策略详情 */ -export function getWarehouseStrategy(id: number) { - return requestClient.get( - `/wms/warehouse-strategy/get?id=${id}`, - ); -} - -/** 新增出入库策略 */ -export function createWarehouseStrategy(data: WmsWarehouseStrategyApi.WarehouseStrategy) { - return requestClient.post('/wms/warehouse-strategy/create', data); -} - -/** 修改出入库策略 */ -export function updateWarehouseStrategy(data: WmsWarehouseStrategyApi.WarehouseStrategy) { - return requestClient.put('/wms/warehouse-strategy/update', data); -} - -/** 删除出入库策略 */ -export function deleteWarehouseStrategy(id: number) { - return requestClient.delete(`/wms/warehouse-strategy/delete?id=${id}`); -} - -/** 批量删除出入库策略 */ -export function deleteWarehouseStrategyList(ids: number[]) { - return requestClient.delete( - `/wms/warehouse-strategy/delete-list?ids=${ids.join(',')}`, - ); -} - -/** 导出出入库策略 */ -export function exportWarehouseStrategy(params: any) { - return requestClient.download('/wms/warehouse-strategy/export-excel', { params }); -} - - \ No newline at end of file +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace WmsWarehouseStrategyApi { + /** 出入库策略信息 */ + export interface WarehouseStrategy { + id?: number; + sectionCode?: string; // 库区编码 + strategy?: string; // 规则 + strategyType: string; // 策略类型 + description: string; // 描述 + } +} + +/** 查询出入库策略分页 */ +export function getWarehouseStrategyPage(params: PageParam) { + return requestClient.get>( + '/wms/warehouse-strategy/page', + { params }, + ); +} + +/** 查询出入库策略详情 */ +export function getWarehouseStrategy(id: number) { + return requestClient.get( + `/wms/warehouse-strategy/get?id=${id}`, + ); +} + +/** 新增出入库策略 */ +export function createWarehouseStrategy(data: WmsWarehouseStrategyApi.WarehouseStrategy) { + return requestClient.post('/wms/warehouse-strategy/create', data); +} + +/** 修改出入库策略 */ +export function updateWarehouseStrategy(data: WmsWarehouseStrategyApi.WarehouseStrategy) { + return requestClient.put('/wms/warehouse-strategy/update', data); +} + +/** 删除出入库策略 */ +export function deleteWarehouseStrategy(id: number) { + return requestClient.delete(`/wms/warehouse-strategy/delete?id=${id}`); +} + +/** 批量删除出入库策略 */ +export function deleteWarehouseStrategyList(ids: number[]) { + return requestClient.delete( + `/wms/warehouse-strategy/delete-list?ids=${ids.join(',')}`, + ); +} + +/** 导出出入库策略 */ +export function exportWarehouseStrategy(params: any) { + return requestClient.download('/wms/warehouse-strategy/export-excel', { params }); +} + + diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategyconfig/index.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategyconfig/index.ts index e37cbd7a..b278044a 100644 --- a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategyconfig/index.ts +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/warehousestrategyconfig/index.ts @@ -16,6 +16,12 @@ export namespace WmsWarehouseStrategyConfigApi { ban: boolean; // 禁止操作 formData: string; // 限定参数 } + + /** 仓储策略配置精简信息 */ + export interface WarehouseStrategyConfigSimple { + strategyCode: string; // 策略编码 + strategyName: string; // 策略名称 + } } /** 查询仓储策略配置分页 */ @@ -60,4 +66,11 @@ export function exportWarehouseStrategyConfig(params: any) { return requestClient.download('/wms/warehouse-strategy-config/export-excel', { params }); } +/** 查询仓储策略配置精简列表 */ +export function getWarehouseStrategyConfigSimpleList() { + return requestClient.get( + '/wms/warehouse-strategy-config/simple-list', + ); +} + diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/data.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/data.ts index 82918979..95f4f18f 100644 --- a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/data.ts +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/warehousestrategy/data.ts @@ -2,10 +2,18 @@ import type { VbenFormSchema } from '#/adapter/form'; import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { WmsWarehouseStrategyApi } from '#/api/wms/warehousestrategy'; +import { ref } from 'vue'; + import { getRangePickerDefaultProps } from '#/utils'; import {getDictOptions} from "@vben/hooks"; import {DICT_TYPE} from "@vben/constants"; +/** 策略配置选项(供表单多选和列表显示使用) */ +export const strategyConfigOptions = ref<{ label: string; value: string }[]>([]); + +/** 策略编码 -> 名称的映射 */ +export const strategyNameMap = ref>({}); + /** 新增/修改的表单 */ export function useFormSchema(): VbenFormSchema[] { return [ @@ -39,9 +47,11 @@ export function useFormSchema(): VbenFormSchema[] { fieldName: 'strategy', label: '规则', rules: 'required', - component: 'Input', + component: 'Select', componentProps: { - placeholder: '请输入规则', + mode: 'multiple', + options: strategyConfigOptions, + placeholder: '请选择规则', }, }, { @@ -110,7 +120,8 @@ export function useGridColumns(): VxeTableGridOptions strategyNameMap.value[code] || code).join('、'); + } catch { + return strategy; + } +} + +onMounted(async () => { + if (strategyConfigOptions.value.length === 0) { + try { + const configList = await getWarehouseStrategyConfigSimpleList(); + strategyConfigOptions.value = configList.map((item) => ({ + label: `${item.strategyName}(${item.strategyCode})`, + value: item.strategyCode, + })); + const map: Record = {}; + configList.forEach((item) => { + map[item.strategyCode] = item.strategyName; + }); + strategyNameMap.value = map; + } catch { + // ignore + } + } +}); + /** 刷新表格 */ function handleRefresh() { gridApi.query(); @@ -157,6 +189,9 @@ const [Grid, gridApi] = useVbenVxeGrid({ ]" /> +