package com.ruoyi.quality.controller; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.R; import com.ruoyi.quality.dto.QualityTraceBatchOptionVo; import com.ruoyi.quality.dto.QualityTraceForwardExportVo; import com.ruoyi.quality.dto.QualityTraceForwardVo; import com.ruoyi.quality.dto.QualityTraceReverseExportVo; import com.ruoyi.quality.dto.QualityTraceReverseVo; import com.ruoyi.quality.service.QualityTraceService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; 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; /** * 生产质量追溯(批次链路) */ @RestController @RequestMapping("/quality/trace") @RequiredArgsConstructor @Tag(name = "生产质量追溯") public class QualityTraceController { private final QualityTraceService qualityTraceService; @GetMapping("/forward") @Operation(summary = "正向追溯:成品批号→订单/工序/投入/领料批次/检验/出库流向") @Log(title = "质量追溯正向查询", businessType = BusinessType.OTHER) public R forward(@RequestParam String batchNo) { return R.ok(qualityTraceService.forward(batchNo)); } @GetMapping("/batchOptions") @Operation(summary = "批号候选:type=finished成品批号/material原料批号") public R> batchOptions(@RequestParam(required = false, defaultValue = "finished") String type, @RequestParam(required = false) String keyword, @RequestParam(required = false, defaultValue = "50") Integer limit) { return R.ok(qualityTraceService.batchOptions(type, keyword, limit)); } @GetMapping("/reverse") @Operation(summary = "反向追溯:原料批号→采购来源/使用订单/产出成品批号") @Log(title = "质量追溯反向查询", businessType = BusinessType.OTHER) public R reverse(@RequestParam String batchNo) { return R.ok(qualityTraceService.reverse(batchNo)); } @GetMapping("/forward/export") @Operation(summary = "正向追溯导出") @Log(title = "质量追溯正向导出", businessType = BusinessType.EXPORT) public void forwardExport(HttpServletResponse response, @RequestParam String batchNo) { List list = qualityTraceService.forwardExportRows(batchNo); ExcelUtil util = new ExcelUtil<>(QualityTraceForwardExportVo.class); util.exportExcel(response, list, "成品批次追溯"); } @GetMapping("/reverse/export") @Operation(summary = "反向追溯导出") @Log(title = "质量追溯反向导出", businessType = BusinessType.EXPORT) public void reverseExport(HttpServletResponse response, @RequestParam String batchNo) { List list = qualityTraceService.reverseExportRows(batchNo); ExcelUtil util = new ExcelUtil<>(QualityTraceReverseExportVo.class); util.exportExcel(response, list, "原料批次流向追溯"); } }