From 961219ecf6e73f4e458b26d8a32e4d669bef3112 Mon Sep 17 00:00:00 2001 From: zhouz <> Date: Fri, 14 Aug 2026 15:10:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0LMS=E6=97=A5=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E7=AE=A1=E7=90=86=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/dailyplan/DailyPlanController.java | 201 +++++++++++++++ .../src/api/lms/dailyplan/index.ts | 233 ++++++++++++++++++ 2 files changed, 434 insertions(+) create mode 100644 nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/dailyplan/DailyPlanController.java create mode 100644 nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/lms/dailyplan/index.ts diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/dailyplan/DailyPlanController.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/dailyplan/DailyPlanController.java new file mode 100644 index 00000000..25c0d83a --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/dailyplan/DailyPlanController.java @@ -0,0 +1,201 @@ +package cn.code.nl.module.lms.controller.admin.dailyplan; + +import cn.code.nl.framework.common.pojo.CommonResult; +import cn.code.nl.framework.common.pojo.PageResult; +import cn.code.nl.module.lms.controller.admin.dailyplan.vo.*; +import cn.code.nl.module.lms.service.dailyplan.DailyPlanService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import org.dromara.core.trans.anno.TransMethodResult; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +import static cn.code.nl.framework.common.pojo.CommonResult.success; + +/** 管理后台 - LMS 日计划。 */ +@Tag(name = "管理后台 - LMS 日计划") +@RestController +@RequestMapping("/lms/daily-plan") +@Validated +public class DailyPlanController { + + @Resource + private DailyPlanService dailyPlanService; + + @GetMapping("/managementPage") + @Operation(summary = "获得日计划管理分页") + @TransMethodResult + @PreAuthorize("@ss.hasPermission('lms:daily-plan:query')") + public CommonResult> getManagementPage(@Valid DailyPlanPageReqVO reqVO) { + return success(dailyPlanService.getManagementPage(reqVO)); + } + + @GetMapping("/workPage") + @Operation(summary = "获得日计划作业分页") + @TransMethodResult + @PreAuthorize("@ss.hasPermission('lms:daily-plan:query')") + public CommonResult> getWorkPage(@Valid DailyPlanWorkPageReqVO reqVO) { + return success(dailyPlanService.getWorkPage(reqVO)); + } + + @GetMapping("/get") + @Operation(summary = "获得日计划详情") + @Parameter(name = "id", description = "日计划标识", required = true) + @TransMethodResult + @PreAuthorize("@ss.hasPermission('lms:daily-plan:query')") + public CommonResult getDailyPlan(@RequestParam("id") @NotNull Long id) { + return success(dailyPlanService.getDailyPlan(id)); + } + + @GetMapping("/operationLogList") + @Operation(summary = "获得日计划操作日志") + @Parameter(name = "id", description = "日计划标识", required = true) + @TransMethodResult + @PreAuthorize("@ss.hasPermission('lms:daily-plan:query')") + public CommonResult> getOperationLogList( + @RequestParam("id") @NotNull Long id) { + return success(dailyPlanService.getOperationLogs(id)); + } + + @GetMapping("/getStrategies") + @Operation(summary = "获得日计划调度策略") + @TransMethodResult + @PreAuthorize("@ss.hasPermission('lms:daily-plan:query')") + public CommonResult> getStrategies() { + return success(dailyPlanService.getStrategies()); + } + + @PostMapping("/create") + @Operation(summary = "人工创建日计划") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:create')") + public CommonResult createDailyPlan(@Valid @RequestBody DailyPlanCreateReqVO reqVO) { + return success(dailyPlanService.createManualPlan(reqVO)); + } + + @PutMapping("/update") + @Operation(summary = "修改人工日计划") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:update')") + public CommonResult updateDailyPlan(@Valid @RequestBody DailyPlanUpdateReqVO reqVO) { + dailyPlanService.updateManualPlan(reqVO); + return success(true); + } + + @PutMapping("/startOrder") + @Operation(summary = "开始日计划订单") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:start')") + public CommonResult startOrder(@Valid @RequestBody DailyPlanStartReqVO reqVO) { + dailyPlanService.startOrder(reqVO); + return success(true); + } + + @PutMapping("/appendQuantity") + @Operation(summary = "追加日计划订单数量") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:start')") + public CommonResult appendQuantity(@Valid @RequestBody DailyPlanAppendReqVO reqVO) { + dailyPlanService.appendQuantity(reqVO); + return success(true); + } + + @PutMapping("/startStocking") + @Operation(summary = "开始备货") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:operate')") + public CommonResult startStocking(@Valid @RequestBody DailyPlanVersionReqVO reqVO) { + dailyPlanService.startStocking(reqVO); + return success(true); + } + + @PutMapping("/cancelStocking") + @Operation(summary = "取消备货") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:operate')") + public CommonResult cancelStocking(@Valid @RequestBody DailyPlanReasonReqVO reqVO) { + dailyPlanService.cancelStocking(reqVO); + return success(true); + } + + @PutMapping("/restoreStocking") + @Operation(summary = "恢复备货") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:operate')") + public CommonResult restoreStocking(@Valid @RequestBody DailyPlanReasonReqVO reqVO) { + dailyPlanService.restoreStocking(reqVO); + return success(true); + } + + @PutMapping("/startSleeving") + @Operation(summary = "开始套管") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:operate')") + public CommonResult startSleeving(@Valid @RequestBody DailyPlanVersionReqVO reqVO) { + dailyPlanService.startSleeving(reqVO); + return success(true); + } + + @PutMapping("/cancelSleeving") + @Operation(summary = "取消套管") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:operate')") + public CommonResult cancelSleeving(@Valid @RequestBody DailyPlanReasonReqVO reqVO) { + dailyPlanService.cancelSleeving(reqVO); + return success(true); + } + + @PutMapping("/restoreSleeving") + @Operation(summary = "恢复套管") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:operate')") + public CommonResult restoreSleeving(@Valid @RequestBody DailyPlanReasonReqVO reqVO) { + dailyPlanService.restoreSleeving(reqVO); + return success(true); + } + + @PutMapping("/cancelOrder") + @Operation(summary = "取消日计划订单") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:operate')") + public CommonResult cancelOrder(@Valid @RequestBody DailyPlanReasonReqVO reqVO) { + dailyPlanService.cancelOrder(reqVO); + return success(true); + } + + @PutMapping("/restoreOrder") + @Operation(summary = "恢复日计划订单") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:operate')") + public CommonResult restoreOrder(@Valid @RequestBody DailyPlanReasonReqVO reqVO) { + dailyPlanService.restoreOrder(reqVO); + return success(true); + } + + @PutMapping("/finishOrder") + @Operation(summary = "结束日计划订单") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:operate')") + public CommonResult finishOrder(@Valid @RequestBody DailyPlanVersionReqVO reqVO) { + dailyPlanService.finishOrder(reqVO); + return success(true); + } + + @PutMapping("/updateSort") + @Operation(summary = "批量修改日计划排序") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:schedule')") + public CommonResult updateSort(@Valid @RequestBody DailyPlanSortUpdateReqVO reqVO) { + dailyPlanService.updateSort(reqVO); + return success(true); + } + + @PutMapping("/updateWeight") + @Operation(summary = "修改日计划调度权重") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:schedule')") + public CommonResult updateWeight(@Valid @RequestBody DailyPlanWeightUpdateReqVO reqVO) { + dailyPlanService.updateWeight(reqVO); + return success(true); + } + + @PutMapping("/updateStrategy") + @Operation(summary = "修改日计划调度策略") + @PreAuthorize("@ss.hasPermission('lms:daily-plan:strategy')") + public CommonResult updateStrategy(@Valid @RequestBody DailyPlanStrategyUpdateReqVO reqVO) { + dailyPlanService.updateStrategy(reqVO); + return success(true); + } +} diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/lms/dailyplan/index.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/lms/dailyplan/index.ts new file mode 100644 index 00000000..0ff9401e --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/lms/dailyplan/index.ts @@ -0,0 +1,233 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace LmsDailyPlanApi { + export interface DailyPlan { + appendQty: number; + createTime: string; + creator: string; + dailyPlanId: number; + erpOrderCode?: string; + manualOrderCode?: string; + materialCode: string; + materialId: number; + materialName: string; + materialSpec?: string; + orderEndTime?: string; + orderStartTime?: string; + orderStatus: number; + packingInfo?: string; + planCode: string; + planDate: string; + planQty: number; + previousOrderStatus?: number; + previousSleevingStatus?: number; + previousStockingStatus?: number; + sleevedQty: number; + sleevingCompleteTime?: string; + sleevingStartTime?: string; + sleevingStatus: number; + sortSeq: number; + sourceType: number; + stockedQty: number; + stockingCompleteTime?: string; + stockingStartTime?: string; + stockingStatus: number; + totalQty: number; + updateTime?: string; + updater?: string; + updaterName?: string; + version: number; + weight: number; + } + + export interface ManagementPageReq extends PageParam { + materialKeyword?: string; + orderStatus?: number; + planDateEnd?: string; + planDateStart?: string; + planOrOrderCode?: string; + sourceType?: number; + } + + export interface WorkPageReq extends PageParam { + materialKeyword?: string; + orderStatus?: number; + planOrOrderCode?: string; + } + + export interface CreateReq { + manualOrderCode?: string; + materialCode: string; + materialId: number; + materialName: string; + materialSpec?: string; + packingInfo?: string; + planDate: string; + planQty: number; + sortSeq: number; + weight: number; + } + + export interface UpdateReq extends CreateReq { + dailyPlanId: number; + version: number; + } + + export interface VersionReq { + id: number; + version: number; + } + + export interface StartReq extends VersionReq { + appendQty: number; + } + + export interface AppendReq extends VersionReq { + appendQty: number; + } + + export interface ReasonReq extends VersionReq { + reason: string; + } + + export interface SortUpdateReq { + items: Array<{ + id: number; + sortSeq: number; + version: number; + }>; + } + + export interface WeightUpdateReq extends VersionReq { + weight: number; + } + + export interface StrategyUpdateReq { + strategyMode: number; + strategyType: number; + version: number; + } + + export interface OperationLog { + afterValue?: string; + beforeValue?: string; + changeQty?: number; + dailyPlanId: number; + operationLogId: number; + operationReason?: string; + operationTarget: string; + operationTime: string; + operationType: string; + operator: string; + } + + export interface Strategy { + cursorDailyPlanId?: number; + strategyId: number; + strategyMode: number; + strategyType: number; + updateTime?: string; + updater?: string; + updaterName?: string; + version: number; + } +} + +export function getDailyPlanManagementPage(params: LmsDailyPlanApi.ManagementPageReq) { + return requestClient.get>( + '/lms/daily-plan/managementPage', + { params }, + ); +} + +export function getDailyPlanWorkPage(params: LmsDailyPlanApi.WorkPageReq) { + return requestClient.get>( + '/lms/daily-plan/workPage', + { params }, + ); +} + +export function getDailyPlan(id: number) { + return requestClient.get('/lms/daily-plan/get', { + params: { id }, + }); +} + +export function getDailyPlanOperationLogList(id: number) { + return requestClient.get( + '/lms/daily-plan/operationLogList', + { params: { id } }, + ); +} + +export function getDailyPlanStrategies() { + return requestClient.get( + '/lms/daily-plan/getStrategies', + ); +} + +export function createDailyPlan(data: LmsDailyPlanApi.CreateReq) { + return requestClient.post('/lms/daily-plan/create', data); +} + +export function updateDailyPlan(data: LmsDailyPlanApi.UpdateReq) { + return requestClient.put('/lms/daily-plan/update', data); +} + +export function startDailyPlanOrder(data: LmsDailyPlanApi.StartReq) { + return requestClient.put('/lms/daily-plan/startOrder', data); +} + +export function appendDailyPlanQuantity(data: LmsDailyPlanApi.AppendReq) { + return requestClient.put('/lms/daily-plan/appendQuantity', data); +} + +export function startDailyPlanStocking(data: LmsDailyPlanApi.VersionReq) { + return requestClient.put('/lms/daily-plan/startStocking', data); +} + +export function cancelDailyPlanStocking(data: LmsDailyPlanApi.ReasonReq) { + return requestClient.put('/lms/daily-plan/cancelStocking', data); +} + +export function restoreDailyPlanStocking(data: LmsDailyPlanApi.ReasonReq) { + return requestClient.put('/lms/daily-plan/restoreStocking', data); +} + +export function startDailyPlanSleeving(data: LmsDailyPlanApi.VersionReq) { + return requestClient.put('/lms/daily-plan/startSleeving', data); +} + +export function cancelDailyPlanSleeving(data: LmsDailyPlanApi.ReasonReq) { + return requestClient.put('/lms/daily-plan/cancelSleeving', data); +} + +export function restoreDailyPlanSleeving(data: LmsDailyPlanApi.ReasonReq) { + return requestClient.put('/lms/daily-plan/restoreSleeving', data); +} + +export function cancelDailyPlanOrder(data: LmsDailyPlanApi.ReasonReq) { + return requestClient.put('/lms/daily-plan/cancelOrder', data); +} + +export function restoreDailyPlanOrder(data: LmsDailyPlanApi.ReasonReq) { + return requestClient.put('/lms/daily-plan/restoreOrder', data); +} + +export function finishDailyPlanOrder(data: LmsDailyPlanApi.VersionReq) { + return requestClient.put('/lms/daily-plan/finishOrder', data); +} + +export function updateDailyPlanSort(data: LmsDailyPlanApi.SortUpdateReq) { + return requestClient.put('/lms/daily-plan/updateSort', data); +} + +export function updateDailyPlanWeight(data: LmsDailyPlanApi.WeightUpdateReq) { + return requestClient.put('/lms/daily-plan/updateWeight', data); +} + +export function updateDailyPlanStrategy(data: LmsDailyPlanApi.StrategyUpdateReq) { + return requestClient.put('/lms/daily-plan/updateStrategy', data); +}