package com.yuanchu.limslaboratory.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.limslaboratory.mapper.LinkDetectionMapper; import com.yuanchu.limslaboratory.mapper.ProductMapper; import com.yuanchu.limslaboratory.mapper.SpecificationsMapper; import com.yuanchu.limslaboratory.pojo.LinkBasicInformation; import com.yuanchu.limslaboratory.mapper.LinkBasicInformationMapper; import com.yuanchu.limslaboratory.pojo.LinkDetection; import com.yuanchu.limslaboratory.pojo.Specifications; import com.yuanchu.limslaboratory.service.InspectionService; import com.yuanchu.limslaboratory.service.LinkBasicInformationService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yuanchu.limslaboratory.service.LinkDetectionService; import com.yuanchu.limslaboratory.utils.MyUtil; import com.yuanchu.limslaboratory.utils.RedisUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author 江苏鵷雏网络科技有限公司 * @since 2023-08-03 */ @Service public class LinkBasicInformationServiceImpl extends ServiceImpl implements LinkBasicInformationService { @Resource private LinkBasicInformationMapper linkBasicInformationMapper; @Resource private LinkDetectionMapper linkDetectionMapper; @Autowired private LinkDetectionService linkDetectionService; @Autowired private SpecificationsMapper specificationsMapperOn; @Resource private InspectionService inspectionService; @Resource private ProductMapper productMapper; @Override @Transactional(rollbackFor = Exception.class) public String addLinkBasicInformation(LinkBasicInformation linkBasicInformation) { System.err.println(linkBasicInformation); System.out.println("============>"); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().select(LinkBasicInformation::getId).eq(LinkBasicInformation::getUid, linkBasicInformation.getUid()); LinkBasicInformation linkBasicInformation1 = linkBasicInformationMapper.selectOne(queryWrapper); Optional optionalId = Optional.ofNullable(linkBasicInformation1) .map(LinkBasicInformation::getId); AtomicBoolean b=new AtomicBoolean(false); optionalId.ifPresent(l->{ QueryWrapperqueryWrapperLd = new QueryWrapper<>(); queryWrapperLd.lambda().select(LinkDetection::getInspectionStatus).eq(LinkDetection::getLinkBasicId,linkBasicInformation1.getId()); List linkDetections = linkDetectionMapper.selectList(queryWrapperLd).stream().filter(ld->ld.getInspectionStatus()==2).collect(Collectors.toList()); if(linkDetections.isEmpty()){ //执行删除 linkDetectionMapper.deleteByLinkbasic(linkBasicInformation1.getId()); linkBasicInformationMapper.deleteByID(linkBasicInformation1.getId()); }else { b.set(true); } }); if(b.get()){ return "提交失败,含有已报检样品"; } //委托编号 String code = MyUtil.getTimeSixNumberCode("SL", "SL"); linkBasicInformation.setEntrustCoding(code); //新增基本信息表 int insert = linkBasicInformationMapper.insert(linkBasicInformation); if (insert == 1) { //新增委托样品表 linkDetectionService.insertListData(linkBasicInformation.getId(), linkBasicInformation.getLinkDetectionList()); return code; } return null; } @Override public IPage> getLinkBasicPage(Page page, String entrustCoding, String sampleName, String entrusted, Integer inspectionStatus) { return linkBasicInformationMapper.getLinkBasicPage(page, entrustCoding, sampleName, entrusted, inspectionStatus); } //查询所有委托检验和样品 @Override public List> selectLinkAll() { return linkBasicInformationMapper.selectLinkAll(); } @Override public String getViewUUID(int day) { String id = String.valueOf(UUID.randomUUID()); RedisUtil.set("viewId", id, day * 24 * 60); return id; } @Override public Map selectViewUUID() { Map map = new HashMap<>(); try { map.put("id", RedisUtil.get("viewId").toString()); map.put("time", String.valueOf(RedisUtil.getExpire("viewId"))); } catch (Exception e) { map.put("id", null); map.put("time", null); } return map; } @Override public boolean isIfViewUUID(String uuid) { return uuid.equals(RedisUtil.get("viewId")); } @Override public LinkBasicInformation getContractsSampleInfo(String viewId) { return linkBasicInformationMapper.getLinkBasicInformation(viewId); } //根据委托样品删除 @Override public void delLink(Integer id) { LinkDetection linkDetection = new LinkDetection(); linkDetection.setId(id); linkDetection.setState(0); linkDetectionService.updateById(linkDetection); } @Override public Specifications getSpecificationsName(String id) { QueryWrapperqueryWrapper=new QueryWrapper<>(); queryWrapper.lambda().select(Specifications::getName) .eq(Specifications::getId,id) .eq(Specifications::getState,1); return specificationsMapperOn.selectOne(queryWrapper); } @Override public List> lookProByVer(String name, String mcode, String specifications,Integer version, Integer id) { LinkDetection linkDetection = linkDetectionMapper.selectById(id); List experiments = Arrays.stream(linkDetection.getExperiment().split(",")).collect(Collectors.toList()); //根据型号id和项目信息查询项目信息 List> products = new ArrayList<>(); for (String exper : experiments) { List> list = productMapper.selFath(Integer.parseInt(linkDetection.getSpecificationsModels()), exper, version); if (ObjectUtils.isEmpty(list)) { Map project = productMapper.selNam(Integer.parseInt(linkDetection.getSpecificationsModels()), exper, version); products.add(project); } products.addAll(list); } return products; } @Override public Object chooseVer( LinkDetection linkDetection) { return productMapper.chooseVersion(Integer.parseInt(linkDetection.getSpecificationsModels())); } }