package com.ruoyi.production.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.production.dto.ProductBomDto; import com.ruoyi.production.pojo.ProcessRoute; import com.ruoyi.production.pojo.ProductBom; import com.ruoyi.production.pojo.ProductProcessRoute; import com.ruoyi.production.pojo.ProductStructure; import com.ruoyi.production.service.ProcessRouteService; import com.ruoyi.production.service.ProductBomService; import com.ruoyi.production.service.ProductProcessRouteService; import com.ruoyi.production.service.ProductStructureService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; /** *

* BOM主表 前端控制器 *

* * @author 芯导软件(江苏)有限公司 * @since 2026-01-15 09:59:27 */ @RestController @RequestMapping("/productBom") @Api(tags = "BOM") public class ProductBomController { @Autowired private ProductBomService productBomService; @Autowired private ProcessRouteService processRouteService; @Autowired private ProductProcessRouteService productProcessRouteService; @Autowired private ProductStructureService productStructureService; @GetMapping("/listPage") @Log(title = "BOM-分页查询", businessType = BusinessType.OTHER) @ApiOperation("BOM-分页查询") public AjaxResult listPage(Page page, ProductBomDto productBomDto) { IPage listPage = productBomService.listPage(page, productBomDto); return AjaxResult.success(listPage); } @ApiModelProperty("新增BOM") @PostMapping("/add") @Log(title = "新增", businessType = BusinessType.INSERT) public AjaxResult add(@RequestBody ProductBom productBom) { return productBomService.add(productBom); } @ApiOperation("更新BOM") @Log(title = "修改", businessType = BusinessType.UPDATE) @PutMapping("/update") public AjaxResult update(@RequestBody ProductBom productBom) { return AjaxResult.success(productBomService.updateById(productBom)); } @ApiOperation("删除BOM") @DeleteMapping("/batchDelete") @Log(title = "删除", businessType = BusinessType.DELETE) public AjaxResult batchDelete(@RequestBody List ids) { List list = processRouteService.list(Wrappers.lambdaQuery().in(ProcessRoute::getBomId, ids)); List list2 = productProcessRouteService.list(Wrappers.lambdaQuery().in(ProductProcessRoute::getBomId, ids)); if (list.size() > 0 || list2.size() > 0) { return AjaxResult.error("该BOM已经存在对应的工艺路线,无法进行删除"); } if (CollectionUtils.isEmpty(ids)) { return AjaxResult.error("请选择至少一条数据"); } //删除bom子表 productStructureService.remove(Wrappers.lambdaQuery().in(ProductStructure::getBomId, ids)); return AjaxResult.success(productBomService.removeBatchByIds(ids)); } @GetMapping("/getByModel") @Log(title = "BOM-根据选择的规格型号id查询存在的bom", businessType = BusinessType.OTHER) @ApiOperation("BOM-根据选择的规格型号id查询存在的bom") public AjaxResult getByModel(Long productModelId) { List productBoms = productBomService.list(Wrappers.lambdaQuery().eq(ProductBom::getProductModelId, productModelId)); return AjaxResult.success(productBoms); } @PostMapping("uploadBom") @Log(title = "根据Excel导入BOM", businessType = BusinessType.IMPORT) @ApiOperation("根据Excel导入BOM") public AjaxResult uploadBom(@RequestParam("file") MultipartFile file) { return productBomService.uploadBom(file); } @PostMapping("exportBom") @Log(title = "导出BOM文件", businessType = BusinessType.EXPORT) @ApiOperation("导出BOM文件") public void exportBom(HttpServletResponse response, @RequestParam Integer bomId) { productBomService.exportBom(response, bomId); } }