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;
|
|
/**
|
* <p>
|
* 项目补录表 服务实现类
|
* </p>
|
*
|
* @author kzy
|
* @since 2024-06-11 15:44:14
|
*/
|
@Service
|
public class AssProjectSupplementServiceImpl extends ServiceImpl<AssProjectSupplementMapper, AssProjectSupplement> 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<AssProjectSupplementFile> 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<AssProjectSupplementFile> fileList=projectSupplement.getFiles();
|
List<AssProjectSupplementFile> existFileList=projectSupplementFileService.getSupplementFileByProjectId(projectSupplement.getId());
|
if(ObjectUtil.isNotEmpty(fileList)) {
|
for (AssProjectSupplementFile psf : fileList) {
|
psf.setProjectId(projectSupplement.getId());
|
}
|
projectSupplementFileService.saveOrUpdateBatch(fileList);
|
}
|
//删除附件
|
List<Long> newIds=fileList.stream().map(AssProjectSupplementFile::getId).collect(Collectors.toList());
|
List<Long> 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<AssProjectSupplement> projects=baseMapper.projectList(projectSupplement);
|
return CommonPage.restPage(projects);
|
}else {
|
return CommonPage.restPage(new ArrayList<>());
|
}
|
}
|
PageUtil.startPage();
|
List<AssProjectSupplement> projects=baseMapper.projectList(projectSupplement);
|
return CommonPage.restPage(projects);
|
}
|
|
@Override
|
public int deleteProjectSupplement(Long projectSupplementId) {
|
//删除附件
|
List<AssProjectSupplementFile> 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;
|
}
|
}
|