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.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chinaztt.mes.basic.dto.CrewDTO; import com.chinaztt.mes.basic.entity.Crew; import com.chinaztt.mes.basic.entity.JoinCrewStaff; import com.chinaztt.mes.basic.entity.Staff; import com.chinaztt.mes.basic.excel.CrewData; import com.chinaztt.mes.basic.mapper.CrewMapper; import com.chinaztt.mes.basic.mapper.JoinCrewStaffMapper; import com.chinaztt.mes.basic.mapper.StaffMapper; import com.chinaztt.mes.basic.service.CrewService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; /** * 人员班组维护表 * * @author cxf * @date 2020-12-01 09:58:28 */ @Service @AllArgsConstructor @Transactional(rollbackFor = Exception.class) public class CrewServiceImpl extends ServiceImpl implements CrewService { private JoinCrewStaffMapper joinCrewStaffMapper; private StaffMapper staffMapper; @Override public boolean updateDtoById(CrewDTO crewDTO) { try { baseMapper.updateById(crewDTO); } catch (Exception e) { throw new RuntimeException("班组修改失败"); } return true; } @Override public boolean deleteById(Long id) { try { baseMapper.deleteById(id); joinCrewStaffMapper.delete(Wrappers.lambdaQuery().eq(JoinCrewStaff::getCrewId, id)); } catch (Exception e) { throw new RuntimeException("班组删除失败"); } return true; } @Override public IPage> getStaffByCrewId(Page page, QueryWrapper ew) { return staffMapper.selectStaffByCrewId(page, ew); } @Override public boolean saveDto(CrewDTO crewDTO) { saveJoin(crewDTO); return false; } @Override public boolean deleteStaff(CrewDTO crewDTO) { crewDTO.getStaffList().forEach(staff -> { joinCrewStaffMapper.delete(Wrappers.lambdaQuery().eq(JoinCrewStaff::getCrewId, crewDTO.getId()).eq(JoinCrewStaff::getStaffId, staff.getId())); }); return false; } @Override public List getStaff(CrewDTO crewDTO) { return staffMapper.selectStaffById(crewDTO.getId()); } //导入excel数据 @Override public void importWorkstationExcel(List list) { if (CollectionUtil.isEmpty(list)) { return; } List staff = staffMapper.selectList(null); Crew crew = new Crew(); for (CrewData data : list) { QueryWrapperQueryWrapper = new QueryWrapper<>(); QueryWrapper.lambda().eq(Crew::getCrewName,data.getCrewName()); Crew crew1 = baseMapper.selectOne(QueryWrapper); if(!Objects.isNull(crew1)){ log.error("班组名重复====》"+crew1.getCrewName()); continue; } //新增班组表 if (ObjectUtils.isNotEmpty(data.getCrewName())) { crew.setCrewName(data.getCrewName()); crew.setWorkShop(data.getWorkShop()); baseMapper.insert(crew); } JoinCrewStaff joinCrewStaff = new JoinCrewStaff(); joinCrewStaff.setCrewId(crew.getId()); for (int i = 0; i < staff.size(); i++) { if (staff.get(i).getStaffNo().equals(data.getStaffNo())) { joinCrewStaff.setStaffId(staff.get(i).getId()); } } if (joinCrewStaff.getStaffId() == null) { log.error("人员:" + data.getStaffNo() + "不存在"); continue; } //新增人员班组维护表 joinCrewStaffMapper.insert(joinCrewStaff); } } public void saveJoin(CrewDTO crewDTO) { if (CollectionUtil.isNotEmpty(crewDTO.getStaffList())) { List staffList = joinCrewStaffMapper.selectStaffByCrewId(crewDTO.getId()); crewDTO.getStaffList().stream() .filter(newStaff -> { for (int i = 0; i < staffList.size(); i++) { if (staffList.get(i).getId().equals(newStaff.getId())) { return false; } } return true; }).forEach(newStaff -> { JoinCrewStaff joinCrewStaff = new JoinCrewStaff(); joinCrewStaff.setCrewId(crewDTO.getId()); joinCrewStaff.setStaffId(newStaff.getId()); joinCrewStaffMapper.insert(joinCrewStaff); }); } } }