package com.cloudroam.service.impl; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cloudroam.bo.supplierContact.SupplierContactInfoBO; import com.cloudroam.common.LocalUser; import com.cloudroam.common.enumeration.DeletedEnum; import com.cloudroam.common.enumeration.SysDictTypeEnum; import com.cloudroam.dto.supplierContact.CreateOrUpdateSupplierContactDTO; import com.cloudroam.dto.supplierContact.QuerySupplierContactDTO; import com.cloudroam.mapper.SupplierContactInfoMapperCustom; import com.cloudroam.model.*; import com.cloudroam.mapper.SupplierContactInfoMapper; import com.cloudroam.service.SupplierContactInfoService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.cloudroam.service.SupplierContactProjectReService; import com.cloudroam.service.SysDictItemReService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author generator@TaoJie * @since 2024-07-16 */ @Service public class SupplierContactInfoServiceImpl extends ServiceImpl implements SupplierContactInfoService { @Autowired private SupplierContactInfoMapperCustom supplierContactInfoMapperCustom; @Autowired private SupplierContactProjectReService supplierContactProjectReService; @Autowired private SysDictItemReService sysDictItemReService; @Override @Transactional public boolean CreateSupplierContactInfo(CreateOrUpdateSupplierContactDTO validator) { UserDO user = LocalUser.getLocalUser(); SupplierContactInfoDO supplierContactInfoDO=new SupplierContactInfoDO(); BeanUtils.copyProperties(validator,supplierContactInfoDO); supplierContactInfoDO.setId(IdUtil.simpleUUID()); supplierContactInfoDO.setCreateTime(new Date()); supplierContactInfoDO.setCreateUserId(String.valueOf(user.getId())); supplierContactInfoDO.setCreateUserName(user.getNickname()); supplierContactInfoDO.setUpdateTime(new Date()); supplierContactInfoDO.setUpdateUserId(String.valueOf(user.getId())); supplierContactInfoDO.setUpdateUserName(user.getNickname()); supplierContactInfoDO.setIsDeleted(DeletedEnum.DELETED_NO.getCode()); // 保存项目信息 final List supplierContactProjectReDOS = validator.getProjectList().stream().map(projectId -> { SupplierContactProjectReDO supplierContactProjectReDO = new SupplierContactProjectReDO(); supplierContactProjectReDO.setId(IdUtil.simpleUUID()); supplierContactProjectReDO.setProjectId(projectId); supplierContactProjectReDO.setSupplierContactId(supplierContactInfoDO.getId()); return supplierContactProjectReDO; }).collect(Collectors.toList()); supplierContactProjectReService.saveBatch(supplierContactProjectReDOS); // 保存字典项的字典信息 final List sysDictReList = validator.getSkillList().stream().map(sysDictValue -> { SysDictItemReDO sysDictItemReDO = new SysDictItemReDO(); sysDictItemReDO.setId(IdUtil.simpleUUID()); sysDictItemReDO.setTargetId(supplierContactInfoDO.getId()); sysDictItemReDO.setSysDictType(SysDictTypeEnum.SKILL_TYPE.getCode()); sysDictItemReDO.setSysDictValue(sysDictValue); return sysDictItemReDO; }).collect(Collectors.toList()); sysDictItemReService.saveBatch(sysDictReList); return baseMapper.insert(supplierContactInfoDO)>0; } @Override @Transactional public boolean updateSupplierContactInfo(CreateOrUpdateSupplierContactDTO validator) { UserDO user = LocalUser.getLocalUser(); SupplierContactInfoDO supplierContactInfoDO=new SupplierContactInfoDO(); BeanUtils.copyProperties(validator,supplierContactInfoDO); supplierContactInfoDO.setUpdateTime(new Date()); supplierContactInfoDO.setUpdateUserId(String.valueOf(user.getId())); supplierContactInfoDO.setUpdateUserName(user.getNickname()); supplierContactInfoDO.setIsDeleted(DeletedEnum.DELETED_NO.getCode()); return baseMapper.updateById(supplierContactInfoDO)>0; } @Override @Transactional public boolean removeByIdLogic(String id) { UserDO user = LocalUser.getLocalUser(); SupplierContactInfoDO supplierContactInfoDO=new SupplierContactInfoDO(); supplierContactInfoDO.setId(id); supplierContactInfoDO.setIsDeleted(DeletedEnum.DELETED_YES.getCode()); supplierContactInfoDO.setDeleteTime(new Date()); supplierContactInfoDO.setDeleteUserId(String.valueOf(user.getId())); supplierContactInfoDO.setDeleteUserName(user.getNickname()); return baseMapper.updateById(supplierContactInfoDO)>0; } @Override public IPage getSupplierContactInfoPage(QuerySupplierContactDTO dto) { Page page=new Page(dto.getPage(),dto.getCount()); return supplierContactInfoMapperCustom.getSupplierContactInfoPage(page,dto); } @Override public List getSupplierContactInfoList(QuerySupplierContactDTO dto) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("is_deleted", DeletedEnum.DELETED_NO.getCode()); if(StrUtil.isNotBlank(dto.getCompanyId())){ wrapper.eq("company_id",dto.getCompanyId()); } if(StrUtil.isNotBlank(dto.getName())){ wrapper.like("name",dto.getName()); } if(StrUtil.isNotBlank(dto.getPhone())){ wrapper.like("phone",dto.getPhone()); } if(StrUtil.isNotBlank(dto.getTitle())){ wrapper.like("title",dto.getTitle()); } return this.baseMapper.selectList(wrapper); } @Override public SupplierContactInfoBO getSupplierContactInfoById(String id) { SupplierContactInfoBO supplierContactInfoBO=new SupplierContactInfoBO(); final SupplierContactInfoDO supplierContactInfoDO = baseMapper.selectById(id); BeanUtils.copyProperties(supplierContactInfoDO,supplierContactInfoBO); // 根据 供应商id获取关联的项目信息 List projectList=supplierContactInfoMapperCustom.getProjectListByContactId(id); // 根据供应商id获取关联的技能信息 List skillList=supplierContactInfoMapperCustom.getSkillListByContactId(id); final List projectIdList = projectList.stream().map(project -> project.getId()).collect(Collectors.toList()); final List skillValueList = skillList.stream().map(sysDictItemDO -> sysDictItemDO.getValue()).collect(Collectors.toList()); supplierContactInfoBO.setProjectList(projectIdList); supplierContactInfoBO.setSkillList(skillValueList); return supplierContactInfoBO; } }