package com.ruoyi.production.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.R; import com.ruoyi.production.bean.dto.ProductionOrderDto; import com.ruoyi.production.bean.vo.ProductionOrderVo; import com.ruoyi.production.pojo.ProductionOrder; import com.ruoyi.production.service.ProductionOrderService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/productionOrder") @Tag(name = "生产订单") @RequiredArgsConstructor public class ProductionOrderController { private final ProductionOrderService productionOrderService; @GetMapping("/page") @Operation(summary = "分页查询") public R> page(ProductionOrderDto dto, Page page) { return R.ok(productionOrderService.pageProductionOrder(page, dto)); } @GetMapping("/list") @Operation(summary = "生产订单列表") public R> list(ProductionOrderDto dto) { return R.ok(productionOrderService.listProductionOrder(dto)); } @GetMapping("/{id}") @Operation(summary = "生产订单详情") public R getInfo(@PathVariable Long id) { return R.ok(productionOrderService.getProductionOrderInfo(id)); } @PostMapping("/addOrder") @Operation(summary = "新增生产订单", description = "新增下单只支持两种方式:1. 生产计划生成,传 productionPlanIds,系统自动汇总计划得到产品规格和数量;" + "2. 手动新增,必须传 productModelId 和 quantity。" + "technologyRoutingId 为空时会自动匹配该产品规格最新工艺路线,quantity 最终必须大于 0。") @io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, description = "前端友好提示:如果是生产计划生成,请传 productionPlanIds;" + "如果是手动新增,请至少填写 productModelId、quantity,且 quantity 必须大于 0。", content = @Content(schema = @Schema(implementation = ProductionOrder.class))) public R add(@RequestBody ProductionOrder productionOrder) { return R.ok(productionOrderService.saveProductionOrder(productionOrder)); } @PutMapping("/editOrder") @Operation(summary = "修改生产订单") public R edit(@RequestBody ProductionOrder productionOrder) { return R.ok(productionOrderService.saveProductionOrder(productionOrder)); } @Operation(summary = "绑定工艺路线") @PostMapping("/bindingRoute") public R bindingRoute(@RequestBody ProductionOrderDto productionOrderDto) { return R.ok(productionOrderService.bindingRoute(productionOrderDto)); } @PostMapping("/syncSnapshot/{id}") @Operation(summary = "同步生产订单工艺/BOM快照") public R syncSnapshot(@PathVariable Long id) { return R.ok(productionOrderService.syncProductionOrderSnapshot(id)); } @DeleteMapping("/delete") @Operation(summary = "删除生产订单") public R remove(@RequestBody List ids) { return R.ok(productionOrderService.removeProductionOrder(ids)); } }