package cn.cslg.pas.service.business; import cn.cslg.pas.common.dto.customAnalyse.SelectCustomAnalyseDTO; import cn.cslg.pas.common.dto.customAnalyse.SelectCustomAnalyseListDTO; 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.utils.Response; import cn.cslg.pas.common.vo.customAnalyse.CustomAnalyseIdVO; import cn.cslg.pas.common.vo.customAnalyse.CustomAnalyseVO; import cn.cslg.pas.common.vo.customAnalyse.SelectAnalyseVO; import cn.cslg.pas.common.vo.customAnalyse.SelectCustomAnalyseVO; import cn.cslg.pas.domain.business.CustomAnalysisItem; import cn.cslg.pas.exception.UnLoginException; import cn.cslg.pas.mapper.CustomAnalysisItemMapper; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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 org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 自定义分析项目Service层 * * @Author zero * @Date 2024/01/12 */ @Service public class CustomAnalyseService extends ServiceImpl { @Autowired private CacheUtils cacheUtils; @Autowired private LoginUtils loginUtils; @Autowired private CustomAnalysisItemMapper customAnalysisItemMapper; public List queryAnalyseGroup(SelectCustomAnalyseVO vo) { List list = new ArrayList<>(); //获取登陆人信息 用于设置创建人 PersonnelVO personnelVO = new PersonnelVO(); try { personnelVO = cacheUtils.getLoginUser(loginUtils.getId()); } catch (Exception e) { throw new UnLoginException("未登录"); } SelectAnalyseVO analyseVO = new SelectAnalyseVO(); analyseVO.setProjectId(vo.getProjectId()); analyseVO.setType(vo.getType()); analyseVO.setTenantId(personnelVO.getTenantId()); analyseVO.setCreatorId(personnelVO.getId()); list = customAnalysisItemMapper.queryAnalyseGroup(analyseVO); return list; } public SelectCustomAnalyseDTO queryAnalyseGroupDetail(CustomAnalyseIdVO vo) { SelectCustomAnalyseDTO dto = new SelectCustomAnalyseDTO(); CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId()); if (item.getParentId() != null) { CustomAnalysisItem parentItem = customAnalysisItemMapper.selectById(item.getParentId()); dto.setParentId(item.getParentId()); dto.setParentName(parentItem.getName()); } BeanUtils.copyProperties(item, dto); return dto; } @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) public Integer addAnalyseGroup(CustomAnalyseVO vo) { String uid = IdUtil.simpleUUID(); //获取登陆人信息 用于设置创建人 PersonnelVO personnelVO = new PersonnelVO(); try { personnelVO = cacheUtils.getLoginUser(loginUtils.getId()); } catch (Exception e) { throw new UnLoginException("未登录"); } CustomAnalysisItem item = new CustomAnalysisItem(); item.setUid(uid); BeanUtils.copyProperties(vo, item); item.setTenantId(personnelVO.getTenantId()); item.setCreateId(personnelVO.getId()); item.setCreateName(personnelVO.getName()); item.setCreateTime(new Date()); item.setUpdateTime(new Date()); item.insert(); return item.getId(); } @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) public Integer editAnalyseGroup(CustomAnalyseVO vo) { //获取登陆人信息 用于设置创建人 PersonnelVO personnelVO = new PersonnelVO(); try { personnelVO = cacheUtils.getLoginUser(loginUtils.getId()); } catch (Exception e) { throw new UnLoginException("未登录"); } CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId()); BeanUtils.copyProperties(vo, item); item.setTenantId(personnelVO.getTenantId()); item.setCreateId(personnelVO.getId()); item.setCreateName(personnelVO.getName()); item.setUpdateTime(new Date()); item.insert(); return item.getId(); } @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) public Integer delAnalyseGroup(CustomAnalyseIdVO vo) throws Exception { CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId()); long count = this.count(new LambdaQueryWrapper() .eq(CustomAnalysisItem::getParentId, vo.getId())); if (count > 0) { throw new Exception("删除失败,请先删除子节点"); } this.removeById(vo.getId()); return item.getId(); } }