package com.ruoyi.outsourcing.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.outsourcing.dto.OutsourcingOrderDto; import com.ruoyi.outsourcing.pojo.OutsourcingOrder; import com.ruoyi.outsourcing.service.IOutsourcingOrderService; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.service.StockInventoryService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * 委外订单 Controller */ @RestController @RequestMapping("/outsourcing/order") @AllArgsConstructor @Tag(name = "委外订单") public class OutsourcingOrderController extends BaseController { private final IOutsourcingOrderService outsourcingOrderService; private final StockInventoryService stockInventoryService; /** * 委外订单列表 */ @Operation(summary = "委外订单列表") @GetMapping("/list") public TableDataInfo list(OutsourcingOrderDto dto) { startPage(); List list = outsourcingOrderService.selectOrderList(dto); return getDataTable(list); } /** * 委外订单详情(含产品明细) */ @Operation(summary = "委外订单详情") @GetMapping("/getById") public AjaxResult getById(@RequestParam Long id) { return AjaxResult.success(outsourcingOrderService.getDetail(id)); } /** * 新增委外订单(草稿) */ @Operation(summary = "新增委外订单") @Log(title = "委外订单", businessType = BusinessType.INSERT) @PostMapping("/add") public AjaxResult add(@RequestBody OutsourcingOrderDto dto) { return AjaxResult.success(outsourcingOrderService.saveOrder(dto)); } /** * 修改委外订单,仅草稿状态允许 */ @Operation(summary = "修改委外订单") @Log(title = "委外订单", businessType = BusinessType.UPDATE) @PostMapping("/edit") public AjaxResult edit(@RequestBody OutsourcingOrderDto dto) { return toAjax(outsourcingOrderService.updateOrder(dto)); } /** * 删除委外订单,仅草稿状态允许 */ @Operation(summary = "删除委外订单") @Log(title = "委外订单", businessType = BusinessType.DELETE) @DeleteMapping("/delete") public AjaxResult delete(@RequestBody Long[] ids) { return toAjax(outsourcingOrderService.deleteOrders(ids == null ? List.of() : List.of(ids))); } /** * 提交委外订单:草稿 -> 已确认 */ @Operation(summary = "提交委外订单") @Log(title = "委外订单提交", businessType = BusinessType.OTHER) @PostMapping("/submit") public AjaxResult submit(@RequestParam Long id) { return toAjax(outsourcingOrderService.submit(id)); } /** * 完成委外订单:已确认 -> 已完成 */ @Operation(summary = "完成委外订单") @Log(title = "委外订单完成", businessType = BusinessType.OTHER) @PostMapping("/complete") public AjaxResult complete(@RequestParam Long id) { return toAjax(outsourcingOrderService.complete(id)); } /** * 作废委外订单:草稿/已确认 -> 已作废 */ @Operation(summary = "作废委外订单") @Log(title = "委外订单作废", businessType = BusinessType.OTHER) @PostMapping("/cancel") public AjaxResult cancel(@RequestParam Long id, @RequestParam(required = false) String cancelReason) { return toAjax(outsourcingOrderService.cancel(id, cancelReason)); } /** * 委外订单导出 */ @Operation(summary = "委外订单导出") @Log(title = "委外订单", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, OutsourcingOrderDto dto) { outsourcingOrderService.exportOrders(response, dto); } /** * 报废品选料分页(合格库存,只读,不占用、不回写库存) */ @Operation(summary = "报废品选料分页") @GetMapping("/scrapStockPage") public AjaxResult scrapStockPage(Page page, StockInventoryDto dto) { IPage result = stockInventoryService.pageScrapStock(page, dto); return AjaxResult.success(result); } }