package com.ruoyi.basic.controller; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.*; import com.ruoyi.basic.excel.ExcelMultiSheetImporter; import com.ruoyi.common.core.domain.Result; import com.ruoyi.system.service.ISysDictTypeService; import com.ruoyi.basic.excel.StructureTestObjectData; import com.ruoyi.basic.excel.StructureTestObjectListener; import com.ruoyi.basic.pojo.Product; import com.ruoyi.basic.pojo.StructureItemParameter; import com.ruoyi.basic.pojo.StructureTestObject; import com.ruoyi.basic.service.CapacityScopeService; import com.ruoyi.basic.service.ProductService; import com.ruoyi.basic.service.StandardTemplateService; import com.ruoyi.basic.service.StructureItemParameterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.apache.commons.codec.digest.DigestUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; /** * 检验项目参数(StructureItemParameter)表控制层 * * @author makejava * @since 2024-02-26 16:21:17 */ @Api(tags = "能力范围") @AllArgsConstructor @RestController @RequestMapping("/capacityScope") public class CapacityScopeController { private CapacityScopeService capacityScopeService; private ProductService productService; private StructureItemParameterService structureItemParameterService; private ISysDictTypeService dictTypeService; private StandardTemplateService standardTemplateService; @ApiOperation(value = "获取项目检验参数列表") @GetMapping("/selectItemParameterList") public Result selectItemParameterList(Page page, StructureItemParameter itemParameter) { return Result.success(capacityScopeService.selectItemParameterList(page, itemParameter)); } @ApiOperation(value = "添加项目检验参数") @PostMapping("/addItemParameter") public Result addItemParameter(@RequestBody StructureItemParameter itemParameter) { return Result.success(capacityScopeService.addItemParameter(itemParameter)); } @ApiOperation(value = "删除项目检验参数") @DeleteMapping("/delItemParameter") public Result delItemParameter(Integer id) { return Result.success(capacityScopeService.delItemParameter(id)); } @ApiOperation(value = "修改项目检验参数") @PostMapping("/upItemParameter") public Result upItemParameter(@RequestBody StructureItemParameter itemParameter) { return Result.success(capacityScopeService.upItemParameter(itemParameter)); } @ApiOperation(value = "获取检验对象") @GetMapping("/selectTestObjectList") public Result selectTestObjectList(Page page, PageTestObjectDto pageTestObjectDto) { return Result.success(capacityScopeService.selectTestObjectList(page, pageTestObjectDto)); } @ApiOperation(value = "添加检验对象") @PostMapping("/addTestObject") public Result addTestObject(@RequestBody StructureTestObject testObject) { return Result.success(capacityScopeService.addTestObject(testObject)); } @ApiOperation(value = "删除检验对象") @DeleteMapping("/delTestObject") public Result delTestObject(Integer id) { return Result.success(capacityScopeService.delTestObject(id)); } @ApiOperation(value = "修改检验对象") @PostMapping("/upTestObject") public Result upTestObject(@RequestBody StructureTestObject testObject) { return Result.success(capacityScopeService.upTestObject(testObject)); } @ApiOperation(value = "获取检验对象枚举") @GetMapping("/selectTestObjectByName") public Result selectTestObjectByName() { return Result.success(capacityScopeService.selectTestObjectByName()); } @ApiOperation(value = "设备里面选择检验项目(树形结构)") @GetMapping("/getInsProduction") public Result getInsProduction() { return Result.success(capacityScopeService.getInsProduction()); } @ApiOperation(value = "维护检验对象的产品") @GetMapping("/selectProductListByObjectId") public Result selectProductListByObjectId(Page page, ProductDTO1 productDTO) { return Result.success(productService.selectProductListByObjectId(page, productDTO)); } @ApiOperation(value = "添加产品") @PostMapping("/addProduct") public Result addProduct(@RequestBody Product product) { return Result.success(productService.addProduct(product)); } @ApiOperation(value = "修改产品") @PostMapping("/upProduct") public Result upProduct(@RequestBody Product product) { return Result.success(productService.upProduct(product)); } @ApiOperation(value = "删除产品") @DeleteMapping("/delProduct") public Result delProduct(Integer id) { return Result.success(productService.delProduct(id)); } @ApiOperation(value = "获取检验对象树") @GetMapping("/getItemTree") public Result getItemTree() { return Result.success(capacityScopeService.getItemTree()); } /** * 成品/原辅材 */ @ApiOperation(value = "获取检验对象树") @GetMapping("/getItemTreeProduct") public Result getItemTreeProduct(StructureTestObjectDto structureTestObjectDto) { return Result.success(capacityScopeService.getItemTreeProduct(structureTestObjectDto)); } /** * 根据产品获取型号 */ @ApiOperation(value = "获取检验对象树") @GetMapping("/getProductTypes") public Result getProductTypes(ModelDto modelDto) { return Result.success(capacityScopeService.getProductTypes(modelDto)); } /** * 根据产品获取零件号 */ @ApiOperation(value = "获取检验对象树") @GetMapping("/getPartNoList") public Result getPartNoList(ProductPartDto productPartDto) { return Result.success(capacityScopeService.getPartNoList(productPartDto)); } @PostMapping("/importEquipData") public Result importData(@RequestParam("file") MultipartFile file) { // 调用导入工具 String result = ExcelMultiSheetImporter.importExcel(file, structureItemParameterService, standardTemplateService, dictTypeService); return Result.success(result); } @ApiOperation(value = "导入检验对象") @PostMapping("/importExcel") public Result importExcel(@RequestParam("file") MultipartFile file) { List processedFiles = new ArrayList<>(); try (InputStream inputStream = file.getInputStream()) { String fileHash = DigestUtils.md5Hex(inputStream); if (processedFiles.contains(fileHash)) { return Result.success(); // 已处理过的文件直接跳过 } processedFiles.add(fileHash); EasyExcel.read(file.getInputStream(), StructureTestObjectData.class, new StructureTestObjectListener(capacityScopeService)).sheet().doRead(); } catch (IOException e) { // 这里可以根据实际情况进行更完善的错误处理,比如记录日志等 System.err.println("读取文件时发生错误: " + e.getMessage()); } return Result.success(); } @ApiOperation(value = "更新产品车间") @PostMapping("/updateWorkShop") public Result updateWorkShop(@RequestBody ProductDto productDto) { return Result.success(productService.updateWorkShop(productDto.getId(), productDto.getWorkShopId(), productDto.getWorkShopName())); } @ApiOperation(value = "更新检测对象车间") @PostMapping("/updateObjectWorkShop") public Result updateObjectWorkShop(@RequestBody StructureTestObjectDto structureTestObjectDto) { return Result.success(productService.updateObjectWorkShop(structureTestObjectDto)); } }