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.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.Part; import com.chinaztt.mes.basic.entity.Staff; 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.ArrayList; import java.util.List; /** * 人员班组维护表 * * @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()); } 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); }); } } }