Commit 6ab0b270 authored by 周健威's avatar 周健威

修改省bug

parent 6e2a1c8f
package com.upyuns.platform.rs.datacenter.biz; package com.upyuns.platform.rs.datacenter.biz;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.StrSpliter;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.upyuns.platform.rs.datacenter.entity.RscpAreaImageTotal; import com.upyuns.platform.rs.datacenter.entity.RscpAreaImageTotal;
...@@ -16,7 +19,11 @@ import org.apache.commons.lang3.StringUtils; ...@@ -16,7 +19,11 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
@Service @Service
@Slf4j @Slf4j
...@@ -36,6 +43,7 @@ public class RscpAreaImageTotalBiz extends BaseBiz<RscpAreaImageTotalMapper, Rsc ...@@ -36,6 +43,7 @@ public class RscpAreaImageTotalBiz extends BaseBiz<RscpAreaImageTotalMapper, Rsc
} }
public void inStorageAreaDeal(ImageTotalInputDTO dto) { public void inStorageAreaDeal(ImageTotalInputDTO dto) {
dto.initRange();
// 第二步:判断是否已有区域影像信息,存在则删除 // 第二步:判断是否已有区域影像信息,存在则删除
//areaImageTotalManagement.deleteAreaImageTotalByDataId(imageDataId); //areaImageTotalManagement.deleteAreaImageTotalByDataId(imageDataId);
...@@ -77,47 +85,56 @@ public class RscpAreaImageTotalBiz extends BaseBiz<RscpAreaImageTotalMapper, Rsc ...@@ -77,47 +85,56 @@ public class RscpAreaImageTotalBiz extends BaseBiz<RscpAreaImageTotalMapper, Rsc
} }
// 第五步:计算每座城市覆盖面积 // 第五步:计算每座城市覆盖面积
List<Map<String, Object>> intersectionAreaMapList = rscpAreaInfoMapper.queryIntersectionArea(dto.getRange(), StrUtil.join(",", adminCodeSet)); List<Map<String, Object>> intersectionAreaMapList = rscpAreaInfoMapper.queryIntersectionArea(dto.getRange(), "'"+ StrUtil.join("','", adminCodeSet)+ "'");
for (Map<String, Object> intersectionAreaMap : intersectionAreaMapList) { for (Map<String, Object> intersectionAreaMap : intersectionAreaMapList) {
log.info("===intersectionAreaMap:" + intersectionAreaMap); log.info("===intersectionAreaMap:" + intersectionAreaMap);
String proadcode = intersectionAreaMap.get("proadcode").toString(); String proadcode = intersectionAreaMap.get("proadcode").toString();
String areaNoDetail = "{" + intersectionAreaMap.get("admin_code_ary").toString() + "}"; // String areaNoDetail = "{" + intersectionAreaMap.get("admin_code_ary").toString() + "}";
String isCover = "{" + intersectionAreaMap.get("is_cover_ary").toString() + "}"; // String isCover = "{" + intersectionAreaMap.get("is_cover_ary").toString() + "}";
String imageArea = "{" + intersectionAreaMap.get("image_area_ary").toString() + "}"; //String imageArea = "{" + intersectionAreaMap.get("image_area_ary").toString() + "}";
Integer[] isCover = ArrayUtil.toArray(StrUtil.split(intersectionAreaMap.get("is_cover_ary").toString(), ',').parallelStream().map(str -> Integer.valueOf(str)).collect(Collectors.toList()), Integer.class);
// 第六步:入库rscm_area_image_total String[] areaNoDetail = intersectionAreaMap.get("admin_code_ary").toString().split(",");
//StrSpliter.split(intersectionAreaMap.get("admin_code_ary").toString(), ',', Boolean.TRUE, Boolean.TRUE);
BigDecimal[] imageArea =
ArrayUtil.toArray(StrUtil.split(intersectionAreaMap.get("image_area_ary").toString(), ',').parallelStream().map(str -> new BigDecimal(str)).collect(Collectors.toList()), BigDecimal.class);
// StrSpliter.split(intersectionAreaMap.get("image_area_ary").toString(), ',', Boolean.TRUE, Boolean.TRUE)
// .parallelStream().map(str -> new BigDecimal(str)).collect(Collectors.toList());
// 第六步:入库rscp_area_image_total
RscpAreaImageTotal areaImageTotal = new RscpAreaImageTotal(); RscpAreaImageTotal areaImageTotal = new RscpAreaImageTotal();
areaImageTotal.setId(UUID.randomUUID().toString()); areaImageTotal.setId(UUID.randomUUID().toString());
areaImageTotal.setAreaNo(proadcode); areaImageTotal.setAreaNo(proadcode);
areaImageTotal.setAreaNoDetail(areaNoDetail); areaImageTotal.setAreaNoDetail(areaNoDetail);
areaImageTotal.setImageRowCol(dto.getImageRowCol()); areaImageTotal.setImageRowCol(dto.getImageRowCol());
areaImageTotal.setImageSatelliteType(dto.getImageSatelliteType()); areaImageTotal.setImageSatelliteType(dto.getImageSatelliteType());
// areaImageTotal.setImageResolution(dto.getImageResolution()); areaImageTotal.setImageResolution(dto.getImageResolution());
// areaImageTotal.setImageSpectrumType(dto.getImageSpectrumType()); areaImageTotal.setImageSpectrumType(dto.getImageSpectrumType());
areaImageTotal.setImageSensorType(dto.getImageSensorType()); areaImageTotal.setImageSensorType(dto.getImageSensorType());
areaImageTotal.setBeginTime(dto.getImageTakeTime()); areaImageTotal.setBeginTime(dto.getImageTakeTime());
areaImageTotal.setRange(dto.getRange()); // areaImageTotal.setRange(dto.getRange());
areaImageTotal.setNum(imageAreaInfoList.size()); areaImageTotal.setNum(imageAreaInfoList.size());
// areaImageTotal.setIscover(isCover); areaImageTotal.setIsCover(isCover);
areaImageTotal.setImageArea(imageArea); areaImageTotal.setImageArea(imageArea);
areaImageTotal.setDataId(dto.getId()); areaImageTotal.setDataId(dto.getId());
areaImageTotal.setImageCloudage(dto.getImageCloudage()); areaImageTotal.setImageCloudage(dto.getImageCloudage());
areaImageTotal.setImageProductType(dto.getImageProductType()); areaImageTotal.setImageProductType(dto.getImageProductType());
areaImageTotal.setName(dto.getName()); areaImageTotal.setName(dto.getName());
areaImageTotal.setThumbnailPath(dto.getThumbnailPath()); areaImageTotal.setThumbnailPath(dto.getThumbnailPath());
areaImageTotal.setImageIsSave(SYS_TRUE);
areaImageTotal.setUpdateTime(DateUtil.date());
// areaImageTotal.setImageProductId(dto.getImageProductId()); // areaImageTotal.setImageProductId(dto.getImageProductId());
// 保存区域影像信息至数据库 // 保存区域影像信息至数据库
insertSelective(areaImageTotal); insertSelective(areaImageTotal);
// 保存后的数据 dto.setAreaDataId(areaImageTotal.getId());
// areaImageTotal = areaImageTotalManagement.getEntityById("id", areaImageTotal.getId()); updateGeom(dto);
// // 保存区域影像信息至mongodb
//mongodbManagement.addAreaImageTotal(areaImageTotal, geometryJson);
} }
// 第七步:更新rscm_image_data_total_v2 // 第七步:更新rscm_image_data_total_v2
log.info("===更新rscm_image_data_total_v2:" + StringUtils.join(provinceNameSet, ",") + " " + StringUtils.join(cityNameSet, ",")); log.info("===更新rscm_image_data_total_v2:" + StringUtils.join(provinceNameSet, ",") + " " + StringUtils.join(cityNameSet, ","));
try { try {
// Map<String, Object> columnValueMap = new HashMap<String, Object>(); // Map<String, Object> columnValueMap = new HashMap<String, Object>();
// columnValueMap.put("image_province", "'" + StringUtils.join(provinceNameSet, ",") + "'"); // columnValueMap.put("image_province", "'" + StringUtils.join(provinceNameSet, ",") + "'");
...@@ -136,5 +153,8 @@ public class RscpAreaImageTotalBiz extends BaseBiz<RscpAreaImageTotalMapper, Rsc ...@@ -136,5 +153,8 @@ public class RscpAreaImageTotalBiz extends BaseBiz<RscpAreaImageTotalMapper, Rsc
} }
} }
public Integer updateGeom(ImageTotalInputDTO dto){
return mapper.updateGeom(dto.getLeftTopLon(), dto.getLeftTopLat(), dto.getLeftBottomLon(), dto.getLeftBottomLat(), dto.getRightBottomLon(), dto.getRightBottomLat(), dto.getRightTopLon(), dto.getRightTopLat(), dto.getAreaDataId());
}
} }
...@@ -28,6 +28,7 @@ import java.util.concurrent.ExecutorService; ...@@ -28,6 +28,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import static com.github.wxiaoqi.security.common.util.process.ResultCode.PARAM_ILLEGAL_CODE; import static com.github.wxiaoqi.security.common.util.process.ResultCode.PARAM_ILLEGAL_CODE;
import static com.upyuns.platform.rs.datacenter.constant.DataConstant.THUMBNAIL_PATH;
@Service @Service
@Slf4j @Slf4j
...@@ -45,14 +46,14 @@ public class RscpImageDataTotalBiz extends BaseBiz<RscpImageDataTotalMapper, Rsc ...@@ -45,14 +46,14 @@ public class RscpImageDataTotalBiz extends BaseBiz<RscpImageDataTotalMapper, Rsc
@Autowired @Autowired
RscpAreaInfoMapper rscpAreaInfoMapper; RscpAreaInfoMapper rscpAreaInfoMapper;
public void inStorage(ImageInputVO ii) { public void inStorage(ImageInputVO ii) {
ExecutorService executorService = Executors.newCachedThreadPool(); ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(() -> { executorService.execute(() -> {
ii.setThumbnailPath(ii.getThumbnailPath().replace(THUMBNAIL_PATH, ""));
RscpImageDataTotal rscpImageDataTotal= null;
try { try {
//查询数据是否存在 //查询数据是否存在
RscpImageDataTotal rscpImageDataTotal = rscpImageDataTotalBiz.selectOne(new RscpImageDataTotal(){{ rscpImageDataTotal = rscpImageDataTotalBiz.selectOne(new RscpImageDataTotal(){{
setName(ii.getName()); setName(ii.getName());
}}); }});
...@@ -81,7 +82,32 @@ public class RscpImageDataTotalBiz extends BaseBiz<RscpImageDataTotalMapper, Rsc ...@@ -81,7 +82,32 @@ public class RscpImageDataTotalBiz extends BaseBiz<RscpImageDataTotalMapper, Rsc
}catch (Exception e) { }catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
if(null != ii.getLogId()) {
rscpImageInputLogBiz.updateSelectiveById(new RscpImageInputLog(){{
setId(ii.getLogId());
setStatus(STATU_FAIL);
setResult(e.getMessage());
}});
}
throw e; throw e;
}finally {
if(null != ii.getLogId()) {
if(null != rscpImageDataTotal) {
String message = rscpImageDataTotal.getId()+ "";
rscpImageInputLogBiz.updateSelectiveById(new RscpImageInputLog(){{
setId(ii.getLogId());
setStatus(STATU_SUCC);
setResult(message);
//setResult(JSONUtil.toJsonStr(CollUtil.newArrayList(resultDTO)));
}});
}else {
rscpImageInputLogBiz.updateSelectiveById(new RscpImageInputLog(){{
setId(ii.getLogId());
setStatus(STATU_FAIL);
}});
}
}
} }
}); });
} }
...@@ -95,7 +121,7 @@ public class RscpImageDataTotalBiz extends BaseBiz<RscpImageDataTotalMapper, Rsc ...@@ -95,7 +121,7 @@ public class RscpImageDataTotalBiz extends BaseBiz<RscpImageDataTotalMapper, Rsc
} }
public RscpImageDataTotal queryDataList(String id) { public RscpImageDataTotal queryDataList(Long id) {
List<RscpImageDataTotal> list2 = mapper.queryDataById(id); List<RscpImageDataTotal> list2 = mapper.queryDataById(id);
if(list2.size() > 0) { if(list2.size() > 0) {
RscpImageDataTotal rscpImageDataTotal = list2.get(0); RscpImageDataTotal rscpImageDataTotal = list2.get(0);
...@@ -108,12 +134,13 @@ public class RscpImageDataTotalBiz extends BaseBiz<RscpImageDataTotalMapper, Rsc ...@@ -108,12 +134,13 @@ public class RscpImageDataTotalBiz extends BaseBiz<RscpImageDataTotalMapper, Rsc
List<RscpImageDataTotal> list = mapper.queryDataList(dto); List<RscpImageDataTotal> list = mapper.queryDataList(dto);
List<RscpAreaImageTotal> list2 = CollUtil.newArrayList(); List<RscpAreaImageTotal> list2 = CollUtil.newArrayList();
if(CollUtil.isNotEmpty(list)) { if(CollUtil.isNotEmpty(list)) {
for(RscpImageDataTotal ridt : list) { // for(RscpImageDataTotal ridt : list) {
RscpAreaImageTotal rait = BeanUtil.toBean(ridt, RscpAreaImageTotal.class); // RscpAreaImageTotal rait = BeanUtil.toBean(ridt, RscpAreaImageTotal.class);
rait.setBeginTime(ridt.getImageTakeTime()); // rait.setBeginTime(ridt.getImageTakeTime());
rait.setImageResolution(rait.getImageResolution().replace("[","{").replace("]", "}")); // rait.setImageResolution(rait.getImageResolution().replace("[","{").replace("]", "}"));
list2.add(rait); // list2.add(rait);
} // }
list2 = Convert.toList(RscpAreaImageTotal.class, list);
} }
return list2; return list2;
} }
......
...@@ -3,11 +3,17 @@ package com.upyuns.platform.rs.datacenter.mapper; ...@@ -3,11 +3,17 @@ package com.upyuns.platform.rs.datacenter.mapper;
import com.upyuns.platform.rs.datacenter.entity.RscpAreaImageTotal; import com.upyuns.platform.rs.datacenter.entity.RscpAreaImageTotal;
import com.upyuns.platform.rs.datacenter.entity.RscpImageDataTotal; import com.upyuns.platform.rs.datacenter.entity.RscpImageDataTotal;
import com.upyuns.platform.rs.datacenter.rest.RscpImageDataTotalController; import com.upyuns.platform.rs.datacenter.rest.RscpImageDataTotalController;
import org.apache.ibatis.annotations.Update;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
public interface RscpAreaImageTotalMapper extends Mapper<RscpAreaImageTotal> { public interface RscpAreaImageTotalMapper extends Mapper<RscpAreaImageTotal> {
public List<RscpAreaImageTotal> queryDataList(RscpImageDataTotalController.QueryDTO dto); public List<RscpAreaImageTotal> queryDataList(RscpImageDataTotalController.QueryDTO dto);
@Update("update rscp_area_image_total set range = st_GeomFromText('MULTIPOLYGON(((${leftTopLon} ${leftTopLat} ,${leftBottomLon} ${leftBottomLat} , ${rightBottomLon} ${rightBottomLat} ,${rightTopLon} ${rightTopLat}, ${leftTopLon} ${leftTopLat})))',4326) where id = #{id}")
Integer updateGeom(BigDecimal leftTopLon, BigDecimal leftTopLat, BigDecimal leftBottomLon, BigDecimal leftBottomLat, BigDecimal rightBottomLon, BigDecimal rightBottomLat, BigDecimal rightTopLon, BigDecimal rightTopLat, String id);
} }
\ No newline at end of file
...@@ -15,17 +15,16 @@ public interface RscpAreaInfoMapper extends Mapper<RscpAreaInfo> { ...@@ -15,17 +15,16 @@ public interface RscpAreaInfoMapper extends Mapper<RscpAreaInfo> {
public List<RscpAreaInfo> getDirectSubAreas(String parentId); public List<RscpAreaInfo> getDirectSubAreas(String parentId);
@Select("select adminCode,proadcode,cityadcode,name,cityname,proname from rscp_area_info where st_intersects(geom" + @Select("select adminCode,proadcode,cityadcode,name,cityname,proname from rscp_area_info where st_intersects(geom, st_GeomFromText('MULTIPOLYGON(((${leftTopLon} ${leftTopLat} ,${leftBottomLon} ${leftBottomLat} , ${rightBottomLon} ${rightBottomLat} ,${rightTopLon} ${rightTopLat}, ${leftTopLon} ${leftTopLat})))',4326))")
", st_GeomFromText('MULTIPOLYGON(((${leftTopLon} ${leftTopLat} ,${leftBottomLon} ${leftBottomLat} , ${rightBottomLon} ${rightBottomLat} ,${rightTopLon} ${rightTopLat}, ${leftTopLon} ${leftTopLat})))',4326))")
public List<RscpAreaInfo> getIntersectAreaInfo(BigDecimal leftTopLon, BigDecimal leftTopLat, BigDecimal leftBottomLon, BigDecimal leftBottomLat, BigDecimal rightBottomLon, BigDecimal rightBottomLat, BigDecimal rightTopLon, BigDecimal rightTopLat); public List<RscpAreaInfo> getIntersectAreaInfo(BigDecimal leftTopLon, BigDecimal leftTopLat, BigDecimal leftBottomLon, BigDecimal leftBottomLat, BigDecimal rightBottomLon, BigDecimal rightBottomLat, BigDecimal rightTopLon, BigDecimal rightTopLat);
@Select(" select t1.proadcode,string_agg(t1.adminCode, ',') as admin_code_ary," @Select(" select t1.proadcode,string_agg(t1.adminCode, ',') as admin_code_ary,"
+ " string_agg(t1.is_cover, ',') as is_cover_ary,string_agg(t1.image_area, ',') as image_area_ary " + " string_agg(t1.is_cover, ',') as is_cover_ary,string_agg(t1.image_area, ',') as image_area_ary "
+ " from " + " from "
+ " (select (case when proadcode is null then adminCode else proadcode end) as proadcode,adminCode, " + " (select (case when proadcode is null then adminCode else proadcode end) as proadcode,adminCode, "
+ " case(st_contains(geom, #{geomArea})) when true then '1' else '0' end as is_cover, " + " case(st_contains(geom, ${geomArea})) when true then '1' else '0' end as is_cover, "
+ " cast(cast(st_area(st_intersection(geom, #{geomArea}),true)/1000/1000 as numeric(10,3))as text) as image_area " + " cast(cast(st_area(st_intersection(geom, ${geomArea}),true)/1000/1000 as numeric(10,3))as text) as image_area "
+ " from rscp_area_info where adminCode in (${adminCodeSetStr}) order by adminCode " + " from rscp_area_info where admincode in (${adminCodeSetStr}) order by admincode "
+ " ) t1 " + " ) t1 "
+ " group by t1.proadcode order by proadcode ") + " group by t1.proadcode order by proadcode ")
public List<Map<String, Object>> queryIntersectionArea(String geomArea, String adminCodeSetStr); public List<Map<String, Object>> queryIntersectionArea(String geomArea, String adminCodeSetStr);
......
...@@ -45,7 +45,7 @@ public class ImageInputLogMQHandler { ...@@ -45,7 +45,7 @@ public class ImageInputLogMQHandler {
*/ */
@RabbitListener(queues = IMAGE_INPUT_LOG_QUEUE) @RabbitListener(queues = IMAGE_INPUT_LOG_QUEUE)
public void integralHandler(Message message, @Headers Map<String, Object> headers, Channel channel) { public void integralHandler(Message message, @Headers Map<String, Object> headers, Channel channel) {
log.info("同步门店信息 messageJson:"+ JSONUtil.parse(message)); log.info("开始入库 messageJson:"+ JSONUtil.parse(message));
ExecutorService executorService = Executors.newCachedThreadPool(); ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(() -> { executorService.execute(() -> {
try { try {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment