package com.yuanchu.mom.service.impl;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.yuanchu.mom.common.GetLook;
|
import com.yuanchu.mom.dto.FactoryDto;
|
import com.yuanchu.mom.mapper.StandardMethodListMapper;
|
import com.yuanchu.mom.mapper.StandardProductListMapper;
|
import com.yuanchu.mom.pojo.StandardMethodList;
|
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.mapper.StandardTreeMapper;
|
import lombok.AllArgsConstructor;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.time.LocalDateTime;
|
import java.util.*;
|
import java.util.concurrent.CompletableFuture;
|
|
/**
|
* @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 StandardMethodListMapper standardMethodListMapper;
|
|
private StandardMethodListService standardMethodListService;
|
|
private StandardProductListMapper standardProductListMapper;
|
|
private StandardProductListService standardProductListService;
|
|
private GetLook getLook;
|
|
@Override
|
public List<FactoryDto> selectStandardTreeList() {
|
return standardTreeMapper.selectStandardTreeList();
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public int addStandardTree(StandardTree standardTree) {
|
List<StandardProductList> productList = standardTreeMapper.getStandardProductListBySample(standardTree.getSampleType());
|
List<StandardMethodList> methodList = standardTreeMapper.getStandardMethodListBySample(standardTree.getSampleType());
|
for (StandardMethodList standardMethod : methodList) {
|
standardMethod.setFactory(standardTree.getFactory());
|
standardMethod.setLaboratory(standardTree.getLaboratory());
|
standardMethod.setSampleType(standardTree.getSampleType());
|
standardMethod.setSample(standardTree.getSample());
|
standardMethod.setModel(standardTree.getModel());
|
standardMethodListMapper.insert(standardMethod);
|
for (StandardProductList standardProductList : productList) {
|
standardProductList.setFactory(standardTree.getFactory());
|
standardProductList.setLaboratory(standardTree.getLaboratory());
|
standardProductList.setSampleType(standardTree.getSampleType());
|
standardProductList.setSample(standardTree.getSample());
|
standardProductList.setModel(standardTree.getModel());
|
standardProductList.setStandardMethodListId(standardMethod.getId());
|
standardProductList.setState(1);
|
standardProductList.setId(null);
|
standardProductList.setCreateUser(null);
|
standardProductList.setCreateTime(null);
|
standardProductList.setUpdateUser(null);
|
standardProductList.setUpdateTime(null);
|
standardProductListMapper.insert(standardProductList);
|
}
|
}
|
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;
|
}
|
Map<String, List<?>> listMap = standardMethodListService.selectsStandardMethodByFLSSM2(tree);
|
if (listMap.get("standardMethodList").size() != 0) {
|
for (Object o : listMap.get("standardMethodList")) {
|
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(o));
|
List<StandardProductList> list = standardProductListService.selectStandardProductListByMethodId((Integer) jsonObject.get("id"));
|
if (list.size() != 0) {
|
standardProductListMapper.deleteBatchIds(list);
|
}
|
}
|
standardMethodListMapper.deleteBatchIds(listMap.get("standardMethodList"));
|
}
|
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
|
@Transactional(rollbackFor = Exception.class)
|
public void reTreeBySampleType(String sampleType) {
|
Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
|
CompletableFuture.supplyAsync(() -> {
|
List<StandardProductList> productList = standardTreeMapper.getStandardProductListBySample(sampleType);
|
List<StandardProductList> productList1 = JSON.parseArray(JSON.toJSONString(productList), StandardProductList.class);
|
List<StandardMethodList> methodList = standardTreeMapper.getStandardMethodListBySample(sampleType);
|
List<StandardMethodList> methodList1 = JSON.parseArray(JSON.toJSONString(methodList), StandardMethodList.class);
|
List<StandardTree> treeList = standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery().eq(StandardTree::getSampleType, sampleType));
|
for (StandardTree tree : treeList) {
|
String treeStr = tree.getFactory() + " - " + tree.getLaboratory() + " - " + tree.getSampleType() + (tree.getSample() == null ? "" : " - " + tree.getSample()) + (tree.getModel() == null ? "" : " - " + tree.getModel());
|
List<StandardMethodList> standardMethodList = JSON.parseArray(JSON.toJSONString(standardMethodListService.selectsStandardMethodByFLSSM(treeStr).get("standardMethodList")), StandardMethodList.class);
|
for (StandardMethodList sl1 : standardMethodList) {
|
int count1 = 0;
|
for (StandardMethodList sl2 : methodList) {
|
if (sl1.getCode().equals(sl2.getCode())) {
|
sl1.setName(sl2.getName());
|
sl1.setRemark(sl2.getRemark());
|
sl2.setId(sl1.getId());
|
standardMethodListMapper.updateById(sl1);
|
List<StandardProductList> standardProductList = standardProductListService.selectStandardProductListByMethodId(sl1.getId());
|
for (StandardProductList pl1 : standardProductList) {
|
int count2 = 0;
|
for (StandardProductList pl2 : productList) {
|
if (Objects.equals(pl1.getInspectionItemSubclass(), pl2.getInspectionItemSubclass()) && Objects.equals(pl1.getInspectionItem(), pl2.getInspectionItem())) {
|
pl2.setUpdateUser(userId);
|
pl2.setUpdateTime(LocalDateTime.now());
|
pl2.setId(pl1.getId());
|
pl2.setSample(tree.getSample());
|
standardProductListMapper.updateById(pl2);
|
break;
|
} else {
|
count2++;
|
}
|
}
|
if (count2 == productList.size()) {
|
standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate().eq(StandardProductList::getStandardMethodListId, sl1.getId()));
|
}
|
}
|
for (StandardProductList pl2 : productList) {
|
if (pl2.getId() == null) {
|
pl2.setFactory(tree.getFactory());
|
pl2.setLaboratory(tree.getLaboratory());
|
pl2.setSampleType(tree.getSampleType());
|
pl2.setSample(tree.getSample());
|
pl2.setModel(tree.getModel());
|
pl2.setStandardMethodListId(sl1.getId());
|
pl2.setState(1);
|
pl2.setId(null);
|
pl2.setCreateUser(null);
|
pl2.setCreateTime(null);
|
pl2.setUpdateUser(null);
|
pl2.setUpdateTime(null);
|
standardProductListMapper.insert(pl2);
|
}
|
}
|
break;
|
} else {
|
count1++;
|
}
|
}
|
if (count1 == methodList.size()) {
|
standardMethodListMapper.deleteById(sl1);
|
standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate().eq(StandardProductList::getStandardMethodListId, sl1.getId()));
|
}
|
}
|
for (StandardMethodList sl2 : methodList) {
|
if (sl2.getId() == null) {
|
sl2.setFactory(tree.getFactory());
|
sl2.setLaboratory(tree.getLaboratory());
|
sl2.setSampleType(tree.getSampleType());
|
sl2.setSample(tree.getSample());
|
sl2.setModel(tree.getModel());
|
standardMethodListMapper.insert(sl2);
|
for (StandardProductList standardProductList : productList) {
|
standardProductList.setFactory(tree.getFactory());
|
standardProductList.setLaboratory(tree.getLaboratory());
|
standardProductList.setSampleType(tree.getSampleType());
|
standardProductList.setSample(tree.getSample());
|
standardProductList.setModel(tree.getModel());
|
standardProductList.setStandardMethodListId(sl2.getId());
|
standardProductList.setState(1);
|
standardProductList.setId(null);
|
standardProductList.setCreateUser(null);
|
standardProductList.setCreateTime(null);
|
standardProductList.setUpdateUser(null);
|
standardProductList.setUpdateTime(null);
|
standardProductListMapper.insert(standardProductList);
|
}
|
}
|
}
|
methodList = JSON.parseArray(JSON.toJSONString(methodList1), StandardMethodList.class);
|
productList = JSON.parseArray(JSON.toJSONString(productList1), StandardProductList.class);
|
}
|
return 1;
|
}).thenAccept(res -> {
|
}).exceptionally(e -> {
|
e.printStackTrace();
|
return null;
|
});
|
}
|
}
|