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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package com.ruoyi.production.controller;
 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.bean.dto.ProductionProductMainDto;
import com.ruoyi.production.bean.vo.DeviceOutputStatVo;
import com.ruoyi.production.bean.vo.PieceWageSummaryVo;
import com.ruoyi.production.service.ProductionProductMainService;
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.format.annotation.DateTimeFormat;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
 
import java.time.LocalDate;
import java.util.List;
 
@RequestMapping("/productionProductMain")
@RestController
@Tag(name = "生产报工")
@AllArgsConstructor
public class ProductionProductMainController {
 
    private ProductionProductMainService productionProductMainService;
 
    /**
     * 报工查询
     * @param page
     * @param productionProductMainDto
     * @return
     */
    @GetMapping("/listPage")
    public R page(Page<ProductionProductMainDto> page, ProductionProductMainDto productionProductMainDto) {
        return R.ok(productionProductMainService.listPageProductionProductMainDto(page, productionProductMainDto));
    }
 
    @GetMapping("/page")
    @Operation(summary = "生产报工分页查询")
    public R pageProductionProductMain(Page<ProductionProductMainDto> page, ProductionProductMainDto productionProductMainDto) {
        return R.ok(productionProductMainService.pageProductionProductMain(page, productionProductMainDto));
    }
 
    @GetMapping("/{id}")
    @Operation(summary = "生产报工详情")
    public R getInfo(@PathVariable("id") Long id) {
        return R.ok(productionProductMainService.getProductionProductMainInfo(id));
    }
 
    /**
     * 报工新增更新
     * @param productionProductMainDto
     * @return
     */
    @PostMapping("/addProductMain")
    @PreAuthorize("@ss.hasPermi('productionProductMain:add')")
    public R addProductMain(@RequestBody ProductionProductMainDto productionProductMainDto) {
        return R.ok(productionProductMainService.addProductMain(productionProductMainDto));
    }
 
    @PostMapping
    @Operation(summary = "新增生产报工")
    public R add(@RequestBody ProductionProductMainDto productionProductMainDto) {
        return R.ok(productionProductMainService.saveProductionProductMain(productionProductMainDto));
    }
 
    @PutMapping
    @Operation(summary = "修改生产报工")
    public R edit(@RequestBody ProductionProductMainDto productionProductMainDto) {
        return R.ok(productionProductMainService.saveProductionProductMain(productionProductMainDto));
    }
 
    @Operation(summary = "删除报工")
    @DeleteMapping("/delete")
    public R delete(@RequestBody ProductionProductMainDto productionProductMainDto) {
        return R.ok(productionProductMainService.removeProductMain(productionProductMainDto.getId()));
    }
 
    @DeleteMapping("/{id}")
    @Operation(summary = "删除生产报工")
    public R remove(@PathVariable("id") Long id) {
        return R.ok(productionProductMainService.removeProductMain(id));
    }
 
 
    /**
     * 导出
     */
    @PostMapping("/export")
    public void export(HttpServletResponse response, ProductionProductMainDto productionProductMainDto) {
        List<ProductionProductMainDto> list;
        list = productionProductMainService.listPageProductionProductMainDto(new Page<>(1, -1), productionProductMainDto).getRecords();
        ExcelUtil<ProductionProductMainDto> util = new ExcelUtil<ProductionProductMainDto>(ProductionProductMainDto.class);
        util.exportExcel(response, list, "生产报工数据");
    }
 
    @GetMapping("/wageSummary")
    @Operation(summary = "计件工资汇总(按人员,计件单价优先)")
    public R<List<PieceWageSummaryVo>> wageSummary(
            @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate,
            @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate,
            @RequestParam(required = false) String userName) {
        return R.ok(productionProductMainService.wageSummary(startDate, endDate, userName));
    }
 
    @GetMapping("/wageSummary/export")
    @Operation(summary = "计件工资汇总导出")
    public void wageSummaryExport(HttpServletResponse response,
                                  @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate,
                                  @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate,
                                  @RequestParam(required = false) String userName) {
        List<PieceWageSummaryVo> list = productionProductMainService.wageSummary(startDate, endDate, userName);
        ExcelUtil<PieceWageSummaryVo> util = new ExcelUtil<>(PieceWageSummaryVo.class);
        util.exportExcel(response, list, "计件工资汇总");
    }
 
    @GetMapping("/outputStat")
    @Operation(summary = "产量统计(dimension: device设备/operation工序/product产品)")
    public R<List<DeviceOutputStatVo>> outputStat(
            @RequestParam(required = false, defaultValue = "device") String dimension,
            @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate,
            @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate,
            @RequestParam(required = false) Long deviceId) {
        return R.ok(productionProductMainService.outputStat(dimension, startDate, endDate, deviceId));
    }
 
    @GetMapping("/outputStat/export")
    @Operation(summary = "产量统计导出")
    public void outputStatExport(HttpServletResponse response,
                                 @RequestParam(required = false, defaultValue = "device") String dimension,
                                 @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate,
                                 @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate,
                                 @RequestParam(required = false) Long deviceId) {
        List<DeviceOutputStatVo> list = productionProductMainService.outputStat(dimension, startDate, endDate, deviceId);
        ExcelUtil<DeviceOutputStatVo> util = new ExcelUtil<>(DeviceOutputStatVo.class);
        util.exportExcel(response, list, "产量统计");
    }
}