随记分页取数据及保留小数位
本文最后更新于 2024-10-23,文章内容可能已经过时。
@Slf4j
@Component
@Profile({"prod", "dev"})
public class BgdcScheduleService {
@Resource
private ResultShapeDkService resultShapeDkService;
@Resource
private IGisBasicService gisBasicService;
@Resource
private DkHttpClient dkHttpClient;
@Scheduled(cron = "0 42 09 23 * ?")
public void create() {
int pageNum = 1;
int pageSize = 200; // 每页大小
boolean hasMoreData = true;
while (hasMoreData) {
IPage<ResultShapeDk> page = new Page<>(pageNum, pageSize);
ResultShapeDk shapeDk = new ResultShapeDk();
IPage<ResultShapeDk> bjfxPages = resultShapeDkService.bjfxPages(page, shapeDk);
List<ResultShapeDk> shapeDkList = bjfxPages.getRecords();
if (CollectionUtils.isEmpty(shapeDkList)) {
hasMoreData = false;
} else {
// 处理每一页的数据
shapeDkList.parallelStream().forEach(dk -> {
System.err.println("dk = " + dk);
analysis(dk);
});
pageNum++;
}
}
}
public void analysis(ResultShapeDk dk) {
String token = gisBasicService.getToken();
String url = "www.blog.nn3n.com";
Map<String, Object> params = new HashMap<>();
Map<String, String> headers = new HashMap<>();
params.put("cacheStatus", 2);
params.put("dataId", dk.getId() + "");
params.put("dataType", 1);
params.put("geomWKT", dk.getGeom());
params.put("regionCode", 530000);
params.put("serviceType", "3");
params.put("themeCode", "H001");
params.put("unit", "1");
params.put("groupFields", "dlmc");
params.put("needGeom", false);
params.put("version", "2023_2");
headers.put("token", token);
HttpResult result = dkHttpClient.jsonPost(url, params, headers);
if (ObjectUtils.isNotEmpty(result) && result.getStatus() == HttpStatus.SC_OK) {
System.err.println("result = " + result);
JsonBgdcRoot jsonBgdcRoot = JSONUtil.toBean(result.getStringEntity(), JsonBgdcRoot.class);
System.err.println("jsonBgdcRoot = " + jsonBgdcRoot);
if (ObjectUtils.isNotEmpty(jsonBgdcRoot)) {
BgdcData data = jsonBgdcRoot.getData();
if (ObjectUtils.isNotEmpty(data)) {
List<Bgdc> list = data.getList();
StringBuffer buffer = new StringBuffer();
if (CollectionUtils.isNotEmpty(list)) {
list.forEach(bgdc -> {
String bfb = to4value(4, bgdc.getRateTarget());
if (StringUtils.isNotBlank(bfb)) {
bfb = to4value(2, Double.parseDouble(bfb) * 100);
}
buffer.append("占").append(bgdc.getDlmc()).append(to4value(4, bgdc.getSpheroidArea())).append("亩").append(bfb).append("%").append(",");
});
}
if (StringUtils.isNotBlank(buffer.toString())) {
buffer.deleteCharAt(buffer.length() - 1);
ResultShapeDk shapeDk = new ResultShapeDk();
shapeDk.setId(dk.getId());
shapeDk.setBgdcAnalysis(buffer.toString());
boolean b = resultShapeDkService.updateById(shapeDk);
if (b) {
System.err.println("更新成功->:b = " + b);
}
}
}
}
}
}
public static String to4value(int scale, Double value) {
if (ObjectUtils.isEmpty(value)) {
return "0.0000";
}
BigDecimal decimal = new BigDecimal(value);
// 使用 setScale 方法设置小数点后的位数,并指定四舍五入模式
BigDecimal roundedValue = decimal.setScale(scale, RoundingMode.HALF_UP);
return roundedValue.toString();
}
}
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 软件从业者Hort
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果