From e22d3ca089ad03cc33a7b5f440a67415283f75d1 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期二, 31 十二月 2024 15:18:51 +0800
Subject: [PATCH] 无源器件的报告
---
inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java | 370 ++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 356 insertions(+), 14 deletions(-)
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 3977838..c728dec 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,29 +1,37 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.poi.excel.ExcelUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yuanchu.mom.dto.FactoryDto;
-import com.yuanchu.mom.dto.SampleTypeDto;
-import com.yuanchu.mom.mapper.StandardMethodListMapper;
+import com.yuanchu.mom.dto.*;
+import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.StandardProductListMapper;
import com.yuanchu.mom.mapper.StandardTreeMapper;
-import com.yuanchu.mom.pojo.StandardProductList;
-import com.yuanchu.mom.pojo.StandardTree;
-import com.yuanchu.mom.service.StandardMethodListService;
-import com.yuanchu.mom.service.StandardProductListService;
-import com.yuanchu.mom.service.StandardTreeService;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.service.*;
import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URLEncoder;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
/**
* @author Administrator
@@ -37,22 +45,60 @@
private StandardTreeMapper standardTreeMapper;
- private StandardMethodListMapper standardMethodListMapper;
-
private StandardMethodListService standardMethodListService;
private StandardProductListMapper standardProductListMapper;
private StandardProductListService standardProductListService;
+ private StandardTemplateService standardTemplateService;
+
+ private EnumService enumService;
+
@Override
public List<FactoryDto> selectStandardTreeList() {
- return standardTreeMapper.selectStandardTreeList();
+ List<FactoryDto> factoryDtos = standardTreeMapper.selectStandardTreeList();
+ for (FactoryDto factoryDto : factoryDtos) {
+ for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) {
+ for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) {
+ if (sampleTypeDto.getChildren().size() == 0) {
+ sampleTypeDto.setChildren(standardTreeMapper.getStandardTree3(sampleTypeDto.getValue()));
+ }
+ }
+ }
+ }
+ return factoryDtos;
+ }
+
+ @Override
+ public List<SampleTypeDto> selectStandardTreeList2() {
+ List<SampleTypeDto> sampleTypeDtos= new ArrayList<>();
+ List<FactoryDto> factoryDtos = standardTreeMapper.selectStandardTreeList();
+ for (FactoryDto factoryDto : factoryDtos) {
+ for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) {
+ for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) {
+ if (sampleTypeDto.getChildren().size() == 0) {
+ sampleTypeDto.setChildren(standardTreeMapper.getStandardTree3(sampleTypeDto.getValue()));
+ }
+ sampleTypeDtos.add(sampleTypeDto);
+ }
+ }
+ }
+ return sampleTypeDtos;
}
@Override
@Transactional(rollbackFor = Exception.class)
public int addStandardTree(StandardTree standardTree) {
+ StandardTree tree = standardTreeMapper.selectOne(Wrappers.<StandardTree>lambdaQuery()
+ .eq(StandardTree::getFactory, standardTree.getFactory())
+ .eq(StandardTree::getLaboratory, standardTree.getLaboratory())
+ .eq(StandardTree::getSampleType, standardTree.getSampleType())
+ .eq(StandardTree::getSample, standardTree.getSample())
+ .eq(StandardTree::getModel, standardTree.getModel()));
+ if (tree != null) {
+ throw new ErrorException("璇ュ瀷鍙峰凡瀛樺湪");
+ }
return standardTreeMapper.insert(standardTree);
}
@@ -62,7 +108,11 @@
String[] trees = tree.split(" - ");
switch (trees.length) {
case 5:
- standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3]).eq(StandardTree::getModel, trees[4]));
+ if (trees[3] == null) {
+ standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).isNull(StandardTree::getSample).eq(StandardTree::getModel, trees[4]));
+ } else {
+ standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3]).eq(StandardTree::getModel, trees[4]));
+ }
break;
/*case 4:
standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3]));
@@ -117,8 +167,12 @@
@Override
@Transactional(rollbackFor = Exception.class)
public int upStandardProducts(Map<String, Object> product) {
- List<Integer> ids = JSON.parseArray(product.get("ids")+"");
+ List<Integer> ids = JSON.parseArray(product.get("ids") + "");
StandardProductList productList = JSON.parseObject(JSON.toJSONString(product.get("standardProductList")), StandardProductList.class);
+ if (productList.getMethodS() != null) {
+ standardProductListMapper.update(productList, Wrappers.<StandardProductList>lambdaUpdate().in(StandardProductList::getId, ids).like(StandardProductList::getMethod, productList.getMethodS()));
+ return 1;
+ }
standardProductListMapper.update(productList, Wrappers.<StandardProductList>lambdaUpdate().in(StandardProductList::getId, ids));
return 1;
}
@@ -131,7 +185,12 @@
.select(StandardTree::getModel, StandardTree::getSample));
}
+ /**
+ * 娌冲彛妫�娴嬩腑蹇冨鍏�
+ * @param file
+ */
@Override
+ @Transactional(rollbackFor = Exception.class)
public void inExcelOfTree(MultipartFile file) {
InputStream inputStream;
try {
@@ -139,12 +198,295 @@
} catch (IOException e) {
throw new RuntimeException(e);
}
+ List<StandardProductList> lists = new ArrayList<>();
+ AtomicReference<String> laboratory = new AtomicReference<>();
ExcelUtil.readBySax(inputStream, 0, (i, l, list) -> {
- System.out.println(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.setInspectionItem(list.get(4) + "");
+ if (list.get(6) == null) {
+ str.setInspectionItemSubclass("");
+ } else {
+ str.setInspectionItemSubclass(list.get(6).toString());
+ }
+ StandardProductList db_str;
+ try {
+ db_str = standardProductListMapper.getOne(str.getStandardMethodListId(), str.getInspectionItem(), str.getSample(), str.getInspectionItemSubclass(), str.getModel(), str.getInspectionItemClass());
+ } 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(8) != null) {
+ str.setMethodS(list.get(8) + "");
+ }
+ if (list.get(11) == null) {
+ str.setTell(null);
+ } else {
+ str.setTell(list.get(11).toString());
+ }
+
+ if (list.get(12) == null) {
+ str.setAsk(null);
+ } else {
+ str.setAsk(list.get(12).toString());
+ }
+
+ if (list.get(13) == null) {
+ str.setPrice(null);
+ } else {
+ str.setPrice((list.get(13).toString()));
+ }
+
+ if (list.get(14) == null) {
+ str.setManHour(null);
+ } else {
+ str.setManHour(list.get(14).toString());
+ }
+
+ StandardTemplate standTempIdByName = standardTemplateService.getStandTempIdByName(String.valueOf(list.get(21)));
+ if (standTempIdByName != null) {
+ str.setTemplateId(standTempIdByName.getId());
+ } else {
+ throw new ErrorException("妯℃澘涓嶅瓨鍦細" + list.get(21));
+ }
+ 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(), str.getInspectionItemClass()));
+ } catch (Exception e) {
+ str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\",\"" + str.getSample() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass(), str.getInspectionItemClass()));
+ }
+ 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 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(), str.getInspectionItemClass());
+ } 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(), str.getInspectionItemClass()));
+ } catch (Exception e) {
+ str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\",\"" + str.getSample() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass(), str.getInspectionItemClass()));
+ }
+ 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 exportStandTree(HttpServletResponse response) throws IOException {
+ //鏌ヨ鏍囧噯搴撴暟鎹�,鎸夌収浜у搧澶х被鍒嗙被
+ List<standardTreeDto> standardTreeDtos = standardTreeMapper.exportStandTree();
+ Map<String, List<standardTreeDto>> collect = standardTreeDtos.stream().collect(Collectors.groupingBy(standardTreeDto -> standardTreeDto.getSampleType()));
+ List<Map.Entry<String, List<standardTreeDto>>> entryList = new ArrayList<>(collect.entrySet());
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("UTF-8");
+ // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
+ String fileName = URLEncoder.encode("鏍囧噯搴撳鍑�", "UTF-8");
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+ try {
+ // 鏂板缓ExcelWriter
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
+ for (int i = 0; i < collect.size(); i++) {
+ Map.Entry<String, List<standardTreeDto>> entry = entryList.get(i);
+ WriteSheet mainSheet = EasyExcel.writerSheet(i, entry.getKey()+"鏍囧噯搴撳鍑�").head(standardTreeDto.class).build();
+ excelWriter.write(entry.getValue(), mainSheet);
+ }
+ // 鍏抽棴娴�
+ excelWriter.finish();
+ } catch (IOException e) {
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+
+ @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));
+ }
+
+ @Override
+ public void resetTreeOfHour(String tree, Integer standardId) {
+ standardProductListMapper.update(null, Wrappers.<StandardProductList>lambdaUpdate().like(StandardProductList::getTree, tree).eq(StandardProductList::getStandardMethodListId, standardId).set(StandardProductList::getManHour, null));
+ }
+
+ @Override
+ public void resetTreeOfAsk(String tree, Integer standardId) {
+ standardProductListMapper.update(null, Wrappers.<StandardProductList>lambdaUpdate().like(StandardProductList::getTree, tree).eq(StandardProductList::getStandardMethodListId, standardId)
+ .set(StandardProductList::getAsk, null)
+ .set(StandardProductList::getTell, null)
+ .set(StandardProductList::getSection, null)
+ .set(StandardProductList::getPrice, null)
+ .set(StandardProductList::getManHour, null));
}
}
--
Gitblit v1.9.3