From e713714eb3796ac4d67495f823aa633535b3ad15 Mon Sep 17 00:00:00 2001 From: liding <756868258@qq.com> Date: 星期三, 26 三月 2025 13:33:19 +0800 Subject: [PATCH] 1.外购件检验 2.标准方法导入 --- inspect-server/src/main/java/com/ruoyi/inspect/dto/InspectionPurchasedDto.java | 13 + inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InspectionPurchasedServiceImpl.java | 95 +++++++++ basic-server/src/main/java/com/ruoyi/basic/service/WorkShopFileService.java | 4 basic-server/src/main/java/com/ruoyi/basic/service/impl/WorkShopFileServiceImpl.java | 43 ++++ inspect-server/src/main/java/com/ruoyi/inspect/mapper/InspectionPurchasedMapper.java | 16 + basic-server/src/main/java/com/ruoyi/basic/controller/WorkShopController.java | 8 inspect-server/src/main/java/com/ruoyi/inspect/pojo/InspectionPurchased.java | 73 +++++++ inspect-server/src/main/java/com/ruoyi/inspect/service/InspectionPurchasedService.java | 26 ++ basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java | 10 + basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java | 190 ++++++++++-------- basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java | 33 ++ inspect-server/src/main/java/com/ruoyi/inspect/controller/InspectionPurchasedController.java | 49 ++++ 12 files changed, 468 insertions(+), 92 deletions(-) diff --git a/basic-server/src/main/java/com/ruoyi/basic/controller/WorkShopController.java b/basic-server/src/main/java/com/ruoyi/basic/controller/WorkShopController.java index 624b04b..b66db32 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/controller/WorkShopController.java +++ b/basic-server/src/main/java/com/ruoyi/basic/controller/WorkShopController.java @@ -34,7 +34,7 @@ return Result.success(workShopService.addWorkShop(workShopDto)); } - @ApiOperation(value = "鍒犻櫎妫�楠屽崟妯℃澘") + @ApiOperation(value = "鍒犻櫎杞﹂棿鍚嶇О鏁版嵁") @DeleteMapping("/delWorkShop") public Result<?> delWorkShop(Integer id) { return Result.success(workShopService.delWorkShop(id)); @@ -57,4 +57,10 @@ public Result<?> delFile(Integer id) { return Result.success(workShopFileService.delFile(id)); } + + @ApiOperation(value = "鏌ヨ闄勪欢鍒楄〃") + @GetMapping("/partFileList") + public Result partFileList(Page page,@RequestParam("partNo") String partNo) { + return Result.success(workShopFileService.partFileList(page,partNo)); + } } diff --git a/basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java b/basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java index 6d5ec08..d636789 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java +++ b/basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java @@ -1,5 +1,6 @@ package com.ruoyi.basic.pojo; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; @@ -21,38 +22,47 @@ @TableId(type = IdType.AUTO) private Integer id; + @ExcelProperty("棰嗗煙") private String field; + @ExcelProperty("妫�楠屽璞�") @ApiModelProperty("妫�楠屽璞�") private String structureTestObjectId; /** * 鏍囧噯缂栧彿 */ + @ExcelProperty("鏍囧噯缂栧彿") @ApiModelProperty(value = "鏍囧噯缂栧彿") private String code; /** * 鏍囧噯鏂规硶 */ + @ExcelProperty("鏍囧噯鎻忚堪") @ApiModelProperty(value = "鏍囧噯鎻忚堪") private String name; + @ExcelProperty("鏍囧噯鎻忚堪EN") @ApiModelProperty(value = "鏍囧噯鎻忚堪EN") private String nameEn; /** * 澶囨敞 */ + @ExcelProperty("澶囨敞") @ApiModelProperty(value = "澶囨敞") private String remark; + @ExcelProperty("璧勮川") @ApiModelProperty(value = "璧勮川") private String qualificationId; + @ExcelProperty("鏄惁浜у搧鏍囧噯") @ApiModelProperty(value = "鏄惁浜у搧鏍囧噯") private Integer isProduct; + @ExcelProperty("鏄惁鍚敤") @ApiModelProperty(value = "鏄惁鍚敤") private Integer isUse; diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/WorkShopFileService.java b/basic-server/src/main/java/com/ruoyi/basic/service/WorkShopFileService.java index 562ffa1..987ef12 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/service/WorkShopFileService.java +++ b/basic-server/src/main/java/com/ruoyi/basic/service/WorkShopFileService.java @@ -1,6 +1,8 @@ package com.ruoyi.basic.service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.basic.pojo.WorkShopFile; @@ -11,4 +13,6 @@ public interface WorkShopFileService extends IService<WorkShopFile> { int delFile(Integer id); + + IPage<WorkShopFile> partFileList(Page page,String partNo); } diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java index 44566bd..e78edbf 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java +++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java @@ -1,7 +1,10 @@ package com.ruoyi.basic.service.impl; import cn.hutool.json.JSONUtil; -import cn.hutool.poi.excel.ExcelUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -131,22 +134,115 @@ @Transactional(rollbackFor = Exception.class) @Override public void inputExcel(MultipartFile file) throws IOException { + // 瀛樺偍妫�娴嬪璞ist - List<Object> structureTestObjectIdList = new ArrayList<>(); + Set<Object> structureTestObjectIdSet = new HashSet<>(); List<StandardMethod> result = new ArrayList<>(); - ExcelUtil.readBySax(file.getInputStream(), 0, (i, l, list) -> { - // 鍘婚櫎绗竴琛岃〃澶� - if (l == 0) { - return; + + EasyExcel.read(file.getInputStream(), StandardMethod.class, new AnalysisEventListener<StandardMethod>() { + @Override + public void invoke(StandardMethod data, AnalysisContext context) { + // 鍘婚櫎绗竴琛岃〃澶达紝EasyExcel 鑷姩澶勭悊琛ㄥご锛岃繖閲屾棤闇�棰濆澶勭悊 + // 瀛樺偍鍞竴妫�娴嬪璞� + String structureTestObjectId = data.getStructureTestObjectId(); + Object idObj = getFirstIdFromJson(structureTestObjectId); + if (idObj != null) { + structureTestObjectIdSet.add(idObj); + } + result.add(data); } - // 瀛樺偍鍞竴妫�娴嬪璞� - if (!structureTestObjectIdList.contains(list.get(2))) { - structureTestObjectIdList.add(list.get(2)); + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + // 瑙f瀽瀹屾垚鍚庢墽琛屾坊鍔犳搷浣� + addStructureTest(new ArrayList<>(structureTestObjectIdSet), result); } - StandardMethod standardMethod = formatData(list); - result.add(standardMethod); - }); - addStructureTest(structureTestObjectIdList, result); + }).sheet().doRead(); + } + + private Object getFirstIdFromJson(String json) { + // 绠�鍗曡В鏋� JSON 鏁扮粍鑾峰彇绗竴涓厓绱� + if (json != null && json.startsWith("[") && json.contains(",")) { + return json.substring(2, json.indexOf(",")); + } else if (json != null && json.startsWith("[")) { + return json.substring(1, json.length() - 1); + } + return null; + } + + public void addStructureTest(List<Object> structureTestObjectIdList, List<StandardMethod> standardMethodList) { + List<StandardMethod> updateList = new ArrayList<>(); + List<Integer> deleteListId = new ArrayList<>(); + List<StandardMethod> addList = new ArrayList<>(); + + // 鍏堝皢 Excel 鏁版嵁鎸� key 鍒嗙粍 + Map<String, StandardMethod> excelDataMap = new HashMap<>(); + for (StandardMethod excelMethod : standardMethodList) { + String key = generateKey(excelMethod); + excelDataMap.put(key, excelMethod); + } + +// if (!structureTestObjectIdList.isEmpty()) { + // 浠� excel 涓殑缁勫悕鏌ヨ鏁版嵁搴撲腑鐨勫垎缁� + List<StandardMethod> allDbMethods = new ArrayList<>(); + for (Object j : structureTestObjectIdList) { + List<StandardMethod> standardMethods = baseMapper.selectList(new LambdaQueryWrapper<StandardMethod>() + .like(StandardMethod::getStructureTestObjectId, "\"" + j + "\"")); + allDbMethods.addAll(standardMethods); + } + + // 灏嗘暟鎹簱鏁版嵁鎸� key 鍒嗙粍 + Map<String, StandardMethod> dbDataMap = new HashMap<>(); + for (StandardMethod dbMethod : allDbMethods) { + String key = generateKey(dbMethod); + dbDataMap.put(key, dbMethod); + } + + // 澶勭悊鏇存柊鍜屾柊澧� + for (Map.Entry<String, StandardMethod> entry : excelDataMap.entrySet()) { + String key = entry.getKey(); + StandardMethod excelMethod = entry.getValue(); + StandardMethod dbMethod = dbDataMap.get(key); + if (dbMethod != null) { + // 鏇存柊 + excelMethod.setId(dbMethod.getId()); + updateList.add(excelMethod); + } else { + // 鏂板 + addList.add(excelMethod); + } + } + + // 澶勭悊鍒犻櫎 + for (Map.Entry<String, StandardMethod> entry : dbDataMap.entrySet()) { + String key = entry.getKey(); + if (!excelDataMap.containsKey(key)) { + StandardMethod dbMethod = entry.getValue(); + deleteListId.add(dbMethod.getId()); + } + } + + + if (!addList.isEmpty()) { + // 鏂板 + baseMapper.insertBatchSomeColumn(addList); + } + + if (!deleteListId.isEmpty()) { + // 鍒犻櫎 + baseMapper.deleteBatchIds(deleteListId); + } + + if (!updateList.isEmpty()) { + // 鏇存柊 + updateList.forEach(i -> { + baseMapper.updateById(i); + }); + } + } + + private String generateKey(StandardMethod method) { + return method.getStructureTestObjectId() + "-" + method.getCode() + "-" + method.getField(); } // 鏍煎紡鍖栨暟鎹� @@ -185,74 +281,6 @@ return standardMethod; } - // 鏂板鏁版嵁 - public void addStructureTest(List<Object> structureTestObjectIdList, List<StandardMethod> standardMethodList) { - List<StandardMethod> updateList = new ArrayList<>(); - List<Integer> deleteListId = new ArrayList<>(); - List<StandardMethod> addList = new ArrayList<>(); - if (!structureTestObjectIdList.isEmpty()) { - // 寰幆excel閲岄潰鐨勫垎缁� - structureTestObjectIdList.forEach(j -> { - // 浠xcel涓殑缁勫悕鏌ヨ鏁版嵁搴撲腑鐨勫垎缁� - List<StandardMethod> standardMethods = baseMapper.selectList(Wrappers.<StandardMethod>lambdaQuery() - .like(StandardMethod::getStructureTestObjectId, "\"" + j + "\"")); - // 灏嗙粨鏋滃惊鐜尮閰� - for (int i = 0; i < standardMethods.size(); i++) { - boolean isExistence = false; - for (int i1 = 0; i1 < standardMethodList.size(); i1++) { - // 鏇存柊 - if (standardMethods.get(i).getStructureTestObjectId().equals(standardMethodList.get(i1).getStructureTestObjectId()) - && standardMethods.get(i).getCode().equals(standardMethodList.get(i1).getCode()) - && standardMethods.get(i).getField().equals(standardMethodList.get(i1).getField())) { - // 缁檈xcel鏁版嵁璧嬪�糹d鍋氭洿鏂� - standardMethodList.get(i1).setId(standardMethods.get(i).getId()); - // 鏇存柊 - updateList.add(standardMethodList.get(i1)); - isExistence = true; - break; - } - } - // 鍒犻櫎 - if (!isExistence) { - deleteListId.add(standardMethods.get(i).getId()); - } - } - for (int i = 0; i < standardMethodList.size(); i++) { - if (standardMethodList.get(i).getStructureTestObjectId().contains("\"" + j + "\"")) { - boolean isExistence = false; - for (int i1 = 0; i1 < standardMethods.size(); i1++) { - if (standardMethods.get(i1).getStructureTestObjectId().equals(standardMethodList.get(i).getStructureTestObjectId()) - && standardMethods.get(i1).getCode().equals(standardMethodList.get(i).getCode()) - && standardMethods.get(i1).getField().equals(standardMethodList.get(i).getField())) { - isExistence = true; - break; - } - } - // 鏂板 - if (!isExistence) { - addList.add(standardMethodList.get(i)); - } - } - } - }); - } - if (!addList.isEmpty()) { - // 鏂板 - baseMapper.insertBatchSomeColumn(addList); - } - - if (!deleteListId.isEmpty()) { - // 鍒犻櫎 - baseMapper.deleteBatchIds(deleteListId); - } - - if (!updateList.isEmpty()) { - // 鏇存柊 - updateList.forEach(i -> { - baseMapper.updateById(i); - }); - } - } } diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java index 06567df..0c9167c 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java +++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java @@ -2,23 +2,19 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.*; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.basic.mapper.*; +import com.ruoyi.basic.pojo.*; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.basic.dto.CopyStandardProductListDto; import com.ruoyi.basic.dto.InsSampleReceiveDto; import com.ruoyi.basic.dto.ProductDto; import com.ruoyi.basic.dto.ResetTreeDragDTO; -import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper; -import com.ruoyi.basic.mapper.StandardProductListMapper; -import com.ruoyi.basic.mapper.StandardProductListSupplierAskMapper; -import com.ruoyi.basic.mapper.StandardTreeMapper; -import com.ruoyi.basic.pojo.StandardProductList; -import com.ruoyi.basic.pojo.StandardProductListSupplierAsk; -import com.ruoyi.basic.pojo.StandardTree; import com.ruoyi.basic.service.StandardProductListService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; @@ -47,6 +43,10 @@ private IfsInventoryQuantityMapper ifsInventoryQuantityMapper; private StandardProductListSupplierAskMapper standardProductListSupplierAskMapper; + + private ProductPartMapper productPartMapper; + + private StructureTestObjectPartMapper structureTestObjectPartMapper; @Override @@ -185,6 +185,25 @@ } } + ProductPart productPart = productPartMapper.selectOne(new LambdaQueryWrapper<ProductPart>().eq(ProductPart::getPartNo, insSample.getPartNo())); + if (productPart != null){ + if (StringUtils.isNotEmpty(productPart.getInspectionItem())){ + String inspectionItem = productPart.getInspectionItem(); + list = list.stream() + .filter(standardProductList -> inspectionItem.equals(standardProductList.getInspectionItem())) + .collect(Collectors.toList()); + } + } + + StructureTestObjectPart structureTestObjectPart = structureTestObjectPartMapper.selectOne(new LambdaQueryWrapper<StructureTestObjectPart>().eq(StructureTestObjectPart::getPartNo, insSample.getPartNo())); + if (structureTestObjectPart != null){ + if (StringUtils.isNotEmpty(structureTestObjectPart.getInspectionItem())){ + String inspectionItem = structureTestObjectPart.getInspectionItem(); + list = list.stream() + .filter(standardProductList -> inspectionItem.equals(standardProductList.getInspectionItem())) + .collect(Collectors.toList()); + } + } return list; } diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/WorkShopFileServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/WorkShopFileServiceImpl.java index 0b4801d..a0a3f6c 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/WorkShopFileServiceImpl.java +++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/WorkShopFileServiceImpl.java @@ -1,9 +1,11 @@ package com.ruoyi.basic.service.impl; - +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.basic.mapper.WorkShopFileMapper; -import com.ruoyi.basic.pojo.WorkShopFile; +import com.ruoyi.basic.mapper.*; +import com.ruoyi.basic.pojo.*; import com.ruoyi.basic.service.WorkShopFileService; import com.ruoyi.common.utils.file.MinioUtils; import org.springframework.beans.factory.annotation.Value; @@ -20,6 +22,17 @@ @Resource private WorkShopFileMapper workShopFileMapper; + + @Resource + private ProductPartMapper productPartMapper; + + @Resource + private ProductMapper productMapper; + @Resource + private StructureTestObjectPartMapper structureTestObjectPartMapper; + + @Resource + private StructureTestObjectMapper structureTestObjectMapper; @Resource private MinioUtils minioUtils; @@ -52,6 +65,30 @@ return 0; } } + + @Override + public IPage<WorkShopFile> partFileList(Page page, String partNo) { + StructureTestObject structureTestObject = findStructureTestObjectByPartNo(partNo); + if (structureTestObject != null && structureTestObject.getWorkShopId() != null) { + return workShopFileMapper.selectPage(page, new LambdaQueryWrapper<WorkShopFile>().eq(WorkShopFile::getWorkShopId, structureTestObject.getWorkShopId())); + } + return null; + } + + private StructureTestObject findStructureTestObjectByPartNo(String partNo) { + ProductPart productPart = productPartMapper.selectOne(new LambdaQueryWrapper<ProductPart>().eq(ProductPart::getPartNo, partNo)); + if (productPart != null) { + Product product = productMapper.selectById(productPart.getProductId()); + if (product != null) { + return structureTestObjectMapper.selectById(product.getObjectId()); + } + } + StructureTestObjectPart structureTestObjectPart = structureTestObjectPartMapper.selectOne(new LambdaQueryWrapper<StructureTestObjectPart>().eq(StructureTestObjectPart::getPartNo, partNo)); + if (structureTestObjectPart != null) { + return structureTestObjectMapper.selectById(structureTestObjectPart.getTestObjectId()); + } + return null; + } } diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InspectionPurchasedController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InspectionPurchasedController.java new file mode 100644 index 0000000..bab4e46 --- /dev/null +++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InspectionPurchasedController.java @@ -0,0 +1,49 @@ +package com.ruoyi.inspect.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.domain.Result; +import com.ruoyi.inspect.dto.InspectionPurchasedDto; +import com.ruoyi.inspect.service.InspectionPurchasedService; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + * <p> + * 澶栬喘浠舵楠� 鍓嶇鎺у埗鍣� + * </p> + * + * @author ld + * @since 2025-03-25 11:22:56 + */ +@RestController +@RequestMapping("/inspectionPurchased") +@AllArgsConstructor +public class InspectionPurchasedController { + + private InspectionPurchasedService inspectionPurchasedService; + + @ApiOperation("鏌ヨ鍒楄〃") + @GetMapping("/selectInspection") + public Result selectInspectionPurchased(Page page, InspectionPurchasedDto inspectionPurchasedDto) { + return Result.success(inspectionPurchasedService.selectInspectionPurchased(page,inspectionPurchasedDto)); + } + + @ApiOperation(value = "娣诲姞澶栬喘浠舵楠屾暟鎹�") + @PostMapping("/addOrUpdateInspection") + public Result<?> addOrUpdateInspection(@RequestBody InspectionPurchasedDto inspectionPurchasedDto) { + return Result.success(inspectionPurchasedService.addOrUpdateInspection(inspectionPurchasedDto)); + } + + @ApiOperation(value = "鏇存柊鎻愪氦澶栬喘浠舵楠屾暟鎹�") + @PostMapping("/UpdateInspection") + public Result<?> UpdateInspection(InspectionPurchasedDto inspectionPurchasedDto) throws Exception { + return Result.success(inspectionPurchasedService.UpdateInspection(inspectionPurchasedDto)); + } + + @ApiOperation(value = "鍒犻櫎澶栬喘浠舵楠�") + @DeleteMapping("/delInspection") + public Result<?> delWorkShop(Integer id) { + return Result.success(inspectionPurchasedService.delInspection(id)); + } +} diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/InspectionPurchasedDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/InspectionPurchasedDto.java new file mode 100644 index 0000000..4213cbb --- /dev/null +++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/InspectionPurchasedDto.java @@ -0,0 +1,13 @@ +package com.ruoyi.inspect.dto; + +import com.ruoyi.inspect.pojo.InspectionPurchased; +import lombok.Data; +import org.springframework.web.multipart.MultipartFile; + + +@Data +public class InspectionPurchasedDto extends InspectionPurchased { + + private MultipartFile file; + +} diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InspectionPurchasedMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InspectionPurchasedMapper.java new file mode 100644 index 0000000..88f1bcc --- /dev/null +++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InspectionPurchasedMapper.java @@ -0,0 +1,16 @@ +package com.ruoyi.inspect.mapper; + +import com.ruoyi.inspect.pojo.InspectionPurchased; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * <p> + * 澶栬喘浠舵楠� Mapper 鎺ュ彛 + * </p> + * + * @author ld + * @since 2025-03-25 01:58:21 + */ +public interface InspectionPurchasedMapper extends BaseMapper<InspectionPurchased> { + +} diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/InspectionPurchased.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/InspectionPurchased.java new file mode 100644 index 0000000..e0cdb22 --- /dev/null +++ b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/InspectionPurchased.java @@ -0,0 +1,73 @@ +package com.ruoyi.inspect.pojo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * <p> + * 澶栬喘浠舵楠� + * </p> + * + * @author ld + * @since 2025-03-25 01:58:21 + */ +@TableName("inspection_purchased") +@ApiModel(value = "InspectionPurchased瀵硅薄", description = "澶栬喘浠舵楠�") +@Data +public class InspectionPurchased implements Serializable { + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("浜у搧鍚嶇О") + private String name; + + @ApiModelProperty("鏉ユ枡鏁伴噺") + private String num; + + @ApiModelProperty("渚涜揣鍘傚") + private String supplier; + + @ApiModelProperty("璁㈠崟鍙�") + private String orderNum; + + @ApiModelProperty("sp鍙�") + private String spNum; + + @ApiModelProperty("濮旀墭缂栧彿") + private String entrustmentNo; + + @ApiModelProperty("閫昏緫鐘舵��") + @TableLogic + private String state; + + @ApiModelProperty("妫�楠岀姸鎬�") + private String inspectionStatus; + + @ApiModelProperty("澶囨敞") + private String remark; + + @ApiModelProperty("鏂囦欢鍚�") + private String fileName; + + @ApiModelProperty("鏂囦欢璺緞") + private String fileUrl; + + @ApiModelProperty("鏂囦欢棰勮璺緞") + private String filePreviewUrl; + + @ApiModelProperty("妫�楠岄」") + private String inspectionItems; + + @ApiModelProperty("妫�娴嬬粨鏋�") + private String result; + + @ApiModelProperty("绫诲瀷") + private Integer type; +} diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/InspectionPurchasedService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InspectionPurchasedService.java new file mode 100644 index 0000000..0713915 --- /dev/null +++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/InspectionPurchasedService.java @@ -0,0 +1,26 @@ +package com.ruoyi.inspect.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.inspect.dto.InspectionPurchasedDto; +import com.ruoyi.inspect.pojo.InspectionPurchased; + +/** + * <p> + * 澶栬喘浠舵楠� 鏈嶅姟绫� + * </p> + * + * @author ld + * @since 2025-03-25 11:22:56 + */ +public interface InspectionPurchasedService extends IService<InspectionPurchased> { + + int addOrUpdateInspection(InspectionPurchasedDto inspectionPurchasedDto); + + int delInspection(Integer id); + + IPage<InspectionPurchasedDto> selectInspectionPurchased(Page page, InspectionPurchasedDto inspectionPurchasedDto); + + int UpdateInspection(InspectionPurchasedDto inspectionPurchasedDto) throws Exception; +} diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InspectionPurchasedServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InspectionPurchasedServiceImpl.java new file mode 100644 index 0000000..31c5bec --- /dev/null +++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InspectionPurchasedServiceImpl.java @@ -0,0 +1,95 @@ +package com.ruoyi.inspect.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.MinioResult; +import com.ruoyi.common.utils.QueryWrappers; +import com.ruoyi.common.utils.file.MinioUtils; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.inspect.dto.InspectionPurchasedDto; +import com.ruoyi.inspect.mapper.InspectionPurchasedMapper; +import com.ruoyi.inspect.pojo.InspectionPurchased; +import com.ruoyi.inspect.service.InspectionPurchasedService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * <p> + * 澶栬喘浠舵楠� 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author ld + * @since 2025-03-25 11:22:56 + */ +@Service +public class InspectionPurchasedServiceImpl extends ServiceImpl<InspectionPurchasedMapper, InspectionPurchased> implements InspectionPurchasedService { + + @Resource + private InspectionPurchasedMapper inspectionPurchasedMapper; + + @Resource + private MinioUtils minioUtils; + + @Value("${minio.bucketName}") + private String bucketName; + + @Override + public int addOrUpdateInspection(InspectionPurchasedDto inspectionPurchasedDto) { + if (inspectionPurchasedDto.getId() == null) { + inspectionPurchasedDto.setInspectionStatus(String.valueOf(0)); + + return inspectionPurchasedMapper.insert(inspectionPurchasedDto); + } else { + return inspectionPurchasedMapper.updateById(inspectionPurchasedDto); + } + } + + @Override + public int delInspection(Integer id) { + return inspectionPurchasedMapper.deleteById(id); + } + + @Override + public IPage<InspectionPurchasedDto> selectInspectionPurchased(Page page, InspectionPurchasedDto inspectionPurchasedDto) { + return inspectionPurchasedMapper.selectPage(page, QueryWrappers.queryWrappers(inspectionPurchasedDto)); + } + + @Override + public int UpdateInspection(InspectionPurchasedDto inspectionPurchasedDto) throws Exception { + int insertResult = 0; + InspectionPurchased inspectionPurchased = inspectionPurchasedMapper.selectById(inspectionPurchasedDto.getId()); + if (ObjectUtils.isNotEmpty(inspectionPurchasedDto.getFile())) { + if (ObjectUtils.isNotEmpty(inspectionPurchased.getFileUrl())){ + if (inspectionPurchased != null && inspectionPurchased.getFileUrl() != null) { + // 妫�鏌� MinIO 涓枃浠舵槸鍚﹀瓨鍦� + if (minioUtils.objectExists(bucketName, inspectionPurchased.getFileUrl())) { + // 鍏堝垹闄� MinIO 涓殑瀵硅薄 + minioUtils.removeObjectsResult(bucketName, inspectionPurchased.getFileUrl()); + } + } + } + try { + String contentType = inspectionPurchasedDto.getFile().getContentType(); + String category = contentType != null && contentType.startsWith("image/") ? "images" : "docs"; + MinioResult upload = minioUtils.upload(bucketName, inspectionPurchasedDto.getFile(), true); + // 璁板綍瀛樺偍璺緞 + inspectionPurchased.setFileUrl(upload.getBucketFileName()); + inspectionPurchased.setFilePreviewUrl(upload.getPreviewExpiry()); + inspectionPurchased.setType(category.equals("images") ? 1 : 2); + // 鏁版嵁搴撴搷浣� + insertResult = inspectionPurchasedMapper.updateById(inspectionPurchased); + if (insertResult <= 0) { + throw new ErrorException("鏁版嵁搴撴彃鍏ュけ璐�"); + } + return insertResult; + } catch (Exception e) { + throw new Exception("绯荤粺寮傚父: ", e); + } + } + return insertResult; + } +} -- Gitblit v1.9.3