diff --git a/nl-module-system/nl-module-system-api/src/main/java/cn/code/nl/module/system/enums/LogRecordConstants.java b/nl-module-system/nl-module-system-api/src/main/java/cn/code/nl/module/system/enums/LogRecordConstants.java index d2cc6d94..92daa953 100644 --- a/nl-module-system/nl-module-system-api/src/main/java/cn/code/nl/module/system/enums/LogRecordConstants.java +++ b/nl-module-system/nl-module-system-api/src/main/java/cn/code/nl/module/system/enums/LogRecordConstants.java @@ -30,4 +30,8 @@ public interface LogRecordConstants { String SYSTEM_ROLE_DELETE_SUB_TYPE = "删除角色"; String SYSTEM_ROLE_DELETE_SUCCESS = "删除了角色【{{#role.name}}】"; + // ======================= WMS_GROUP 组盘信息 ======================= + String WMS_GROUP_PLATE = "组盘信息"; + String WMS_GROUP_PLATE_UPDATE = "修改组盘信息"; + String WMS_GROUP_PLATE_SUCCESS = "{{#loginUserNickname}} 更新了组盘信息: {{#group.vehicleCode}}"; } diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/storagevehicleinfo/StorageVehicleInfoController.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/storagevehicleinfo/StorageVehicleInfoController.java index e252e130..cd8536dd 100644 --- a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/storagevehicleinfo/StorageVehicleInfoController.java +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/storagevehicleinfo/StorageVehicleInfoController.java @@ -45,6 +45,13 @@ public class StorageVehicleInfoController { return success(storageVehicleInfoService.createStorageVehicleInfo(createReqVO)); } + @PostMapping("/batch-create") + @Operation(summary = "批量生成载具信息") + @PreAuthorize("@ss.hasPermission('wms:storage-vehicle-info:create')") + public CommonResult> batchCreateStorageVehicleInfo(@Valid @RequestBody StorageVehicleInfoBatchCreateReqVO reqVO) { + return success(storageVehicleInfoService.batchCreateStorageVehicleInfo(reqVO)); + } + @PutMapping("/update") @Operation(summary = "更新载具信息") @PreAuthorize("@ss.hasPermission('wms:storage-vehicle-info:update')") diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/storagevehicleinfo/vo/StorageVehicleInfoBatchCreateReqVO.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/storagevehicleinfo/vo/StorageVehicleInfoBatchCreateReqVO.java new file mode 100644 index 00000000..58bcf6b3 --- /dev/null +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/storagevehicleinfo/vo/StorageVehicleInfoBatchCreateReqVO.java @@ -0,0 +1,26 @@ +package cn.code.nl.module.wms.controller.admin.storagevehicleinfo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Min; +import lombok.Data; + +@Schema(description = "管理后台 - 载具信息批量生成 Request VO") +@Data +public class StorageVehicleInfoBatchCreateReqVO { + + @Schema(description = "载具类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "MTP") + @NotEmpty(message = "载具类型不能为空") + private String storageVehicleType; + + @Schema(description = "载具类型中文名", requiredMode = Schema.RequiredMode.REQUIRED, example = "木托盘") + @NotEmpty(message = "载具类型中文名不能为空") + private String storageVehicleTypeLabel; + + @Schema(description = "生成数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "5") + @NotNull(message = "生成数量不能为空") + @Min(value = 1, message = "生成数量至少为1") + private Integer count; + +} diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/groupplate/GroupPlateServiceImpl.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/groupplate/GroupPlateServiceImpl.java index 1342c681..88fa1077 100644 --- a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/groupplate/GroupPlateServiceImpl.java +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/groupplate/GroupPlateServiceImpl.java @@ -2,10 +2,13 @@ package cn.code.nl.module.wms.service.groupplate; import cn.code.nl.framework.common.pojo.PageResult; import cn.code.nl.framework.common.util.object.BeanUtils; +import cn.code.nl.framework.security.core.util.SecurityFrameworkUtils; import cn.code.nl.module.wms.controller.admin.groupplate.vo.GroupPlatePageReqVO; import cn.code.nl.module.wms.controller.admin.groupplate.vo.GroupPlateSaveReqVO; import cn.code.nl.module.wms.dal.dataobject.groupplate.GroupPlateDO; import cn.code.nl.module.wms.dal.mysql.groupplate.GroupPlateMapper; +import com.mzt.logapi.context.LogRecordContext; +import com.mzt.logapi.starter.annotation.LogRecord; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -13,6 +16,7 @@ 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.system.enums.LogRecordConstants.*; import static cn.code.nl.module.wms.enums.ErrorCodeConstants.GROUP_PLATE_NOT_EXISTS; /** @@ -38,12 +42,16 @@ public class GroupPlateServiceImpl implements GroupPlateService { } @Override + @LogRecord(type = WMS_GROUP_PLATE, subType = WMS_GROUP_PLATE_UPDATE, bizNo = "{{#updateReqVO.groupId}}", + success = WMS_GROUP_PLATE_SUCCESS) public void updateGroupPlate(GroupPlateSaveReqVO updateReqVO) { // 校验存在 validateGroupPlateExists(updateReqVO.getGroupId()); // 更新 GroupPlateDO updateObj = BeanUtils.toBean(updateReqVO, GroupPlateDO.class); groupPlateMapper.updateById(updateObj); + LogRecordContext.putVariable("loginUserNickname", SecurityFrameworkUtils.getLoginUserNickname()); + LogRecordContext.putVariable("group", updateObj); } @Override diff --git a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/storagevehicleinfo/StorageVehicleInfoService.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/storagevehicleinfo/StorageVehicleInfoService.java index 23aefcbc..6912abaa 100644 --- a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/storagevehicleinfo/StorageVehicleInfoService.java +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/storagevehicleinfo/StorageVehicleInfoService.java @@ -6,6 +6,7 @@ import cn.code.nl.module.wms.controller.admin.storagevehicleinfo.vo.*; import cn.code.nl.module.wms.dal.dataobject.storagevehicleinfo.StorageVehicleInfoDO; import cn.code.nl.framework.common.pojo.PageResult; import cn.code.nl.framework.common.pojo.PageParam; +import cn.code.nl.framework.common.pojo.CommonResult; /** * 载具信息 Service 接口 @@ -59,4 +60,12 @@ public interface StorageVehicleInfoService { */ PageResult getStorageVehicleInfoPage(StorageVehicleInfoPageReqVO pageReqVO); + /** + * 批量生成载具信息 + * + * @param reqVO 批量生成请求 + * @return 生成的载具ID列表 + */ + List batchCreateStorageVehicleInfo(StorageVehicleInfoBatchCreateReqVO reqVO); + } \ 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/storagevehicleinfo/StorageVehicleInfoServiceImpl.java b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/storagevehicleinfo/StorageVehicleInfoServiceImpl.java index 3f3b7d26..b7bbac83 100644 --- a/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/storagevehicleinfo/StorageVehicleInfoServiceImpl.java +++ b/nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/storagevehicleinfo/StorageVehicleInfoServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.regex.*; import cn.code.nl.module.wms.controller.admin.storagevehicleinfo.vo.*; import cn.code.nl.module.wms.dal.dataobject.storagevehicleinfo.StorageVehicleInfoDO; import cn.code.nl.framework.common.pojo.PageResult; @@ -52,6 +53,33 @@ public class StorageVehicleInfoServiceImpl implements StorageVehicleInfoService return storageVehicleInfo.getStorageVehicleId(); } + @Override + @Transactional(rollbackFor = Exception.class) + public List batchCreateStorageVehicleInfo(StorageVehicleInfoBatchCreateReqVO reqVO) { + List ids = new ArrayList<>(); + // 提取编码中数字部分的正则 + Pattern numPattern = Pattern.compile("\\d+"); + for (int i = 0; i < reqVO.getCount(); i++) { + CodeGenerateReqDTO genReq = new CodeGenerateReqDTO(); + genReq.setRuleCode(reqVO.getStorageVehicleType() + "_CODE"); + CommonResult result = codeGenApi.generate(genReq); + String code = result.getData(); + // 提取编码中的数字部分 + String numSuffix = ""; + Matcher matcher = numPattern.matcher(code); + if (matcher.find()) { + numSuffix = matcher.group(); + } + StorageVehicleInfoDO info = new StorageVehicleInfoDO(); + info.setStorageVehicleCode(code); + info.setStorageVehicleName(reqVO.getStorageVehicleTypeLabel() + numSuffix); + info.setStorageVehicleType(reqVO.getStorageVehicleType()); + storageVehicleInfoMapper.insert(info); + ids.add(info.getStorageVehicleId()); + } + return ids; + } + @Override public void updateStorageVehicleInfo(StorageVehicleInfoSaveReqVO updateReqVO) { // 校验存在 diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/storagevehicleinfo/index.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/storagevehicleinfo/index.ts index 86e0db08..4203b3e7 100644 --- a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/storagevehicleinfo/index.ts +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/storagevehicleinfo/index.ts @@ -59,6 +59,18 @@ export function deleteStorageVehicleInfoList(ids: number[]) { ); } +/** 批量生成载具信息 */ +export interface BatchCreateStorageVehicleInfoReqVO { + storageVehicleType: string; + storageVehicleTypeLabel: string; + count: number; +} + +/** 批量生成载具信息 */ +export function batchCreateStorageVehicleInfo(data: BatchCreateStorageVehicleInfoReqVO) { + return requestClient.post('/wms/storage-vehicle-info/batch-create', data); +} + /** 导出载具信息 */ export function exportStorageVehicleInfo(params: any) { return requestClient.download('/wms/storage-vehicle-info/export-excel', { params }); diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/storagevehicleinfo/data.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/storagevehicleinfo/data.ts index 062790e5..4669b6d9 100644 --- a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/storagevehicleinfo/data.ts +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/storagevehicleinfo/data.ts @@ -269,16 +269,16 @@ export function useGridColumns(): VxeTableGridOptions +