package org.jeecg.modules.dnc.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.collections4.ListUtils; import org.jeecg.modules.dnc.entity.PartsDepartment; import org.jeecg.modules.dnc.entity.ProcessStream; import org.jeecg.modules.dnc.entity.ProcessionDepartment; import org.jeecg.modules.dnc.mapper.ProcessionDepartmentMapper; import org.jeecg.modules.dnc.service.IProcessionDepartmentService; import org.jeecg.modules.dnc.ucenter.Department; import org.jeecg.modules.system.entity.MdcProduction; import org.springframework.stereotype.Service; import java.util.*; import java.util.function.Function; @Service public class ProcessionDepartmentService extends ServiceImpl implements IProcessionDepartmentService { @Override public boolean deleteByProcessId(String processId) { return false; } @Override public List getDepartPermsByProcessId(String processId) { return super.baseMapper.getDepartPermsByProcessId(processId); } @Override public List getDepartNonPermsByProcessId(String processId) { return super.baseMapper.getDepartNonPermsByProcessId(processId); } @Override public boolean removeByCollection(List processionDepartmentList) { if(processionDepartmentList == null || processionDepartmentList.isEmpty()) return false; if(processionDepartmentList.size() == 1) return super.removeById(processionDepartmentList.get(0).getId()); List ids = new ArrayList<>(); processionDepartmentList.forEach(item -> { ids.add(item.getId()); }); if(ids.size() > 1000){ List> idsArr = ListUtils.partition(ids, 1000); for(List arr : idsArr){ super.removeByIds(arr); } return true; }else { return super.removeByIds(ids); } } @Override public ProcessionDepartment getByProcessIdAndDepartId(String processId, String departId) { return null; } @Override public List getByPartsIdsAndDepartIds(List processId, List departIds) { if(processId == null || processId.isEmpty() || departIds == null || departIds.isEmpty()) return null; List total = new ArrayList<>(); List> processListArr; List> departListArr; if(processId.size() > 1000){ processListArr = ListUtils.partition(processId, 100); }else { processListArr = ListUtils.partition(processId, 1000); } if(departIds.size() > 1000){ departListArr = ListUtils.partition(departIds, 100); }else { departListArr = ListUtils.partition(departIds, 1000); } for(List processList : processListArr) { for(List departList : departListArr){ LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.in(ProcessionDepartment::getProcessId, processList); queryWrapper.in(ProcessionDepartment::getDepartId, departList); List list = super.list(queryWrapper); if(list != null && !list.isEmpty()){ total.addAll(list); } } } return total; } }