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<CrewMapper, Crew> 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.<JoinCrewStaff>lambdaQuery().eq(JoinCrewStaff::getCrewId, id));
|
} catch (Exception e) {
|
throw new RuntimeException("班组删除失败");
|
}
|
return true;
|
}
|
|
@Override
|
public IPage<List<Staff>> getStaffByCrewId(Page page, QueryWrapper<Staff> 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.<JoinCrewStaff>lambdaQuery().eq(JoinCrewStaff::getCrewId, crewDTO.getId()).eq(JoinCrewStaff::getStaffId, staff.getId()));
|
});
|
return false;
|
}
|
|
@Override
|
public List<Staff> getStaff(CrewDTO crewDTO) {
|
return staffMapper.selectStaffById(crewDTO.getId());
|
}
|
|
public void saveJoin(CrewDTO crewDTO) {
|
if (CollectionUtil.isNotEmpty(crewDTO.getStaffList())) {
|
List<Staff> 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);
|
});
|
}
|
}
|
}
|