From f9875687c936b8713f577d77f27cbed0fc779fa4 Mon Sep 17 00:00:00 2001 From: han0 Date: Tue, 10 Sep 2024 11:49:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=9C=B0=E6=9D=90?= =?UTF-8?q?=E7=BB=8F=E7=BA=AC=E5=BA=A6=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/LocalMaterialController.java | 23 +++++++++++++++++-- .../xinke/main/model/db/LocalMaterial.java | 8 +++++++ .../main/model/vo/LocalMaterialSummary.java | 2 ++ .../location/service/LocationService.java | 10 ++++++++ 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/main/java/mjkf/xinke/main/controller/LocalMaterialController.java b/src/main/java/mjkf/xinke/main/controller/LocalMaterialController.java index 7196227..ddac700 100644 --- a/src/main/java/mjkf/xinke/main/controller/LocalMaterialController.java +++ b/src/main/java/mjkf/xinke/main/controller/LocalMaterialController.java @@ -1,6 +1,7 @@ package mjkf.xinke.main.controller; import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jgy.xxs.core.http.resp.HttpResponse; import io.swagger.annotations.ApiOperation; @@ -10,6 +11,7 @@ import mjkf.xinke.main.dao.LocalMaterialCityAggrMapper; import mjkf.xinke.main.model.db.LocalMaterial; import mjkf.xinke.main.model.vo.LocalMaterialCityAggr; import mjkf.xinke.main.model.vo.LocalMaterialSummary; +import mjkf.xinke.main.modular.location.service.LocationService; import mjkf.xinke.main.service.LocalMaterialService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -37,6 +39,8 @@ public class LocalMaterialController { LocalMaterialService localMaterialService; @Resource LocalMaterialCityAggrMapper localMaterialCityAggrMapper; + @Resource + LocationService locationService; @ApiOperation("获取地材列表") @GetMapping("/") @@ -54,11 +58,26 @@ public class LocalMaterialController { var query = localMaterialService.getQuery(date.getYear(), date.getMonth().getValue(), city, county, spec, name, null); query.orderByDesc(LocalMaterial::getName); List data = localMaterialService.list(query); - + // 按名称分组 var groupMap = data.stream().collect(Collectors.groupingBy(item->item.getName(), Collectors.toList())); + // 位置信息 + var locationMap = locationService.getNameMap(); var result = new ArrayList(); for (String key: groupMap.keySet()) { - result.add(new LocalMaterialSummary(groupMap.get(key))); + var summary = new LocalMaterialSummary(groupMap.get(key)); + // 补全经纬度 + for (var item : summary.getData()) { + if (ObjectUtil.isEmpty(item.getPosition())) { + continue; + } + var location = locationMap.get(item.getPosition()); + if (ObjectUtil.isEmpty(location)) { + continue; + } + item.setLat(location.getLat()); + item.setLon(location.getLon()); + } + result.add(summary); } // 排序 result = (ArrayList) ListUtil.sortByProperty(result, "name"); diff --git a/src/main/java/mjkf/xinke/main/model/db/LocalMaterial.java b/src/main/java/mjkf/xinke/main/model/db/LocalMaterial.java index 18668ba..69022da 100644 --- a/src/main/java/mjkf/xinke/main/model/db/LocalMaterial.java +++ b/src/main/java/mjkf/xinke/main/model/db/LocalMaterial.java @@ -80,6 +80,14 @@ public class LocalMaterial extends Model { @TableField("`POSITION`") private String position; + @ApiModelProperty("经度") + @TableField(exist = false) + private BigDecimal lon; + + @ApiModelProperty("纬度") + @TableField(exist = false) + private BigDecimal lat; + @ApiModelProperty("备注") @TableField("`REMARK`") private String remark; diff --git a/src/main/java/mjkf/xinke/main/model/vo/LocalMaterialSummary.java b/src/main/java/mjkf/xinke/main/model/vo/LocalMaterialSummary.java index 7aca28d..4c9bf8d 100644 --- a/src/main/java/mjkf/xinke/main/model/vo/LocalMaterialSummary.java +++ b/src/main/java/mjkf/xinke/main/model/vo/LocalMaterialSummary.java @@ -1,11 +1,13 @@ package mjkf.xinke.main.model.vo; import cn.hutool.core.util.HashUtil; +import lombok.Data; import mjkf.xinke.main.model.db.LocalMaterial; import java.math.BigDecimal; import java.util.List; +@Data public class LocalMaterialSummary { private String name; private String spec; diff --git a/src/main/java/mjkf/xinke/main/modular/location/service/LocationService.java b/src/main/java/mjkf/xinke/main/modular/location/service/LocationService.java index ab2a531..f6ffbdf 100644 --- a/src/main/java/mjkf/xinke/main/modular/location/service/LocationService.java +++ b/src/main/java/mjkf/xinke/main/modular/location/service/LocationService.java @@ -23,6 +23,8 @@ import mjkf.xinke.main.modular.location.param.LocationPageParam; import java.io.Serializable; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 料场位置Service类 @@ -64,6 +66,14 @@ public class LocationService extends ServiceImpl, Location> return result; } + @Transactional(rollbackFor = Exception.class) + public Map getNameMap() { + var query = new LambdaQueryWrapper(); + var list = this.list(query); + var result = list.stream().collect(Collectors.toMap(i->i.getName(), i->i)); + return result; + } + @Transactional(rollbackFor = Exception.class) public Location edit(LocationEditParam locationEditParam) { Location location = this.queryEntity(locationEditParam.getId());