6 天以前 1e123568c2f561013f5636e45dc0db30b17a3517
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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<QualityTraceForwardVo> forward(@RequestParam String batchNo) {
        return R.ok(qualityTraceService.forward(batchNo));
    }
 
    @GetMapping("/batchOptions")
    @Operation(summary = "批号候选:type=finished成品批号/material原料批号")
    public R<List<QualityTraceBatchOptionVo>> 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<QualityTraceReverseVo> 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<QualityTraceForwardExportVo> list = qualityTraceService.forwardExportRows(batchNo);
        ExcelUtil<QualityTraceForwardExportVo> 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<QualityTraceReverseExportVo> list = qualityTraceService.reverseExportRows(batchNo);
        ExcelUtil<QualityTraceReverseExportVo> util = new ExcelUtil<>(QualityTraceReverseExportVo.class);
        util.exportExcel(response, list, "原料批次流向追溯");
    }
}