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.tags.Tag;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.media.Content;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PutMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.util.List;
|
|
@RestController
|
@RequestMapping("/productionOrder")
|
@Tag(name = "生产订单")
|
@RequiredArgsConstructor
|
public class ProductionOrderController {
|
|
private final ProductionOrderService productionOrderService;
|
|
@GetMapping("/page")
|
@Operation(summary = "分页查询")
|
public R<IPage<ProductionOrderVo>> page(ProductionOrderDto dto, Page<ProductionOrderDto> page) {
|
return R.ok(productionOrderService.pageProductionOrder(page, dto));
|
}
|
|
@GetMapping("/list")
|
@Operation(summary = "生产订单列表")
|
public R<List<ProductionOrderVo>> list(ProductionOrderDto dto) {
|
return R.ok(productionOrderService.listProductionOrder(dto));
|
}
|
|
@GetMapping("/{id}")
|
@Operation(summary = "生产订单详情")
|
public R<ProductionOrderVo> getInfo(@PathVariable("id") Long id) {
|
return R.ok(productionOrderService.getProductionOrderInfo(id));
|
}
|
|
@PostMapping
|
@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<Boolean> add(@RequestBody ProductionOrder productionOrder) {
|
return R.ok(productionOrderService.saveProductionOrder(productionOrder));
|
}
|
|
@PutMapping
|
@Operation(summary = "修改生产订单")
|
public R<Boolean> edit(@RequestBody ProductionOrder productionOrder) {
|
return R.ok(productionOrderService.saveProductionOrder(productionOrder));
|
}
|
|
@PostMapping("/syncSnapshot/{id}")
|
@Operation(summary = "同步生产订单工艺/BOM快照")
|
public R<Integer> syncSnapshot(@PathVariable("id") Long id) {
|
return R.ok(productionOrderService.syncProductionOrderSnapshot(id));
|
}
|
|
@DeleteMapping("/delete")
|
@Operation(summary = "删除生产订单")
|
public R<Boolean> remove(@RequestBody List<Long> ids) {
|
return R.ok(productionOrderService.removeProductionOrder(ids));
|
}
|
}
|