6 天以前 1e123568c2f561013f5636e45dc0db30b17a3517
src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
@@ -4,21 +4,26 @@
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.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
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")
@RequestMapping("/productionProductMain")
@RestController
@Api(value = "生产报工")
@Tag(name = "生产报工")
@AllArgsConstructor
public class ProductionProductMainController {
    @Autowired
    private ProductionProductMainService productionProductMainService;
    /**
@@ -27,19 +32,19 @@
     * @param productionProductMainDto
     * @return
     */
    @GetMapping("listPage")
    @GetMapping("/listPage")
    public R page(Page<ProductionProductMainDto> page, ProductionProductMainDto productionProductMainDto) {
        return R.ok(productionProductMainService.listPageProductionProductMainDto(page, productionProductMainDto));
    }
    @GetMapping("/page")
    @ApiOperation("生产报工分页查询")
    @Operation(summary = "生产报工分页查询")
    public R pageProductionProductMain(Page<ProductionProductMainDto> page, ProductionProductMainDto productionProductMainDto) {
        return R.ok(productionProductMainService.pageProductionProductMain(page, productionProductMainDto));
    }
    @GetMapping("/{id}")
    @ApiOperation("生产报工详情")
    @Operation(summary = "生产报工详情")
    public R getInfo(@PathVariable("id") Long id) {
        return R.ok(productionProductMainService.getProductionProductMainInfo(id));
    }
@@ -49,31 +54,32 @@
     * @param productionProductMainDto
     * @return
     */
    @PostMapping("addProductMain")
    @PostMapping("/addProductMain")
    @PreAuthorize("@ss.hasPermi('productionProductMain:add')")
    public R addProductMain(@RequestBody ProductionProductMainDto productionProductMainDto) {
        return R.ok(productionProductMainService.addProductMain(productionProductMainDto));
    }
    @PostMapping
    @ApiOperation("新增生产报工")
    @Operation(summary = "新增生产报工")
    public R add(@RequestBody ProductionProductMainDto productionProductMainDto) {
        return R.ok(productionProductMainService.saveProductionProductMain(productionProductMainDto));
    }
    @PutMapping
    @ApiOperation("修改生产报工")
    @Operation(summary = "修改生产报工")
    public R edit(@RequestBody ProductionProductMainDto productionProductMainDto) {
        return R.ok(productionProductMainService.saveProductionProductMain(productionProductMainDto));
    }
    @ApiOperation("删除报工")
    @Operation(summary = "删除报工")
    @DeleteMapping("/delete")
    public R delete(@RequestBody ProductionProductMainDto productionProductMainDto) {
        return R.ok(productionProductMainService.removeProductMain(productionProductMainDto.getId()));
    }
    @DeleteMapping("/{id}")
    @ApiOperation("删除生产报工")
    @Operation(summary = "删除生产报工")
    public R remove(@PathVariable("id") Long id) {
        return R.ok(productionProductMainService.removeProductMain(id));
    }
@@ -89,4 +95,46 @@
        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, "产量统计");
    }
}