From 9a98121231685145fdc0f78ac2d48d02e0eb68d6 Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期三, 03 七月 2024 22:22:00 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java | 133 +++++++++++++++++++++++++++++++++ cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectData.java | 25 ++++++ cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java | 7 + inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java | 2 cnas-server/src/main/java/com/yuanchu/mom/controller/CapacityScopeController.java | 17 ++++ inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java | 15 ++- cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectListener.java | 38 +++++++++ cnas-server/src/main/java/com/yuanchu/mom/service/ProductService.java | 3 8 files changed, 234 insertions(+), 6 deletions(-) diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/CapacityScopeController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/CapacityScopeController.java index 7be141e..4020ab9 100644 --- a/cnas-server/src/main/java/com/yuanchu/mom/controller/CapacityScopeController.java +++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/CapacityScopeController.java @@ -2,12 +2,15 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.poi.excel.ExcelUtil; +import com.alibaba.excel.EasyExcel; import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.annotation.ValueAuth; import com.yuanchu.mom.annotation.ValueClassify; import com.yuanchu.mom.dto.PageTestObjectDto; +import com.yuanchu.mom.excel.StructureTestObjectData; +import com.yuanchu.mom.excel.StructureTestObjectListener; import com.yuanchu.mom.exception.ErrorException; import com.yuanchu.mom.pojo.*; import com.yuanchu.mom.service.*; @@ -22,8 +25,8 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.io.InputStream; -import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -367,4 +370,16 @@ } return Result.success(); } + + @ValueClassify(value = "鑳藉姏鑼冨洿") + @ApiOperation(value = "瀵煎叆妫�楠屽璞�") + @PostMapping("/importExcel") + public Result importExcel(@RequestParam("file") MultipartFile file) { + try { + EasyExcel.read(file.getInputStream(), StructureTestObjectData.class, new StructureTestObjectListener(productService)).sheet().doRead(); + } catch (IOException e) { + e.printStackTrace(); + } + return Result.success(); + } } \ No newline at end of file diff --git a/cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectData.java b/cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectData.java new file mode 100644 index 0000000..b891531 --- /dev/null +++ b/cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectData.java @@ -0,0 +1,25 @@ +package com.yuanchu.mom.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +@Data +public class StructureTestObjectData { + @ExcelProperty(value = "鍦烘墍") + private String laboratoryId; + + @ExcelProperty(value = "妫�楠屽璞�") + private String specimenName; + + @ExcelProperty(value = "妫�楠屽璞�(EN)") + private String specimenNameEn; + + @ExcelProperty(value = "瀵硅薄浠e彿") + private String code; + + @ExcelProperty(value = "浜у搧鍚嶇О") + private String name; + + @ExcelProperty(value = "浜у搧鍚嶇О(EN)") + private String nameEn; +} diff --git a/cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectListener.java b/cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectListener.java new file mode 100644 index 0000000..b83665d --- /dev/null +++ b/cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectListener.java @@ -0,0 +1,38 @@ +package com.yuanchu.mom.excel; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.yuanchu.mom.service.ProductService; + +import java.util.ArrayList; +import java.util.List; + +public class StructureTestObjectListener extends AnalysisEventListener<StructureTestObjectData> { + private static final int BATCH_COUNT = 1000; + List<StructureTestObjectData> list = new ArrayList<>(); + + private ProductService productService; + + public StructureTestObjectListener(ProductService productService) { + this.productService = productService; + } + + @Override + public void invoke(StructureTestObjectData data, AnalysisContext analysisContext) { + list.add(data); + if (list.size() >= BATCH_COUNT) { + save(); + list.clear(); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + save(); + } + + + private void save() { + productService.importPartExcel(list); + } +} diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/ProductService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/ProductService.java index a654735..21d7695 100644 --- a/cnas-server/src/main/java/com/yuanchu/mom/service/ProductService.java +++ b/cnas-server/src/main/java/com/yuanchu/mom/service/ProductService.java @@ -2,8 +2,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.yuanchu.mom.excel.StructureTestObjectData; import com.yuanchu.mom.pojo.Product; +import java.util.List; import java.util.Map; /** @@ -21,4 +23,5 @@ int delProduct(Integer id); + void importPartExcel(List<StructureTestObjectData> list); } diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java index 6949320..37e6f93 100644 --- a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java +++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yuanchu.mom.common.GetLook; import com.yuanchu.mom.common.PrintChina; +import com.yuanchu.mom.excel.StructureTestObjectData; import com.yuanchu.mom.mapper.ProductMapper; import com.yuanchu.mom.pojo.Product; import com.yuanchu.mom.service.ProductService; @@ -12,6 +13,7 @@ import org.springframework.stereotype.Service; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -52,6 +54,11 @@ public int delProduct(Integer id) { return productMapper.deleteById(id); } + + @Override + public void importPartExcel(List<StructureTestObjectData> list) { + System.out.println(list); + } } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java index 82511d8..aa41a21 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java @@ -11,7 +11,10 @@ import com.yuanchu.mom.service.StandardProductListService; import com.yuanchu.mom.service.StandardTreeService; import com.yuanchu.mom.vo.Result; -import io.swagger.annotations.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -168,9 +171,13 @@ @ValueClassify("鏍囧噯搴�") @ApiOperation("瀵煎叆鏍囧噯搴�") - @PostMapping("/inExcelOfTree") - public Result inExcelOfTree(@RequestParam("file") MultipartFile file) { - standardTreeService.inExcelOfTree(file); + @PostMapping("/inExcelOfTree/{isEquipment}") + public Result inExcelOfTree(@RequestParam("file") MultipartFile file, @PathVariable("isEquipment") Boolean isEquipment) { + if (!isEquipment) { + standardTreeService.inExcelOfTree(file); + } else { + standardTreeService.importWorkstationExcel(file); + } return Result.success(); } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java index 44d3be4..8496f6a 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java @@ -37,4 +37,6 @@ void resetTreeOfHour(String tree, Integer standardId); void resetTreeOfAsk(String tree, Integer standardId); + + void importWorkstationExcel(MultipartFile file); } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java index 353d6ac..8a3deb0 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java @@ -1,6 +1,5 @@ package com.yuanchu.mom.service.impl; -import cn.hutool.core.lang.Console; import cn.hutool.poi.excel.ExcelUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -159,6 +158,10 @@ .select(StandardTree::getModel, StandardTree::getSample)); } + /** + * 娌冲彛妫�娴嬩腑蹇冨鍏� + * @param file + */ @Override @Transactional(rollbackFor = Exception.class) public void inExcelOfTree(MultipartFile file) { @@ -286,6 +289,134 @@ } @Override + public void importWorkstationExcel(MultipartFile file) { + InputStream inputStream; + try { + inputStream = file.getInputStream(); + } catch (IOException e) { + throw new RuntimeException(e); + } + List<StandardProductList> lists = new ArrayList<>(); + AtomicReference<String> laboratory = new AtomicReference<>(); + ExcelUtil.readBySax(inputStream, 0, (i, l, list) -> { + StandardProductList str = new StandardProductList(); + if (i == 0 && l == 1) { + laboratory.set(standardTreeMapper.getLaboratory(list.get(1) + "")); + if (laboratory.get() == null) { + throw new ErrorException("妫�楠屽璞′笉瀛樺湪锛�" + list.get(1)); + } + } + if (i == 0 && l >= 1) { + Integer standardMethodId = standardMethodListService.getStandardMethodId(list.get(0) + ""); + if (standardMethodId == null) { + throw new ErrorException("鏍囧噯缂栧彿涓嶅瓨鍦細" + list.get(0)); + } + str.setStandardMethodListId(standardMethodId); + str.setSampleType(list.get(1) + ""); + if (list.get(2) != null) { + String sample = baseMapper.selSample(list.get(2) + ""); + if (sample == null) { + throw new ErrorException("鏍峰搧涓嶅瓨鍦細" + list.get(2)); + } + str.setSample(list.get(2) + ""); + } else { + str.setSample(null); + } + if (list.get(3) != null) { + str.setModel(list.get(3) + ""); + Long aLong = standardTreeMapper.selectCount(Wrappers.<StandardTree>lambdaQuery() + .eq(StandardTree::getModel, str.getModel()) + .eq(StandardTree::getSampleType, list.get(1) + "")); + if (aLong == 0) { + StandardTree standardTree = new StandardTree(); + standardTree.setFactory("涓ぉ绉戞妧妫�娴嬩腑蹇�"); + standardTree.setLaboratory(laboratory.get()); + standardTree.setSampleType(str.getSampleType()); + standardTree.setSample(str.getSample()); + standardTree.setModel(str.getModel()); + standardTreeMapper.insert(standardTree); + } + } else { + str.setModel(null); + } + str.setInspectionItemClass(list.get(4).toString()); + str.setInspectionItemClassEn(list.get(5).toString()); + // 寮�濮嬪姞2 + str.setInspectionItem(list.get(6) + ""); + if (list.get(8) == null) { + str.setInspectionItemSubclass(""); + } else { + str.setInspectionItemSubclass(list.get(8).toString()); + } + StandardProductList db_str; + try { + db_str = standardProductListMapper.getOne(str.getStandardMethodListId(), str.getInspectionItem(), str.getSample(), str.getInspectionItemSubclass(), str.getModel()); + } catch (Exception e) { + throw new ErrorException("閲嶅鏌ヨ锛�" + str.getInspectionItem() + " " + str.getInspectionItemSubclass()); + } + if (ObjectUtils.isNotEmpty(db_str)) { + str.setId(db_str.getId()); + str.setStructureItemParameterId(db_str.getStructureItemParameterId()); + } + if (list.get(10) != null) { + str.setMethodS(list.get(10) + ""); + } + + if (list.get(13) == null) { + str.setTell(null); + } else { + str.setTell(list.get(13).toString()); + } + + if (list.get(14) == null) { + str.setAsk(null); + } else { + str.setAsk(list.get(14).toString()); + } + + if (list.get(15) == null) { + str.setPrice(null); + } else { + str.setPrice((list.get(15).toString())); + } + + if (list.get(16) == null) { + str.setManHour(null); + } else { + str.setManHour(list.get(16).toString()); + } + + StandardTemplate standTempIdByName = standardTemplateService.getStandTempIdByName(String.valueOf(list.get(23))); + if (standTempIdByName != null) { + str.setTemplateId(standTempIdByName.getId()); + } else { + throw new ErrorException("妯℃澘涓嶅瓨鍦細" + list.get(23)); + } + str.setFactory("涓ぉ绉戞妧妫�娴嬩腑蹇�"); + str.setLaboratory(laboratory.get()); + str.setState(1); + str.setTree(str.getFactory() + " - " + str.getLaboratory() + " - " + str.getSampleType() + " - " + str.getSample() + " - " + (str.getModel() == null ? "" : str.getModel())); + try { + str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass())); + } catch (Exception e) { + str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\",\"" + str.getSample() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass())); + } + if (str.getStructureItemParameterId() == null) { + throw new ErrorException("妫�楠岄」鐩笉瀛樺湪锛�" + str.getInspectionItem() + " " + str.getInspectionItemSubclass()); + } + lists.add(str); + } + }); + lists.forEach(a -> { + if (a.getId() != null) { + standardProductListMapper.updateById(a); + } else { + standardProductListMapper.insert(a); + } + }); + } + + @Override public void resetTreeOfPrice(String tree, Integer standardId) { standardProductListMapper.update(null, Wrappers.<StandardProductList>lambdaUpdate().like(StandardProductList::getTree, tree).eq(StandardProductList::getStandardMethodListId, standardId).set(StandardProductList::getPrice, null)); } -- Gitblit v1.9.3