feat: 新增地材经纬度信息

This commit is contained in:
han0
2024-09-10 11:49:17 +08:00
parent 34eb3de4c0
commit f9875687c9
4 changed files with 41 additions and 2 deletions

View File

@@ -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<LocalMaterial> data = localMaterialService.list(query);
// 按名称分组
var groupMap = data.stream().collect(Collectors.groupingBy(item->item.getName(), Collectors.toList()));
// 位置信息
var locationMap = locationService.getNameMap();
var result = new ArrayList<LocalMaterialSummary>();
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<LocalMaterialSummary>) ListUtil.sortByProperty(result, "name");

View File

@@ -80,6 +80,14 @@ public class LocalMaterial extends Model<LocalMaterial> {
@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;

View File

@@ -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;

View File

@@ -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<BaseMapper<Location>, Location>
return result;
}
@Transactional(rollbackFor = Exception.class)
public Map<String, Location> getNameMap() {
var query = new LambdaQueryWrapper<Location>();
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());