package com.ydtech.modules.esm.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydtech.modules.esm.dao.EsmInsCompanyMapper; import com.ydtech.modules.esm.model.EsmInsCompany; import com.ydtech.modules.esm.model.vo.req.EsmInsCompanyReq; import com.ydtech.modules.esm.service.EsmInsCompanyService; import com.ydtech.modules.protocol.utils.AssertionUtils; import com.ydtech.utils.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @Service public class EsmInsCompanyServiceImpl extends ServiceImpl implements EsmInsCompanyService { // @Override // public EsmInsCompany isOpen(String company) { // LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); // wrapper.eq(EsmInsCompany::getId, company) // .eq(EsmInsCompany::getDelFlag, "0") // .eq(EsmInsCompany::getOpenQuote, "1"); // EsmInsCompany esmInsCompanies = baseMapper.selectOne(wrapper); // if (ObjectUtils.isEmpty(esmInsCompanies)) { // throw new SystemException("报价公司未开启, 请联系团队长配置。"); // } // return esmInsCompanies; // } @Override public List findTree(EsmInsCompanyReq req) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); if (null != req) { lqw.like(StringUtils.isNotEmpty(req.getName()), EsmInsCompany::getName, req.getName()); lqw.eq(StringUtils.isNotEmpty(req.getType()), EsmInsCompany::getType, req.getType()); // lqw.like(StringUtils.isNotEmpty(req.getParentId()), EsmInsCompany::getParentId, req.getParentId()); } List list = new ArrayList<>(); List allList = list(lqw); allList.forEach(r -> { if (StringUtils.isNullOrEmpty(r.getParentId()) || r.getParentId().equalsIgnoreCase("0") && (!exists(list, r))) { r.setLogo(""); list.add(r); } }); findChildren(list, allList); return list; } @Override public EsmInsCompany isExists(String companyId) { EsmInsCompany esmInsCompany = baseMapper.selectById(companyId); AssertionUtils.isEmpty(esmInsCompany, "保险公司不存在"); return esmInsCompany; } @Override public EsmInsCompany findInsCompanyByName(String companyName) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(EsmInsCompany::getName, companyName); List list = list(lqw); if (null != list && !list.isEmpty()) { return list.get(0); } return null; } private void findChildren(List list, List allList) { for (EsmInsCompany l : list) { List children = new ArrayList<>(); for (EsmInsCompany esmInsCompany : allList) { if (l.getId() != null && l.getId().equals(esmInsCompany.getParentId())) { if (!exists(children, esmInsCompany)) { esmInsCompany.setLogo(""); children.add(esmInsCompany); } } } l.setChildren(children); // children.sort((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum())); findChildren(children, allList); } } private boolean exists(List insCompanyList, EsmInsCompany insCompany) { AtomicBoolean exist = new AtomicBoolean(false); insCompanyList.stream().forEach(a -> { if (a.getId().equals(insCompany.getId())) { exist.set(true); } }); return exist.get(); } @Override public EsmInsCompany getBySubsidiary(String subsidiaryId) { String code = "000000"; String substring = subsidiaryId.substring(0, 5); String companyId = substring + code; EsmInsCompany esmInsCompany = getById(companyId); AssertionUtils.isEmpty(esmInsCompany, "保险公司不存在"); return esmInsCompany; } @Override public List getByLowerId(String companyId) { return baseMapper.getByLowerId(companyId); } @Override public List getAllRelationCompanyId(String companyId){ // //获取本级和下级 // List result=getByLowerId(companyId); //调整为查本级和上级 List result=new ArrayList<>(); //放入本级 result.add(companyId); //取出本级机构信息 EsmInsCompany insCompany=getById(companyId); //放入上级 while (!"0".equals(insCompany.getParentId())){ LambdaQueryWrapper lqw1 = new LambdaQueryWrapper<>(); lqw1.eq(EsmInsCompany::getId, insCompany.getParentId()); List list = list(lqw1); if (null != list && !list.isEmpty()) { insCompany=list.get(0); result.add(insCompany.getId()); } } return result; } @Override public List getInsCompanyNextLevel(String companyId){ List result=new ArrayList<>(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(EsmInsCompany::getType,"1"); if(StringUtils.isNotEmpty(companyId)){ //不为空时,需要找选定机构的下一层 wrapper.eq(EsmInsCompany::getParentId,companyId); }else{ //为空时,直接查询顶层保险公司机构 parentid=0 wrapper.eq(EsmInsCompany::getParentId,"0"); } List allList = list(wrapper); allList.forEach(item -> { result.add(item.getId()); }); return result; } @Override public List queryListByParentId(String parentId) { List resultList=baseMapper.queryListByParentId(parentId); return resultList; } }