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(); } } 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 = "对象代å·") private String code; @ExcelProperty(value = "产ååç§°") private String name; @ExcelProperty(value = "产ååç§°(EN)") private String nameEn; } 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); } } 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); } 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); } } 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(); } 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); } 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)); }