package com.gkhy.assess.system.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.assess.common.api.CommonPage; import com.gkhy.assess.common.constant.SuperAccountConstant; import com.gkhy.assess.common.enums.UserIdentityEnum; import com.gkhy.assess.common.exception.ApiException; import com.gkhy.assess.common.utils.PageUtil; import com.gkhy.assess.system.domain.AssProjectSupplement; import com.gkhy.assess.system.domain.AssProjectSupplementFile; import com.gkhy.assess.system.domain.SysAttach; import com.gkhy.assess.system.domain.SysUser; import com.gkhy.assess.system.mapper.AssProjectSupplementFileMapper; import com.gkhy.assess.system.mapper.AssProjectSupplementMapper; import com.gkhy.assess.system.service.AssProjectSupplementFileService; import com.gkhy.assess.system.service.AssProjectSupplementService; import com.gkhy.assess.system.service.SysCommonService; import com.gkhy.assess.system.utils.ShiroUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** *

* 项目补录表 服务实现类 *

* * @author kzy * @since 2024-06-11 15:44:14 */ @Service public class AssProjectSupplementServiceImpl extends ServiceImpl implements AssProjectSupplementService { @Autowired private AssProjectSupplementFileService projectSupplementFileService; @Autowired private SysCommonService commonService; @Override @Transactional(rollbackFor = RuntimeException.class) public int addProjectSupplement(AssProjectSupplement projectSupplement) { if(!checkNameUnique(projectSupplement)){ throw new ApiException("补录的项目名称已存在"); } projectSupplement.setCreateBy(ShiroUtils.getSysUser().getUsername()); int row =baseMapper.insert(projectSupplement); if(row<1){ throw new ApiException("新增项目失败"); } List fileList=projectSupplement.getFiles(); if(ObjectUtil.isNotEmpty(fileList)) { for (AssProjectSupplementFile file : fileList) { file.setProjectId(projectSupplement.getId()); } projectSupplementFileService.saveBatch(fileList); } return row; } @Override @Transactional(rollbackFor = RuntimeException.class) public int editProjectSupplement(AssProjectSupplement projectSupplement) { if(!checkNameUnique(projectSupplement)){ throw new ApiException("补录的项目名称已存在"); } projectSupplement.setUpdateBy(ShiroUtils.getSysUser().getUsername()); int row =baseMapper.updateById(projectSupplement); if(row<1){ throw new ApiException("编辑项目失败"); } List fileList=projectSupplement.getFiles(); List existFileList=projectSupplementFileService.getSupplementFileByProjectId(projectSupplement.getId()); if(ObjectUtil.isNotEmpty(fileList)) { for (AssProjectSupplementFile psf : fileList) { psf.setProjectId(projectSupplement.getId()); } projectSupplementFileService.saveOrUpdateBatch(fileList); } //删除附件 List newIds=fileList.stream().map(AssProjectSupplementFile::getId).collect(Collectors.toList()); List delIds = new ArrayList<>(); for(AssProjectSupplementFile psf:existFileList){ if(!newIds.contains(psf.getId())){ delIds.add(psf.getId()); } } if(!delIds.isEmpty()){ projectSupplementFileService.removeBatchByIds(delIds); } return row; } @Override public AssProjectSupplement getProjectSupplementById(Long projectSupplementId) { return baseMapper.getProjectSupplementById(projectSupplementId); } @Override public CommonPage projectSupplementList(AssProjectSupplement projectSupplement) { SysUser user= ShiroUtils.getSysUser(); if(!user.getIdentity().equals(UserIdentityEnum.MONITOR.getCode())){ //机构用户只能查看本机构的项目 if(user.getAgencyId()==null){ throw new ApiException("用户机构id为空"); } projectSupplement.setAgencyId(user.getAgencyId()); }else { if (SuperAccountConstant.ADMINISTRATOR.equals(user.getUsername()) || SuperAccountConstant.SUPER_ADMIN.equals(user.getUsername())){ PageUtil.startPage(); List projects=baseMapper.projectList(projectSupplement); return CommonPage.restPage(projects); }else { return CommonPage.restPage(new ArrayList<>()); } } PageUtil.startPage(); List projects=baseMapper.projectList(projectSupplement); return CommonPage.restPage(projects); } @Override public int deleteProjectSupplement(Long projectSupplementId) { //删除附件 List fileList=projectSupplementFileService.getSupplementFileByProjectId(projectSupplementId); if(fileList.size()>0){ for(AssProjectSupplementFile file:fileList){ commonService.removeFile(file.getPath()); projectSupplementFileService.removeById(file.getId()); } } return baseMapper.deleteById(projectSupplementId); } @Override public Boolean checkNameUnique(AssProjectSupplement projectSupplement) { Long projectId = projectSupplement.getId()==null? -1L : projectSupplement.getId(); AssProjectSupplement pro = baseMapper.getProjectByName(projectSupplement.getName(),projectSupplement.getAgencyId()); if (pro!=null && pro.getId().longValue() != projectId.longValue()) { return false; } return true; } }