package com.dg.core.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dg.core.db.gen.entity.AreaCode2022; import com.dg.core.db.gen.entity.OrganizationChartEntity; import com.dg.core.db.gen.entity.TransactionEvent; import com.dg.core.db.gen.mapper.AreaCode2022Mapper; import com.dg.core.db.gen.mapper.OrganizationChartMapper; import com.dg.core.db.gen.mapper.TransactionEventMapper; import com.dg.core.service.IAreaCodeService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; @Service public class AreaCodeServiceImpl extends ServiceImpl implements IAreaCodeService { @Resource private OrganizationChartMapper organizationChartMapper; @Resource private TransactionEventMapper transactionEventMapper; @Override public List getAreaCodeByTransactionId(Integer transactionId) { List areaCodes = new ArrayList<>(); TransactionEvent transactionEvent = transactionEventMapper.selectOne(new QueryWrapper().lambda(). eq(TransactionEvent::getId, transactionId)); List departmentIds = new ArrayList<>(); if (transactionEvent.getDepartmentIds() != null) { departmentIds = new ArrayList<>(Arrays.asList(transactionEvent.getDepartmentIds().split(","))); } departmentIds.add(transactionEvent.getDepartmentId()); for (String departmentId : departmentIds) { OrganizationChartEntity organizationChartEntity = organizationChartMapper.selectOne(new QueryWrapper().lambda() .eq(OrganizationChartEntity::getId, departmentId)); if (organizationChartEntity != null) { if (organizationChartEntity.getCity() != null) areaCodes.add(organizationChartEntity.getCity()); if (organizationChartEntity.getDistrict() != null) areaCodes.add(organizationChartEntity.getDistrict()); if (organizationChartEntity.getVillage() != null) areaCodes.add(organizationChartEntity.getVillage()); } } return baseMapper.selectByIdSet(areaCodes); } public List getAreaCodeIds(List areaCodes, OrganizationChartEntity organizationChartEntity) { List organizationChartEntitys = organizationChartMapper.selectList(new QueryWrapper().lambda() .eq(OrganizationChartEntity::getParentId, organizationChartEntity.getId())); for (OrganizationChartEntity organizationChart : organizationChartEntitys) { if (organizationChart.getCity() != null) areaCodes.add(organizationChart.getCity()); if (organizationChart.getDistrict() != null) areaCodes.add(organizationChart.getDistrict()); if (organizationChart.getVillage() != null) areaCodes.add(organizationChart.getVillage()); getAreaCodeIds(areaCodes, organizationChart); } return areaCodes; } @Override public List getListByPCode(String id) { List areaCode2022s = baseMapper.selectList(new QueryWrapper().lambda().eq(AreaCode2022::getPcode, id)); for (AreaCode2022 areaCode2022 : areaCode2022s) { if (areaCode2022.getLevel() != 3) areaCode2022.setChild(this.getListByPCode(areaCode2022.getCode().toString())); } return areaCode2022s; } }