package cn.iocoder.yudao.module.mes.controller.admin.wm.sorting; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.wm.sorting.vo.MesWmSortPendingNoticeRespVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.sorting.vo.MesWmSortProductionRequestRespVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.sorting.vo.MesWmSortTaskFinishReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.sorting.vo.MesWmSortTaskPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.sorting.vo.MesWmSortTaskRespVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.sorting.vo.MesWmSortTaskScanReqVO; import cn.iocoder.yudao.module.mes.service.wm.sorting.MesWmSortTaskService; 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 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.iocoder.yudao.framework.common.pojo.CommonResult.success; /** * 管理后台 - MES 分拣任务 * * 需求 5.3:订单分拣 —— 按发货通知单生成分拣任务、扫码校验分拣、完成后触发配送 */ @Tag(name = "管理后台 - MES 分拣配送") @RestController @RequestMapping("/mes/wm/sort-task") @Validated public class MesWmSortTaskController { @Resource private MesWmSortTaskService sortTaskService; @PostMapping("/create-from-notice") @Operation(summary = "按发货通知单生成分拣任务") @Parameter(name = "noticeId", description = "发货通知单编号", required = true) @PreAuthorize("@ss.hasPermission('mes:wm-sort-task:create')") public CommonResult createSortTaskFromNotice(@RequestParam("noticeId") Long noticeId) { return success(sortTaskService.createSortTaskFromNotice(noticeId)); } @PostMapping("/scan") @Operation(summary = "扫码分拣:校验条码并累加分拣数量") @PreAuthorize("@ss.hasPermission('mes:wm-sort-task:update')") public CommonResult scanLine(@Valid @RequestBody MesWmSortTaskScanReqVO scanReqVO) { sortTaskService.scanLine(scanReqVO); return success(true); } @PutMapping("/finish") @Operation(summary = "完成分拣:校验扫码完整后触发配送出库") @PreAuthorize("@ss.hasPermission('mes:wm-sort-task:update')") public CommonResult finishSortTask(@Valid @RequestBody MesWmSortTaskFinishReqVO finishReqVO) { sortTaskService.finishSortTask(finishReqVO.getId(), finishReqVO.getCarrier(), finishReqVO.getShippingNumber(), finishReqVO.getRemark()); return success(true); } @PutMapping("/cancel") @Operation(summary = "取消分拣任务") @Parameter(name = "id", description = "分拣任务编号", required = true) @PreAuthorize("@ss.hasPermission('mes:wm-sort-task:update')") public CommonResult cancelSortTask(@RequestParam("id") Long id) { sortTaskService.cancelSortTask(id); return success(true); } @DeleteMapping("/delete") @Operation(summary = "删除分拣任务") @Parameter(name = "id", description = "分拣任务编号", required = true) @PreAuthorize("@ss.hasPermission('mes:wm-sort-task:delete')") public CommonResult deleteSortTask(@RequestParam("id") Long id) { sortTaskService.deleteSortTask(id); return success(true); } @PutMapping("/update-print-count") @Operation(summary = "记录打印次数") @Parameter(name = "id", description = "分拣任务编号", required = true) public CommonResult updatePrintCount(@RequestParam("id") Long id) { sortTaskService.updatePrintCount(id); return success(true); } @PostMapping("/submit-production-request") @Operation(summary = "提交生产申请:为分拣任务涉及的销售订单明细补建生产申请") @Parameter(name = "id", description = "分拣任务编号", required = true) @PreAuthorize("@ss.hasPermission('mes:wm-sort-task:update')") public CommonResult submitProductionRequest(@RequestParam("id") Long id) { return success(sortTaskService.submitProductionRequest(id)); } @GetMapping("/get") @Operation(summary = "获得分拣任务(含明细与货位指引)") @Parameter(name = "id", description = "分拣任务编号", required = true) public CommonResult getSortTask(@RequestParam("id") Long id) { return success(sortTaskService.getSortTask(id)); } @GetMapping("/page") @Operation(summary = "获得分拣任务分页") @PreAuthorize("@ss.hasPermission('mes:wm-sort-task:query')") public CommonResult> getSortTaskPage( @Valid MesWmSortTaskPageReqVO pageReqVO) { return success(sortTaskService.getSortTaskPage(pageReqVO)); } @GetMapping("/pending-notice-list") @Operation(summary = "获得可生成分拣任务的发货通知单(待出库且尚无分拣任务)") @Parameter(name = "noticeCode", description = "发货通知单号,模糊匹配") @PreAuthorize("@ss.hasPermission('mes:wm-sort-task:query')") public CommonResult> getPendingNoticeList( @RequestParam(value = "noticeCode", required = false) String noticeCode) { return success(sortTaskService.getPendingNoticeList(noticeCode)); } }