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;
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
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.LaboratoryDto;
|
import com.yuanchu.mom.dto.SampleTypeDto;
|
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.StandardTemplate;
|
import com.yuanchu.mom.pojo.StandardTree;
|
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 java.io.IOException;
|
import java.io.InputStream;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.atomic.AtomicReference;
|
|
/**
|
* @author Administrator
|
* @description 针对表【standard_tree(标准树)】的数据库操作Service实现
|
* @createDate 2024-03-01 15:06:44
|
*/
|
@Service
|
@AllArgsConstructor
|
public class StandardTreeServiceImpl extends ServiceImpl<StandardTreeMapper, StandardTree>
|
implements StandardTreeService {
|
|
private StandardTreeMapper standardTreeMapper;
|
|
private StandardMethodListService standardMethodListService;
|
|
private StandardProductListMapper standardProductListMapper;
|
|
private StandardProductListService standardProductListService;
|
|
private StandardTemplateService standardTemplateService;
|
|
private EnumService enumService;
|
|
@Override
|
public List<FactoryDto> 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
|
@Transactional(rollbackFor = Exception.class)
|
public int addStandardTree(StandardTree standardTree) {
|
return standardTreeMapper.insert(standardTree);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public int delStandardTree(String tree) {
|
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]));
|
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]));
|
break;
|
case 3:
|
standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]));
|
break;
|
case 2:
|
standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]));
|
break;
|
case 1:
|
standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]));
|
break;*/
|
}
|
return 1;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public int addStandardProduct(String ids, String tree) {
|
String[] trees = tree.split(" - ");
|
JSONArray jsonArray = JSON.parseArray(ids);
|
for (Object o : jsonArray) {
|
StandardProductList standardProductList = standardTreeMapper.selectStandardProductById(Integer.parseInt("" + o));
|
standardProductList.setFactory(trees[0]);
|
try {
|
standardProductList.setLaboratory(trees[1]);
|
} catch (Exception e) {
|
}
|
try {
|
standardProductList.setSampleType(trees[2]);
|
} catch (Exception e) {
|
}
|
try {
|
standardProductList.setSample(trees[3]);
|
} catch (Exception e) {
|
}
|
try {
|
standardProductList.setModel(trees[4]);
|
} catch (Exception e) {
|
}
|
standardProductListMapper.insert(standardProductList);
|
}
|
return 1;
|
}
|
|
@Override
|
public List<SampleTypeDto> getStandardTree2() {
|
return standardTreeMapper.getStandardTree2();
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public int upStandardProducts(Map<String, Object> product) {
|
List<Integer> ids = JSON.parseArray(product.get("ids") + "");
|
StandardProductList productList = JSON.parseObject(JSON.toJSONString(product.get("standardProductList")), StandardProductList.class);
|
standardProductListMapper.update(productList, Wrappers.<StandardProductList>lambdaUpdate().in(StandardProductList::getId, ids));
|
return 1;
|
}
|
|
@Override
|
public List<StandardTree> getStandTreeBySampleType(String laboratory, String sampleType) {
|
return standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery()
|
.eq(StandardTree::getLaboratory, laboratory)
|
.eq(StandardTree::getSampleType, sampleType)
|
.select(StandardTree::getModel, StandardTree::getSample));
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void inExcelOfTree(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) {
|
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(null);
|
} 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());
|
} 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) {
|
StringBuilder buffer = new StringBuilder();
|
String input = list.get(8).toString();
|
buffer.append("[");
|
String[] values = input.split("、");
|
for (String value : values) {
|
buffer.append("\"").append(value.trim()).append("\",");
|
}
|
buffer.deleteCharAt(buffer.length() - 1);
|
buffer.append("]");
|
str.setMethod(buffer.toString());
|
}
|
|
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.setState(1);
|
lists.add(str);
|
}
|
});
|
lists.forEach(a->{
|
if(a.getId() != null){
|
standardProductListMapper.updateById(a);
|
}else{
|
standardProductListMapper.insert(a);
|
}
|
});
|
}
|
}
|