package com.gkhy.system.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.common.enums.DeleteFlagEnum; import com.gkhy.common.exception.ServiceException; import com.gkhy.common.utils.SecurityUtils; import com.gkhy.common.utils.StringUtils; import com.gkhy.system.domain.SysExpertInfo; import com.gkhy.system.domain.vo.request.ExpertBatchChangeReq; import com.gkhy.system.domain.vo.request.SysExpertInfoRoundReq; import com.gkhy.system.domain.vo.request.SysExpertSearchReqDto; import com.gkhy.system.domain.vo.response.ProjectExpertSectionResp; import com.gkhy.system.domain.vo.response.SysExpertSearchRep; import com.gkhy.system.mapper.SysExpertInfoMapper; import com.gkhy.system.service.SysExpertInfoService; import org.springframework.stereotype.Service; import java.util.List; /** *

* 系统专家信息表 服务实现类 *

* * @author kzy * @since 2023-11-27 16:33:33 */ @Service public class SysExpertInfoServiceImpl extends ServiceImpl implements SysExpertInfoService { @Override public List exportInfoList(SysExpertInfo expertInfo) { // return baseMapper.expertInfoListV2(expertInfo); } @Override public int addExpertInfo(SysExpertInfo expertInfo) { if(!checkIdCardUnique(expertInfo)){ throw new ServiceException("该业务处室申请数据已存在"); } if(StringUtils.isEmpty(expertInfo.getPersonalOpinionKey()) && StringUtils.isEmpty(expertInfo.getRecommendUnitOpinionKey())){ throw new ServiceException("专家本人意见和推荐单位意见不能同时为空"); } expertInfo.setCreateBy(expertInfo.getName()); boolean b=save(expertInfo); if(!b){ throw new ServiceException("新增专家信息失败"); } return 1; } @Override public int modExpertInfo(SysExpertInfo expertInfo) { if(!checkIdCardUnique(expertInfo)){ throw new ServiceException("该业务处室专业领域申请数据已存在"); } checkHavePer(expertInfo.getId()); expertInfo.setUpdateBy(SecurityUtils.getUsername()); boolean b=updateById(expertInfo); if(!b){ throw new ServiceException("修改专家信息失败"); } return 1; } @Override public int delExpertInfo(Long expertId) { checkHavePer(expertId); SysExpertInfo expertInfo = new SysExpertInfo(); expertInfo.setId(expertId); expertInfo.setDelFlag(DeleteFlagEnum.DELETED.getCode().intValue()); expertInfo.setUpdateBy(SecurityUtils.getUsername()); boolean b= updateById(expertInfo); if(!b){ throw new ServiceException("删除专家信息失败"); } return 1; } @Override public int delExpertInfoBatch(Long[] expertIds) { return baseMapper.deleteBatchByIds(expertIds); } @Override public SysExpertInfo exportInfoDetail(Long expertId) { return baseMapper.getExpertInfoById(expertId); } private void checkHavePer(Long expertId){ SysExpertInfo sysExpertInfo = checkExpertInfoDataScope(expertId); if (!SecurityUtils.isAdmin(SecurityUtils.getUserId()) && !sysExpertInfo.getDeptId().toString().equals(SecurityUtils.getDeptId().toString())) { throw new ServiceException("没有权限操作该专家信息!"); } } public SysExpertInfo checkExpertInfoDataScope(Long expertId) { if(expertId==null){ throw new ServiceException("专家id为空!"); } SysExpertInfo expertInfo = baseMapper.getExpertInfoById(expertId); if (ObjectUtil.isNull(expertInfo)) { throw new ServiceException("专家数据不存在!"); } return expertInfo; } @Override public boolean changeApprove(SysExpertInfo expertInfo) { checkExpertInfoDataScope(expertInfo.getId()); //SysExpertInfo se=new SysExpertInfo().setId(expertInfo.getId()).setState(expertInfo.getState()); expertInfo.setUpdateBy(SecurityUtils.getUsername()); // se.setUpdateBy(SecurityUtils.getUsername()); return updateById(expertInfo); } @Override public SysExpertSearchRep queryApprove(SysExpertSearchReqDto expertInfo) { SysExpertSearchRep sysExpertSearchRep = baseMapper.queryApprove(expertInfo); if (null == sysExpertSearchRep){ throw new ServiceException("申请记录不存!"); } return sysExpertSearchRep; } @Override public List getExpertRound(SysExpertInfoRoundReq req) { // req.setDeptId(SecurityUtils.getDeptId()); return baseMapper.getExpertRound(req); } @Override public void batchChangeEmploymentDate(ExpertBatchChangeReq req) { if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())){ throw new ServiceException("无权操作!"); } baseMapper.update(null, Wrappers.lambdaUpdate() .set(SysExpertInfo::getUpdateBy,SecurityUtils.getUsername()) .set(SysExpertInfo::getEmploymentDateStart,req.getEmploymentDateStart()) .set(SysExpertInfo::getEmploymentDateEnd,req.getEmploymentDateEnd()) .in(SysExpertInfo::getId,req.getId())); } public boolean checkIdCardUnique(SysExpertInfo expertInfo){ Long expertId = expertInfo.getId()==null? -1L : expertInfo.getId(); SysExpertInfo info = baseMapper.checkIdCardDomainUnique(expertInfo.getPhone(),expertInfo.getIdCard(),expertInfo.getDomain()); if (info!=null && info.getId().longValue() != expertId.longValue()) { return false; } return true; } }