package cn.huge.module.kind.service; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.IdUtils; import cn.huge.base.common.utils.ObjectUtils; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.kind.dao.mapper.SyRegionMapper; import cn.huge.module.kind.domain.dto.RegionSelectJSDTO; import cn.huge.module.kind.domain.po.SyRegion; import cn.huge.module.sys.dto.QueAddrBaseDTO; import cn.huge.module.utils.BaiduMapAddrDTO; import cn.huge.module.utils.BaiduMapUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import javax.swing.plaf.synth.Region; import java.util.Date; import java.util.List; import java.util.Map; /** * @title: 地域字典表业务逻辑处理 * @Description 地域字典表业务逻辑处理 * @company hugeinfo * @author liyj * @Time 2024-09-09 14:31:22 * @version 1.0.0 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) public class SyRegionService extends ServiceImpl{ @Autowired private SyRegionMapper mapper; @Autowired private UtilsClientImpl utilsClient; /** * 更新对象 * @param entity 对象 */ public void updateSyRegion(SyRegion entity){ try{ mapper.updateSyRegion(entity); }catch (Exception e){ log.error("[SyRegionService.updateSyRegion]调用失败,异常信息:"+e, e); throw new ServiceException("SyRegionService.updateSyRegion", e); } } /** * 条件更新对象 * @param entity 对象 * @param terms 条件 */ public void updateSyRegionTerms(SyRegion entity, Map terms){ try{ mapper.updateSyRegionTerms(entity, terms); }catch (Exception e){ log.error("[SyRegionService.updateSyRegionTerms]调用失败,异常信息:"+e, e); throw new ServiceException("SyRegionService.updateSyRegionTerms", e); } } /** * 根据编号物理删除 * @param id 查询条件集合 */ public void deleteSyRegion(String id){ try{ mapper.deleteSyRegion(id); }catch (Exception e){ log.error("[SyRegionService.deleteSyRegion]调用失败,异常信息:"+e, e); throw new ServiceException("SyRegionService.deleteSyRegion", e); } } /** * 按条件查询 * @param terms 条件 * @return List */ public List listTerms(Map terms){ return mapper.listTerms(terms); } /** * 按条件统计 * @param terms 条件 * @return long */ public long countTerms(Map terms){ return mapper.countTerms(terms); } /** * 按条件分页查询 * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageQuery(PageRequest page, Map terms){ long total = mapper.countTerms(terms); List content = mapper.pageTerms(page, terms); return new PageImpl(content, page, total); } /** * 新增或更新对象 * @param syRegion 实体对象 */ public void saveSyRegion(SyRegion syRegion){ try{ Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(syRegion.getId())){ syRegion.setId(utilsClient.getNewTimeId()); syRegion.setCreateTime(nowDate); } syRegion.setUpdateTime(nowDate); this.saveOrUpdate(syRegion); }catch (Exception e){ log.error("[SyRegionService.saveSyRegion]调用失败,异常信息:"+e, e); throw new ServiceException("SyRegionService.saveSyRegion", e); } } /** * 递归保存树形结构 * @param childrenList * @param level */ public void webSaveByJSTree(List childrenList, int level){ try{ Date nowDate = new Date(); for (RegionSelectJSDTO regionSelectJSDTO: childrenList){ SyRegion region = new SyRegion(); region.setId(regionSelectJSDTO.getValue()); region.setKind(level); region.setName(regionSelectJSDTO.getLabel()); region.setLevel(level); region.setParentId(regionSelectJSDTO.getParentId()); region.setCreateTime(nowDate); region.setUpdateTime(nowDate); this.saveOrUpdate(region); if (CollectionUtils.isNotEmpty(regionSelectJSDTO.getChildren())) { this.webSaveByJSTree(regionSelectJSDTO.getChildren(), level + 1); } } }catch (Exception e){ log.error("[SyRegionService.webSaveByJSTree]调用失败,异常信息:"+e, e); throw new ServiceException("SyRegionService.webSaveByJSTree", e); } } /** * 根据百度地图经纬度获取街道 * @param lng * @param lat * @return */ public QueAddrBaseDTO getQueAddrByBaiduiLngLat(String lng, String lat){ try{QueAddrBaseDTO queAddrBaseDTO = new QueAddrBaseDTO(); BaiduMapAddrDTO baiduMapAddrDTO = BaiduMapUtils.getAddrByLngLat(lng, lat, BaiduMapUtils.coordtype_bd09ll); if (ObjectUtils.isNotEmpty(baiduMapAddrDTO)) { QueryWrapper syRegionQueryWrapper = new QueryWrapper<>(); // 查询省 syRegionQueryWrapper.like("name", baiduMapAddrDTO.getProvince()); SyRegion province = mapper.selectOne(syRegionQueryWrapper); queAddrBaseDTO.setQueProv(province.getId()); queAddrBaseDTO.setQueProvName(province.getName()); // 查询市 syRegionQueryWrapper.clear(); syRegionQueryWrapper.like("name", baiduMapAddrDTO.getCity()); SyRegion city = mapper.selectOne(syRegionQueryWrapper); queAddrBaseDTO.setQueCity(city.getId()); queAddrBaseDTO.setQueCityName(city.getName()); // 查询区 syRegionQueryWrapper.clear(); syRegionQueryWrapper.like("name", baiduMapAddrDTO.getDistrict()); SyRegion district = mapper.selectOne(syRegionQueryWrapper); queAddrBaseDTO.setQueArea(district.getId()); queAddrBaseDTO.setQueAreaName(district.getName()); // 查询街道 syRegionQueryWrapper.clear(); syRegionQueryWrapper.like("name", baiduMapAddrDTO.getTown()); SyRegion town = mapper.selectOne(syRegionQueryWrapper); queAddrBaseDTO.setQueRoad(town.getId()); queAddrBaseDTO.setQueRoadName(town.getName()); } return queAddrBaseDTO; }catch (Exception e){ log.error("[SyRegionService.getQueAddrByBaiduiLngLat]调用失败,异常信息:"+e, e); throw new ServiceException("SyRegionService.getQueAddrByBaiduiLngLat", e); } } }