package org.springblade.common.param; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.util.Strings; import org.springblade.common.cache.SysCache; import org.springblade.common.utils.AuthUtils; import org.springblade.common.utils.SpringUtils; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.SpringUtil; import org.springblade.modules.grid.entity.GridEntity; import org.springblade.modules.grid.service.IGridService; import org.springblade.modules.police.entity.PoliceAffairsGridEntity; import org.springblade.modules.police.service.IPoliceAffairsGridService; import org.springblade.modules.system.service.IRegionService; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; public class GridSet { /** * 获取警格网格的信息 * @param clazz 类对象 * @param t 对象数据 * @param lngKey 经度属性key * @param latKey 纬度属性key * @param gridCodeKey 网格属性key * @param jwGirdCodeKey 警格属性key * @param * @return */ public GridSet invoke(Class clazz, T t,String lngKey,String latKey,String gridCodeKey,String jwGirdCodeKey) { //获取传入对象信息 U u = clazz.cast(t); try { Field lngField = u.getClass().getDeclaredField(lngKey); Field latField = u.getClass().getDeclaredField(latKey); // 获取点信息 lngField.setAccessible(true); latField.setAccessible(true); String lng = lngField.get(t).toString(); String lat = latField.get(t).toString(); if (!Strings.isBlank(lng)) { // 拼接点 String point = "'POINT(" + lng +" " + lat + ")'"; // 判断是否分析网格 if (!Strings.isBlank(gridCodeKey)) { // 根据位置设置网格,警格编号 IGridService gridService = SpringUtils.getBean(IGridService.class); Field gridCodeField = u.getClass().getDeclaredField(gridCodeKey); //点坐标解析网格 List gridEntityList = gridService.spatialAnalysis(point); if (gridEntityList.size() > 0) { GridEntity gridEntity = gridEntityList.get(0); gridCodeField.setAccessible(true); gridCodeField.set(t, gridEntity.getGridCode()); } } // 判断是否分析警格 if (!Strings.isBlank(jwGirdCodeKey)) { IPoliceAffairsGridService policeAffairsGridService = SpringUtils.getBean(IPoliceAffairsGridService.class); Field jwGridCodeField = u.getClass().getDeclaredField(jwGirdCodeKey); //点坐标解析警格 List policeAffairsGridEntityList = policeAffairsGridService.spatialAnalysis(point); if (policeAffairsGridEntityList.size() > 0) { PoliceAffairsGridEntity policeAffairsGridEntity = policeAffairsGridEntityList.get(0); jwGridCodeField.setAccessible(true); jwGridCodeField.set(t, policeAffairsGridEntity.getJwGridCode()); } } } } catch (Exception e) { e.printStackTrace(); } return this; } }