|
@@ -1,7 +1,6 @@
|
|
|
package com.sooka.sponest.data.digitalresource.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
-import com.ruoyi.common.core.utils.StringUtils;
|
|
|
import com.ruoyi.common.datascope.annotation.DataScopeMutiDept;
|
|
|
import com.sooka.sponest.data.app.domain.VisuForestCloudMapVO;
|
|
|
import com.sooka.sponest.data.base.service.impl.BaseServiceImpl;
|
|
@@ -13,10 +12,12 @@ import com.sooka.sponest.data.digitalresource.service.IResourceBigDataService;
|
|
|
import com.sooka.sponest.data.digitalwater.domain.CenterdataTHydraulicOutletSewage;
|
|
|
import com.sooka.sponest.data.digitalwater.domain.CenterdataTHydraulicPatrolTask;
|
|
|
import com.sooka.sponest.data.other.land.domain.CenterdataTResourcesLand;
|
|
|
+import com.sooka.sponest.data.utils.DeptLevelUtil;
|
|
|
+import org.apache.commons.collections4.MapUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.math.BigDecimal;
|
|
|
+import java.io.IOException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
@@ -28,6 +29,9 @@ public class ResourceBigDataServiceImpl extends BaseServiceImpl implements IReso
|
|
|
@Autowired
|
|
|
private DigitalResourcesBigDataMapper digitalResourcesBigDataMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private DeptLevelUtil deptLevelUtil;
|
|
|
+
|
|
|
private static final String VALUE = "value";
|
|
|
|
|
|
/**
|
|
@@ -151,7 +155,19 @@ public class ResourceBigDataServiceImpl extends BaseServiceImpl implements IReso
|
|
|
@Override
|
|
|
public List<Map<String, Object>> selectFarmBasicFarmlandCount(CenterdataTFarmBasicFarmland centerdataTFarmBasicFarmland) {
|
|
|
setSookaDataBase(centerdataTFarmBasicFarmland);
|
|
|
- return digitalResourcesBigDataMapper.selectFarmBasicFarmlandCount(centerdataTFarmBasicFarmland);
|
|
|
+ List<Map<String, Object>> listMap=new ArrayList<>();
|
|
|
+ digitalResourcesBigDataMapper.selectDept(centerdataTFarmBasicFarmland).forEach(item ->{
|
|
|
+ CenterdataTFarmBasicFarmland farmBasicFarmland = new CenterdataTFarmBasicFarmland();
|
|
|
+ farmBasicFarmland.setDeptId(Long.parseLong(String.valueOf(item.get("dept_id"))));
|
|
|
+ setSookaDataBase(farmBasicFarmland);
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("deptName",item.get("dept_name"));
|
|
|
+ digitalResourcesBigDataMapper.selectFarmBasicFarmlandCount(farmBasicFarmland).forEach(items ->{
|
|
|
+ map.put(String.valueOf(items.get("name")),items.get("value")) ;
|
|
|
+ });
|
|
|
+ listMap.add(map);
|
|
|
+ });
|
|
|
+ return listMap;
|
|
|
}
|
|
|
/**
|
|
|
* 地质灾害易发区
|
|
@@ -164,4 +180,47 @@ public class ResourceBigDataServiceImpl extends BaseServiceImpl implements IReso
|
|
|
return digitalResourcesBigDataMapper.getHazardResources(centerdataTResourcesGeologicHazard);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 日常巡护
|
|
|
+ * @param centerdataTHydraulicPatrolTask
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @DataScopeMutiDept(deptAlias = "d")
|
|
|
+ @Override
|
|
|
+ public List<Map<String,Object>> selectHydraulicPatrolTask(CenterdataTHydraulicPatrolTask centerdataTHydraulicPatrolTask) throws IOException {
|
|
|
+ setSookaDataBase(centerdataTHydraulicPatrolTask);
|
|
|
+ List<Map<String,Object>> hydraulicPatrolTask = digitalResourcesBigDataMapper.getHydraulicPatrolTask(centerdataTHydraulicPatrolTask);
|
|
|
+ for (Map<String, Object> stringObjectMap : hydraulicPatrolTask) {
|
|
|
+ stringObjectMap.put("patrolTrajectory",getPlanLength(MapUtils.getString(stringObjectMap,"patrolTrajectory")));
|
|
|
+ }
|
|
|
+ return deptLevelUtil.getDeptLevel(hydraulicPatrolTask);
|
|
|
+
|
|
|
+ }
|
|
|
+ private String getPlanLength(String patrolTrajectory) {
|
|
|
+ double juli = 0.0;
|
|
|
+ JSONArray jsonArray = JSONArray.parseArray(patrolTrajectory);
|
|
|
+ for (int i = 0; i < jsonArray.size(); i++) {
|
|
|
+ if (i == 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 纬度
|
|
|
+ double lat1 = Math.toRadians(jsonArray.getJSONObject(i - 1).getDouble("lat"));
|
|
|
+ double lat2 = Math.toRadians(jsonArray.getJSONObject(i).getDouble("lat"));
|
|
|
+ // 经度
|
|
|
+ double lng1 = Math.toRadians(jsonArray.getJSONObject(i - 1).getDouble("lng"));
|
|
|
+ double lng2 = Math.toRadians(jsonArray.getJSONObject(i).getDouble("lng"));
|
|
|
+ // 纬度之差
|
|
|
+ double a = lat1 - lat2;
|
|
|
+ // 经度之差
|
|
|
+ double b = lng1 - lng2;
|
|
|
+ // 计算两点距离的公式
|
|
|
+ double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
|
|
|
+ Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(b / 2), 2)));
|
|
|
+ // 弧长乘地球半径, 返回单位: 千米
|
|
|
+ juli += s * 6378.137;
|
|
|
+ }
|
|
|
+ return String.format("%.2f", juli);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|