package com.ruoyi.production.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.production.bean.dto.ProductionCostingQueryDto; import com.ruoyi.production.bean.vo.ProductionCostingDetailVo; import com.ruoyi.production.bean.vo.ProductionCostingSummaryVo; import com.ruoyi.production.pojo.ProductionCostingDept; import com.ruoyi.production.pojo.ProductionCostingFactor; import com.ruoyi.production.pojo.ProductionCostingStandard; import com.ruoyi.production.pojo.ProductionCostingWorkday; import com.ruoyi.production.service.ProductionCostingService; 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.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Map; /** * 生产核算(成品部门 / 白盒部门)前端控制器 */ @RestController @RequestMapping("/productionCosting") @RequiredArgsConstructor @Tag(name = "生产核算") public class ProductionCostingController { private final ProductionCostingService productionCostingService; @GetMapping("/summary") @Log(title = "生产核算-汇总查询", businessType = BusinessType.OTHER) @Operation(summary = "生产核算按员工汇总") public R> summary(ProductionCostingQueryDto dto) { return R.ok(productionCostingService.summary(dto)); } @GetMapping("/detail") @Log(title = "生产核算-明细查询", businessType = BusinessType.OTHER) @Operation(summary = "生产核算明细查询") public R> detail(ProductionCostingQueryDto dto) { return R.ok(productionCostingService.detailList(dto)); } @GetMapping("/workday") @Operation(summary = "查询月份工作日信息") public R> workday(String yearMonth) { return R.ok(productionCostingService.workdayInfo(yearMonth)); } @PostMapping("/export") @Log(title = "生产核算-导出", businessType = BusinessType.EXPORT) @Operation(summary = "导出生产核算明细") public void export(HttpServletResponse response, ProductionCostingQueryDto dto) { ExcelUtil util = new ExcelUtil<>(ProductionCostingDetailVo.class); util.exportExcel(response, productionCostingService.detailList(dto), "生产核算明细"); } /* ---------------- 部门类型配置 ---------------- */ @GetMapping("/dept/list") @Operation(summary = "部门类型配置列表") public R> deptList() { return R.ok(productionCostingService.listDept()); } @PostMapping("/dept") @Log(title = "生产核算-部门类型配置新增", businessType = BusinessType.INSERT) @Operation(summary = "新增部门类型配置") public R deptAdd(@RequestBody ProductionCostingDept dept) { return R.ok(productionCostingService.saveDept(dept)); } @PutMapping("/dept") @Log(title = "生产核算-部门类型配置修改", businessType = BusinessType.UPDATE) @Operation(summary = "修改部门类型配置") public R deptEdit(@RequestBody ProductionCostingDept dept) { return R.ok(productionCostingService.updateDept(dept)); } @DeleteMapping("/dept/{id}") @Log(title = "生产核算-部门类型配置删除", businessType = BusinessType.DELETE) @Operation(summary = "删除部门类型配置") public R deptRemove(@PathVariable Long id) { return R.ok(productionCostingService.removeDept(id)); } /* ---------------- 标准数量配置 ---------------- */ @GetMapping("/standard/list") @Operation(summary = "标准数量配置列表") public R> standardList(ProductionCostingStandard query) { return R.ok(productionCostingService.listStandard(query)); } @PostMapping("/standard") @Log(title = "生产核算-标准数量配置新增", businessType = BusinessType.INSERT) @Operation(summary = "新增标准数量配置") public R standardAdd(@RequestBody ProductionCostingStandard standard) { return R.ok(productionCostingService.saveStandard(standard)); } @PutMapping("/standard") @Log(title = "生产核算-标准数量配置修改", businessType = BusinessType.UPDATE) @Operation(summary = "修改标准数量配置") public R standardEdit(@RequestBody ProductionCostingStandard standard) { return R.ok(productionCostingService.updateStandard(standard)); } @DeleteMapping("/standard/{id}") @Log(title = "生产核算-标准数量配置删除", businessType = BusinessType.DELETE) @Operation(summary = "删除标准数量配置") public R standardRemove(@PathVariable Long id) { return R.ok(productionCostingService.removeStandard(id)); } /* ---------------- 折算率配置 ---------------- */ @GetMapping("/factor/list") @Operation(summary = "折算率配置列表") public R> factorList(ProductionCostingFactor query) { return R.ok(productionCostingService.listFactor(query)); } @PostMapping("/factor") @Log(title = "生产核算-折算率配置新增", businessType = BusinessType.INSERT) @Operation(summary = "新增折算率配置") public R factorAdd(@RequestBody ProductionCostingFactor factor) { return R.ok(productionCostingService.saveFactor(factor)); } @PutMapping("/factor") @Log(title = "生产核算-折算率配置修改", businessType = BusinessType.UPDATE) @Operation(summary = "修改折算率配置") public R factorEdit(@RequestBody ProductionCostingFactor factor) { return R.ok(productionCostingService.updateFactor(factor)); } @DeleteMapping("/factor/{id}") @Log(title = "生产核算-折算率配置删除", businessType = BusinessType.DELETE) @Operation(summary = "删除折算率配置") public R factorRemove(@PathVariable Long id) { return R.ok(productionCostingService.removeFactor(id)); } /* ---------------- 月度工作日配置 ---------------- */ @GetMapping("/workdayConfig/list") @Operation(summary = "月度工作日配置列表") public R> workdayList(ProductionCostingWorkday query) { return R.ok(productionCostingService.listWorkday(query)); } @PostMapping("/workdayConfig") @Log(title = "生产核算-月度工作日配置新增", businessType = BusinessType.INSERT) @Operation(summary = "新增月度工作日配置") public R workdayAdd(@RequestBody ProductionCostingWorkday workday) { return R.ok(productionCostingService.saveWorkday(workday)); } @PutMapping("/workdayConfig") @Log(title = "生产核算-月度工作日配置修改", businessType = BusinessType.UPDATE) @Operation(summary = "修改月度工作日配置") public R workdayEdit(@RequestBody ProductionCostingWorkday workday) { return R.ok(productionCostingService.updateWorkday(workday)); } @DeleteMapping("/workdayConfig/{id}") @Log(title = "生产核算-月度工作日配置删除", businessType = BusinessType.DELETE) @Operation(summary = "删除月度工作日配置") public R workdayRemove(@PathVariable Long id) { return R.ok(productionCostingService.removeWorkday(id)); } }