Compare commits

...

2 Commits

Author SHA1 Message Date
aikai
a59d1ec224 Merge branch 'dev' of http://git.znkjfw.com/ak/zn-cloud-wcs into dev 2025-06-11 10:58:00 +08:00
aikai
612dcce81f feat(positionmap): 新增线路保存时自动填充点位序号功能
- 在 PositionMapItemMapper 中添加 selectSortNumByIds 方法,用于批量获取点位序号- 在 PositionMapLineSaveReqVO 中注释掉不必要的字段
- 在 PositionMapLineServiceImpl 中实现自动填充点位序号的逻辑
2025-06-11 10:57:50 +08:00
4 changed files with 65 additions and 13 deletions

View File

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

View File

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

View File

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

View File

@ -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>
<!--通过主键修改数据-->