package cn.cslg.pas.service.business; import cn.cslg.pas.common.dto.business.AvoidDesignDTO; import cn.cslg.pas.common.dto.business.AvoidDesignInsertDTO; import cn.cslg.pas.common.model.cronModel.PersonnelVO; import cn.cslg.pas.common.utils.CacheUtils; import cn.cslg.pas.common.utils.LoginUtils; import cn.cslg.pas.common.vo.business.AvoidDesignVO; import cn.cslg.pas.domain.business.AvoidDesign; import cn.cslg.pas.domain.business.Feature; import cn.cslg.pas.domain.business.ReportProject; import cn.cslg.pas.exception.UnLoginException; import cn.cslg.pas.exception.XiaoShiException; import cn.cslg.pas.mapper.AvoidDesignMapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 回避设计Service * @Author xiexiang * @Date 2023/12/5 */ @Service public class AvoidDesignService extends ServiceImpl { @Autowired private CacheUtils cacheUtils; @Autowired private LoginUtils loginUtils; @Autowired private FeatureService featureService; @Autowired private ReportProjectService reportProjectService; /** * 新增回避设计 * @param avoidDesignInsertDTO * @return */ public List addAvoidDesign(AvoidDesignInsertDTO avoidDesignInsertDTO){ // //获取登录人信息 // PersonnelVO personnelVO = new PersonnelVO(); // try { // personnelVO = cacheUtils.getLoginUser(loginUtils.getId()); // } catch (Exception e) { // throw new UnLoginException("未登录"); // } Integer projectId = avoidDesignInsertDTO.getProjectId(); if (projectId == null) { throw new XiaoShiException("projectId不能为空"); } //根据projctId查询出专利号 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ReportProject::getProjectId, projectId); List reportProjects = reportProjectService.list(queryWrapper); String patentNo = ""; if (!reportProjects.isEmpty()) { ReportProject reportProject = reportProjects.get(0); patentNo = reportProject.getSignPatentNo(); } else { throw new XiaoShiException("未查询到报告专利号"); } List avoidDesignDTOS = avoidDesignInsertDTO.getAvoidDesignDTOS(); //根据专利号和projectId,删除特征 LambdaQueryWrapper deleteWrapper =new LambdaQueryWrapper<>(); deleteWrapper.eq(Feature::getPatentNo,patentNo) .eq(Feature::getProjectId,projectId); featureService.remove(deleteWrapper); //根据projectId删除回避设计方向数据 LambdaQueryWrapper deleteWrapper2 = new LambdaQueryWrapper<>(); deleteWrapper2.eq(AvoidDesign::getProjectId, projectId); this.remove(deleteWrapper2); //新增插入回避设计方向集合 List avoidDesignList = new ArrayList<>(); //遍历传入集合 for (AvoidDesignDTO avoidDesignDTO : avoidDesignDTOS) { Feature feature = new Feature(); feature.setRightSort(avoidDesignDTO.getRightSort()); feature.setPatentNo(patentNo); feature.setProjectId(projectId); feature.setContent(avoidDesignDTO.getContent()); feature.setExplainText(avoidDesignDTO.getExpalinText()); // feature.setCreateId(personnelVO.getId()); feature.setCreateId("328"); feature.setRightType(avoidDesignDTO.getRightType()); feature.insert(); //获取特征id Integer featureId = feature.getId(); //插入回避设计方向 AvoidDesign avoidDesign = new AvoidDesign(); avoidDesign.setProjectId(projectId); avoidDesign.setFeatureId(featureId); avoidDesign.setDirection(avoidDesignDTO.getDirection()); // avoidDesign.setCreateId(personnelVO.getId()); avoidDesign.setCreateId("328"); avoidDesignList.add(avoidDesign); } List ids = new ArrayList<>(); if (!avoidDesignList.isEmpty()) { this.saveBatch(avoidDesignList); ids = avoidDesignList.stream().map(AvoidDesign::getId).collect(Collectors.toList()); } return ids; } /** * 查询回避设计 */ public List queryAvoidDesign(Integer projectId){ List avoidDesignVOS = new ArrayList<>(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(AvoidDesign::getProjectId, projectId); List avoidDesignList = this.list(queryWrapper); if (!avoidDesignList.isEmpty()) { avoidDesignList.forEach(item -> { AvoidDesignVO avoidDesignVO = new AvoidDesignVO(); BeanUtils.copyProperties(item, avoidDesignVO); avoidDesignVOS.add(avoidDesignVO); }); } return avoidDesignVOS; } public void deleteAvoidDesign(){ } }