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] =?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({ ]" /> +