feat(positionmap): 新增线路保存时自动填充点位序号功能
- 在 PositionMapItemMapper 中添加 selectSortNumByIds 方法,用于批量获取点位序号- 在 PositionMapLineSaveReqVO 中注释掉不必要的字段 - 在 PositionMapLineServiceImpl 中实现自动填充点位序号的逻辑
This commit is contained in:
parent
859640e064
commit
612dcce81f
@ -87,17 +87,17 @@ public class PositionMapLineSaveReqVO {
|
||||
@Schema(description = "膨胀区域右", example = "15890")
|
||||
private BigDecimal expansionZoneRight;
|
||||
|
||||
@Schema(description = "起点宽")
|
||||
private BigDecimal beginWidth;
|
||||
|
||||
@Schema(description = "起点高")
|
||||
private BigDecimal beginHigh;
|
||||
|
||||
@Schema(description = "终点宽")
|
||||
private BigDecimal endWidth;
|
||||
|
||||
@Schema(description = "终点高")
|
||||
private BigDecimal endHigh;
|
||||
// @Schema(description = "起点宽")
|
||||
// private BigDecimal beginWidth;
|
||||
//
|
||||
// @Schema(description = "起点高")
|
||||
// private BigDecimal beginHigh;
|
||||
//
|
||||
// @Schema(description = "终点宽")
|
||||
// private BigDecimal endWidth;
|
||||
//
|
||||
// @Schema(description = "终点高")
|
||||
// private BigDecimal endHigh;
|
||||
|
||||
@Schema(description = "行走方法 0.直线 1.曲线")
|
||||
private Integer method;
|
||||
|
@ -8,10 +8,12 @@ import cn.iocoder.yudao.module.mqtt.api.task.dto.Pose2ds;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.RobotPositionMapDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapItemPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapItemDO;
|
||||
import org.apache.ibatis.annotations.MapKey;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 仓库点位地图子表 Mapper
|
||||
@ -87,4 +89,12 @@ public interface PositionMapItemMapper extends BaseMapperX<PositionMapItemDO> {
|
||||
* @param robotNo
|
||||
*/
|
||||
void clearRobotNo(@Param("robotNo") String robotNo);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@MapKey("id")
|
||||
Map<Long, Long> selectSortNumByIds(@Param("ids") List<Long> ids);
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
package cn.iocoder.yudao.module.system.service.positionmap;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||
@ -7,6 +9,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapLinePageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapLineSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapLineDO;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionMapItemMapper;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionMapLineMapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@ -14,7 +17,8 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.hutool.core.collection.CollUtil.isNotEmpty;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
|
||||
@ -30,6 +34,8 @@ public class PositionMapLineServiceImpl extends ServiceImpl<PositionMapLineMappe
|
||||
|
||||
@Resource
|
||||
private PositionMapLineMapper positionMapLineMapper;
|
||||
@Resource
|
||||
private PositionMapItemMapper positionMapItemMapper;
|
||||
|
||||
@Override
|
||||
public void deletePositionMapLine(Long id) {
|
||||
@ -50,7 +56,31 @@ public class PositionMapLineServiceImpl extends ServiceImpl<PositionMapLineMappe
|
||||
@Override
|
||||
public void createOrEditPositionMapLine(Long positionMapId, List<PositionMapLineSaveReqVO> createReqVO) {
|
||||
List<PositionMapLineDO> newList = BeanUtils.toBean(createReqVO, PositionMapLineDO.class);
|
||||
newList.forEach(a -> a.setPositionMapId(positionMapId));
|
||||
// 获取到所有新增的并且(没有起始点位或者没有结束点位序号)的数据
|
||||
List<PositionMapLineDO> addList = newList.stream().filter(a -> a.getId() == null
|
||||
&& (a.getStartingSortNum() == null || a.getEndPointSortNum() == null)).collect(Collectors.toList());
|
||||
Map<Long, Long> map = new HashMap<>();
|
||||
if (CollUtil.isNotEmpty(addList)) {
|
||||
List<Long> startPointIds = addList.stream().map(PositionMapLineDO::getStartingPointId).collect(Collectors.toList());
|
||||
List<Long> endPointIds = addList.stream().map(PositionMapLineDO::getEndPointId).collect(Collectors.toList());
|
||||
//合并startPointIds 和 endPointIds 并且去重
|
||||
Set<Long> pointIds = CollUtil.unionDistinct(startPointIds, endPointIds);
|
||||
map = positionMapItemMapper.selectSortNumByIds(new ArrayList<>(pointIds));
|
||||
}
|
||||
for (PositionMapLineDO positionMapLineDO : newList) {
|
||||
positionMapLineDO.setPositionMapId(positionMapId);
|
||||
if (MapUtil.isNotEmpty(map) && positionMapLineDO.getId() == null &&
|
||||
(positionMapLineDO.getStartingSortNum() == null || positionMapLineDO.getEndPointSortNum() == null)) {
|
||||
Long startingSortNum = map.get(positionMapLineDO.getStartingPointId());
|
||||
Long endPointSortNum = map.get(positionMapLineDO.getEndPointId());
|
||||
if (startingSortNum != null) {
|
||||
positionMapLineDO.setStartingSortNum(startingSortNum.intValue());
|
||||
}
|
||||
if (endPointSortNum != null) {
|
||||
positionMapLineDO.setEndPointSortNum(endPointSortNum.intValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
// todo 判断是否有重复数据
|
||||
List<PositionMapLineDO> oldList = this.getByMapId(positionMapId);
|
||||
List<List<PositionMapLineDO>> list = CollectionUtils.compareLists(oldList, newList,
|
||||
|
@ -86,6 +86,18 @@
|
||||
(#{item.positionMapId}, #{item.actualLocationX}, #{item.actualLocationY}, #{item.type})
|
||||
</foreach>
|
||||
</select>
|
||||
<select id="selectSortNumByIds" resultType="map">
|
||||
select
|
||||
id,
|
||||
sort_num as sortNum
|
||||
from
|
||||
ware_position_map_item
|
||||
where
|
||||
id IN
|
||||
<foreach item="id" collection="ids" separator="," open="(" close=")" index="index">
|
||||
#{id}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
|
||||
<!--通过主键修改数据-->
|
||||
|
Loading…
Reference in New Issue
Block a user