linwe
2024-09-03 764d883b5ea3bdc06abbec548b6df0511e567978
src/main/java/org/springblade/common/param/GridSet.java
New file
@@ -0,0 +1,98 @@
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<T> {
   /**
    * 获取警格网格的信息
    * @param clazz 类对象
    * @param t 对象数据
    * @param lngKey 经度属性key
    * @param latKey 纬度属性key
    * @param gridCodeKey 网格属性key
    * @param jwGirdCodeKey 警格属性key
    * @param <U>
    * @return
    */
   public <U> GridSet    invoke(Class<U> clazz, T t,String lngKey,String latKey,String gridCodeKey,String jwGirdCodeKey) {
      //获取传入对象信息
      U u = clazz.cast(t);
      try {
         Field lngField = null;
         Field latField = null;
         try {
            lngField = u.getClass().getDeclaredField(lngKey);
            latField = u.getClass().getDeclaredField(latKey);
         } catch (NoSuchFieldException e) {
            lngField = u.getClass().getSuperclass().getDeclaredField(lngKey);
            latField = u.getClass().getSuperclass().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 = null;
               try {
                  gridCodeField = u.getClass().getDeclaredField(gridCodeKey);
               } catch (NoSuchFieldException e) {
                  gridCodeField = u.getClass().getSuperclass().getDeclaredField(gridCodeKey);
               }
               //点坐标解析网格
               List<GridEntity> 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 = null;
               try {
                  jwGridCodeField = u.getClass().getDeclaredField(jwGirdCodeKey);
               } catch (NoSuchFieldException e) {
                  jwGridCodeField = u.getClass().getSuperclass().getDeclaredField(jwGirdCodeKey);
               }
               //点坐标解析警格
               List<PoliceAffairsGridEntity> 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;
   }
}