package com.chinaztt.mes.basic.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; import com.chinaztt.mes.basic.entity.Company; import com.chinaztt.mes.basic.entity.Division; import com.chinaztt.mes.basic.entity.Factory; import com.chinaztt.mes.basic.entity.Post; import com.chinaztt.mes.basic.excel.PostData; import com.chinaztt.mes.basic.mapper.CompanyMapper; import com.chinaztt.mes.basic.mapper.DivisionMapper; import com.chinaztt.mes.basic.mapper.FactoryMapper; import com.chinaztt.mes.basic.mapper.PostMapper; import com.chinaztt.mes.basic.service.PostService; import com.chinaztt.mes.common.numgen.NumberGenerator; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; /** * 岗位表 * * @author cxf * @date 2021-06-23 17:17:26 */ @Service @AllArgsConstructor @Transactional(rollbackFor = Exception.class) public class PostServiceImpl extends ServiceImpl implements PostService { private NumberGenerator postNumberGenerator; private DivisionMapper divisionMapper; private PostMapper postMapper; private CompanyMapper companyMapper; private FactoryMapper factoryMapper; @Override public boolean save(Post post) { checkPostNo(post); return SqlHelper.retBool(baseMapper.insert(post)); } @Override public boolean updateById(Post post) { checkPostNo(post); return SqlHelper.retBool(baseMapper.updateById(post)); } private void checkPostNo(Post post) { if (StringUtils.isBlank(post.getPostNo())) { // 1. 自动生成编号 post.setPostNo(postNumberGenerator.generateNumberWithPrefix(Post.DIGIT, Post.PREFIX, Post::getPostNo)); } else { // 2.判断是否重复 List repeatNos = baseMapper.selectList(Wrappers.query().lambda().eq(Post::getPostNo, post.getPostNo()).ne(Post::getId, post.getId())); if (CollectionUtil.isNotEmpty(repeatNos)) { throw new RuntimeException("编号重复"); } } } //excel导入数据 @Override public void importWorkstationExcel(List list) { if (CollectionUtil.isEmpty(list)) { return; } List companies = companyMapper.selectList(null); List factories = factoryMapper.selectList(null); List divisions = divisionMapper.selectList(null); for (PostData data : list) { QueryWrapperQueryWrapper = new QueryWrapper<>(); QueryWrapper.lambda().eq(Post::getPostNo,data.getPostNo()); Post post1 = baseMapper.selectOne(QueryWrapper); if(!Objects.isNull(post1)){ log.error("岗位编号重复=====》"+data.getPostNo()); continue; } Post post = new Post(); BeanUtils.copyProperties(data, post); //TODO: data.getDivisionName()+"-"+ 岗位组合 部门+岗位 post.setPostName(data.getPostName()); for (int i = 0; i